UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 12.5 kB
{"version":3,"file":"DatePickerPanel.mjs","sources":["../../src/date-picker/DatePickerPanel.tsx"],"sourcesContent":["import { defineComponent, computed } from 'vue';\nimport dayjs from 'dayjs';\nimport isFunction from 'lodash/isFunction';\nimport useSingleValue from './hooks/useSingleValue';\nimport { formatDate, getDefaultFormat, parseToDayjs } from '../_common/js/date-picker/format';\nimport { subtractMonth, addMonth, extractTimeObj } from '../_common/js/date-picker/utils';\nimport type {\n DateValue,\n TdDatePickerPanelProps,\n DatePickerYearChangeTrigger,\n DatePickerMonthChangeTrigger,\n} from './type';\n\nimport datePickerPanelProps from './date-picker-panel-props';\nimport datePickerProps from './props';\n\nimport TSinglePanel from './panel/SinglePanel';\n\nexport default defineComponent({\n name: 'XDatePickerPanel',\n\n props: {\n value: datePickerProps.value,\n defaultValue: datePickerProps.defaultValue,\n modelValue: datePickerProps.modelValue,\n disabled: datePickerProps.disabled,\n disableDate: datePickerProps.disableDate,\n enableTimePicker: datePickerProps.enableTimePicker,\n firstDayOfWeek: datePickerProps.firstDayOfWeek,\n format: datePickerProps.format,\n mode: datePickerProps.mode,\n presets: datePickerProps.presets,\n presetsPlacement: datePickerProps.presetsPlacement,\n timePickerProps: datePickerProps.timePickerProps,\n ...datePickerPanelProps,\n },\n\n setup(props: TdDatePickerPanelProps) {\n const { cacheValue, value, year, month, time, onChange } = useSingleValue(props);\n\n const formatRef = computed(() =>\n getDefaultFormat({\n mode: props.mode,\n format: props.format,\n enableTimePicker: props.enableTimePicker,\n }),\n );\n\n // 日期点击\n function onCellClick(date: Date, { e }: { e: MouseEvent }) {\n props.onCellClick?.({ date, e });\n\n // date 模式自动切换年月\n if (props.mode === 'date') {\n year.value = date.getFullYear();\n month.value = date.getMonth();\n }\n if (props.enableTimePicker) {\n cacheValue.value = formatDate(date, { format: formatRef.value.format });\n } else {\n onChange?.(formatDate(date, { format: formatRef.value.format }) as DateValue, {\n dayjsValue: parseToDayjs(date, formatRef.value.format),\n trigger: 'pick',\n });\n }\n }\n\n // 头部快速切换\n function onJumperClick({ trigger }: { trigger: string }) {\n const triggerMap = {\n prev: 'arrow-previous',\n next: 'arrow-next',\n };\n const monthCountMap = { date: 1, week: 1, month: 12, quarter: 12, year: 120 };\n const monthCount = monthCountMap[props.mode] || 0;\n\n const current = new Date(year.value, month.value);\n\n let next = null;\n if (trigger === 'prev') {\n next = subtractMonth(current, monthCount);\n } else if (trigger === 'current') {\n next = new Date();\n } else if (trigger === 'next') {\n next = addMonth(current, monthCount);\n }\n\n const nextYear = next.getFullYear();\n const nextMonth = next.getMonth();\n\n if (year.value !== nextYear) {\n props.onYearChange?.({\n year: nextYear,\n date: dayjs(value.value).toDate(),\n trigger: trigger === 'current' ? 'today' : (`year-${triggerMap[trigger]}` as DatePickerYearChangeTrigger),\n });\n }\n if (month.value !== nextMonth) {\n props.onMonthChange?.({\n month: nextMonth,\n date: dayjs(value.value).toDate(),\n trigger: trigger === 'current' ? 'today' : (`month-${triggerMap[trigger]}` as DatePickerMonthChangeTrigger),\n });\n }\n\n year.value = nextYear;\n month.value = nextMonth;\n }\n\n // timepicker 点击\n function onTimePickerChange(val: string) {\n time.value = val;\n\n const { hours, minutes, seconds, milliseconds, meridiem } = extractTimeObj(val);\n\n // am pm 12小时制转化 24小时制\n let nextHours = hours;\n if (/am/i.test(meridiem) && nextHours === 12) nextHours -= 12;\n if (/pm/i.test(meridiem) && nextHours < 12) nextHours += 12;\n const currentDate = !dayjs(cacheValue.value as string, formatRef.value.format).isValid()\n ? dayjs()\n : dayjs(cacheValue.value as string, formatRef.value.format);\n const nextDate = currentDate.hour(nextHours).minute(minutes).second(seconds).millisecond(milliseconds).toDate();\n cacheValue.value = formatDate(nextDate, { format: formatRef.value.format });\n\n props.onTimeChange?.({\n time: val,\n date: dayjs(value.value).toDate(),\n trigger: 'time-hour',\n });\n }\n\n // 确定\n function onConfirmClick({ e }: { e: MouseEvent }) {\n onChange?.(\n formatDate(cacheValue.value, {\n format: formatRef.value.format,\n }) as DateValue,\n {\n dayjsValue: parseToDayjs(cacheValue.value as string, formatRef.value.format),\n trigger: 'confirm',\n },\n );\n props.onConfirm?.({ date: dayjs(cacheValue.value as string).toDate(), e });\n }\n\n // 预设\n function onPresetClick(preset: any, context: any) {\n const presetVal = isFunction(preset) ? preset() : preset;\n onChange?.(formatDate(presetVal, { format: formatRef.value.format }) as DateValue, {\n dayjsValue: parseToDayjs(presetVal, formatRef.value.format),\n trigger: 'preset',\n });\n props.onPresetClick?.(context);\n }\n\n function onYearChange(nextYear: number) {\n year.value = nextYear;\n\n props.onYearChange?.({\n year: year.value,\n date: dayjs(value.value).toDate(),\n trigger: 'year-select',\n });\n }\n\n function onMonthChange(nextMonth: number) {\n month.value = nextMonth;\n\n props.onMonthChange?.({\n month: month.value,\n date: dayjs(value.value).toDate(),\n trigger: 'month-select',\n });\n }\n\n const panelProps = computed(() => ({\n value: cacheValue.value as string,\n year: year.value,\n month: month.value,\n mode: props.mode,\n format: formatRef.value.format,\n presets: props.presets,\n time: time.value as string,\n disableDate: props.disableDate,\n firstDayOfWeek: props.firstDayOfWeek,\n timePickerProps: props.timePickerProps,\n enableTimePicker: props.enableTimePicker,\n presetsPlacement: props.presetsPlacement,\n popupVisible: true,\n panelClick: props.onPanelClick,\n onCellClick,\n onJumperClick,\n onConfirmClick,\n onPresetClick,\n onYearChange,\n onMonthChange,\n onTimePickerChange,\n }));\n\n return () => <TSinglePanel {...panelProps.value} />;\n },\n});\n"],"names":["name","props","date","e","year","month","cacheValue","format","trigger","prev","next","week","quarter","time","dayjsValue","popupVisible","onCellClick","onJumperClick","onConfirmClick","onPresetClick","onYearChange","onMonthChange","onTimePickerChange","_createVNode"],"mappings":"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"}