{"version":3,"file":"SingleSelector.mjs","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","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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"}