{"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    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=\"['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 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=\"!editable || readonly || isDatesPicker || type === 'week'\"\n        :label=\"label\"\n        :tabindex=\"tabindex\"\n        :validate-event=\"validateEvent\"\n        @input=\"onUserInput\"\n        @focus=\"handleFocusInput\"\n        @blur=\"handleBlurInput\"\n        @keydown=\"\n          //\n          handleKeydownInput as any\n        \"\n        @change=\"handleChange\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart=\"onTouchStartInput\"\n        @click.stop\n      >\n        <template #prefix>\n          <el-icon\n            v-if=\"triggerIcon\"\n            :class=\"nsInput.e('icon')\"\n            @mousedown=\"onMouseDownInput\"\n            @touchstart=\"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            @click.stop=\"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('wrapper'),\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 as any)\"\n        @click=\"handleFocusInput\"\n        @mousedown=\"onMouseDownInput\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @touchstart=\"onTouchStartInput\"\n        @keydown=\"handleKeydownInput\"\n      >\n        <el-icon\n          v-if=\"triggerIcon\"\n          :class=\"[nsInput.e('icon'), nsRange.e('icon')]\"\n          @mousedown=\"onMouseDownInput\"\n          @touchstart=\"onTouchStartInput\"\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=\"handleFocusInput\"\n          @blur=\"handleBlurInput\"\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=\"handleFocusInput\"\n          @blur=\"handleBlurInput\"\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        @keydown=\"onKeydownPopperContent\"\n        @mousedown.stop\n      />\n    </template>\n  </el-tooltip>\n</template>\n<script lang=\"ts\" setup>\nimport { computed, inject, nextTick, provide, ref, unref, watch } from 'vue'\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, isArray } from '@element-plus/utils'\nimport { EVENT_CODE } from '@element-plus/constants'\nimport { Calendar, Clock } from '@element-plus/icons-vue'\nimport { formatter, parseDate, valueEquals } from '../utils'\nimport { timePickerDefaultProps } from './props'\n\nimport type { Dayjs } from 'dayjs'\nimport type { ComponentPublicInstance } from 'vue'\nimport type { Options } from '@popperjs/core'\nimport type { FormContext, FormItemContext } from '@element-plus/tokens'\nimport type {\n  DateModelType,\n  DateOrDates,\n  DayOrDays,\n  PickerOptions,\n  SingleOrRange,\n  TimePickerDefaultProps,\n  UserInput,\n} from './props'\nimport type { TooltipInstance } from '@element-plus/components/tooltip'\n\n// Date object and string\n\ndefineOptions({\n  name: 'Picker',\n})\n\nconst props = defineProps(timePickerDefaultProps)\nconst emit = defineEmits([\n  'update:modelValue',\n  'change',\n  'focus',\n  'blur',\n  'calendar-change',\n  'panel-change',\n  'visible-change',\n  'keydown',\n])\n\nconst { lang } = useLocale()\n\nconst nsDate = useNamespace('date')\nconst nsInput = useNamespace('input')\nconst nsRange = useNamespace('range')\n\nconst elForm = inject(formContextKey, {} as FormContext)\nconst elFormItem = inject(formItemContextKey, {} as FormItemContext)\nconst elPopperOptions = inject('ElPopperOptions', {} as Options)\n\nconst refPopper = ref<TooltipInstance>()\nconst inputRef = ref<HTMLElement | ComponentPublicInstance>()\nconst pickerVisible = ref(false)\nconst pickerActualVisible = ref(false)\nconst valueOnOpen = ref<TimePickerDefaultProps['modelValue'] | null>(null)\n\nlet hasJustTabExitedInput = false\nlet ignoreFocusEvent = false\n\nwatch(pickerVisible, (val) => {\n  if (!val) {\n    userInput.value = null\n    nextTick(() => {\n      emitChange(props.modelValue)\n    })\n  } else {\n    valueOnOpen.value = props.modelValue\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      elFormItem.validate?.('change').catch((err) => debugWarn(err))\n  }\n}\nconst emitInput = (input: SingleOrRange<DateModelType | Dayjs> | 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    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\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}\nconst focusOnInputBox = () => {\n  focus(true, true)\n  nextTick(() => {\n    ignoreFocusEvent = false\n  })\n}\n\nconst onPick = (date: any = '', visible = false) => {\n  if (!visible) {\n    focusOnInputBox()\n  }\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 onKeydownPopperContent = (event: KeyboardEvent) => {\n  if ((event as KeyboardEvent)?.key === EVENT_CODE.esc) {\n    focus(true, true)\n  }\n}\n\nconst onHide = () => {\n  pickerActualVisible.value = false\n  ignoreFocusEvent = false\n  emit('visible-change', false)\n}\n\nconst focus = (focusStartInput = true, isIgnoreFocusEvent = false) => {\n  ignoreFocusEvent = isIgnoreFocusEvent\n  const [leftInput, rightInput] = unref(refInput)\n  let input = leftInput\n  if (!focusStartInput && isRangeInput.value) {\n    input = rightInput\n  }\n  if (input) {\n    input.focus()\n  }\n}\n\nconst handleFocusInput = (e?: FocusEvent) => {\n  if (\n    props.readonly ||\n    pickerDisabled.value ||\n    pickerVisible.value ||\n    ignoreFocusEvent\n  ) {\n    return\n  }\n  pickerVisible.value = true\n  emit('focus', e)\n}\n\nlet currentHandleBlurDeferCallback:\n  | (() => Promise<void> | undefined)\n  | undefined = undefined\n\n// Check if document.activeElement is inside popper or any input before popper close\nconst handleBlurInput = (e?: FocusEvent) => {\n  const handleBlurDefer = async () => {\n    setTimeout(() => {\n      if (currentHandleBlurDeferCallback === handleBlurDefer) {\n        if (\n          !(\n            refPopper.value?.isFocusInsideContent() && !hasJustTabExitedInput\n          ) &&\n          refInput.value.filter((input) => {\n            return input.contains(document.activeElement)\n          }).length === 0\n        ) {\n          handleChange()\n          pickerVisible.value = false\n          emit('blur', e)\n          props.validateEvent &&\n            elFormItem.validate?.('blur').catch((err) => debugWarn(err))\n        }\n        hasJustTabExitedInput = false\n      }\n    }, 0)\n  }\n  currentHandleBlurDeferCallback = handleBlurDefer\n  handleBlurDefer()\n}\n\nconst pickerDisabled = computed(() => {\n  return props.disabled || elForm.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      emitInput(\n        (isArray(dayOrDays)\n          ? dayOrDays.map((_) => _.toDate())\n          : dayOrDays.toDate()) as SingleOrRange<Date>\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\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 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    focusOnInputBox()\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\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 (\n    (event.target as HTMLElement)?.tagName !== 'INPUT' ||\n    refInput.value.includes(document.activeElement as HTMLInputElement)\n  ) {\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}\nconst onTouchStartInput = (event: TouchEvent) => {\n  if (\n    (event.touches[0].target as HTMLElement)?.tagName !== 'INPUT' ||\n    refInput.value.includes(document.activeElement as HTMLInputElement)\n  ) {\n    pickerVisible.value = true\n  }\n}\nconst isRangeInput = computed(() => {\n  return props.type.includes('range')\n})\n\nconst pickerSize = useSize()\n\nconst popperEl = computed(() => unref(refPopper)?.popperRef?.contentRef)\nconst actualInputRef = computed(() => {\n  if (unref(isRangeInput)) {\n    return unref(inputRef)\n  }\n\n  return (unref(inputRef) as ComponentPublicInstance)?.$el\n})\n\nonClickOutside(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\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(\n          (isArray(value)\n            ? value.map((_) => _.toDate())\n            : value.toDate()) as DateOrDates\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\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: KeyboardEvent) => {\n  const { code } = 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\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)\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(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(newValue)\n      userInput.value = null\n    }\n  }\n}\n\nconst pickerOptions = ref<Partial<PickerOptions>>({})\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\nconst onCalendarChange = (e: [Date, false | Date]) => {\n  emit('calendar-change', e)\n}\n\nconst onPanelChange = (\n  value: [Dayjs, Dayjs],\n  mode: 'month' | 'year',\n  view: unknown\n) => {\n  emit('panel-change', value, mode, view)\n}\n\nprovide('EP_PICKER_BASE', {\n  props,\n})\n\ndefineExpose({\n  /**\n   * @description focus input box.\n   */\n  focus,\n  /**\n   * @description emit focus event\n   */\n  handleFocusInput,\n  /**\n   * @description emit blur event\n   */\n  handleBlurInput,\n  /**\n   * @description pick item manually\n   */\n  onPick,\n})\n</script>\n"],"names":[],"mappings":"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"}