@rc-component/select 1.1.4 → 1.2.0-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/assets/index.css +63 -0
  2. package/assets/index.less +1 -0
  3. package/assets/patch.less +83 -0
  4. package/es/BaseSelect/index.d.ts +14 -3
  5. package/es/BaseSelect/index.js +137 -200
  6. package/es/OptionList.js +3 -3
  7. package/es/Select.d.ts +1 -1
  8. package/es/Select.js +5 -9
  9. package/es/SelectInput/Affix.d.ts +5 -0
  10. package/es/SelectInput/Affix.js +12 -0
  11. package/es/SelectInput/Content/MultipleContent.d.ts +4 -0
  12. package/es/SelectInput/Content/MultipleContent.js +152 -0
  13. package/es/SelectInput/Content/Placeholder.d.ts +5 -0
  14. package/es/SelectInput/Content/Placeholder.js +21 -0
  15. package/es/SelectInput/Content/SingleContent.d.ts +4 -0
  16. package/es/SelectInput/Content/SingleContent.js +98 -0
  17. package/es/SelectInput/Content/index.d.ts +6 -0
  18. package/es/SelectInput/Content/index.js +37 -0
  19. package/es/SelectInput/Input.d.ts +20 -0
  20. package/es/SelectInput/Input.js +214 -0
  21. package/es/SelectInput/context.d.ts +6 -0
  22. package/es/SelectInput/context.js +6 -0
  23. package/es/SelectInput/index.d.ts +39 -0
  24. package/es/SelectInput/index.js +189 -0
  25. package/es/SelectTrigger.d.ts +1 -0
  26. package/es/SelectTrigger.js +5 -3
  27. package/es/TransBtn.d.ts +10 -0
  28. package/es/TransBtn.js +12 -2
  29. package/es/hooks/useAllowClear.d.ts +8 -7
  30. package/es/hooks/useAllowClear.js +21 -23
  31. package/es/hooks/useBaseProps.d.ts +1 -0
  32. package/es/hooks/useComponents.d.ts +12 -0
  33. package/es/hooks/useComponents.js +23 -0
  34. package/es/hooks/useOpen.d.ts +15 -0
  35. package/es/hooks/useOpen.js +76 -0
  36. package/es/hooks/useSearchConfig.d.ts +2 -2
  37. package/es/hooks/useSearchConfig.js +3 -3
  38. package/es/hooks/useSelectTriggerControl.d.ts +1 -1
  39. package/es/hooks/useSelectTriggerControl.js +16 -21
  40. package/es/utils/keyUtil.js +4 -0
  41. package/lib/BaseSelect/index.d.ts +14 -3
  42. package/lib/BaseSelect/index.js +137 -201
  43. package/lib/OptionList.js +3 -3
  44. package/lib/Select.d.ts +1 -1
  45. package/lib/Select.js +5 -9
  46. package/lib/SelectInput/Affix.d.ts +5 -0
  47. package/lib/{hooks/useLayoutEffect.js → SelectInput/Affix.js} +11 -16
  48. package/lib/SelectInput/Content/MultipleContent.d.ts +4 -0
  49. package/lib/{Selector/MultipleSelector.js → SelectInput/Content/MultipleContent.js} +71 -104
  50. package/lib/SelectInput/Content/Placeholder.d.ts +5 -0
  51. package/lib/SelectInput/Content/Placeholder.js +29 -0
  52. package/lib/SelectInput/Content/SingleContent.d.ts +4 -0
  53. package/lib/SelectInput/Content/SingleContent.js +107 -0
  54. package/lib/SelectInput/Content/index.d.ts +6 -0
  55. package/lib/SelectInput/Content/index.js +46 -0
  56. package/lib/SelectInput/Input.d.ts +20 -0
  57. package/lib/SelectInput/Input.js +223 -0
  58. package/lib/SelectInput/context.d.ts +6 -0
  59. package/lib/SelectInput/context.js +15 -0
  60. package/lib/SelectInput/index.d.ts +39 -0
  61. package/lib/SelectInput/index.js +198 -0
  62. package/lib/SelectTrigger.d.ts +1 -0
  63. package/lib/SelectTrigger.js +5 -3
  64. package/lib/TransBtn.d.ts +10 -0
  65. package/lib/TransBtn.js +12 -3
  66. package/lib/hooks/useAllowClear.d.ts +8 -7
  67. package/lib/hooks/useAllowClear.js +21 -24
  68. package/lib/hooks/useBaseProps.d.ts +1 -0
  69. package/lib/hooks/useComponents.d.ts +12 -0
  70. package/lib/hooks/{useDelayReset.js → useComponents.js} +21 -30
  71. package/lib/hooks/useOpen.d.ts +15 -0
  72. package/lib/hooks/useOpen.js +82 -0
  73. package/lib/hooks/useSearchConfig.d.ts +2 -2
  74. package/lib/hooks/useSearchConfig.js +3 -3
  75. package/lib/hooks/useSelectTriggerControl.d.ts +1 -1
  76. package/lib/hooks/useSelectTriggerControl.js +16 -21
  77. package/lib/utils/keyUtil.js +4 -0
  78. package/package.json +5 -4
  79. package/es/Selector/Input.d.ts +0 -27
  80. package/es/Selector/Input.js +0 -61
  81. package/es/Selector/MultipleSelector.d.ts +0 -16
  82. package/es/Selector/MultipleSelector.js +0 -185
  83. package/es/Selector/SingleSelector.d.ts +0 -8
  84. package/es/Selector/SingleSelector.js +0 -104
  85. package/es/Selector/index.d.ts +0 -83
  86. package/es/Selector/index.js +0 -189
  87. package/es/hooks/useDelayReset.d.ts +0 -5
  88. package/es/hooks/useDelayReset.js +0 -33
  89. package/es/hooks/useLayoutEffect.d.ts +0 -5
  90. package/es/hooks/useLayoutEffect.js +0 -17
  91. package/lib/Selector/Input.d.ts +0 -27
  92. package/lib/Selector/Input.js +0 -70
  93. package/lib/Selector/MultipleSelector.d.ts +0 -16
  94. package/lib/Selector/SingleSelector.d.ts +0 -8
  95. package/lib/Selector/SingleSelector.js +0 -113
  96. package/lib/Selector/index.d.ts +0 -83
  97. package/lib/Selector/index.js +0 -196
  98. package/lib/hooks/useDelayReset.d.ts +0 -5
  99. package/lib/hooks/useLayoutEffect.d.ts +0 -5
@@ -3,23 +3,18 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = useLayoutEffect;
6
+ exports.default = Affix;
7
7
  var React = _interopRequireWildcard(require("react"));
8
- var _commonUtil = require("../utils/commonUtil");
9
8
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
9
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
- /* eslint-disable react-hooks/rules-of-hooks */
12
-
13
- /**
14
- * Wrap `React.useLayoutEffect` which will not throw warning message in test env
15
- */
16
- function useLayoutEffect(effect, deps) {
17
- // Never happen in test env
18
- if (_commonUtil.isBrowserClient) {
19
- /* istanbul ignore next */
20
- React.useLayoutEffect(effect, deps);
21
- } else {
22
- React.useEffect(effect, deps);
10
+ // Affix is a simple wrapper which should not read context or logical props
11
+ function Affix(props) {
12
+ const {
13
+ children,
14
+ ...restProps
15
+ } = props;
16
+ if (!children) {
17
+ return null;
23
18
  }
24
- }
25
- /* eslint-enable */
19
+ return /*#__PURE__*/React.createElement("div", restProps, children);
20
+ }
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import type { SharedContentProps } from '.';
3
+ declare const _default: React.ForwardRefExoticComponent<SharedContentProps & React.RefAttributes<HTMLInputElement>>;
4
+ export default _default;
@@ -4,18 +4,19 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var React = _react;
9
- var _classnames = _interopRequireDefault(require("classnames"));
10
- var _pickAttrs = _interopRequireDefault(require("@rc-component/util/lib/pickAttrs"));
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _clsx = require("clsx");
11
9
  var _rcOverflow = _interopRequireDefault(require("rc-overflow"));
12
- var _TransBtn = _interopRequireDefault(require("../TransBtn"));
13
- var _Input = _interopRequireDefault(require("./Input"));
14
- var _useLayoutEffect = _interopRequireDefault(require("../hooks/useLayoutEffect"));
15
- var _commonUtil = require("../utils/commonUtil");
10
+ var _Input = _interopRequireDefault(require("../Input"));
11
+ var _context = require("../context");
12
+ var _TransBtn = _interopRequireDefault(require("../../TransBtn"));
13
+ var _commonUtil = require("../../utils/commonUtil");
14
+ var _useBaseProps = _interopRequireDefault(require("../../hooks/useBaseProps"));
15
+ var _Placeholder = _interopRequireDefault(require("./Placeholder"));
16
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
17
  function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
18
18
  function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
19
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
20
  function itemKey(value) {
20
21
  return value.key ?? value.value;
21
22
  }
@@ -23,63 +24,61 @@ const onPreventMouseDown = event => {
23
24
  event.preventDefault();
24
25
  event.stopPropagation();
25
26
  };
26
- const SelectSelector = props => {
27
+ var _default = exports.default = /*#__PURE__*/React.forwardRef(function MultipleContent({
28
+ inputProps
29
+ }, ref) {
27
30
  const {
28
- id,
29
31
  prefixCls,
30
- values,
31
- open,
32
+ displayValues,
32
33
  searchValue,
33
- autoClearSearchValue,
34
- inputRef,
35
- placeholder,
36
- disabled,
37
34
  mode,
35
+ onSelectorRemove,
36
+ removeIcon: removeIconFromContext
37
+ } = (0, _context.useSelectInputContext)();
38
+ const {
39
+ disabled,
38
40
  showSearch,
39
- autoFocus,
40
- autoComplete,
41
- activeDescendantId,
42
- tabIndex,
43
- removeIcon,
44
- maxTagCount,
41
+ triggerOpen,
42
+ toggleOpen,
43
+ autoClearSearchValue,
44
+ tagRender: tagRenderFromContext,
45
+ maxTagPlaceholder: maxTagPlaceholderFromContext,
45
46
  maxTagTextLength,
46
- maxTagPlaceholder = omittedValues => `+ ${omittedValues.length} ...`,
47
- tagRender,
48
- onToggleOpen,
49
- onRemove,
50
- onInputChange,
51
- onInputPaste,
52
- onInputKeyDown,
53
- onInputMouseDown,
54
- onInputCompositionStart,
55
- onInputCompositionEnd,
56
- onInputBlur
57
- } = props;
58
- const measureRef = React.useRef(null);
59
- const [inputWidth, setInputWidth] = (0, _react.useState)(0);
60
- const [focused, setFocused] = (0, _react.useState)(false);
61
- const selectionPrefixCls = `${prefixCls}-selection`;
47
+ maxTagCount
48
+ } = (0, _useBaseProps.default)();
49
+ const selectionItemPrefixCls = `${prefixCls}-selection-item`;
62
50
 
63
51
  // ===================== Search ======================
64
- const inputValue = open || mode === 'multiple' && autoClearSearchValue === false || mode === 'tags' ? searchValue : '';
65
- const inputEditable = mode === 'tags' || mode === 'multiple' && autoClearSearchValue === false || showSearch && (open || focused);
52
+ // Apply autoClearSearchValue logic: when dropdown is closed and autoClearSearchValue is not false (default true), clear search value
53
+ let computedSearchValue = searchValue;
54
+ if (!triggerOpen && mode === 'multiple' && autoClearSearchValue !== false) {
55
+ computedSearchValue = '';
56
+ }
57
+ const inputValue = showSearch ? computedSearchValue || '' : '';
58
+ const inputEditable = showSearch && !disabled;
66
59
 
67
- // We measure width and set to the input immediately
68
- (0, _useLayoutEffect.default)(() => {
69
- setInputWidth(measureRef.current.scrollWidth);
70
- }, [inputValue]);
60
+ // Props from context with safe defaults
61
+ const removeIcon = removeIconFromContext ?? '×';
62
+ const maxTagPlaceholder = maxTagPlaceholderFromContext ?? (omittedValues => `+ ${omittedValues.length} ...`);
63
+ const tagRender = tagRenderFromContext;
64
+ const onToggleOpen = newOpen => {
65
+ toggleOpen(newOpen);
66
+ };
67
+ const onRemove = value => {
68
+ onSelectorRemove?.(value);
69
+ };
71
70
 
72
- // ===================== Render ======================
71
+ // ======================== Item ========================
73
72
  // >>> Render Selector Node. Includes Item & Rest
74
73
  const defaultRenderSelector = (item, content, itemDisabled, closable, onClose) => /*#__PURE__*/React.createElement("span", {
75
74
  title: (0, _commonUtil.getTitle)(item),
76
- className: (0, _classnames.default)(`${selectionPrefixCls}-item`, {
77
- [`${selectionPrefixCls}-item-disabled`]: itemDisabled
75
+ className: (0, _clsx.clsx)(selectionItemPrefixCls, {
76
+ [`${selectionItemPrefixCls}-disabled`]: itemDisabled
78
77
  })
79
78
  }, /*#__PURE__*/React.createElement("span", {
80
- className: `${selectionPrefixCls}-item-content`
79
+ className: `${selectionItemPrefixCls}-content`
81
80
  }, content), closable && /*#__PURE__*/React.createElement(_TransBtn.default, {
82
- className: `${selectionPrefixCls}-item-remove`,
81
+ className: `${selectionItemPrefixCls}-remove`,
83
82
  onMouseDown: onPreventMouseDown,
84
83
  onClick: onClose,
85
84
  customizeIcon: removeIcon
@@ -87,7 +86,7 @@ const SelectSelector = props => {
87
86
  const customizeRenderSelector = (value, content, itemDisabled, closable, onClose, isMaxTag, info) => {
88
87
  const onMouseDown = e => {
89
88
  onPreventMouseDown(e);
90
- onToggleOpen(!open);
89
+ onToggleOpen(!triggerOpen);
91
90
  };
92
91
  return /*#__PURE__*/React.createElement("span", {
93
92
  onMouseDown: onMouseDown
@@ -101,6 +100,8 @@ const SelectSelector = props => {
101
100
  isMaxTag: !!isMaxTag
102
101
  }));
103
102
  };
103
+
104
+ // ====================== Overflow ======================
104
105
  const renderItem = (valueItem, info) => {
105
106
  const {
106
107
  disabled: itemDisabled,
@@ -127,7 +128,7 @@ const SelectSelector = props => {
127
128
  };
128
129
  const renderRest = omittedValues => {
129
130
  // https://github.com/ant-design/ant-design/issues/48930
130
- if (!values.length) {
131
+ if (!displayValues.length) {
131
132
  return null;
132
133
  }
133
134
  const content = typeof maxTagPlaceholder === 'function' ? maxTagPlaceholder(omittedValues) : maxTagPlaceholder;
@@ -136,59 +137,25 @@ const SelectSelector = props => {
136
137
  }, content, false);
137
138
  };
138
139
 
139
- // >>> Input Node
140
- const inputNode = /*#__PURE__*/React.createElement("div", {
141
- className: `${selectionPrefixCls}-search`,
142
- style: {
143
- width: inputWidth
144
- },
145
- onFocus: () => {
146
- setFocused(true);
147
- },
148
- onBlur: () => {
149
- setFocused(false);
150
- }
151
- }, /*#__PURE__*/React.createElement(_Input.default, {
152
- ref: inputRef,
153
- open: open,
154
- prefixCls: prefixCls,
155
- id: id,
156
- inputElement: null,
157
- disabled: disabled,
158
- autoFocus: autoFocus,
159
- autoComplete: autoComplete,
160
- editable: inputEditable,
161
- activeDescendantId: activeDescendantId,
162
- value: inputValue,
163
- onKeyDown: onInputKeyDown,
164
- onMouseDown: onInputMouseDown,
165
- onChange: onInputChange,
166
- onPaste: onInputPaste,
167
- onCompositionStart: onInputCompositionStart,
168
- onCompositionEnd: onInputCompositionEnd,
169
- onBlur: onInputBlur,
170
- tabIndex: tabIndex,
171
- attrs: (0, _pickAttrs.default)(props, true)
172
- }), /*#__PURE__*/React.createElement("span", {
173
- ref: measureRef,
174
- className: `${selectionPrefixCls}-search-mirror`,
175
- "aria-hidden": true
176
- }, inputValue, "\xA0"));
177
-
178
- // >>> Selections
179
- const selectionNode = /*#__PURE__*/React.createElement(_rcOverflow.default, {
180
- prefixCls: `${selectionPrefixCls}-overflow`,
181
- data: values,
140
+ // ======================= Render =======================
141
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_Placeholder.default, {
142
+ show: !searchValue || !triggerOpen
143
+ }), /*#__PURE__*/React.createElement(_rcOverflow.default, {
144
+ prefixCls: `${prefixCls}-content`,
145
+ data: displayValues,
182
146
  renderItem: renderItem,
183
- renderRest: renderRest,
184
- suffix: inputNode,
147
+ renderRest: renderRest
148
+ // suffix={inputNode}
149
+ ,
150
+ suffix: /*#__PURE__*/React.createElement(_Input.default, _extends({
151
+ ref: ref,
152
+ disabled: disabled,
153
+ readOnly: !inputEditable
154
+ }, inputProps, {
155
+ value: inputValue || '',
156
+ syncWidth: true
157
+ })),
185
158
  itemKey: itemKey,
186
159
  maxCount: maxTagCount
187
- });
188
- return /*#__PURE__*/React.createElement("span", {
189
- className: `${selectionPrefixCls}-wrap`
190
- }, selectionNode, !values.length && !inputValue && /*#__PURE__*/React.createElement("span", {
191
- className: `${selectionPrefixCls}-placeholder`
192
- }, placeholder));
193
- };
194
- var _default = exports.default = SelectSelector;
160
+ }));
161
+ });
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ export interface PlaceholderProps {
3
+ show: boolean;
4
+ }
5
+ export default function Placeholder(props: PlaceholderProps): React.JSX.Element;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = Placeholder;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _context = require("../context");
9
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
10
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
11
+ function Placeholder(props) {
12
+ const {
13
+ prefixCls,
14
+ placeholder,
15
+ displayValues
16
+ } = (0, _context.useSelectInputContext)();
17
+ const {
18
+ show
19
+ } = props;
20
+ if (displayValues.length) {
21
+ return null;
22
+ }
23
+ return /*#__PURE__*/React.createElement("div", {
24
+ className: `${prefixCls}-placeholder`,
25
+ style: {
26
+ visibility: show ? 'visible' : 'hidden'
27
+ }
28
+ }, placeholder);
29
+ }
@@ -0,0 +1,4 @@
1
+ import * as React from 'react';
2
+ import type { SharedContentProps } from '.';
3
+ declare const SingleContent: React.ForwardRefExoticComponent<SharedContentProps & React.RefAttributes<HTMLInputElement>>;
4
+ export default SingleContent;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _clsx = require("clsx");
9
+ var _Input = _interopRequireDefault(require("../Input"));
10
+ var _context = require("../context");
11
+ var _useBaseProps = _interopRequireDefault(require("../../hooks/useBaseProps"));
12
+ var _Placeholder = _interopRequireDefault(require("./Placeholder"));
13
+ var _SelectContext = _interopRequireDefault(require("../../SelectContext"));
14
+ var _commonUtil = require("../../utils/commonUtil");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
19
+ const SingleContent = /*#__PURE__*/React.forwardRef(({
20
+ inputProps
21
+ }, ref) => {
22
+ const {
23
+ prefixCls,
24
+ searchValue,
25
+ activeValue,
26
+ displayValues,
27
+ maxLength,
28
+ mode
29
+ } = (0, _context.useSelectInputContext)();
30
+ const {
31
+ triggerOpen,
32
+ title: rootTitle,
33
+ showSearch
34
+ } = (0, _useBaseProps.default)();
35
+ const selectContext = React.useContext(_SelectContext.default);
36
+ const [inputChanged, setInputChanged] = React.useState(false);
37
+ const combobox = mode === 'combobox';
38
+ const displayValue = displayValues[0];
39
+
40
+ // Implement the same logic as the old SingleSelector
41
+ const mergedSearchValue = React.useMemo(() => {
42
+ if (combobox && activeValue && !inputChanged && triggerOpen) {
43
+ return activeValue;
44
+ }
45
+ return showSearch ? searchValue : '';
46
+ }, [combobox, activeValue, inputChanged, triggerOpen, searchValue, showSearch]);
47
+
48
+ // Extract option props, excluding label and value, and handle className/style merging
49
+ const optionProps = React.useMemo(() => {
50
+ let restProps = {
51
+ className: `${prefixCls}-content-value`,
52
+ style: {
53
+ visibility: mergedSearchValue ? 'hidden' : 'visible'
54
+ }
55
+ };
56
+ if (displayValue && selectContext?.flattenOptions) {
57
+ const option = selectContext.flattenOptions.find(opt => opt.value === displayValue.value);
58
+ if (option?.data) {
59
+ const {
60
+ label,
61
+ value,
62
+ className,
63
+ style,
64
+ key,
65
+ ...rest
66
+ } = option.data;
67
+ restProps = {
68
+ ...restProps,
69
+ ...rest,
70
+ title: (0, _commonUtil.getTitle)(option.data),
71
+ className: (0, _clsx.clsx)(restProps.className, className),
72
+ style: {
73
+ ...restProps.style,
74
+ ...style
75
+ }
76
+ };
77
+ }
78
+ }
79
+ if (displayValue && !restProps.title) {
80
+ restProps.title = (0, _commonUtil.getTitle)(displayValue);
81
+ }
82
+ if (rootTitle !== undefined) {
83
+ restProps.title = rootTitle;
84
+ }
85
+ return restProps;
86
+ }, [displayValue, selectContext?.flattenOptions, prefixCls, mergedSearchValue, rootTitle]);
87
+ React.useEffect(() => {
88
+ if (combobox) {
89
+ setInputChanged(false);
90
+ }
91
+ }, [combobox, activeValue]);
92
+ return /*#__PURE__*/React.createElement("div", {
93
+ className: `${prefixCls}-content`
94
+ }, displayValue ? /*#__PURE__*/React.createElement("div", optionProps, displayValue.label) : /*#__PURE__*/React.createElement(_Placeholder.default, {
95
+ show: !mergedSearchValue
96
+ }), /*#__PURE__*/React.createElement(_Input.default, _extends({
97
+ ref: ref
98
+ }, inputProps, {
99
+ value: mergedSearchValue,
100
+ maxLength: mode === 'combobox' ? maxLength : undefined,
101
+ onChange: e => {
102
+ setInputChanged(true);
103
+ inputProps.onChange?.(e);
104
+ }
105
+ })));
106
+ });
107
+ var _default = exports.default = SingleContent;
@@ -0,0 +1,6 @@
1
+ import * as React from 'react';
2
+ export interface SharedContentProps {
3
+ inputProps: React.InputHTMLAttributes<HTMLInputElement>;
4
+ }
5
+ declare const SelectContent: React.ForwardRefExoticComponent<React.RefAttributes<HTMLInputElement>>;
6
+ export default SelectContent;
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var React = _interopRequireWildcard(require("react"));
8
+ var _pickAttrs = _interopRequireDefault(require("@rc-component/util/lib/pickAttrs"));
9
+ var _SingleContent = _interopRequireDefault(require("./SingleContent"));
10
+ var _MultipleContent = _interopRequireDefault(require("./MultipleContent"));
11
+ var _context = require("../context");
12
+ var _useBaseProps = _interopRequireDefault(require("../../hooks/useBaseProps"));
13
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
14
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
15
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
16
+ const SelectContent = /*#__PURE__*/React.forwardRef(function SelectContent(_, ref) {
17
+ const {
18
+ multiple,
19
+ onInputKeyDown,
20
+ tabIndex
21
+ } = (0, _context.useSelectInputContext)();
22
+ const baseProps = (0, _useBaseProps.default)();
23
+ const {
24
+ showSearch
25
+ } = baseProps;
26
+ const ariaProps = (0, _pickAttrs.default)(baseProps, {
27
+ aria: true
28
+ });
29
+ const sharedInputProps = {
30
+ ...ariaProps,
31
+ onKeyDown: onInputKeyDown,
32
+ readOnly: !showSearch,
33
+ tabIndex
34
+ };
35
+ if (multiple) {
36
+ return /*#__PURE__*/React.createElement(_MultipleContent.default, {
37
+ ref: ref,
38
+ inputProps: sharedInputProps
39
+ });
40
+ }
41
+ return /*#__PURE__*/React.createElement(_SingleContent.default, {
42
+ ref: ref,
43
+ inputProps: sharedInputProps
44
+ });
45
+ });
46
+ var _default = exports.default = SelectContent;
@@ -0,0 +1,20 @@
1
+ import * as React from 'react';
2
+ export interface InputProps {
3
+ id?: string;
4
+ readOnly?: boolean;
5
+ value?: string;
6
+ onChange?: React.ChangeEventHandler<HTMLInputElement>;
7
+ onKeyDown?: React.KeyboardEventHandler<HTMLInputElement>;
8
+ onFocus?: React.FocusEventHandler<HTMLInputElement>;
9
+ onBlur?: React.FocusEventHandler<HTMLInputElement>;
10
+ placeholder?: string;
11
+ className?: string;
12
+ style?: React.CSSProperties;
13
+ maxLength?: number;
14
+ /** width always match content width */
15
+ syncWidth?: boolean;
16
+ /** autoComplete for input */
17
+ autoComplete?: string;
18
+ }
19
+ declare const Input: React.ForwardRefExoticComponent<InputProps & React.RefAttributes<HTMLInputElement>>;
20
+ export default Input;