{"version":3,"file":"select.mjs","sources":["../../../../../../packages/components/select/src/select.vue"],"sourcesContent":["<template>\r\n  <div\r\n    ref=\"selectWrapper\"\r\n    v-click-outside:[popperPaneRef]=\"handleClose\"\r\n    :class=\"wrapperKls\"\r\n    @click.stop=\"toggleMenu\"\r\n  >\r\n    <sg-tooltip\r\n      ref=\"tooltipRef\"\r\n      v-model:visible=\"dropMenuVisible\"\r\n      :show-arrow = \"false\"\r\n      :placement=\"(placement as any)\"\r\n      :transfer=\"transfer\"\r\n      :drop-class-name=\"['sg-select__popper']\"\r\n      :fallback-placements=\"['bottom-start', 'top-start', 'right', 'left']\"\r\n      :theme=\"toolTipTheme\"\r\n      pure\r\n      trigger=\"click\"\r\n      persistent\r\n      transition=\"sg-zoom-in-top\"\r\n      :stop-popper-mouse-event=\"false\"\r\n      :gpu-acceleration=\"false\"\r\n      @show=\"handleMenuEnter\"\r\n    >\r\n      <template #default>\r\n        <div class=\"select-trigger\">\r\n          <div\r\n            v-if=\"multiple && !attrs.readonly\"\r\n            ref=\"tagsRef\"\r\n            class=\"sg-select__tags\"\r\n            :style=\"selectTagsStyle\"\r\n          >\r\n            <sg-multiple-tags\r\n              ref=\"multipleTagsRef\"\r\n              :list=\"selected\"\r\n              :collapse=\"collapseTags\"\r\n              :ellipsis=\"ellipsisTag\"\r\n              :not-only-one=\"notOnlyOne\"\r\n              :value-key=\"valueKey\"\r\n              :prefix-width=\"prefixWidth\"\r\n              :disabled=\"selectDisabled\"\r\n              :tag-size=\"tagSize\"\r\n              :input-width=\"inputWidth\"\r\n              :show-tooltip=\"showMultipleTip\"\r\n              :tooltip-offset=\"toolTipOffset\"\r\n              :tooltip-theme=\"toolTipTheme\"\r\n              :tooltip-transfer=\"multipleTipTransfer\"\r\n              @deleted=\"deleteTag\"\r\n              @reset=\"handleMultipleTagRest\"\r\n              @resize=\"resetInputHeight\"\r\n            />\r\n            <input\r\n              v-if=\"filterable\"\r\n              ref=\"inputRef\"\r\n              v-model=\"query\"\r\n              type=\"text\"\r\n              class=\"sg-select__input sg-filterable-input\"\r\n              :class=\"[selectSize ? `is-${selectSize}` : '']\"\r\n              :disabled=\"selectDisabled\"\r\n              :placeholder=\"filterable ? '' : (attrs.placeholder as string)\"\r\n              :style=\"{\r\n                width: `${inputLength / (inputWidth - 42)}%`,\r\n                maxWidth: `${inputWidth - 42}px`\r\n              }\"\r\n              @focus=\"handleFocus\"\r\n              @blur=\"handleBlur\"\r\n              @keyup=\"managePlaceholder\"\r\n              @keydown=\"resetInputState\"\r\n              @keydown.down.prevent=\"navigateOptions('next')\"\r\n              @keydown.up.prevent=\"navigateOptions('prev')\"\r\n              @keydown.esc.stop.prevent=\"visible = false\"\r\n              @keydown.enter.stop.prevent=\"selectOption\"\r\n              @keydown.delete=\"deletePrevTag\"\r\n              @keydown.tab=\"visible = false\"\r\n              @compositionstart=\"handleComposition\"\r\n              @compositionupdate=\"handleComposition\"\r\n              @compositionend=\"handleComposition\"\r\n              @input=\"debouncedQueryChange\"\r\n            />\r\n          </div>\r\n          <sg-tooltip\r\n            :drop-class-name=\"'show-overflow-text-popper'\"\r\n            :disabled=\"handelShowOverflowText\"\r\n            :fallback-placements=\"['bottom', 'top', 'right', 'left']\"\r\n            :theme=\"toolTipTheme\"\r\n            :placement=\"(toolTipPlacement as any)\"\r\n            :transfer=\"false\"\r\n            :verticalOffset=\"toolTipOffset\"\r\n          >\r\n            <template #default>\r\n              <sg-input\r\n                :id=\"id\"\r\n                ref=\"reference\"\r\n                v-model=\"selectedLabel\"\r\n                type=\"text\"\r\n                ellipsisTag\r\n                :placeholder=\"currentPlaceholder\"\r\n                :size=\"selectSize\"\r\n                :disabled=\"selectDisabled\"\r\n                :readonly=\"isReadonly || attrs.readonly || isShowFilterInput\"\r\n                :validate-event=\"false\"\r\n                :class=\"{ 'is-focus': visible }\"\r\n                :tabindex=\"multiple && filterable ? -1 : undefined\"\r\n                @on-focus=\"handleFocus\"\r\n                @on-blur=\"handleBlur\"\r\n                @on-input=\"debouncedOnInputChange\"\r\n                @paste=\"debouncedOnInputChange\"\r\n                @compositionstart=\"handleComposition\"\r\n                @compositionupdate=\"handleComposition\"\r\n                @compositionend=\"handleComposition\"\r\n                @keydown.down.stop.prevent=\"navigateOptions('next')\"\r\n                @keydown.up.stop.prevent=\"navigateOptions('prev')\"\r\n                @keydown.enter.stop.prevent=\"selectOption\"\r\n                @keydown.esc.stop.prevent=\"visible = false\"\r\n                @keydown.tab=\"visible = false\"\r\n                @mouseenter=\"inputHovering = true\"\r\n                @mouseleave=\"inputHovering = false\"\r\n              >\r\n                <template v-if=\"$slots.prefix\" #prefix>\r\n                  <div\r\n                    style=\"\r\n                      height: 100%;\r\n                      display: flex;\r\n                      justify-content: center;\r\n                      align-items: center;\r\n                    \"\r\n                  >\r\n                    <slot name=\"prefix\"></slot>\r\n                  </div>\r\n                </template>\r\n                <template #suffix>\r\n                  <template v-if=\"!attrs.readonly\">\r\n                    <sg-icon\r\n                      v-if=\"iconComponent\"\r\n                      v-show=\"!showClose\"\r\n                      :class=\"['sg-select__caret', 'sg-input__icon', iconReverse]\"\r\n                    >\r\n                      <component :is=\"iconComponent\" />\r\n                    </sg-icon>\r\n                    <sg-icon\r\n                      v-if=\"showClose\"\r\n                      class=\"sg-select__caret sg-input__icon delete\"\r\n                      @click=\"handleClearClick\"\r\n                    >\r\n                      <Close />\r\n                    </sg-icon>\r\n                  </template>\r\n                  <template v-else>\r\n                    <sg-icon class=\"sg-select__caret sg-input__icon\">\r\n                      <component :is=\"iconComponent\" />\r\n                    </sg-icon>\r\n                  </template>\r\n                </template>\r\n              </sg-input>\r\n            </template>\r\n            <template #content>\r\n              <span>{{ selectedLabel }}</span>\r\n            </template>\r\n          </sg-tooltip>\r\n        </div>\r\n      </template>\r\n      <template #content v-if=\"isListShow\">\r\n        <sg-input v-if=\"isShowFilterInput\" class=\"sg-filter-input\" v-model=\"filterInputText\"  @on-input=\"debouncedOnInputChange\">\r\n          <template #append>\r\n            <SgIcon>\r\n              <Search />\r\n            </SgIcon>\r\n          </template>\r\n        </sg-input>\r\n        <sg-select-menu  >\r\n          <sg-scrollbar\r\n            :height=\"isShowFilterInput ? scrollheight : scrollheight - 36 \"\r\n            v-show=\"options.size > 0\"\r\n            ref=\"scrollbar\"\r\n            tag=\"ul\"\r\n            wrap-class=\"sg-select-dropdown__wrap\"\r\n            view-class=\"sg-select-dropdown__list\"\r\n            :class=\"{\r\n              'is-empty': !allowCreate && query && filteredOptionsCount === 0,\r\n            }\"\r\n          >\r\n            <sg-option v-if=\"showNewOption\" :value=\"query\" :is-created=\"true\" />\r\n            <slot></slot>\r\n          </sg-scrollbar>\r\n          <template\r\n            v-if=\"\r\n              emptyText &&\r\n              (!allowCreate  || (allowCreate && options.size === 0))\r\n            \"\r\n          >\r\n            <slot v-if=\"$slots.empty\" name=\"empty\"></slot>\r\n            <p v-else class=\"sg-select-dropdown__empty\">\r\n              {{ emptyText }}\r\n            </p>\r\n          </template>\r\n        </sg-select-menu>\r\n      </template>\r\n    </sg-tooltip>\r\n  </div>\r\n</template>\r\n\r\n<script lang=\"ts\">\r\nimport {\r\n  toRefs,\r\n  defineComponent,\r\n  onMounted,\r\n  onBeforeUnmount,\r\n  nextTick,\r\n  reactive,\r\n  provide,\r\n  computed,\r\n  unref,\r\n} from 'vue'\r\nimport { ClickOutside } from '@sgui-plus/directives'\r\nimport { useFocus, useLocale } from '@sgui-plus/hooks'\r\nimport SgInput from '@sgui-plus/components/input'\r\nimport SgTooltip, { useTooltipContentProps } from '@sgui-plus/components/tooltip'\r\nimport SgScrollbar from '@sgui-plus/components/scrollbar'\r\nimport SgTag from '@sgui-plus/components/tag'\r\nimport SgIcon from '@sgui-plus/components/icon'\r\nimport { UPDATE_MODEL_EVENT } from '@sgui-plus/utils/constants'\r\nimport {\r\n  addResizeListener,\r\n  removeResizeListener,\r\n} from '@sgui-plus/utils/resize-event'\r\nimport { isValidComponentSize } from '@sgui-plus/utils/validators'\r\nimport { Close, ArrowUp, Search } from '@sgui-plus/icons-vue'\r\nimport SgOption from './option.vue'\r\nimport SgSelectMenu from './select-dropdown.vue'\r\nimport SgMultipleTags from './multiple-tags.vue'\r\nimport { useSelect, useSelectStates } from './useSelect'\r\nimport { SelectContextKey } from './token'\r\n\r\nimport type { PropType, Component } from 'vue'\r\nimport type { ComponentSize } from '@sgui-plus/utils/size'\r\nimport type { SelectContext } from './token'\r\n\r\nexport default defineComponent({\r\n  name: 'SgSelect',\r\n  componentName: 'SgSelect',\r\n  components: {\r\n    Close,\r\n    SgInput,\r\n    SgSelectMenu,\r\n    SgOption,\r\n    SgTag,\r\n    SgMultipleTags,\r\n    SgScrollbar,\r\n    SgTooltip,\r\n    SgIcon,\r\n    Search\r\n  },\r\n  directives: { ClickOutside },\r\n  props: {\r\n    name: String,\r\n    id: String,\r\n    modelValue: {\r\n      type: [Array, String, Number, Boolean, Object],\r\n      default: undefined,\r\n    },\r\n    size: {\r\n      type: String as PropType<ComponentSize>,\r\n      validator: isValidComponentSize,\r\n    },\r\n    disabled: Boolean,\r\n    clearable: Boolean,\r\n    filterable: Boolean,\r\n    filterHighlight: Boolean,\r\n    allowCreate: Boolean,\r\n    placement: {\r\n      type: String,\r\n      default: 'bottom',\r\n    },\r\n    noMatchText: String,\r\n    noDataText: String,\r\n    filterMethod: Function,\r\n    multiple: Boolean,\r\n    multipleLimit: {\r\n      type: Number,\r\n      default: 0,\r\n    },\r\n    defaultFirstOption: Boolean,\r\n    valueKey: {\r\n      type: String,\r\n      default: 'value',\r\n    },\r\n    labelInValue: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    listInitHidden: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    showSingleFilterInput: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    // 初始化时显示默认选中的值\r\n    defaultLabel: {\r\n      type: [String, Number, Array]\r\n    },\r\n    transfer: useTooltipContentProps.transfer,\r\n    collapseTags: Boolean,\r\n    showMultipleTip: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    ellipsisTag: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    notOnlyOne: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    dropWidthLinked: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    scrollwidth: {\r\n      type: Number,\r\n      default: 0\r\n    },\r\n    scrollheight: {\r\n      type: Number,\r\n      default: 150\r\n    },\r\n    suffixIcon: {\r\n      type: [String, Object] as PropType<string | Component>,\r\n      default: ArrowUp,\r\n    },\r\n    toolTipTheme: {\r\n      type: String as PropType<'light' | 'dark' | string>,\r\n      default: 'light',\r\n    },\r\n    fixedHeight: Boolean,\r\n    showOverflowText: {\r\n      type: Boolean,\r\n      default: false,\r\n    },\r\n    toolTipPlacement: {\r\n      type: String,\r\n      default: 'top',\r\n    },\r\n    toolTipOffset: {\r\n      type: Number,\r\n      default: 0\r\n    },\r\n    multipleTipTransfer: {\r\n      type: Boolean,\r\n      default: false\r\n    },\r\n    contentSeparator: {\r\n      type: String,\r\n      default: ','\r\n    },\r\n    validateEvent: {\r\n      type: Boolean,\r\n      default: true,\r\n    }\r\n  },\r\n  emits: [\r\n    UPDATE_MODEL_EVENT,\r\n    'on-change',\r\n    'on-remove-tag',\r\n    'on-clear',\r\n    'on-open-change',\r\n    'on-focus',\r\n    'on-blur',\r\n    'on-tag-rest'\r\n  ],\r\n\r\n  setup(props, ctx) {\r\n    const { t } = useLocale()\r\n    const states = useSelectStates(props)\r\n    const {\r\n      isListShow,\r\n      optionsArray,\r\n      selectSize,\r\n      isReadonly,\r\n      handleResize,\r\n      tagSize,\r\n      debouncedOnInputChange,\r\n      debouncedQueryChange,\r\n      deletePrevTag,\r\n      deleteTag,\r\n      deleteSelected,\r\n      handleOptionSelect,\r\n      handleMultipleTagRest,\r\n      scrollToOption,\r\n      setSelected,\r\n      resetInputHeight,\r\n      managePlaceholder,\r\n      showClose,\r\n      selectDisabled,\r\n      iconComponent,\r\n      iconReverse,\r\n      showNewOption,\r\n      emptyText,\r\n      toggleLastOptionHitState,\r\n      resetInputState,\r\n      handleComposition,\r\n      onOptionCreate,\r\n      onOptionDestroy,\r\n      handleMenuEnter,\r\n      handleFocus,\r\n      blur,\r\n      handleBlur,\r\n      handleClearClick,\r\n      handleClose,\r\n      toggleMenu,\r\n      selectOption,\r\n      navigateOptions,\r\n      dropMenuVisible,\r\n      handelShowOverflowText,\r\n      updatePopper,\r\n\r\n      reference,\r\n      inputRef,\r\n      tooltipRef,\r\n      tagsRef,\r\n      multipleTagsRef,\r\n      selectWrapper,\r\n      scrollbar,\r\n      queryChange,\r\n      groupQueryChange\r\n    } = useSelect(props, states, ctx)\r\n\r\n    const { focus } = useFocus(reference)\r\n\r\n    const {\r\n      filterInputText,\r\n      inputWidth,\r\n      selected,\r\n      inputLength,\r\n      filteredOptionsCount,\r\n      visible,\r\n      softFocus,\r\n      selectedLabel,\r\n      hoverIndex,\r\n      query,\r\n      inputHovering,\r\n      currentPlaceholder,\r\n      menuVisibleOnFocus,\r\n      isOnComposition,\r\n      isSilentBlur,\r\n      options,\r\n      cachedOptions,\r\n      optionsCount,\r\n      prefixWidth,\r\n      tagInMultiLine\r\n    } = toRefs(states)\r\n   // 是否显示搜索框（单选 &多选）\r\n   const isShowFilterInput = computed(() => {\r\n    return props.filterable && props.showSingleFilterInput\r\n   })\r\n    const wrapperKls = computed(() => {\r\n      const classList = ['sg-select']\r\n      const _selectSize = unref(selectSize)\r\n      if (_selectSize) {\r\n        classList.push(`sg-select--${_selectSize}`)\r\n      }\r\n      if (props.disabled) {\r\n        classList.push(`sg-select--disabled`)\r\n      }\r\n      return classList\r\n    })\r\n\r\n    const selectTagsStyle = computed(() => ({\r\n      maxWidth: `${unref(inputWidth) - 32}px`,\r\n      width: '100%',\r\n      height: props.fixedHeight ? '28px' : '',\r\n      overflow: props.fixedHeight ? 'auto' : ''\r\n    }))\r\n\r\n    provide(\r\n      SelectContextKey,\r\n      reactive({\r\n        props,\r\n        options,\r\n        optionsArray,\r\n        cachedOptions,\r\n        optionsCount,\r\n        filteredOptionsCount,\r\n        hoverIndex,\r\n        handleOptionSelect,\r\n        onOptionCreate,\r\n        onOptionDestroy,\r\n        selectWrapper,\r\n        selected,\r\n        setSelected,\r\n        queryChange,\r\n        groupQueryChange,\r\n      }) as unknown as SelectContext\r\n    )\r\n    onMounted(() => {\r\n      states.cachedPlaceHolder = currentPlaceholder.value =\r\n        ctx.attrs.placeholder as string || t('sg.select.placeholder')\r\n      if (\r\n        props.multiple &&\r\n        Array.isArray(props.modelValue) &&\r\n        props.modelValue.length > 0\r\n      ) {\r\n        currentPlaceholder.value = ''\r\n      }\r\n      addResizeListener(selectWrapper.value as any, handleResize)\r\n      if (reference.value && reference.value.$el) {\r\n        const sizeMap = {\r\n          large: 36,\r\n          default: 32,\r\n          small: 28,\r\n        }\r\n        const input = reference.value.input as HTMLInputElement\r\n        states.initialInputHeight =\r\n          input.getBoundingClientRect().height || sizeMap[selectSize.value]\r\n      }\r\n      nextTick(() => {\r\n        if (!reference.value) return\r\n        if (reference.value.$el) {\r\n          inputWidth.value = reference.value.$el.getBoundingClientRect().width\r\n        }\r\n        if (ctx.slots.prefix) {\r\n          const inputChildNodes = reference.value.$el.childNodes\r\n          const input = (Array.from(inputChildNodes) as HTMLElement[]).filter(\r\n            (item) => item.tagName === 'INPUT'\r\n          )[0]\r\n          const prefix = reference.value.$el.querySelector('.sg-input__prefix')\r\n          prefixWidth.value = Math.max(\r\n            prefix.getBoundingClientRect().width + 5,\r\n            30\r\n          )\r\n          if (states.prefixWidth) {\r\n            input.style.paddingLeft = `${Math.max(states.prefixWidth, 30)}px`\r\n          }\r\n        }\r\n      })\r\n      if(isListShow.value) {\r\n        setSelected()\r\n      }\r\n    })\r\n\r\n    onBeforeUnmount(() => {\r\n      removeResizeListener(selectWrapper.value as any, handleResize)\r\n    })\r\n\r\n    if (props.multiple && !Array.isArray(props.modelValue)) {\r\n      ctx.emit(UPDATE_MODEL_EVENT, [])\r\n    }\r\n    if (!props.multiple && Array.isArray(props.modelValue)) {\r\n      ctx.emit(UPDATE_MODEL_EVENT, '')\r\n    }\r\n\r\n    const popperPaneRef = computed(() => {\r\n      return tooltipRef.value?.popperRef?.contentRef\r\n    })\r\n\r\n    return {\r\n      isListShow,\r\n      filterInputText,\r\n      attrs: ctx.attrs,\r\n      tagInMultiLine,\r\n      prefixWidth,\r\n      selectSize,\r\n      isReadonly,\r\n      handleResize,\r\n      tagSize,\r\n      debouncedOnInputChange,\r\n      debouncedQueryChange,\r\n      deletePrevTag,\r\n      deleteTag,\r\n      deleteSelected,\r\n      handleOptionSelect,\r\n      handleMultipleTagRest,\r\n      scrollToOption,\r\n      inputWidth,\r\n      selected,\r\n      inputLength,\r\n      filteredOptionsCount,\r\n      visible,\r\n      softFocus,\r\n      selectedLabel,\r\n      hoverIndex,\r\n      query,\r\n      inputHovering,\r\n      currentPlaceholder,\r\n      menuVisibleOnFocus,\r\n      isOnComposition,\r\n      isSilentBlur,\r\n      options,\r\n      resetInputHeight,\r\n      managePlaceholder,\r\n      showClose,\r\n      selectDisabled,\r\n      iconComponent,\r\n      iconReverse,\r\n      showNewOption,\r\n      emptyText,\r\n      toggleLastOptionHitState,\r\n      resetInputState,\r\n      handleComposition,\r\n      handleMenuEnter,\r\n      handleFocus,\r\n      blur,\r\n      handleBlur,\r\n      handleClearClick,\r\n      handleClose,\r\n      toggleMenu,\r\n      selectOption,\r\n      navigateOptions,\r\n      dropMenuVisible,\r\n      focus,\r\n      updatePopper,\r\n\r\n      reference,\r\n      inputRef,\r\n      tooltipRef,\r\n      tagsRef,\r\n      multipleTagsRef,\r\n      popperPaneRef,\r\n      selectWrapper,\r\n      scrollbar,\r\n\r\n      wrapperKls,\r\n      isShowFilterInput,\r\n      selectTagsStyle,\r\n      handelShowOverflowText,\r\n    }\r\n  },\r\n})\r\n</script>\r\n"],"names":["_withDirectives","_openBlock","_createElementBlock","_normalizeClass","_withModifiers","_createSlots","_withCtx","_createElementVNode","_normalizeStyle","_withKeys","_createCommentVNode","_createVNode","_createBlock","_Fragment","_renderSlot","_toDisplayString"],"mappings":"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"}