UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 7.25 kB
{"version":3,"file":"use-common-picker.mjs","sources":["../../../../../../../packages/components/time-picker/src/composables/use-common-picker.ts"],"sourcesContent":["import { computed, ref } from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { useLocale } from '@element-plus/hooks/use-locale'\nimport { isArray } from '@element-plus/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-plus/constants'\nimport { dayOrDaysToDate, formatter, parseDate, valueEquals } from '../utils'\n\nimport type { Dayjs } from 'dayjs'\nimport type {\n DateModelType,\n DayOrDays,\n ModelValueType,\n PickerOptions,\n SingleOrRange,\n UserInput,\n} from '../common/props'\n\ninterface CommonPickerProps {\n modelValue: ModelValueType | null\n valueFormat?: string\n}\ntype CommonPickerEmits = (\n event: 'update:modelValue' | 'calendar-change' | 'panel-change',\n ...args: any[]\n) => void\n\nexport const useCommonPicker = <\n P extends CommonPickerProps,\n E extends CommonPickerEmits,\n>(\n props: P,\n emit: E\n) => {\n const { lang } = useLocale()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const userInput = ref<UserInput>(null)\n\n const valueIsEmpty = computed(() => {\n const { modelValue } = props\n return (\n !modelValue || (isArray(modelValue) && !modelValue.filter(Boolean).length)\n )\n })\n\n const emitInput = (input: SingleOrRange<DateModelType> | null) => {\n if (!valueEquals(props.modelValue, input)) {\n let formatted\n if (isArray(input)) {\n formatted = input.map((item) =>\n formatter(item, props.valueFormat, lang.value)\n )\n } else if (input) {\n formatted = formatter(input, props.valueFormat, lang.value)\n }\n const emitVal = input ? formatted : input\n emit(UPDATE_MODEL_EVENT, emitVal, lang.value)\n }\n }\n\n const parsedValue = computed(() => {\n let dayOrDays: DayOrDays\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n dayOrDays = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (isArray(props.modelValue)) {\n dayOrDays = props.modelValue.map((d) =>\n parseDate(d, props.valueFormat, lang.value)\n ) as [Dayjs, Dayjs]\n } else {\n dayOrDays = parseDate(\n props.modelValue ?? '',\n props.valueFormat,\n lang.value\n )!\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult = pickerOptions.value.getRangeAvailableTime(\n dayOrDays!\n )\n if (!isEqual(availableResult, dayOrDays!)) {\n dayOrDays = availableResult\n\n // The result is corrected only when model-value exists\n if (!valueIsEmpty.value) {\n emitInput(dayOrDaysToDate(dayOrDays))\n }\n }\n }\n if (isArray(dayOrDays!) && dayOrDays.some((day) => !day)) {\n dayOrDays = [] as unknown as DayOrDays\n }\n return dayOrDays!\n })\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\n\n const onSetPickerOption = <T extends keyof PickerOptions>(\n e: [T, PickerOptions[T]]\n ) => {\n pickerOptions.value[e[0]] = e[1]\n pickerOptions.value.panelReady = true\n }\n\n const onCalendarChange = (e: [Date, null | Date]) => {\n emit('calendar-change', e)\n }\n\n const onPanelChange = (\n value: [Dayjs, Dayjs],\n mode: 'month' | 'year',\n view: unknown\n ) => {\n emit('panel-change', value, mode, view)\n }\n\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (isArray(date)) {\n result = date.map((_) => _.toDate())\n } else {\n // clear btn emit null\n result = date ? date.toDate() : date\n }\n userInput.value = null\n emitInput(result)\n }\n\n return {\n parsedValue,\n pickerActualVisible,\n pickerOptions,\n pickerVisible,\n userInput,\n valueIsEmpty,\n emitInput,\n onCalendarChange,\n onPanelChange,\n onPick,\n onSetPickerOption,\n }\n}\n\nexport type CommonPickerContext = ReturnType<typeof useCommonPicker>\n"],"names":[],"mappings":"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"}