UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 20.6 kB
{"version":3,"file":"DateRangePickerPanel.mjs","sources":["../../src/date-picker/DateRangePickerPanel.tsx"],"sourcesContent":["import { defineComponent, computed, ref } from 'vue';\nimport dayjs from 'dayjs';\n\nimport dateRangePickerPanelProps from './date-range-picker-panel-props';\nimport dateRangePickerProps from './date-range-picker-props';\nimport {\n DateValue,\n DateRangePickerPartial,\n TdDateRangePickerPanelProps,\n DatePickerYearChangeTrigger,\n DatePickerMonthChangeTrigger,\n} from './type';\n\nimport TRangePanel from './panel/RangePanel';\nimport useRangeValue from './hooks/useRangeValue';\nimport { formatDate, getDefaultFormat, parseToDayjs } from '../_common/js/date-picker/format';\nimport { subtractMonth, addMonth, extractTimeObj } from '../_common/js/date-picker/utils';\nimport isFunction from 'lodash/isFunction';\nimport isArray from 'lodash/isArray';\n\nexport default defineComponent({\n name: 'XDateRangePickerPanel',\n\n props: {\n value: dateRangePickerProps.value,\n defaultValue: dateRangePickerProps.defaultValue,\n modelValue: dateRangePickerProps.modelValue,\n disabled: dateRangePickerProps.disabled,\n disableDate: dateRangePickerProps.disableDate,\n enableTimePicker: dateRangePickerProps.enableTimePicker,\n firstDayOfWeek: dateRangePickerProps.firstDayOfWeek,\n format: dateRangePickerProps.format,\n mode: dateRangePickerProps.mode,\n presets: dateRangePickerProps.presets,\n presetsPlacement: dateRangePickerProps.presetsPlacement,\n timePickerProps: dateRangePickerProps.timePickerProps,\n panelPreselection: dateRangePickerProps.panelPreselection,\n ...dateRangePickerPanelProps,\n },\n\n setup(props: TdDateRangePickerPanelProps) {\n const { value, year, month, time, cacheValue, isFirstValueSelected, onChange } = useRangeValue(props);\n\n const formatRef = computed(() =>\n getDefaultFormat({\n mode: props.mode,\n enableTimePicker: props.enableTimePicker,\n format: props.format,\n }),\n );\n\n // 记录面板是否选中过\n const isSelected = ref(false);\n const isHoverCell = ref(false);\n const hoverValue = ref([]);\n const activeIndex = computed(() => (isFirstValueSelected.value ? 1 : 0));\n\n // 日期 hover\n function onCellMouseEnter(date: Date) {\n isHoverCell.value = true;\n const nextValue = [...(hoverValue.value as string[])];\n nextValue[activeIndex.value] = formatDate(date, {\n format: formatRef.value.format,\n }) as string;\n hoverValue.value = nextValue;\n }\n\n // 日期 leave\n function onCellMouseLeave() {\n isHoverCell.value = false;\n hoverValue.value = cacheValue.value as string[];\n }\n\n // 日期点击\n function onCellClick(date: Date, { e }: { e: MouseEvent }) {\n props.onCellClick?.({\n e,\n partial: activeIndex.value ? 'end' : 'start',\n date: value.value.map((v) => dayjs(v).toDate()),\n });\n\n isHoverCell.value = false;\n isSelected.value = true;\n\n const nextValue = [...(cacheValue.value as string[])];\n nextValue[activeIndex.value] = formatDate(date, {\n format: formatRef.value.format,\n }) as string;\n cacheValue.value = nextValue;\n\n // 有时间选择器走 confirm 逻辑\n if (props.enableTimePicker) return;\n\n // 首次点击不关闭、确保两端都有有效值并且无时间选择器时点击后自动关闭\n if (nextValue.length === 2 && isFirstValueSelected.value) {\n onChange?.(\n formatDate(nextValue, {\n format: formatRef.value.format,\n autoSwap: true,\n }) as DateValue[],\n {\n dayjsValue: nextValue.map((v) => parseToDayjs(v, formatRef.value.format)),\n trigger: 'pick',\n },\n );\n isFirstValueSelected.value = false;\n } else {\n isFirstValueSelected.value = true;\n }\n }\n\n // 头部快速切换\n function onJumperClick({ trigger, partial }: { trigger: string; partial: DateRangePickerPartial }) {\n const partialIndex = partial === 'start' ? 0 : 1;\n\n const triggerMap = {\n prev: 'arrow-previous',\n next: 'arrow-next',\n };\n const monthCountMap = { date: 1, month: 12, year: 120 };\n const monthCount = monthCountMap[props.mode] || 0;\n const current = new Date(year.value[partialIndex], month.value[partialIndex]);\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 = [...year.value];\n nextYear[partialIndex] = next.getFullYear();\n const nextMonth = [...month.value];\n nextMonth[partialIndex] = next.getMonth();\n\n // 保证左侧时间不大于右侧\n if (partialIndex === 0) {\n nextYear[1] = Math.max(nextYear[0], nextYear[1]);\n\n if (nextYear[0] === nextYear[1]) {\n nextMonth[1] = Math.max(nextMonth[0], nextMonth[1]);\n }\n }\n\n // 保证左侧时间不大于右侧\n if (partialIndex === 1) {\n nextYear[0] = Math.min(nextYear[0], nextYear[1]);\n\n if (nextYear[0] === nextYear[1]) {\n nextMonth[0] = Math.min(nextMonth[0], nextMonth[1]);\n }\n }\n\n if (year.value.some((y) => !nextYear.includes(y))) {\n props.onYearChange?.({\n partial,\n year: nextYear[partialIndex],\n date: value.value.map((v) => dayjs(v).toDate()),\n trigger: trigger === 'current' ? 'today' : (`year-${triggerMap[trigger]}` as DatePickerYearChangeTrigger),\n });\n }\n if (month.value.some((m) => !nextMonth.includes(m))) {\n props.onMonthChange?.({\n partial,\n month: nextMonth[partialIndex],\n date: value.value.map((v) => dayjs(v).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 // time-picker 点击\n function onTimePickerChange(val: string) {\n const { hours, minutes, seconds, milliseconds, meridiem } = extractTimeObj(val);\n\n const nextInputValue = [...(cacheValue.value as DateValue[])];\n const changedInputValue = cacheValue.value[activeIndex.value];\n const currentDate = !dayjs(changedInputValue, formatRef.value.format).isValid()\n ? dayjs().year(year.value[activeIndex.value]).month(month.value[activeIndex.value])\n : dayjs(changedInputValue, formatRef.value.format);\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\n const nextDate = currentDate.hour(nextHours).minute(minutes).second(seconds).millisecond(milliseconds).toDate();\n nextInputValue[activeIndex.value] = nextDate;\n\n const nextTime = [...time.value];\n nextTime[activeIndex.value] = val;\n time.value = nextTime;\n\n isSelected.value = true;\n cacheValue.value = formatDate(nextInputValue, {\n format: formatRef.value.format,\n });\n\n props.onTimeChange?.({\n time: val,\n date: value.value.map((v) => parseToDayjs(v, formatRef.value.format).toDate()),\n partial: activeIndex.value ? 'end' : 'start',\n trigger: 'time-hour',\n });\n }\n\n // 确定\n function onConfirmClick({ e }: { e: MouseEvent }) {\n const nextValue = [...(cacheValue.value as string[])];\n\n // 首次点击不关闭、确保两端都有有效值并且无时间选择器时点击后自动关闭\n if (nextValue.length === 2 && isFirstValueSelected.value) {\n onChange?.(\n formatDate(nextValue, {\n format: formatRef.value.format,\n autoSwap: true,\n }) as DateValue[],\n {\n dayjsValue: nextValue.map((v) => parseToDayjs(v, formatRef.value.format)),\n trigger: 'confirm',\n },\n );\n year.value = nextValue.map((v) => dayjs(v, formatRef.value.format).year());\n month.value = nextValue.map((v) => dayjs(v, formatRef.value.format).month());\n isFirstValueSelected.value = false;\n } else {\n isFirstValueSelected.value = true;\n }\n\n props.onConfirm?.({ date: value.value.map((v) => dayjs(v).toDate()), e });\n }\n\n // 预设\n function onPresetClick(preset: any, context: any) {\n let presetValue = preset;\n if (isFunction(preset)) {\n presetValue = preset();\n }\n if (!isArray(presetValue)) {\n console.error(`preset: ${preset} 预设值必须是数组!`);\n } else {\n onChange?.(\n formatDate(presetValue, {\n format: formatRef.value.format,\n autoSwap: true,\n }) as DateValue[],\n {\n dayjsValue: presetValue.map((p) => parseToDayjs(p, formatRef.value.format)),\n trigger: 'preset',\n },\n );\n props.onPresetClick?.(context);\n }\n }\n\n function onYearChange(nextVal: number, { partial }: { partial: DateRangePickerPartial }) {\n let partialIndex = partial === 'start' ? 0 : 1;\n if (props.enableTimePicker) partialIndex = activeIndex.value;\n\n const nextYear = [...year.value];\n nextYear[partialIndex] = nextVal;\n // 保证左侧时间不大于右侧\n if (partialIndex === 0) nextYear[1] = Math.max(nextYear[0], nextYear[1]);\n if (partialIndex === 1) nextYear[0] = Math.min(nextYear[0], nextYear[1]);\n\n year.value = nextYear;\n\n props.onYearChange?.({\n partial,\n year: nextYear[partialIndex],\n date: value.value.map((v) => dayjs(v).toDate()),\n trigger: 'year-select',\n });\n }\n\n function onMonthChange(nextVal: number, { partial }: { partial: DateRangePickerPartial }) {\n let partialIndex = partial === 'start' ? 0 : 1;\n if (props.enableTimePicker) partialIndex = activeIndex.value;\n\n const nextMonth = [...month.value];\n nextMonth[partialIndex] = nextVal;\n // 保证左侧时间不大于右侧\n if (year.value[0] === year.value[1]) {\n if (partialIndex === 0) nextMonth[1] = Math.max(...nextMonth);\n if (partialIndex === 1) nextMonth[0] = Math.min(...nextMonth);\n }\n\n month.value = nextMonth;\n\n props.onMonthChange?.({\n partial,\n month: nextMonth[partialIndex],\n date: value.value.map((v) => dayjs(v).toDate()),\n trigger: 'month-select',\n });\n }\n\n const panelProps = computed(() => ({\n hoverValue: (isHoverCell.value ? hoverValue.value : []) as string[],\n value: (isSelected.value ? cacheValue.value : value.value) as string[],\n activeIndex: activeIndex.value,\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,\n disableDate: props.disableDate,\n firstDayOfWeek: props.firstDayOfWeek,\n timePickerProps: props.timePickerProps,\n enableTimePicker: props.enableTimePicker,\n presetsPlacement: props.presetsPlacement,\n panelPreselection: props.panelPreselection,\n popupVisible: true,\n panelClick: props.onPanelClick,\n onCellClick,\n onCellMouseEnter,\n onCellMouseLeave,\n onJumperClick,\n onConfirmClick,\n onPresetClick,\n onYearChange,\n onMonthChange,\n onTimePickerChange,\n }));\n\n return () => <TRangePanel {...panelProps.value} />;\n },\n});\n"],"names":["name","props","format","hoverValue","e","partial","autoSwap","dayjsValue","trigger","prev","next","date","month","year","nextYear","nextMonth","nextInputValue","nextTime","cacheValue","time","isFunction","isArray","console","popupVisible","onCellClick","onCellMouseEnter","onCellMouseLeave","onJumperClick","onConfirmClick","onPresetClick","onYearChange","onMonthChange","onTimePickerChange","_createVNode"],"mappings":"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"}