{"version":3,"file":"useSingle.mjs","sources":["../../../../components/date-picker/hooks/useSingle.tsx"],"sourcesContent":["import { ref, computed, watch } from 'vue';\nimport dayjs from 'dayjs';\nimport { omit } from 'lodash-es';\n\nimport { useDisabled, useReadonly, usePrefixClass } from '@tdesign/shared-hooks';\n\nimport { TdDatePickerProps, DateValue } from '../type';\nimport {\n  isValidDate,\n  formatDate,\n  formatTime,\n  getDefaultFormat,\n  parseToDayjs,\n} from '@tdesign/common-js/date-picker/format';\nimport { useSingleValue } from './useSingleValue';\n\nexport function useSingle(props: TdDatePickerProps) {\n  const COMPONENT_NAME = usePrefixClass('date-picker');\n  const disabled = useDisabled();\n\n  const inputRef = ref();\n  const isReadOnly = useReadonly();\n\n  const { value, onChange, time, month, year, cacheValue } = useSingleValue(props);\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\n  const popupVisible = ref(false);\n  const isHoverCell = ref(false);\n  // 未真正选中前可能不断变更输入框的内容\n  const inputValue = ref(\n    props.multiple\n      ? formatDate(value.value, { format: formatRef.value.format }) || []\n      : formatDate(value.value, { format: formatRef.value.format }),\n  );\n\n  // input 设置\n  const inputProps = computed(() => {\n    const defaultInputProps = {\n      ...props.inputProps,\n      size: props.size,\n      ref: inputRef,\n      readonly: isReadOnly.value || !props.allowInput,\n      class: [\n        {\n          [`${COMPONENT_NAME.value}__input--placeholder`]: isHoverCell.value,\n        },\n      ],\n    };\n    return props.multiple\n      ? defaultInputProps\n      : {\n          ...defaultInputProps,\n          onBlur: (val: string, context: { e: FocusEvent }) => {\n            props.onBlur?.({ value: val, e: context.e });\n          },\n          onFocus: (_: string, { e }: { e: FocusEvent }) => {\n            props.onFocus?.({ value: value.value, e });\n          },\n          onChange: (val: string) => {\n            // 输入事件\n            inputValue.value = val;\n\n            // 跳过不符合格式化的输入框内容\n            if (!isValidDate(val, formatRef.value.format)) return;\n            cacheValue.value = val;\n            const newMonth = parseToDayjs(val, formatRef.value.format).month();\n            const newYear = parseToDayjs(val, formatRef.value.format).year();\n            const newTime = formatTime(val, formatRef.value.format, formatRef.value.timeFormat, props.defaultTime);\n            !Number.isNaN(newYear) && (year.value = newYear);\n            !Number.isNaN(newMonth) && (month.value = newMonth);\n            !Number.isNaN(newTime) && (time.value = newTime);\n          },\n          onEnter: (val: string) => {\n            if (!val) {\n              onChange('', { dayjsValue: dayjs(), trigger: 'enter' });\n              popupVisible.value = false;\n              return;\n            }\n\n            if (!isValidDate(val, formatRef.value.format) && !isValidDate(value.value, formatRef.value.format)) return;\n\n            popupVisible.value = false;\n            if (isValidDate(val, formatRef.value.format)) {\n              onChange?.(\n                formatDate(val, {\n                  format: formatRef.value.format,\n                  targetFormat: formatRef.value.valueType,\n                }) as DateValue,\n                {\n                  dayjsValue: parseToDayjs(val, formatRef.value.format),\n                  trigger: 'enter',\n                },\n              );\n            } else if (isValidDate(value.value, formatRef.value.format)) {\n              inputValue.value = formatDate(value.value, {\n                format: formatRef.value.format,\n              });\n            } else {\n              inputValue.value = '';\n            }\n          },\n        };\n  });\n\n  // popup 设置\n  const popupProps = computed(() => ({\n    expandAnimation: true,\n    ...omit(props.popupProps, 'on-visible-change'),\n    disabled: disabled.value,\n    overlayInnerStyle: props.popupProps?.overlayInnerStyle ?? { width: 'auto' },\n    overlayClassName: [props.popupProps?.overlayClassName, `${COMPONENT_NAME.value}__panel-container`],\n    onVisibleChange: (visible: boolean, context: any) => {\n      if (disabled.value) return;\n      // 这里劫持了进一步向 popup 传递的 onVisibleChange 事件，为了保证可以在 Datepicker 中使用 popupProps.onVisibleChange，故此处理\n      props.popupProps?.onVisibleChange?.(visible, context);\n      // TODO\n      // @ts-ignore types only declare onVisibleChange，but not declare on-visible-change\n      props.popupProps?.['on-visible-change']?.(visible, context);\n      // 输入框点击不关闭面板\n      if (context.trigger === 'trigger-element-click') {\n        popupVisible.value = true;\n        return;\n      }\n      popupVisible.value = visible;\n    },\n  }));\n\n  watch(value, (value) => {\n    if (!value) {\n      inputValue.value = '';\n      return;\n    }\n    if (!isValidDate(value, formatRef.value.format)) return;\n\n    inputValue.value = formatDate(value, {\n      format: formatRef.value.format,\n    });\n  });\n\n  return {\n    year,\n    month,\n    value,\n    time,\n    inputValue,\n    popupVisible,\n    inputProps,\n    popupProps,\n    inputRef,\n    cacheValue,\n    isHoverCell,\n    onChange,\n  };\n}\n"],"names":["useSingle","props","COMPONENT_NAME","usePrefixClass","disabled","useDisabled","inputRef","ref","isReadOnly","useReadonly","_useSingleValue","useSingleValue","value","onChange","time","month","year","cacheValue","formatRef","computed","getDefaultFormat","mode","format","valueType","enableTimePicker","multiple","popupVisible","isHoverCell","inputValue","formatDate","inputProps","defaultInputProps","_objectSpread","size","readonly","allowInput","_defineProperty","concat","onBlur","val","context","_props$onBlur","call","e","onFocus","_","_ref2","_props$onFocus","isValidDate","newMonth","parseToDayjs","newYear","newTime","formatTime","timeFormat","defaultTime","Number","isNaN","onEnter","dayjsValue","dayjs","trigger","targetFormat","popupProps","_props$popupProps$ove","_props$popupProps","_props$popupProps2","expandAnimation","omit","overlayInnerStyle","width","overlayClassName","onVisibleChange","visible","_props$popupProps3","_props$popupProps3$on","_props$popupProps4","_props$popupProps4$on","watch"],"mappings":"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"}