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.

0 lines
57 KiB

1 month ago
  1. {"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