rsuite 5.32.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.
Files changed (50) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/cjs/Carousel/Carousel.js +12 -2
  3. package/cjs/Cascader/Cascader.js +2 -2
  4. package/cjs/Cascader/utils.d.ts +0 -9
  5. package/cjs/Cascader/utils.js +2 -48
  6. package/cjs/CheckPicker/CheckPicker.js +6 -2
  7. package/cjs/CheckTreePicker/CheckTreePicker.js +16 -3
  8. package/cjs/DatePicker/DatePicker.js +1 -1
  9. package/cjs/InputPicker/InputPicker.js +7 -2
  10. package/cjs/MultiCascader/MultiCascader.js +1 -0
  11. package/cjs/Picker/DropdownMenu.d.ts +1 -0
  12. package/cjs/Picker/DropdownMenu.js +19 -6
  13. package/cjs/Picker/utils.d.ts +2 -0
  14. package/cjs/Picker/utils.js +8 -1
  15. package/cjs/SelectPicker/SelectPicker.js +7 -2
  16. package/cjs/Tree/Tree.d.ts +2 -0
  17. package/cjs/TreePicker/TreePicker.js +16 -3
  18. package/cjs/utils/getDataGroupBy.d.ts +4 -1
  19. package/cjs/utils/getDataGroupBy.js +12 -24
  20. package/cjs/utils/index.d.ts +0 -1
  21. package/cjs/utils/index.js +1 -6
  22. package/cjs/utils/treeUtils.d.ts +25 -1
  23. package/cjs/utils/treeUtils.js +121 -9
  24. package/dist/rsuite.js +61 -21
  25. package/dist/rsuite.js.map +1 -1
  26. package/dist/rsuite.min.js +1 -1
  27. package/dist/rsuite.min.js.map +1 -1
  28. package/esm/Carousel/Carousel.js +13 -3
  29. package/esm/Cascader/Cascader.js +2 -2
  30. package/esm/Cascader/utils.d.ts +0 -9
  31. package/esm/Cascader/utils.js +1 -44
  32. package/esm/CheckPicker/CheckPicker.js +5 -2
  33. package/esm/CheckTreePicker/CheckTreePicker.js +17 -4
  34. package/esm/DatePicker/DatePicker.js +1 -1
  35. package/esm/InputPicker/InputPicker.js +6 -2
  36. package/esm/MultiCascader/MultiCascader.js +1 -0
  37. package/esm/Picker/DropdownMenu.d.ts +1 -0
  38. package/esm/Picker/DropdownMenu.js +17 -5
  39. package/esm/Picker/utils.d.ts +2 -0
  40. package/esm/Picker/utils.js +8 -1
  41. package/esm/SelectPicker/SelectPicker.js +6 -2
  42. package/esm/Tree/Tree.d.ts +2 -0
  43. package/esm/TreePicker/TreePicker.js +18 -5
  44. package/esm/utils/getDataGroupBy.d.ts +4 -1
  45. package/esm/utils/getDataGroupBy.js +13 -24
  46. package/esm/utils/index.d.ts +0 -1
  47. package/esm/utils/index.js +0 -1
  48. package/esm/utils/treeUtils.d.ts +25 -1
  49. package/esm/utils/treeUtils.js +111 -10
  50. package/package.json +3 -3
@@ -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;
@@ -39,7 +41,10 @@ exports.getNodeFormattedRefKey = getNodeFormattedRefKey;
39
41
  exports.createDragPreview = createDragPreview;
40
42
  exports.removeDragPreview = removeDragPreview;
41
43
  exports.stringifyTreeNodeLabel = stringifyTreeNodeLabel;
42
- exports.getScrollToIndex = exports.focusPreviousItem = exports.focusNextItem = exports.focusTreeNode = exports.getElementByDataKey = exports.getActiveItem = exports.getActiveIndex = exports.getFocusableItems = void 0;
44
+ exports.getParentMap = getParentMap;
45
+ exports.getKeyParentMap = getKeyParentMap;
46
+ exports.getPathTowardsItem = getPathTowardsItem;
47
+ exports.getScrollToIndex = exports.focusPreviousItem = exports.focusNextItem = exports.focusTreeNode = exports.getElementByDataKey = exports.getActiveItem = exports.getActiveIndex = exports.getFocusableItems = exports.WalkTreeStrategy = void 0;
43
48
 
44
49
  var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
45
50
 
@@ -73,6 +78,12 @@ var _constants = require("./constants");
73
78
 
74
79
  var _attachParent = require("./attachParent");
75
80
 
81
+ function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
82
+
83
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
84
+
85
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
86
+
76
87
  // gap of tree node
77
88
  var TREE_NODE_GAP = 4;
78
89
  /**
@@ -135,15 +146,35 @@ function UNSAFE_flattenTree(tree, childrenKey, executor) {
135
146
  return flattenData;
136
147
  }
137
148
 
138
- function flattenTree(rootNodes, getChildren) {
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
+
139
162
  var result = [];
140
- walkTree(rootNodes, getChildren, function (node) {
141
- return result.push(node);
142
- });
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
+
143
174
  return result;
144
175
  }
145
176
 
146
- function walkTree(rootNodes, getChildren, callback) {
177
+ function walkTreeBfs(rootNodes, getChildren, callback) {
147
178
  for (var queue = [].concat(rootNodes); queue.length > 0;) {
148
179
  var _node = queue.shift();
149
180
 
@@ -155,6 +186,18 @@ function walkTree(rootNodes, getChildren, callback) {
155
186
  }
156
187
  }
157
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
+ }
158
201
  /**
159
202
  * get all ancestor nodes of given node
160
203
  * @param {*} node
@@ -404,10 +447,10 @@ function findNodeOfTree(data, check) {
404
447
  var _item3 = nodes[i];
405
448
 
406
449
  if ((0, _isArray2.default)(_item3.children)) {
407
- var _node2 = findNode(_item3.children);
450
+ var _node3 = findNode(_item3.children);
408
451
 
409
- if (_node2) {
410
- return _node2;
452
+ if (_node3) {
453
+ return _node3;
411
454
  }
412
455
  }
413
456
 
@@ -1195,4 +1238,73 @@ function stringifyTreeNodeLabel(label) {
1195
1238
  }
1196
1239
 
1197
1240
  return '';
1241
+ }
1242
+ /**
1243
+ * Returns a WeakMap that maps each item in `items` to its parent
1244
+ * indicated by `getChildren` function
1245
+ */
1246
+
1247
+
1248
+ function getParentMap(items, getChildren) {
1249
+ var map = new WeakMap();
1250
+
1251
+ for (var queue = [].concat(items); queue.length > 0;) {
1252
+ var _item5 = queue.shift();
1253
+
1254
+ var children = getChildren(_item5);
1255
+
1256
+ if (children) {
1257
+ for (var _iterator2 = _createForOfIteratorHelperLoose(children), _step2; !(_step2 = _iterator2()).done;) {
1258
+ var child = _step2.value;
1259
+ map.set(child, _item5);
1260
+ queue.push(child);
1261
+ }
1262
+ }
1263
+ }
1264
+
1265
+ return map;
1266
+ }
1267
+ /**
1268
+ * Returns a Map that maps each item's "key", indicated by `getKey` function,
1269
+ * to its parent indicated by `getChildren` function
1270
+ *
1271
+ * NOTICE:
1272
+ * Using this function is discouraged.
1273
+ * Use {@link getParentMap} whenever possible.
1274
+ */
1275
+
1276
+
1277
+ function getKeyParentMap(items, getKey, getChildren) {
1278
+ var map = new Map();
1279
+
1280
+ for (var queue = [].concat(items); queue.length > 0;) {
1281
+ var _item6 = queue.shift();
1282
+
1283
+ var children = getChildren(_item6);
1284
+
1285
+ if (children) {
1286
+ for (var _iterator3 = _createForOfIteratorHelperLoose(children), _step3; !(_step3 = _iterator3()).done;) {
1287
+ var child = _step3.value;
1288
+ map.set(getKey(child), _item6);
1289
+ queue.push(child);
1290
+ }
1291
+ }
1292
+ }
1293
+
1294
+ return map;
1295
+ }
1296
+ /**
1297
+ * Returns an array indicating the hierarchy path from root towards `target` item
1298
+ */
1299
+
1300
+
1301
+ function getPathTowardsItem(target, getParent) {
1302
+ if (!target) return [];
1303
+ var path = [target];
1304
+
1305
+ for (var parent = getParent(target); !!parent; parent = getParent(parent)) {
1306
+ path.unshift(parent);
1307
+ }
1308
+
1309
+ return path;
1198
1310
  }