{"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=\"el-zoom-in-top\"\n    :popper-class=\"`el-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=\"el-date-editor\"\n        :class=\"['el-date-editor--' + type, $attrs.class || undefined]\"\n        :style=\"$attrs.style || undefined\"\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=\"el-input__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=\"el-input__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=\"el-date-editor el-range-editor el-input__inner\"\n        :class=\"[\n          'el-date-editor--' + type,\n          pickerSize ? `el-range-editor--${pickerSize}` : '',\n          pickerDisabled ? 'is-disabled' : '',\n          pickerVisible ? 'is-active' : '',\n          $attrs.class || undefined,\n        ]\"\n        :style=\"$attrs.style || undefined\"\n        @click=\"handleFocus\"\n        @mouseenter=\"onMouseEnter\"\n        @mouseleave=\"onMouseLeave\"\n        @keydown=\"handleKeydown\"\n      >\n        <el-icon\n          v-if=\"triggerIcon\"\n          class=\"el-input__icon el-range__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=\"el-range-input\"\n          @input=\"handleStartInput\"\n          @change=\"handleStartChange\"\n          @focus=\"handleFocus\"\n        />\n        <slot name=\"range-separator\">\n          <span class=\"el-range-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=\"el-range-input\"\n          @focus=\"handleFocus\"\n          @input=\"handleEndInput\"\n          @change=\"handleEndChange\"\n        />\n        <el-icon\n          v-if=\"clearIcon\"\n          class=\"el-input__icon el-range__close-icon\"\n          :class=\"{\n            'el-range__close-icon--hidden': !showClose,\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  defineComponent,\n  ref,\n  computed,\n  nextTick,\n  inject,\n  watch,\n  provide,\n  unref,\n} from 'vue'\nimport dayjs from 'dayjs'\nimport { isEqual } from 'lodash-unified'\nimport { onClickOutside } from '@vueuse/core'\nimport { useLocale, 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 { Clock, Calendar } 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 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      // 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","_resolveDynamicComponent","_createCommentVNode","_createElementBlock","_normalizeStyle","_createElementVNode","_renderSlot","_toDisplayString"],"mappings":"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"}