tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 41.4 kB
Source Map (JSON)
{"version":3,"file":"template.mjs","sources":["../../src/calendar/template.tsx"],"sourcesContent":["import { computed, watch, inject, ref, toRaw, defineComponent } from 'vue';\nimport {\n CloseIcon,\n ChevronLeftDoubleIcon,\n ChevronLeftIcon,\n ChevronRightIcon,\n ChevronRightDoubleIcon,\n} from 'tdesign-icons-vue-next';\nimport TButton from '../button';\nimport config from '../config';\nimport props from './template-props';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { TdCalendarProps, TDate, TDateType } from './type';\nimport { usePrefixClass, useConfig } from '../hooks/useClass';\nimport { getPrevMonth, getPrevYear, getNextMonth, getNextYear } from './utils';\n\nconst { prefix } = config;\n\nexport default defineComponent({\n name: `${prefix}-calendar-template`,\n props,\n emits: ['visible-change'],\n setup(_props, context) {\n const renderTNodeJSX = useTNodeJSX();\n const { t, globalConfig } = useConfig('calendar');\n const calendarClass = usePrefixClass('calendar');\n\n const props = inject('templateProps') as TdCalendarProps;\n // 获取时间年月日起\n const getYearMonthDay = (date: Date) => {\n return {\n year: date.getFullYear(),\n month: date.getMonth(),\n date: date.getDate(),\n };\n };\n const usePopup = computed(() => props.usePopup);\n const templateRef = ref(null);\n const valueRef = ref(props.value);\n const currentMonth = ref<\n Array<{\n year: number;\n month: number;\n months: TDate[];\n weekdayOfFirstDay: number;\n }>\n >([]);\n const headerButtons = ref({\n preYearBtnDisable: false,\n prevMonthBtnDisable: false,\n nextYearBtnDisable: false,\n nextMonthBtnDisable: false,\n });\n\n const selectedDate = ref();\n const firstDayOfWeek = computed(() => props.firstDayOfWeek || 0);\n const days = computed(() => {\n const raw = globalConfig.value.weekdays;\n const ans = [];\n let i = firstDayOfWeek.value % 7;\n\n while (ans.length < 7) {\n ans.push(raw[i]);\n i = (i + 1) % 7;\n }\n\n return ans;\n });\n const today = new Date();\n const minDate = computed(() => (props.minDate ? new Date(props.minDate) : today));\n const maxDate = computed(() =>\n props.maxDate ? new Date(props.maxDate) : new Date(today.getFullYear(), today.getMonth() + 6, today.getDate()),\n );\n\n // 获取日期\n const getDate = (year: number, month: number, day: number) => new Date(year, month, day);\n\n const confirmBtn = computed(() => {\n if (typeof _props.confirmBtn === 'string') {\n return { content: _props.confirmBtn || globalConfig.value.confirm };\n }\n return _props.confirmBtn;\n });\n\n const getCurrentDate = () => {\n let time = Array.isArray(selectedDate.value) ? selectedDate.value[0] : selectedDate.value;\n\n if (currentMonth.value?.length > 0) {\n const year = currentMonth.value[0]?.year;\n const month = currentMonth.value[0]?.month;\n time = new Date(year, month, 1).getTime();\n }\n\n return time;\n };\n\n const getCurrentYearAndMonth = (v: Date) => {\n const date = new Date(v);\n return { year: date.getFullYear(), month: date.getMonth() };\n };\n const updateActionButton = (value: Date) => {\n const _min = getCurrentYearAndMonth(minDate.value);\n const _max = getCurrentYearAndMonth(maxDate.value);\n\n const _minTimestamp = new Date(_min.year, _min.month, 1).getTime();\n const _maxTimestamp = new Date(_max.year, _max.month, 1).getTime();\n\n const _prevYearTimestamp = getPrevYear(value).getTime();\n const _prevMonthTimestamp = getPrevMonth(value).getTime();\n const _nextMonthTimestamp = getNextMonth(value).getTime();\n const _nextYearTimestamp = getNextYear(value).getTime();\n\n const preYearBtnDisable = _prevYearTimestamp < _minTimestamp || _prevMonthTimestamp < _minTimestamp;\n const prevMonthBtnDisable = _prevMonthTimestamp < _minTimestamp;\n const nextYearBtnDisable = _nextMonthTimestamp > _maxTimestamp || _nextYearTimestamp > _maxTimestamp;\n const nextMonthBtnDisable = _nextMonthTimestamp > _maxTimestamp;\n\n headerButtons.value = {\n preYearBtnDisable,\n prevMonthBtnDisable,\n nextYearBtnDisable,\n nextMonthBtnDisable,\n };\n };\n\n const calcCurrentMonth = (newValue?: any) => {\n const date = newValue || getCurrentDate();\n const { year, month } = getCurrentYearAndMonth(date);\n currentMonth.value = months.value.filter((item) => item.year === year && item.month === month);\n\n updateActionButton(date);\n };\n\n // 选择日期\n const handleSelect = (year: number, month: number, date: number, dateItem: TDate) => {\n if (dateItem.type === 'disabled' || props.readonly) return;\n const selected = new Date(year, month, date);\n\n if (props.type === 'range' && Array.isArray(selectedDate.value)) {\n if (selectedDate.value.length === 1) {\n if (selectedDate.value[0] > selected) {\n selectedDate.value = [selected];\n } else {\n selectedDate.value = [selectedDate.value[0], selected];\n }\n } else {\n selectedDate.value = [selected];\n if (!confirmBtn.value && selectedDate.value.length === 2) {\n props.onChange?.(selectedDate.value);\n }\n }\n } else if (props.type === 'multiple') {\n const newVal = [...selectedDate.value];\n const index = selectedDate.value.findIndex((item: Date) => isSameDate(item, selected));\n if (index > -1) {\n newVal.splice(index, 1);\n } else {\n newVal.push(selected);\n }\n selectedDate.value = newVal;\n } else {\n selectedDate.value = selected;\n if (!confirmBtn.value) {\n props.onChange?.(selectedDate.value);\n }\n }\n\n if (props.switchMode !== 'none') {\n const date = getCurrentDate();\n calcCurrentMonth(date);\n }\n\n props.onSelect?.(toRaw(selectedDate.value));\n };\n // 确认\n const handleConfirm = () => {\n context.emit('visible-change');\n props.onClose?.('confirm-btn');\n props.onConfirm?.(toRaw(selectedDate.value));\n };\n const handleClose = () => {\n context.emit('visible-change');\n props.onClose?.('close-btn');\n };\n\n const getMonthDates = (date: Date) => {\n const { year, month } = getYearMonthDay(date);\n const firstDay = getDate(year, month, 1);\n const weekdayOfFirstDay = firstDay.getDay();\n const lastDate = new Date(+getDate(year, month + 1, 1) - 24 * 3600 * 1000).getDate();\n\n return {\n year,\n month,\n weekdayOfFirstDay,\n lastDate,\n };\n };\n type CompareDate = Date | number | { year: number; month: number; date: number };\n const isSameDate = (date1: CompareDate, date2: CompareDate) => {\n if (date1 instanceof Date) date1 = getYearMonthDay(date1);\n if (date2 instanceof Date) date2 = getYearMonthDay(date2);\n const keys = ['year', 'month', 'date'];\n return keys.every((key) => date1[key] === date2[key]);\n };\n\n const months = computed(() => {\n const ans = [];\n let { year: minYear, month: minMonth } = getYearMonthDay(minDate.value);\n const { year: maxYear, month: maxMonth } = getYearMonthDay(maxDate.value);\n const calcType = (year: number, month: number, date: number): TDateType => {\n const curDate = new Date(year, month, date, 23, 59, 59);\n\n if (props.type === 'single') {\n if (isSameDate({ year, month, date }, selectedDate.value)) return 'selected';\n }\n if (props.type === 'multiple') {\n const hit = selectedDate.value.some((item: Date) => isSameDate({ year, month, date }, item));\n if (hit) {\n return 'selected';\n }\n }\n if (props.type === 'range') {\n if (Array.isArray(selectedDate.value)) {\n const [startDate, endDate] = selectedDate.value;\n\n if (startDate && isSameDate({ year, month, date }, startDate)) return 'start';\n if (endDate && isSameDate({ year, month, date }, endDate)) return 'end';\n if (\n startDate &&\n endDate &&\n curDate.getTime() > startDate.getTime() &&\n curDate.getTime() < endDate.getTime()\n )\n return 'centre';\n }\n }\n\n const minCurDate = new Date(year, month, date, 0, 0, 0);\n if (curDate.getTime() < minDate.value.getTime() || minCurDate.getTime() > maxDate.value.getTime()) {\n return 'disabled';\n }\n return '';\n };\n\n while (minYear < maxYear || (minYear === maxYear && minMonth <= maxMonth)) {\n const target = getMonthDates(getDate(minYear, minMonth, 1));\n const months: TDate[] = [];\n for (let i = 1; i <= 31; i++) {\n if (i > target.lastDate) break;\n const dateObj: TDate = {\n date: getDate(minYear, minMonth, i),\n day: i,\n type: calcType(minYear, minMonth, i),\n };\n months.push(props.format ? props.format(dateObj) : dateObj);\n }\n ans.push({\n year: minYear,\n month: minMonth,\n months,\n weekdayOfFirstDay: target.weekdayOfFirstDay,\n });\n const curDate = getYearMonthDay(getDate(minYear, minMonth + 1, 1));\n minYear = curDate.year;\n minMonth = curDate.month;\n }\n\n return ans;\n });\n\n watch(\n valueRef,\n () => {\n if (Array.isArray(valueRef.value)) {\n selectedDate.value = valueRef.value.map((item) => new Date(item));\n } else if (valueRef.value) {\n selectedDate.value = new Date(valueRef.value);\n } else {\n selectedDate.value = props.type === 'multiple' ? [new Date()] : new Date();\n }\n },\n { immediate: true },\n );\n context.expose({\n valueRef,\n templateRef,\n });\n const getDateItemClass = (dateItem: TDate) => {\n let className = `${calendarClass.value}__dates-item`;\n if (dateItem.type) {\n className = `${className} ${calendarClass.value}__dates-item--${dateItem.type}`;\n }\n if (dateItem.className) {\n className = `${className} ${dateItem.className}`;\n }\n return className;\n };\n const renderCell = (dateItem: TDate) => {\n const cell = renderTNodeJSX('cell', { params: { item: dateItem } });\n if (cell) {\n return cell;\n }\n let className = `${calendarClass.value}__dates-item-suffix`;\n if (dateItem.type) {\n className = `${className} ${calendarClass.value}__dates-item-suffix--${dateItem.type}`;\n }\n return (\n <>\n {dateItem.prefix && <div class={`${calendarClass.value}__dates-item-prefix`}>{dateItem.prefix}</div>}\n {dateItem.day}\n {dateItem.suffix && <div class={className}>{dateItem.suffix}</div>}\n </>\n );\n };\n const className = usePopup.value\n ? `${calendarClass.value} ${calendarClass.value}--popup`\n : `${calendarClass.value}`;\n\n const renderConfirmBtn = () => {\n if (confirmBtn.value && typeof confirmBtn.value !== 'object') {\n return confirmBtn.value;\n }\n if (confirmBtn.value && Array.isArray(confirmBtn.value)) {\n return confirmBtn.value;\n }\n if (confirmBtn.value && typeof confirmBtn.value === 'object') {\n return <TButton block theme=\"primary\" {...confirmBtn.value} onClick={handleConfirm} />;\n }\n };\n\n if (props.switchMode !== 'none') {\n calcCurrentMonth();\n }\n\n const handleSwitchModeChange = (\n type: 'pre-year' | 'pre-month' | 'next-month' | 'next-year',\n disabled?: boolean,\n ) => {\n if (disabled) return;\n const date = getCurrentDate();\n\n const funcMap = {\n 'pre-year': () => getPrevYear(date),\n 'pre-month': () => getPrevMonth(date),\n 'next-month': () => getNextMonth(date),\n 'next-year': () => getNextYear(date),\n };\n const newValue = funcMap[type]();\n if (!newValue) return;\n\n const { year, month } = getCurrentYearAndMonth(newValue);\n\n props.onPanelChange?.({ year, month: month + 1 });\n\n calcCurrentMonth(newValue);\n };\n\n const onScroll = (e: Event) => {\n props.onScroll?.({ e });\n };\n return () => {\n return (\n <div ref={templateRef} class={className}>\n <div class={`${calendarClass.value}__title`}>{_props.title || globalConfig.value.title}</div>\n {usePopup.value && (\n <CloseIcon class={`${calendarClass.value}__close-btn`} size=\"24\" onClick={handleClose}></CloseIcon>\n )}\n {props.switchMode !== 'none' && (\n <div class={`${calendarClass.value}-header`}>\n <div class={`${calendarClass.value}-header__action`}>\n {props.switchMode === 'year-month' && (\n <div\n class={[\n `${calendarClass.value}-header__icon`,\n { [`${calendarClass.value}-header__icon--disabled`]: headerButtons.value.preYearBtnDisable },\n ]}\n onClick={() => handleSwitchModeChange('pre-year', headerButtons.value.preYearBtnDisable)}\n >\n <ChevronLeftDoubleIcon />\n </div>\n )}\n\n <div\n class={[\n `${calendarClass.value}-header__icon`,\n { [`${calendarClass.value}-header__icon--disabled`]: headerButtons.value.prevMonthBtnDisable },\n ]}\n onClick={() => handleSwitchModeChange('pre-month', headerButtons.value.prevMonthBtnDisable)}\n >\n <ChevronLeftIcon />\n </div>\n </div>\n <div class={`${calendarClass.value}-header__title`}>\n {t(globalConfig.value.monthTitle, {\n year: currentMonth.value[0]?.year,\n month: globalConfig.value.months[currentMonth.value[0]?.month],\n })}\n </div>\n <div class={`${calendarClass.value}-header__action`}>\n <div\n class={[\n `${calendarClass.value}-header__icon`,\n { [`${calendarClass.value}-header__icon--disabled`]: headerButtons.value.nextMonthBtnDisable },\n ]}\n onClick={() => handleSwitchModeChange('next-month', headerButtons.value.nextMonthBtnDisable)}\n >\n <ChevronRightIcon />\n </div>\n\n {props.switchMode === 'year-month' && (\n <div\n class={[\n `${calendarClass.value}-header__icon`,\n { [`${calendarClass.value}-header__icon--disabled`]: headerButtons.value.nextYearBtnDisable },\n ]}\n onClick={() => handleSwitchModeChange('next-year', headerButtons.value.nextYearBtnDisable)}\n >\n <ChevronRightDoubleIcon />\n </div>\n )}\n </div>\n </div>\n )}\n <div class={`${calendarClass.value}__days`}>\n {(days.value || []).map((item, index) => (\n <div key={index} class={`${calendarClass.value}__days-item`}>\n {item}\n </div>\n ))}\n </div>\n <div class={`${calendarClass.value}__months`} style=\"overflow: auto\" onScroll={onScroll}>\n {(props.switchMode === 'none' ? months.value : currentMonth.value).map((item, index) => (\n <>\n {props.switchMode === 'none' && (\n <div class={`${calendarClass.value}__month`} key={index}>\n {t(globalConfig.value.monthTitle, {\n year: item.year,\n month: globalConfig.value.months[item.month],\n })}\n </div>\n )}\n <div class={`${calendarClass.value}__dates`} key={index}>\n {new Array((item.weekdayOfFirstDay - firstDayOfWeek.value + 7) % 7)\n .fill(0)\n .map((emptyItem, index) => (\n <div key={index} />\n ))}\n {item.months.map((dateItem, dateIndex) => (\n <>\n <div\n key={`${index}_${dateIndex}`}\n class={getDateItemClass(dateItem)}\n onClick={() => handleSelect(item.year, item.month, dateItem.day, dateItem)}\n >\n {renderCell(dateItem)}\n </div>\n </>\n ))}\n </div>\n </>\n ))}\n </div>\n {usePopup.value && <div class={`${calendarClass.value}__footer`}>{renderConfirmBtn()}</div>}\n </div>\n );\n };\n },\n});\n"],"names":["prefix","config","defineComponent","name","props","emits","setup","_props","context","renderTNodeJSX","useTNodeJSX","_useConfig","useConfig","t","globalConfig","calendarClass","usePrefixClass","inject","getYearMonthDay","date","year","getFullYear","month","getMonth","getDate","usePopup","computed","templateRef","ref","valueRef","value","currentMonth","headerButtons","preYearBtnDisable","prevMonthBtnDisable","nextYearBtnDisable","nextMonthBtnDisable","selectedDate","firstDayOfWeek","days","raw","weekdays","ans","i","length","push","today","Date","minDate","maxDate","day","confirmBtn","content","confirm","getCurrentDate","_currentMonth$value","time","Array","isArray","_currentMonth$value$","_currentMonth$value$2","getTime","getCurrentYearAndMonth","v","updateActionButton","_min","_max","_minTimestamp","_maxTimestamp","_prevYearTimestamp","getPrevYear","_prevMonthTimestamp","getPrevMonth","_nextMonthTimestamp","getNextMonth","_nextYearTimestamp","getNextYear","calcCurrentMonth","newValue","_getCurrentYearAndMon","months","filter","item","handleSelect","dateItem","_props2$onSelect","type","readonly","selected","_props2$onChange","onChange","newVal","_toConsumableArray","index","findIndex","isSameDate","splice","_props2$onChange2","switchMode","onSelect","toRaw","handleConfirm","_props2$onClose","_props2$onConfirm","emit","onClose","onConfirm","handleClose","_props2$onClose2","getMonthDates","_getYearMonthDay","firstDay","weekdayOfFirstDay","getDay","lastDate","date1","date2","keys","every","key","_getYearMonthDay2","minYear","minMonth","_getYearMonthDay3","maxYear","maxMonth","calcType","curDate","hit","some","_selectedDate$value","_slicedToArray","startDate","endDate","minCurDate","target","dateObj","format","watch","map","immediate","expose","getDateItemClass","className","concat","renderCell","cell","params","_createVNode","_Fragment","suffix","renderConfirmBtn","_typeof","TButton","_mergeProps","handleSwitchModeChange","disabled","_props2$onPanelChange","funcMap","preYear","preMonth","nextMonth","nextYear","_getCurrentYearAndMon2","onPanelChange","onScroll","e","_props2$onScroll","_currentMonth$value$3","_currentMonth$value$4","title","CloseIcon","_defineProperty","onClick","ChevronLeftDoubleIcon","ChevronLeftIcon","monthTitle","ChevronRightIcon","ChevronRightDoubleIcon","fill","emptyItem","dateIndex"],"mappings":"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"}