{"version":3,"file":"index.vue2.mjs","sources":["../../../../../packages/components/autocomplete/src/index.vue"],"sourcesContent":["<template>\n  <el-tooltip\n    ref=\"popper\"\n    v-model:visible=\"suggestionVisible\"\n    :placement=\"placement\"\n    :fallback-placements=\"['bottom-start', 'top-start']\"\n    :popper-class=\"`${ns.e('popper')} ${popperClass}`\"\n    :teleported=\"compatTeleported\"\n    :gpu-acceleration=\"false\"\n    pure\n    manual-mode\n    effect=\"light\"\n    trigger=\"click\"\n    :transition=\"`${ns.namespace}-zoom-in-top`\"\n    persistent\n    @show=\"onSuggestionShow\"\n  >\n    <div\n      v-clickoutside=\"close\"\n      :class=\"[ns.b(), attrs.class]\"\n      :style=\"attrs.style\"\n      role=\"combobox\"\n      aria-haspopup=\"listbox\"\n      :aria-expanded=\"suggestionVisible\"\n      :aria-owns=\"id\"\n    >\n      <el-input\n        ref=\"inputRef\"\n        v-bind=\"attrs\"\n        :model-value=\"modelValue\"\n        @input=\"handleInput\"\n        @change=\"handleChange\"\n        @focus=\"handleFocus\"\n        @blur=\"handleBlur\"\n        @clear=\"handleClear\"\n        @keydown.up.prevent=\"highlight(highlightedIndex - 1)\"\n        @keydown.down.prevent=\"highlight(highlightedIndex + 1)\"\n        @keydown.enter=\"handleKeyEnter\"\n        @keydown.tab=\"close\"\n      >\n        <template v-if=\"$slots.prepend\" #prepend>\n          <slot name=\"prepend\"></slot>\n        </template>\n        <template v-if=\"$slots.append\" #append>\n          <slot name=\"append\"></slot>\n        </template>\n        <template v-if=\"$slots.prefix\" #prefix>\n          <slot name=\"prefix\"></slot>\n        </template>\n        <template v-if=\"$slots.suffix\" #suffix>\n          <slot name=\"suffix\"></slot>\n        </template>\n      </el-input>\n    </div>\n    <template #content>\n      <div\n        ref=\"regionRef\"\n        :class=\"[ns.b('suggestion'), ns.is('loading', suggestionLoading)]\"\n        :style=\"{ minWidth: dropdownWidth, outline: 'none' }\"\n        role=\"region\"\n      >\n        <el-scrollbar\n          :id=\"id\"\n          tag=\"ul\"\n          :wrap-class=\"ns.be('suggestion', 'wrap')\"\n          :view-class=\"ns.be('suggestion', 'list')\"\n          role=\"listbox\"\n        >\n          <li v-if=\"suggestionLoading\">\n            <el-icon class=\"is-loading\"><loading /></el-icon>\n          </li>\n          <template v-else>\n            <li\n              v-for=\"(item, index) in suggestions\"\n              :id=\"`${id}-item-${index}`\"\n              :key=\"index\"\n              :class=\"{ highlighted: highlightedIndex === index }\"\n              role=\"option\"\n              :aria-selected=\"highlightedIndex === index\"\n              @click=\"select(item)\"\n            >\n              <slot :item=\"item\">{{ item[valueKey] }}</slot>\n            </li>\n          </template>\n        </el-scrollbar>\n      </div>\n    </template>\n  </el-tooltip>\n</template>\n\n<script lang=\"ts\">\nimport {\n  defineComponent,\n  ref,\n  computed,\n  onMounted,\n  nextTick,\n  useAttrs,\n} from 'vue'\nimport { NOOP } from '@vue/shared'\nimport { debounce } from 'lodash-unified'\nimport { useNamespace } from '@element-ultra/hooks'\nimport { ClickOutside } from '@element-ultra/directives'\nimport { generateId, isArray, throwError } from '@element-ultra/utils'\nimport { UPDATE_MODEL_EVENT } from '@element-ultra/shared'\nimport ElInput from '@element-ultra/components/input'\nimport ElScrollbar from '@element-ultra/components/scrollbar'\nimport ElTooltip, {\n  useTooltipContentProps,\n} from '@element-ultra/components/tooltip'\nimport { useDeprecateAppendToBody } from '@element-ultra/components/popper'\nimport ElIcon from '@element-ultra/components/icon'\nimport { Loading } from 'icon-ultra'\n\nimport type { Placement } from '@element-ultra/components/popper'\nimport type { PropType } from 'vue'\n\nconst COMPONENT_NAME = 'ElAutocomplete'\nexport default defineComponent({\n  name: COMPONENT_NAME,\n  components: {\n    ElTooltip,\n    ElInput,\n    ElScrollbar,\n    ElIcon,\n    Loading,\n  },\n  directives: {\n    clickoutside: ClickOutside,\n  },\n  inheritAttrs: false,\n  props: {\n    valueKey: {\n      type: String,\n      default: 'value',\n    },\n    modelValue: {\n      type: [String, Number],\n      default: '',\n    },\n    debounce: {\n      type: Number,\n      default: 300,\n    },\n    placement: {\n      type: String as PropType<Placement>,\n      validator: (val: string): boolean => {\n        return [\n          'top',\n          'top-start',\n          'top-end',\n          'bottom',\n          'bottom-start',\n          'bottom-end',\n        ].includes(val)\n      },\n      default: 'bottom-start',\n    },\n    fetchSuggestions: {\n      type: Function as PropType<\n        (queryString: string, cb: (data: any[]) => void) => void\n      >,\n      default: NOOP,\n    },\n    popperClass: {\n      type: String,\n      default: '',\n    },\n    triggerOnFocus: {\n      type: Boolean,\n      default: true,\n    },\n    selectWhenUnmatched: {\n      type: Boolean,\n      default: false,\n    },\n    hideLoading: {\n      type: Boolean,\n      default: false,\n    },\n    popperAppendToBody: {\n      type: Boolean,\n      default: undefined,\n    },\n    teleported: useTooltipContentProps.teleported,\n    highlightFirstItem: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  emits: [\n    UPDATE_MODEL_EVENT,\n    'input',\n    'change',\n    'focus',\n    'blur',\n    'clear',\n    'select',\n  ],\n  setup(props, ctx) {\n    const ns = useNamespace('autocomplete')\n    const { compatTeleported } = useDeprecateAppendToBody(\n      COMPONENT_NAME,\n      'popperAppendToBody'\n    )\n\n    const attrs = useAttrs() as Record<string, any>\n    const suggestions = ref<any[]>([])\n    const highlightedIndex = ref(-1)\n    const dropdownWidth = ref('')\n    const activated = ref(false)\n    const suggestionDisabled = ref(false)\n    const loading = ref(false)\n    const inputRef = ref<{\n      inputRef: HTMLInputElement | HTMLTextAreaElement\n      focus: () => void\n      $el: HTMLElement\n    } | null>(null)\n    const regionRef = ref<HTMLElement | null>(null)\n    const popper = ref(null)\n\n    const id = computed(() => {\n      return ns.b(String(generateId()))\n    })\n    const suggestionVisible = computed(() => {\n      const isValidData =\n        isArray(suggestions.value) && suggestions.value.length > 0\n      return (isValidData || loading.value) && activated.value\n    })\n    const suggestionLoading = computed(() => {\n      return !props.hideLoading && loading.value\n    })\n\n    const onSuggestionShow = () => {\n      nextTick(() => {\n        if (suggestionVisible.value) {\n          dropdownWidth.value = `${inputRef.value!.$el.offsetWidth}px`\n        }\n      })\n    }\n\n    onMounted(() => {\n      const { inputRef: inputDom } = inputRef.value!\n      inputDom.setAttribute('role', 'textbox')\n      inputDom.setAttribute('aria-autocomplete', 'list')\n      inputDom.setAttribute('aria-controls', 'id')\n      inputDom.setAttribute(\n        'aria-activedescendant',\n        `${id.value}-item-${highlightedIndex.value}`\n      )\n    })\n\n    const getData = (queryString: string) => {\n      if (suggestionDisabled.value) {\n        return\n      }\n      loading.value = true\n      props.fetchSuggestions(queryString, (suggestionsArg) => {\n        loading.value = false\n        if (suggestionDisabled.value) {\n          return\n        }\n        if (isArray(suggestionsArg)) {\n          suggestions.value = suggestionsArg\n          highlightedIndex.value = props.highlightFirstItem ? 0 : -1\n        } else {\n          throwError(\n            'ElAutocomplete',\n            'autocomplete suggestions must be an array'\n          )\n        }\n      })\n    }\n    const debouncedGetData = debounce(getData, props.debounce)\n    const handleInput = (value: string) => {\n      ctx.emit('input', value)\n      ctx.emit(UPDATE_MODEL_EVENT, value)\n      suggestionDisabled.value = false\n      if (!props.triggerOnFocus && !value) {\n        suggestionDisabled.value = true\n        suggestions.value = []\n        return\n      }\n      debouncedGetData(value)\n    }\n    const handleChange = (value) => {\n      ctx.emit('change', value)\n    }\n    const handleFocus = (e) => {\n      activated.value = true\n      ctx.emit('focus', e)\n      if (props.triggerOnFocus) {\n        debouncedGetData(String(props.modelValue))\n      }\n    }\n    const handleBlur = (e) => {\n      ctx.emit('blur', e)\n    }\n    const handleClear = () => {\n      activated.value = false\n      ctx.emit(UPDATE_MODEL_EVENT, '')\n      ctx.emit('clear')\n    }\n    const handleKeyEnter = () => {\n      if (\n        suggestionVisible.value &&\n        highlightedIndex.value >= 0 &&\n        highlightedIndex.value < suggestions.value.length\n      ) {\n        select(suggestions.value[highlightedIndex.value])\n      } else if (props.selectWhenUnmatched) {\n        ctx.emit('select', { value: props.modelValue })\n        nextTick(() => {\n          suggestions.value = []\n          highlightedIndex.value = -1\n        })\n      }\n    }\n    const close = () => {\n      activated.value = false\n    }\n    const focus = () => {\n      inputRef.value?.focus()\n    }\n    const select = (item) => {\n      ctx.emit('input', item[props.valueKey])\n      ctx.emit(UPDATE_MODEL_EVENT, item[props.valueKey])\n      ctx.emit('select', item)\n      nextTick(() => {\n        suggestions.value = []\n        highlightedIndex.value = -1\n      })\n    }\n    const highlight = (index: number) => {\n      if (!suggestionVisible.value || loading.value) {\n        return\n      }\n      if (index < 0) {\n        highlightedIndex.value = -1\n        return\n      }\n      if (index >= suggestions.value.length) {\n        index = suggestions.value.length - 1\n      }\n      const suggestion = regionRef.value!.querySelector(\n        `.${ns.be('suggestion', 'wrap')}`\n      )!\n      const suggestionList = suggestion.querySelectorAll(\n        `.${ns.be('suggestion', 'list')} li`\n      )!\n      const highlightItem = suggestionList[index]\n      const scrollTop = suggestion.scrollTop\n      const { offsetTop, scrollHeight } = highlightItem as HTMLElement\n\n      if (offsetTop + scrollHeight > scrollTop + suggestion.clientHeight) {\n        suggestion.scrollTop += scrollHeight\n      }\n      if (offsetTop < scrollTop) {\n        suggestion.scrollTop -= scrollHeight\n      }\n      highlightedIndex.value = index\n      inputRef.value!.inputRef.setAttribute(\n        'aria-activedescendant',\n        `${id.value}-item-${highlightedIndex.value}`\n      )\n    }\n\n    return {\n      attrs,\n      suggestions,\n      highlightedIndex,\n      dropdownWidth,\n      activated,\n      suggestionDisabled,\n      loading,\n      inputRef,\n      regionRef,\n      popper,\n\n      id,\n      suggestionVisible,\n      suggestionLoading,\n\n      // deprecation in 2.1.0\n      compatTeleported,\n\n      getData,\n      handleInput,\n      handleChange,\n      handleFocus,\n      handleBlur,\n      handleClear,\n      handleKeyEnter,\n      close,\n      focus,\n      select,\n      highlight,\n      onSuggestionShow,\n      ns,\n    }\n  },\n})\n</script>\n"],"names":[],"mappings":"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"}