rsuite 5.59.3-alpha.1 → 5.60.1
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/Animation/styles/fade.less +1 -1
- package/Animation/styles/index.css +1 -1
- package/CHANGELOG.md +27 -0
- package/DateRangePicker/styles/index.css +2 -3
- package/DateRangePicker/styles/index.less +6 -5
- package/TagInput/styles/index.css +24 -24
- package/TagPicker/styles/index.css +24 -24
- package/TagPicker/styles/index.less +11 -10
- package/Toggle/styles/index.css +2 -1
- package/Toggle/styles/index.less +2 -1
- package/cjs/DateRangePicker/DateRangePicker.js +17 -9
- package/cjs/DateRangePicker/utils.d.ts +2 -2
- package/cjs/DateRangePicker/utils.js +2 -2
- package/cjs/Form/Form.d.ts +13 -9
- package/cjs/Form/Form.js +55 -11
- package/cjs/Form/FormContext.d.ts +2 -2
- package/cjs/Form/hooks/useFormRef.d.ts +9 -7
- package/cjs/Form/hooks/useFormRef.js +5 -32
- package/cjs/Form/hooks/useFormValidate.d.ts +6 -4
- package/cjs/Form/hooks/useFormValidate.js +18 -12
- package/cjs/Form/hooks/useFormValue.d.ts +8 -1
- package/cjs/Form/hooks/useFormValue.js +7 -1
- package/cjs/InputPicker/InputAutosize.js +2 -2
- package/cjs/InputPicker/InputPicker.d.ts +5 -7
- package/cjs/InputPicker/InputPicker.js +119 -151
- package/cjs/InputPicker/InputPickerContext.d.ts +11 -3
- package/cjs/InputPicker/InputPickerContext.js +7 -1
- package/cjs/InputPicker/hooks/useData.d.ts +17 -0
- package/cjs/InputPicker/hooks/useData.js +44 -0
- package/cjs/InputPicker/hooks/useInput.d.ts +21 -0
- package/cjs/InputPicker/hooks/useInput.js +46 -0
- package/cjs/InputPicker/hooks/useMaxWidth.d.ts +4 -0
- package/cjs/InputPicker/hooks/useMaxWidth.js +25 -0
- package/cjs/InputPicker/index.d.ts +2 -1
- package/cjs/InputPicker/utils.d.ts +1 -0
- package/cjs/InputPicker/utils.js +17 -0
- package/cjs/TagInput/index.js +2 -2
- package/cjs/TagPicker/index.js +2 -2
- package/dist/rsuite-no-reset-rtl.css +29 -29
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +29 -29
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +29 -29
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +29 -29
- package/dist/rsuite.js +55 -11
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/DateRangePicker/DateRangePicker.js +17 -9
- package/esm/DateRangePicker/utils.d.ts +2 -2
- package/esm/DateRangePicker/utils.js +2 -2
- package/esm/Form/Form.d.ts +13 -9
- package/esm/Form/Form.js +55 -11
- package/esm/Form/FormContext.d.ts +2 -2
- package/esm/Form/hooks/useFormRef.d.ts +9 -7
- package/esm/Form/hooks/useFormRef.js +5 -32
- package/esm/Form/hooks/useFormValidate.d.ts +6 -4
- package/esm/Form/hooks/useFormValidate.js +18 -12
- package/esm/Form/hooks/useFormValue.d.ts +8 -1
- package/esm/Form/hooks/useFormValue.js +7 -1
- package/esm/InputPicker/InputAutosize.js +2 -2
- package/esm/InputPicker/InputPicker.d.ts +5 -7
- package/esm/InputPicker/InputPicker.js +111 -143
- package/esm/InputPicker/InputPickerContext.d.ts +11 -3
- package/esm/InputPicker/InputPickerContext.js +4 -0
- package/esm/InputPicker/hooks/useData.d.ts +17 -0
- package/esm/InputPicker/hooks/useData.js +38 -0
- package/esm/InputPicker/hooks/useInput.d.ts +21 -0
- package/esm/InputPicker/hooks/useInput.js +40 -0
- package/esm/InputPicker/hooks/useMaxWidth.d.ts +4 -0
- package/esm/InputPicker/hooks/useMaxWidth.js +19 -0
- package/esm/InputPicker/index.d.ts +2 -1
- package/esm/InputPicker/utils.d.ts +1 -0
- package/esm/InputPicker/utils.js +12 -0
- package/esm/TagInput/index.js +2 -2
- package/esm/TagPicker/index.js +2 -2
- package/package.json +1 -1
- package/styles/variables.less +0 -1
|
@@ -6,7 +6,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
6
6
|
exports.__esModule = true;
|
|
7
7
|
exports.default = void 0;
|
|
8
8
|
var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
|
|
9
|
-
var
|
|
9
|
+
var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
10
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
11
11
|
var _react = _interopRequireWildcard(require("react"));
|
|
12
12
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -18,7 +18,6 @@ var _clone = _interopRequireDefault(require("lodash/clone"));
|
|
|
18
18
|
var _isArray = _interopRequireDefault(require("lodash/isArray"));
|
|
19
19
|
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
20
20
|
var _pick = _interopRequireDefault(require("lodash/pick"));
|
|
21
|
-
var _getWidth = _interopRequireDefault(require("dom-lib/getWidth"));
|
|
22
21
|
var _shallowEqual = _interopRequireDefault(require("../utils/shallowEqual"));
|
|
23
22
|
var _treeUtils = require("../utils/treeUtils");
|
|
24
23
|
var _Plaintext = _interopRequireDefault(require("../internals/Plaintext"));
|
|
@@ -27,22 +26,13 @@ var _propTypes2 = require("../internals/propTypes");
|
|
|
27
26
|
var _getDataGroupBy = require("../utils/getDataGroupBy");
|
|
28
27
|
var _Picker = require("../internals/Picker");
|
|
29
28
|
var _Tag = _interopRequireDefault(require("../Tag"));
|
|
30
|
-
var _InputAutosize = _interopRequireDefault(require("./InputAutosize"));
|
|
31
29
|
var _TextBox = _interopRequireDefault(require("./TextBox"));
|
|
32
|
-
var _InputPickerContext =
|
|
30
|
+
var _InputPickerContext = require("./InputPickerContext");
|
|
33
31
|
var _Stack = _interopRequireDefault(require("../Stack"));
|
|
32
|
+
var _useInput2 = _interopRequireDefault(require("./hooks/useInput"));
|
|
33
|
+
var _useData2 = _interopRequireDefault(require("./hooks/useData"));
|
|
34
|
+
var _utils2 = require("./utils");
|
|
34
35
|
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
|
35
|
-
var convertSize = function convertSize(size) {
|
|
36
|
-
switch (size) {
|
|
37
|
-
case 'lg':
|
|
38
|
-
return 'lg';
|
|
39
|
-
case 'sm':
|
|
40
|
-
case 'xs':
|
|
41
|
-
return 'sm';
|
|
42
|
-
default:
|
|
43
|
-
return 'md';
|
|
44
|
-
}
|
|
45
|
-
};
|
|
46
36
|
/**
|
|
47
37
|
* Single item selector with text box input.
|
|
48
38
|
*
|
|
@@ -73,10 +63,13 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
73
63
|
overrideLocale = props.locale,
|
|
74
64
|
toggleAs = props.toggleAs,
|
|
75
65
|
style = props.style,
|
|
66
|
+
size = props.size,
|
|
76
67
|
_props$searchable = props.searchable,
|
|
77
68
|
searchable = _props$searchable === void 0 ? true : _props$searchable,
|
|
78
69
|
controlledOpen = props.open,
|
|
79
70
|
placeholder = props.placeholder,
|
|
71
|
+
_props$placement = props.placement,
|
|
72
|
+
placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
|
|
80
73
|
groupBy = props.groupBy,
|
|
81
74
|
menuClassName = props.menuClassName,
|
|
82
75
|
menuStyle = props.menuStyle,
|
|
@@ -113,21 +106,17 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
113
106
|
onBlur = props.onBlur,
|
|
114
107
|
onFocus = props.onFocus,
|
|
115
108
|
searchBy = props.searchBy,
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
disabledOptions = _useContext.disabledOptions,
|
|
125
|
-
onTagRemove = _useContext.onTagRemove,
|
|
126
|
-
renderCheckbox = _useContext.renderCheckbox;
|
|
109
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "appearance", "cleanable", "cacheData", "classPrefix", "data", "disabled", "readOnly", "plaintext", "defaultValue", "defaultOpen", "disabledItemValues", "locale", "toggleAs", "style", "size", "searchable", "open", "placeholder", "placement", "groupBy", "menuClassName", "menuStyle", "menuAutoWidth", "menuMaxHeight", "creatable", "shouldDisplayCreateOption", "value", "valueKey", "virtualized", "labelKey", "listProps", "id", "tabIndex", "sort", "renderMenu", "renderExtraFooter", "renderValue", "renderMenuItem", "renderMenuGroup", "onEnter", "onEntered", "onExit", "onExited", "onChange", "onClean", "onCreate", "onSearch", "onSelect", "onBlur", "onFocus", "searchBy"]);
|
|
110
|
+
var _useTagContext = (0, _InputPickerContext.useTagContext)(),
|
|
111
|
+
multi = _useTagContext.multi,
|
|
112
|
+
tagProps = _useTagContext.tagProps,
|
|
113
|
+
trigger = _useTagContext.trigger,
|
|
114
|
+
disabledOptions = _useTagContext.disabledOptions,
|
|
115
|
+
onTagRemove = _useTagContext.onTagRemove,
|
|
116
|
+
renderCheckbox = _useTagContext.renderCheckbox;
|
|
127
117
|
if (groupBy === valueKey || groupBy === labelKey) {
|
|
128
118
|
throw Error('`groupBy` can not be equal to `valueKey` and `labelKey`');
|
|
129
119
|
}
|
|
130
|
-
var inputRef = (0, _react.useRef)();
|
|
131
120
|
var _usePickerRef = (0, _Picker.usePickerRef)(ref),
|
|
132
121
|
triggerRef = _usePickerRef.trigger,
|
|
133
122
|
root = _usePickerRef.root,
|
|
@@ -139,29 +128,34 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
139
128
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
140
129
|
prefix = _useClassNames.prefix,
|
|
141
130
|
merge = _useClassNames.merge;
|
|
142
|
-
var
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
var
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
131
|
+
var _useControlled = (0, _utils.useControlled)(controlledOpen, defaultOpen),
|
|
132
|
+
open = _useControlled[0],
|
|
133
|
+
setOpen = _useControlled[1];
|
|
134
|
+
var _useInput = (0, _useInput2.default)({
|
|
135
|
+
multi: multi,
|
|
136
|
+
triggerRef: triggerRef
|
|
137
|
+
}),
|
|
138
|
+
inputRef = _useInput.inputRef,
|
|
139
|
+
inputProps = _useInput.inputProps,
|
|
140
|
+
focus = _useInput.focus,
|
|
141
|
+
blur = _useInput.blur;
|
|
142
|
+
var handleDataChange = function handleDataChange(data) {
|
|
143
|
+
var _data$;
|
|
144
|
+
setFocusItemValue(data === null || data === void 0 ? void 0 : (_data$ = data[0]) === null || _data$ === void 0 ? void 0 : _data$[valueKey]);
|
|
145
|
+
};
|
|
146
|
+
var _useData = (0, _useData2.default)({
|
|
147
|
+
controlledData: controlledData,
|
|
148
|
+
cacheData: cacheData,
|
|
149
|
+
onChange: handleDataChange
|
|
150
|
+
}),
|
|
151
|
+
data = _useData.data,
|
|
152
|
+
dataWithCache = _useData.dataWithCache,
|
|
153
|
+
newData = _useData.newData,
|
|
154
|
+
setNewData = _useData.setNewData;
|
|
155
|
+
var _useControlled2 = (0, _utils.useControlled)(valueProp, multi ? defaultValue || [] : defaultValue),
|
|
156
|
+
value = _useControlled2[0],
|
|
157
|
+
setValue = _useControlled2[1],
|
|
158
|
+
isControlled = _useControlled2[2];
|
|
165
159
|
var cloneValue = function cloneValue() {
|
|
166
160
|
return multi ? (0, _clone.default)(value) || [] : value;
|
|
167
161
|
};
|
|
@@ -172,62 +166,53 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
172
166
|
// The focus is on the trigger button after closing
|
|
173
167
|
(_target$current = target.current) === null || _target$current === void 0 ? void 0 : (_target$current$focus = _target$current.focus) === null || _target$current$focus === void 0 ? void 0 : _target$current$focus.call(_target$current);
|
|
174
168
|
});
|
|
169
|
+
var focusItemValueOptions = {
|
|
170
|
+
data: dataWithCache,
|
|
171
|
+
valueKey: valueKey,
|
|
172
|
+
target: function target() {
|
|
173
|
+
return overlay.current;
|
|
174
|
+
}
|
|
175
|
+
};
|
|
175
176
|
|
|
176
177
|
// Used to hover the focuse item when trigger `onKeydown`
|
|
177
|
-
var _useFocusItemValue = (0, _Picker.useFocusItemValue)(multi ? value === null || value === void 0 ? void 0 : value[0] : value,
|
|
178
|
-
data: getAllDataAndCache(),
|
|
179
|
-
valueKey: valueKey,
|
|
180
|
-
target: function target() {
|
|
181
|
-
return overlay.current;
|
|
182
|
-
}
|
|
183
|
-
}),
|
|
178
|
+
var _useFocusItemValue = (0, _Picker.useFocusItemValue)(multi ? value === null || value === void 0 ? void 0 : value[0] : value, focusItemValueOptions),
|
|
184
179
|
focusItemValue = _useFocusItemValue.focusItemValue,
|
|
185
180
|
setFocusItemValue = _useFocusItemValue.setFocusItemValue,
|
|
186
181
|
onKeyDown = _useFocusItemValue.onKeyDown;
|
|
187
|
-
var
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
182
|
+
var onSearchCallback = (0, _utils.useEventCallback)(function (searchKeyword, filteredData, event) {
|
|
183
|
+
if (!disabledOptions) {
|
|
184
|
+
var _filteredData$;
|
|
185
|
+
// The first option after filtering is the focus.
|
|
186
|
+
var firstItemValue = filteredData === null || filteredData === void 0 ? void 0 : (_filteredData$ = filteredData[0]) === null || _filteredData$ === void 0 ? void 0 : _filteredData$[valueKey];
|
|
187
|
+
|
|
188
|
+
// If there is no value in the option and new options are supported, the search keyword is the first option
|
|
189
|
+
if (!firstItemValue && creatable) {
|
|
190
|
+
firstItemValue = searchKeyword;
|
|
191
|
+
}
|
|
192
|
+
setFocusItemValue(firstItemValue);
|
|
193
|
+
}
|
|
191
194
|
onSearch === null || onSearch === void 0 ? void 0 : onSearch(searchKeyword, event);
|
|
192
195
|
});
|
|
196
|
+
var searchOptions = {
|
|
197
|
+
labelKey: labelKey,
|
|
198
|
+
searchBy: searchBy,
|
|
199
|
+
callback: onSearchCallback
|
|
200
|
+
};
|
|
193
201
|
|
|
194
202
|
// Use search keywords to filter options.
|
|
195
|
-
var _useSearch = (0, _Picker.useSearch)(
|
|
196
|
-
labelKey: labelKey,
|
|
197
|
-
searchBy: searchBy,
|
|
198
|
-
callback: handleSearchCallback
|
|
199
|
-
}),
|
|
203
|
+
var _useSearch = (0, _Picker.useSearch)(data, searchOptions),
|
|
200
204
|
searchKeyword = _useSearch.searchKeyword,
|
|
201
205
|
resetSearch = _useSearch.resetSearch,
|
|
202
206
|
checkShouldDisplay = _useSearch.checkShouldDisplay,
|
|
203
|
-
handleSearch = _useSearch.handleSearch; // Update the
|
|
207
|
+
handleSearch = _useSearch.handleSearch; // Update the position of the menu when the search keyword and value change
|
|
204
208
|
(0, _react.useEffect)(function () {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
setData(controlledData);
|
|
208
|
-
setNewData([]);
|
|
209
|
-
setFocusItemValue(controlledData === null || controlledData === void 0 ? void 0 : (_controlledData$ = controlledData[0]) === null || _controlledData$ === void 0 ? void 0 : _controlledData$[valueKey]);
|
|
210
|
-
}
|
|
211
|
-
}, [setFocusItemValue, controlledData, uncontrolledData, valueKey]);
|
|
212
|
-
(0, _react.useEffect)(function () {
|
|
213
|
-
var _triggerRef$current2;
|
|
214
|
-
// In multiple selection, you need to set a maximum width for the input.
|
|
215
|
-
if ((_triggerRef$current2 = triggerRef.current) !== null && _triggerRef$current2 !== void 0 && _triggerRef$current2.root) {
|
|
216
|
-
setMaxWidth((0, _getWidth.default)(triggerRef.current.root));
|
|
217
|
-
}
|
|
218
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
219
|
-
}, []);
|
|
220
|
-
|
|
221
|
-
// Update the position of the menu when the search keyword and value change
|
|
222
|
-
(0, _react.useEffect)(function () {
|
|
223
|
-
var _triggerRef$current3, _triggerRef$current3$;
|
|
224
|
-
(_triggerRef$current3 = triggerRef.current) === null || _triggerRef$current3 === void 0 ? void 0 : (_triggerRef$current3$ = _triggerRef$current3.updatePosition) === null || _triggerRef$current3$ === void 0 ? void 0 : _triggerRef$current3$.call(_triggerRef$current3);
|
|
209
|
+
var _triggerRef$current2, _triggerRef$current2$;
|
|
210
|
+
(_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : (_triggerRef$current2$ = _triggerRef$current2.updatePosition) === null || _triggerRef$current2$ === void 0 ? void 0 : _triggerRef$current2$.call(_triggerRef$current2);
|
|
225
211
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
226
212
|
}, [searchKeyword, value]);
|
|
227
213
|
var getDataItem = function getDataItem(value) {
|
|
228
214
|
// Find active `MenuItem` by `value`
|
|
229
|
-
var
|
|
230
|
-
var activeItem = allData.find(function (item) {
|
|
215
|
+
var activeItem = dataWithCache.find(function (item) {
|
|
231
216
|
return (0, _shallowEqual.default)(item[valueKey], value);
|
|
232
217
|
});
|
|
233
218
|
var itemNode = placeholder;
|
|
@@ -240,33 +225,20 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
240
225
|
itemNode: itemNode
|
|
241
226
|
};
|
|
242
227
|
};
|
|
243
|
-
var getInput = function getInput() {
|
|
244
|
-
var _inputRef$current;
|
|
245
|
-
return multi ? (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.input : inputRef.current;
|
|
246
|
-
};
|
|
247
|
-
var focusInput = function focusInput() {
|
|
248
|
-
var _getInput;
|
|
249
|
-
return (_getInput = getInput()) === null || _getInput === void 0 ? void 0 : _getInput.focus();
|
|
250
|
-
};
|
|
251
|
-
var blurInput = function blurInput() {
|
|
252
|
-
var _getInput2;
|
|
253
|
-
return (_getInput2 = getInput()) === null || _getInput2 === void 0 ? void 0 : _getInput2.blur();
|
|
254
|
-
};
|
|
255
228
|
|
|
256
229
|
/**
|
|
257
230
|
* Convert the string of the newly created option into an object.
|
|
258
231
|
*/
|
|
259
232
|
var createOption = function createOption(value) {
|
|
260
|
-
var
|
|
233
|
+
var _option;
|
|
234
|
+
var option = (_option = {
|
|
235
|
+
create: true
|
|
236
|
+
}, _option[valueKey] = value, _option[labelKey] = value, _option);
|
|
261
237
|
if (groupBy) {
|
|
262
|
-
var
|
|
263
|
-
return
|
|
264
|
-
create: true
|
|
265
|
-
}, _ref[groupBy] = locale === null || locale === void 0 ? void 0 : locale.newItem, _ref[valueKey] = value, _ref[labelKey] = value, _ref;
|
|
238
|
+
var _extends2;
|
|
239
|
+
return (0, _extends3.default)((_extends2 = {}, _extends2[groupBy] = locale === null || locale === void 0 ? void 0 : locale.newItem, _extends2), option);
|
|
266
240
|
}
|
|
267
|
-
return
|
|
268
|
-
create: true
|
|
269
|
-
}, _ref2[valueKey] = value, _ref2[labelKey] = value, _ref2;
|
|
241
|
+
return option;
|
|
270
242
|
};
|
|
271
243
|
var handleChange = (0, _utils.useEventCallback)(function (value, event) {
|
|
272
244
|
onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
|
|
@@ -326,7 +298,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
326
298
|
setFocusItemValue(nextItemValue);
|
|
327
299
|
handleSelect(val, item, event);
|
|
328
300
|
handleChange(val, event);
|
|
329
|
-
|
|
301
|
+
focus();
|
|
330
302
|
});
|
|
331
303
|
var handleTagKeyPress = (0, _utils.useEventCallback)(function (event) {
|
|
332
304
|
// When composing, ignore the keypress event.
|
|
@@ -334,31 +306,36 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
334
306
|
return;
|
|
335
307
|
}
|
|
336
308
|
var val = cloneValue();
|
|
337
|
-
var
|
|
338
|
-
|
|
309
|
+
var newItemValue = focusItemValue || '';
|
|
310
|
+
|
|
311
|
+
// In TagInput
|
|
312
|
+
if (multi && disabledOptions) {
|
|
313
|
+
newItemValue = searchKeyword;
|
|
314
|
+
}
|
|
315
|
+
if (!newItemValue || !data) {
|
|
339
316
|
return;
|
|
340
317
|
}
|
|
341
318
|
|
|
342
319
|
// If the value is disabled in this option, it is returned.
|
|
343
320
|
if (disabledItemValues !== null && disabledItemValues !== void 0 && disabledItemValues.some(function (item) {
|
|
344
|
-
return item ===
|
|
321
|
+
return item === newItemValue;
|
|
345
322
|
})) {
|
|
346
323
|
return;
|
|
347
324
|
}
|
|
348
325
|
if (!val.some(function (v) {
|
|
349
|
-
return (0, _shallowEqual.default)(v,
|
|
326
|
+
return (0, _shallowEqual.default)(v, newItemValue);
|
|
350
327
|
})) {
|
|
351
|
-
val.push(
|
|
328
|
+
val.push(newItemValue);
|
|
352
329
|
} else if (!disabledOptions) {
|
|
353
330
|
(0, _remove.default)(val, function (itemVal) {
|
|
354
|
-
return (0, _shallowEqual.default)(itemVal,
|
|
331
|
+
return (0, _shallowEqual.default)(itemVal, newItemValue);
|
|
355
332
|
});
|
|
356
333
|
}
|
|
357
334
|
var focusItem = data.find(function (item) {
|
|
358
|
-
return (0, _shallowEqual.default)(item === null || item === void 0 ? void 0 : item[valueKey],
|
|
335
|
+
return (0, _shallowEqual.default)(item === null || item === void 0 ? void 0 : item[valueKey], newItemValue);
|
|
359
336
|
});
|
|
360
337
|
if (!focusItem) {
|
|
361
|
-
focusItem = createOption(
|
|
338
|
+
focusItem = createOption(newItemValue);
|
|
362
339
|
}
|
|
363
340
|
setValue(val);
|
|
364
341
|
resetSearch();
|
|
@@ -378,8 +355,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
378
355
|
}
|
|
379
356
|
|
|
380
357
|
// Find active `MenuItem` by `value`
|
|
381
|
-
var
|
|
382
|
-
var focusItem = allData.find(function (item) {
|
|
358
|
+
var focusItem = data.find(function (item) {
|
|
383
359
|
return (0, _shallowEqual.default)(item[valueKey], focusItemValue);
|
|
384
360
|
});
|
|
385
361
|
|
|
@@ -403,7 +379,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
403
379
|
var removeLastItem = (0, _utils.useEventCallback)(function (event) {
|
|
404
380
|
var target = event === null || event === void 0 ? void 0 : event.target;
|
|
405
381
|
if ((target === null || target === void 0 ? void 0 : target.tagName) !== 'INPUT') {
|
|
406
|
-
|
|
382
|
+
focus();
|
|
407
383
|
return;
|
|
408
384
|
}
|
|
409
385
|
if ((target === null || target === void 0 ? void 0 : target.tagName) === 'INPUT' && target !== null && target !== void 0 && target.value) {
|
|
@@ -457,7 +433,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
457
433
|
} else {
|
|
458
434
|
events.onMenuPressEnter = handleMenuItemKeyPress;
|
|
459
435
|
}
|
|
460
|
-
var onPickerKeyDown = (0, _Picker.useToggleKeyDownEvent)((0,
|
|
436
|
+
var onPickerKeyDown = (0, _Picker.useToggleKeyDownEvent)((0, _extends3.default)({
|
|
461
437
|
trigger: triggerRef,
|
|
462
438
|
target: target,
|
|
463
439
|
overlay: overlay
|
|
@@ -466,19 +442,20 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
466
442
|
setFocusItemValue(multi ? value === null || value === void 0 ? void 0 : value[0] : value);
|
|
467
443
|
resetSearch();
|
|
468
444
|
});
|
|
469
|
-
var handleFocus = (0, _utils.useEventCallback)(function () {
|
|
445
|
+
var handleFocus = (0, _utils.useEventCallback)(function (event) {
|
|
470
446
|
if (!readOnly) {
|
|
471
|
-
var _triggerRef$
|
|
447
|
+
var _triggerRef$current3;
|
|
472
448
|
setOpen(true);
|
|
473
|
-
(_triggerRef$
|
|
449
|
+
(_triggerRef$current3 = triggerRef.current) === null || _triggerRef$current3 === void 0 ? void 0 : _triggerRef$current3.open();
|
|
474
450
|
}
|
|
451
|
+
onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
|
|
475
452
|
});
|
|
476
453
|
var handleEnter = (0, _utils.useEventCallback)(function () {
|
|
477
|
-
|
|
454
|
+
focus();
|
|
478
455
|
setOpen(true);
|
|
479
456
|
});
|
|
480
457
|
var handleExit = (0, _utils.useEventCallback)(function () {
|
|
481
|
-
|
|
458
|
+
blur();
|
|
482
459
|
setOpen(false);
|
|
483
460
|
});
|
|
484
461
|
var renderListItem = function renderListItem(label, item) {
|
|
@@ -522,11 +499,11 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
522
499
|
if (!isValid) {
|
|
523
500
|
return null;
|
|
524
501
|
}
|
|
525
|
-
return /*#__PURE__*/_react.default.createElement(_Tag.default, (0,
|
|
502
|
+
return /*#__PURE__*/_react.default.createElement(_Tag.default, (0, _extends3.default)({
|
|
526
503
|
role: "option"
|
|
527
504
|
}, tagRest, {
|
|
528
505
|
key: tag,
|
|
529
|
-
size: convertSize(size),
|
|
506
|
+
size: (0, _utils2.convertSize)(size),
|
|
530
507
|
closable: !disabled && closable && !readOnly && !plaintext,
|
|
531
508
|
title: typeof itemNode === 'string' ? itemNode : undefined,
|
|
532
509
|
onClose: (0, _utils.createChainedFunction)(handleRemoveItemByTag.bind(null, tag), onClose)
|
|
@@ -545,11 +522,11 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
545
522
|
className = positionProps.className;
|
|
546
523
|
var menuClassPrefix = multi ? 'picker-check-menu' : 'picker-select-menu';
|
|
547
524
|
var classes = merge(className, menuClassName, prefix(multi ? 'check-menu' : 'select-menu'));
|
|
548
|
-
var styles = (0,
|
|
525
|
+
var styles = (0, _extends3.default)({}, menuStyle, {
|
|
549
526
|
left: left,
|
|
550
527
|
top: top
|
|
551
528
|
});
|
|
552
|
-
var items = (0, _treeUtils.filterNodesOfTree)(
|
|
529
|
+
var items = (0, _treeUtils.filterNodesOfTree)(data, checkShouldDisplay);
|
|
553
530
|
if (creatable && (typeof shouldDisplayCreateOption === 'function' ? shouldDisplayCreateOption(searchKeyword, items) : searchKeyword && !items.find(function (item) {
|
|
554
531
|
return item[valueKey] === searchKeyword;
|
|
555
532
|
}))) {
|
|
@@ -588,8 +565,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
588
565
|
,
|
|
589
566
|
group: !(0, _isUndefined.default)(groupBy),
|
|
590
567
|
groupBy: groupBy,
|
|
591
|
-
onSelect: multi ? handleCheckTag : handleSelectItem
|
|
592
|
-
,
|
|
568
|
+
onSelect: multi ? handleCheckTag : handleSelectItem,
|
|
593
569
|
renderMenuGroup: renderMenuGroup,
|
|
594
570
|
renderMenuItem: renderListItem,
|
|
595
571
|
virtualized: virtualized
|
|
@@ -618,7 +594,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
618
594
|
var hasSingleValue = !(0, _isNil.default)(value) && (0, _isFunction.default)(renderValue) && !(0, _isNil.default)(itemNode);
|
|
619
595
|
var hasMultiValue = (0, _isArray.default)(value) && value.length > 0 && (0, _isFunction.default)(renderValue) && !(0, _isNil.default)(tagElements);
|
|
620
596
|
var hasValue = multi ? !!(tagElements !== null && tagElements !== void 0 && tagElements.length) || hasMultiValue : isValid || hasSingleValue;
|
|
621
|
-
var _usePickerClassName = (0, _Picker.usePickerClassName)((0,
|
|
597
|
+
var _usePickerClassName = (0, _Picker.usePickerClassName)((0, _extends3.default)({}, props, {
|
|
622
598
|
classPrefix: classPrefix,
|
|
623
599
|
appearance: appearance,
|
|
624
600
|
hasValue: hasValue,
|
|
@@ -630,14 +606,6 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
630
606
|
var classes = merge(pickerClasses, (_merge = {}, _merge[prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["tag"])))] = multi, _merge[prefix((multi ? 'tag' : 'input') + "-" + size)] = size, _merge[prefix(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteralLoose2.default)(["focused"])))] = open, _merge[prefix(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteralLoose2.default)(["disabled-options"])))] = disabledOptions, _merge));
|
|
631
607
|
var searching = !!searchKeyword && open;
|
|
632
608
|
var editable = searchable && !disabled && !rest.loading;
|
|
633
|
-
var inputProps = multi ? {
|
|
634
|
-
inputStyle: {
|
|
635
|
-
maxWidth: maxWidth - 63
|
|
636
|
-
},
|
|
637
|
-
as: _InputAutosize.default
|
|
638
|
-
} : {
|
|
639
|
-
as: 'input'
|
|
640
|
-
};
|
|
641
609
|
if (plaintext) {
|
|
642
610
|
var plaintextProps = {};
|
|
643
611
|
|
|
@@ -648,7 +616,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
648
616
|
plaintextProps.wrap = true;
|
|
649
617
|
plaintextProps.childrenRenderMode = 'clone';
|
|
650
618
|
}
|
|
651
|
-
return /*#__PURE__*/_react.default.createElement(_Plaintext.default, (0,
|
|
619
|
+
return /*#__PURE__*/_react.default.createElement(_Plaintext.default, (0, _extends3.default)({
|
|
652
620
|
localeKey: "notSelected",
|
|
653
621
|
ref: target
|
|
654
622
|
}, plaintextProps), itemNode || (tagElements !== null && tagElements !== void 0 && tagElements.length ? tagElements : null) || placeholder);
|
|
@@ -669,10 +637,10 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
669
637
|
}, /*#__PURE__*/_react.default.createElement(Component, {
|
|
670
638
|
className: classes,
|
|
671
639
|
style: style,
|
|
672
|
-
onClick:
|
|
640
|
+
onClick: focus,
|
|
673
641
|
onKeyDown: onPickerKeyDown,
|
|
674
642
|
ref: root
|
|
675
|
-
}, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0,
|
|
643
|
+
}, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends3.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys)), {
|
|
676
644
|
appearance: appearance,
|
|
677
645
|
readOnly: readOnly,
|
|
678
646
|
plaintext: plaintext,
|
|
@@ -691,21 +659,21 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
691
659
|
size: size
|
|
692
660
|
}), searching || multi && hasValue ? null : itemNode || placeholderNode), /*#__PURE__*/_react.default.createElement(_TextBox.default, {
|
|
693
661
|
showTagList: hasValue && multi,
|
|
662
|
+
inputRef: inputRef,
|
|
663
|
+
inputValue: open ? searchKeyword : '',
|
|
664
|
+
inputProps: inputProps,
|
|
694
665
|
tags: tagElements,
|
|
695
666
|
editable: editable,
|
|
696
667
|
readOnly: readOnly,
|
|
697
668
|
disabled: disabled,
|
|
698
669
|
multiple: multi,
|
|
699
670
|
onBlur: onBlur,
|
|
700
|
-
onFocus:
|
|
701
|
-
|
|
702
|
-
onChange: handleSearch,
|
|
703
|
-
inputValue: open ? searchKeyword : '',
|
|
704
|
-
inputProps: inputProps
|
|
671
|
+
onFocus: handleFocus,
|
|
672
|
+
onChange: handleSearch
|
|
705
673
|
})));
|
|
706
674
|
});
|
|
707
675
|
InputPicker.displayName = 'InputPicker';
|
|
708
|
-
InputPicker.propTypes = (0,
|
|
676
|
+
InputPicker.propTypes = (0, _extends3.default)({}, _Picker.listPickerPropTypes, {
|
|
709
677
|
locale: _propTypes.default.any,
|
|
710
678
|
appearance: (0, _propTypes2.oneOf)(['default', 'subtle']),
|
|
711
679
|
cacheData: _propTypes.default.array,
|
|
@@ -9,18 +9,26 @@ export interface TagOnlyProps {
|
|
|
9
9
|
* Set the trigger for creating tags. only valid when creatable
|
|
10
10
|
*/
|
|
11
11
|
trigger: TriggerType | TriggerType[];
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Callback fired when a tag is removed.
|
|
14
|
+
*/
|
|
13
15
|
onTagRemove?: (tag: string, event: React.MouseEvent) => void;
|
|
14
16
|
}
|
|
15
17
|
export interface InputPickerContextProps extends TagOnlyProps {
|
|
16
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Multiple selections are allowed
|
|
20
|
+
*/
|
|
17
21
|
multi?: boolean;
|
|
18
22
|
/**
|
|
19
23
|
* No overlay provides options
|
|
20
24
|
*/
|
|
21
25
|
disabledOptions?: boolean;
|
|
22
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Custom render checkbox on menu item
|
|
28
|
+
*/
|
|
23
29
|
renderCheckbox?: (checkboxProps: CheckboxProps) => React.ReactNode;
|
|
24
30
|
}
|
|
25
31
|
declare const InputPickerContext: React.Context<InputPickerContextProps>;
|
|
32
|
+
export declare function useTagContext(): InputPickerContextProps;
|
|
33
|
+
export declare const TagProvider: React.Provider<InputPickerContextProps>;
|
|
26
34
|
export default InputPickerContext;
|
|
@@ -3,11 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.
|
|
6
|
+
exports.useTagContext = useTagContext;
|
|
7
|
+
exports.default = exports.TagProvider = void 0;
|
|
7
8
|
var _react = _interopRequireDefault(require("react"));
|
|
8
9
|
var InputPickerContext = /*#__PURE__*/_react.default.createContext({
|
|
9
10
|
tagProps: {},
|
|
10
11
|
trigger: 'Enter'
|
|
11
12
|
});
|
|
13
|
+
function useTagContext() {
|
|
14
|
+
return _react.default.useContext(InputPickerContext);
|
|
15
|
+
}
|
|
16
|
+
var TagProvider = InputPickerContext.Provider;
|
|
17
|
+
exports.TagProvider = TagProvider;
|
|
12
18
|
var _default = InputPickerContext;
|
|
13
19
|
exports.default = _default;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { ItemDataType } from '../../@types/common';
|
|
3
|
+
export interface InputItemDataType<T = number | string> extends ItemDataType<T> {
|
|
4
|
+
create?: boolean;
|
|
5
|
+
}
|
|
6
|
+
interface UseDataProps {
|
|
7
|
+
controlledData?: InputItemDataType[];
|
|
8
|
+
cacheData?: InputItemDataType[];
|
|
9
|
+
onChange?: (data: ItemDataType[]) => void;
|
|
10
|
+
}
|
|
11
|
+
declare function useData(props: UseDataProps): {
|
|
12
|
+
data: ItemDataType<string | number>[];
|
|
13
|
+
dataWithCache: ItemDataType<string | number>[];
|
|
14
|
+
newData: InputItemDataType<string | number>[];
|
|
15
|
+
setNewData: import("react").Dispatch<import("react").SetStateAction<InputItemDataType<string | number>[]>>;
|
|
16
|
+
};
|
|
17
|
+
export default useData;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _shallowEqual = _interopRequireDefault(require("../../utils/shallowEqual"));
|
|
9
|
+
function useData(props) {
|
|
10
|
+
var _props$controlledData = props.controlledData,
|
|
11
|
+
controlledData = _props$controlledData === void 0 ? [] : _props$controlledData,
|
|
12
|
+
_props$cacheData = props.cacheData,
|
|
13
|
+
cacheData = _props$cacheData === void 0 ? [] : _props$cacheData,
|
|
14
|
+
onChange = props.onChange;
|
|
15
|
+
var _useState = (0, _react.useState)(controlledData),
|
|
16
|
+
uncontrolledData = _useState[0],
|
|
17
|
+
setData = _useState[1];
|
|
18
|
+
var _useState2 = (0, _react.useState)([]),
|
|
19
|
+
newData = _useState2[0],
|
|
20
|
+
setNewData = _useState2[1];
|
|
21
|
+
var data = (0, _react.useMemo)(function () {
|
|
22
|
+
return [].concat(uncontrolledData, newData);
|
|
23
|
+
}, [newData, uncontrolledData]);
|
|
24
|
+
var dataWithCache = (0, _react.useMemo)(function () {
|
|
25
|
+
return [].concat(data, cacheData);
|
|
26
|
+
}, [data, cacheData]);
|
|
27
|
+
|
|
28
|
+
// Update the state when the data in props changes
|
|
29
|
+
(0, _react.useEffect)(function () {
|
|
30
|
+
if (controlledData && !(0, _shallowEqual.default)(controlledData, uncontrolledData)) {
|
|
31
|
+
setData(controlledData);
|
|
32
|
+
setNewData([]);
|
|
33
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(controlledData);
|
|
34
|
+
}
|
|
35
|
+
}, [controlledData, uncontrolledData, onChange]);
|
|
36
|
+
return {
|
|
37
|
+
data: data,
|
|
38
|
+
dataWithCache: dataWithCache,
|
|
39
|
+
newData: newData,
|
|
40
|
+
setNewData: setNewData
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
var _default = useData;
|
|
44
|
+
exports.default = _default;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { OverlayTriggerHandle } from '../../internals/Picker/PickerToggleTrigger';
|
|
3
|
+
interface InputProps {
|
|
4
|
+
multi?: boolean;
|
|
5
|
+
triggerRef: React.RefObject<OverlayTriggerHandle>;
|
|
6
|
+
}
|
|
7
|
+
declare function useInput(props: InputProps): {
|
|
8
|
+
inputProps: {
|
|
9
|
+
inputStyle: {
|
|
10
|
+
maxWidth: number;
|
|
11
|
+
};
|
|
12
|
+
as: import("react").ForwardRefExoticComponent<import("../InputAutosize").InputAutosizeProps & import("react").RefAttributes<import("../InputAutosize").InputInstance>>;
|
|
13
|
+
} | {
|
|
14
|
+
as: string;
|
|
15
|
+
inputStyle?: undefined;
|
|
16
|
+
};
|
|
17
|
+
inputRef: import("react").MutableRefObject<any>;
|
|
18
|
+
focus: () => void;
|
|
19
|
+
blur: () => void;
|
|
20
|
+
};
|
|
21
|
+
export default useInput;
|