element-plus
Version:
A Component Library for Vue 3
1 lines • 44.3 kB
Source Map (JSON)
{"version":3,"file":"picker.mjs","sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n v-model:visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n append-to-body\n transition=\"el-zoom-in-top\"\n :popper-class=\"`el-picker__popper ${popperClass}`\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n :gpu-acceleration=\"false\"\n :stop-popper-mouse-event=\"false\"\n :hide-after=\"0\"\n persistent\n @before-show=\"onBeforeShow\"\n @show=\"onShow\"\n @hide=\"onHide\"\n >\n <template #default>\n <el-input\n v-if=\"!isRangeInput\"\n :id=\"id\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n class=\"el-date-editor\"\n :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n :style=\"$attrs.style || undefined\"\n :readonly=\"!editable || readonly || isDatesPicker || type === 'week'\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @keydown=\"handleKeydown\"\n @change=\"handleChange\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\" />\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n class=\"el-input__icon clear-icon\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <div\n v-else\n ref=\"inputRef\"\n class=\"el-date-editor el-range-editor el-input__inner\"\n :class=\"[\n 'el-date-editor--' + type,\n pickerSize ? `el-range-editor--${pickerSize}` : '',\n pickerDisabled ? 'is-disabled' : '',\n pickerVisible ? 'is-active' : '',\n $attrs.class || undefined,\n ]\"\n :style=\"$attrs.style || undefined\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n class=\"el-input__icon el-range__icon\"\n @click=\"handleFocus\"\n >\n <component :is=\"triggerIcon\" />\n </el-icon>\n <input\n :id=\"id && id[0]\"\n autocomplete=\"off\"\n :name=\"name && name[0]\"\n :placeholder=\"startPlaceholder\"\n :value=\"displayValue && displayValue[0]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span class=\"el-range-separator\">{{ rangeSeparator }}</span>\n </slot>\n <input\n :id=\"id && id[1]\"\n autocomplete=\"off\"\n :name=\"name && name[1]\"\n :placeholder=\"endPlaceholder\"\n :value=\"displayValue && displayValue[1]\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n class=\"el-range-input\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n class=\"el-input__icon el-range__close-icon\"\n :class=\"{\n 'el-range__close-icon--hidden': !showClose,\n }\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </div>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n @pick=\"onPick\"\n @select-range=\"setSelectionRange\"\n @set-picker-option=\"onSetPickerOption\"\n @calendar-change=\"onCalendarChange\"\n @panel-change=\"onPanelChange\"\n @mousedown.stop\n />\n </template>\n </el-tooltip>\n</template>\n<script lang=\"ts\">\nimport {\n defineComponent,\n ref,\n computed,\n nextTick,\n inject,\n watch,\n provide,\n unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport { isEqual } from 'lodash-unified'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useSize } from '@element-plus/hooks'\nimport { formContextKey, formItemContextKey } from '@element-plus/tokens'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { debugWarn, isEmpty } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { Clock, Calendar } from '@element-plus/icons-vue'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { FormContext, FormItemContext } from '@element-plus/tokens'\nimport type { Options } from '@popperjs/core'\n\ninterface PickerOptions {\n isValidValue: (date: Dayjs) => boolean\n handleKeydown: (event: KeyboardEvent) => void\n parseUserInput: (value: Dayjs) => dayjs.Dayjs\n formatToString: (value: Dayjs) => string | string[]\n getRangeAvailableTime: (date: Dayjs) => dayjs.Dayjs\n getDefaultValue: () => Dayjs\n panelReady: boolean\n handleClear: () => void\n}\n\n// Date object and string\nconst dateEquals = function (a: Date | any, b: Date | any) {\n const aIsDate = a instanceof Date\n const bIsDate = b instanceof Date\n if (aIsDate && bIsDate) {\n return a.getTime() === b.getTime()\n }\n if (!aIsDate && !bIsDate) {\n return a === b\n }\n return false\n}\n\nconst valueEquals = function (a: Array<Date> | any, b: Array<Date> | any) {\n const aIsArray = Array.isArray(a)\n const bIsArray = Array.isArray(b)\n if (aIsArray && bIsArray) {\n if (a.length !== b.length) {\n return false\n }\n return (a as Array<Date>).every((item, index) => dateEquals(item, b[index]))\n }\n if (!aIsArray && !bIsArray) {\n return dateEquals(a, b)\n }\n return false\n}\n\nconst parser = function (\n date: string | number | Date,\n format: string,\n lang: string\n): Dayjs {\n const day =\n isEmpty(format) || format === 'x'\n ? dayjs(date).locale(lang)\n : dayjs(date, format).locale(lang)\n return day.isValid() ? day : undefined\n}\n\nconst formatter = function (\n date: string | number | Date,\n format: string,\n lang: string\n) {\n if (isEmpty(format)) return date\n if (format === 'x') return +date\n return dayjs(date).locale(lang).format(format)\n}\n\nexport default defineComponent({\n name: 'Picker',\n components: {\n ElInput,\n ElTooltip,\n ElIcon,\n },\n props: timePickerDefaultProps,\n emits: [\n 'update:modelValue',\n 'change',\n 'focus',\n 'blur',\n 'calendar-change',\n 'panel-change',\n 'visible-change',\n ],\n setup(props, ctx) {\n const { lang } = useLocale()\n\n const elForm = inject(formContextKey, {} as FormContext)\n const elFormItem = inject(formItemContextKey, {} as FormItemContext)\n const elPopperOptions = inject('ElPopperOptions', {} as Options)\n\n const refPopper = ref<InstanceType<typeof ElTooltip>>()\n const inputRef = ref<HTMLElement | ComponentPublicInstance>()\n const pickerVisible = ref(false)\n const pickerActualVisible = ref(false)\n const valueOnOpen = ref(null)\n\n watch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n ctx.emit('blur')\n blurInput()\n props.validateEvent &&\n elFormItem.validate?.('blur').catch((err) => debugWarn(err))\n } else {\n valueOnOpen.value = props.modelValue\n }\n })\n const emitChange = (val, isClear?: boolean) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n ctx.emit('change', val)\n props.validateEvent &&\n elFormItem.validate?.('change').catch((err) => debugWarn(err))\n }\n }\n const emitInput = (val) => {\n if (!valueEquals(props.modelValue, val)) {\n let formatValue\n if (Array.isArray(val)) {\n formatValue = val.map((_) =>\n formatter(_, props.valueFormat, lang.value)\n )\n } else if (val) {\n formatValue = formatter(val, props.valueFormat, lang.value)\n }\n ctx.emit('update:modelValue', val ? formatValue : val, lang.value)\n }\n }\n const refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n const _r = isRangeInput.value\n ? inputRef.value\n : (inputRef.value as any as ComponentPublicInstance).$el\n return Array.from<HTMLInputElement>(_r.querySelectorAll('input'))\n }\n return []\n })\n const refStartInput = computed(() => {\n return refInput?.value[0]\n })\n const refEndInput = computed(() => {\n return refInput?.value[1]\n })\n const setSelectionRange = (start, end, pos) => {\n const _inputs = refInput.value\n if (!_inputs.length) return\n if (!pos || pos === 'min') {\n _inputs[0].setSelectionRange(start, end)\n _inputs[0].focus()\n } else if (pos === 'max') {\n _inputs[1].setSelectionRange(start, end)\n _inputs[1].focus()\n }\n }\n const onPick = (date: any = '', visible = false) => {\n pickerVisible.value = visible\n let result\n if (Array.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 const onBeforeShow = () => {\n pickerActualVisible.value = true\n }\n\n const onShow = () => {\n ctx.emit('visible-change', true)\n }\n\n const onHide = () => {\n pickerActualVisible.value = false\n ctx.emit('visible-change', false)\n }\n\n const focus = (focusStartInput = true) => {\n let input = refStartInput.value\n if (!focusStartInput && isRangeInput.value) {\n input = refEndInput.value\n }\n if (input) {\n input.focus()\n }\n }\n\n const handleFocus = (e) => {\n if (props.readonly || pickerDisabled.value || pickerVisible.value) return\n pickerVisible.value = true\n ctx.emit('focus', e)\n }\n\n const handleBlur = () => {\n refPopper.value?.onClose()\n blurInput()\n }\n\n const pickerDisabled = computed(() => {\n return props.disabled || elForm.disabled\n })\n\n const parsedValue = computed(() => {\n let result\n if (valueIsEmpty.value) {\n if (pickerOptions.value.getDefaultValue) {\n result = pickerOptions.value.getDefaultValue()\n }\n } else {\n if (Array.isArray(props.modelValue)) {\n result = props.modelValue.map((_) =>\n parser(_, props.valueFormat, lang.value)\n )\n } else {\n result = parser(props.modelValue, props.valueFormat, lang.value)\n }\n }\n\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult =\n pickerOptions.value.getRangeAvailableTime(result)\n if (!isEqual(availableResult, result)) {\n result = availableResult\n emitInput(\n Array.isArray(result)\n ? result.map((_) => _.toDate())\n : result.toDate()\n )\n }\n }\n if (Array.isArray(result) && result.some((_) => !_)) {\n result = []\n }\n return result\n })\n\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (Array.isArray(userInput.value)) {\n return [\n userInput.value[0] || (formattedValue && formattedValue[0]) || '',\n userInput.value[1] || (formattedValue && formattedValue[1]) || '',\n ]\n } else if (userInput.value !== null) {\n return userInput.value\n }\n if (!isTimePicker.value && valueIsEmpty.value) return\n if (!pickerVisible.value && valueIsEmpty.value) return\n if (formattedValue) {\n return isDatesPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n })\n\n const isTimeLikePicker = computed(() => props.type.includes('time'))\n\n const isTimePicker = computed(() => props.type.startsWith('time'))\n\n const isDatesPicker = computed(() => props.type === 'dates')\n\n const triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n )\n\n const showClose = ref(false)\n\n const onClearIconClick = (event) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n emitInput(null)\n emitChange(null, true)\n showClose.value = false\n pickerVisible.value = false\n pickerOptions.value.handleClear && pickerOptions.value.handleClear()\n }\n }\n const valueIsEmpty = computed(() => {\n return (\n !props.modelValue ||\n (Array.isArray(props.modelValue) && !props.modelValue.length)\n )\n })\n const onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n }\n const onMouseLeave = () => {\n showClose.value = false\n }\n const isRangeInput = computed(() => {\n return props.type.includes('range')\n })\n\n const pickerSize = useSize()\n\n const popperPaneRef = computed(() => {\n return refPopper.value?.popperRef?.contentRef\n })\n\n const popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n const actualInputRef = computed(() => {\n if (unref(isRangeInput)) {\n return unref(inputRef)\n }\n\n return (unref(inputRef) as ComponentPublicInstance)?.$el\n })\n\n onClickOutside(actualInputRef, (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unref(actualInputRef)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n e.composedPath().includes(inputEl)\n )\n return\n pickerVisible.value = false\n })\n\n const userInput = ref(null)\n\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(\n Array.isArray(value)\n ? value.map((_) => _.toDate())\n : value.toDate()\n )\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(null)\n emitChange(null)\n userInput.value = null\n }\n }\n\n const blurInput = () => {\n refInput.value.forEach((input) => input.blur())\n }\n\n const parseUserInputToDayjs = (value) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput(value)\n }\n\n const formatDayjsToString = (value) => {\n if (!value) return null\n return pickerOptions.value.formatToString(value)\n }\n\n const isValidValue = (value) => {\n return pickerOptions.value.isValidValue(value)\n }\n\n const handleKeydown = (event) => {\n const code = event.code\n\n if (code === EVENT_CODE.esc) {\n pickerVisible.value = false\n event.stopPropagation()\n return\n }\n\n if (code === EVENT_CODE.tab) {\n if (!isRangeInput.value) {\n handleChange()\n pickerVisible.value = false\n event.stopPropagation()\n } else {\n // user may change focus between two input\n setTimeout(() => {\n if (!refInput.value.includes(document.activeElement)) {\n pickerVisible.value = false\n blurInput()\n }\n }, 0)\n }\n return\n }\n\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (\n userInput.value === null ||\n userInput.value === '' ||\n isValidValue(parseUserInputToDayjs(displayValue.value))\n ) {\n handleChange()\n pickerVisible.value = false\n }\n event.stopPropagation()\n return\n }\n\n // if user is typing, do not let picker handle key input\n if (userInput.value) {\n event.stopPropagation()\n return\n }\n\n if (pickerOptions.value.handleKeydown) {\n pickerOptions.value.handleKeydown(event)\n }\n }\n const onUserInput = (e) => {\n userInput.value = e\n }\n\n const handleStartInput = (event) => {\n if (userInput.value) {\n userInput.value = [event.target.value, userInput.value[1]]\n } else {\n userInput.value = [event.target.value, null]\n }\n }\n\n const handleEndInput = (event) => {\n if (userInput.value) {\n userInput.value = [userInput.value[0], event.target.value]\n } else {\n userInput.value = [null, event.target.value]\n }\n }\n\n const handleStartChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[0])\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), displayValue.value[1]]\n const newValue = [value, parsedValue.value && parsedValue.value[1]]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const handleEndChange = () => {\n const value = parseUserInputToDayjs(userInput.value && userInput.value[1])\n if (value && value.isValid()) {\n userInput.value = [displayValue.value[0], formatDayjsToString(value)]\n const newValue = [parsedValue.value && parsedValue.value[0], value]\n if (isValidValue(newValue)) {\n emitInput(newValue)\n userInput.value = null\n }\n }\n }\n\n const pickerOptions = ref<Partial<PickerOptions>>({})\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) => {\n ctx.emit('calendar-change', e)\n }\n\n const onPanelChange = (value, mode, view) => {\n ctx.emit('panel-change', value, mode, view)\n }\n\n provide('EP_PICKER_BASE', {\n props,\n })\n\n return {\n // injected popper options\n elPopperOptions,\n\n isDatesPicker,\n handleEndChange,\n handleStartChange,\n handleStartInput,\n handleEndInput,\n onUserInput,\n handleChange,\n handleKeydown,\n popperPaneRef,\n onClickOutside,\n pickerSize,\n isRangeInput,\n onMouseLeave,\n onMouseEnter,\n onClearIconClick,\n showClose,\n triggerIcon,\n onPick,\n handleFocus,\n handleBlur,\n pickerVisible,\n pickerActualVisible,\n displayValue,\n parsedValue,\n setSelectionRange,\n refPopper,\n inputRef,\n pickerDisabled,\n onSetPickerOption,\n onCalendarChange,\n onPanelChange,\n focus,\n onShow,\n onBeforeShow,\n onHide,\n }\n },\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createBlock","_mergeProps","_withCtx","_normalizeClass","_withModifiers","_resolveDynamicComponent","_createCommentVNode","_createElementBlock","_normalizeStyle","_createElementVNode","_renderSlot","_toDisplayString"],"mappings":"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"}