UNPKG

tdesign-vue-next

Version:
1 lines 13.6 kB
{"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 } from '../../hooks/useDisabled';\nimport { usePrefixClass } from '../../hooks/useConfig';\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';\nimport { useReadonly } from '../../hooks/useReadonly';\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 onClear: (context: { e: InputEvent }) => {\n context?.e?.stopPropagation();\n popupVisible.value = false;\n onChange?.('', { dayjsValue: dayjs(), trigger: 'clear' });\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","onClear","context","_context$e","e","stopPropagation","dayjsValue","dayjs","trigger","onBlur","val","_props$onBlur","call","onFocus","_","_ref2","_props$onFocus","isValidDate","newMonth","parseToDayjs","newYear","newTime","formatTime","timeFormat","defaultTime","Number","isNaN","onEnter","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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"}