UNPKG

tdesign-vue-next

Version:
1 lines 7.42 kB
{"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';\nimport { isArray } from 'lodash-es';\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 [value, onChange] = useVModel(valueFromProps, modelValue, props.defaultValue, props.onChange);\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 (!isArray(value.value)) {\n console.error(`typeof value: ${value.value} must be Array!`);\n } else if (!isValidDate(value.value, formatRef.value.format)) {\n console.error(\n `value: ${value.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 (!newValue) {\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 onChange,\n };\n}\n"],"names":["useRangeValue","props","_toRefs","toRefs","valueFromProps","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","formatRef","computed","getDefaultFormat","mode","format","valueType","enableTimePicker","extractTimeFormat","console","error","concat","isArray","isValidDate","isFirstValueSelected","ref","time","initYearMonthTime","timeFormat","month","year","cacheValue","formatDate","watch","newValue","targetFormat","formatTime","defaultTime","immediate"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAcO,SAASA,cAAcC,KAA+B,EAAA;AAC3D,EAAA,IAAAC,OAAA,GAA8CC,OAAOF,KAAK,CAAA;IAA3CG,cAAA,GAAAF,OAAA,CAAPG,KAAO;IAAgBC,UAAW,GAAAJ,OAAA,CAAXI,UAAW,CAAA;AAEpC,EAAA,IAAAC,UAAA,GAAoBC,SAAA,CAAUJ,gBAAgBE,UAAY,EAAAL,KAAA,CAAMQ,YAAc,EAAAR,KAAA,CAAMS,QAAQ,CAAA;IAAAC,WAAA,GAAAC,cAAA,CAAAL,UAAA,EAAA,CAAA,CAAA;AAA3FF,IAAAA,KAAO,GAAAM,WAAA,CAAA,CAAA,CAAA;AAAAD,IAAAA,QAAQ,GAAAC,WAAA,CAAA,CAAA,CAAA,CAAA;EAEtB,IAAME,SAAY,GAAAC,QAAA,CAAS,YAAA;AAAA,IAAA,OACzBC,gBAAiB,CAAA;MACfC,MAAMf,KAAM,CAAAe,IAAA;MACZC,QAAQhB,KAAM,CAAAgB,MAAA;MACdC,WAAWjB,KAAM,CAAAiB,SAAA;MACjBC,kBAAkBlB,KAAM,CAAAkB,gBAAAA;AAC1B,KAAC,CAAA,CAAA;AAAA,GACH,CAAA,CAAA;EAEA,IAAIlB,MAAMkB,gBAAkB,EAAA;IAC1B,IAAI,CAACC,iBAAA,CAAkBP,SAAU,CAAAR,KAAA,CAAMY,MAAM,CAAA,EAC3CI,OAAA,CAAQC,KAAM,CAAA,UAAA,CAAAC,MAAA,CAAWV,SAAU,CAAAR,KAAA,CAAMY,MAAqC,EAAA,8HAAA,CAAA,CAAA,CAAA;AAClF,GAAA;AAGA,EAAA,IAAI,CAACO,OAAA,CAAQnB,KAAM,CAAAA,KAAK,CAAG,EAAA;IACjBgB,OAAA,CAAAC,KAAA,CAAAC,gBAAAA,CAAAA,MAAA,CAAuBlB,KAAA,CAAMA,KAAsB,EAAA,iBAAA,CAAA,CAAA,CAAA;AAC7D,GAAA,MAAA,IAAW,CAACoB,WAAY,CAAApB,KAAA,CAAMA,OAAOQ,SAAU,CAAAR,KAAA,CAAMY,MAAM,CAAG,EAAA;AACpDI,IAAAA,OAAA,CAAAC,KAAA,CAAA,SAAA,CAAAC,MAAA,CACIlB,KAAA,CAAMA,KAAiF,EAAAkB,2EAAAA,CAAAA,CAAAA,MAAA,CAAAV,SAAA,CAAUR,KAAM,CAAAY,MAAA,CACnH,CAAA,CAAA;AACF,GAAA;AAEM,EAAA,IAAAS,oBAAA,GAAuBC,IAAI,KAAK,CAAA,CAAA;AACtC,EAAA,IAAMC,IAAO,GAAAD,GAAA,CACXE,iBAAkB,CAAA;IAChBxB,OAAOA,KAAM,CAAAA,KAAA;IACbW,MAAMf,KAAM,CAAAe,IAAA;AACZC,IAAAA,MAAA,EAAQJ,UAAUR,KAAM,CAAAY,MAAA;AACxBa,IAAAA,UAAA,EAAYjB,UAAUR,KAAM,CAAAyB,UAAAA;GAC7B,CAAE,CAAAF,IACL,CAAA,CAAA;AACA,EAAA,IAAMG,KAAQ,GAAAJ,GAAA,CACZE,iBAAkB,CAAA;IAChBxB,OAAOA,KAAM,CAAAA,KAAA;IACbW,MAAMf,KAAM,CAAAe,IAAA;AACZC,IAAAA,MAAA,EAAQJ,UAAUR,KAAM,CAAAY,MAAA;IACxBE,kBAAkBlB,KAAM,CAAAkB,gBAAAA;GACzB,CAAE,CAAAY,KACL,CAAA,CAAA;AACA,EAAA,IAAMC,OAAOL,GAAI,CAAAE,iBAAA,CAAkB;IAAExB,KAAA,EAAOA,MAAMA,KAAO;IAAAW,IAAA,EAAMf,KAAM,CAAAe,IAAA;AAAMC,IAAAA,QAAQJ,SAAU,CAAAR,KAAA,CAAMY,MAAAA;GAAQ,EAAEe,IAAI,CAAA,CAAA;EAC3G,IAAAC,UAAA,GAAaN,GAAI,CAAAO,UAAA,CAAW7B,KAAM,CAAAA,KAAA,EAAO;AAAEY,IAAAA,MAAA,EAAQJ,SAAU,CAAAR,KAAA,CAAMY,MAAAA;AAAO,GAAC,CAAC,CAAA,CAAA;AAGlFkB,EAAAA,KAAA,CACE,YAAA;IAAA,OAAMT,oBAAqB,CAAArB,KAAA,CAAA;AAAA,GAAA,EAC3B,YAAM;AACJ,IAAA,IAAI2B,IAAK,CAAA3B,KAAA,CAAM,CAAK,CAAA,GAAA2B,IAAA,CAAK3B,MAAM,CAAI,CAAA,EAAA;MAC5B2B,IAAA,CAAA3B,KAAA,CAAM,CAAK,CAAA,GAAA2B,IAAA,CAAK3B,KAAM,CAAA,CAAA,CAAA,CAAA;AAC7B,KAAA;IAEI,IAAA2B,IAAA,CAAK3B,KAAM,CAAA,CAAA,CAAA,KAAO2B,IAAK,CAAA3B,KAAA,CAAM,CAAM,CAAA,IAAA0B,KAAA,CAAM1B,KAAM,CAAA,CAAA,CAAA,GAAK0B,KAAM,CAAA1B,KAAA,CAAM,CAAI,CAAA,EAAA;MAChE0B,KAAA,CAAA1B,KAAA,CAAM,CAAK,CAAA,GAAA0B,KAAA,CAAM1B,KAAM,CAAA,CAAA,CAAA,CAAA;AAC/B,KAAA;AACF,GACF,CAAA,CAAA;AAEA8B,EAAAA,KAAA,CACE9B,KAAA,EACA,UAAC+B,QAAa,EAAA;IACZ,IAAI,CAACA,QAAU,EAAA;MACbH,UAAA,CAAW5B,QAAQ,EAAC,CAAA;AACpB,MAAA,OAAA;AACF,KAAA;IACA,IAAI,CAACoB,WAAA,CAAYW,QAAU,EAAAvB,SAAA,CAAUR,MAAMY,MAAM,CAAA,EAAG,OAAA;AAEzCgB,IAAAA,UAAA,CAAA5B,KAAA,GAAQ6B,WAAWE,QAAU,EAAA;AACtCnB,MAAAA,MAAA,EAAQJ,UAAUR,KAAM,CAAAa,SAAA;AACxBmB,MAAAA,YAAA,EAAcxB,UAAUR,KAAM,CAAAY,MAAAA;AAChC,KAAC,CAAA,CAAA;IACDW,IAAA,CAAKvB,KAAQ,GAAAiC,UAAA,CACXF,QAAA,EACAvB,UAAUR,KAAM,CAAAY,MAAA,EAChBJ,UAAUR,KAAM,CAAAyB,UAAA,EAChB7B,KAAM,CAAAsC,WACR,CAAA,CAAA;AACF,GAAA,EACA;AAAEC,IAAAA,WAAW,IAAA;AAAK,GACpB,CAAA,CAAA;EAEO,OAAA;AACLR,IAAAA,IAAA,EAAAA,IAAA;AACAD,IAAAA,KAAA,EAAAA,KAAA;AACA1B,IAAAA,KAAA,EAAAA,KAAA;AACAuB,IAAAA,IAAA,EAAAA,IAAA;AACAF,IAAAA,oBAAA,EAAAA,oBAAA;AACAO,IAAAA,UAAA,EAAAA,UAAA;AACAvB,IAAAA,QAAA,EAAAA,QAAAA;GACF,CAAA;AACF;;;;"}