{"version":3,"file":"SingleSelector.cjs","sources":["../../../../../../../packages/vue-components/vc-select/src/Selector/SingleSelector.tsx"],"sourcesContent":["import type { VueNode } from '@antdv/types';\nimport type { InnerSelectorProps } from './interface';\nimport { pickAttrs, PropTypes } from '@antdv/utils';\nimport { computed, defineComponent, Fragment, shallowRef, watch } from 'vue';\nimport useInjectLegacySelectContext from '../../../vc-tree-select/src/LegacyContext';\nimport Input from './Input';\n\ninterface SelectorProps extends InnerSelectorProps {\n  inputElement: VueNode;\n  activeValue: string;\n  optionLabelRender: Function;\n  // placeholder\n  compositionStatus: boolean;\n}\nconst props = {\n  inputElement: PropTypes.any,\n  id: String,\n  prefixCls: String,\n  values: PropTypes.array,\n  open: { type: Boolean, default: undefined },\n  searchValue: String,\n  inputRef: PropTypes.any,\n  placeholder: PropTypes.any,\n  compositionStatus: { type: Boolean, default: undefined },\n  disabled: { type: Boolean, default: undefined },\n  mode: String,\n  showSearch: { type: Boolean, default: undefined },\n  autofocus: { type: Boolean, default: undefined },\n  autocomplete: String,\n  activeDescendantId: String,\n  tabindex: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n  activeValue: String,\n  backfill: { type: Boolean, default: undefined },\n  optionLabelRender: Function,\n  onInputChange: Function,\n  onInputPaste: Function,\n  onInputKeyDown: Function,\n  onInputMouseDown: Function,\n  onInputCompositionStart: Function,\n  onInputCompositionEnd: Function,\n};\nconst SingleSelector = defineComponent<SelectorProps>({\n  name: 'SingleSelector',\n  setup(props) {\n    const inputChanged = shallowRef(false);\n\n    const combobox = computed(() => props.mode === 'combobox');\n    const inputEditable = computed(() => combobox.value || props.showSearch);\n\n    const inputValue = computed(() => {\n      let _inputValue: string = props.searchValue || '';\n      if (combobox.value && props.activeValue && !inputChanged.value)\n        _inputValue = props.activeValue;\n\n      return _inputValue;\n    });\n    const legacyTreeSelectContext = useInjectLegacySelectContext();\n    watch(\n      [combobox, () => props.activeValue],\n      () => {\n        if (combobox.value)\n          inputChanged.value = false;\n      },\n      { immediate: true },\n    );\n\n    // Not show text when closed expect combobox mode\n    const hasTextInput = computed(() =>\n      props.mode !== 'combobox' && !props.open && !props.showSearch\n        ? false\n        : !!inputValue.value || props.compositionStatus,\n    );\n\n    const title = computed(() => {\n      const item = props.values[0];\n      return item && (typeof item.label === 'string' || typeof item.label === 'number')\n        ? item.label.toString()\n        : undefined;\n    });\n\n    const renderPlaceholder = () => {\n      if (props.values[0])\n        return null;\n\n      const hiddenStyle = hasTextInput.value ? { visibility: 'hidden' as const } : undefined;\n      return (\n        <span class={`${props.prefixCls}-selection-placeholder`} style={hiddenStyle}>\n          {props.placeholder}\n        </span>\n      );\n    };\n    const handleInput = (e: Event) => {\n      const composing = (e.target as any).composing;\n      if (!composing) {\n        inputChanged.value = true;\n        props.onInputChange(e);\n      }\n    };\n    return () => {\n      const {\n        inputElement,\n        prefixCls,\n        id,\n        values,\n        inputRef,\n        disabled,\n        autofocus,\n        autocomplete,\n        activeDescendantId,\n        open,\n        tabindex,\n        optionLabelRender,\n        onInputKeyDown,\n        onInputMouseDown,\n        onInputPaste,\n        onInputCompositionStart,\n        onInputCompositionEnd,\n      } = props;\n      const item = values[0];\n      let titleNode = null;\n      // custom tree-select title by slot\n\n      // For TreeSelect\n      if (item && legacyTreeSelectContext.customSlots) {\n        const key = item.key ?? item.value;\n        const originData = legacyTreeSelectContext.keyEntities[key]?.node || {};\n        titleNode\n          = legacyTreeSelectContext.customSlots[originData.slots?.title]\n          || legacyTreeSelectContext.customSlots.title\n          || item.label;\n        if (typeof titleNode === 'function')\n          titleNode = titleNode(originData);\n\n        //  else if (treeSelectContext.value.slots.titleRender) {\n        //   // 因历史 title 是覆盖逻辑，新增 titleRender，所有的 title 都走一遍 titleRender\n        //   titleNode = treeSelectContext.value.slots.titleRender(item.option?.data || {});\n        // }\n      } else {\n        titleNode = optionLabelRender && item ? optionLabelRender(item.option) : item?.label;\n      }\n      return (\n        <>\n          <span class={`${prefixCls}-selection-search`}>\n            <Input\n              inputRef={inputRef}\n              prefixCls={prefixCls}\n              id={id}\n              open={open}\n              inputElement={inputElement}\n              disabled={disabled}\n              autofocus={autofocus}\n              autocomplete={autocomplete}\n              editable={inputEditable.value}\n              activeDescendantId={activeDescendantId}\n              value={inputValue.value}\n              onKeydown={onInputKeyDown}\n              onMousedown={onInputMouseDown}\n              onChange={handleInput}\n              onPaste={onInputPaste}\n              onCompositionstart={onInputCompositionStart}\n              onCompositionend={onInputCompositionEnd}\n              tabindex={tabindex}\n              attrs={pickAttrs(props, true)}\n            />\n          </span>\n\n          {/* Display value */}\n          {!combobox.value && item && !hasTextInput.value && (\n            <span class={`${prefixCls}-selection-item`} title={title.value}>\n              <Fragment key={item.key ?? item.value}>{titleNode}</Fragment>\n            </span>\n          )}\n\n          {/* Display placeholder */}\n          {renderPlaceholder()}\n        </>\n      );\n    };\n  },\n});\nSingleSelector.props = props;\nSingleSelector.inheritAttrs = false;\n\nexport default SingleSelector;\n"],"names":["props","inputElement","PropTypes","any","id","String","prefixCls","values","array","open","type","Boolean","default","undefined","searchValue","inputRef","placeholder","compositionStatus","disabled","mode","showSearch","autofocus","autocomplete","activeDescendantId","tabindex","oneOfType","number","string","activeValue","backfill","optionLabelRender","Function","onInputChange","onInputPaste","onInputKeyDown","onInputMouseDown","onInputCompositionStart","onInputCompositionEnd","SingleSelector","defineComponent","name","setup","inputChanged","shallowRef","combobox","computed","inputEditable","value","inputValue","_inputValue","legacyTreeSelectContext","useInjectLegacySelectContext","watch","immediate","hasTextInput","title","item","label","toString","renderPlaceholder","hiddenStyle","visibility","_createVNode","handleInput","e","composing","target","titleNode","customSlots","key","originData","keyEntities","node","slots","option","_Fragment","Input","pickAttrs","inheritAttrs"],"mappings":"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"}