tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 27.2 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 { CloseIcon } 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';\n\nconst { prefix } = config;\nconst name = `${prefix}-calendar`;\n\nexport default defineComponent({\n name,\n components: {\n TButton,\n },\n props: 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 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 // 选择日期\n const handleSelect = (year: number, month: number, date: number, dateItem: TDate) => {\n if (dateItem.type === 'disabled') 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 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 return () => {\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 <t-button block theme=\"primary\" {...confirmBtn.value} onClick={handleConfirm} />;\n }\n };\n\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 <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\">\n {months.value.map((item, index) => (\n <>\n <div class={`${calendarClass.value}__month`} key={index}>\n {t(globalConfig.value.monthTitle, { year: item.year, month: globalConfig.value.months[item.month] })}\n </div>\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","name","defineComponent","components","TButton","props","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","selectedDate","firstDayOfWeek","days","raw","weekdays","ans","i","length","push","today","Date","minDate","maxDate","day","confirmBtn","content","confirm","handleSelect","dateItem","_props$onSelect","type","selected","Array","isArray","_props$onChange","onChange","call","newVal","_toConsumableArray","index","findIndex","item","isSameDate","splice","_props$onChange2","onSelect","toRaw","handleConfirm","_props$onClose","_props$onConfirm","emit","onClose","onConfirm","handleClose","_props$onClose2","getMonthDates","_getYearMonthDay","firstDay","weekdayOfFirstDay","getDay","lastDate","date1","date2","keys","every","key","months","_getYearMonthDay2","minYear","minMonth","_getYearMonthDay3","maxYear","maxMonth","calcType","curDate","hit","some","_selectedDate$value","_slicedToArray","startDate","endDate","getTime","minCurDate","target","dateObj","format","watch","map","immediate","expose","getDateItemClass","className","concat","renderCell","cell","params","_createVNode","_Fragment","suffix","renderConfirmBtn","_typeof","_resolveComponent","_mergeProps","title","CloseIcon","monthTitle","fill","emptyItem","dateIndex","onClick"],"mappings":"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"}