UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 45 kB
{"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=\"`${nsDate.namespace.value}-zoom-in-top`\"\n :popper-class=\"[`${nsDate.namespace.value}-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=\"[nsDate.b('editor'), nsDate.bm('editor', type), $attrs.class]\"\n :style=\"$attrs.style\"\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=\"nsInput.e('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=\"`${nsInput.e('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=\"[\n nsDate.b('editor'),\n nsDate.bm('editor', type),\n nsInput.e('inner'),\n nsDate.is('disabled', pickerDisabled),\n nsDate.is('active', pickerVisible),\n nsRange.b('editor'),\n pickerSize ? nsRange.bm('editor', pickerSize) : '',\n $attrs.class,\n ]\"\n :style=\"$attrs.style\"\n @click=\"handleFocus\"\n @mouseenter=\"onMouseEnter\"\n @mouseleave=\"onMouseLeave\"\n @keydown=\"handleKeydown\"\n >\n <el-icon\n v-if=\"triggerIcon\"\n :class=\"[nsInput.e('icon'), nsRange.e('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=\"nsRange.b('input')\"\n @input=\"handleStartInput\"\n @change=\"handleStartChange\"\n @focus=\"handleFocus\"\n />\n <slot name=\"range-separator\">\n <span :class=\"nsRange.b('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=\"nsRange.b('input')\"\n @focus=\"handleFocus\"\n @input=\"handleEndInput\"\n @change=\"handleEndChange\"\n />\n <el-icon\n v-if=\"clearIcon\"\n :class=\"[\n nsInput.e('icon'),\n nsRange.e('close-icon'),\n {\n [nsRange.e('close-icon--hidden')]: !showClose,\n },\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 computed,\n defineComponent,\n inject,\n nextTick,\n provide,\n ref,\n unref,\n watch,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport { isEqual } from 'lodash-unified'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, useNamespace, 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 { Calendar, Clock } 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 nsDate = useNamespace('date')\n const nsInput = useNamespace('input')\n const nsRange = useNamespace('range')\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 nsDate,\n nsInput,\n nsRange,\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","_createCommentVNode","_resolveDynamicComponent","_createElementBlock","_normalizeStyle","_createElementVNode","_renderSlot","_toDisplayString"],"mappings":"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"}