tdesign-vue-next
Version:
TDesign Component for vue-next
1 lines • 7.72 kB
Source Map (JSON)
{"version":3,"file":"useRangeValue.mjs","sources":["../../../../components/date-picker/hooks/useRangeValue.ts"],"sourcesContent":["import { ref, toRefs, computed, watch } from 'vue';\nimport { useVModel } from '@tdesign/shared-hooks';\n\nimport { TdDateRangePickerProps } from '../type';\nimport {\n isValidDate,\n formatDate,\n formatTime,\n getDefaultFormat,\n initYearMonthTime,\n extractTimeFormat,\n} from '@tdesign/common-js/date-picker/format';\n\nexport function useRangeValue(props: TdDateRangePickerProps) {\n const { value: valueFromProps, modelValue } = toRefs(props);\n\n const [rawValue, onRawChange] = useVModel(valueFromProps, modelValue, props.defaultValue, props.onChange);\n const value = computed(() => (Array.isArray(rawValue.value) ? rawValue.value : []));\n\n const formatRef = computed(() =>\n getDefaultFormat({\n mode: props.mode,\n format: props.format,\n valueType: props.valueType,\n enableTimePicker: props.enableTimePicker,\n }),\n );\n\n if (props.enableTimePicker) {\n if (!extractTimeFormat(formatRef.value.format))\n console.error(`format: ${formatRef.value.format} 不规范,包含时间选择必须要有时间格式化 HH:mm:ss`);\n }\n\n // warning invalid value\n if (!Array.isArray(rawValue.value)) {\n console.error(`typeof value: ${rawValue.value} must be Array!`);\n } else if (!isValidDate(rawValue.value, formatRef.value.format)) {\n console.error(\n `value: ${rawValue.value} is invalid dateTime! Check whether the value is consistent with format: ${formatRef.value.format}`,\n );\n }\n\n const isFirstValueSelected = ref(false); // 记录面板点击次数,两次后才自动关闭\n const time = ref(\n initYearMonthTime({\n value: value.value,\n mode: props.mode,\n format: formatRef.value.format,\n timeFormat: formatRef.value.timeFormat,\n }).time,\n );\n const month = ref(\n initYearMonthTime({\n value: value.value,\n mode: props.mode,\n format: formatRef.value.format,\n enableTimePicker: props.enableTimePicker,\n }).month,\n );\n const year = ref(initYearMonthTime({ value: value.value, mode: props.mode, format: formatRef.value.format }).year);\n const cacheValue = ref(formatDate(value.value, { format: formatRef.value.format })); // 选择阶段预选状态\n\n // 用于处理预设值的场景,打开面板自动展示未来某个时间的场景\n watch(\n () => isFirstValueSelected.value,\n () => {\n if (year.value[1] < year.value[0]) {\n year.value[1] = year.value[0];\n }\n // 只有当左右面板年份相同时,才需要比较月份大小\n if (year.value[0] === year.value[1] && month.value[1] < month.value[0]) {\n month.value[1] = month.value[0];\n }\n },\n );\n\n watch(\n value,\n (newValue) => {\n if (!rawValue.value) {\n cacheValue.value = [];\n return;\n }\n if (!isValidDate(newValue, formatRef.value.format)) return;\n\n cacheValue.value = formatDate(newValue, {\n format: formatRef.value.valueType,\n targetFormat: formatRef.value.format,\n });\n time.value = formatTime(\n newValue,\n formatRef.value.format,\n formatRef.value.timeFormat,\n props.defaultTime,\n ) as string[];\n },\n { immediate: true },\n );\n\n return {\n year,\n month,\n value,\n time,\n isFirstValueSelected,\n cacheValue,\n onRawChange,\n };\n}\n"],"names":["useRangeValue","props","_toRefs","toRefs","valueFromProps","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","rawValue","onRawChange","computed","Array","isArray","formatRef","getDefaultFormat","mode","format","valueType","enableTimePicker","extractTimeFormat","console","error","concat","isValidDate","isFirstValueSelected","ref","time","initYearMonthTime","timeFormat","month","year","cacheValue","formatDate","watch","newValue","targetFormat","formatTime","defaultTime","immediate"],"mappings":"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"}