{"version":3,"file":"picker.vue2.mjs","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-style=\"popperStyle\"\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=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          id as string\n        \"\n        ref=\"inputRef\"\n        container-role=\"combobox\"\n        :model-value=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          displayValue as string\n        \"\n        :name=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          name as string\n        \"\n        :size=\"pickerSize\"\n        :disabled=\"pickerDisabled\"\n        :placeholder=\"placeholder\"\n        :class=\"[\n          nsDate.b('editor'),\n          nsDate.bm('editor', type),\n          nsDate.is('focus', pickerVisible),\n          $attrs.class,\n        ]\"\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=\"showClearBtn && clearIcon\"\n            :class=\"`${nsInput.e('icon')} clear-icon`\"\n            @mousedown.prevent=\"NOOP\"\n            @click=\"onClear\"\n          >\n            <component :is=\"clearIcon\" />\n          </el-icon>\n        </template>\n      </el-input>\n      <picker-range-trigger\n        v-else\n        :id=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          id as string[]\n        \"\n        ref=\"inputRef\"\n        :model-value=\"displayValue\"\n        :name=\"\n          // https://github.com/vuejs/language-tools/issues/2104#issuecomment-3092541527\n          name as string[]\n        \"\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=\"onClear\"\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        :show-confirm=\"showConfirm\"\n        :show-footer=\"showFooter\"\n        :show-week-number=\"showWeekNumber\"\n        @pick=\"onPick\"\n        @select-range=\"setSelectionRange\"\n        @set-picker-option=\"onSetPickerOption\"\n        @calendar-change=\"onCalendarChange\"\n        @clear=\"onClear\"\n        @panel-change=\"onPanelChange\"\n        @mousedown.stop\n      />\n    </template>\n  </el-tooltip>\n</template>\n\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 { onClickOutside, unrefElement } from '@vueuse/core'\nimport {\n  useEmptyValues,\n  useFocusController,\n  useNamespace,\n} from '@element-plus/hooks'\nimport {\n  useFormDisabled,\n  useFormItem,\n  useFormSize,\n} 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, getEventCode, isArray } from '@element-plus/utils'\nimport {\n  CHANGE_EVENT,\n  EVENT_CODE,\n  UPDATE_MODEL_EVENT,\n} from '@element-plus/constants'\nimport { Calendar, Clock } from '@element-plus/icons-vue'\nimport { dayOrDaysToDate, valueEquals } from '../utils'\nimport {\n  PICKER_BASE_INJECTION_KEY,\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n  ROOT_COMMON_PICKER_INJECTION_KEY,\n} from '../constants'\nimport { useCommonPicker } from '../composables/use-common-picker'\nimport { timePickerDefaultProps } from './props'\nimport PickerRangeTrigger from './picker-range-trigger.vue'\n\nimport type { InputInstance } from '@element-plus/components/input'\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance, Ref } from 'vue'\nimport type { Options } from '@popperjs/core'\nimport type { DayOrDays, TimePickerDefaultProps, UserInput } 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_MODEL_EVENT,\n  CHANGE_EVENT,\n  'focus',\n  'blur',\n  'clear',\n  'calendar-change',\n  'panel-change',\n  'visible-change',\n  'keydown',\n])\nconst attrs = useAttrs()\n\nconst nsDate = useNamespace('date')\nconst nsInput = useNamespace('input')\nconst nsRange = useNamespace('range')\n\nconst { formItem } = useFormItem()\nconst elPopperOptions = inject(\n  PICKER_POPPER_OPTIONS_INJECTION_KEY,\n  {} as Options\n)\nconst emptyValues = useEmptyValues(props, null)\n\nconst refPopper = ref<TooltipInstance>()\nconst inputRef = ref<InputInstance>()\nconst valueOnOpen = ref<TimePickerDefaultProps['modelValue'] | null>(null)\nlet hasJustTabExitedInput = false\n\nconst pickerDisabled = useFormDisabled()\n\nconst commonPicker = useCommonPicker(props, emit)\nconst {\n  parsedValue,\n  pickerActualVisible,\n  userInput,\n  pickerVisible,\n  pickerOptions,\n  valueIsEmpty,\n  emitInput,\n  onPick,\n  onSetPickerOption,\n  onCalendarChange,\n  onPanelChange,\n} = commonPicker\n\nconst { isFocused, handleFocus, handleBlur } = useFocusController(inputRef, {\n  disabled: pickerDisabled,\n  beforeFocus() {\n    return props.readonly\n  },\n  afterFocus() {\n    if (!props.automaticDropdown) return\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 hovering = ref(false)\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  !showClearBtn.value ? nsRange.em('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_EVENT, val)\n    // Set the value of valueOnOpen when clearing to avoid triggering change events multiple times.\n    isClear && (valueOnOpen.value = val)\n    props.validateEvent &&\n      formItem?.validate('change').catch((err) => debugWarn(err))\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 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 displayValue = computed<UserInput>(() => {\n  const formattedValue = formatToString(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 showClearBtn = computed(\n  () =>\n    props.clearable &&\n    !pickerDisabled.value &&\n    !props.readonly &&\n    !valueIsEmpty.value &&\n    (hovering.value || isFocused.value)\n)\n\nconst onClear = (event?: MouseEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (showClearBtn.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(emptyValues.valueOnClear.value)\n    }\n    emitChange(emptyValues.valueOnClear.value, true)\n    onHide()\n  }\n  emit('clear')\n}\n\nconst onMouseDownInput = async (event: MouseEvent) => {\n  if (props.readonly || pickerDisabled.value) return\n  if (\n    (event.target as HTMLElement)?.tagName !== 'INPUT' ||\n    isFocused.value ||\n    !props.automaticDropdown\n  ) {\n    pickerVisible.value = true\n  }\n}\nconst onMouseEnter = () => {\n  if (props.readonly || pickerDisabled.value) return\n  if (!valueIsEmpty.value && props.clearable) {\n    hovering.value = true\n  }\n}\nconst onMouseLeave = () => {\n  hovering.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    !props.automaticDropdown\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 handleChange = () => {\n  if (userInput.value) {\n    const value = parseUserInputToDayjs(displayValue.value)\n    if (value) {\n      if (isValidValue(value)) {\n        emitInput(dayOrDaysToDate(value))\n      }\n      userInput.value = null\n    }\n  }\n  if (userInput.value === '') {\n    emitInput(emptyValues.valueOnClear.value)\n    emitChange(emptyValues.valueOnClear.value, true)\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 formatToString = (value: DayOrDays) => {\n  if (!value) return null\n  const res = isArray(value)\n    ? value.map((_) => _.format(props.format))\n    : value.format(props.format)\n  return res as UserInput\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 = getEventCode(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 (!pickerVisible.value) {\n      pickerVisible.value = true\n    } else 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.preventDefault()\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      formatToString(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      formatToString(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 focus = () => {\n  inputRef.value?.focus()\n}\n\nconst blur = () => {\n  inputRef.value?.blur()\n}\n\nprovide(PICKER_BASE_INJECTION_KEY, {\n  props,\n  emptyValues,\n})\nprovide(ROOT_COMMON_PICKER_INJECTION_KEY, commonPicker)\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"],"names":["_openBlock","_createBlock","_unref","_mergeProps","$attrs","popperClass","popperStyle","fallbackPlacements","placement","id","name","placeholder","_normalizeClass","type","_normalizeStyle","editable","readonly","ariaLabel","tabindex","_resolveDynamicComponent","clearIcon","PickerRangeTrigger","startPlaceholder","endPlaceholder","_renderSlot","_createElementVNode","rangeSeparator","format","dateFormat","timeFormat","unlinkPanels","defaultValue","showNow","showConfirm","showFooter","showWeekNumber"],"mappings":"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"}