You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 lines
57 KiB

{"ast":null,"code":"import { defineComponent, useAttrs, inject, ref, computed, watch, nextTick, unref, onBeforeUnmount, provide, openBlock, createBlock, mergeProps, withCtx, normalizeClass, normalizeStyle, withModifiers, resolveDynamicComponent, createCommentVNode, renderSlot, createElementVNode, toDisplayString } from 'vue';\nimport { isEqual } from 'lodash-unified';\nimport { onClickOutside, unrefElement } from '@vueuse/core';\nimport { ElInput } from '../../../input/index.mjs';\nimport { ElIcon } from '../../../icon/index.mjs';\nimport { ElTooltip } from '../../../tooltip/index.mjs';\nimport { Clock, Calendar } from '@element-plus/icons-vue';\nimport { valueEquals, parseDate, dayOrDaysToDate, formatter } from '../utils.mjs';\nimport { timePickerDefaultProps } from './props.mjs';\nimport PickerRangeTrigger from './picker-range-trigger.mjs';\nimport _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';\nimport { useEmptyValues } from '../../../../hooks/use-empty-values/index.mjs';\nimport { useLocale } from '../../../../hooks/use-locale/index.mjs';\nimport { useNamespace } from '../../../../hooks/use-namespace/index.mjs';\nimport { useFormItem } from '../../../form/src/hooks/use-form-item.mjs';\nimport { useFocusController } from '../../../../hooks/use-focus-controller/index.mjs';\nimport { debugWarn } from '../../../../utils/error.mjs';\nimport { isArray, NOOP } from '@vue/shared';\nimport { useFormSize } from '../../../form/src/hooks/use-form-common-props.mjs';\nimport { EVENT_CODE } from '../../../../constants/aria.mjs';\nconst __default__ = defineComponent({\n name: \"Picker\"\n});\nconst _sfc_main = /* @__PURE__ */defineComponent({\n ...__default__,\n props: timePickerDefaultProps,\n emits: [\"update:modelValue\", \"change\", \"focus\", \"blur\", \"clear\", \"calendar-change\", \"panel-change\", \"visible-change\", \"keydown\"],\n setup(__props, {\n expose,\n emit\n }) {\n const props = __props;\n const attrs = useAttrs();\n const {\n lang\n } = useLocale();\n const nsDate = useNamespace(\"date\");\n const nsInput = useNamespace(\"input\");\n const nsRange = useNamespace(\"range\");\n const {\n form,\n formItem\n } = useFormItem();\n const elPopperOptions = inject(\"ElPopperOptions\", {});\n const {\n valueOnClear\n } = useEmptyValues(props, null);\n const refPopper = ref();\n const inputRef = ref();\n const pickerVisible = ref(false);\n const pickerActualVisible = ref(false);\n const valueOnOpen = ref(null);\n let hasJustTabExitedInput = false;\n const {\n isFocused,\n handleFocus,\n handleBlur\n } = useFocusController(inputRef, {\n beforeFocus() {\n return props.readonly || pickerDisabled.value;\n },\n afterFocus() {\n pickerVisible.value = true;\n },\n beforeBlur(event) {\n var _a;\n return !hasJustTabExitedInput && ((_a = refPopper.value) == null ? void 0 : _a.isFocusInsideContent(event));\n },\n afterBlur() {\n handleChange();\n pickerVisible.value = false;\n hasJustTabExitedInput = false;\n props.validateEvent && (formItem == null ? void 0 : formItem.validate(\"blur\").catch(err => debugWarn(err)));\n }\n });\n const rangeInputKls = computed(() => [nsDate.b(\"editor\"), nsDate.bm(\"editor\", props.type), nsInput.e(\"wrapper\"), nsDate.is(\"disabled\", pickerDisabled.value), nsDate.is(\"active\", pickerVisible.value), nsRange.b(\"editor\"), pickerSize ? nsRange.bm(\"editor\", pickerSize.value) : \"\", attrs.class]);\n const clearIconKls = computed(() => [nsInput.e(\"icon\"), nsRange.e(\"close-icon\"), !showClose.value ? nsRange.e(\"close-icon--hidden\") : \"\"]);\n watch(pickerVisible, val => {\n if (!val) {\n userInput.value = null;\n nextTick(() => {\n emitChange(props.modelValue);\n });\n } else {\n nextTick(() => {\n if (val) {\n valueOnOpen.value = props.modelValue;\n }\n });\n }\n });\n const emitChange = (val, isClear) => {\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n emit(\"change\", val);\n props.validateEvent && (formItem == null ? void 0 : formItem.validate(\"change\").catch(err => debugWarn(err)));\n }\n };\n const emitInput = input => {\n if (!valueEquals(props.modelValue, input)) {\n let formatted;\n if (isArray(input)) {\n formatted = input.map(item => formatter(item, props.valueFormat, lang.value));\n } else if (input) {\n formatted = formatter(input, props.valueFormat, lang.value);\n }\n emit(\"update:modelValue\", input ? formatted : input, lang.value);\n }\n };\n const emitKeydown = e => {\n emit(\"keydown\", e);\n };\n const refInput = computed(() => {\n if (inputRef.value) {\n return Array.from(inputRef.value.$el.querySelectorAll(\"input\"));\n }\n return [];\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 = \"\", visible = false) => {\n pickerVisible.value = visible;\n let result;\n if (isArray(date)) {\n result = date.map(_ => _.toDate());\n } else {\n result = date ? date.toDate() : date;\n }\n userInput.value = null;\n emitInput(result);\n };\n const onBeforeShow = () => {\n pickerActualVisible.value = true;\n };\n const onShow = () => {\n emit(\"visible-change\", true);\n };\n const onHide = () => {\n pickerActualVisible.value = false;\n pickerVisible.value = false;\n emit(\"visible-change\", false);\n };\n const handleOpen = () => {\n pickerVisible.value = true;\n };\n const handleClose = () => {\n pickerVisible.value = false;\n };\n const pickerDisabled = computed(() => {\n return props.disabled || (form == null ? void 0 : form.disabled);\n });\n const parsedValue = computed(() => {\n let 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 => parseDate(d, props.valueFormat, lang.value));\n } else {\n dayOrDays = parseDate(props.modelValue, props.valueFormat, lang.value);\n }\n }\n if (pickerOptions.value.getRangeAvailableTime) {\n const availableResult = pickerOptions.value.getRangeAvailableTime(dayOrDays);\n if (!isEqual(availableResult, dayOrDays)) {\n dayOrDays = availableResult;\n if (!valueIsEmpty.value) {\n emitInput(dayOrDaysToDate(dayOrDays));\n }\n }\n }\n if (isArray(dayOrDays) && dayOrDays.some(day => !day)) {\n dayOrDays = [];\n }\n return dayOrDays;\n });\n const displayValue = computed(() => {\n if (!pickerOptions.value.panelReady) return \"\";\n const formattedValue = formatDayjsToString(parsedValue.value);\n if (isArray(userInput.value)) {\n return [userInput.value[0] || formattedValue && formattedValue[0] || \"\", userInput.value[1] || formattedValue && formattedValue[1] || \"\"];\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 || isMonthsPicker.value || isYearsPicker.value ? formattedValue.join(\", \") : formattedValue;\n }\n return \"\";\n });\n const isTimeLikePicker = computed(() => props.type.includes(\"time\"));\n const isTimePicker = computed(() => props.type.startsWith(\"time\"));\n const isDatesPicker = computed(() => props.type === \"dates\");\n const isMonthsPicker = computed(() => props.type === \"months\");\n const isYearsPicker = computed(() => props.type === \"years\");\n const triggerIcon = computed(() => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar));\n const showClose = ref(false);\n const onClearIconClick = event => {\n if (props.readonly || pickerDisabled.value) return;\n if (showClose.value) {\n event.stopPropagation();\n if (pickerOptions.value.handleClear) {\n pickerOptions.value.handleClear();\n } else {\n emitInput(valueOnClear.value);\n }\n emitChange(valueOnClear.value, true);\n showClose.value = false;\n onHide();\n }\n emit(\"clear\");\n };\n const valueIsEmpty = computed(() => {\n const {\n modelValue\n } = props;\n return !modelValue || isArray(modelValue) && !modelValue.filter(Boolean).length;\n });\n const onMouseDownInput = async event => {\n var _a;\n if (props.readonly || pickerDisabled.value) return;\n if (((_a = event.target) == null ? void 0 : _a.tagName) !== \"INPUT\" || isFocused.value) {\n pickerVisible.value = true;\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 onTouchStartInput = event => {\n var _a;\n if (props.readonly || pickerDisabled.value) return;\n if (((_a = event.touches[0].target) == null ? void 0 : _a.tagName) !== \"INPUT\" || isFocused.value) {\n pickerVisible.value = true;\n }\n };\n const isRangeInput = computed(() => {\n return props.type.includes(\"range\");\n });\n const pickerSize = useFormSize();\n const popperEl = computed(() => {\n var _a, _b;\n return (_b = (_a = unref(refPopper)) == null ? void 0 : _a.popperRef) == null ? void 0 : _b.contentRef;\n });\n const stophandle = onClickOutside(inputRef, e => {\n const unrefedPopperEl = unref(popperEl);\n const inputEl = unrefElement(inputRef);\n if (unrefedPopperEl && (e.target === unrefedPopperEl || e.composedPath().includes(unrefedPopperEl)) || e.target === inputEl || inputEl && e.composedPath().includes(inputEl)) return;\n pickerVisible.value = false;\n });\n onBeforeUnmount(() => {\n stophandle == null ? void 0 : stophandle();\n });\n const userInput = ref(null);\n const handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value);\n if (value) {\n if (isValidValue(value)) {\n emitInput(dayOrDaysToDate(value));\n userInput.value = null;\n }\n }\n }\n if (userInput.value === \"\") {\n emitInput(valueOnClear.value);\n emitChange(valueOnClear.value);\n userInput.value = null;\n }\n };\n const parseUserInputToDayjs = value => {\n if (!value) return null;\n return pickerOptions.value.parseUserInput(value);\n };\n const formatDayjsToString = value => {\n if (!value) return null;\n return pickerOptions.value.formatToString(value);\n };\n const isValidValue = value => {\n return pickerOptions.value.isValidValue(value);\n };\n const handleKeydownInput = async event => {\n if (props.readonly || pickerDisabled.value) return;\n const {\n code\n } = event;\n emitKeydown(event);\n if (code === EVENT_CODE.esc) {\n if (pickerVisible.value === true) {\n pickerVisible.value = false;\n event.preventDefault();\n event.stopPropagation();\n }\n return;\n }\n if (code === EVENT_CODE.down) {\n if (pickerOptions.value.handleFocusPicker) {\n event.preventDefault();\n event.stopPropagation();\n }\n if (pickerVisible.value === false) {\n pickerVisible.value = true;\n await nextTick();\n }\n if (pickerOptions.value.handleFocusPicker) {\n pickerOptions.value.handleFocusPicker();\n return;\n }\n }\n if (code === EVENT_CODE.tab) {\n hasJustTabExitedInput = true;\n return;\n }\n if (code === EVENT_CODE.enter || code === EVENT_CODE.numpadEnter) {\n if (userInput.value === null || userInput.value === \"\" || isValidValue(parseUserInputToDayjs(displayValue.value))) {\n handleChange();\n pickerVisible.value = false;\n }\n event.stopPropagation();\n return;\n }\n if (userInput.value) {\n event.stopPropagation();\n return;\n }\n if (pickerOptions.value.handleKeydownInput) {\n pickerOptions.value.handleKeydownInput(event);\n }\n };\n const onUserInput = e => {\n userInput.value = e;\n if (!pickerVisible.value) {\n pickerVisible.value = true;\n }\n };\n const handleStartInput = event => {\n const target = event.target;\n if (userInput.value) {\n userInput.value = [target.value, userInput.value[1]];\n } else {\n userInput.value = [target.value, null];\n }\n };\n const handleEndInput = event => {\n const target = event.target;\n if (userInput.value) {\n userInput.value = [userInput.value[0], target.value];\n } else {\n userInput.value = [null, target.value];\n }\n };\n const handleStartChange = () => {\n var _a;\n const values = userInput.value;\n const value = parseUserInputToDayjs(values && values[0]);\n const parsedVal = unref(parsedValue);\n if (value && value.isValid()) {\n userInput.value = [formatDayjsToString(value), ((_a = displayValue.value) == null ? void 0 : _a[1]) || null];\n const newValue = [value, parsedVal && (parsedVal[1] || null)];\n if (isValidValue(newValue)) {\n emitInput(dayOrDaysToDate(newValue));\n userInput.value = null;\n }\n }\n };\n const handleEndChange = () => {\n var _a;\n const values = unref(userInput);\n const value = parseUserInputToDayjs(values && values[1]);\n const parsedVal = unref(parsedValue);\n if (value && value.isValid()) {\n userInput.value = [((_a = unref(displayValue)) == null ? void 0 : _a[0]) || null, formatDayjsToString(value)];\n const newValue = [parsedVal && parsedVal[0], value];\n if (isValidValue(newValue)) {\n emitInput(dayOrDaysToDate(newValue));\n userInput.value = null;\n }\n }\n };\n const pickerOptions = ref({});\n const onSetPickerOption = e => {\n pickerOptions.value[e[0]] = e[1];\n pickerOptions.value.panelReady = true;\n };\n const onCalendarChange = e => {\n emit(\"calendar-change\", e);\n };\n const onPanelChange = (value, mode, view) => {\n emit(\"panel-change\", value, mode, view);\n };\n const focus = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.focus();\n };\n const blur = () => {\n var _a;\n (_a = inputRef.value) == null ? void 0 : _a.blur();\n };\n provide(\"EP_PICKER_BASE\", {\n props\n });\n expose({\n focus,\n blur,\n handleOpen,\n handleClose,\n onPick\n });\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(ElTooltip), mergeProps({\n ref_key: \"refPopper\",\n ref: refPopper,\n visible: pickerVisible.value,\n effect: \"light\",\n pure: \"\",\n trigger: \"click\"\n }, _ctx.$attrs, {\n role: \"dialog\",\n teleported: \"\",\n transition: `${unref(nsDate).namespace.value}-zoom-in-top`,\n \"popper-class\": [`${unref(nsDate).namespace.value}-picker__popper`, _ctx.popperClass],\n \"popper-options\": unref(elPopperOptions),\n \"fallback-placements\": _ctx.fallbackPlacements,\n \"gpu-acceleration\": false,\n placement: _ctx.placement,\n \"stop-popper-mouse-event\": false,\n \"hide-after\": 0,\n persistent: \"\",\n onBeforeShow,\n onShow,\n onHide\n }), {\n default: withCtx(() => [!unref(isRangeInput) ? (openBlock(), createBlock(unref(ElInput), {\n key: 0,\n id: _ctx.id,\n ref_key: \"inputRef\",\n ref: inputRef,\n \"container-role\": \"combobox\",\n \"model-value\": unref(displayValue),\n name: _ctx.name,\n size: unref(pickerSize),\n disabled: unref(pickerDisabled),\n placeholder: _ctx.placeholder,\n class: normalizeClass([unref(nsDate).b(\"editor\"), unref(nsDate).bm(\"editor\", _ctx.type), _ctx.$attrs.class]),\n style: normalizeStyle(_ctx.$attrs.style),\n readonly: !_ctx.editable || _ctx.readonly || unref(isDatesPicker) || unref(isMonthsPicker) || unref(isYearsPicker) || _ctx.type === \"week\",\n \"aria-label\": _ctx.ariaLabel,\n tabindex: _ctx.tabindex,\n \"validate-event\": false,\n onInput: onUserInput,\n onFocus: unref(handleFocus),\n onBlur: unref(handleBlur),\n onKeydown: handleKeydownInput,\n onChange: handleChange,\n onMousedown: onMouseDownInput,\n onMouseenter: onMouseEnter,\n onMouseleave: onMouseLeave,\n onTouchstartPassive: onTouchStartInput,\n onClick: withModifiers(() => {}, [\"stop\"])\n }, {\n prefix: withCtx(() => [unref(triggerIcon) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(nsInput).e(\"icon\")),\n onMousedown: withModifiers(onMouseDownInput, [\"prevent\"]),\n onTouchstartPassive: onTouchStartInput\n }, {\n default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(unref(triggerIcon))))]),\n _: 1\n }, 8, [\"class\", \"onMousedown\"])) : createCommentVNode(\"v-if\", true)]),\n suffix: withCtx(() => [showClose.value && _ctx.clearIcon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(`${unref(nsInput).e(\"icon\")} clear-icon`),\n onMousedown: withModifiers(unref(NOOP), [\"prevent\"]),\n onClick: onClearIconClick\n }, {\n default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))]),\n _: 1\n }, 8, [\"class\", \"onMousedown\"])) : createCommentVNode(\"v-if\", true)]),\n _: 1\n }, 8, [\"id\", \"model-value\", \"name\", \"size\", \"disabled\", \"placeholder\", \"class\", \"style\", \"readonly\", \"aria-label\", \"tabindex\", \"onFocus\", \"onBlur\", \"onClick\"])) : (openBlock(), createBlock(PickerRangeTrigger, {\n key: 1,\n id: _ctx.id,\n ref_key: \"inputRef\",\n ref: inputRef,\n \"model-value\": unref(displayValue),\n name: _ctx.name,\n disabled: unref(pickerDisabled),\n readonly: !_ctx.editable || _ctx.readonly,\n \"start-placeholder\": _ctx.startPlaceholder,\n \"end-placeholder\": _ctx.endPlaceholder,\n class: normalizeClass(unref(rangeInputKls)),\n style: normalizeStyle(_ctx.$attrs.style),\n \"aria-label\": _ctx.ariaLabel,\n tabindex: _ctx.tabindex,\n autocomplete: \"off\",\n role: \"combobox\",\n onClick: onMouseDownInput,\n onFocus: unref(handleFocus),\n onBlur: unref(handleBlur),\n onStartInput: handleStartInput,\n onStartChange: handleStartChange,\n onEndInput: handleEndInput,\n onEndChange: handleEndChange,\n onMousedown: onMouseDownInput,\n onMouseenter: onMouseEnter,\n onMouseleave: onMouseLeave,\n onTouchstartPassive: onTouchStartInput,\n onKeydown: handleKeydownInput\n }, {\n prefix: withCtx(() => [unref(triggerIcon) ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass([unref(nsInput).e(\"icon\"), unref(nsRange).e(\"icon\")])\n }, {\n default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(unref(triggerIcon))))]),\n _: 1\n }, 8, [\"class\"])) : createCommentVNode(\"v-if\", true)]),\n \"range-separator\": withCtx(() => [renderSlot(_ctx.$slots, \"range-separator\", {}, () => [createElementVNode(\"span\", {\n class: normalizeClass(unref(nsRange).b(\"separator\"))\n }, toDisplayString(_ctx.rangeSeparator), 3)])]),\n suffix: withCtx(() => [_ctx.clearIcon ? (openBlock(), createBlock(unref(ElIcon), {\n key: 0,\n class: normalizeClass(unref(clearIconKls)),\n onMousedown: withModifiers(unref(NOOP), [\"prevent\"]),\n onClick: onClearIconClick\n }, {\n default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(_ctx.clearIcon)))]),\n _: 1\n }, 8, [\"class\", \"onMousedown\"])) : createCommentVNode(\"v-if\", true)]),\n _: 3\n }, 8, [\"id\", \"model-value\", \"name\", \"disabled\", \"readonly\", \"start-placeholder\", \"end-placeholder\", \"class\", \"style\", \"aria-label\", \"tabindex\", \"onFocus\", \"onBlur\"]))]),\n content: withCtx(() => [renderSlot(_ctx.$slots, \"default\", {\n visible: pickerVisible.value,\n actualVisible: pickerActualVisible.value,\n parsedValue: unref(parsedValue),\n format: _ctx.format,\n dateFormat: _ctx.dateFormat,\n timeFormat: _ctx.timeFormat,\n unlinkPanels: _ctx.unlinkPanels,\n type: _ctx.type,\n defaultValue: _ctx.defaultValue,\n showNow: _ctx.showNow,\n onPick,\n onSelectRange: setSelectionRange,\n onSetPickerOption,\n onCalendarChange,\n onPanelChange,\n onMousedown: withModifiers(() => {}, [\"stop\"])\n })]),\n _: 3\n }, 16, [\"visible\", \"transition\", \"popper-class\", \"popper-options\", \"fallback-placements\", \"placement\"]);\n };\n }\n});\nvar CommonPicker = /* @__PURE__ */_export_sfc(_sfc_main, [[\"__file\", \"picker.vue\"]]);\nexport { CommonPicker as default };","map":{"version":3,"names":["name","attrs","useAttrs","lang","useLocale","nsDate","useNamespace","nsInput","nsRange","form","formItem","useFormItem","elPopperOptions","inject","valueOnClear","useEmptyValues","props","refPopper","ref","inputRef","pickerVisible","pickerActualVisible","valueOnOpen","hasJustTabExitedInput","isFocused","handleFocus","handleBlur","useFocusController","beforeFocus","readonly","pickerDisabled","value","afterFocus","beforeBlur","event","_a","isFocusInsideContent","afterBlur","handleChange","validateEvent","validate","catch","err","debugWarn","rangeInputKls","computed","b","bm","type","e","is","pickerSize","class","clearIconKls","showClose","watch","val","userInput","nextTick","emitChange","modelValue","isClear","valueEquals","emit","emitInput","input","formatted","isArray","map","item","formatter","valueFormat","emitKeydown","refInput","Array","from","$el","querySelectorAll","setSelectionRange","start","end","pos","_inputs","length","focus","onPick","date","visible","result","_","toDate","onBeforeShow","onShow","onHide","handleOpen","handleClose","disabled","parsedValue","dayOrDays","valueIsEmpty","pickerOptions","getDefaultValue","d","parseDate","getRangeAvailableTime","availableResult","isEqual","dayOrDaysToDate","some","day","displayValue","panelReady","formattedValue","formatDayjsToString","isTimePicker","isDatesPicker","isMonthsPicker","isYearsPicker","join","isTimeLikePicker","includes","startsWith","triggerIcon","prefixIcon","Clock","Calendar","onClearIconClick","stopPropagation","handleClear","filter","Boolean","onMouseDownInput","target","tagName","onMouseEnter","clearable","onMouseLeave","onTouchStartInput","touches","isRangeInput","useFormSize","popperEl","_b","unref","popperRef","contentRef","stophandle","onClickOutside","unrefedPopperEl","inputEl","unrefElement","composedPath","onBeforeUnmount","parseUserInputToDayjs","isValidValue","parseUserInput","formatToString","handleKeydownInput","code","EVENT_CODE","esc","preventDefault","down","handleFocusPicker","tab","enter","numpadEnter","onUserInput","handleStartInput","handleEndInput","handleStartChange","values","parsedVal","isValid","newValue","handleEndChange","onSetPickerOption","onCalendarChange","onPanelChange","mode","view","blur","provide","expose","_ctx","_cache","openBlock","createBlock","ElTooltip","mergeProps","ref_key","effect","pure"],"sources":["../../../../../../../packages/components/time-picker/src/common/picker.vue"],"sourcesContent":["<template>\n <el-tooltip\n ref=\"refPopper\"\n :visible=\"pickerVisible\"\n effect=\"light\"\n pure\n trigger=\"click\"\n v-bind=\"$attrs\"\n role=\"dialog\"\n teleported\n :transition=\"`${nsDate.namespace.value}-zoom-in-top`\"\n :popper-class=\"[`${nsDate.namespace.value}-picker__popper`, popperClass]\"\n :popper-options=\"elPopperOptions\"\n :fallback-placements=\"fallbackPlacements\"\n :gpu-acceleration=\"false\"\n :placement=\"placement\"\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 as string | undefined)\"\n ref=\"inputRef\"\n container-role=\"combobox\"\n :model-value=\"(displayValue as string)\"\n :name=\"name\"\n :size=\"pickerSize\"\n :disabled=\"pickerDisabled\"\n :placeholder=\"placeholder\"\n :class=\"[nsDate.b('editor'), nsDate.bm('editor', type), $attrs.class]\"\n :style=\"$attrs.style\"\n :readonly=\"\n !editable ||\n readonly ||\n isDatesPicker ||\n isMonthsPicker ||\n isYearsPicker ||\n type === 'week'\n \"\n :aria-label=\"ariaLabel\"\n :tabindex=\"tabindex\"\n :validate-event=\"false\"\n @input=\"onUserInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @keydown=\"handleKeydownInput\"\n @change=\"handleChange\"\n @mousedown=\"onMouseDownInput\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @touchstart.passive=\"onTouchStartInput\"\n @click.stop\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n :class=\"nsInput.e('icon')\"\n @mousedown.prevent=\"onMouseDownInput\"\n @touchstart.passive=\"onTouchStartInput\"\n >\n <component :is=\"triggerIcon\" />\n </el-icon>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"showClose && clearIcon\"\n :class=\"`${nsInput.e('icon')} clear-icon`\"\n @mousedown.prevent=\"NOOP\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </el-input>\n <picker-range-trigger\n v-else\n :id=\"(id as string[] | undefined)\"\n ref=\"inputRef\"\n :model-value=\"displayValue\"\n :name=\"(name as string[] | undefined)\"\n :disabled=\"pickerDisabled\"\n :readonly=\"!editable || readonly\"\n :start-placeholder=\"startPlaceholder\"\n :end-placeholder=\"endPlaceholder\"\n :class=\"rangeInputKls\"\n :style=\"$attrs.style\"\n :aria-label=\"ariaLabel\"\n :tabindex=\"tabindex\"\n autocomplete=\"off\"\n role=\"combobox\"\n @click=\"onMouseDownInput\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n @start-input=\"handleStartInput\"\n @start-change=\"handleStartChange\"\n @end-input=\"handleEndInput\"\n @end-change=\"handleEndChange\"\n @mousedown=\"onMouseDownInput\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @touchstart.passive=\"onTouchStartInput\"\n @keydown=\"handleKeydownInput\"\n >\n <template #prefix>\n <el-icon\n v-if=\"triggerIcon\"\n :class=\"[nsInput.e('icon'), nsRange.e('icon')]\"\n >\n <component :is=\"triggerIcon\" />\n </el-icon>\n </template>\n <template #range-separator>\n <slot name=\"range-separator\">\n <span :class=\"nsRange.b('separator')\">{{ rangeSeparator }}</span>\n </slot>\n </template>\n <template #suffix>\n <el-icon\n v-if=\"clearIcon\"\n :class=\"clearIconKls\"\n @mousedown.prevent=\"NOOP\"\n @click=\"onClearIconClick\"\n >\n <component :is=\"clearIcon\" />\n </el-icon>\n </template>\n </picker-range-trigger>\n </template>\n <template #content>\n <slot\n :visible=\"pickerVisible\"\n :actual-visible=\"pickerActualVisible\"\n :parsed-value=\"parsedValue\"\n :format=\"format\"\n :date-format=\"dateFormat\"\n :time-format=\"timeFormat\"\n :unlink-panels=\"unlinkPanels\"\n :type=\"type\"\n :default-value=\"defaultValue\"\n :show-now=\"showNow\"\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\" setup>\nimport {\n computed,\n inject,\n nextTick,\n onBeforeUnmount,\n provide,\n ref,\n unref,\n useAttrs,\n watch,\n} from 'vue'\nimport { isEqual } from 'lodash-unified'\nimport { onClickOutside, unrefElement } from '@vueuse/core'\nimport {\n useEmptyValues,\n useFocusController,\n useLocale,\n useNamespace,\n} from '@element-plus/hooks'\nimport { useFormItem, useFormSize } from '@element-plus/components/form'\nimport ElInput from '@element-plus/components/input'\nimport ElIcon from '@element-plus/components/icon'\nimport ElTooltip from '@element-plus/components/tooltip'\nimport { NOOP, debugWarn, isArray } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { Calendar, Clock } from '@element-plus/icons-vue'\nimport { dayOrDaysToDate, formatter, parseDate, valueEquals } from '../utils'\nimport { timePickerDefaultProps } from './props'\nimport PickerRangeTrigger from './picker-range-trigger.vue'\nimport type { InputInstance } from '@element-plus/components/input'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance, Ref } from 'vue'\nimport type { Options } from '@popperjs/core'\nimport type {\n DateModelType,\n DayOrDays,\n PickerOptions,\n SingleOrRange,\n TimePickerDefaultProps,\n UserInput,\n} from './props'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\n\ndefineOptions({\n name: 'Picker',\n})\n\nconst props = defineProps(timePickerDefaultProps)\nconst emit = defineEmits([\n 'update:modelValue',\n 'change',\n 'focus',\n 'blur',\n 'clear',\n 'calendar-change',\n 'panel-change',\n 'visible-change',\n 'keydown',\n])\nconst attrs = useAttrs()\n\nconst { lang } = useLocale()\n\nconst nsDate = useNamespace('date')\nconst nsInput = useNamespace('input')\nconst nsRange = useNamespace('range')\n\nconst { form, formItem } = useFormItem()\nconst elPopperOptions = inject('ElPopperOptions', {} as Options)\nconst { valueOnClear } = useEmptyValues(props, null)\n\nconst refPopper = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst pickerVisible = ref(false)\nconst pickerActualVisible = ref(false)\nconst valueOnOpen = ref<TimePickerDefaultProps['modelValue'] | null>(null)\nlet hasJustTabExitedInput = false\n\nconst { isFocused, handleFocus, handleBlur } = useFocusController(inputRef, {\n beforeFocus() {\n return props.readonly || pickerDisabled.value\n },\n afterFocus() {\n pickerVisible.value = true\n },\n beforeBlur(event) {\n return (\n !hasJustTabExitedInput && refPopper.value?.isFocusInsideContent(event)\n )\n },\n afterBlur() {\n handleChange()\n pickerVisible.value = false\n hasJustTabExitedInput = false\n props.validateEvent &&\n formItem?.validate('blur').catch((err) => debugWarn(err))\n },\n})\n\nconst rangeInputKls = computed(() => [\n nsDate.b('editor'),\n nsDate.bm('editor', props.type),\n nsInput.e('wrapper'),\n nsDate.is('disabled', pickerDisabled.value),\n nsDate.is('active', pickerVisible.value),\n nsRange.b('editor'),\n pickerSize ? nsRange.bm('editor', pickerSize.value) : '',\n attrs.class,\n])\n\nconst clearIconKls = computed(() => [\n nsInput.e('icon'),\n nsRange.e('close-icon'),\n !showClose.value ? nsRange.e('close-icon--hidden') : '',\n])\n\nwatch(pickerVisible, (val) => {\n if (!val) {\n userInput.value = null\n nextTick(() => {\n emitChange(props.modelValue)\n })\n } else {\n nextTick(() => {\n if (val) {\n valueOnOpen.value = props.modelValue\n }\n })\n }\n})\nconst emitChange = (\n val: TimePickerDefaultProps['modelValue'] | null,\n isClear?: boolean\n) => {\n // determine user real change only\n if (isClear || !valueEquals(val, valueOnOpen.value)) {\n emit('change', val)\n props.validateEvent &&\n formItem?.validate('change').catch((err) => debugWarn(err))\n }\n}\nconst 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 emit('update:modelValue', input ? formatted : input, lang.value)\n }\n}\nconst emitKeydown = (e: KeyboardEvent) => {\n emit('keydown', e)\n}\n\nconst refInput = computed<HTMLInputElement[]>(() => {\n if (inputRef.value) {\n return Array.from<HTMLInputElement>(\n inputRef.value.$el.querySelectorAll('input')\n )\n }\n return []\n})\n\n// @ts-ignore\nconst setSelectionRange = (start: number, end: number, pos?: 'min' | 'max') => {\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\nconst 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\nconst onBeforeShow = () => {\n pickerActualVisible.value = true\n}\n\nconst onShow = () => {\n emit('visible-change', true)\n}\n\nconst onHide = () => {\n pickerActualVisible.value = false\n pickerVisible.value = false\n emit('visible-change', false)\n}\n\nconst handleOpen = () => {\n pickerVisible.value = true\n}\n\nconst handleClose = () => {\n pickerVisible.value = false\n}\n\nconst pickerDisabled = computed(() => {\n return props.disabled || form?.disabled\n})\n\nconst 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(props.modelValue, props.valueFormat, lang.value)!\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\nconst displayValue = computed<UserInput>(() => {\n if (!pickerOptions.value.panelReady) return ''\n const formattedValue = formatDayjsToString(parsedValue.value)\n if (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 || isMonthsPicker.value || isYearsPicker.value\n ? (formattedValue as Array<string>).join(', ')\n : formattedValue\n }\n return ''\n})\n\nconst isTimeLikePicker = computed(() => props.type.includes('time'))\n\nconst isTimePicker = computed(() => props.type.startsWith('time'))\n\nconst isDatesPicker = computed(() => props.type === 'dates')\n\nconst isMonthsPicker = computed(() => props.type === 'months')\n\nconst isYearsPicker = computed(() => props.type === 'years')\n\nconst triggerIcon = computed(\n () => props.prefixIcon || (isTimeLikePicker.value ? Clock : Calendar)\n)\n\nconst showClose = ref(false)\n\nconst onClearIconClick = (event: MouseEvent) => {\n if (props.readonly || pickerDisabled.value) return\n if (showClose.value) {\n event.stopPropagation()\n // When the handleClear Function was provided, emit null will be executed inside it\n // There is no need for us to execute emit null twice. #14752\n if (pickerOptions.value.handleClear) {\n pickerOptions.value.handleClear()\n } else {\n emitInput(valueOnClear.value)\n }\n emitChange(valueOnClear.value, true)\n showClose.value = false\n onHide()\n }\n emit('clear')\n}\n\nconst valueIsEmpty = computed(() => {\n const { modelValue } = props\n return (\n !modelValue || (isArray(modelValue) && !modelValue.filter(Boolean).length)\n )\n})\n\nconst onMouseDownInput = async (event: MouseEvent) => {\n if (props.readonly || pickerDisabled.value) return\n if ((event.target as HTMLElement)?.tagName !== 'INPUT' || isFocused.value) {\n pickerVisible.value = true\n }\n}\nconst onMouseEnter = () => {\n if (props.readonly || pickerDisabled.value) return\n if (!valueIsEmpty.value && props.clearable) {\n showClose.value = true\n }\n}\nconst onMouseLeave = () => {\n showClose.value = false\n}\n\nconst onTouchStartInput = (event: TouchEvent) => {\n if (props.readonly || pickerDisabled.value) return\n if (\n (event.touches[0].target as HTMLElement)?.tagName !== 'INPUT' ||\n isFocused.value\n ) {\n pickerVisible.value = true\n }\n}\n\nconst isRangeInput = computed(() => {\n return props.type.includes('range')\n})\n\nconst pickerSize = useFormSize()\n\nconst popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\n\nconst stophandle = onClickOutside(\n inputRef as Ref<ComponentPublicInstance>,\n (e: PointerEvent) => {\n const unrefedPopperEl = unref(popperEl)\n const inputEl = unrefElement(inputRef as Ref<ComponentPublicInstance>)\n if (\n (unrefedPopperEl &&\n (e.target === unrefedPopperEl ||\n e.composedPath().includes(unrefedPopperEl))) ||\n e.target === inputEl ||\n (inputEl && e.composedPath().includes(inputEl))\n )\n return\n pickerVisible.value = false\n }\n)\n\nonBeforeUnmount(() => {\n stophandle?.()\n})\n\nconst userInput = ref<UserInput>(null)\n\nconst handleChange = () => {\n if (userInput.value) {\n const value = parseUserInputToDayjs(displayValue.value)\n if (value) {\n if (isValidValue(value)) {\n emitInput(dayOrDaysToDate(value))\n userInput.value = null\n }\n }\n }\n if (userInput.value === '') {\n emitInput(valueOnClear.value)\n emitChange(valueOnClear.value)\n userInput.value = null\n }\n}\n\nconst parseUserInputToDayjs = (value: UserInput) => {\n if (!value) return null\n return pickerOptions.value.parseUserInput!(value)\n}\n\nconst formatDayjsToString = (value: DayOrDays) => {\n if (!value) return null\n return pickerOptions.value.formatToString!(value)\n}\n\nconst isValidValue = (value: DayOrDays) => {\n return pickerOptions.value.isValidValue!(value)\n}\n\nconst handleKeydownInput = async (event: Event | KeyboardEvent) => {\n if (props.readonly || pickerDisabled.value) return\n\n const { code } = event as KeyboardEvent\n emitKeydown(event as KeyboardEvent)\n if (code === EVENT_CODE.esc) {\n if (pickerVisible.value === true) {\n pickerVisible.value = false\n event.preventDefault()\n event.stopPropagation()\n }\n return\n }\n\n if (code === EVENT_CODE.down) {\n if (pickerOptions.value.handleFocusPicker) {\n event.preventDefault()\n event.stopPropagation()\n }\n if (pickerVisible.value === false) {\n pickerVisible.value = true\n await nextTick()\n }\n if (pickerOptions.value.handleFocusPicker) {\n pickerOptions.value.handleFocusPicker()\n return\n }\n }\n\n if (code === EVENT_CODE.tab) {\n hasJustTabExitedInput = true\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) as DayOrDays)\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 if (pickerOptions.value.handleKeydownInput) {\n pickerOptions.value.handleKeydownInput(event as KeyboardEvent)\n }\n}\nconst onUserInput = (e: string) => {\n userInput.value = e\n // Temporary fix when the picker is dismissed and the input box\n // is focused, just mimic the behavior of antdesign.\n if (!pickerVisible.value) {\n pickerVisible.value = true\n }\n}\n\nconst handleStartInput = (event: Event) => {\n const target = event.target as HTMLInputElement\n if (userInput.value) {\n userInput.value = [target.value, userInput.value[1]]\n } else {\n userInput.value = [target.value, null]\n }\n}\n\nconst handleEndInput = (event: Event) => {\n const target = event.target as HTMLInputElement\n if (userInput.value) {\n userInput.value = [userInput.value[0], target.value]\n } else {\n userInput.value = [null, target.value]\n }\n}\n\nconst handleStartChange = () => {\n const values = userInput.value as string[]\n const value = parseUserInputToDayjs(values && values[0]) as Dayjs\n const parsedVal = unref(parsedValue) as [Dayjs, Dayjs]\n if (value && value.isValid()) {\n userInput.value = [\n formatDayjsToString(value) as string,\n displayValue.value?.[1] || null,\n ]\n const newValue = [value, parsedVal && (parsedVal[1] || null)] as DayOrDays\n if (isValidValue(newValue)) {\n emitInput(dayOrDaysToDate(newValue))\n userInput.value = null\n }\n }\n}\n\nconst handleEndChange = () => {\n const values = unref(userInput) as string[]\n const value = parseUserInputToDayjs(values && values[1]) as Dayjs\n const parsedVal = unref(parsedValue) as [Dayjs, Dayjs]\n if (value && value.isValid()) {\n userInput.value = [\n unref(displayValue)?.[0] || null,\n formatDayjsToString(value) as string,\n ]\n const newValue = [parsedVal && parsedVal[0], value] as DayOrDays\n if (isValidValue(newValue)) {\n emitInput(dayOrDaysToDate(newValue))\n userInput.value = null\n }\n }\n}\n\nconst pickerOptions = ref<Partial<PickerOptions>>({})\n// @ts-ignore\nconst 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// @ts-ignore\nconst onCalendarChange = (e: [Date, null | Date]) => {\n emit('calendar-change', e)\n}\n\n// @ts-ignore\nconst onPanelChange = (\n value: [Dayjs, Dayjs],\n mode: 'month' | 'year',\n view: unknown\n) => {\n emit('panel-change', value, mode, view)\n}\n\nconst focus = () => {\n inputRef.value?.focus()\n}\n\nconst blur = () => {\n inputRef.value?.blur()\n}\n\nprovide('EP_PICKER_BASE', {\n props,\n})\n\ndefineExpose({\n /**\n * @description focus input box.\n */\n focus,\n /**\n * @description blur input box.\n */\n blur,\n /**\n * @description opens picker\n */\n handleOpen,\n /**\n * @description closes picker\n */\n handleClose,\n /**\n * @description pick item manually\n */\n onPick,\n})\n</script>\n"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}