element-plus
Version:
A Component Library for Vue 3
1 lines • 7.44 kB
Source Map (JSON)
{"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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"}