@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.
- package/assets/index.css +63 -0
- package/assets/index.less +1 -0
- package/assets/patch.less +83 -0
- package/es/BaseSelect/index.d.ts +14 -3
- package/es/BaseSelect/index.js +137 -200
- package/es/OptionList.js +3 -3
- package/es/Select.d.ts +1 -1
- package/es/Select.js +5 -9
- package/es/SelectInput/Affix.d.ts +5 -0
- package/es/SelectInput/Affix.js +12 -0
- package/es/SelectInput/Content/MultipleContent.d.ts +4 -0
- package/es/SelectInput/Content/MultipleContent.js +152 -0
- package/es/SelectInput/Content/Placeholder.d.ts +5 -0
- package/es/SelectInput/Content/Placeholder.js +21 -0
- package/es/SelectInput/Content/SingleContent.d.ts +4 -0
- package/es/SelectInput/Content/SingleContent.js +98 -0
- package/es/SelectInput/Content/index.d.ts +6 -0
- package/es/SelectInput/Content/index.js +37 -0
- package/es/SelectInput/Input.d.ts +20 -0
- package/es/SelectInput/Input.js +214 -0
- package/es/SelectInput/context.d.ts +6 -0
- package/es/SelectInput/context.js +6 -0
- package/es/SelectInput/index.d.ts +39 -0
- package/es/SelectInput/index.js +189 -0
- package/es/SelectTrigger.d.ts +1 -0
- package/es/SelectTrigger.js +5 -3
- package/es/TransBtn.d.ts +10 -0
- package/es/TransBtn.js +12 -2
- package/es/hooks/useAllowClear.d.ts +8 -7
- package/es/hooks/useAllowClear.js +21 -23
- package/es/hooks/useBaseProps.d.ts +1 -0
- package/es/hooks/useComponents.d.ts +12 -0
- package/es/hooks/useComponents.js +23 -0
- package/es/hooks/useOpen.d.ts +15 -0
- package/es/hooks/useOpen.js +76 -0
- package/es/hooks/useSearchConfig.d.ts +2 -2
- package/es/hooks/useSearchConfig.js +3 -3
- package/es/hooks/useSelectTriggerControl.d.ts +1 -1
- package/es/hooks/useSelectTriggerControl.js +16 -21
- package/es/utils/keyUtil.js +4 -0
- package/lib/BaseSelect/index.d.ts +14 -3
- package/lib/BaseSelect/index.js +137 -201
- package/lib/OptionList.js +3 -3
- package/lib/Select.d.ts +1 -1
- package/lib/Select.js +5 -9
- package/lib/SelectInput/Affix.d.ts +5 -0
- package/lib/{hooks/useLayoutEffect.js → SelectInput/Affix.js} +11 -16
- package/lib/SelectInput/Content/MultipleContent.d.ts +4 -0
- package/lib/{Selector/MultipleSelector.js → SelectInput/Content/MultipleContent.js} +71 -104
- package/lib/SelectInput/Content/Placeholder.d.ts +5 -0
- package/lib/SelectInput/Content/Placeholder.js +29 -0
- package/lib/SelectInput/Content/SingleContent.d.ts +4 -0
- package/lib/SelectInput/Content/SingleContent.js +107 -0
- package/lib/SelectInput/Content/index.d.ts +6 -0
- package/lib/SelectInput/Content/index.js +46 -0
- package/lib/SelectInput/Input.d.ts +20 -0
- package/lib/SelectInput/Input.js +223 -0
- package/lib/SelectInput/context.d.ts +6 -0
- package/lib/SelectInput/context.js +15 -0
- package/lib/SelectInput/index.d.ts +39 -0
- package/lib/SelectInput/index.js +198 -0
- package/lib/SelectTrigger.d.ts +1 -0
- package/lib/SelectTrigger.js +5 -3
- package/lib/TransBtn.d.ts +10 -0
- package/lib/TransBtn.js +12 -3
- package/lib/hooks/useAllowClear.d.ts +8 -7
- package/lib/hooks/useAllowClear.js +21 -24
- package/lib/hooks/useBaseProps.d.ts +1 -0
- package/lib/hooks/useComponents.d.ts +12 -0
- package/lib/hooks/{useDelayReset.js → useComponents.js} +21 -30
- package/lib/hooks/useOpen.d.ts +15 -0
- package/lib/hooks/useOpen.js +82 -0
- package/lib/hooks/useSearchConfig.d.ts +2 -2
- package/lib/hooks/useSearchConfig.js +3 -3
- package/lib/hooks/useSelectTriggerControl.d.ts +1 -1
- package/lib/hooks/useSelectTriggerControl.js +16 -21
- package/lib/utils/keyUtil.js +4 -0
- package/package.json +5 -4
- package/es/Selector/Input.d.ts +0 -27
- package/es/Selector/Input.js +0 -61
- package/es/Selector/MultipleSelector.d.ts +0 -16
- package/es/Selector/MultipleSelector.js +0 -185
- package/es/Selector/SingleSelector.d.ts +0 -8
- package/es/Selector/SingleSelector.js +0 -104
- package/es/Selector/index.d.ts +0 -83
- package/es/Selector/index.js +0 -189
- package/es/hooks/useDelayReset.d.ts +0 -5
- package/es/hooks/useDelayReset.js +0 -33
- package/es/hooks/useLayoutEffect.d.ts +0 -5
- package/es/hooks/useLayoutEffect.js +0 -17
- package/lib/Selector/Input.d.ts +0 -27
- package/lib/Selector/Input.js +0 -70
- package/lib/Selector/MultipleSelector.d.ts +0 -16
- package/lib/Selector/SingleSelector.d.ts +0 -8
- package/lib/Selector/SingleSelector.js +0 -113
- package/lib/Selector/index.d.ts +0 -83
- package/lib/Selector/index.js +0 -196
- package/lib/hooks/useDelayReset.d.ts +0 -5
- 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 =
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
-
|
|
19
|
+
return /*#__PURE__*/React.createElement("div", restProps, children);
|
|
20
|
+
}
|
|
@@ -4,18 +4,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var
|
|
8
|
-
var
|
|
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
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var _commonUtil = require("
|
|
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
|
-
|
|
27
|
+
var _default = exports.default = /*#__PURE__*/React.forwardRef(function MultipleContent({
|
|
28
|
+
inputProps
|
|
29
|
+
}, ref) {
|
|
27
30
|
const {
|
|
28
|
-
id,
|
|
29
31
|
prefixCls,
|
|
30
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
maxTagCount,
|
|
41
|
+
triggerOpen,
|
|
42
|
+
toggleOpen,
|
|
43
|
+
autoClearSearchValue,
|
|
44
|
+
tagRender: tagRenderFromContext,
|
|
45
|
+
maxTagPlaceholder: maxTagPlaceholderFromContext,
|
|
45
46
|
maxTagTextLength,
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
65
|
-
|
|
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
|
-
//
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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
|
-
//
|
|
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,
|
|
77
|
-
[`${
|
|
75
|
+
className: (0, _clsx.clsx)(selectionItemPrefixCls, {
|
|
76
|
+
[`${selectionItemPrefixCls}-disabled`]: itemDisabled
|
|
78
77
|
})
|
|
79
78
|
}, /*#__PURE__*/React.createElement("span", {
|
|
80
|
-
className: `${
|
|
79
|
+
className: `${selectionItemPrefixCls}-content`
|
|
81
80
|
}, content), closable && /*#__PURE__*/React.createElement(_TransBtn.default, {
|
|
82
|
-
className: `${
|
|
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(!
|
|
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 (!
|
|
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
|
-
//
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
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
|
|
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
|
-
|
|
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,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,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,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;
|