{"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=\"[\n      namespace + '-input-select',\n      selectSize,\n      block ? 'block' : ''\n    ]\"\n    @mouseenter=\"handleMouseEnter\"\n    @mouseleave=\"handleMouseLeave\"\n    @click.stop=\"toggleMenu\"\n  >\n    <hl-tooltip\n      ref=\"tooltipRef\"\n      :visible=\"dropMenuVisible\"\n      :placement=\"placement\"\n      :teleported=\"compatTeleported\"\n      :offset=\"popperOffset\"\n      :popper-class=\"`${namespace}-select-popper ${popperClass}`\"\n      :popper-options=\"popperOptions\"\n      :fallback-placements=\"['bottom-start', 'top-start', 'right', 'left']\"\n      :effect=\"effect\"\n      trigger=\"click\"\n      transition=\"dropdown\"\n      :persistent=\"persistent\"\n      :show-arrow=\"false\"\n      :stop-popper-mouse-event=\"false\"\n      :gpu-acceleration=\"false\"\n      @show=\"handleMenuEnter\"\n    >\n      <template #default>\n        <div\n          class=\"select-trigger\"\n          @mouseenter=\"inputHovering = true\"\n          @mouseleave=\"inputHovering = false\"\n        >\n          <hl-input\n            :id=\"id\"\n            ref=\"reference\"\n            v-model=\"selectedLabel\"\n            native-type=\"text\"\n            :placeholder=\"\n              typeof currentPlaceholder === 'function'\n                ? currentPlaceholder()\n                : currentPlaceholder\n            \"\n            :name=\"name\"\n            :autocomplete=\"autocomplete\"\n            :size=\"selectSize\"\n            :fill=\"selectFill\"\n            :thin=\"thin\"\n            :round=\"round\"\n            :disabled=\"selectDisabled\"\n            :readonly=\"readonly\"\n            :validate-event=\"false\"\n            :label=\"ariaLabel\"\n            aria-autocomplete=\"none\"\n            aria-haspopup=\"listbox\"\n            :class=\"{\n              'is-focus': visible,\n              'is-tags': selected.length,\n              'is-remote': !showIcon,\n            }\"\n            :tabindex=\"(multiple && filterable) ? '-1' : null\"\n            role=\"combobox\"\n            :aria-activedescendant=\"hoverOption?.id || ''\"\n            :aria-controls=\"contentId\"\n            :aria-expanded=\"dropMenuVisible\"\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=\"handleKeydownEscape\"\n            @keydown.tab=\"visible = false\"\n          >\n            <template v-if=\"multiple\" #tags>\n              <div\n                v-show=\"selected.length\"\n                ref=\"tags\"\n                tabindex=\"-1\"\n                :class=\"['input-tags', selectDisabled ? 'is-disabled' : '']\"\n                @click=\"focus\"\n              >\n                <template v-if=\"collapseTags && selected.length\">\n                  <hl-tag\n                    v-for=\"item in showTagList\"\n                    :key=\"getValueKey(item)\"\n                    :closable=\"!selectDisabled && !item.isDisabled\"\n                    :active=\"item.hitState\"\n                    disable-transitions\n                    :size=\"selectSize\"\n                    :type=\"tagType\"\n                    @close=\"deleteTag($event, item)\"\n                  >\n                    {{ item.currentLabel }}\n                  </hl-tag>\n                  <hl-tag\n                    v-if=\"selected.length > maxCollapseTags\"\n                    :closable=\"false\"\n                    disable-transitions\n                    :size=\"selectSize\"\n                    :type=\"tagType\"\n                  >\n                    <hl-tooltip\n                      v-if=\"collapseTagsTooltip\"\n                      ref=\"tagTooltipRef\"\n                      :disabled=\"dropMenuVisible\"\n                      :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\n                      :effect=\"effect\"\n                      placement=\"bottom\"\n                      :teleported=\"false\"\n                      :popper-class=\"`collapse-tags-popper`\"\n                    >\n                      <template #default>\n                        + {{ selected.length - maxCollapseTags }}\n                      </template>\n                      <template #content>\n                        <div class=\"collapse-tags\">\n                          <div\n                            v-for=\"item in collapseTagList\"\n                            :key=\"getValueKey(item)\"\n                            class=\"collapse-tag\"\n                          >\n                            <hl-tag\n                              :key=\"getValueKey(item)\"\n                              class=\"in-tooltip\"\n                              :closable=\"!selectDisabled && !item.isDisabled\"\n                              :size=\"selectSize\"\n                              :hit=\"item.hitState\"\n                              :type=\"tagType\"\n                              disable-transitions\n                              @close=\"handleDeleteTooltipTag($event, item)\"\n                            >\n                              {{ item.currentLabel }}\n                            </hl-tag>\n                          </div>\n                        </div>\n                      </template>\n                    </hl-tooltip>\n                    <template v-else>\n                      + {{ selected.length - maxCollapseTags }}\n                    </template>\n                  </hl-tag>\n                </template>\n\n                <template v-if=\"!collapseTags\">\n                  <slot name=\"tag\" :items=\"selected\">\n                    <hl-tag\n                      v-for=\"item in selected\"\n                      :key=\"getValueKey(item)\"\n                      :closable=\"!selectDisabled && !item.isDisabled\"\n                      :active=\"item.hitState\"\n                      disable-transitions\n                      :size=\"selectSize\"\n                      :type=\"tagType\"\n                      @close=\"deleteTag($event, item)\"\n                    >\n                      {{ item.currentLabel }}\n                    </hl-tag>\n                  </slot>\n                </template>\n\n                <input\n                  v-if=\"filterable\"\n                  ref=\"input\"\n                  v-model=\"query\"\n                  type=\"text\"\n                  :class=\"[\n                    'select-input',\n                    selectSize ? `is-${ selectSize }` : '',\n                    selectDisabled ? 'is-disabled' : ''\n                  ]\"\n                  :aria-label=\"ariaLabel\"\n                  :disabled=\"selectDisabled\"\n                  :autocomplete=\"autocomplete\"\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=\"handleKeydownEscape\"\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            </template>\n            <template v-if=\"$slots.prefix\" #prefix>\n              <div>\n                <slot name=\"prefix\"></slot>\n              </div>\n            </template>\n            <template #suffix>\n              <slot name=\"suffix\" :className=\"`${iconClass} ${!showClose && showIcon ? 'visible' : ''}`\">\n                <hl-icon :class=\"[iconClass, !showClose && showIcon ? 'visible' : '']\">\n                  <system-select-arrow />\n                </hl-icon>\n              </slot>\n              <slot name=\"clear\">\n                <hl-icon :class=\"['select-close', showClose && 'visible']\" @click=\"handleClearClick\">\n                  <system-close />\n                </hl-icon>\n              </slot>\n            </template>\n          </hl-input>\n        </div>\n      </template>\n      <template #content>\n        <hl-select-menu>\n          <template v-if=\"$slots.header\" #header>\n            <slot name=\"header\"></slot>\n          </template>\n          <hl-scrollbar\n            v-show=\"options.size > 0 && !loading\"\n            :id=\"contentId\"\n            ref=\"scrollbar\"\n            tag=\"ul\"\n            wrap-class=\"select-dropdown-wrap\"\n            view-class=\"select-dropdown-list\"\n            :class=\"{ 'is-empty': !allowCreate && Boolean(query) && filteredOptionsCount === 0 }\"\n            role=\"listbox\"\n            :aria-label=\"ariaLabel\"\n            aria-orientation=\"vertical\"\n            @at-end=\"$emit('at-end')\"\n          >\n            <hl-option\n              v-if=\"showNewOption\"\n              :value=\"query\"\n              :created=\"true\"\n            />\n            <hl-options @update-options=\"onOptionsRendered\">\n              <slot></slot>\n            </hl-options>\n          </hl-scrollbar>\n          <template v-if=\"emptyText && (!allowCreate || loading || (allowCreate && options.size === 0 ))\">\n            <slot v-if=\"$slots.empty\" name=\"empty\"></slot>\n            <p v-else class=\"select-dropdown-empty\">\n              {{ emptyText }}\n            </p>\n          </template>\n          <template v-if=\"$slots.footer\" #footer>\n            <slot name=\"footer\"></slot>\n          </template>\n        </hl-select-menu>\n      </template>\n    </hl-tooltip>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  toRefs,\n  defineComponent,\n  onMounted,\n  nextTick,\n  reactive,\n  provide,\n  computed,\n} from 'vue'\nimport HlInput from '@hongluan-ui/components/input'\nimport { placements } from '@popperjs/core'\nimport { useResizeObserver } from '@vueuse/core'\nimport HlTag from '@hongluan-ui/components/tag'\nimport HlTooltip, { useTooltipContentProps } from '@hongluan-ui/components/tooltip'\nimport HlScrollbar from '@hongluan-ui/components/scrollbar'\nimport HlIcon from '@hongluan-ui/components/icon'\nimport { SystemSelectArrow, SystemClose } from '@hongluan-ui/components/system-icon'\nimport { useDeprecateAppendToBody } from '@hongluan-ui/components/popper'\nimport { ClickOutside } from '@hongluan-ui/directives'\nimport { isValidComponentSize } from '@hongluan-ui/utils'\nimport { useEmptyValuesProps, useId, useLocale, useNamespace, useAriaProps } from '@hongluan-ui/hooks'\nimport { UPDATE_MODEL_EVENT, CHANGE_EVENT } from '@hongluan-ui/constants'\nimport { useSelect, useSelectStates } from './useSelect'\nimport { selectKey } from './token'\nimport HlOption from './option.vue'\nimport HlOptions from './options'\nimport HlSelectMenu from './select-dropdown.vue'\n\nimport type { PropType } from 'vue'\nimport type { ComponentSize } from '@hongluan-ui/constants'\nimport type { Options } from '@popperjs/core'\nimport type { SelectContext } from './token'\n\nexport default defineComponent({\n  name: 'Select',\n  componentName: 'Select',\n  components: {\n    HlInput,\n    HlSelectMenu,\n    HlOption,\n    HlOptions,\n    HlTag,\n    HlScrollbar,\n    HlTooltip,\n    HlIcon,\n    SystemSelectArrow,\n    SystemClose,\n  },\n  directives: { ClickOutside },\n  props: {\n    /**\n     * @description the name attribute of select input\n     */\n    name: String,\n    /**\n     * @description native input id\n     */\n    id: String,\n    /**\n     * @description binding value\n     */\n    modelValue: {\n      type: [Array, String, Number, Boolean, Object],\n      default: undefined,\n    },\n    /**\n     * @description the autocomplete attribute of select input\n     */\n    autocomplete: {\n      type: String,\n      default: 'off',\n    },\n    /**\n     * @description for non-filterable Select, this prop decides if the option menu pops up when the input is focused\n     */\n    automaticDropdown: Boolean,\n    /**\n     * @description size of Input\n     */\n    size: {\n      type: String as PropType<ComponentSize>,\n      validator: isValidComponentSize,\n    },\n    /**\n     * @description tooltip theme, built-in theme: `dark` / `light`\n     */\n    effect: {\n      type: String as PropType<'light' | 'dark' | string>,\n      default: '',\n    },\n    /**\n     * @description whether Select is disabled\n     */\n    disabled: Boolean,\n    /**\n     * @description whether select can be cleared\n     */\n    clearable: Boolean,\n    /**\n     * @description whether Select is filterable\n     */\n    filterable: Boolean,\n    /**\n     * @description whether creating new items is allowed. To use this, `filterable` must be true\n     */\n    allowCreate: Boolean,\n    block: Boolean,\n    /**\n     * @description whether Select is loading data from server\n     */\n    loading: Boolean,\n    /**\n     * @description custom class name for Select's dropdown\n     */\n    popperClass: {\n      type: String,\n      default: '',\n    },\n    /**\n     * @description [popper.js](https://popper.js.org/docs/v2/) parameters\n     */\n    popperOptions: {\n      type: Object as PropType<Partial<Options>>,\n      default: () => ({} as Partial<Options>),\n    },\n    /**\n     * @description whether options are loaded from server\n     */\n    remote: Boolean,\n    /**\n     * @description displayed text while loading data from server, default is 'Loading'\n     */\n    loadingText: String,\n    /**\n     * @description displayed text when no data matches the filtering query, you can also use slot `empty`, default is 'No matching data'\n     */\n    noMatchText: String,\n    /**\n     * @description displayed text when there is no options, you can also use slot `empty`, default is 'No data'\n     */\n    noDataText: String,\n    /**\n     * @description custom remote search method\n     */\n    remoteMethod: Function,\n    /**\n     * @description custom filter method\n     */\n    filterMethod: Function,\n    /**\n     * @description whether multiple-select is activated\n     */\n    multiple: Boolean,\n    /**\n     * @description maximum number of options user can select when `multiple` is `true`. No limit when set to 0\n     */\n    multipleLimit: {\n      type: Number,\n      default: 0,\n    },\n    /**\n     * @description placeholder, default is 'Select'\n     */\n    placeholder: {\n      type: String,\n    },\n    /**\n     * @description select first matching option on enter key. Use with `filterable` or `remote`\n     */\n    defaultFirstOption: Boolean,\n    /**\n     * @description when `multiple` and `filter` is true, whether to reserve current keyword after selecting an option\n     */\n    reserveKeyword: {\n      type: Boolean,\n      default: true,\n    },\n    /**\n     * @description unique identity key name for value, required when value is an object\n     */\n    valueKey: {\n      type: String,\n      default: 'value',\n    },\n    /**\n     * @description whether to collapse tags to a text when multiple selecting\n     */\n    collapseTags: Boolean,\n    /**\n     * @description whether show all selected tags when mouse hover text of collapse-tags. To use this, `collapse-tags` must be true\n     */\n    collapseTagsTooltip: Boolean,\n    /**\n     * @description the max tags number to be shown. To use this, `collapse-tags` must be true\n     */\n    maxCollapseTags: {\n      type: Number,\n      default: 1,\n    },\n    popperAppendToBody: {\n      type: Boolean,\n      default: undefined,\n    },\n    /**\n     * @description whether select dropdown is teleported to the body\n     */\n    teleported: useTooltipContentProps.teleported,\n    /**\n     * @description when select dropdown is inactive and `persistent` is `false`, select dropdown will be destroyed\n     */\n    persistent: {\n      type: Boolean,\n      default: true,\n    },\n    fill: Boolean,\n    thin: Boolean,\n    round: Boolean,\n    /**\n     * @description tag type\n     */\n    tagType: {\n      type: String,\n      default: '',\n    },\n    popperOffset: {\n      type: Number,\n      default: 4,\n    },\n    /**\n     * @description whether to trigger form validation\n     */\n    validateEvent: {\n      type: Boolean,\n      default: true,\n    },\n    /**\n     * @description in remote search method show suffix icon\n     */\n    remoteShowSuffix: Boolean,\n    /**\n     * @deprecated will be removed in version 2.4.0, please use override style scheme\n     */\n    suffixTransition: {\n      type: Boolean,\n      default: true,\n    },\n    /**\n     * @description position of dropdown\n     */\n    placement: {\n      type: String,\n      values: placements,\n      default: 'bottom-start',\n    },\n    ...useAriaProps(['ariaLabel']),\n    ...useEmptyValuesProps,\n  },\n  emits: [UPDATE_MODEL_EVENT, CHANGE_EVENT, 'remove-tag', 'clear', 'visible-change', 'focus', 'blur'],\n\n  setup(props, ctx) {\n    const { t } = useLocale()\n    const { namespace } = useNamespace()\n    const states = useSelectStates(props)\n    const contentId = useId()\n\n    const {\n      optionList,\n      optionsArray,\n      hoverOption,\n      selectSize,\n      readonly,\n      handleResize,\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      selectFill,\n      iconClass,\n      showIcon,\n      showNewOption,\n      emptyText,\n      toggleLastOptionHitState,\n      resetInputState,\n      handleComposition,\n      onOptionCreate,\n      onOptionDestroy,\n      handleMenuEnter,\n      handleFocus,\n      blur,\n      focus,\n      handleBlur,\n      handleClearClick,\n      handleClose,\n      handleKeydownEscape,\n      toggleMenu,\n      selectOption,\n      getValueKey,\n      navigateOptions,\n      handleDeleteTooltipTag,\n      dropMenuVisible,\n      queryChange,\n      groupQueryChange,\n      reference,\n      input,\n      tooltipRef,\n      tagTooltipRef,\n      tags,\n      selectWrapper,\n      scrollbar,\n      handleMouseEnter,\n      handleMouseLeave,\n      showTagList,\n      collapseTagList,\n    } = useSelect(props, states, ctx)\n\n    const {\n      // inputWidth,\n      selected,\n      // inputLength,\n      filteredOptionsCount,\n      visible,\n      selectedLabel,\n      hoverIndex,\n      query,\n      inputHovering,\n      currentPlaceholder,\n      menuVisibleOnFocus,\n      isOnComposition,\n      options,\n      cachedOptions,\n      optionsCount,\n      // prefixWidth,\n      // tagInMultiLine,\n    } = toRefs(states)\n\n    provide(selectKey, 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    onMounted(() => {\n      states.cachedPlaceHolder = currentPlaceholder.value = props.placeholder || (() => t('hl.select.placeholder'))\n\n      if (props.multiple && Array.isArray(props.modelValue) && props.modelValue.length > 0) {\n        currentPlaceholder.value = ''\n      }\n      useResizeObserver(selectWrapper, handleResize)\n\n      if (reference.value?.$el) {\n        // const sizeMap = {\n        //   md: 36,\n        //   sm: 32,\n        //   xs: 28,\n        // }\n        // const input = reference.value.input\n        // states.initialInputHeight = input.getBoundingClientRect().height || sizeMap[selectSize.value]\n      }\n      if (props.remote && props.multiple) {\n        // resetInputHeight()\n      }\n      nextTick(() => {\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 = [].filter.call(inputChildNodes, item => item.tagName === 'INPUT')[0]\n          // const prefix = reference.value.$el.querySelector('.input-affixe.prefix div')\n          // const maxWidth = props.size === 'lg' ? 40 : 35\n          // prefixWidth.value = Math.max(prefix.getBoundingClientRect().width + 5, maxWidth)\n          // if (states.prefixWidth) {\n          //   input.style.paddingLeft = `${Math.max(states.prefixWidth, maxWidth)}px`\n          // }\n        }\n      })\n      setSelected()\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      'Select',\n      'popperAppendToBody',\n    )\n\n    const onOptionsRendered = (v: string[]) => {\n      optionList.value = v\n    }\n\n    return {\n      namespace,\n      onOptionsRendered,\n      // tagInMultiLine,\n      // prefixWidth,\n      compatTeleported,\n      selectSize,\n      readonly,\n      handleResize,\n      debouncedOnInputChange,\n      debouncedQueryChange,\n      deletePrevTag,\n      deleteTag,\n      handleDeleteTooltipTag,\n      deleteSelected,\n      handleOptionSelect,\n      scrollToOption,\n      // inputWidth,\n      selected,\n      // inputLength,\n      filteredOptionsCount,\n      visible,\n      selectedLabel,\n      hoverIndex,\n      query,\n      inputHovering,\n      currentPlaceholder,\n      menuVisibleOnFocus,\n      isOnComposition,\n      options,\n      // resetInputHeight,\n      managePlaceholder,\n      showClose,\n      selectDisabled,\n      selectFill,\n      iconClass,\n      showIcon,\n      showNewOption,\n      emptyText,\n      toggleLastOptionHitState,\n      resetInputState,\n      handleComposition,\n      handleMenuEnter,\n      handleFocus,\n      handleKeydownEscape,\n      blur,\n      handleBlur,\n      handleClearClick,\n      handleClose,\n      toggleMenu,\n      selectOption,\n      getValueKey,\n      navigateOptions,\n      dropMenuVisible,\n      focus,\n      reference,\n      input,\n      tooltipRef,\n      popperPaneRef,\n      tags,\n      selectWrapper,\n      scrollbar,\n      handleMouseEnter,\n      handleMouseLeave,\n      showTagList,\n      collapseTagList,\n      tagTooltipRef,\n      contentId,\n      hoverOption,\n    }\n  },\n})\n</script>\n"],"names":["_createElementVNode","_createVNode","_withKeys","_openBlock","_renderSlot"],"mappings":"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"}