rsuite 5.19.0 → 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 +30 -0
- package/Picker/styles/index.less +4 -0
- package/cjs/Animation/Transition.d.ts +2 -2
- package/cjs/Cascader/Cascader.js +10 -5
- package/cjs/Cascader/utils.d.ts +1 -0
- package/cjs/Cascader/utils.js +11 -1
- package/cjs/CheckTreePicker/CheckTreePicker.js +32 -36
- package/cjs/CheckTreePicker/utils.d.ts +2 -2
- package/cjs/CheckTreePicker/utils.js +9 -10
- package/cjs/DOMHelper/index.d.ts +3 -2
- package/cjs/DatePicker/DatePicker.js +9 -0
- package/cjs/DatePicker/PredefinedRanges.js +5 -0
- package/cjs/DateRangePicker/DateRangePicker.js +9 -7
- package/cjs/Form/Form.js +44 -38
- package/cjs/MultiCascader/MultiCascader.js +10 -5
- package/cjs/MultiCascader/utils.d.ts +1 -0
- package/cjs/MultiCascader/utils.js +10 -0
- 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/cjs/TreePicker/TreePicker.d.ts +0 -1
- package/cjs/TreePicker/TreePicker.js +13 -14
- package/cjs/locales/fr_FR.d.ts +105 -0
- package/cjs/locales/fr_FR.js +84 -0
- package/cjs/locales/index.d.ts +1 -0
- package/cjs/locales/index.js +6 -2
- package/cjs/utils/treeUtils.d.ts +7 -1
- package/cjs/utils/treeUtils.js +24 -5
- 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 +64 -64
- 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/Animation/Transition.d.ts +2 -2
- package/esm/Cascader/Cascader.js +10 -5
- package/esm/Cascader/utils.d.ts +1 -0
- package/esm/Cascader/utils.js +11 -1
- package/esm/CheckTreePicker/CheckTreePicker.js +34 -37
- package/esm/CheckTreePicker/utils.d.ts +2 -2
- package/esm/CheckTreePicker/utils.js +11 -12
- package/esm/DOMHelper/index.d.ts +3 -2
- package/esm/DatePicker/DatePicker.js +8 -0
- package/esm/DatePicker/PredefinedRanges.js +5 -0
- package/esm/DateRangePicker/DateRangePicker.js +9 -7
- package/esm/Form/Form.js +44 -38
- package/esm/MultiCascader/MultiCascader.js +10 -5
- package/esm/MultiCascader/utils.d.ts +1 -0
- package/esm/MultiCascader/utils.js +10 -0
- 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/esm/TreePicker/TreePicker.d.ts +0 -1
- package/esm/TreePicker/TreePicker.js +13 -13
- package/esm/locales/fr_FR.d.ts +105 -0
- package/esm/locales/fr_FR.js +74 -0
- package/esm/locales/index.d.ts +1 -0
- package/esm/locales/index.js +2 -1
- package/esm/utils/treeUtils.d.ts +7 -1
- package/esm/utils/treeUtils.js +22 -5
- package/locales/fr_FR/package.json +7 -0
- package/package.json +7 -7
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,
|
|
@@ -127,6 +127,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
127
127
|
columnData = _useColumnData.columnData,
|
|
128
128
|
setColumnData = _useColumnData.setColumnData,
|
|
129
129
|
addColumn = _useColumnData.addColumn,
|
|
130
|
+
romoveColumnByIndex = _useColumnData.romoveColumnByIndex,
|
|
130
131
|
enforceUpdateColumnData = _useColumnData.enforceUpdateColumnData;
|
|
131
132
|
|
|
132
133
|
(0, _utils3.useUpdateEffect)(function () {
|
|
@@ -210,7 +211,8 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
210
211
|
var _node$childrenKey, _node$childrenKey2, _triggerRef$current, _triggerRef$current$u;
|
|
211
212
|
|
|
212
213
|
setSelectedPaths(cascadePaths);
|
|
213
|
-
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
214
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
|
|
215
|
+
var columnIndex = cascadePaths.length; // Lazy load node's children
|
|
214
216
|
|
|
215
217
|
if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
|
|
216
218
|
node.loading = true;
|
|
@@ -223,21 +225,24 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
223
225
|
|
|
224
226
|
if (targetRef.current) {
|
|
225
227
|
addFlattenData(data, node);
|
|
226
|
-
addColumn(data,
|
|
228
|
+
addColumn(data, columnIndex);
|
|
227
229
|
}
|
|
228
230
|
});
|
|
229
231
|
} else {
|
|
230
232
|
node.loading = false;
|
|
231
233
|
node[childrenKey] = children;
|
|
232
234
|
addFlattenData(children, node);
|
|
233
|
-
addColumn(children,
|
|
235
|
+
addColumn(children, columnIndex);
|
|
234
236
|
}
|
|
235
237
|
} else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
|
|
236
|
-
addColumn(node[childrenKey],
|
|
238
|
+
addColumn(node[childrenKey], columnIndex);
|
|
239
|
+
} else {
|
|
240
|
+
// Removes subsequent columns of the current column when the clicked node is a leaf node.
|
|
241
|
+
romoveColumnByIndex(columnIndex);
|
|
237
242
|
}
|
|
238
243
|
|
|
239
244
|
(_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$u = _triggerRef$current.updatePosition) === null || _triggerRef$current$u === void 0 ? void 0 : _triggerRef$current$u.call(_triggerRef$current);
|
|
240
|
-
}, [onSelect, getChildren, childrenKey, addColumn,
|
|
245
|
+
}, [onSelect, getChildren, childrenKey, addFlattenData, addColumn, romoveColumnByIndex]);
|
|
241
246
|
var handleCheck = (0, _react.useCallback)(function (node, event, checked) {
|
|
242
247
|
var nodeValue = node[valueKey];
|
|
243
248
|
var nextValue = [];
|
|
@@ -48,6 +48,7 @@ export declare function useFlattenData(data: ItemDataType[], itemKeys: ItemKeys)
|
|
|
48
48
|
export declare function useColumnData(flattenData: ItemType[]): {
|
|
49
49
|
columnData: ItemDataType<string | number>[][];
|
|
50
50
|
addColumn: (column: ItemDataType[], index: number) => void;
|
|
51
|
+
romoveColumnByIndex: (index: number) => void;
|
|
51
52
|
setColumnData: import("react").Dispatch<import("react").SetStateAction<ItemDataType<string | number>[][]>>;
|
|
52
53
|
enforceUpdateColumnData: (nextData: ItemDataType[]) => void;
|
|
53
54
|
};
|
|
@@ -234,6 +234,15 @@ function useColumnData(flattenData) {
|
|
|
234
234
|
function addColumn(column, index) {
|
|
235
235
|
setColumnData([].concat((0, _slice.default)(columnData, 0, index), [column]));
|
|
236
236
|
}
|
|
237
|
+
/**
|
|
238
|
+
* Remove subsequent columns of the specified column
|
|
239
|
+
* @param index
|
|
240
|
+
*/
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
function romoveColumnByIndex(index) {
|
|
244
|
+
setColumnData([].concat((0, _slice.default)(columnData, 0, index)));
|
|
245
|
+
}
|
|
237
246
|
|
|
238
247
|
function enforceUpdateColumnData(nextData) {
|
|
239
248
|
var nextFlattenData = (0, _treeUtils.flattenTree)(nextData);
|
|
@@ -245,6 +254,7 @@ function useColumnData(flattenData) {
|
|
|
245
254
|
return {
|
|
246
255
|
columnData: columnData,
|
|
247
256
|
addColumn: addColumn,
|
|
257
|
+
romoveColumnByIndex: romoveColumnByIndex,
|
|
248
258
|
setColumnData: setColumnData,
|
|
249
259
|
enforceUpdateColumnData: enforceUpdateColumnData
|
|
250
260
|
};
|
|
@@ -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 */
|
|
@@ -3,7 +3,6 @@ import { PickerLocale } from '../locales';
|
|
|
3
3
|
import { PickerComponent, PickerToggleProps } from '../Picker';
|
|
4
4
|
import { TreeDragProps, TreeBaseProps } from '../Tree/Tree';
|
|
5
5
|
import { FormControlPickerProps, ItemDataType } from '../@types/common';
|
|
6
|
-
export declare const maxTreeHeight = 320;
|
|
7
6
|
export interface TreePickerProps<T = number | string> extends TreeBaseProps<T, ItemDataType>, TreeDragProps, FormControlPickerProps<T, PickerLocale, ItemDataType>, Pick<PickerToggleProps, 'caretAs'> {
|
|
8
7
|
/** The height of Dropdown */
|
|
9
8
|
height?: number;
|
|
@@ -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 =
|
|
8
|
+
exports.default = void 0;
|
|
9
9
|
|
|
10
10
|
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
11
11
|
|
|
@@ -37,9 +37,6 @@ var _Picker = require("../Picker");
|
|
|
37
37
|
|
|
38
38
|
var _TreeContext = _interopRequireDefault(require("../Tree/TreeContext"));
|
|
39
39
|
|
|
40
|
-
// default value for virtualized
|
|
41
|
-
var maxTreeHeight = 320;
|
|
42
|
-
exports.maxTreeHeight = maxTreeHeight;
|
|
43
40
|
var emptyArray = [];
|
|
44
41
|
|
|
45
42
|
var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
@@ -55,13 +52,15 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
55
52
|
overrideLocale = props.locale,
|
|
56
53
|
_props$height = props.height,
|
|
57
54
|
height = _props$height === void 0 ? 360 : _props$height,
|
|
55
|
+
_props$menuMaxHeight = props.menuMaxHeight,
|
|
56
|
+
menuMaxHeight = _props$menuMaxHeight === void 0 ? 320 : _props$menuMaxHeight,
|
|
57
|
+
menuStyle = props.menuStyle,
|
|
58
58
|
className = props.className,
|
|
59
59
|
disabled = props.disabled,
|
|
60
60
|
_props$placement = props.placement,
|
|
61
61
|
placement = _props$placement === void 0 ? 'bottomStart' : _props$placement,
|
|
62
62
|
_props$cleanable = props.cleanable,
|
|
63
63
|
cleanable = _props$cleanable === void 0 ? true : _props$cleanable,
|
|
64
|
-
menuStyle = props.menuStyle,
|
|
65
64
|
_props$searchable = props.searchable,
|
|
66
65
|
searchable = _props$searchable === void 0 ? true : _props$searchable,
|
|
67
66
|
_props$virtualized = props.virtualized,
|
|
@@ -114,7 +113,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
114
113
|
renderExtraFooter = props.renderExtraFooter,
|
|
115
114
|
renderMenu = props.renderMenu,
|
|
116
115
|
renderValue = props.renderValue,
|
|
117
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "data", "appearance", "style", "showIndentLine", "value", "locale", "height", "className", "disabled", "placement", "cleanable", "
|
|
116
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "data", "appearance", "style", "showIndentLine", "value", "locale", "height", "menuMaxHeight", "menuStyle", "className", "disabled", "placement", "cleanable", "searchable", "virtualized", "classPrefix", "defaultValue", "placeholder", "searchKeyword", "menuClassName", "menuAutoWidth", "searchBy", "toggleAs", "labelKey", "valueKey", "childrenKey", "draggable", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "id", "listProps", "getChildren", "renderTreeIcon", "renderTreeNode", "onExit", "onExited", "onClean", "onOpen", "onSearch", "onSelect", "onChange", "onEntered", "onClose", "onDragEnd", "onDragStart", "onDragEnter", "onDragLeave", "onDragOver", "onDrop", "onExpand", "renderExtraFooter", "renderMenu", "renderValue"]);
|
|
118
117
|
var triggerRef = (0, _react.useRef)(null);
|
|
119
118
|
var targetRef = (0, _react.useRef)(null);
|
|
120
119
|
var listRef = (0, _react.useRef)(null);
|
|
@@ -502,13 +501,16 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
502
501
|
var nullValue = null;
|
|
503
502
|
var target = event.target; // exclude searchBar
|
|
504
503
|
|
|
505
|
-
if (target.matches('div[role="searchbox"] > input')) {
|
|
504
|
+
if (target.matches('div[role="searchbox"] > input') || disabled || !cleanable) {
|
|
506
505
|
return;
|
|
507
506
|
}
|
|
508
507
|
|
|
509
|
-
|
|
508
|
+
if (!isControlled) {
|
|
509
|
+
setValue(null);
|
|
510
|
+
}
|
|
511
|
+
|
|
510
512
|
onChange === null || onChange === void 0 ? void 0 : onChange(nullValue, event);
|
|
511
|
-
}, [onChange, setValue]);
|
|
513
|
+
}, [cleanable, disabled, onChange, setValue, isControlled]);
|
|
512
514
|
var onPickerKeydown = (0, _Picker.useToggleKeyDownEvent)((0, _extends2.default)({
|
|
513
515
|
toggle: !activeNode || !active,
|
|
514
516
|
triggerRef: triggerRef,
|
|
@@ -644,7 +646,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
644
646
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
645
647
|
className: treePrefix('nodes')
|
|
646
648
|
}, virtualized ? /*#__PURE__*/_react.default.createElement(_VirtualizedList.AutoSizer, {
|
|
647
|
-
defaultHeight: inline ? height :
|
|
649
|
+
defaultHeight: inline ? height : menuMaxHeight,
|
|
648
650
|
style: {
|
|
649
651
|
width: 'auto',
|
|
650
652
|
height: 'auto'
|
|
@@ -673,13 +675,10 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
673
675
|
left: left,
|
|
674
676
|
top: top
|
|
675
677
|
});
|
|
676
|
-
var styles = virtualized ? (0, _extends2.default)({
|
|
677
|
-
height: height
|
|
678
|
-
}, mergedMenuStyle) : (0, _extends2.default)({}, mergedMenuStyle);
|
|
679
678
|
return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
|
|
680
679
|
autoWidth: menuAutoWidth,
|
|
681
680
|
className: classes,
|
|
682
|
-
style:
|
|
681
|
+
style: mergedMenuStyle,
|
|
683
682
|
ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
|
|
684
683
|
onKeyDown: onPickerKeydown,
|
|
685
684
|
target: triggerRef
|