rsuite 5.19.1 → 5.20.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/CHANGELOG.md +11 -0
- package/Picker/styles/index.less +4 -0
- package/cjs/DatePicker/DatePicker.js +9 -0
- package/cjs/Form/Form.js +44 -38
- package/cjs/Overlay/OverlayTrigger.d.ts +10 -1
- package/cjs/Overlay/OverlayTrigger.js +26 -4
- package/cjs/Picker/PickerToggle.d.ts +1 -0
- package/cjs/Picker/PickerToggle.js +24 -8
- package/cjs/Picker/PickerToggleTrigger.d.ts +1 -1
- package/cjs/Picker/PickerToggleTrigger.js +4 -2
- package/cjs/SelectPicker/SelectPicker.d.ts +2 -0
- package/dist/rsuite-rtl.css +3 -0
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +3 -0
- package/dist/rsuite.js +50 -50
- 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/DatePicker/DatePicker.js +8 -0
- package/esm/Form/Form.js +44 -38
- package/esm/Overlay/OverlayTrigger.d.ts +10 -1
- package/esm/Overlay/OverlayTrigger.js +23 -3
- package/esm/Picker/PickerToggle.d.ts +1 -0
- package/esm/Picker/PickerToggle.js +22 -8
- package/esm/Picker/PickerToggleTrigger.d.ts +1 -1
- package/esm/Picker/PickerToggleTrigger.js +4 -2
- package/esm/SelectPicker/SelectPicker.d.ts +2 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
# [5.20.0](https://github.com/rsuite/rsuite/compare/v5.19.1...v5.20.0) (2022-10-21)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **DatePicker:** reset calendar selection after closing picker menu ([#2807](https://github.com/rsuite/rsuite/issues/2807)) ([1ef91a8](https://github.com/rsuite/rsuite/commit/1ef91a846fc6d99c7479e96994aa50da2af9ef9e))
|
|
6
|
+
- **Form.Control:** when shouldResetWithUnmount should remove value and error ([#2802](https://github.com/rsuite/rsuite/issues/2802)) ([f8d108a](https://github.com/rsuite/rsuite/commit/f8d108aed3e94811491be63e3373008d12e83b60))
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
- **SelectPicker,CheckPicker:** add `loading` prop ([#2808](https://github.com/rsuite/rsuite/issues/2808)) ([3a5e5d5](https://github.com/rsuite/rsuite/commit/3a5e5d5d4b891373c8a05ec4d642103f75920f10))
|
|
11
|
+
|
|
1
12
|
## [5.19.1](https://github.com/rsuite/rsuite/compare/v5.19.0...v5.19.1) (2022-10-13)
|
|
2
13
|
|
|
3
14
|
### Bug Fixes
|
package/Picker/styles/index.less
CHANGED
|
@@ -35,6 +35,8 @@ var _utils = require("../utils");
|
|
|
35
35
|
|
|
36
36
|
var _Picker = require("../Picker");
|
|
37
37
|
|
|
38
|
+
var _OverlayTrigger = require("../Overlay/OverlayTrigger");
|
|
39
|
+
|
|
38
40
|
var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
39
41
|
var _props$as = props.as,
|
|
40
42
|
Component = _props$as === void 0 ? 'div' : _props$as,
|
|
@@ -419,6 +421,13 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
419
421
|
pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
|
|
420
422
|
ref: triggerRef,
|
|
421
423
|
placement: placement,
|
|
424
|
+
onClose: function onClose(cause) {
|
|
425
|
+
// Unless overlay is closing on user clicking "OK" button,
|
|
426
|
+
// reset the selected date on calendar panel
|
|
427
|
+
if (cause !== _OverlayTrigger.OverlayCloseCause.ImperativeHandle) {
|
|
428
|
+
resetCalendarDate();
|
|
429
|
+
}
|
|
430
|
+
},
|
|
422
431
|
onEntered: (0, _utils.createChainedFunction)(handleEntered, onEntered),
|
|
423
432
|
onExited: (0, _utils.createChainedFunction)(handleExited, onExited),
|
|
424
433
|
speaker: renderDropdownMenu
|
package/cjs/Form/Form.js
CHANGED
|
@@ -15,8 +15,6 @@ var _react = _interopRequireWildcard(require("react"));
|
|
|
15
15
|
|
|
16
16
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
17
17
|
|
|
18
|
-
var _isUndefined = _interopRequireDefault(require("lodash/isUndefined"));
|
|
19
|
-
|
|
20
18
|
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
21
19
|
|
|
22
20
|
var _schemaTyped = require("schema-typed");
|
|
@@ -37,6 +35,8 @@ var _useFormClassNames = require("./useFormClassNames");
|
|
|
37
35
|
|
|
38
36
|
var _useSchemaModel2 = _interopRequireDefault(require("./useSchemaModel"));
|
|
39
37
|
|
|
38
|
+
var _utils = require("../utils");
|
|
39
|
+
|
|
40
40
|
var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
41
41
|
var _props$checkTrigger = props.checkTrigger,
|
|
42
42
|
checkTrigger = _props$checkTrigger === void 0 ? 'change' : _props$checkTrigger,
|
|
@@ -79,20 +79,18 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
79
79
|
disabled: disabled
|
|
80
80
|
});
|
|
81
81
|
|
|
82
|
-
var
|
|
83
|
-
|
|
84
|
-
setFormValue =
|
|
82
|
+
var _useControlled = (0, _utils.useControlled)(formValue, formDefaultValue),
|
|
83
|
+
realFormValue = _useControlled[0],
|
|
84
|
+
setFormValue = _useControlled[1];
|
|
85
85
|
|
|
86
|
-
var
|
|
87
|
-
|
|
88
|
-
setFormError =
|
|
86
|
+
var _useControlled2 = (0, _utils.useControlled)(formError, {}),
|
|
87
|
+
realFormError = _useControlled2[0],
|
|
88
|
+
setFormError = _useControlled2[1];
|
|
89
89
|
|
|
90
|
-
var
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
return (0, _isUndefined.default)(formError) ? _formError : formError;
|
|
95
|
-
}, [formError, _formError]);
|
|
90
|
+
var realFormValueRef = (0, _react.useRef)(realFormValue);
|
|
91
|
+
realFormValueRef.current = realFormValue;
|
|
92
|
+
var realFormErrorRef = (0, _react.useRef)(realFormError);
|
|
93
|
+
realFormErrorRef.current = realFormError;
|
|
96
94
|
/**
|
|
97
95
|
* Validate the form data and return a boolean.
|
|
98
96
|
* The error message after verification is returned in the callback.
|
|
@@ -100,7 +98,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
100
98
|
*/
|
|
101
99
|
|
|
102
100
|
var check = (0, _react.useCallback)(function (callback) {
|
|
103
|
-
var formValue =
|
|
101
|
+
var formValue = realFormValue || {};
|
|
104
102
|
var formError = {};
|
|
105
103
|
var errorCount = 0;
|
|
106
104
|
var model = getCombinedModel();
|
|
@@ -122,7 +120,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
122
120
|
}
|
|
123
121
|
|
|
124
122
|
return true;
|
|
125
|
-
}, [
|
|
123
|
+
}, [realFormValue, getCombinedModel, setFormError, onCheck, onError]);
|
|
126
124
|
/**
|
|
127
125
|
* Check the data field
|
|
128
126
|
* @param fieldName
|
|
@@ -132,10 +130,10 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
132
130
|
var checkForField = (0, _react.useCallback)(function (fieldName, callback) {
|
|
133
131
|
var _extends2;
|
|
134
132
|
|
|
135
|
-
var formValue =
|
|
133
|
+
var formValue = realFormValue || {};
|
|
136
134
|
var model = getCombinedModel();
|
|
137
135
|
var checkResult = model.checkForField(fieldName, formValue);
|
|
138
|
-
var formError = (0, _extends6.default)({},
|
|
136
|
+
var formError = (0, _extends6.default)({}, realFormError, (_extends2 = {}, _extends2[fieldName] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult, _extends2));
|
|
139
137
|
setFormError(formError);
|
|
140
138
|
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
141
139
|
callback === null || callback === void 0 ? void 0 : callback(checkResult);
|
|
@@ -145,13 +143,13 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
145
143
|
}
|
|
146
144
|
|
|
147
145
|
return !checkResult.hasError;
|
|
148
|
-
}, [
|
|
146
|
+
}, [realFormValue, getCombinedModel, realFormError, setFormError, onCheck, onError]);
|
|
149
147
|
/**
|
|
150
148
|
* Check form data asynchronously and return a Promise
|
|
151
149
|
*/
|
|
152
150
|
|
|
153
151
|
var checkAsync = (0, _react.useCallback)(function () {
|
|
154
|
-
var formValue =
|
|
152
|
+
var formValue = realFormValue || {};
|
|
155
153
|
var promises = [];
|
|
156
154
|
var keys = [];
|
|
157
155
|
var model = getCombinedModel();
|
|
@@ -182,19 +180,19 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
182
180
|
formError: formError
|
|
183
181
|
};
|
|
184
182
|
});
|
|
185
|
-
}, [
|
|
183
|
+
}, [realFormValue, getCombinedModel, onCheck, setFormError, onError]);
|
|
186
184
|
/**
|
|
187
185
|
* Asynchronously check form fields and return Promise
|
|
188
186
|
* @param fieldName
|
|
189
187
|
*/
|
|
190
188
|
|
|
191
189
|
var checkForFieldAsync = (0, _react.useCallback)(function (fieldName) {
|
|
192
|
-
var formValue =
|
|
190
|
+
var formValue = realFormValue || {};
|
|
193
191
|
var model = getCombinedModel();
|
|
194
192
|
return model.checkForFieldAsync(fieldName, formValue).then(function (checkResult) {
|
|
195
193
|
var _extends3;
|
|
196
194
|
|
|
197
|
-
var formError = (0, _extends6.default)({},
|
|
195
|
+
var formError = (0, _extends6.default)({}, realFormError, (_extends3 = {}, _extends3[fieldName] = checkResult.errorMessage, _extends3));
|
|
198
196
|
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
199
197
|
setFormError(formError);
|
|
200
198
|
|
|
@@ -204,20 +202,20 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
204
202
|
|
|
205
203
|
return checkResult;
|
|
206
204
|
});
|
|
207
|
-
}, [
|
|
205
|
+
}, [realFormValue, getCombinedModel, realFormError, onCheck, setFormError, onError]);
|
|
208
206
|
var cleanErrors = (0, _react.useCallback)(function () {
|
|
209
207
|
setFormError({});
|
|
210
|
-
}, []);
|
|
208
|
+
}, [setFormError]);
|
|
211
209
|
var cleanErrorForField = (0, _react.useCallback)(function (fieldName) {
|
|
212
|
-
setFormError((0, _omit.default)(
|
|
213
|
-
}, [
|
|
210
|
+
setFormError((0, _omit.default)(realFormError, [fieldName]));
|
|
211
|
+
}, [realFormError, setFormError]);
|
|
214
212
|
var resetErrors = (0, _react.useCallback)(function (formError) {
|
|
215
213
|
if (formError === void 0) {
|
|
216
214
|
formError = {};
|
|
217
215
|
}
|
|
218
216
|
|
|
219
217
|
setFormError(formError);
|
|
220
|
-
}, []);
|
|
218
|
+
}, [setFormError]);
|
|
221
219
|
(0, _react.useImperativeHandle)(ref, function () {
|
|
222
220
|
return {
|
|
223
221
|
root: rootRef.current,
|
|
@@ -231,15 +229,23 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
231
229
|
};
|
|
232
230
|
});
|
|
233
231
|
var removeFieldError = (0, _react.useCallback)(function (name) {
|
|
234
|
-
|
|
232
|
+
/**
|
|
233
|
+
* when this function is called when the children component is unmount, it's an old render frame
|
|
234
|
+
* so use Ref to get future error
|
|
235
|
+
*/
|
|
236
|
+
var formError = (0, _omit.default)(realFormErrorRef.current, [name]);
|
|
235
237
|
setFormError(formError);
|
|
236
238
|
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
237
|
-
}, [
|
|
239
|
+
}, [onCheck, setFormError]);
|
|
238
240
|
var removeFieldValue = (0, _react.useCallback)(function (name) {
|
|
239
|
-
|
|
241
|
+
/**
|
|
242
|
+
* when this function is called when the children component is unmount, it's an old render frame
|
|
243
|
+
* so use Ref to get future value
|
|
244
|
+
*/
|
|
245
|
+
var formValue = (0, _omit.default)(realFormValueRef.current, [name]);
|
|
240
246
|
setFormValue(formValue);
|
|
241
247
|
onChange === null || onChange === void 0 ? void 0 : onChange(formValue);
|
|
242
|
-
}, [
|
|
248
|
+
}, [onChange, setFormValue]);
|
|
243
249
|
var handleSubmit = (0, _react.useCallback)(function (event) {
|
|
244
250
|
if (disabled || readOnly || plaintext) {
|
|
245
251
|
return;
|
|
@@ -253,22 +259,22 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
253
259
|
var handleFieldError = (0, _react.useCallback)(function (name, errorMessage) {
|
|
254
260
|
var _extends4;
|
|
255
261
|
|
|
256
|
-
var formError = (0, _extends6.default)({},
|
|
262
|
+
var formError = (0, _extends6.default)({}, realFormError, (_extends4 = {}, _extends4[name] = errorMessage, _extends4));
|
|
257
263
|
setFormError(formError);
|
|
258
264
|
onError === null || onError === void 0 ? void 0 : onError(formError);
|
|
259
265
|
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
260
|
-
}, [onError, onCheck
|
|
266
|
+
}, [realFormError, setFormError, onError, onCheck]);
|
|
261
267
|
var handleFieldSuccess = (0, _react.useCallback)(function (name) {
|
|
262
268
|
removeFieldError(name);
|
|
263
269
|
}, [removeFieldError]);
|
|
264
270
|
var handleFieldChange = (0, _react.useCallback)(function (name, value, event) {
|
|
265
271
|
var _extends5;
|
|
266
272
|
|
|
267
|
-
var formValue =
|
|
273
|
+
var formValue = realFormValue;
|
|
268
274
|
var nextFormValue = (0, _extends6.default)({}, formValue, (_extends5 = {}, _extends5[name] = value, _extends5));
|
|
269
275
|
setFormValue(nextFormValue);
|
|
270
276
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextFormValue, event);
|
|
271
|
-
}, [
|
|
277
|
+
}, [realFormValue, setFormValue, onChange]);
|
|
272
278
|
var rootRef = (0, _react.useRef)(null);
|
|
273
279
|
var formContextValue = (0, _react.useMemo)(function () {
|
|
274
280
|
return {
|
|
@@ -279,7 +285,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
279
285
|
readOnly: readOnly,
|
|
280
286
|
plaintext: plaintext,
|
|
281
287
|
disabled: disabled,
|
|
282
|
-
formError:
|
|
288
|
+
formError: realFormError,
|
|
283
289
|
removeFieldValue: removeFieldValue,
|
|
284
290
|
removeFieldError: removeFieldError,
|
|
285
291
|
pushFieldRule: pushFieldRule,
|
|
@@ -288,7 +294,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
288
294
|
onFieldError: handleFieldError,
|
|
289
295
|
onFieldSuccess: handleFieldSuccess
|
|
290
296
|
};
|
|
291
|
-
}, [getCombinedModel, checkTrigger, formDefaultValue, errorFromContext, readOnly, plaintext, disabled,
|
|
297
|
+
}, [getCombinedModel, checkTrigger, formDefaultValue, errorFromContext, readOnly, plaintext, disabled, realFormError, removeFieldValue, removeFieldError, pushFieldRule, removeFieldRule, handleFieldChange, handleFieldError, handleFieldSuccess]);
|
|
292
298
|
return /*#__PURE__*/_react.default.createElement("form", (0, _extends6.default)({}, rest, {
|
|
293
299
|
ref: rootRef,
|
|
294
300
|
onSubmit: handleSubmit,
|
|
@@ -59,10 +59,19 @@ export interface OverlayTriggerProps extends StandardProps, AnimationEventProps
|
|
|
59
59
|
/** Callback fired when open component */
|
|
60
60
|
onOpen?: () => void;
|
|
61
61
|
/** Callback fired when close component */
|
|
62
|
-
onClose?: () => void;
|
|
62
|
+
onClose?: (cause?: OverlayCloseCause) => void;
|
|
63
63
|
/** Whether speaker to follow the cursor */
|
|
64
64
|
followCursor?: boolean;
|
|
65
65
|
}
|
|
66
|
+
/**
|
|
67
|
+
* The reason that triggers closing of an overlay
|
|
68
|
+
* - Clicking outside of the overlay
|
|
69
|
+
* - Direct invocation of triggerRef.current.close()
|
|
70
|
+
*/
|
|
71
|
+
export declare enum OverlayCloseCause {
|
|
72
|
+
ClickOutside = 0,
|
|
73
|
+
ImperativeHandle = 1
|
|
74
|
+
}
|
|
66
75
|
export interface OverlayTriggerInstance {
|
|
67
76
|
root: HTMLElement | undefined;
|
|
68
77
|
updatePosition: () => void;
|
|
@@ -5,7 +5,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
|
|
|
5
5
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
6
|
|
|
7
7
|
exports.__esModule = true;
|
|
8
|
-
exports.default = void 0;
|
|
8
|
+
exports.default = exports.OverlayCloseCause = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
@@ -49,6 +49,12 @@ function mergeEvents(events, props) {
|
|
|
49
49
|
return nextEvents;
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
* The reason that triggers closing of an overlay
|
|
54
|
+
* - Clicking outside of the overlay
|
|
55
|
+
* - Direct invocation of triggerRef.current.close()
|
|
56
|
+
*/
|
|
57
|
+
var OverlayCloseCause;
|
|
52
58
|
/**
|
|
53
59
|
* Useful for mouseover and mouseout.
|
|
54
60
|
* In order to resolve the node entering the mouseover element, a mouseout event and a mouseover event will be triggered.
|
|
@@ -56,6 +62,14 @@ function mergeEvents(events, props) {
|
|
|
56
62
|
* @param handler
|
|
57
63
|
* @param event
|
|
58
64
|
*/
|
|
65
|
+
|
|
66
|
+
exports.OverlayCloseCause = OverlayCloseCause;
|
|
67
|
+
|
|
68
|
+
(function (OverlayCloseCause) {
|
|
69
|
+
OverlayCloseCause[OverlayCloseCause["ClickOutside"] = 0] = "ClickOutside";
|
|
70
|
+
OverlayCloseCause[OverlayCloseCause["ImperativeHandle"] = 1] = "ImperativeHandle";
|
|
71
|
+
})(OverlayCloseCause || (exports.OverlayCloseCause = OverlayCloseCause = {}));
|
|
72
|
+
|
|
59
73
|
function onMouseEventHandler(handler, event, delay) {
|
|
60
74
|
var target = event.currentTarget;
|
|
61
75
|
var related = event.relatedTarget || (0, _get.default)(event, ['nativeEvent', 'toElement']);
|
|
@@ -153,17 +167,19 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
153
167
|
|
|
154
168
|
setOpen(true);
|
|
155
169
|
}, [delayOpen, setOpen]);
|
|
156
|
-
var handleClose = (0, _react.useCallback)(function (delay) {
|
|
170
|
+
var handleClose = (0, _react.useCallback)(function (delay, callback) {
|
|
157
171
|
var ms = (0, _isUndefined2.default)(delay) ? delayClose : delay;
|
|
158
172
|
|
|
159
173
|
if (ms && typeof ms === 'number') {
|
|
160
174
|
return delayCloseTimer.current = setTimeout(function () {
|
|
161
175
|
delayCloseTimer.current = null;
|
|
162
176
|
setOpen(false);
|
|
177
|
+
callback === null || callback === void 0 ? void 0 : callback();
|
|
163
178
|
}, ms);
|
|
164
179
|
}
|
|
165
180
|
|
|
166
181
|
setOpen(false);
|
|
182
|
+
callback === null || callback === void 0 ? void 0 : callback();
|
|
167
183
|
}, [delayClose, setOpen]);
|
|
168
184
|
var handleExited = (0, _react.useCallback)(function () {
|
|
169
185
|
setCursorPosition(null);
|
|
@@ -181,7 +197,11 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
181
197
|
},
|
|
182
198
|
|
|
183
199
|
open: handleOpen,
|
|
184
|
-
close:
|
|
200
|
+
close: function close(delay) {
|
|
201
|
+
return handleClose(delay, function () {
|
|
202
|
+
return onClose === null || onClose === void 0 ? void 0 : onClose(OverlayCloseCause.ImperativeHandle);
|
|
203
|
+
});
|
|
204
|
+
},
|
|
185
205
|
updatePosition: function updatePosition() {
|
|
186
206
|
var _overlayRef$current2, _overlayRef$current2$;
|
|
187
207
|
|
|
@@ -342,7 +362,9 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
|
|
|
342
362
|
var overlayProps = (0, _extends2.default)({}, rest, {
|
|
343
363
|
rootClose: rootClose,
|
|
344
364
|
triggerTarget: triggerRef,
|
|
345
|
-
onClose: trigger !== 'none' ? (0, _utils.createChainedFunction)(handleClose,
|
|
365
|
+
onClose: trigger !== 'none' ? (0, _utils.createChainedFunction)(handleClose, function () {
|
|
366
|
+
return onClose === null || onClose === void 0 ? void 0 : onClose(OverlayCloseCause.ClickOutside);
|
|
367
|
+
}) : undefined,
|
|
346
368
|
onExited: (0, _utils.createChainedFunction)(followCursor ? handleExited : undefined, onExited),
|
|
347
369
|
placement: placement,
|
|
348
370
|
container: container,
|
|
@@ -33,6 +33,10 @@ var _TextMask = _interopRequireDefault(require("../MaskedInput/TextMask"));
|
|
|
33
33
|
|
|
34
34
|
var _deprecatePropType = _interopRequireDefault(require("../utils/deprecatePropType"));
|
|
35
35
|
|
|
36
|
+
var _Loader = _interopRequireDefault(require("../Loader"));
|
|
37
|
+
|
|
38
|
+
var _Stack = _interopRequireDefault(require("../Stack"));
|
|
39
|
+
|
|
36
40
|
var _templateObject, _templateObject2;
|
|
37
41
|
|
|
38
42
|
var defaultInputMask = [];
|
|
@@ -52,6 +56,8 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
52
56
|
plaintext = props.plaintext,
|
|
53
57
|
hasValue = props.hasValue,
|
|
54
58
|
editable = props.editable,
|
|
59
|
+
_props$loading = props.loading,
|
|
60
|
+
loading = _props$loading === void 0 ? false : _props$loading,
|
|
55
61
|
cleanableProp = props.cleanable,
|
|
56
62
|
_props$tabIndex = props.tabIndex,
|
|
57
63
|
tabIndexProp = _props$tabIndex === void 0 ? editable ? -1 : 0 : _props$tabIndex,
|
|
@@ -74,7 +80,7 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
74
80
|
_props$caretAs = props.caretAs,
|
|
75
81
|
caretAs = _props$caretAs === void 0 ? caretComponent : _props$caretAs,
|
|
76
82
|
label = props.label,
|
|
77
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["active", "as", "classPrefix", "children", "caret", "className", "disabled", "readOnly", "plaintext", "hasValue", "editable", "cleanable", "tabIndex", "id", "value", "inputPlaceholder", "inputValue", "inputMask", "onInputChange", "onInputPressEnter", "onInputBlur", "onInputFocus", "onClean", "onFocus", "onBlur", "placement", "caretComponent", "caretAs", "label"]);
|
|
83
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["active", "as", "classPrefix", "children", "caret", "className", "disabled", "readOnly", "plaintext", "hasValue", "editable", "loading", "cleanable", "tabIndex", "id", "value", "inputPlaceholder", "inputValue", "inputMask", "onInputChange", "onInputPressEnter", "onInputBlur", "onInputFocus", "onClean", "onFocus", "onBlur", "placement", "caretComponent", "caretAs", "label"]);
|
|
78
84
|
var inputRef = (0, _react.useRef)(null);
|
|
79
85
|
var comboboxRef = (0, _react.useRef)(null);
|
|
80
86
|
|
|
@@ -106,7 +112,9 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
106
112
|
active: activeProp || activeState
|
|
107
113
|
}));
|
|
108
114
|
var handleFocus = (0, _react.useCallback)(function (event) {
|
|
109
|
-
|
|
115
|
+
if (!loading) {
|
|
116
|
+
setActive(true);
|
|
117
|
+
}
|
|
110
118
|
|
|
111
119
|
if (editable) {
|
|
112
120
|
// Avoid firing the onFocus event twice when DatePicker and DateRangePicker allow keyboard input.
|
|
@@ -123,7 +131,7 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
123
131
|
} else {
|
|
124
132
|
onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
|
|
125
133
|
}
|
|
126
|
-
}, [editable, onFocus]);
|
|
134
|
+
}, [editable, loading, onFocus]);
|
|
127
135
|
var handleBlur = (0, _react.useCallback)(function (event) {
|
|
128
136
|
if (inputRef.current && !editable) {
|
|
129
137
|
setActive(false);
|
|
@@ -198,7 +206,17 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
198
206
|
onFocus: !disabled ? handleFocus : null // The debounce is set to 200 to solve the flicker caused by the switch between input and div.
|
|
199
207
|
,
|
|
200
208
|
onBlur: !disabled ? (0, _debounce.default)(handleBlur, 200) : null
|
|
201
|
-
}), /*#__PURE__*/_react.default.createElement(
|
|
209
|
+
}), /*#__PURE__*/_react.default.createElement(_Stack.default, null, label && /*#__PURE__*/_react.default.createElement(_Stack.default.Item, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
210
|
+
className: prefix('label')
|
|
211
|
+
}, label)), /*#__PURE__*/_react.default.createElement(_Stack.default.Item, {
|
|
212
|
+
grow: 1
|
|
213
|
+
}, loading ? /*#__PURE__*/_react.default.createElement(_Loader.default, {
|
|
214
|
+
style: {
|
|
215
|
+
display: 'block',
|
|
216
|
+
padding: '1px 0'
|
|
217
|
+
},
|
|
218
|
+
"data-testid": "spinner"
|
|
219
|
+
}) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_TextMask.default, {
|
|
202
220
|
mask: inputMask,
|
|
203
221
|
value: Array.isArray(inputValue) ? inputValue.toString() : inputValue,
|
|
204
222
|
onBlur: handleInputBlur,
|
|
@@ -219,9 +237,7 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
219
237
|
}), children ? /*#__PURE__*/_react.default.createElement("span", {
|
|
220
238
|
className: prefix(hasValue ? 'value' : 'placeholder'),
|
|
221
239
|
"aria-placeholder": typeof children === 'string' ? children : undefined
|
|
222
|
-
},
|
|
223
|
-
className: prefix('label')
|
|
224
|
-
}, label), children) : null, showCleanButton && /*#__PURE__*/_react.default.createElement(_CloseButton.default, {
|
|
240
|
+
}, children) : null)), showCleanButton && /*#__PURE__*/_react.default.createElement(_CloseButton.default, {
|
|
225
241
|
className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["clean"]))),
|
|
226
242
|
tabIndex: -1,
|
|
227
243
|
locale: {
|
|
@@ -230,7 +246,7 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
230
246
|
onClick: handleClean
|
|
231
247
|
}), caret && /*#__PURE__*/_react.default.createElement(Caret, {
|
|
232
248
|
className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["caret"])))
|
|
233
|
-
}));
|
|
249
|
+
})));
|
|
234
250
|
});
|
|
235
251
|
|
|
236
252
|
PickerToggle.displayName = 'PickerToggle';
|
|
@@ -3,7 +3,7 @@ import { OverlayTriggerInstance, OverlayTriggerProps, OverlayTriggerType } from
|
|
|
3
3
|
import { PositionChildProps } from '../Overlay/Position';
|
|
4
4
|
import { TypeAttributes, AnimationEventProps } from '../@types/common';
|
|
5
5
|
export type { OverlayTriggerInstance, PositionChildProps };
|
|
6
|
-
export interface PickerToggleTriggerProps extends Omit<AnimationEventProps, 'onEntering' | 'onExiting'>, Pick<OverlayTriggerProps, 'speaker'> {
|
|
6
|
+
export interface PickerToggleTriggerProps extends Omit<AnimationEventProps, 'onEntering' | 'onExiting'>, Pick<OverlayTriggerProps, 'speaker' | 'onClose'> {
|
|
7
7
|
placement?: TypeAttributes.Placement;
|
|
8
8
|
pickerProps: any;
|
|
9
9
|
open?: boolean;
|
|
@@ -21,7 +21,7 @@ var _CustomProvider = require("../CustomProvider");
|
|
|
21
21
|
|
|
22
22
|
var omitTriggerPropKeys = ['onEntered', 'onExited', 'onEnter', 'onEntering', 'onExit', 'onExiting', 'open', 'defaultOpen', 'onHide', 'container', 'containerPadding', 'preventOverflow'];
|
|
23
23
|
exports.omitTriggerPropKeys = omitTriggerPropKeys;
|
|
24
|
-
var pickTriggerPropKeys = [].concat(omitTriggerPropKeys, ['disabled', 'plaintext', 'readOnly']);
|
|
24
|
+
var pickTriggerPropKeys = [].concat(omitTriggerPropKeys, ['disabled', 'plaintext', 'readOnly', 'loading']);
|
|
25
25
|
exports.pickTriggerPropKeys = pickTriggerPropKeys;
|
|
26
26
|
|
|
27
27
|
var PickerToggleTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
@@ -31,8 +31,10 @@ var PickerToggleTrigger = /*#__PURE__*/_react.default.forwardRef(function (props
|
|
|
31
31
|
_props$trigger = props.trigger,
|
|
32
32
|
trigger = _props$trigger === void 0 ? 'click' : _props$trigger,
|
|
33
33
|
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["pickerProps", "speaker", "placement", "trigger"]);
|
|
34
|
+
var pickerTriggerProps = (0, _pick.default)(pickerProps, pickTriggerPropKeys);
|
|
34
35
|
return /*#__PURE__*/_react.default.createElement(_CustomProvider.CustomConsumer, null, function (context) {
|
|
35
|
-
return /*#__PURE__*/_react.default.createElement(_OverlayTrigger.default, (0, _extends2.default)({}, rest,
|
|
36
|
+
return /*#__PURE__*/_react.default.createElement(_OverlayTrigger.default, (0, _extends2.default)({}, rest, pickerTriggerProps, {
|
|
37
|
+
disabled: pickerTriggerProps.disabled || pickerTriggerProps.loading,
|
|
36
38
|
ref: ref,
|
|
37
39
|
trigger: trigger,
|
|
38
40
|
placement: (0, _utils.placementPolyfill)(placement, context === null || context === void 0 ? void 0 : context.rtl),
|
|
@@ -6,6 +6,8 @@ import { FormControlPickerProps, ItemDataType } from '../@types/common';
|
|
|
6
6
|
export interface SelectProps<T> {
|
|
7
7
|
/** Set group condition key in data */
|
|
8
8
|
groupBy?: string;
|
|
9
|
+
/** Whether to display an loading indicator on toggle button */
|
|
10
|
+
loading?: boolean;
|
|
9
11
|
/** Whether dispaly search input box */
|
|
10
12
|
searchable?: boolean;
|
|
11
13
|
/** Whether using virtualized list */
|
package/dist/rsuite-rtl.css
CHANGED
|
@@ -10721,6 +10721,9 @@ textarea.rs-picker-search-input {
|
|
|
10721
10721
|
vertical-align: middle;
|
|
10722
10722
|
max-width: 100%;
|
|
10723
10723
|
}
|
|
10724
|
+
.rs-picker-toggle {
|
|
10725
|
+
min-width: 75px;
|
|
10726
|
+
}
|
|
10724
10727
|
.rs-picker-toggle.rs-btn .rs-ripple-pond {
|
|
10725
10728
|
display: none !important;
|
|
10726
10729
|
}
|