| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 | "use strict";Object.defineProperty(exports, "__esModule", { value: true });var component_1 = require("../../../common/component");var utils_1 = require("../../utils");(0, component_1.VantComponent)({    props: {        date: {            type: null,            observer: 'setDays',        },        type: {            type: String,            observer: 'setDays',        },        color: String,        minDate: {            type: null,            observer: 'setDays',        },        maxDate: {            type: null,            observer: 'setDays',        },        showMark: Boolean,        rowHeight: null,        formatter: {            type: null,            observer: 'setDays',        },        currentDate: {            type: null,            observer: 'setDays',        },        firstDayOfWeek: {            type: Number,            observer: 'setDays',        },        allowSameDay: Boolean,        showSubtitle: Boolean,        showMonthTitle: Boolean,    },    data: {        visible: true,        days: [],    },    methods: {        onClick: function (event) {            var index = event.currentTarget.dataset.index;            var item = this.data.days[index];            if (item.type !== 'disabled') {                this.$emit('click', item);            }        },        setDays: function () {            var days = [];            var startDate = new Date(this.data.date);            var year = startDate.getFullYear();            var month = startDate.getMonth();            var totalDay = (0, utils_1.getMonthEndDay)(startDate.getFullYear(), startDate.getMonth() + 1);            for (var day = 1; day <= totalDay; day++) {                var date = new Date(year, month, day);                var type = this.getDayType(date);                var config = {                    date: date,                    type: type,                    text: day,                    bottomInfo: this.getBottomInfo(type),                };                if (this.data.formatter) {                    config = this.data.formatter(config);                }                days.push(config);            }            this.setData({ days: days });        },        getMultipleDayType: function (day) {            var currentDate = this.data.currentDate;            if (!Array.isArray(currentDate)) {                return '';            }            var isSelected = function (date) {                return currentDate.some(function (item) { return (0, utils_1.compareDay)(item, date) === 0; });            };            if (isSelected(day)) {                var prevDay = (0, utils_1.getPrevDay)(day);                var nextDay = (0, utils_1.getNextDay)(day);                var prevSelected = isSelected(prevDay);                var nextSelected = isSelected(nextDay);                if (prevSelected && nextSelected) {                    return 'multiple-middle';                }                if (prevSelected) {                    return 'end';                }                return nextSelected ? 'start' : 'multiple-selected';            }            return '';        },        getRangeDayType: function (day) {            var _a = this.data, currentDate = _a.currentDate, allowSameDay = _a.allowSameDay;            if (!Array.isArray(currentDate)) {                return '';            }            var startDay = currentDate[0], endDay = currentDate[1];            if (!startDay) {                return '';            }            var compareToStart = (0, utils_1.compareDay)(day, startDay);            if (!endDay) {                return compareToStart === 0 ? 'start' : '';            }            var compareToEnd = (0, utils_1.compareDay)(day, endDay);            if (compareToStart === 0 && compareToEnd === 0 && allowSameDay) {                return 'start-end';            }            if (compareToStart === 0) {                return 'start';            }            if (compareToEnd === 0) {                return 'end';            }            if (compareToStart > 0 && compareToEnd < 0) {                return 'middle';            }            return '';        },        getDayType: function (day) {            var _a = this.data, type = _a.type, minDate = _a.minDate, maxDate = _a.maxDate, currentDate = _a.currentDate;            if ((0, utils_1.compareDay)(day, minDate) < 0 || (0, utils_1.compareDay)(day, maxDate) > 0) {                return 'disabled';            }            if (type === 'single') {                return (0, utils_1.compareDay)(day, currentDate) === 0 ? 'selected' : '';            }            if (type === 'multiple') {                return this.getMultipleDayType(day);            }            /* istanbul ignore else */            if (type === 'range') {                return this.getRangeDayType(day);            }            return '';        },        getBottomInfo: function (type) {            if (this.data.type === 'range') {                if (type === 'start') {                    return '开始';                }                if (type === 'end') {                    return '结束';                }                if (type === 'start-end') {                    return '开始/结束';                }            }        },    },});
 |