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
package/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ ## [5.6.2](https://github.com/rsuite/rsuite/compare/v5.6.1...v5.6.2) (2022-02-24)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **Affix:** fix left offset not update after position change ([#2370](https://github.com/rsuite/rsuite/issues/2370)) ([eba3536](https://github.com/rsuite/rsuite/commit/eba353685f4892e1143b8c249ac956b2522a2993))
6
+ - **typescript:** remove not-null assertion operator ([#2359](https://github.com/rsuite/rsuite/issues/2359)) ([5c07293](https://github.com/rsuite/rsuite/commit/5c07293f5c9c2d4deee768be17e8cea840868708))
7
+
8
+ ## [5.6.1](https://github.com/rsuite/rsuite/compare/v5.6.0...v5.6.1) (2022-02-17)
9
+
10
+ ### Bug Fixes
11
+
12
+ - **caretAs:** fix DatePicker and DateRangePicker cannot replace caret ([#2360](https://github.com/rsuite/rsuite/issues/2360)) ([1e619b2](https://github.com/rsuite/rsuite/commit/1e619b2ef7abc58a93f6d6d4fc78ffea07761c81))
13
+ - **IconButton:** infer addtional props from as prop ([#2343](https://github.com/rsuite/rsuite/issues/2343)) ([3b6c25c](https://github.com/rsuite/rsuite/commit/3b6c25c103ed33a86baa47b8c757462da7ae8c4c))
14
+ - **Toaster:** code breaks when toaster is in a useEffect ([#2353](https://github.com/rsuite/rsuite/issues/2353)) ([d083fe2](https://github.com/rsuite/rsuite/commit/d083fe27013659cbc45196b7ead9ff5863404fb8)), closes [#2336](https://github.com/rsuite/rsuite/issues/2336)
15
+ - **useTimeout:** fix callback not being called after timeout ([#2349](https://github.com/rsuite/rsuite/issues/2349)) ([e82a12a](https://github.com/rsuite/rsuite/commit/e82a12aa2929cf66e7a3c6d70008c5bedb4ab128))
16
+
17
+ # [5.6.0](https://github.com/rsuite/rsuite/compare/v5.5.2...v5.6.0) (2022-02-10)
18
+
19
+ ### Bug Fixes
20
+
21
+ - **DatePicker:** fixed oneTap to work in month view ([#2342](https://github.com/rsuite/rsuite/issues/2342)) ([d5368cd](https://github.com/rsuite/rsuite/commit/d5368cdfb2a6386bfb509a6316520e450f35f2b4))
22
+ - handle some null value branch ([#2323](https://github.com/rsuite/rsuite/issues/2323)) ([3ffd1d9](https://github.com/rsuite/rsuite/commit/3ffd1d966d5fd7f0a4f42bb8b08bf0cb65955fef))
23
+
24
+ ### Features
25
+
26
+ - **Carousel:** Expose active index ([#2338](https://github.com/rsuite/rsuite/issues/2338)) ([beac483](https://github.com/rsuite/rsuite/commit/beac48395c9fc7c30efb3f49f81e8969cd3ee71d))
27
+
1
28
  ## [5.5.2](https://github.com/rsuite/rsuite/compare/v5.5.1...v5.5.2) (2022-01-27)
2
29
 
3
30
  ### Features
package/README.md CHANGED
@@ -130,9 +130,11 @@ If you like React Suite, you can show your support by either
130
130
  This project exists thanks to all the people who contribute.
131
131
 
132
132
  <a href="https://github.com/rsuite/rsuite/graphs/contributors" target="_blank">
133
- <img src="https://opencollective.com/rsuite/contributors.svg?width=890" />
133
+ <img src="https://contrib.rocks/image?repo=rsuite/rsuite" />
134
134
  </a>
135
135
 
136
+ [![opencollective-now][opencollective-svg]][opencollective-home]
137
+
136
138
  ## License
137
139
 
138
140
  React Suite is [MIT licensed][license]. Copyright (c) 2016-present, HYPERS.
@@ -147,7 +149,7 @@ React Suite is [MIT licensed][license]. Copyright (c) 2016-present, HYPERS.
147
149
  [rsuite-design]: https://rsuitejs.com/design/default
148
150
  [live-preview-on-codesandbox]: https://codesandbox.io/s/rsuite-template-5vq6zo2z5l
149
151
  [rsuite-doc-guide]: https://rsuitejs.com/en/guide/introduction
150
- [rsuite-doc-guide-themes]: https://rsuitejs.com/en/guide/themes
152
+ [rsuite-doc-guide-themes]: https://rsuitejs.com/en/guide/customization
151
153
  [rsuite-doc-guide-intl]: https://rsuitejs.com/en/guide/intl
152
154
  [rsuite-doc-guide-rtl]: https://rsuitejs.com/en/guide/rtl
153
155
  [rsuite-components-overview]: https://rsuitejs.com/en/components/overview
@@ -143,10 +143,10 @@ export interface ItemDataType<T = number | string> extends Record<string, any> {
143
143
  loading?: boolean;
144
144
  }
145
145
  export interface Offset {
146
- top?: number;
147
- left?: number;
148
- width?: number;
149
- height?: number;
146
+ top: number;
147
+ left: number;
148
+ width: number;
149
+ height: number;
150
150
  }
151
151
  export declare type OnChangeCallback<T, E = React.SyntheticEvent> = (value: T, event: E) => void;
152
152
  export {};
@@ -131,7 +131,6 @@ var Affix = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
131
131
  var fixedStyles = {
132
132
  position: 'fixed',
133
133
  top: top,
134
- left: offset === null || offset === void 0 ? void 0 : offset.left,
135
134
  width: offset === null || offset === void 0 ? void 0 : offset.width,
136
135
  zIndex: 10
137
136
  };
@@ -100,7 +100,7 @@ declare class Transition extends React.Component<TransitionProps, TransitionStat
100
100
  setNextCallback(callback: (event?: React.AnimationEvent) => void): {
101
101
  (event?: React.AnimationEvent<Element> | undefined): void;
102
102
  cancel: () => any;
103
- };
103
+ } | null;
104
104
  getChildElement(): HTMLElement;
105
105
  performEnter(props: TransitionProps): void;
106
106
  performExit(props: TransitionProps): void;
@@ -154,6 +154,10 @@ var Transition = /*#__PURE__*/function (_React$Component) {
154
154
  this.setNextCallback(handler);
155
155
  (_this$animationEventL = this.animationEventListener) === null || _this$animationEventL === void 0 ? void 0 : _this$animationEventL.off();
156
156
 
157
+ if (!this.nextCallback) {
158
+ return;
159
+ }
160
+
157
161
  if (node) {
158
162
  var _this$props = this.props,
159
163
  timeout = _this$props.timeout,
@@ -193,9 +197,11 @@ var Transition = /*#__PURE__*/function (_React$Component) {
193
197
  _this2.nextCallback = null;
194
198
  };
195
199
 
196
- this.nextCallback.cancel = function () {
197
- active = false;
198
- };
200
+ if (this.nextCallback) {
201
+ this.nextCallback.cancel = function () {
202
+ active = false;
203
+ };
204
+ }
199
205
 
200
206
  return this.nextCallback;
201
207
  };
@@ -273,7 +279,7 @@ var Transition = /*#__PURE__*/function (_React$Component) {
273
279
  if (this.instanceElement) {
274
280
  var nextCallback = this.setNextCallback(callback);
275
281
  this.setState(nextState, function () {
276
- return nextCallback();
282
+ return nextCallback === null || nextCallback === void 0 ? void 0 : nextCallback();
277
283
  });
278
284
  }
279
285
  };
@@ -101,10 +101,11 @@ var scrollTo = function scrollTo(time, row) {
101
101
  var node = container === null || container === void 0 ? void 0 : container.querySelector("[data-key=\"" + type + "-" + value + "\"]");
102
102
 
103
103
  if (node && container) {
104
- var _ref2 = (0, _getPosition.default)(node, container),
105
- top = _ref2.top;
104
+ var position = (0, _getPosition.default)(node, container);
106
105
 
107
- (0, _utils.scrollTopAnimation)(container, top, (0, _scrollTop.default)(container) !== 0);
106
+ if (position) {
107
+ (0, _utils.scrollTopAnimation)(container, position.top, (0, _scrollTop.default)(container) !== 0);
108
+ }
108
109
  }
109
110
  });
110
111
  };
@@ -134,7 +135,9 @@ var TimeDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
134
135
  showMeridian: showMeridian
135
136
  }); // The currently selected time scrolls to the visible range.
136
137
 
137
- show && scrollTo(time, rowRef.current);
138
+ if (show && rowRef.current) {
139
+ scrollTo(time, rowRef.current);
140
+ }
138
141
  }, [date, format, show, showMeridian]);
139
142
 
140
143
  var handleClick = function handleClick(type, d, event) {
@@ -9,7 +9,11 @@ export interface CarouselProps extends WithAsProps {
9
9
  placement?: 'top' | 'bottom' | 'left' | 'right';
10
10
  /** Button shape */
11
11
  shape?: 'dot' | 'bar';
12
- /** Callback fired when the active item changes */
12
+ /** Active element index */
13
+ activeIndex?: number;
14
+ /** Defaul initial index */
15
+ defaultActiveIndex?: number;
16
+ /** Callback fired when the active item manually changes */
13
17
  onSelect?: (index: number, event: React.ChangeEvent<HTMLInputElement>) => void;
14
18
  /** Callback fired when a slide transition starts */
15
19
  onSlideStart?: (index: number, event?: React.ChangeEvent<HTMLInputElement>) => void;
@@ -35,10 +35,13 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
35
35
  autoplay = props.autoplay,
36
36
  _props$autoplayInterv = props.autoplayInterval,
37
37
  autoplayInterval = _props$autoplayInterv === void 0 ? 4000 : _props$autoplayInterv,
38
+ activeIndexProp = props.activeIndex,
39
+ _props$defaultActiveI = props.defaultActiveIndex,
40
+ defaultActiveIndex = _props$defaultActiveI === void 0 ? 0 : _props$defaultActiveI,
38
41
  onSelect = props.onSelect,
39
42
  onSlideStart = props.onSlideStart,
40
43
  onSlideEnd = props.onSlideEnd,
41
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "children", "classPrefix", "className", "placement", "shape", "autoplay", "autoplayInterval", "onSelect", "onSlideStart", "onSlideEnd"]);
44
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "children", "classPrefix", "className", "placement", "shape", "autoplay", "autoplayInterval", "activeIndex", "defaultActiveIndex", "onSelect", "onSlideStart", "onSlideEnd"]);
42
45
 
43
46
  var _useCustom = (0, _utils.useCustom)('Carousel'),
44
47
  rtl = _useCustom.rtl;
@@ -54,17 +57,24 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
54
57
  var vertical = placement === 'left' || placement === 'right';
55
58
  var lengthKey = vertical ? 'height' : 'width';
56
59
 
60
+ var _useControlled = (0, _utils.useControlled)(activeIndexProp, defaultActiveIndex),
61
+ activeIndex = _useControlled[0],
62
+ setActiveIndex = _useControlled[1];
63
+
57
64
  var _useState = (0, _react.useState)(0),
58
- activeIndex = _useState[0],
59
- setActiveIndex = _useState[1];
65
+ lastIndex = _useState[0],
66
+ setLastIndex = _useState[1];
60
67
 
61
- var _useState2 = (0, _react.useState)(0),
62
- lastIndex = _useState2[0],
63
- setLastIndex = _useState2[1];
68
+ var rootRef = (0, _react.useRef)(null); // Set a timer for automatic playback.
69
+ // `autoplay` needs to be cast to boolean type to avoid undefined parameters.
64
70
 
65
- var rootRef = (0, _react.useRef)(null);
71
+ var _useTimeout = (0, _utils.useTimeout)(function () {
72
+ return handleSlide();
73
+ }, autoplayInterval, !!autoplay && count > 1),
74
+ clear = _useTimeout.clear,
75
+ reset = _useTimeout.reset;
66
76
 
67
- var handleSlide = function handleSlide(nextActiveIndex, event) {
77
+ var handleSlide = (0, _react.useCallback)(function (nextActiveIndex, event) {
68
78
  if (!rootRef.current) {
69
79
  return;
70
80
  }
@@ -77,7 +87,7 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
77
87
  onSlideStart === null || onSlideStart === void 0 ? void 0 : onSlideStart(nextIndex, event);
78
88
  setLastIndex(nextActiveIndex == null ? activeIndex : nextIndex);
79
89
  reset();
80
- };
90
+ }, [activeIndex, count, setActiveIndex, clear, onSlideStart, reset]);
81
91
 
82
92
  var handleChange = function handleChange(event) {
83
93
  var activeIndex = +event.target.value;
@@ -87,13 +97,7 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
87
97
 
88
98
  var handleTransitionEnd = (0, _react.useCallback)(function (event) {
89
99
  onSlideEnd === null || onSlideEnd === void 0 ? void 0 : onSlideEnd(activeIndex, event);
90
- }, [activeIndex, onSlideEnd]); // Set a timer for automatic playback.
91
- // `autoplay` needs to be cast to boolean type to avoid undefined parameters.
92
-
93
- var _useTimeout = (0, _utils.useTimeout)(handleSlide, autoplayInterval, !!autoplay && count > 1),
94
- clear = _useTimeout.clear,
95
- reset = _useTimeout.reset;
96
-
100
+ }, [activeIndex, onSlideEnd]);
97
101
  var uniqueId = (0, _react.useMemo)(function () {
98
102
  return (0, _utils.guid)();
99
103
  }, []);
@@ -165,6 +169,8 @@ Carousel.propTypes = {
165
169
  as: _propTypes.default.elementType,
166
170
  className: _propTypes.default.string,
167
171
  classPrefix: _propTypes.default.string,
172
+ activeIndex: _propTypes.default.number,
173
+ defaultActiveIndex: _propTypes.default.number,
168
174
  autoplay: _propTypes.default.bool,
169
175
  autoplayInterval: _propTypes.default.number,
170
176
  placement: _propTypes.default.oneOf(['top', 'bottom', 'left', 'right']),
@@ -87,7 +87,7 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
87
87
  if (activeItem) {
88
88
  var position = (0, _getPosition.default)(activeItem, column); // Let the active option scroll into view.
89
89
 
90
- (0, _scrollTop.default)(column, position.top);
90
+ (0, _scrollTop.default)(column, position === null || position === void 0 ? void 0 : position.top);
91
91
  }
92
92
  });
93
93
  }, [prefix]);
@@ -79,17 +79,20 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
79
79
  controlledValue = props.value,
80
80
  _props$defaultValue = props.defaultValue,
81
81
  defaultValue = _props$defaultValue === void 0 ? emptyArray : _props$defaultValue,
82
- defaultExpandAll = props.defaultExpandAll,
82
+ _props$defaultExpandA = props.defaultExpandAll,
83
+ defaultExpandAll = _props$defaultExpandA === void 0 ? false : _props$defaultExpandA,
83
84
  _props$disabledItemVa = props.disabledItemValues,
84
85
  disabledItemValues = _props$disabledItemVa === void 0 ? emptyArray : _props$disabledItemVa,
85
86
  controlledExpandItemValues = props.expandItemValues,
86
- defaultExpandItemValues = props.defaultExpandItemValues,
87
+ _props$defaultExpandI = props.defaultExpandItemValues,
88
+ defaultExpandItemValues = _props$defaultExpandI === void 0 ? emptyArray : _props$defaultExpandI,
87
89
  _props$height = props.height,
88
90
  height = _props$height === void 0 ? 360 : _props$height,
89
91
  menuStyle = props.menuStyle,
90
92
  _props$searchable = props.searchable,
91
93
  searchable = _props$searchable === void 0 ? true : _props$searchable,
92
- virtualized = props.virtualized,
94
+ _props$virtualized = props.virtualized,
95
+ virtualized = _props$virtualized === void 0 ? false : _props$virtualized,
93
96
  className = props.className,
94
97
  _props$classPrefix = props.classPrefix,
95
98
  classPrefix = _props$classPrefix === void 0 ? 'picker' : _props$classPrefix,
@@ -271,15 +274,17 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
271
274
  };
272
275
 
273
276
  var focusActiveNode = (0, _react.useCallback)(function () {
274
- (0, _treeUtils.focusToActiveTreeNode)({
275
- list: listRef.current,
276
- valueKey: valueKey,
277
- selector: "." + checkTreePrefix('node-active'),
278
- activeNode: activeNode,
279
- virtualized: virtualized,
280
- container: treeViewRef.current,
281
- formattedNodes: getFormattedNodes()
282
- });
277
+ if (listRef.current) {
278
+ (0, _treeUtils.focusToActiveTreeNode)({
279
+ list: listRef.current,
280
+ valueKey: valueKey,
281
+ selector: "." + checkTreePrefix('node-active'),
282
+ activeNode: activeNode,
283
+ virtualized: virtualized,
284
+ container: treeViewRef.current,
285
+ formattedNodes: getFormattedNodes()
286
+ });
287
+ }
283
288
  }, [checkTreePrefix, activeNode, getFormattedNodes, valueKey, virtualized]);
284
289
  (0, _react.useEffect)(function () {
285
290
  setValue((0, _utils2.getCheckTreePickerDefaultValue)(value, uncheckableItemValues));
@@ -311,9 +316,9 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
311
316
  forceUpdate();
312
317
  }, [cascade, value, uncheckableItemValues, unSerializeList, flattenNodes, forceUpdate]);
313
318
  var toggleUpChecked = (0, _react.useCallback)(function (nodes, node, checked) {
314
- var currentNode = nodes[node.refKey];
319
+ var currentNode = node.refKey ? nodes[node.refKey] : null;
315
320
 
316
- if (cascade) {
321
+ if (cascade && currentNode) {
317
322
  if (!checked) {
318
323
  currentNode.check = checked;
319
324
  currentNode.checkAll = checked;
@@ -333,7 +338,12 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
333
338
  }
334
339
  }, [cascade]);
335
340
  var toggleDownChecked = (0, _react.useCallback)(function (nodes, node, isChecked) {
336
- var currentNode = nodes[node.refKey];
341
+ var currentNode = node.refKey ? nodes[node.refKey] : null;
342
+
343
+ if (!currentNode) {
344
+ return;
345
+ }
346
+
337
347
  currentNode.check = isChecked;
338
348
 
339
349
  if (!currentNode[childrenKey] || !currentNode[childrenKey].length || !cascade) {
@@ -356,11 +366,13 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
356
366
  });
357
367
  }, [flattenNodes, uncheckableItemValues, serializeListOnlyParent, toggleDownChecked, toggleUpChecked]);
358
368
  var handleSelect = (0, _react.useCallback)(function (node, event) {
359
- if (!node) {
369
+ var currentNode = node.refKey ? flattenNodes[node.refKey] : null;
370
+
371
+ if (!node || !currentNode) {
360
372
  return;
361
373
  }
362
374
 
363
- var selectedValues = toggleChecked(node, !flattenNodes[node.refKey].check);
375
+ var selectedValues = toggleChecked(node, !currentNode.check);
364
376
 
365
377
  if (!isControlled) {
366
378
  unSerializeList({
@@ -36,9 +36,9 @@ export declare function isEveryFirstLevelNodeUncheckable(nodes: TreeNodesType, u
36
36
  * get node uncheckable state
37
37
  * @param {*} node
38
38
  */
39
- export declare function isNodeUncheckable(node: any, props: Partial<CheckTreePickerProps>): boolean;
40
- export declare function getFormattedTree(data: any[], nodes: TreeNodesType, props: Partial<CheckTreePickerProps>): any[];
41
- export declare function getDisabledState(nodes: TreeNodesType, node: TreeNodeType, props: Partial<CheckTreePickerProps>): boolean;
39
+ export declare function isNodeUncheckable(node: any, props: Required<Pick<CheckTreePickerProps, 'uncheckableItemValues' | 'valueKey'>>): boolean;
40
+ export declare function getFormattedTree(data: any[], nodes: TreeNodesType, props: Required<Pick<CheckTreePickerProps, 'childrenKey' | 'cascade'>>): any[];
41
+ export declare function getDisabledState(nodes: TreeNodesType, node: TreeNodeType, props: Required<Pick<CheckTreePickerProps, 'disabledItemValues' | 'valueKey'>>): boolean;
42
42
  export declare function getCheckTreePickerDefaultValue(value: any[], uncheckableItemValues: any[]): any[];
43
43
  export declare function getSelectedItems(nodes: TreeNodesType, value: (string | number)[], valueKey: string): TreeNodeType[];
44
44
  export declare function getNodeCheckState({ nodes, node, cascade, childrenKey }: any): CheckStateType;
@@ -136,7 +136,7 @@ function getFormattedTree(data, nodes, props) {
136
136
  var curNode = nodes[node.refKey];
137
137
 
138
138
  if (curNode) {
139
- var _node;
139
+ var _node$childrenKey;
140
140
 
141
141
  var checkState = !(0, _isUndefined2.default)(cascade) ? getNodeCheckState({
142
142
  node: curNode,
@@ -150,7 +150,7 @@ function getFormattedTree(data, nodes, props) {
150
150
  formatted.parent = curNode.parent;
151
151
  formatted.checkState = checkState;
152
152
 
153
- if (((_node = node[childrenKey]) === null || _node === void 0 ? void 0 : _node.length) > 0) {
153
+ if (((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) > 0) {
154
154
  formatted[childrenKey] = getFormattedTree(formatted[childrenKey], nodes, props);
155
155
  }
156
156
  }
@@ -169,7 +169,7 @@ function getDisabledState(nodes, node, props) {
169
169
  }
170
170
 
171
171
  return disabledItemValues.some(function (value) {
172
- return (0, _utils.shallowEqual)(nodes[node.refKey][valueKey], value);
172
+ return node.refKey && (0, _utils.shallowEqual)(nodes[node.refKey][valueKey], value);
173
173
  });
174
174
  }
175
175
 
@@ -13,15 +13,15 @@ declare const DOMHelper: {
13
13
  cancelAnimationFramePolyfill: typeof clearTimeout;
14
14
  requestAnimationFramePolyfill: typeof requestAnimationFrame;
15
15
  getAnimationEnd: typeof helpers.getAnimationEnd;
16
- ownerDocument: (node: Element) => Document;
16
+ ownerDocument: (node: Element | null) => Document;
17
17
  ownerWindow: (componentOrElement: Element) => Window;
18
18
  getWindow: (node: any) => Window;
19
- getContainer: (container: Element | (() => Element), defaultContainer?: Element | undefined) => Element;
19
+ getContainer: (container: Element | (() => Element | null) | null, defaultContainer?: Element | undefined) => Element;
20
20
  canUseDOM: boolean;
21
21
  contains: (context: Element, node: Node & ParentNode) => boolean;
22
22
  scrollTop: (node: Element, val?: number | undefined) => number;
23
23
  scrollLeft: (node: Element, val?: number | undefined) => number;
24
- getOffset: (node: Element) => {
24
+ getOffset: (node: Element | null) => {
25
25
  top: number;
26
26
  left: number;
27
27
  height: number;
@@ -42,7 +42,7 @@ declare const DOMHelper: {
42
42
  isFocusable: typeof helpers.isFocusable;
43
43
  getStyle: (node: Element, property?: string | undefined) => string | CSSStyleDeclaration;
44
44
  removeStyle: (node: Element, keys: string | string[]) => void;
45
- addStyle: (node: Element, property: string | import("dom-lib/esm/addStyle").CSSProperty, value?: string | number | undefined) => void;
45
+ addStyle: (node: Element, property: string | Partial<import("dom-lib/esm/addStyle").CSSProperty>, value?: string | number | undefined) => void;
46
46
  translateDOMPositionXY: (style: CSSStyleDeclaration, x?: number | undefined, y?: number | undefined) => CSSStyleDeclaration;
47
47
  };
48
48
  export default DOMHelper;
@@ -1,9 +1,10 @@
1
1
  import React from 'react';
2
2
  import { RangeType } from './Toolbar';
3
3
  import { DatePickerLocale } from '../locales';
4
+ import { PickerToggleProps } from '../Picker';
4
5
  import { FormControlBaseProps, PickerBaseProps, RsRefForwardingComponent } from '../@types/common';
5
6
  export type { RangeType } from './Toolbar';
6
- export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null> {
7
+ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, FormControlBaseProps<Date | null>, Pick<PickerToggleProps, 'caretAs' | 'readOnly' | 'plaintext'> {
7
8
  /** Configure shortcut options */
8
9
  ranges?: RangeType<Date>[];
9
10
  /** Calendar panel default presentation date and time */
@@ -68,6 +68,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
68
68
  showWeekNumbers = props.showWeekNumbers,
69
69
  style = props.style,
70
70
  toggleAs = props.toggleAs,
71
+ caretAsProp = props.caretAs,
71
72
  disabledDateProp = props.disabledDate,
72
73
  renderValue = props.renderValue,
73
74
  onChange = props.onChange,
@@ -83,7 +84,7 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
83
84
  onSelect = props.onSelect,
84
85
  onToggleMonthDropdown = props.onToggleMonthDropdown,
85
86
  onToggleTimeDropdown = props.onToggleTimeDropdown,
86
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "defaultValue", "disabled", "format", "isoWeek", "limitEndYear", "locale", "menuClassName", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "toggleAs", "disabledDate", "renderValue", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown"]);
87
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "defaultValue", "disabled", "format", "isoWeek", "limitEndYear", "locale", "menuClassName", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "toggleAs", "caretAs", "disabledDate", "renderValue", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown"]);
87
88
 
88
89
  var _useCustom = (0, _utils.useCustom)('DatePicker', overrideLocale),
89
90
  locale = _useCustom.locale,
@@ -152,15 +153,6 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
152
153
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(nextValue, event);
153
154
  onChangeCalendarDate === null || onChangeCalendarDate === void 0 ? void 0 : onChangeCalendarDate(nextValue, event);
154
155
  }, [onChangeCalendarDate, onSelect]);
155
- /**
156
- * A callback triggered when the date on the calendar changes.
157
- */
158
-
159
- var handleChangePageDate = (0, _react.useCallback)(function (nextPageDate) {
160
- setCalendarDate(nextPageDate);
161
- reset();
162
- handleDateChange(nextPageDate);
163
- }, [handleDateChange, reset, setCalendarDate]);
164
156
  /**
165
157
  * A callback triggered when the time on the calendar changes.
166
158
  */
@@ -288,6 +280,21 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
288
280
  updateValue(event, nextValue);
289
281
  }
290
282
  }, [formatStr, handleDateChange, oneTap, calendarDate, setCalendarDate, updateValue]);
283
+ /**
284
+ * A callback triggered when the date on the calendar changes.
285
+ */
286
+
287
+ var handleChangePageDate = (0, _react.useCallback)(function (nextPageDate, event) {
288
+ setCalendarDate(nextPageDate);
289
+ reset();
290
+ handleDateChange(nextPageDate); // Show only the calendar month panel. formatStr = 'yyyy-MM'
291
+
292
+ var onlyShowMonth = _utils.DateUtils.shouldMonth(formatStr) && !_utils.DateUtils.shouldDate(formatStr);
293
+
294
+ if (oneTap && onlyShowMonth) {
295
+ updateValue(event, nextPageDate);
296
+ }
297
+ }, [formatStr, handleDateChange, oneTap, reset, setCalendarDate, updateValue]);
291
298
  var disabledDate = (0, _react.useCallback)(function (date) {
292
299
  var _disabledDateProp;
293
300
 
@@ -439,8 +446,8 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
439
446
  return (_renderValue = renderValue === null || renderValue === void 0 ? void 0 : renderValue(value, formatStr)) !== null && _renderValue !== void 0 ? _renderValue : formatDate(value, formatStr);
440
447
  }, [formatStr, formatDate, placeholder, renderValue, value]);
441
448
  var caretAs = (0, _react.useMemo)(function () {
442
- return _utils.DateUtils.shouldOnlyTime(formatStr) ? _ClockO.default : _Calendar.default;
443
- }, [formatStr]);
449
+ return caretAsProp || (_utils.DateUtils.shouldOnlyTime(formatStr) ? _ClockO.default : _Calendar.default);
450
+ }, [caretAsProp, formatStr]);
444
451
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
445
452
  trigger: "active",
446
453
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
@@ -1,8 +1,8 @@
1
1
  import React from 'react';
2
2
  import { FormControlBaseProps, PickerBaseProps } from '../@types/common';
3
- import { PickerComponent } from '../Picker';
3
+ import { PickerComponent, PickerToggleProps } from '../Picker';
4
4
  import { DisabledDateFunction, RangeType, DateRange } from './types';
5
- export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<DateRange | null> {
5
+ export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<DateRange | null>, Pick<PickerToggleProps, 'caretAs' | 'readOnly' | 'plaintext'> {
6
6
  /** Configure shortcut options */
7
7
  ranges?: RangeType[];
8
8
  /** Format date */
@@ -82,6 +82,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
82
82
  showMeridian = props.showMeridian,
83
83
  style = props.style,
84
84
  toggleAs = props.toggleAs,
85
+ caretAs = props.caretAs,
85
86
  valueProp = props.value,
86
87
  onChange = props.onChange,
87
88
  onClean = props.onClean,
@@ -92,7 +93,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
92
93
  onOk = props.onOk,
93
94
  onOpen = props.onOpen,
94
95
  onSelect = props.onSelect,
95
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "appearance", "cleanable", "character", "defaultCalendarValue", "defaultValue", "disabled", "disabledDate", "format", "hoverRange", "isoWeek", "limitEndYear", "locale", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "renderValue", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "toggleAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect"]);
96
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "className", "appearance", "cleanable", "character", "defaultCalendarValue", "defaultValue", "disabled", "disabledDate", "format", "hoverRange", "isoWeek", "limitEndYear", "locale", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "renderValue", "showOneCalendar", "showWeekNumbers", "showMeridian", "style", "toggleAs", "caretAs", "value", "onChange", "onClean", "onClose", "onEnter", "onEntered", "onExited", "onOk", "onOpen", "onSelect"]);
96
97
 
97
98
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
98
99
  merge = _useClassNames.merge,
@@ -276,7 +277,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
276
277
 
277
278
  if (!hasDoneSelect.current) {
278
279
  // If `hoverRange` is set, you need to change the value of hoverDateRange according to the rules
279
- if (!(0, _isNil.default)(nextHoverDateRange)) {
280
+ if (!(0, _isNil.default)(nextHoverDateRange) && !(0, _isNil.default)(selectRangeValueRef.current)) {
280
281
  var nextSelectedDates = [selectRangeValueRef.current[0], nextHoverDateRange[1]];
281
282
 
282
283
  if (_utils.DateUtils.isBefore(nextHoverDateRange[0], selectRangeValueRef.current[0])) {
@@ -632,8 +633,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
632
633
  hasValue: hasValue,
633
634
  active: isPickerToggleActive,
634
635
  placement: placement,
635
- caretAs: _Calendar.default,
636
- disabled: disabled
636
+ disabled: disabled,
637
+ caretAs: caretAs || _Calendar.default
637
638
  }), getDisplayString(value))));
638
639
  });
639
640
 
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
- import { ButtonProps } from '../Button';
3
2
  import { IconProps } from '@rsuite/icons/lib/Icon';
3
+ import { RsRefForwardingComponent } from '../@types/common';
4
+ import Button, { ButtonProps } from '../Button';
4
5
  export interface IconButtonProps extends ButtonProps {
5
6
  /** Set the icon */
6
7
  icon?: React.ReactElement<IconProps>;
@@ -9,5 +10,7 @@ export interface IconButtonProps extends ButtonProps {
9
10
  /** The placement of icon */
10
11
  placement?: 'left' | 'right';
11
12
  }
12
- declare const IconButton: React.ForwardRefExoticComponent<IconButtonProps & React.RefAttributes<unknown>>;
13
+ declare const IconButton: RsRefForwardingComponent<typeof Button, IconButtonProps & {
14
+ ref?: React.Ref<HTMLElement>;
15
+ }>;
13
16
  export default IconButton;
@@ -13,10 +13,10 @@ var _react = _interopRequireDefault(require("react"));
13
13
 
14
14
  var _propTypes = _interopRequireDefault(require("prop-types"));
15
15
 
16
- var _Button = _interopRequireDefault(require("../Button"));
17
-
18
16
  var _utils = require("../utils");
19
17
 
18
+ var _Button = _interopRequireDefault(require("../Button"));
19
+
20
20
  var IconButton = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
21
21
  var icon = props.icon,
22
22
  _props$placement = props.placement,
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _IconButton = _interopRequireDefault(require("../IconButton"));
8
+
9
+ var Link = function Link(_ref) {
10
+ var to = _ref.to;
11
+ return /*#__PURE__*/_react.default.createElement("a", {
12
+ href: to
13
+ });
14
+ };
15
+
16
+ var ref = /*#__PURE__*/_react.default.createRef(); // Infer `as` component props
17
+
18
+
19
+ /*#__PURE__*/
20
+ _react.default.createElement(_IconButton.default, {
21
+ ref: ref,
22
+ as: Link,
23
+ to: "/home"
24
+ });
@@ -128,7 +128,9 @@ var InputAutosize = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
128
128
  return;
129
129
  }
130
130
 
131
- copyStyles(inputStyles, sizerRef.current);
131
+ if (sizerRef.current) {
132
+ copyStyles(inputStyles, sizerRef.current);
133
+ }
132
134
 
133
135
  if (placeholderRef.current) {
134
136
  copyStyles(inputStyles, placeholderRef.current);