{"version":3,"file":"DatePicker.mjs","sources":["../../../components/date-picker/DatePicker.tsx"],"sourcesContent":["import { defineComponent, computed, watch, ComputedRef } from 'vue';\nimport dayjs from 'dayjs';\nimport { isFunction, isDate, isArray } from 'lodash-es';\nimport { CalendarIcon as TdCalendarIcon } from 'tdesign-icons-vue-next';\n\nimport {\n  useConfig,\n  useTNodeJSX,\n  useDisabled,\n  useReadonly,\n  useGlobalIcon,\n  usePrefixClass,\n  useEventForward,\n} from '@tdesign/shared-hooks';\n\nimport { useSingle } from './hooks/useSingle';\nimport { parseToDayjs, getDefaultFormat, formatTime, formatDate } from '@tdesign/common-js/date-picker/format';\nimport {\n  subtractMonth,\n  addMonth,\n  extractTimeObj,\n  covertToDate,\n  isSame,\n  getRangeBounds,\n} from '@tdesign/common-js/date-picker/utils';\nimport props from './props';\nimport TSelectInput from '../select-input';\nimport TSinglePanel from './components/panel/SinglePanel';\nimport { triggerMap } from './utils';\n\nimport type {\n  TdDatePickerProps,\n  DateMultipleValue,\n  DateValue,\n  DatePickerYearChangeTrigger,\n  DatePickerMonthChangeTrigger,\n} 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 isDisabled = useDisabled() as ComputedRef<boolean>;\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              defaultTime: props.defaultTime,\n            }) as DateValue,\n            {\n              dayjsValue: parseToDayjs(\n                inputValue.value as string,\n                formatRef.value.format,\n                undefined,\n                undefined,\n                props.defaultTime,\n              ),\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        if (((props.range && isArray(props.range)) || props.panelActiveDate) && !value.value) {\n          const rangeBounds = getRangeBounds(props.range);\n          const yearFromRange = rangeBounds.min?.getFullYear() ?? rangeBounds.max?.getFullYear();\n          const monthFromRange = rangeBounds.min?.getMonth() ?? rangeBounds.max?.getMonth();\n          year.value = (props.panelActiveDate?.year ?? yearFromRange) as number;\n          month.value = props.panelActiveDate?.month ? Number(props.panelActiveDate?.month) - 1 : monthFromRange;\n        } else {\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        }\n\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, props.defaultTime);\n          onChange(newDate, {\n            dayjsValue: parseToDayjs(date, formatRef.value.format, undefined, undefined, props.defaultTime),\n            trigger: 'pick',\n          });\n          return;\n        }\n\n        onChange?.(\n          formatDate(date, {\n            format: formatRef.value.format,\n            targetFormat: formatRef.value.valueType,\n            defaultTime: props.defaultTime,\n          }) as DateValue,\n          {\n            dayjsValue: parseToDayjs(date, formatRef.value.format, undefined, undefined, props.defaultTime),\n            trigger: 'pick',\n          },\n        );\n        popupVisible.value = false;\n      }\n\n      props.onPick?.(date);\n    }\n\n    function processDate(date: Date, defaultTime?: string | string[]) {\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, {\n            format: formatRef.value.format,\n            targetFormat: formatRef.value.valueType,\n            defaultTime,\n          }),\n        );\n      } else {\n        currentDate = currentValue.filter(\n          (val) =>\n            formatDate(val, {\n              format: formatRef.value.format,\n              targetFormat: formatRef.value.valueType,\n              defaultTime,\n            }) !==\n            formatDate(date, {\n              format: formatRef.value.format,\n              targetFormat: formatRef.value.valueType,\n              defaultTime,\n            }),\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, props.defaultTime);\n      onChange?.(newDate, {\n        dayjsValue: parseToDayjs(removeDate, formatRef.value.format, undefined, undefined, props.defaultTime),\n        trigger: 'tag-remove',\n      });\n    }\n\n    function onTagClearClick({ e }: { e: MouseEvent }) {\n      e.stopPropagation();\n      popupVisible.value = false;\n      onChange?.(props.multiple ? [] : '', { dayjsValue: dayjs(), trigger: 'clear' });\n      props.onClear?.({ e });\n    }\n\n    // 头部快速切换\n    function onJumperClick({ trigger }: { trigger: 'prev' | 'next' | 'current' }) {\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      const yearChanged = year.value !== nextYear;\n      const monthChanged = month.value !== nextMonth;\n\n      year.value = nextYear;\n      month.value = nextMonth;\n\n      // 触发年份变化事件\n      if (yearChanged) {\n        props.onYearChange?.({\n          year: nextYear,\n          date: new Date(nextYear, nextMonth),\n          trigger: trigger === 'current' ? 'today' : (`year-${triggerMap[trigger]}` as DatePickerYearChangeTrigger),\n        });\n      }\n\n      // 触发月份变化事件\n      if (monthChanged) {\n        props.onMonthChange?.({\n          month: nextMonth,\n          date: new Date(nextYear, nextMonth),\n          trigger: trigger === 'current' ? 'today' : (`month-${triggerMap[trigger]}` as DatePickerMonthChangeTrigger),\n        });\n      }\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            defaultTime: props.defaultTime,\n          }) as DateValue,\n          {\n            dayjsValue: parseToDayjs(\n              inputValue.value as string,\n              formatRef.value.format,\n              undefined,\n              undefined,\n              props.defaultTime,\n            ),\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, undefined, undefined, props.defaultTime),\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      props.onYearChange?.({\n        year: nextYear,\n        date: dayjs(value.value as DateValue).toDate(),\n        trigger: 'year-select',\n      });\n    }\n\n    function onMonthChange(nextMonth: number) {\n      month.value = nextMonth;\n\n      props.onMonthChange?.({\n        month: nextMonth,\n        date: dayjs(value.value as DateValue).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      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      disableTime: props.disableTime,\n      range: props.range,\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    const selectInputEvents = useEventForward(props.selectInputProps as TdDatePickerProps['selectInputProps'], {\n      onClear: onTagClearClick,\n    });\n\n    return () => (\n      <div class={COMPONENT_NAME.value}>\n        <TSelectInput\n          borderless={props.borderless}\n          disabled={isDisabled.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          {...(props.selectInputProps as TdDatePickerProps['selectInputProps'])}\n          panel={() => <TSinglePanel {...panelProps.value} />}\n          tagInputProps={{\n            onRemove: onTagRemoveClick,\n          }}\n          prefixIcon={() => renderTNodeJSX('prefixIcon')}\n          suffixIcon={() => renderTNodeJSX('suffixIcon') || <CalendarIcon />}\n          {...selectInputEvents.value}\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","isDisabled","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","defaultTime","dayjsValue","parseToDayjs","trigger","dateValue","isDate","includes","covertToDate","range","isArray","panelActiveDate","_rangeBounds$min$getF","_rangeBounds$min","_rangeBounds$max","_rangeBounds$min$getM","_rangeBounds$min2","_rangeBounds$max2","_props2$panelActiveDa","_props2$panelActiveDa2","_props2$panelActiveDa3","_props2$panelActiveDa4","rangeBounds","getRangeBounds","yearFromRange","min","getFullYear","max","monthFromRange","getMonth","Number","formatTime","timeFormat","onCellMouseEnter","date","onCellMouseLeave","onCellClick","_props2$onPick","newDate","processDate","onPick","isSameDate","currentValue","dayjsLocale","currentDate","some","val","isSame","toDate","dayjs","locale","concat","filter","onTagRemoveClick","ctx","removeDate","item","onTagClearClick","_ref","_props2$onClear","e","stopPropagation","onClear","onJumperClick","_ref2","monthCountMap","week","quarter","monthCount","current","Date","next","subtractMonth","addMonth","nextYear","nextMonth","yearChanged","monthChanged","_props2$onYearChange","onYearChange","triggerMap","_props2$onMonthChange","onMonthChange","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","_props2$onYearChange2","_props2$onMonthChange2","panelProps","presets","disableDate","firstDayOfWeek","timePickerProps","presetsPlacement","disableTime","onPanelClick","_inputRef$value","_inputRef$value$focus","focus","call","selectInputEvents","useEventForward","selectInputProps","_createVNode","borderless","label","status","tips","clearable","placeholder","valueDisplay","params","panel","TSinglePanel","onRemove","prefixIcon","suffixIcon"],"mappings":"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"}