UNPKG

tdesign-vue-next

Version:
1 lines 35.3 kB
{"version":3,"file":"DateRangePicker.mjs","sources":["../../../components/date-picker/DateRangePicker.tsx"],"sourcesContent":["import { defineComponent, computed, ref, watch } from 'vue';\nimport dayjs from 'dayjs';\nimport { useDisabled } from '../hooks/useDisabled';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { isFunction } from 'lodash-es';\nimport { isArray } from 'lodash-es';\n\nimport props from './date-range-picker-props';\nimport { DateValue, DateRangePickerPartial } from './type';\n\nimport { RangeInputPopup as TRangeInputPopup } from '../range-input';\nimport TRangePanel from './components/panel/RangePanel';\nimport { useRange } from './hooks/useRange';\nimport {\n parseToDayjs,\n formatTime,\n formatDate,\n isValidDate,\n getDefaultFormat,\n initYearMonthTime,\n} from '@tdesign/common-js/date-picker/format';\nimport { subtractMonth, addMonth, extractTimeObj } from '@tdesign/common-js/date-picker/utils';\nimport { dateCorrection } from './utils';\nimport { useReadonly } from '../hooks/useReadonly';\n\nexport default defineComponent({\n name: 'TDateRangePicker',\n props,\n setup(props, { slots }) {\n const COMPONENT_NAME = usePrefixClass('date-range-picker');\n\n const {\n inputValue,\n popupVisible,\n rangeInputProps,\n popupProps,\n value,\n year,\n month,\n time,\n cacheValue,\n activeIndex,\n isHoverCell,\n isFirstValueSelected,\n onChange,\n } = useRange(props);\n\n const disabled = useDisabled();\n const isReadOnly = useReadonly();\n\n const formatRef = computed(() =>\n getDefaultFormat({\n mode: props.mode,\n enableTimePicker: props.enableTimePicker,\n format: props.format,\n valueType: props.valueType,\n }),\n );\n\n // 记录面板是否选中过\n const isSelected = ref(false);\n\n watch(popupVisible, (visible) => {\n // 面板展开重置数据\n if (visible) {\n isSelected.value = false;\n cacheValue.value = formatDate(value.value || [], {\n format: formatRef.value.valueType,\n targetFormat: formatRef.value.format,\n }) as string[];\n time.value = formatTime(\n value.value || [dayjs().format(formatRef.value.timeFormat), dayjs().format(formatRef.value.timeFormat)],\n formatRef.value.format,\n formatRef.value.timeFormat,\n props.defaultTime,\n ) as string[];\n\n // 空数据重置为当前年月\n if (!value.value.length) {\n const { year: defaultYear, month: defaultMonth } = initYearMonthTime({\n value: value.value,\n mode: props.mode,\n format: formatRef.value.format,\n enableTimePicker: props.enableTimePicker,\n });\n year.value = defaultYear;\n month.value = defaultMonth;\n } else if (value.value.length === 2 && !props.enableTimePicker) {\n // 确保右侧面板月份比左侧大 避免两侧面板月份一致\n const nextMonth = value.value.map((v: string) => parseToDayjs(v, formatRef.value.format).month());\n year.value = value.value.map((v: string) => parseToDayjs(v, formatRef.value.valueType).year());\n if (year.value[0] === year.value[1] && nextMonth[0] === nextMonth[1]) {\n nextMonth[0] === 11 ? (nextMonth[0] -= 1) : (nextMonth[1] += 1);\n }\n month.value = nextMonth;\n // 月份季度选择时需要确保右侧面板年份比左侧大\n if ((props.mode === 'month' || props.mode === 'quarter') && year.value[0] === year.value[1]) {\n year.value = [year.value[0], year.value[0] + 1];\n }\n } else {\n year.value = value.value.map((v: string) => parseToDayjs(v, formatRef.value.format).year());\n if (year.value.length === 1) year.value = [year.value[0], year.value[0]];\n\n month.value = value.value.map((v: string) => parseToDayjs(v, formatRef.value.format).month());\n if (month.value.length === 1) month.value = [month.value[0], Math.min(month.value[0] + 1, 11)];\n }\n } else {\n activeIndex.value = 0;\n isHoverCell.value = false;\n isFirstValueSelected.value = false;\n inputValue.value = formatDate(value.value, {\n format: formatRef.value.valueType,\n targetFormat: formatRef.value.format,\n });\n }\n });\n\n // 日期 hover\n function onCellMouseEnter(date: Date) {\n isHoverCell.value = true;\n const nextValue = [...(inputValue.value as string[])];\n nextValue[activeIndex.value] = formatDate(date, {\n format: formatRef.value.format,\n }) as string;\n inputValue.value = nextValue;\n }\n\n // 日期 leave\n function onCellMouseLeave() {\n isHoverCell.value = false;\n inputValue.value = cacheValue.value;\n }\n\n // 日期点击\n function onCellClick(date: Date, { e }: { e: MouseEvent; partial: DateRangePickerPartial }) {\n props.onPick?.(date, { e, partial: activeIndex.value ? 'end' : 'start' });\n\n isHoverCell.value = false;\n isSelected.value = true;\n\n const nextValue = [...(inputValue.value as string[])];\n nextValue[activeIndex.value] = formatDate(date, {\n format: formatRef.value.format,\n }) as string;\n cacheValue.value = nextValue;\n inputValue.value = nextValue;\n\n // 有时间选择器走 confirm 逻辑\n if (props.enableTimePicker) return;\n\n // 确保两端都是有效值\n const notValidIndex = nextValue.findIndex((v) => !v || !isValidDate(v, formatRef.value.format));\n\n // 当两端都有有效值时更改 value\n if (notValidIndex === -1 && nextValue.length === 2) {\n // 二次修改时当其中一侧不符合上次区间规范时,清空另一侧数据\n if (\n !isFirstValueSelected.value &&\n parseToDayjs(nextValue[0], formatRef.value.format).isAfter(parseToDayjs(nextValue[1], formatRef.value.format))\n ) {\n nextValue[activeIndex.value ? 0 : 1] = '';\n cacheValue.value = nextValue;\n inputValue.value = nextValue;\n } else {\n onChange?.(\n formatDate(nextValue, {\n format: formatRef.value.format,\n targetFormat: formatRef.value.valueType,\n autoSwap: true,\n }) as DateValue[],\n {\n dayjsValue: nextValue.map((v) => parseToDayjs(v, formatRef.value.format)),\n trigger: 'pick',\n },\n );\n }\n }\n\n // 首次点击不关闭、确保两端都有有效值并且无时间选择器时点击后自动关闭\n if (!isFirstValueSelected.value || !activeIndex.value) {\n let nextIndex = notValidIndex;\n if (nextIndex === -1) nextIndex = activeIndex.value ? 0 : 1;\n activeIndex.value = nextIndex as 0 | 1;\n isFirstValueSelected.value = !!nextValue[0];\n } else {\n popupVisible.value = false;\n }\n }\n\n // 头部快速切换\n function onJumperClick({ trigger, partial }: { trigger: string; partial: DateRangePickerPartial }) {\n const partialIndex = partial === 'start' ? 0 : 1;\n\n const monthCountMap = { date: 1, week: 1, month: 12, quarter: 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 let nextYear = [...year.value];\n nextYear[partialIndex] = next.getFullYear();\n let nextMonth = [...month.value];\n nextMonth[partialIndex] = next.getMonth();\n const onlyYearSelect = ['year', 'quarter', 'month'].includes(props.mode);\n\n // 头部日期切换修正\n const correctedDate = dateCorrection(partialIndex, nextYear, nextMonth, onlyYearSelect);\n nextYear = correctedDate.nextYear;\n nextMonth = correctedDate.nextMonth;\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 = [...(inputValue.value as DateValue[])];\n const changedInputValue = nextInputValue[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 inputValue.value = formatDate(nextInputValue, {\n format: formatRef.value.format,\n });\n cacheValue.value = formatDate(nextInputValue, {\n format: formatRef.value.format,\n });\n }\n\n // 确定\n function onConfirmClick({ e }: { e: MouseEvent }) {\n const nextValue = [...(inputValue.value as string[])];\n\n const notValidIndex = nextValue.findIndex((v) => !v || !isValidDate(v, formatRef.value.format));\n\n // 当两端都有有效值时更改 value\n if (notValidIndex === -1 && nextValue.length === 2) {\n // 二次修改时当其中一侧不符合上次区间规范时,清空另一侧数据\n if (\n !isFirstValueSelected.value &&\n parseToDayjs(nextValue[0], formatRef.value.format).isAfter(parseToDayjs(nextValue[1], formatRef.value.format))\n ) {\n nextValue[activeIndex.value ? 0 : 1] = '';\n cacheValue.value = nextValue;\n inputValue.value = nextValue;\n } else {\n props?.onConfirm?.({\n date: nextValue.map((v) => dayjs(v).toDate()),\n e,\n partial: activeIndex.value ? 'end' : 'start',\n });\n onChange?.(\n formatDate(nextValue, {\n format: formatRef.value.format,\n targetFormat: formatRef.value.valueType,\n autoSwap: true,\n }) as DateValue[],\n {\n dayjsValue: nextValue.map((v) => parseToDayjs(v, formatRef.value.format)),\n trigger: 'confirm',\n },\n );\n }\n }\n\n // 首次点击不关闭、确保两端都有有效值并且无时间选择器时点击后自动关闭\n if (!isFirstValueSelected.value || !activeIndex.value) {\n let nextIndex = notValidIndex;\n if (nextIndex === -1) nextIndex = activeIndex.value ? 0 : 1;\n activeIndex.value = nextIndex as 0 | 1;\n isFirstValueSelected.value = !!nextValue[0];\n } else if (nextValue.length === 2) {\n popupVisible.value = false;\n }\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 targetFormat: formatRef.value.valueType,\n autoSwap: true,\n }) as DateValue[],\n {\n dayjsValue: presetValue.map((p) => parseToDayjs(p, formatRef.value.format)),\n trigger: 'preset',\n },\n );\n popupVisible.value = false;\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 let nextYear = [...year.value];\n let nextMonth = [...month.value];\n\n nextYear[partialIndex] = nextVal;\n const onlyYearSelect = ['year', 'quarter', 'month'].includes(props.mode);\n\n // 头部日期切换修正\n const correctedDate = dateCorrection(partialIndex, nextYear, nextMonth, onlyYearSelect);\n nextYear = correctedDate.nextYear;\n nextMonth = correctedDate.nextMonth;\n\n year.value = nextYear;\n if (!onlyYearSelect) month.value = nextMonth;\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) {\n // 操作了左侧区间, 处理右侧区间小于或等于左侧区间的场景,交互上始终报错右侧比左侧大 1\n if (nextMonth[1] <= nextMonth[0]) {\n nextMonth[1] = nextMonth[0] + 1;\n if (nextMonth[1] === 12) {\n // 处理跨年的边界场景\n nextMonth[1] = 0;\n year.value = [year.value?.[0], year.value?.[1] + 1];\n }\n }\n }\n if (partialIndex === 1) {\n // 操作了右侧区间, 处理右侧区间小于或等于左侧区间的场景,交互上始终报错左侧比右侧小 1\n nextMonth[0] = Math.min(nextMonth[0], nextMonth[1]);\n if (nextMonth[0] >= nextMonth[1]) {\n nextMonth[0] -= 1;\n if (nextMonth[0] === -1) {\n // 处理跨年的边界场景\n nextMonth[0] = 11;\n year.value = [year.value?.[0] - 1, year.value?.[1]];\n }\n }\n }\n }\n\n month.value = nextMonth;\n }\n\n const panelProps = computed(() => ({\n hoverValue: (isHoverCell.value ? inputValue.value : []) as string[],\n value: (isSelected.value ? cacheValue.value : value.value) as string[],\n isFirstValueSelected: isFirstValueSelected.value,\n activeIndex: activeIndex.value,\n year: year.value,\n month: month.value,\n format: formatRef.value.format,\n mode: props.mode,\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 popupVisible: popupVisible.value,\n panelPreselection: props.panelPreselection,\n cancelRangeSelectLimit: props.cancelRangeSelectLimit,\n onCellClick,\n onCellMouseEnter,\n onCellMouseLeave,\n onJumperClick,\n onConfirmClick,\n onPresetClick,\n onYearChange,\n onMonthChange,\n onTimePickerChange,\n }));\n\n return () => (\n <div class={COMPONENT_NAME.value}>\n <TRangeInputPopup\n readonly={isReadOnly.value}\n disabled={disabled.value}\n label={props.label}\n status={props.status}\n tips={props.tips || slots.tips}\n inputValue={inputValue.value as string[]}\n popupProps={popupProps.value}\n rangeInputProps={rangeInputProps.value}\n popupVisible={popupVisible.value}\n panel={() => <TRangePanel {...panelProps.value} />}\n />\n </div>\n );\n },\n});\n"],"names":["defineComponent","name","props","setup","slots","_ref","COMPONENT_NAME","usePrefixClass","_useRange","useRange","inputValue","popupVisible","rangeInputProps","popupProps","value","year","month","time","cacheValue","activeIndex","isHoverCell","isFirstValueSelected","onChange","disabled","useDisabled","isReadOnly","useReadonly","formatRef","computed","getDefaultFormat","mode","enableTimePicker","format","valueType","isSelected","ref","watch","visible","formatDate","targetFormat","formatTime","dayjs","timeFormat","defaultTime","length","_initYearMonthTime","initYearMonthTime","defaultYear","defaultMonth","nextMonth","map","v","parseToDayjs","Math","min","onCellMouseEnter","date","nextValue","_toConsumableArray","onCellMouseLeave","onCellClick","_ref2","_props2$onPick","e","onPick","partial","notValidIndex","findIndex","isValidDate","isAfter","autoSwap","dayjsValue","trigger","nextIndex","onJumperClick","_ref3","partialIndex","monthCountMap","week","quarter","monthCount","current","Date","next","subtractMonth","addMonth","nextYear","getFullYear","getMonth","onlyYearSelect","includes","correctedDate","dateCorrection","onTimePickerChange","val","_extractTimeObj","extractTimeObj","hours","minutes","seconds","milliseconds","meridiem","nextInputValue","changedInputValue","currentDate","isValid","nextHours","test","nextDate","hour","minute","second","millisecond","toDate","nextTime","onConfirmClick","_ref4","_props2$onConfirm","onConfirm","onPresetClick","preset","context","presetValue","isFunction","isArray","console","error","concat","_props2$onPresetClick","p","onYearChange","nextVal","_ref5","onMonthChange","_ref6","_year$value","_year$value2","_year$value3","_year$value4","panelProps","hoverValue","presets","disableDate","firstDayOfWeek","timePickerProps","presetsPlacement","panelPreselection","cancelRangeSelectLimit","_createVNode","TRangeInputPopup","label","status","tips","panel","TRangePanel"],"mappings":"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"}