rsuite 5.33.0 → 5.33.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/CHANGELOG.md +9 -0
- package/cjs/Carousel/Carousel.js +12 -2
- package/cjs/CheckPicker/CheckPicker.js +6 -2
- package/cjs/DatePicker/DatePicker.js +1 -1
- package/cjs/InputPicker/InputPicker.js +7 -2
- package/cjs/MultiCascader/MultiCascader.js +1 -0
- package/cjs/Picker/DropdownMenu.d.ts +1 -0
- package/cjs/Picker/DropdownMenu.js +19 -6
- package/cjs/Picker/utils.d.ts +2 -0
- package/cjs/Picker/utils.js +8 -1
- package/cjs/SelectPicker/SelectPicker.js +7 -2
- package/cjs/utils/getDataGroupBy.d.ts +4 -1
- package/cjs/utils/getDataGroupBy.js +12 -24
- package/cjs/utils/index.d.ts +0 -1
- package/cjs/utils/index.js +1 -6
- package/cjs/utils/treeUtils.d.ts +8 -2
- package/cjs/utils/treeUtils.js +48 -14
- package/dist/rsuite.js +56 -16
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/Carousel/Carousel.js +13 -3
- package/esm/CheckPicker/CheckPicker.js +5 -2
- package/esm/DatePicker/DatePicker.js +1 -1
- package/esm/InputPicker/InputPicker.js +6 -2
- package/esm/MultiCascader/MultiCascader.js +1 -0
- package/esm/Picker/DropdownMenu.d.ts +1 -0
- package/esm/Picker/DropdownMenu.js +17 -5
- package/esm/Picker/utils.d.ts +2 -0
- package/esm/Picker/utils.js +8 -1
- package/esm/SelectPicker/SelectPicker.js +6 -2
- package/esm/utils/getDataGroupBy.d.ts +4 -1
- package/esm/utils/getDataGroupBy.js +13 -24
- package/esm/utils/index.d.ts +0 -1
- package/esm/utils/index.js +0 -1
- package/esm/utils/treeUtils.d.ts +8 -2
- package/esm/utils/treeUtils.js +43 -15
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## [5.33.1](https://github.com/rsuite/rsuite/compare/v5.33.0...v5.33.1) (2023-05-12)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **Carousel:** fix index not being reset when children change ([#3185](https://github.com/rsuite/rsuite/issues/3185)) ([3afb746](https://github.com/rsuite/rsuite/commit/3afb7460f5d12b34eb0e7944fa9f5a461b663028))
|
|
6
|
+
- **CheckPicker:** avoid mutating data when groupBy is specified ([#3173](https://github.com/rsuite/rsuite/issues/3173)) ([1a9805a](https://github.com/rsuite/rsuite/commit/1a9805a00cffcb8e527fbeb1df3a346da9a707f0))
|
|
7
|
+
- **DatePicker:** fix defaultValue not changing month on calendar ([#3183](https://github.com/rsuite/rsuite/issues/3183)) ([b0a2b5f](https://github.com/rsuite/rsuite/commit/b0a2b5f5cfe6ea94c1c13f8e9451c5d60f7f5b80))
|
|
8
|
+
- **pickers:** fix keyboard events still responding when readOnly ([#3184](https://github.com/rsuite/rsuite/issues/3184)) ([56e7563](https://github.com/rsuite/rsuite/commit/56e7563b2035be767f5ed8429cd8c3622708abe8))
|
|
9
|
+
|
|
1
10
|
# [5.33.0](https://github.com/rsuite/rsuite/compare/v5.32.0...v5.33.0) (2023-04-28)
|
|
2
11
|
|
|
3
12
|
### Features
|
package/cjs/Carousel/Carousel.js
CHANGED
|
@@ -59,13 +59,23 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
59
59
|
|
|
60
60
|
var _useControlled = (0, _utils.useControlled)(activeIndexProp, defaultActiveIndex),
|
|
61
61
|
activeIndex = _useControlled[0],
|
|
62
|
-
setActiveIndex = _useControlled[1]
|
|
62
|
+
setActiveIndex = _useControlled[1],
|
|
63
|
+
isControlled = _useControlled[2];
|
|
63
64
|
|
|
64
65
|
var _useState = (0, _react.useState)(0),
|
|
65
66
|
lastIndex = _useState[0],
|
|
66
67
|
setLastIndex = _useState[1];
|
|
67
68
|
|
|
68
|
-
var rootRef = (0, _react.useRef)(null);
|
|
69
|
+
var rootRef = (0, _react.useRef)(null);
|
|
70
|
+
(0, _utils.useUpdateEffect)(function () {
|
|
71
|
+
// When the index is controlled, the index is not updated when the number of children changes.
|
|
72
|
+
if (isControlled) {
|
|
73
|
+
return;
|
|
74
|
+
} // Reset the index when the number of children changes.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
setActiveIndex(0);
|
|
78
|
+
}, [children, isControlled]); // Set a timer for automatic playback.
|
|
69
79
|
// `autoplay` needs to be cast to boolean type to avoid undefined parameters.
|
|
70
80
|
|
|
71
81
|
var _useTimeout = (0, _utils.useTimeout)(function () {
|
|
@@ -35,6 +35,8 @@ var _treeUtils = require("../utils/treeUtils");
|
|
|
35
35
|
|
|
36
36
|
var _utils = require("../utils");
|
|
37
37
|
|
|
38
|
+
var _getDataGroupBy = require("../utils/getDataGroupBy");
|
|
39
|
+
|
|
38
40
|
var _Picker = require("../Picker");
|
|
39
41
|
|
|
40
42
|
var _templateObject;
|
|
@@ -323,7 +325,7 @@ var CheckPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
323
325
|
|
|
324
326
|
|
|
325
327
|
if (groupBy) {
|
|
326
|
-
items = (0,
|
|
328
|
+
items = (0, _getDataGroupBy.getDataGroupBy)(items, groupBy, sort);
|
|
327
329
|
} else if (typeof sort === 'function') {
|
|
328
330
|
items = items.sort(sort(false));
|
|
329
331
|
}
|
|
@@ -342,8 +344,10 @@ var CheckPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
342
344
|
dropdownMenuItemAs: _Picker.DropdownMenuCheckItem,
|
|
343
345
|
activeItemValues: value,
|
|
344
346
|
focusItemValue: focusItemValue,
|
|
345
|
-
data: [].concat(filteredStickyItems, items)
|
|
347
|
+
data: [].concat(filteredStickyItems, items) // `group` is redundant so long as `groupBy` exists
|
|
348
|
+
,
|
|
346
349
|
group: !(0, _isUndefined.default)(groupBy),
|
|
350
|
+
groupBy: groupBy,
|
|
347
351
|
onSelect: handleItemSelect,
|
|
348
352
|
onGroupTitleClick: onGroupTitleClick,
|
|
349
353
|
virtualized: virtualized
|
|
@@ -117,7 +117,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
117
117
|
value = _useControlled[0],
|
|
118
118
|
setValue = _useControlled[1];
|
|
119
119
|
|
|
120
|
-
var _useCalendarDate = (0, _useCalendarDate2.default)(
|
|
120
|
+
var _useCalendarDate = (0, _useCalendarDate2.default)(value, calendarDefaultDate),
|
|
121
121
|
calendarDate = _useCalendarDate.calendarDate,
|
|
122
122
|
setCalendarDate = _useCalendarDate.setCalendarDate,
|
|
123
123
|
resetCalendarDate = _useCalendarDate.resetCalendarDate;
|
|
@@ -43,6 +43,8 @@ var _Plaintext = _interopRequireDefault(require("../Plaintext"));
|
|
|
43
43
|
|
|
44
44
|
var _utils = require("../utils");
|
|
45
45
|
|
|
46
|
+
var _getDataGroupBy = require("../utils/getDataGroupBy");
|
|
47
|
+
|
|
46
48
|
var _Picker = require("../Picker");
|
|
47
49
|
|
|
48
50
|
var _Tag = _interopRequireDefault(require("../Tag"));
|
|
@@ -629,7 +631,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
629
631
|
|
|
630
632
|
|
|
631
633
|
if (groupBy) {
|
|
632
|
-
items = (0,
|
|
634
|
+
items = (0, _getDataGroupBy.getDataGroupBy)(items, groupBy, sort);
|
|
633
635
|
} else if (typeof sort === 'function') {
|
|
634
636
|
items = items.sort(sort(false));
|
|
635
637
|
}
|
|
@@ -653,8 +655,11 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
653
655
|
activeItemValues: multi ? value : [value],
|
|
654
656
|
focusItemValue: focusItemValue,
|
|
655
657
|
maxHeight: menuMaxHeight,
|
|
656
|
-
data: items
|
|
658
|
+
data: items // FIXME-Doma
|
|
659
|
+
// `group` is redundant so long as `groupBy` exists
|
|
660
|
+
,
|
|
657
661
|
group: !(0, _isUndefined.default)(groupBy),
|
|
662
|
+
groupBy: groupBy,
|
|
658
663
|
onSelect: multi ? handleCheckTag : handleSelectItem // fixme don't use any
|
|
659
664
|
,
|
|
660
665
|
renderMenuGroup: renderMenuGroup,
|
|
@@ -249,6 +249,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
249
249
|
(_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);
|
|
250
250
|
}, [onSelect, getChildren, childrenKey, inline, addFlattenData, addColumn, removeColumnByIndex]);
|
|
251
251
|
var handleCheck = (0, _react.useCallback)(function (node, event, checked) {
|
|
252
|
+
console.log('handleCheck');
|
|
252
253
|
var nodeValue = node[valueKey];
|
|
253
254
|
var nextValue = [];
|
|
254
255
|
|
|
@@ -11,6 +11,8 @@ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")
|
|
|
11
11
|
|
|
12
12
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
13
13
|
|
|
14
|
+
var _get2 = _interopRequireDefault(require("lodash/get"));
|
|
15
|
+
|
|
14
16
|
var _react = _interopRequireWildcard(require("react"));
|
|
15
17
|
|
|
16
18
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
@@ -47,6 +49,7 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
47
49
|
var _props$data = props.data,
|
|
48
50
|
data = _props$data === void 0 ? [] : _props$data,
|
|
49
51
|
group = props.group,
|
|
52
|
+
groupBy = props.groupBy,
|
|
50
53
|
_props$maxHeight = props.maxHeight,
|
|
51
54
|
maxHeight = _props$maxHeight === void 0 ? 320 : _props$maxHeight,
|
|
52
55
|
_props$activeItemValu = props.activeItemValues,
|
|
@@ -75,7 +78,7 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
75
78
|
renderMenuItem = props.renderMenuItem,
|
|
76
79
|
onGroupTitleClick = props.onGroupTitleClick,
|
|
77
80
|
onSelect = props.onSelect,
|
|
78
|
-
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["data", "group", "maxHeight", "activeItemValues", "disabledItemValues", "classPrefix", "valueKey", "labelKey", "virtualized", "listProps", "listRef", "className", "style", "focusItemValue", "dropdownMenuItemClassPrefix", "dropdownMenuItemAs", "rowHeight", "rowGroupHeight", "renderMenuGroup", "renderMenuItem", "onGroupTitleClick", "onSelect"]);
|
|
81
|
+
rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["data", "group", "groupBy", "maxHeight", "activeItemValues", "disabledItemValues", "classPrefix", "valueKey", "labelKey", "virtualized", "listProps", "listRef", "className", "style", "focusItemValue", "dropdownMenuItemClassPrefix", "dropdownMenuItemAs", "rowHeight", "rowGroupHeight", "renderMenuGroup", "renderMenuItem", "onGroupTitleClick", "onSelect"]);
|
|
79
82
|
|
|
80
83
|
var _useClassNames = (0, _utils.useClassNames)(classPrefix),
|
|
81
84
|
withClassPrefix = _useClassNames.withClassPrefix,
|
|
@@ -205,11 +208,21 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
205
208
|
};
|
|
206
209
|
|
|
207
210
|
var filteredItems = group ? data.filter(function (item) {
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
211
|
+
var _item$parent;
|
|
212
|
+
|
|
213
|
+
// Display group title items
|
|
214
|
+
if (item[_getDataGroupBy.KEY_GROUP]) return true; // Display items under the unfolded group
|
|
215
|
+
// FIXME-Doma
|
|
216
|
+
// `groupBy` is bound to be string when `group` is true
|
|
217
|
+
// because `group` is actually redundant as a prop
|
|
218
|
+
// It could simply be derived from `groupBy` value
|
|
219
|
+
|
|
220
|
+
var groupValue = (0, _get2.default)(item, groupBy, '') || ( // FIXME-Doma
|
|
221
|
+
// Usage of `item.parent` is strongly discouraged
|
|
222
|
+
// It's only here for legacy support
|
|
223
|
+
// Remove once `item.parent` is completely removed across related components
|
|
224
|
+
(_item$parent = item.parent) === null || _item$parent === void 0 ? void 0 : _item$parent[_getDataGroupBy.KEY_GROUP_TITLE]);
|
|
225
|
+
return !foldedGroupKeys.includes(groupValue);
|
|
213
226
|
}) : data;
|
|
214
227
|
var rowCount = filteredItems.length;
|
|
215
228
|
(0, _utils.useMount)(function () {
|
package/cjs/Picker/utils.d.ts
CHANGED
|
@@ -73,6 +73,8 @@ export interface ToggleKeyDownEventProps {
|
|
|
73
73
|
overlayRef?: React.RefObject<any>;
|
|
74
74
|
searchInputRef?: React.RefObject<any>;
|
|
75
75
|
active?: boolean;
|
|
76
|
+
readOnly?: boolean;
|
|
77
|
+
disabled?: boolean;
|
|
76
78
|
onExit?: (event: any) => void;
|
|
77
79
|
onKeyDown?: (event: any) => void;
|
|
78
80
|
onOpen?: () => void;
|
package/cjs/Picker/utils.js
CHANGED
|
@@ -433,6 +433,8 @@ var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
433
433
|
overlayRef = props.overlayRef,
|
|
434
434
|
searchInputRef = props.searchInputRef,
|
|
435
435
|
active = props.active,
|
|
436
|
+
readOnly = props.readOnly,
|
|
437
|
+
disabled = props.disabled,
|
|
436
438
|
onExit = props.onExit,
|
|
437
439
|
onOpen = props.onOpen,
|
|
438
440
|
onClose = props.onClose,
|
|
@@ -461,6 +463,11 @@ var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
461
463
|
handleOpen();
|
|
462
464
|
}, [active, handleOpen, handleClose]);
|
|
463
465
|
var onToggle = (0, _react.useCallback)(function (event) {
|
|
466
|
+
// Keyboard events should not be processed when readOnly and disabled are set.
|
|
467
|
+
if (readOnly || disabled) {
|
|
468
|
+
return;
|
|
469
|
+
}
|
|
470
|
+
|
|
464
471
|
if (event.target === (targetRef === null || targetRef === void 0 ? void 0 : targetRef.current)) {
|
|
465
472
|
// enter
|
|
466
473
|
if (toggle && event.key === _utils.KEY_VALUES.ENTER) {
|
|
@@ -510,7 +517,7 @@ var useToggleKeyDownEvent = function useToggleKeyDownEvent(props) {
|
|
|
510
517
|
|
|
511
518
|
|
|
512
519
|
onKeyDown === null || onKeyDown === void 0 ? void 0 : onKeyDown(event);
|
|
513
|
-
}, [
|
|
520
|
+
}, [readOnly, disabled, targetRef, overlayRef, onKeyDown, toggle, handleToggleDropdown, onExit, onMenuKeyDown, searchInputRef, onMenuPressEnter, onMenuPressBackspace, handleClose]);
|
|
514
521
|
return onToggle;
|
|
515
522
|
};
|
|
516
523
|
|
|
@@ -29,6 +29,8 @@ var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
|
29
29
|
|
|
30
30
|
var _utils = require("../utils");
|
|
31
31
|
|
|
32
|
+
var _getDataGroupBy = require("../utils/getDataGroupBy");
|
|
33
|
+
|
|
32
34
|
var _Picker = require("../Picker");
|
|
33
35
|
|
|
34
36
|
var _templateObject;
|
|
@@ -258,7 +260,7 @@ var SelectPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
258
260
|
var items = filteredData; // Create a tree structure data when set `groupBy`
|
|
259
261
|
|
|
260
262
|
if (groupBy) {
|
|
261
|
-
items = (0,
|
|
263
|
+
items = (0, _getDataGroupBy.getDataGroupBy)(items, groupBy, sort);
|
|
262
264
|
} else if (typeof sort === 'function') {
|
|
263
265
|
items = items.sort(sort(false));
|
|
264
266
|
}
|
|
@@ -278,8 +280,11 @@ var SelectPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
|
|
|
278
280
|
dropdownMenuItemAs: _Picker.DropdownMenuItem,
|
|
279
281
|
activeItemValues: [value],
|
|
280
282
|
focusItemValue: focusItemValue,
|
|
281
|
-
data: items
|
|
283
|
+
data: items // FIXME-Doma
|
|
284
|
+
// `group` is redundant so long as `groupBy` exists
|
|
285
|
+
,
|
|
282
286
|
group: !(0, _isUndefined.default)(groupBy),
|
|
287
|
+
groupBy: groupBy,
|
|
283
288
|
onSelect: handleItemSelect,
|
|
284
289
|
onGroupTitleClick: onGroupTitleClick,
|
|
285
290
|
virtualized: virtualized
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export declare const KEY_GROUP: string | symbol;
|
|
2
2
|
export declare const KEY_GROUP_TITLE = "groupTitle";
|
|
3
|
-
export
|
|
3
|
+
export declare function getDataGroupBy<T>(data: readonly T[], key: string, sort?: (isGroup: boolean) => <T>(a: T, b: T) => number): (T | {
|
|
4
|
+
groupTitle: string;
|
|
5
|
+
children: T[];
|
|
6
|
+
})[];
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.
|
|
6
|
+
exports.getDataGroupBy = getDataGroupBy;
|
|
7
7
|
exports.KEY_GROUP_TITLE = exports.KEY_GROUP = void 0;
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _groupBy2 = _interopRequireDefault(require("lodash/groupBy"));
|
|
10
10
|
|
|
11
11
|
var _treeUtils = require("../utils/treeUtils");
|
|
12
12
|
|
|
@@ -17,26 +17,9 @@ var KEY_GROUP_TITLE = 'groupTitle';
|
|
|
17
17
|
exports.KEY_GROUP_TITLE = KEY_GROUP_TITLE;
|
|
18
18
|
|
|
19
19
|
function getDataGroupBy(data, key, sort) {
|
|
20
|
-
|
|
21
|
-
data = [];
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
var tempData = {};
|
|
20
|
+
var groupMap = (0, _groupBy2.default)(data, key);
|
|
25
21
|
var isSort = typeof sort === 'function';
|
|
26
|
-
|
|
27
|
-
// this will allow getting data using dot notation
|
|
28
|
-
// i.e groupBy="country.name" as country will be a nested object
|
|
29
|
-
// to the item and the name will be nested key to the country object
|
|
30
|
-
// can be used with values in arrays, i.e groupBy="addresses.0.country.name"
|
|
31
|
-
var groupByValue = (0, _get2.default)(item, key, '');
|
|
32
|
-
|
|
33
|
-
if (!tempData[groupByValue]) {
|
|
34
|
-
tempData[groupByValue] = [];
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
tempData[groupByValue].push(item);
|
|
38
|
-
});
|
|
39
|
-
var nextData = Object.entries(tempData).map(function (_ref) {
|
|
22
|
+
var groups = Object.entries(groupMap).map(function (_ref) {
|
|
40
23
|
var _ref2;
|
|
41
24
|
|
|
42
25
|
var groupTitle = _ref[0],
|
|
@@ -47,8 +30,13 @@ function getDataGroupBy(data, key, sort) {
|
|
|
47
30
|
});
|
|
48
31
|
|
|
49
32
|
if (isSort) {
|
|
50
|
-
|
|
51
|
-
}
|
|
33
|
+
groups.sort(sort(true));
|
|
34
|
+
} // Use DFS traverse
|
|
35
|
+
// Because I want the result to be [group, child, child, group, child, child]
|
|
36
|
+
// rather than [group, group, child, child, child, child]
|
|
37
|
+
|
|
52
38
|
|
|
53
|
-
return (0, _treeUtils.
|
|
39
|
+
return (0, _treeUtils.flattenTree)(groups, function (group) {
|
|
40
|
+
return group.children;
|
|
41
|
+
}, _treeUtils.WalkTreeStrategy.DFS);
|
|
54
42
|
}
|
package/cjs/utils/index.d.ts
CHANGED
|
@@ -12,7 +12,6 @@ export { default as ReactChildren } from './ReactChildren';
|
|
|
12
12
|
export { default as tplTransform } from './tplTransform';
|
|
13
13
|
export { default as ajaxUpload } from './ajaxUpload';
|
|
14
14
|
export { default as previewFile } from './previewFile';
|
|
15
|
-
export { default as getDataGroupBy } from './getDataGroupBy';
|
|
16
15
|
export { default as clone } from './clone';
|
|
17
16
|
export { default as placementPolyfill } from './placementPolyfill';
|
|
18
17
|
export { default as getDOMNode } from './getDOMNode';
|
package/cjs/utils/index.js
CHANGED
|
@@ -14,7 +14,6 @@ var _exportNames = {
|
|
|
14
14
|
tplTransform: true,
|
|
15
15
|
ajaxUpload: true,
|
|
16
16
|
previewFile: true,
|
|
17
|
-
getDataGroupBy: true,
|
|
18
17
|
clone: true,
|
|
19
18
|
placementPolyfill: true,
|
|
20
19
|
getDOMNode: true,
|
|
@@ -49,7 +48,7 @@ var _exportNames = {
|
|
|
49
48
|
DateUtils: true,
|
|
50
49
|
TypeChecker: true
|
|
51
50
|
};
|
|
52
|
-
exports.TypeChecker = exports.DateUtils = exports.globalKey = exports.getClassNamePrefix = exports.defaultClassPrefix = exports.useMount = exports.useIsMounted = exports.useUpdateEffect = exports.useWillUnmount = exports.useUpdatedRef = exports.useEventCallback = exports.stringToObject = exports.getSafeRegExpString = exports.useRootClose = exports.useControlled = exports.useTimeout = exports.createComponent = exports.usePortal = exports.useCustom = exports.useElementResize = exports.useEventListener = exports.useClassNames = exports.render = exports.appendTooltip = exports.scrollTopAnimation = exports.reactToString = exports.composeFunctions = exports.shallowEqualArray = exports.shallowEqual = exports.mergeRefs = exports.getDOMNode = exports.placementPolyfill = exports.clone = exports.
|
|
51
|
+
exports.TypeChecker = exports.DateUtils = exports.globalKey = exports.getClassNamePrefix = exports.defaultClassPrefix = exports.useMount = exports.useIsMounted = exports.useUpdateEffect = exports.useWillUnmount = exports.useUpdatedRef = exports.useEventCallback = exports.stringToObject = exports.getSafeRegExpString = exports.useRootClose = exports.useControlled = exports.useTimeout = exports.createComponent = exports.usePortal = exports.useCustom = exports.useElementResize = exports.useEventListener = exports.useClassNames = exports.render = exports.appendTooltip = exports.scrollTopAnimation = exports.reactToString = exports.composeFunctions = exports.shallowEqualArray = exports.shallowEqual = exports.mergeRefs = exports.getDOMNode = exports.placementPolyfill = exports.clone = exports.previewFile = exports.ajaxUpload = exports.tplTransform = exports.ReactChildren = exports.isOneOf = exports.createChainedFunction = exports.prefix = exports.guid = void 0;
|
|
53
52
|
|
|
54
53
|
var _BrowserDetection = require("./BrowserDetection");
|
|
55
54
|
|
|
@@ -130,10 +129,6 @@ var _previewFile = _interopRequireDefault(require("./previewFile"));
|
|
|
130
129
|
|
|
131
130
|
exports.previewFile = _previewFile.default;
|
|
132
131
|
|
|
133
|
-
var _getDataGroupBy = _interopRequireDefault(require("./getDataGroupBy"));
|
|
134
|
-
|
|
135
|
-
exports.getDataGroupBy = _getDataGroupBy.default;
|
|
136
|
-
|
|
137
132
|
var _clone = _interopRequireDefault(require("./clone"));
|
|
138
133
|
|
|
139
134
|
exports.clone = _clone.default;
|
package/cjs/utils/treeUtils.d.ts
CHANGED
|
@@ -21,7 +21,13 @@ export declare function shouldShowNodeByParentExpanded<T>(expandItemValues?: T[]
|
|
|
21
21
|
* Use {@link flattenTree} instead.
|
|
22
22
|
*/
|
|
23
23
|
export declare function UNSAFE_flattenTree<TItem>(tree: TItem[], childrenKey?: string, executor?: (node: any, index: number) => any): TItem[];
|
|
24
|
-
export declare
|
|
24
|
+
export declare enum WalkTreeStrategy {
|
|
25
|
+
DFS = 0,
|
|
26
|
+
BFS = 1
|
|
27
|
+
}
|
|
28
|
+
export declare function flattenTree<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined, walkStrategy?: WalkTreeStrategy): T[];
|
|
29
|
+
export declare function walkTreeBfs<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined, callback: (node: T) => void): void;
|
|
30
|
+
export declare function walkTreeDfs<T>(rootNodes: readonly T[], getChildren: (node: T) => readonly T[] | undefined, callback: (node: T) => void): void;
|
|
25
31
|
/**
|
|
26
32
|
* get all ancestor nodes of given node
|
|
27
33
|
* @param {*} node
|
|
@@ -293,6 +299,6 @@ export declare function getParentMap<T extends Record<string, unknown>>(items: r
|
|
|
293
299
|
*/
|
|
294
300
|
export declare function getKeyParentMap<T extends Record<string, unknown>, K = React.Key>(items: readonly T[], getKey: (item: T) => K, getChildren: (item: T) => readonly T[] | undefined): Map<K, T>;
|
|
295
301
|
/**
|
|
296
|
-
* Returns an array indicating the
|
|
302
|
+
* Returns an array indicating the hierarchy path from root towards `target` item
|
|
297
303
|
*/
|
|
298
304
|
export declare function getPathTowardsItem<T>(target: T | undefined, getParent: (item: T) => T | undefined): T[];
|
package/cjs/utils/treeUtils.js
CHANGED
|
@@ -8,6 +8,8 @@ exports.__esModule = true;
|
|
|
8
8
|
exports.shouldShowNodeByParentExpanded = shouldShowNodeByParentExpanded;
|
|
9
9
|
exports.UNSAFE_flattenTree = UNSAFE_flattenTree;
|
|
10
10
|
exports.flattenTree = flattenTree;
|
|
11
|
+
exports.walkTreeBfs = walkTreeBfs;
|
|
12
|
+
exports.walkTreeDfs = walkTreeDfs;
|
|
11
13
|
exports.getNodeParents = getNodeParents;
|
|
12
14
|
exports.getNodeParentKeys = getNodeParentKeys;
|
|
13
15
|
exports.hasVisibleChildren = hasVisibleChildren;
|
|
@@ -42,7 +44,7 @@ exports.stringifyTreeNodeLabel = stringifyTreeNodeLabel;
|
|
|
42
44
|
exports.getParentMap = getParentMap;
|
|
43
45
|
exports.getKeyParentMap = getKeyParentMap;
|
|
44
46
|
exports.getPathTowardsItem = getPathTowardsItem;
|
|
45
|
-
exports.getScrollToIndex = exports.focusPreviousItem = exports.focusNextItem = exports.focusTreeNode = exports.getElementByDataKey = exports.getActiveItem = exports.getActiveIndex = exports.getFocusableItems = void 0;
|
|
47
|
+
exports.getScrollToIndex = exports.focusPreviousItem = exports.focusNextItem = exports.focusTreeNode = exports.getElementByDataKey = exports.getActiveItem = exports.getActiveIndex = exports.getFocusableItems = exports.WalkTreeStrategy = void 0;
|
|
46
48
|
|
|
47
49
|
var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
48
50
|
|
|
@@ -144,15 +146,35 @@ function UNSAFE_flattenTree(tree, childrenKey, executor) {
|
|
|
144
146
|
return flattenData;
|
|
145
147
|
}
|
|
146
148
|
|
|
147
|
-
|
|
149
|
+
var WalkTreeStrategy;
|
|
150
|
+
exports.WalkTreeStrategy = WalkTreeStrategy;
|
|
151
|
+
|
|
152
|
+
(function (WalkTreeStrategy) {
|
|
153
|
+
WalkTreeStrategy[WalkTreeStrategy["DFS"] = 0] = "DFS";
|
|
154
|
+
WalkTreeStrategy[WalkTreeStrategy["BFS"] = 1] = "BFS";
|
|
155
|
+
})(WalkTreeStrategy || (exports.WalkTreeStrategy = WalkTreeStrategy = {}));
|
|
156
|
+
|
|
157
|
+
function flattenTree(rootNodes, getChildren, walkStrategy) {
|
|
158
|
+
if (walkStrategy === void 0) {
|
|
159
|
+
walkStrategy = WalkTreeStrategy.BFS;
|
|
160
|
+
}
|
|
161
|
+
|
|
148
162
|
var result = [];
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
163
|
+
|
|
164
|
+
if (walkStrategy === WalkTreeStrategy.BFS) {
|
|
165
|
+
walkTreeBfs(rootNodes, getChildren, function (node) {
|
|
166
|
+
return result.push(node);
|
|
167
|
+
});
|
|
168
|
+
} else if (walkStrategy === WalkTreeStrategy.DFS) {
|
|
169
|
+
walkTreeDfs(rootNodes, getChildren, function (node) {
|
|
170
|
+
return result.push(node);
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
|
|
152
174
|
return result;
|
|
153
175
|
}
|
|
154
176
|
|
|
155
|
-
function
|
|
177
|
+
function walkTreeBfs(rootNodes, getChildren, callback) {
|
|
156
178
|
for (var queue = [].concat(rootNodes); queue.length > 0;) {
|
|
157
179
|
var _node = queue.shift();
|
|
158
180
|
|
|
@@ -164,6 +186,18 @@ function walkTree(rootNodes, getChildren, callback) {
|
|
|
164
186
|
}
|
|
165
187
|
}
|
|
166
188
|
}
|
|
189
|
+
|
|
190
|
+
function walkTreeDfs(rootNodes, getChildren, callback) {
|
|
191
|
+
for (var _iterator = _createForOfIteratorHelperLoose(rootNodes), _step; !(_step = _iterator()).done;) {
|
|
192
|
+
var _node2 = _step.value;
|
|
193
|
+
callback(_node2);
|
|
194
|
+
var children = getChildren(_node2);
|
|
195
|
+
|
|
196
|
+
if (children) {
|
|
197
|
+
walkTreeDfs(children, getChildren, callback);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}
|
|
167
201
|
/**
|
|
168
202
|
* get all ancestor nodes of given node
|
|
169
203
|
* @param {*} node
|
|
@@ -413,10 +447,10 @@ function findNodeOfTree(data, check) {
|
|
|
413
447
|
var _item3 = nodes[i];
|
|
414
448
|
|
|
415
449
|
if ((0, _isArray2.default)(_item3.children)) {
|
|
416
|
-
var
|
|
450
|
+
var _node3 = findNode(_item3.children);
|
|
417
451
|
|
|
418
|
-
if (
|
|
419
|
-
return
|
|
452
|
+
if (_node3) {
|
|
453
|
+
return _node3;
|
|
420
454
|
}
|
|
421
455
|
}
|
|
422
456
|
|
|
@@ -1220,8 +1254,8 @@ function getParentMap(items, getChildren) {
|
|
|
1220
1254
|
var children = getChildren(_item5);
|
|
1221
1255
|
|
|
1222
1256
|
if (children) {
|
|
1223
|
-
for (var
|
|
1224
|
-
var child =
|
|
1257
|
+
for (var _iterator2 = _createForOfIteratorHelperLoose(children), _step2; !(_step2 = _iterator2()).done;) {
|
|
1258
|
+
var child = _step2.value;
|
|
1225
1259
|
map.set(child, _item5);
|
|
1226
1260
|
queue.push(child);
|
|
1227
1261
|
}
|
|
@@ -1249,8 +1283,8 @@ function getKeyParentMap(items, getKey, getChildren) {
|
|
|
1249
1283
|
var children = getChildren(_item6);
|
|
1250
1284
|
|
|
1251
1285
|
if (children) {
|
|
1252
|
-
for (var
|
|
1253
|
-
var child =
|
|
1286
|
+
for (var _iterator3 = _createForOfIteratorHelperLoose(children), _step3; !(_step3 = _iterator3()).done;) {
|
|
1287
|
+
var child = _step3.value;
|
|
1254
1288
|
map.set(getKey(child), _item6);
|
|
1255
1289
|
queue.push(child);
|
|
1256
1290
|
}
|
|
@@ -1260,7 +1294,7 @@ function getKeyParentMap(items, getKey, getChildren) {
|
|
|
1260
1294
|
return map;
|
|
1261
1295
|
}
|
|
1262
1296
|
/**
|
|
1263
|
-
* Returns an array indicating the
|
|
1297
|
+
* Returns an array indicating the hierarchy path from root towards `target` item
|
|
1264
1298
|
*/
|
|
1265
1299
|
|
|
1266
1300
|
|