rsuite 5.5.2 → 5.6.2

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 (105) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +4 -2
  3. package/cjs/@types/common.d.ts +4 -4
  4. package/cjs/Affix/Affix.js +0 -1
  5. package/cjs/Animation/Transition.d.ts +1 -1
  6. package/cjs/Animation/Transition.js +10 -4
  7. package/cjs/Calendar/TimeDropdown.js +7 -4
  8. package/cjs/Carousel/Carousel.d.ts +5 -1
  9. package/cjs/Carousel/Carousel.js +22 -16
  10. package/cjs/Cascader/DropdownMenu.js +1 -1
  11. package/cjs/CheckTreePicker/CheckTreePicker.js +29 -17
  12. package/cjs/CheckTreePicker/utils.d.ts +3 -3
  13. package/cjs/CheckTreePicker/utils.js +3 -3
  14. package/cjs/DOMHelper/index.d.ts +4 -4
  15. package/cjs/DatePicker/DatePicker.d.ts +2 -1
  16. package/cjs/DatePicker/DatePicker.js +19 -12
  17. package/cjs/DateRangePicker/DateRangePicker.d.ts +2 -2
  18. package/cjs/DateRangePicker/DateRangePicker.js +5 -4
  19. package/cjs/IconButton/IconButton.d.ts +5 -2
  20. package/cjs/IconButton/IconButton.js +2 -2
  21. package/cjs/IconButton/test/IconButton.test.d.ts +1 -0
  22. package/cjs/IconButton/test/IconButton.test.js +24 -0
  23. package/cjs/InputPicker/InputAutosize.js +3 -1
  24. package/cjs/InputPicker/InputPicker.js +6 -2
  25. package/cjs/List/ListItem.js +13 -11
  26. package/cjs/List/helper/AutoScroller.d.ts +2 -3
  27. package/cjs/List/helper/useManager.d.ts +2 -2
  28. package/cjs/List/helper/useSortHelper.js +23 -9
  29. package/cjs/List/helper/utils.d.ts +4 -3
  30. package/cjs/List/helper/utils.js +2 -2
  31. package/cjs/MaskedInput/conformToMask.js +1 -0
  32. package/cjs/Menu/MenuItem.js +14 -11
  33. package/cjs/MultiCascader/DropdownMenu.js +2 -1
  34. package/cjs/MultiCascader/utils.js +7 -7
  35. package/cjs/Overlay/Position.js +1 -2
  36. package/cjs/Pagination/PaginationGroup.js +3 -3
  37. package/cjs/Picker/PickerOverlay.js +4 -1
  38. package/cjs/Picker/SelectedElement.js +1 -1
  39. package/cjs/Picker/index.d.ts +2 -1
  40. package/cjs/Ripple/Ripple.js +17 -9
  41. package/cjs/TreePicker/TreePicker.js +16 -12
  42. package/cjs/Uploader/UploadTrigger.js +3 -1
  43. package/cjs/Uploader/Uploader.js +8 -2
  44. package/cjs/toaster/toaster.d.ts +1 -1
  45. package/cjs/toaster/toaster.js +9 -3
  46. package/cjs/utils/treeUtils.d.ts +3 -3
  47. package/cjs/utils/treeUtils.js +6 -4
  48. package/cjs/utils/useElementResize.d.ts +1 -1
  49. package/cjs/utils/useElementResize.js +5 -2
  50. package/cjs/utils/useTimeout.d.ts +2 -2
  51. package/cjs/utils/useTimeout.js +17 -8
  52. package/dist/rsuite.js +381 -62
  53. package/dist/rsuite.js.map +1 -1
  54. package/dist/rsuite.min.js +1 -1
  55. package/dist/rsuite.min.js.map +1 -1
  56. package/esm/@types/common.d.ts +4 -4
  57. package/esm/Affix/Affix.js +0 -1
  58. package/esm/Animation/Transition.d.ts +1 -1
  59. package/esm/Animation/Transition.js +10 -4
  60. package/esm/Calendar/TimeDropdown.js +7 -4
  61. package/esm/Carousel/Carousel.d.ts +5 -1
  62. package/esm/Carousel/Carousel.js +23 -17
  63. package/esm/Cascader/DropdownMenu.js +1 -1
  64. package/esm/CheckTreePicker/CheckTreePicker.js +29 -17
  65. package/esm/CheckTreePicker/utils.d.ts +3 -3
  66. package/esm/CheckTreePicker/utils.js +3 -3
  67. package/esm/DOMHelper/index.d.ts +4 -4
  68. package/esm/DatePicker/DatePicker.d.ts +2 -1
  69. package/esm/DatePicker/DatePicker.js +19 -12
  70. package/esm/DateRangePicker/DateRangePicker.d.ts +2 -2
  71. package/esm/DateRangePicker/DateRangePicker.js +5 -4
  72. package/esm/IconButton/IconButton.d.ts +5 -2
  73. package/esm/IconButton/IconButton.js +1 -1
  74. package/esm/IconButton/test/IconButton.test.d.ts +1 -0
  75. package/esm/IconButton/test/IconButton.test.js +18 -0
  76. package/esm/InputPicker/InputAutosize.js +3 -1
  77. package/esm/InputPicker/InputPicker.js +6 -2
  78. package/esm/List/ListItem.js +13 -11
  79. package/esm/List/helper/AutoScroller.d.ts +2 -3
  80. package/esm/List/helper/useManager.d.ts +2 -2
  81. package/esm/List/helper/useSortHelper.js +23 -9
  82. package/esm/List/helper/utils.d.ts +4 -3
  83. package/esm/List/helper/utils.js +2 -2
  84. package/esm/MaskedInput/conformToMask.js +1 -0
  85. package/esm/Menu/MenuItem.js +14 -11
  86. package/esm/MultiCascader/DropdownMenu.js +2 -1
  87. package/esm/MultiCascader/utils.js +7 -7
  88. package/esm/Overlay/Position.js +1 -2
  89. package/esm/Pagination/PaginationGroup.js +3 -3
  90. package/esm/Picker/PickerOverlay.js +4 -1
  91. package/esm/Picker/SelectedElement.js +1 -1
  92. package/esm/Picker/index.d.ts +2 -1
  93. package/esm/Ripple/Ripple.js +17 -9
  94. package/esm/TreePicker/TreePicker.js +16 -12
  95. package/esm/Uploader/UploadTrigger.js +3 -1
  96. package/esm/Uploader/Uploader.js +8 -2
  97. package/esm/toaster/toaster.d.ts +1 -1
  98. package/esm/toaster/toaster.js +9 -3
  99. package/esm/utils/treeUtils.d.ts +3 -3
  100. package/esm/utils/treeUtils.js +6 -4
  101. package/esm/utils/useElementResize.d.ts +1 -1
  102. package/esm/utils/useElementResize.js +5 -2
  103. package/esm/utils/useTimeout.d.ts +2 -2
  104. package/esm/utils/useTimeout.js +17 -8
  105. package/package.json +3 -3
@@ -417,7 +417,7 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
417
417
  var allData = getAllData();
418
418
  var focusItem = allData.find(function (item) {
419
419
  return (0, _shallowEqual.default)(item[valueKey], focusItemValue);
420
- });
420
+ }); // FIXME Bad state flow
421
421
 
422
422
  if (!focusItem && focusItemValue === searchKeyword) {
423
423
  focusItem = createOption(searchKeyword);
@@ -425,7 +425,11 @@ var InputPicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
425
425
 
426
426
  setValue(focusItemValue);
427
427
  setSearchKeyword('');
428
- handleSelect(focusItemValue, focusItem, event);
428
+
429
+ if (focusItem) {
430
+ handleSelect(focusItemValue, focusItem, event);
431
+ }
432
+
429
433
  handleChange(focusItemValue, event);
430
434
  handleClose();
431
435
  }, [setValue, disabledItemValues, controlledData, focusItemValue, valueKey, searchKeyword, handleClose, setSearchKeyword, createOption, getAllData, handleChange, handleSelect]);
@@ -43,18 +43,20 @@ var ListItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
43
43
 
44
44
  var listItemRef = (0, _react.useRef)(null);
45
45
  (0, _react.useEffect)(function () {
46
- var _register = register({
47
- node: listItemRef.current,
48
- edgeOffset: null,
49
- info: {
50
- collection: collection,
51
- disabled: disabled,
52
- index: index
53
- }
54
- }),
55
- unregister = _register.unregister;
46
+ if (listItemRef.current) {
47
+ var _register = register({
48
+ node: listItemRef.current,
49
+ edgeOffset: null,
50
+ info: {
51
+ collection: collection,
52
+ disabled: disabled,
53
+ index: index
54
+ }
55
+ }),
56
+ unregister = _register.unregister;
56
57
 
57
- return unregister;
58
+ return unregister;
59
+ }
58
60
  }, [collection, disabled, index, register]);
59
61
  var classes = merge(className, withClassPrefix(size, {
60
62
  disabled: disabled,
@@ -1,6 +1,5 @@
1
- import { Offset } from '../../@types/common';
2
- import { Axis } from './utils';
3
- declare type OffsetCallback = (offset: Offset) => void;
1
+ import { Axis, EdgeOffset } from './utils';
2
+ declare type OffsetCallback = (offset: EdgeOffset) => void;
4
3
  export interface AutoScrollerUpdatePayload {
5
4
  translate: Axis;
6
5
  minTranslate: Axis;
@@ -1,8 +1,8 @@
1
- import { Offset } from '../../@types/common';
1
+ import type { EdgeOffset } from './utils';
2
2
  export declare type Collection = string | number;
3
3
  export interface ManagedItem {
4
4
  node: HTMLElement;
5
- edgeOffset: Offset | null;
5
+ edgeOffset: Partial<EdgeOffset> | null;
6
6
  info: {
7
7
  collection: Collection;
8
8
  index?: number;
@@ -124,11 +124,17 @@ var useSortHelper = function useSortHelper(config) {
124
124
  x: offset.x - mouseDownEvent.pageX,
125
125
  y: offset.y - mouseDownEvent.pageY
126
126
  };
127
- (0, _utils.setTranslate3d)(activeNodeHelper, activeNodeHolderTranslate); // animate
127
+
128
+ if (activeNodeHelper) {
129
+ (0, _utils.setTranslate3d)(activeNodeHelper, activeNodeHolderTranslate);
130
+ } // animate
131
+
128
132
 
129
133
  activeNodeNextIndex = -1;
130
134
  var listItemManagerRefs = getOrderedItems(curManagedItem.info.collection);
131
- var sortingOffsetY = activeNodeOffsetEdge.top + activeNodeHolderTranslate.y + containerScrollDelta.top;
135
+ var aTop = activeNodeOffsetEdge.top || 0;
136
+ var cTop = containerScrollDelta.top || 0;
137
+ var sortingOffsetY = aTop + activeNodeHolderTranslate.y + cTop;
132
138
  var activeNodeHeight = parseFloat(activeNodeStyle.height) || 0;
133
139
 
134
140
  for (var i = 0, len = listItemManagerRefs.length; i < len; i++) {
@@ -161,14 +167,16 @@ var useSortHelper = function useSortHelper(config) {
161
167
  continue;
162
168
  }
163
169
 
164
- if (prvNode && currentNodeIndex > activeNodeOldIndex && sortingOffsetY + offsetY >= curEdgeOffset.top) {
170
+ var curEdgeOffsetTop = curEdgeOffset.top || 0;
171
+
172
+ if (prvNode && currentNodeIndex > activeNodeOldIndex && sortingOffsetY + offsetY >= curEdgeOffsetTop) {
165
173
  translate.y = -activeNodeHeight;
166
174
  animatedNodesOffset[currentNodeIndex] = {
167
175
  x: 0,
168
176
  y: currentNode.offsetHeight
169
177
  };
170
178
  activeNodeNextIndex = currentNodeIndex;
171
- } else if (nextNode && currentNodeIndex < activeNodeOldIndex && sortingOffsetY <= curEdgeOffset.top + offsetY) {
179
+ } else if (nextNode && currentNodeIndex < activeNodeOldIndex && sortingOffsetY <= curEdgeOffsetTop + offsetY) {
172
180
  translate.y = activeNodeHeight;
173
181
  animatedNodesOffset[currentNodeIndex] = {
174
182
  x: 0,
@@ -202,9 +210,11 @@ var useSortHelper = function useSortHelper(config) {
202
210
  height: activeNodeBoundingClientRect.height,
203
211
  translate: activeNodeHolderTranslate,
204
212
  maxTranslate: {
213
+ x: 0,
205
214
  y: containerBoundingRect.top + containerBoundingRect.height - activeNodeBoundingClientRect.top - activeNodeBoundingClientRect.height / 2
206
215
  },
207
216
  minTranslate: {
217
+ x: 0,
208
218
  y: containerBoundingRect.top - activeNodeBoundingClientRect.top - activeNodeBoundingClientRect.height / 2
209
219
  }
210
220
  });
@@ -225,11 +235,15 @@ var useSortHelper = function useSortHelper(config) {
225
235
  sortMouseEndListener.off();
226
236
  var holderTranslate = getHolderTranslate();
227
237
  var containerScrollDelta = getContainerScrollDelta();
228
- (0, _utils.setTranslate3d)(activeNodeHelper, {
229
- x: holderTranslate.x - containerScrollDelta.left,
230
- y: holderTranslate.y - containerScrollDelta.top
231
- });
232
- (0, _utils.setTransitionDuration)(activeNodeHelper, transitionDuration); // wait for animation
238
+
239
+ if (activeNodeHelper) {
240
+ (0, _utils.setTranslate3d)(activeNodeHelper, {
241
+ x: holderTranslate.x - (containerScrollDelta.left || 0),
242
+ y: holderTranslate.y - (containerScrollDelta.top || 0)
243
+ });
244
+ (0, _utils.setTransitionDuration)(activeNodeHelper, transitionDuration);
245
+ } // wait for animation
246
+
233
247
 
234
248
  setTimeout(function () {
235
249
  var _activeNodeHelper2, _activeNodeHelper2$pa;
@@ -1,9 +1,10 @@
1
1
  import { CSSProperties } from 'react';
2
2
  import { Offset } from '../../@types/common';
3
3
  export interface Axis {
4
- x?: number;
5
- y?: number;
4
+ x: number;
5
+ y: number;
6
6
  }
7
+ export declare type EdgeOffset = Omit<Offset, 'width' | 'height'>;
7
8
  export declare function isContainInteractiveElement(targetNode: HTMLElement): boolean;
8
9
  export declare function setInlineStyles(node: HTMLElement, styles: CSSProperties): void;
9
10
  export declare function setTranslate3d(node: HTMLElement, translate: Axis | null): void;
@@ -12,5 +13,5 @@ export declare function setTransitionDuration(node: HTMLElement, duration?: numb
12
13
  * find closest target node from source node
13
14
  * */
14
15
  export declare function closestNode(sourceNode: HTMLElement, judge: (target: HTMLElement) => boolean): HTMLElement | null;
15
- export declare function getEdgeOffset(node: HTMLElement, parent: HTMLElement, offset?: Offset): Offset;
16
+ export declare function getEdgeOffset(node: HTMLElement, parent: HTMLElement, offset?: EdgeOffset): Partial<EdgeOffset>;
16
17
  export declare function getScrollingParent(el: HTMLElement): HTMLElement | null;
@@ -73,8 +73,8 @@ function getEdgeOffset(node, parent, offset) {
73
73
 
74
74
 
75
75
  var nodeOffset = {
76
- left: offset.left + node.offsetLeft,
77
- top: offset.top + node.offsetTop
76
+ left: (offset.left || 0) + node.offsetLeft,
77
+ top: (offset.top || 0) + node.offsetTop
78
78
  };
79
79
 
80
80
  if (node.parentNode === parent) {
@@ -131,6 +131,7 @@ function conformToMask(rawValue, mask, config) {
131
131
  // or we find at least one character that we can map.
132
132
  while (rawValueArr.length > 0) {
133
133
  // Let's retrieve the first user character in the queue of characters we have left
134
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
134
135
  var _ref = rawValueArr.shift(),
135
136
  rawValueChar = _ref.char,
136
137
  isNew = _ref.isNew; // If the character we got from the user input is a placeholder character (which happens
@@ -74,19 +74,22 @@ function MenuItem(props) {
74
74
  }, [dispatch]);
75
75
  (0, _react.useEffect)(function () {
76
76
  var menuitemElement = menuitemRef.current;
77
- dispatch({
78
- type: _MenuContext.MenuActionTypes.RegisterItem,
79
- element: menuitemElement,
80
- props: {
81
- disabled: disabled
82
- }
83
- });
84
- return function () {
77
+
78
+ if (menuitemElement) {
85
79
  dispatch({
86
- type: _MenuContext.MenuActionTypes.UnregisterItem,
87
- id: menuitemElement.id
80
+ type: _MenuContext.MenuActionTypes.RegisterItem,
81
+ element: menuitemElement,
82
+ props: {
83
+ disabled: disabled
84
+ }
88
85
  });
89
- };
86
+ return function () {
87
+ dispatch({
88
+ type: _MenuContext.MenuActionTypes.UnregisterItem,
89
+ id: menuitemElement.id
90
+ });
91
+ };
92
+ }
90
93
  }, [menuitemRef, disabled, dispatch]);
91
94
  var menuitemProps = {
92
95
  id: menuitemId,
@@ -35,7 +35,8 @@ var emptyArray = [];
35
35
  var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
36
36
  var _props$as = props.as,
37
37
  Component = _props$as === void 0 ? 'div' : _props$as,
38
- classPrefix = props.classPrefix,
38
+ _props$classPrefix = props.classPrefix,
39
+ classPrefix = _props$classPrefix === void 0 ? 'menu' : _props$classPrefix,
39
40
  className = props.className,
40
41
  cascade = props.cascade,
41
42
  _props$cascadeData = props.cascadeData,
@@ -296,21 +296,21 @@ function useCascadeValue(props, flattenData) {
296
296
  removedValue = removedValue.concat(removeAllChildrenValue(nextValue, item, {
297
297
  valueKey: valueKey,
298
298
  childrenKey: childrenKey
299
- })); // Traverse all ancestor nodes of the current node
299
+ }) || []); // Traverse all ancestor nodes of the current node
300
300
  // Then determine whether all the child nodes of these nodes are selected, and then they themselves must be selected
301
301
 
302
302
  var _loop = function _loop(i) {
303
303
  // Whether the parent node can be selected
304
- var isCheckableParent = !uncheckableItemValues.some(function (v) {
304
+ var isCheckableParent = !(uncheckableItemValues !== null && uncheckableItemValues !== void 0 && uncheckableItemValues.some(function (v) {
305
305
  return v === parents[i][valueKey];
306
- });
306
+ }));
307
307
 
308
308
  if (isCheckableParent) {
309
309
  var isCheckAll = parents[i][childrenKey] // Filter out options that are marked as not selectable
310
310
  .filter(function (n) {
311
- return !uncheckableItemValues.some(function (v) {
311
+ return !(uncheckableItemValues !== null && uncheckableItemValues !== void 0 && uncheckableItemValues.some(function (v) {
312
312
  return v === n[valueKey];
313
- });
313
+ }));
314
314
  }) // Check if all nodes are selected
315
315
  .every(function (n) {
316
316
  return nextValue.some(function (v) {
@@ -325,7 +325,7 @@ function useCascadeValue(props, flattenData) {
325
325
  removedValue = removedValue.concat(removeAllChildrenValue(nextValue, parents[i], {
326
326
  valueKey: valueKey,
327
327
  childrenKey: childrenKey
328
- }));
328
+ }) || []);
329
329
  }
330
330
  }
331
331
  };
@@ -408,7 +408,7 @@ function useCascadeValue(props, flattenData) {
408
408
  });
409
409
 
410
410
  if (item !== null && item !== void 0 && item.parent && nextValue.some(function (v) {
411
- return v === item.parent[valueKey];
411
+ return v === item.parent && item.parent[valueKey];
412
412
  })) {
413
413
  return false;
414
414
  }
@@ -89,8 +89,7 @@ var usePosition = function usePosition(props, ref) {
89
89
  return;
90
90
  }
91
91
 
92
- var overlay = (0, _utils.getDOMNode)(ref.current); // fixme dom-lib getContainer incorrect type
93
-
92
+ var overlay = (0, _utils.getDOMNode)(ref.current);
94
93
  var containerElement = (0, _getContainer.default)(typeof container === 'function' ? container() : container !== null && container !== void 0 ? container : null, (0, _ownerDocument.default)(ref.current).body);
95
94
  var posi = utils.calcOverlayPosition(overlay, targetElement, containerElement);
96
95
 
@@ -39,7 +39,7 @@ var LimitPicker = function LimitPicker(props) {
39
39
  var formatlimitOptions = limitOptions.map(function (item) {
40
40
  return {
41
41
  value: item,
42
- label: (0, _utils.tplTransform)(locale.limit, item)
42
+ label: locale.limit && (0, _utils.tplTransform)(locale.limit, item)
43
43
  };
44
44
  });
45
45
  return /*#__PURE__*/_react.default.createElement("div", {
@@ -162,12 +162,12 @@ var PaginationGroup = /*#__PURE__*/_react.default.forwardRef(function (props, re
162
162
  return /*#__PURE__*/_react.default.createElement("div", {
163
163
  key: onlyKey,
164
164
  className: prefix('total')
165
- }, (0, _utils.tplTransform)(locale.total, total));
165
+ }, locale.total && (0, _utils.tplTransform)(locale.total, total));
166
166
  } else if (key === 'skip') {
167
167
  return /*#__PURE__*/_react.default.createElement("div", {
168
168
  key: onlyKey,
169
169
  className: (0, _classnames.default)(prefix('skip'))
170
- }, (0, _utils.tplTransform)(locale.skip, /*#__PURE__*/_react.default.createElement(_Input.default, {
170
+ }, locale.skip && (0, _utils.tplTransform)(locale.skip, /*#__PURE__*/_react.default.createElement(_Input.default, {
171
171
  size: size,
172
172
  onBlur: handleInputBlur,
173
173
  onPressEnter: handleInputPressEnter
@@ -53,7 +53,10 @@ var PickerOverlay = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
53
53
  // Get the width value of the button,
54
54
  // and then set it to the menu to make their width consistent.
55
55
  var width = (0, _getWidth.default)((0, _utils.getDOMNode)(toggle.root));
56
- (0, _addStyle.default)(overlayRef.current, 'min-width', width + "px");
56
+
57
+ if (overlayRef.current) {
58
+ (0, _addStyle.default)(overlayRef.current, 'min-width', width + "px");
59
+ }
57
60
  }
58
61
  }, [autoWidth, target, overlayRef]);
59
62
 
@@ -45,7 +45,7 @@ var SelectedElement = function SelectedElement(props) {
45
45
  key: item[valueKey]
46
46
  }, /*#__PURE__*/_react.default.createElement("span", {
47
47
  className: prefix('value-item')
48
- }, item[labelKey], checkAll ? " (" + locale.checkAll + ")" : ''), index === count - 1 ? null : /*#__PURE__*/_react.default.createElement("span", {
48
+ }, item[labelKey], checkAll && locale !== null && locale !== void 0 && locale.checkAll ? " (" + locale.checkAll + ")" : ''), index === count - 1 ? null : /*#__PURE__*/_react.default.createElement("span", {
49
49
  className: prefix('value-separator')
50
50
  }, ","));
51
51
  })), countable ? /*#__PURE__*/_react.default.createElement("span", {
@@ -1,4 +1,5 @@
1
1
  import { pickTriggerPropKeys, omitTriggerPropKeys, OverlayTriggerInstance, PositionChildProps } from './PickerToggleTrigger';
2
+ import { PickerToggleProps } from './PickerToggle';
2
3
  import { PickerInstance, PickerComponent } from './types';
3
4
  export { default as DropdownMenu } from './DropdownMenu';
4
5
  export { default as DropdownMenuCheckItem } from './DropdownMenuCheckItem';
@@ -10,6 +11,6 @@ export { default as PickerToggleTrigger } from './PickerToggleTrigger';
10
11
  export { default as SearchBar } from './SearchBar';
11
12
  export { default as SelectedElement } from './SelectedElement';
12
13
  export { pickTriggerPropKeys, omitTriggerPropKeys };
13
- export type { OverlayTriggerInstance, PositionChildProps, PickerInstance, PickerComponent };
14
+ export type { OverlayTriggerInstance, PositionChildProps, PickerInstance, PickerComponent, PickerToggleProps };
14
15
  export * from './utils';
15
16
  export * from './propTypes';
@@ -68,17 +68,25 @@ var Ripple = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
68
68
  };
69
69
 
70
70
  var handleMouseDown = (0, _react.useCallback)(function (event) {
71
- var position = getPosition(triggerRef.current, event);
72
- setRippling(true);
73
- setPosition(position);
74
- onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(position, event);
71
+ if (triggerRef.current) {
72
+ var _position = getPosition(triggerRef.current, event);
73
+
74
+ setRippling(true);
75
+ setPosition(_position);
76
+ onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(_position, event);
77
+ }
75
78
  }, [onMouseDown]);
76
79
  (0, _react.useEffect)(function () {
77
- var parentNode = triggerRef.current.parentNode;
78
- var mousedownListener = (0, _on.default)(parentNode, 'mousedown', handleMouseDown);
79
- return function () {
80
- mousedownListener === null || mousedownListener === void 0 ? void 0 : mousedownListener.off();
81
- };
80
+ var _triggerRef$current;
81
+
82
+ var parentNode = (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.parentNode;
83
+
84
+ if (parentNode) {
85
+ var mousedownListener = (0, _on.default)(parentNode, 'mousedown', handleMouseDown);
86
+ return function () {
87
+ mousedownListener === null || mousedownListener === void 0 ? void 0 : mousedownListener.off();
88
+ };
89
+ }
82
90
  }, [handleMouseDown]);
83
91
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
84
92
  className: classes,
@@ -83,11 +83,13 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
83
83
  _props$childrenKey = props.childrenKey,
84
84
  childrenKey = _props$childrenKey === void 0 ? 'children' : _props$childrenKey,
85
85
  draggable = props.draggable,
86
- defaultExpandAll = props.defaultExpandAll,
86
+ _props$defaultExpandA = props.defaultExpandAll,
87
+ defaultExpandAll = _props$defaultExpandA === void 0 ? false : _props$defaultExpandA,
87
88
  _props$disabledItemVa = props.disabledItemValues,
88
89
  disabledItemValues = _props$disabledItemVa === void 0 ? emptyArray : _props$disabledItemVa,
89
90
  controlledExpandItemValues = props.expandItemValues,
90
- defaultExpandItemValues = props.defaultExpandItemValues,
91
+ _props$defaultExpandI = props.defaultExpandItemValues,
92
+ defaultExpandItemValues = _props$defaultExpandI === void 0 ? emptyArray : _props$defaultExpandI,
91
93
  id = props.id,
92
94
  listProps = props.listProps,
93
95
  getChildren = props.getChildren,
@@ -222,15 +224,17 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
222
224
  });
223
225
  }, [searchKeywordState, expandItemValues, filteredData, flattenNodes, formatVirtualizedTreeData, virtualized]);
224
226
  var focusActiveNode = (0, _react.useCallback)(function () {
225
- (0, _treeUtils.focusToActiveTreeNode)({
226
- list: listRef.current,
227
- valueKey: valueKey,
228
- selector: "." + treePrefix('node-active'),
229
- activeNode: activeNode,
230
- virtualized: virtualized,
231
- container: treeViewRef.current,
232
- formattedNodes: getFormattedNodes()
233
- });
227
+ if (listRef.current) {
228
+ (0, _treeUtils.focusToActiveTreeNode)({
229
+ list: listRef.current,
230
+ valueKey: valueKey,
231
+ selector: "." + treePrefix('node-active'),
232
+ activeNode: activeNode,
233
+ virtualized: virtualized,
234
+ container: treeViewRef.current,
235
+ formattedNodes: getFormattedNodes()
236
+ });
237
+ }
234
238
  }, [treePrefix, activeNode, getFormattedNodes, valueKey, virtualized]);
235
239
  (0, _react.useEffect)(function () {
236
240
  setFilteredData(data, searchKeywordState);
@@ -699,7 +703,7 @@ var TreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
699
703
  var node = activeNode !== null && activeNode !== void 0 ? activeNode : {};
700
704
  selectedElement = node[labelKey];
701
705
 
702
- if ((0, _isFunction2.default)(renderValue)) {
706
+ if ((0, _isFunction2.default)(renderValue) && value) {
703
707
  selectedElement = renderValue(value, node, selectedElement);
704
708
 
705
709
  if ((0, _isNil2.default)(selectedElement)) {
@@ -69,7 +69,9 @@ var UploadTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
69
69
  (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.click();
70
70
  }, []);
71
71
  var handleClearInput = (0, _react.useCallback)(function () {
72
- inputRef.current.value = '';
72
+ if (inputRef.current) {
73
+ inputRef.current.value = '';
74
+ }
73
75
  }, []);
74
76
  var handleDragEnter = (0, _react.useCallback)(function (event) {
75
77
  if (draggable) {
@@ -205,7 +205,9 @@ var Uploader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
205
205
  */
206
206
 
207
207
  var cleanInputValue = (0, _react.useCallback)(function () {
208
- trigger.current.clearInput();
208
+ var _trigger$current;
209
+
210
+ (_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : _trigger$current.clearInput();
209
211
  }, []);
210
212
  /**
211
213
  * Callback for successful file upload.
@@ -279,7 +281,11 @@ var Uploader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
279
281
  updateFileStatus((0, _extends2.default)({}, file, {
280
282
  status: 'uploading'
281
283
  }));
282
- xhrs.current[file.fileKey] = xhr;
284
+
285
+ if (file.fileKey) {
286
+ xhrs.current[file.fileKey] = xhr;
287
+ }
288
+
283
289
  onUpload === null || onUpload === void 0 ? void 0 : onUpload(file, uploadData, xhr);
284
290
  }, [action, data, handleAjaxUploadError, handleAjaxUploadProgress, handleAjaxUploadSuccess, headers, name, onUpload, timeout, updateFileStatus, withCredentials, disableMultipart]);
285
291
  var handleAjaxUpload = (0, _react.useCallback)(function () {
@@ -8,7 +8,7 @@ export interface Toaster {
8
8
  * @param message
9
9
  * @param options
10
10
  */
11
- push(message: React.ReactNode, options?: ToastContainerProps): string;
11
+ push(message: React.ReactNode, options?: ToastContainerProps): string | undefined;
12
12
  /**
13
13
  * Remove a message by key
14
14
  * @param key
@@ -41,6 +41,8 @@ var toaster = function toaster(message) {
41
41
  };
42
42
 
43
43
  toaster.push = function (message, options) {
44
+ var _container$current;
45
+
44
46
  if (options === void 0) {
45
47
  options = {};
46
48
  }
@@ -53,18 +55,22 @@ toaster.push = function (message, options) {
53
55
  container = createContainer((_options$placement = options.placement) !== null && _options$placement !== void 0 ? _options$placement : '', options);
54
56
  }
55
57
 
56
- return container.current.push(message);
58
+ return (_container$current = container.current) === null || _container$current === void 0 ? void 0 : _container$current.push(message);
57
59
  };
58
60
 
59
61
  toaster.remove = function (key) {
60
62
  containers.forEach(function (c) {
61
- return c.current.remove(key);
63
+ var _c$current;
64
+
65
+ return (_c$current = c.current) === null || _c$current === void 0 ? void 0 : _c$current.remove(key);
62
66
  });
63
67
  };
64
68
 
65
69
  toaster.clear = function () {
66
70
  containers.forEach(function (c) {
67
- return c.current.clear();
71
+ var _c$current2;
72
+
73
+ return (_c$current2 = c.current) === null || _c$current2 === void 0 ? void 0 : _c$current2.clear();
68
74
  });
69
75
  };
70
76
 
@@ -38,7 +38,7 @@ export declare function hasVisibleChildren(node: TreeNodeType, childrenKey: stri
38
38
  * @param b
39
39
  */
40
40
  export declare function compareArray(a: any[], b: any[]): boolean;
41
- export declare function getDefaultExpandItemValues(data: ItemDataType[], props: Pick<TreePickerProps, 'defaultExpandAll' | 'valueKey' | 'childrenKey' | 'defaultExpandItemValues'>): any[];
41
+ export declare function getDefaultExpandItemValues(data: ItemDataType[], props: Required<Pick<TreePickerProps, 'defaultExpandAll' | 'valueKey' | 'childrenKey' | 'defaultExpandItemValues'>>): any[];
42
42
  /**
43
43
  * 获取 expandItemValues 的 value
44
44
  * @param props
@@ -70,7 +70,7 @@ export declare function filterNodesOfTree(data: any, check: any): TreeNodeType[]
70
70
  * @param isSearching - component is in Searching
71
71
  * @returns
72
72
  */
73
- export declare const getFocusableItems: (filteredData: ItemDataType[], props: PartialTreeProps, isSearching?: boolean | undefined) => TreeNodeType[];
73
+ export declare const getFocusableItems: (filteredData: ItemDataType[], props: Required<Pick<PartialTreeProps, 'disabledItemValues' | 'valueKey' | 'childrenKey' | 'expandItemValues'>>, isSearching?: boolean | undefined) => TreeNodeType[];
74
74
  /**
75
75
  * return all focusable Item and active Element index
76
76
  * @param focusItemValue
@@ -235,7 +235,7 @@ export interface FocusToTreeNodeProps {
235
235
  valueKey: string;
236
236
  activeNode: any;
237
237
  virtualized: boolean;
238
- container: HTMLDivElement;
238
+ container: HTMLElement | null;
239
239
  list: ListInstance;
240
240
  formattedNodes: TreeNodeType[];
241
241
  }
@@ -165,11 +165,13 @@ function getNodeParentKeys(nodes, node, valueKey) {
165
165
  var parentKeys = [];
166
166
 
167
167
  var traverse = function traverse(node) {
168
- if (node !== null && node !== void 0 && node.parent) {
169
- var _node$parent;
168
+ var _node$parent;
169
+
170
+ if (node !== null && node !== void 0 && (_node$parent = node.parent) !== null && _node$parent !== void 0 && _node$parent.refKey) {
171
+ var _node$parent2;
170
172
 
171
173
  traverse(nodes[node.parent.refKey]);
172
- parentKeys.push(node === null || node === void 0 ? void 0 : (_node$parent = node.parent) === null || _node$parent === void 0 ? void 0 : _node$parent[valueKey]);
174
+ parentKeys.push(node === null || node === void 0 ? void 0 : (_node$parent2 = node.parent) === null || _node$parent2 === void 0 ? void 0 : _node$parent2[valueKey]);
173
175
  }
174
176
  };
175
177
 
@@ -718,7 +720,7 @@ function getChildrenByFlattenNodes(nodes, parent) {
718
720
  return Object.values(nodes).filter(function (item) {
719
721
  var _item$parent;
720
722
 
721
- return (item === null || item === void 0 ? void 0 : (_item$parent = item.parent) === null || _item$parent === void 0 ? void 0 : _item$parent.refKey) === parent.refKey && !nodes[item.refKey].uncheckable;
723
+ return (item === null || item === void 0 ? void 0 : (_item$parent = item.parent) === null || _item$parent === void 0 ? void 0 : _item$parent.refKey) === parent.refKey && item.refKey && !nodes[item.refKey].uncheckable;
722
724
  });
723
725
  }
724
726
 
@@ -5,4 +5,4 @@
5
5
  * @param eventTarget The target to listen for events on
6
6
  * @param listener An event handler
7
7
  */
8
- export default function useElementResize(eventTarget: Element | (() => Element), listener: ResizeObserverCallback): void;
8
+ export default function useElementResize(eventTarget: Element | null | (() => Element | null), listener: ResizeObserverCallback): void;
@@ -19,8 +19,11 @@ function useElementResize(eventTarget, listener) {
19
19
  (0, _react.useEffect)(function () {
20
20
  if (!resizeObserver.current) {
21
21
  var target = typeof eventTarget === 'function' ? eventTarget() : eventTarget;
22
- resizeObserver.current = new _resizeObserver.ResizeObserver(listener);
23
- resizeObserver.current.observe(target);
22
+
23
+ if (target) {
24
+ resizeObserver.current = new _resizeObserver.ResizeObserver(listener);
25
+ resizeObserver.current.observe(target);
26
+ }
24
27
  }
25
28
 
26
29
  return function () {
@@ -6,7 +6,7 @@ export interface UseTimeoutFnReturn {
6
6
  * A timer hook
7
7
  * @param fn Timer callback function
8
8
  * @param ms Milliseconds of the timer
9
- * @param open Whether to open the timer
9
+ * @param enabled Whether to open the timer
10
10
  */
11
- declare function useTimeout(fn: (() => void) | undefined, ms?: number, open?: boolean): UseTimeoutFnReturn;
11
+ declare function useTimeout(fn: (() => void) | undefined, ms?: number, enabled?: boolean): UseTimeoutFnReturn;
12
12
  export default useTimeout;