UNPKG

tdesign-vue-next

Version:
1 lines 29 kB
{"version":3,"file":"DatePicker.mjs","sources":["../../../components/date-picker/DatePicker.tsx"],"sourcesContent":["import { defineComponent, computed, watch } from 'vue';\nimport dayjs from 'dayjs';\nimport { isFunction, isDate } from 'lodash-es';\nimport { CalendarIcon as TdCalendarIcon } from 'tdesign-icons-vue-next';\n\nimport { useConfig, useTNodeJSX, useDisabled, useReadonly, useGlobalIcon, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport { useSingle } from './hooks/useSingle';\nimport { parseToDayjs, getDefaultFormat, formatTime, formatDate } from '@tdesign/common-js/date-picker/format';\nimport { subtractMonth, addMonth, extractTimeObj, covertToDate, isSame } from '@tdesign/common-js/date-picker/utils';\nimport props from './props';\nimport TSelectInput from '../select-input';\nimport TSinglePanel from './components/panel/SinglePanel';\n\nimport type { TdDatePickerProps, DateMultipleValue, DateValue } from './type';\nimport type { TagInputRemoveContext } from '../tag-input';\n\nexport default defineComponent({\n name: 'TDatePicker',\n props,\n setup(props) {\n const COMPONENT_NAME = usePrefixClass('date-picker');\n\n const {\n inputValue,\n popupVisible,\n inputProps,\n popupProps,\n isHoverCell,\n cacheValue,\n value,\n year,\n month,\n time,\n inputRef,\n onChange,\n } = useSingle(props);\n\n const disabled = useDisabled();\n const renderTNodeJSX = useTNodeJSX();\n const { globalConfig } = useConfig('datePicker');\n const isReadOnly = useReadonly();\n const { CalendarIcon } = useGlobalIcon({ CalendarIcon: TdCalendarIcon });\n\n const formatRef = computed(() =>\n getDefaultFormat({\n mode: props.mode,\n format: props.format,\n valueType: props.valueType,\n enableTimePicker: props.multiple ? false : props.enableTimePicker,\n }),\n );\n const valueDisplayParams = computed(() => {\n return {\n value: value.value,\n displayValue: inputValue.value,\n };\n });\n\n watch(popupVisible, (visible) => {\n // 多选不考虑输入情况\n if (props.multiple) return;\n // 如果不需要确认,直接保存当前值\n if (!props.needConfirm && props.enableTimePicker && !visible) {\n const nextValue = formatDate(inputValue.value, {\n format: formatRef.value.format,\n });\n if (nextValue) {\n onChange?.(\n formatDate(inputValue.value, {\n format: formatRef.value.format,\n targetFormat: formatRef.value.valueType,\n }) as DateValue,\n {\n dayjsValue: parseToDayjs(inputValue.value as string, formatRef.value.format),\n trigger: 'confirm',\n },\n );\n } else {\n inputValue.value = formatDate(value.value, {\n format: formatRef.value.format,\n });\n }\n }\n\n // 格式化 input 值\n const dateValue =\n // Date 属性、季度和周不再 parse,避免 dayjs 处理成 Invalid\n value.value && !isDate(value.value) && !['week', 'quarter'].includes(props.mode)\n ? covertToDate(value.value as string, formatRef.value?.valueType)\n : value.value;\n\n cacheValue.value = formatDate(dateValue, {\n format: formatRef.value.valueType,\n targetFormat: formatRef.value.format,\n });\n inputValue.value = formatDate(dateValue, {\n format: formatRef.value.valueType,\n targetFormat: formatRef.value.format,\n });\n\n // 面板展开重置数据\n if (visible) {\n year.value = parseToDayjs(value.value as DateValue, formatRef.value.valueType).year();\n month.value = parseToDayjs(value.value as DateValue, formatRef.value.format).month();\n time.value = formatTime(value.value, formatRef.value.format, formatRef.value.timeFormat, props.defaultTime);\n } else {\n isHoverCell.value = false;\n }\n });\n\n // 日期 hover\n function onCellMouseEnter(date: Date) {\n if (props.multiple) return;\n\n isHoverCell.value = true;\n inputValue.value = formatDate(date, {\n format: formatRef.value.format,\n });\n }\n\n // 日期 leave\n function onCellMouseLeave() {\n if (props.multiple) return;\n\n isHoverCell.value = false;\n inputValue.value = formatDate(cacheValue.value, {\n format: formatRef.value.format,\n });\n }\n\n // 日期点击\n function onCellClick(date: Date) {\n isHoverCell.value = false;\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, {\n format: formatRef.value.format,\n });\n } else {\n if (props.multiple) {\n const newDate = processDate(date);\n onChange(newDate, {\n dayjsValue: parseToDayjs(date, formatRef.value.format),\n trigger: 'pick',\n });\n return;\n }\n\n onChange?.(\n formatDate(date, {\n format: formatRef.value.format,\n targetFormat: formatRef.value.valueType,\n }) as DateValue,\n {\n dayjsValue: parseToDayjs(date, formatRef.value.format),\n trigger: 'pick',\n },\n );\n popupVisible.value = false;\n }\n\n props.onPick?.(date);\n }\n\n function processDate(date: Date) {\n let isSameDate: boolean;\n const currentValue = (value.value || []) as DateMultipleValue;\n const { dayjsLocale } = globalConfig.value;\n\n let currentDate: DateMultipleValue;\n if (props.mode !== 'week')\n isSameDate = currentValue.some((val) =>\n isSame(parseToDayjs(val, formatRef.value.format).toDate(), date, props.mode, dayjsLocale),\n );\n else {\n isSameDate = currentValue.some((val) => val === dayjs(date).locale(dayjsLocale).format(formatRef.value.format));\n }\n\n if (!isSameDate) {\n currentDate = currentValue.concat(\n formatDate(date, { format: formatRef.value.format, targetFormat: formatRef.value.valueType }),\n );\n } else {\n currentDate = currentValue.filter(\n (val) =>\n formatDate(val, { format: formatRef.value.format, targetFormat: formatRef.value.valueType }) !==\n formatDate(date, { format: formatRef.value.format, targetFormat: formatRef.value.valueType }),\n );\n }\n return currentDate;\n }\n\n function onTagRemoveClick(ctx: TagInputRemoveContext) {\n if (['week', 'quarter'].includes(props.mode)) {\n onChange?.(ctx.value, { trigger: 'tag-remove' });\n return;\n }\n\n const removeDate = dayjs(ctx.item).toDate();\n const newDate = processDate(removeDate);\n onChange?.(newDate, {\n dayjsValue: parseToDayjs(removeDate, formatRef.value.format),\n trigger: 'tag-remove',\n });\n }\n\n function onTagClearClick({ e }: { e: MouseEvent }) {\n e.stopPropagation();\n popupVisible.value = false;\n onChange?.([], { dayjsValue: dayjs(), trigger: 'clear' });\n }\n\n // 头部快速切换\n function onJumperClick({ trigger }: { trigger: string }) {\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 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(inputValue.value as string, formatRef.value.format).isValid()\n ? dayjs()\n : dayjs(inputValue.value as string, formatRef.value.format);\n const nextDate = currentDate.hour(nextHours).minute(minutes).second(seconds).millisecond(milliseconds).toDate();\n inputValue.value = formatDate(nextDate, {\n format: formatRef.value.format,\n });\n cacheValue.value = formatDate(nextDate, {\n format: formatRef.value.format,\n });\n\n props.onPick?.(nextDate);\n }\n\n // 确定\n function onConfirmClick({ e }: { e: MouseEvent }) {\n const nextValue = formatDate(inputValue.value, {\n format: formatRef.value.format,\n });\n if (nextValue) {\n props?.onConfirm?.({ date: dayjs(nextValue as string).toDate(), e });\n onChange?.(\n formatDate(inputValue.value, {\n format: formatRef.value.format,\n targetFormat: formatRef.value.valueType,\n }) as DateValue,\n {\n dayjsValue: parseToDayjs(inputValue.value as string, formatRef.value.format),\n trigger: 'confirm',\n },\n );\n } else {\n inputValue.value = formatDate(value.value, {\n format: formatRef.value.format,\n });\n }\n popupVisible.value = false;\n }\n\n // 预设\n function onPresetClick(presetValue: DateValue | (() => DateValue)) {\n const presetVal = isFunction(presetValue) ? presetValue() : presetValue;\n onChange?.(\n formatDate(presetVal, {\n format: formatRef.value.format,\n targetFormat: formatRef.value.valueType,\n }) as DateValue,\n {\n dayjsValue: parseToDayjs(presetVal, formatRef.value.format),\n trigger: 'preset',\n },\n );\n // 更新到 input,避免 needConfirm 导致值被覆盖\n inputValue.value = formatDate(presetVal, {\n format: formatRef.value.format,\n });\n popupVisible.value = false;\n }\n\n function onYearChange(nextYear: number) {\n year.value = nextYear;\n }\n\n function onMonthChange(nextMonth: number) {\n month.value = nextMonth;\n }\n\n const panelProps = computed(() => ({\n value: cacheValue.value as string,\n year: year.value,\n month: month.value,\n format: formatRef.value.format,\n mode: props.mode,\n presets: props.presets,\n multiple: props.multiple,\n time: props.multiple ? '' : time.value,\n disableDate: props.disableDate,\n firstDayOfWeek: props.firstDayOfWeek,\n timePickerProps: props.timePickerProps,\n enableTimePicker: props.multiple ? false : props.enableTimePicker,\n presetsPlacement: props.presetsPlacement,\n popupVisible: popupVisible.value,\n needConfirm: props.needConfirm,\n onCellClick,\n onCellMouseEnter,\n onCellMouseLeave,\n onJumperClick,\n onConfirmClick,\n onPresetClick,\n onYearChange,\n onMonthChange,\n onTimePickerChange,\n onPanelClick: () => inputRef.value?.focus?.(),\n }));\n\n return () => (\n <div class={COMPONENT_NAME.value}>\n <TSelectInput\n borderless={props.borderless}\n disabled={disabled.value}\n value={inputValue.value}\n label={() => renderTNodeJSX('label')}\n status={props.status}\n tips={props.tips}\n clearable={props.clearable}\n readonly={isReadOnly.value}\n multiple={props.multiple}\n popupProps={popupProps.value}\n inputProps={inputProps.value}\n placeholder={\n props.placeholder || (globalConfig.value.placeholder as { [key in typeof props.mode]: string })[props.mode]\n }\n popupVisible={!isReadOnly.value && popupVisible.value}\n valueDisplay={() => renderTNodeJSX('valueDisplay', { params: valueDisplayParams.value })}\n needConfirm={props.needConfirm}\n {...(props.selectInputProps as TdDatePickerProps['selectInputProps'])}\n panel={() => <TSinglePanel {...panelProps.value} />}\n tagInputProps={{\n onRemove: onTagRemoveClick,\n }}\n onClear={onTagClearClick}\n prefixIcon={() => renderTNodeJSX('prefixIcon')}\n suffixIcon={() => renderTNodeJSX('suffixIcon') || <CalendarIcon />}\n />\n </div>\n );\n },\n});\n"],"names":["defineComponent","name","props","setup","COMPONENT_NAME","usePrefixClass","_useSingle","useSingle","inputValue","popupVisible","inputProps","popupProps","isHoverCell","cacheValue","value","year","month","time","inputRef","onChange","disabled","useDisabled","renderTNodeJSX","useTNodeJSX","_useConfig","useConfig","globalConfig","isReadOnly","useReadonly","_useGlobalIcon","useGlobalIcon","CalendarIcon","TdCalendarIcon","formatRef","computed","getDefaultFormat","mode","format","valueType","enableTimePicker","multiple","valueDisplayParams","displayValue","watch","visible","_formatRef$value","needConfirm","nextValue","formatDate","targetFormat","dayjsValue","parseToDayjs","trigger","dateValue","isDate","includes","covertToDate","formatTime","timeFormat","defaultTime","onCellMouseEnter","date","onCellMouseLeave","onCellClick","_props2$onPick","getFullYear","getMonth","newDate","processDate","onPick","isSameDate","currentValue","dayjsLocale","currentDate","some","val","isSame","toDate","dayjs","locale","concat","filter","onTagRemoveClick","ctx","removeDate","item","onTagClearClick","_ref","e","stopPropagation","onJumperClick","_ref2","monthCountMap","week","quarter","monthCount","current","Date","next","subtractMonth","addMonth","nextYear","nextMonth","onTimePickerChange","_props2$onPick2","_extractTimeObj","extractTimeObj","hours","minutes","seconds","milliseconds","meridiem","nextHours","test","isValid","nextDate","hour","minute","second","millisecond","onConfirmClick","_ref3","_props2$onConfirm","onConfirm","onPresetClick","presetValue","presetVal","isFunction","onYearChange","onMonthChange","panelProps","presets","disableDate","firstDayOfWeek","timePickerProps","presetsPlacement","onPanelClick","_inputRef$value","_inputRef$value$focus","focus","call","_createVNode","borderless","label","status","tips","clearable","placeholder","valueDisplay","params","selectInputProps","panel","TSinglePanel","onRemove","prefixIcon","suffixIcon"],"mappings":"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"}