{"version":3,"file":"select.mjs","sources":["../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"selectWrapper\"\n    v-click-outside:[popperPaneRef]=\"handleClose\"\n    :class=\"wrapperKls\"\n    @click.stop=\"toggleMenu\"\n  >\n    <el-tooltip\n      ref=\"tooltipRef\"\n      v-model:visible=\"dropMenuVisible\"\n      placement=\"bottom-start\"\n      :teleported=\"compatTeleported\"\n      :popper-class=\"[nsSelect.e('popper'), popperClass]\"\n      :fallback-placements=\"['bottom-start', 'top-start', 'right', 'left']\"\n      :effect=\"effect\"\n      pure\n      trigger=\"click\"\n      :transition=\"`${nsSelect.namespace.value}-zoom-in-top`\"\n      :stop-popper-mouse-event=\"false\"\n      :gpu-acceleration=\"false\"\n      persistent\n      @show=\"handleMenuEnter\"\n    >\n      <template #default>\n        <div class=\"select-trigger\">\n          <div\n            v-if=\"multiple\"\n            ref=\"tags\"\n            :class=\"nsSelect.e('tags')\"\n            :style=\"selectTagsStyle\"\n          >\n            <span v-if=\"collapseTags && selected.length\">\n              <el-tag\n                :closable=\"!selectDisabled && !selected[0].isDisabled\"\n                :size=\"collapseTagSize\"\n                :hit=\"selected[0].hitState\"\n                :type=\"tagType\"\n                disable-transitions\n                @close=\"deleteTag($event, selected[0])\"\n              >\n                <span\n                  :class=\"nsSelect.e('tags-text')\"\n                  :style=\"{ maxWidth: inputWidth - 123 + 'px' }\"\n                  >{{ selected[0].currentLabel }}</span\n                >\n              </el-tag>\n              <el-tag\n                v-if=\"selected.length > 1\"\n                :closable=\"false\"\n                :size=\"collapseTagSize\"\n                :type=\"tagType\"\n                disable-transitions\n              >\n                <span :class=\"nsSelect.e('tags-text')\"\n                  >+ {{ selected.length - 1 }}</span\n                >\n              </el-tag>\n            </span>\n            <!-- <div> -->\n            <transition v-if=\"!collapseTags\" @after-leave=\"resetInputHeight\">\n              <span\n                :style=\"{\n                  marginLeft:\n                    prefixWidth && selected.length ? `${prefixWidth}px` : '',\n                }\"\n              >\n                <el-tag\n                  v-for=\"item in selected\"\n                  :key=\"getValueKey(item)\"\n                  :closable=\"!selectDisabled && !item.isDisabled\"\n                  :size=\"collapseTagSize\"\n                  :hit=\"item.hitState\"\n                  :type=\"tagType\"\n                  disable-transitions\n                  @close=\"deleteTag($event, item)\"\n                >\n                  <span\n                    :class=\"nsSelect.e('tags-text')\"\n                    :style=\"{ maxWidth: inputWidth - 75 + 'px' }\"\n                    >{{ item.currentLabel }}</span\n                  >\n                </el-tag>\n              </span>\n            </transition>\n            <!-- </div> -->\n            <input\n              v-if=\"filterable\"\n              ref=\"input\"\n              v-model=\"query\"\n              type=\"text\"\n              :class=\"[nsSelect.e('input'), nsSelect.is(selectSize)]\"\n              :disabled=\"selectDisabled\"\n              :autocomplete=\"autocomplete\"\n              :style=\"{\n                marginLeft:\n                  (prefixWidth && !selected.length) || tagInMultiLine\n                    ? `${prefixWidth}px`\n                    : '',\n                flexGrow: 1,\n                width: `${inputLength / (inputWidth - 32)}%`,\n                maxWidth: `${inputWidth - 42}px`,\n              }\"\n              @focus=\"handleFocus\"\n              @blur=\"handleBlur\"\n              @keyup=\"managePlaceholder\"\n              @keydown=\"resetInputState\"\n              @keydown.down.prevent=\"navigateOptions('next')\"\n              @keydown.up.prevent=\"navigateOptions('prev')\"\n              @keydown.esc.stop.prevent=\"visible = false\"\n              @keydown.enter.stop.prevent=\"selectOption\"\n              @keydown.delete=\"deletePrevTag\"\n              @keydown.tab=\"visible = false\"\n              @compositionstart=\"handleComposition\"\n              @compositionupdate=\"handleComposition\"\n              @compositionend=\"handleComposition\"\n              @input=\"debouncedQueryChange\"\n            />\n          </div>\n          <el-input\n            :id=\"id\"\n            ref=\"reference\"\n            v-model=\"selectedLabel\"\n            type=\"text\"\n            :placeholder=\"currentPlaceholder\"\n            :name=\"name\"\n            :autocomplete=\"autocomplete\"\n            :size=\"selectSize\"\n            :disabled=\"selectDisabled\"\n            :readonly=\"readonly\"\n            :validate-event=\"false\"\n            :class=\"[nsSelect.is('focus', visible)]\"\n            :tabindex=\"multiple && filterable ? -1 : undefined\"\n            @focus=\"handleFocus\"\n            @blur=\"handleBlur\"\n            @input=\"debouncedOnInputChange\"\n            @paste=\"debouncedOnInputChange\"\n            @compositionstart=\"handleComposition\"\n            @compositionupdate=\"handleComposition\"\n            @compositionend=\"handleComposition\"\n            @keydown.down.stop.prevent=\"navigateOptions('next')\"\n            @keydown.up.stop.prevent=\"navigateOptions('prev')\"\n            @keydown.enter.stop.prevent=\"selectOption\"\n            @keydown.esc.stop.prevent=\"visible = false\"\n            @keydown.tab=\"visible = false\"\n            @mouseenter=\"inputHovering = true\"\n            @mouseleave=\"inputHovering = false\"\n          >\n            <template v-if=\"$slots.prefix\" #prefix>\n              <div\n                style=\"\n                  height: 100%;\n                  display: flex;\n                  justify-content: center;\n                  align-items: center;\n                \"\n              >\n                <slot name=\"prefix\"></slot>\n              </div>\n            </template>\n            <template #suffix>\n              <el-icon\n                v-if=\"iconComponent\"\n                v-show=\"!showClose\"\n                :class=\"[nsSelect.e('caret'), nsSelect.e('icon'), iconReverse]\"\n              >\n                <component :is=\"iconComponent\" />\n              </el-icon>\n              <el-icon\n                v-if=\"showClose && clearIcon\"\n                :class=\"[nsSelect.e('caret'), nsSelect.e('icon')]\"\n                @click=\"handleClearClick\"\n              >\n                <component :is=\"clearIcon\" />\n              </el-icon>\n            </template>\n          </el-input>\n        </div>\n      </template>\n      <template #content>\n        <el-select-menu>\n          <el-scrollbar\n            v-show=\"options.size > 0 && !loading\"\n            ref=\"scrollbar\"\n            tag=\"ul\"\n            :wrap-class=\"nsSelect.be('dropdown', 'wrap')\"\n            :view-class=\"nsSelect.be('dropdown', 'list')\"\n            :class=\"[\n              nsSelect.is(\n                'empty',\n                !allowCreate && query && filteredOptionsCount === 0\n              ),\n            ]\"\n          >\n            <el-option v-if=\"showNewOption\" :value=\"query\" :created=\"true\" />\n            <slot></slot>\n          </el-scrollbar>\n          <template\n            v-if=\"\n              emptyText &&\n              (!allowCreate || loading || (allowCreate && options.size === 0))\n            \"\n          >\n            <slot v-if=\"$slots.empty\" name=\"empty\"></slot>\n            <p v-else :class=\"nsSelect.be('dropdown', 'empty')\">\n              {{ emptyText }}\n            </p>\n          </template>\n        </el-select-menu>\n      </template>\n    </el-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  toRefs,\n  defineComponent,\n  onMounted,\n  onBeforeUnmount,\n  nextTick,\n  reactive,\n  provide,\n  computed,\n  unref,\n} from 'vue'\nimport { ClickOutside } from '@element-plus/directives'\nimport { useFocus, useLocale, useNamespace } from '@element-plus/hooks'\nimport ElInput from '@element-plus/components/input'\nimport ElTooltip, {\n  useTooltipContentProps,\n} from '@element-plus/components/tooltip'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport ElTag, { tagProps } from '@element-plus/components/tag'\nimport ElIcon from '@element-plus/components/icon'\nimport { useDeprecateAppendToBody } from '@element-plus/components/popper'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@element-plus/constants'\nimport {\n  addResizeListener,\n  removeResizeListener,\n  isValidComponentSize,\n} from '@element-plus/utils'\nimport { CircleClose, ArrowUp } from '@element-plus/icons-vue'\nimport ElOption from './option.vue'\nimport ElSelectMenu from './select-dropdown.vue'\nimport { useSelect, useSelectStates } from './useSelect'\nimport { selectKey } from './token'\n\nimport type { PropType, Component } from 'vue'\nimport type { ComponentSize } from '@element-plus/constants'\nimport type { SelectContext } from './token'\n\nconst COMPONENT_NAME = 'ElSelect'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  componentName: COMPONENT_NAME,\n  components: {\n    ElInput,\n    ElSelectMenu,\n    ElOption,\n    ElTag,\n    ElScrollbar,\n    ElTooltip,\n    ElIcon,\n  },\n  directives: { ClickOutside },\n  props: {\n    name: String,\n    id: String,\n    modelValue: {\n      type: [Array, String, Number, Boolean, Object],\n      default: undefined,\n    },\n    autocomplete: {\n      type: String,\n      default: 'off',\n    },\n    automaticDropdown: Boolean,\n    size: {\n      type: String as PropType<ComponentSize>,\n      validator: isValidComponentSize,\n    },\n    effect: {\n      type: String as PropType<'light' | 'dark' | string>,\n      default: 'light',\n    },\n    disabled: Boolean,\n    clearable: Boolean,\n    filterable: Boolean,\n    allowCreate: Boolean,\n    loading: Boolean,\n    popperClass: {\n      type: String,\n      default: '',\n    },\n    remote: Boolean,\n    loadingText: String,\n    noMatchText: String,\n    noDataText: String,\n    remoteMethod: Function,\n    filterMethod: Function,\n    multiple: Boolean,\n    multipleLimit: {\n      type: Number,\n      default: 0,\n    },\n    placeholder: {\n      type: String,\n    },\n    defaultFirstOption: Boolean,\n    reserveKeyword: {\n      type: Boolean,\n      default: true,\n    },\n    valueKey: {\n      type: String,\n      default: 'value',\n    },\n    collapseTags: Boolean,\n    popperAppendToBody: {\n      type: Boolean,\n      default: undefined,\n    },\n    teleported: useTooltipContentProps.teleported,\n    clearIcon: {\n      type: [String, Object] as PropType<string | Component>,\n      default: CircleClose,\n    },\n    fitInputWidth: {\n      type: Boolean,\n      default: false,\n    },\n    suffixIcon: {\n      type: [String, Object] as PropType<string | Component>,\n      default: ArrowUp,\n    },\n    // eslint-disable-next-line vue/require-prop-types\n    tagType: { ...tagProps.type, default: 'info' },\n  },\n  emits: [\n    UPDATE_MODEL_EVENT,\n    CHANGE_EVENT,\n    'remove-tag',\n    'clear',\n    'visible-change',\n    'focus',\n    'blur',\n  ],\n\n  setup(props, ctx) {\n    const nsSelect = useNamespace('select')\n    const nsInput = useNamespace('input')\n    const { t } = useLocale()\n    const states = useSelectStates(props)\n    const {\n      optionsArray,\n      selectSize,\n      readonly,\n      handleResize,\n      collapseTagSize,\n      debouncedOnInputChange,\n      debouncedQueryChange,\n      deletePrevTag,\n      deleteTag,\n      deleteSelected,\n      handleOptionSelect,\n      scrollToOption,\n      setSelected,\n      resetInputHeight,\n      managePlaceholder,\n      showClose,\n      selectDisabled,\n      iconComponent,\n      iconReverse,\n      showNewOption,\n      emptyText,\n      toggleLastOptionHitState,\n      resetInputState,\n      handleComposition,\n      onOptionCreate,\n      onOptionDestroy,\n      handleMenuEnter,\n      handleFocus,\n      blur,\n      handleBlur,\n      handleClearClick,\n      handleClose,\n      toggleMenu,\n      selectOption,\n      getValueKey,\n      navigateOptions,\n      dropMenuVisible,\n\n      reference,\n      input,\n      tooltipRef,\n      tags,\n      selectWrapper,\n      scrollbar,\n      queryChange,\n      groupQueryChange,\n    } = useSelect(props, states, ctx)\n\n    const { focus } = useFocus(reference)\n\n    const {\n      inputWidth,\n      selected,\n      inputLength,\n      filteredOptionsCount,\n      visible,\n      softFocus,\n      selectedLabel,\n      hoverIndex,\n      query,\n      inputHovering,\n      currentPlaceholder,\n      menuVisibleOnFocus,\n      isOnComposition,\n      isSilentBlur,\n      options,\n      cachedOptions,\n      optionsCount,\n      prefixWidth,\n      tagInMultiLine,\n    } = toRefs(states)\n\n    const wrapperKls = computed(() => {\n      const classList = [nsSelect.b()]\n      const _selectSize = unref(selectSize)\n      if (_selectSize) {\n        classList.push(nsSelect.m(_selectSize))\n      }\n      if (props.disabled) {\n        classList.push(nsSelect.m('disabled'))\n      }\n      return classList\n    })\n\n    const selectTagsStyle = computed(() => ({\n      maxWidth: `${unref(inputWidth) - 32}px`,\n      width: '100%',\n    }))\n\n    provide(\n      selectKey,\n      reactive({\n        props,\n        options,\n        optionsArray,\n        cachedOptions,\n        optionsCount,\n        filteredOptionsCount,\n        hoverIndex,\n        handleOptionSelect,\n        onOptionCreate,\n        onOptionDestroy,\n        selectWrapper,\n        selected,\n        setSelected,\n        queryChange,\n        groupQueryChange,\n      }) as unknown as SelectContext\n    )\n\n    onMounted(() => {\n      states.cachedPlaceHolder = currentPlaceholder.value =\n        props.placeholder || t('el.select.placeholder')\n      if (\n        props.multiple &&\n        Array.isArray(props.modelValue) &&\n        props.modelValue.length > 0\n      ) {\n        currentPlaceholder.value = ''\n      }\n      addResizeListener(selectWrapper.value as any, handleResize)\n      if (reference.value && reference.value.$el) {\n        const sizeMap = {\n          large: 36,\n          default: 32,\n          small: 28,\n        }\n        const input = reference.value.input as HTMLInputElement\n        states.initialInputHeight =\n          input.getBoundingClientRect().height || sizeMap[selectSize.value]\n      }\n      if (props.remote && props.multiple) {\n        resetInputHeight()\n      }\n      nextTick(() => {\n        if (!reference.value) return\n        if (reference.value.$el) {\n          inputWidth.value = reference.value.$el.getBoundingClientRect().width\n        }\n        if (ctx.slots.prefix) {\n          const inputChildNodes = reference.value.$el.childNodes\n          const input = (Array.from(inputChildNodes) as HTMLElement[]).filter(\n            (item) => item.tagName === 'INPUT'\n          )[0]\n          const prefix = reference.value.$el.querySelector(\n            `.${nsInput.e('prefix')}`\n          )\n          prefixWidth.value = Math.max(\n            prefix.getBoundingClientRect().width + 5,\n            30\n          )\n          if (states.prefixWidth) {\n            input.style.paddingLeft = `${Math.max(states.prefixWidth, 30)}px`\n          }\n        }\n      })\n      setSelected()\n    })\n\n    onBeforeUnmount(() => {\n      removeResizeListener(selectWrapper.value as any, handleResize)\n    })\n\n    if (props.multiple && !Array.isArray(props.modelValue)) {\n      ctx.emit(UPDATE_MODEL_EVENT, [])\n    }\n    if (!props.multiple && Array.isArray(props.modelValue)) {\n      ctx.emit(UPDATE_MODEL_EVENT, '')\n    }\n\n    const popperPaneRef = computed(() => {\n      return tooltipRef.value?.popperRef?.contentRef\n    })\n\n    const { compatTeleported } = useDeprecateAppendToBody(\n      COMPONENT_NAME,\n      'popperAppendToBody'\n    )\n\n    return {\n      tagInMultiLine,\n      prefixWidth,\n      selectSize,\n      readonly,\n      handleResize,\n      collapseTagSize,\n      debouncedOnInputChange,\n      debouncedQueryChange,\n      deletePrevTag,\n      deleteTag,\n      deleteSelected,\n      handleOptionSelect,\n      scrollToOption,\n      inputWidth,\n      selected,\n      inputLength,\n      filteredOptionsCount,\n      visible,\n      softFocus,\n      selectedLabel,\n      hoverIndex,\n      query,\n      inputHovering,\n      currentPlaceholder,\n      menuVisibleOnFocus,\n      isOnComposition,\n      isSilentBlur,\n      options,\n      resetInputHeight,\n      managePlaceholder,\n      showClose,\n      selectDisabled,\n      iconComponent,\n      iconReverse,\n      showNewOption,\n      emptyText,\n      toggleLastOptionHitState,\n      resetInputState,\n      handleComposition,\n      handleMenuEnter,\n      handleFocus,\n      blur,\n      handleBlur,\n      handleClearClick,\n      handleClose,\n      toggleMenu,\n      selectOption,\n      getValueKey,\n      navigateOptions,\n      dropMenuVisible,\n      focus,\n\n      reference,\n      input,\n      tooltipRef,\n      popperPaneRef,\n      tags,\n      selectWrapper,\n      scrollbar,\n\n      wrapperKls,\n      selectTagsStyle,\n      compatTeleported,\n      nsSelect,\n    }\n  },\n})\n</script>\n"],"names":["ElOption","_withDirectives","_withKeys"],"mappings":"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"}