rsuite 5.4.1 → 5.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/Button/styles/index.less +1 -5
  2. package/CHANGELOG.md +42 -0
  3. package/CheckTreePicker/styles/index.less +48 -47
  4. package/Drawer/styles/index.less +3 -0
  5. package/Dropdown/styles/index.less +3 -19
  6. package/Dropdown/styles/mixin.less +0 -2
  7. package/Modal/styles/index.less +23 -22
  8. package/Navbar/styles/index.less +20 -8
  9. package/Picker/styles/mixin.less +3 -2
  10. package/README.md +1 -1
  11. package/Sidenav/styles/index.less +58 -57
  12. package/TreePicker/styles/index.less +3 -3
  13. package/cjs/Affix/Affix.js +3 -1
  14. package/cjs/Calendar/useCalendarDate.d.ts +1 -1
  15. package/cjs/Calendar/useCalendarDate.js +1 -1
  16. package/cjs/Carousel/Carousel.js +7 -1
  17. package/cjs/Cascader/Cascader.js +13 -2
  18. package/cjs/CheckPicker/CheckPicker.d.ts +5 -2
  19. package/cjs/CheckPicker/test/CheckPicker.test.js +8 -0
  20. package/cjs/CheckTreePicker/CheckTreePicker.js +1 -1
  21. package/cjs/CheckTreePicker/utils.js +1 -1
  22. package/cjs/CustomProvider/CustomProvider.d.ts +14 -14
  23. package/cjs/CustomProvider/CustomProvider.js +4 -3
  24. package/cjs/DatePicker/DatePicker.d.ts +1 -1
  25. package/cjs/DatePicker/DatePicker.js +2 -4
  26. package/cjs/Disclosure/Disclosure.d.ts +8 -5
  27. package/cjs/Disclosure/Disclosure.js +49 -9
  28. package/cjs/Disclosure/DisclosureButton.d.ts +2 -2
  29. package/cjs/Disclosure/DisclosureContext.d.ts +6 -1
  30. package/cjs/Dropdown/Dropdown.d.ts +5 -0
  31. package/cjs/Dropdown/Dropdown.js +1 -1
  32. package/cjs/Dropdown/DropdownItem.js +9 -10
  33. package/cjs/Dropdown/DropdownMenu.js +69 -20
  34. package/cjs/Dropdown/test/Dropdown.test.d.ts +1 -0
  35. package/cjs/Dropdown/test/Dropdown.test.js +30 -0
  36. package/cjs/InputNumber/InputNumber.d.ts +1 -1
  37. package/cjs/InputNumber/InputNumber.js +36 -6
  38. package/cjs/InputNumber/test/InputNumber.test.d.ts +1 -0
  39. package/cjs/InputNumber/test/InputNumber.test.js +14 -0
  40. package/cjs/Modal/Modal.js +34 -22
  41. package/cjs/Modal/utils.js +16 -8
  42. package/cjs/MultiCascader/MultiCascader.js +7 -3
  43. package/cjs/Nav/NavItem.js +3 -1
  44. package/cjs/Navbar/index.d.ts +1 -0
  45. package/cjs/Navbar/index.js +4 -3
  46. package/cjs/Overlay/Modal.js +10 -27
  47. package/cjs/Picker/DropdownMenu.js +5 -0
  48. package/cjs/Picker/PickerToggle.js +2 -4
  49. package/cjs/RangeSlider/RangeSlider.d.ts +12 -2
  50. package/cjs/RangeSlider/RangeSlider.js +35 -12
  51. package/cjs/SelectPicker/SelectPicker.d.ts +5 -2
  52. package/cjs/SelectPicker/test/SelectPicker.test.js +8 -0
  53. package/cjs/Uploader/UploadFileItem.d.ts +1 -1
  54. package/cjs/Uploader/UploadFileItem.js +1 -1
  55. package/cjs/Uploader/Uploader.js +3 -0
  56. package/cjs/utils/index.d.ts +1 -0
  57. package/cjs/utils/index.js +7 -2
  58. package/cjs/utils/propTypeChecker.d.ts +2 -6
  59. package/cjs/utils/propTypeChecker.js +7 -59
  60. package/cjs/utils/treeUtils.js +4 -3
  61. package/cjs/utils/useClickOutside.js +6 -2
  62. package/cjs/utils/useMount.d.ts +2 -0
  63. package/cjs/utils/useMount.js +19 -0
  64. package/dist/rsuite-rtl.css +416 -264
  65. package/dist/rsuite-rtl.min.css +1 -1
  66. package/dist/rsuite-rtl.min.css.map +1 -1
  67. package/dist/rsuite.css +416 -264
  68. package/dist/rsuite.js +55 -33
  69. package/dist/rsuite.js.map +1 -1
  70. package/dist/rsuite.min.css +1 -1
  71. package/dist/rsuite.min.css.map +1 -1
  72. package/dist/rsuite.min.js +1 -1
  73. package/dist/rsuite.min.js.map +1 -1
  74. package/esm/Affix/Affix.js +4 -2
  75. package/esm/Calendar/useCalendarDate.d.ts +1 -1
  76. package/esm/Calendar/useCalendarDate.js +1 -1
  77. package/esm/Carousel/Carousel.js +9 -3
  78. package/esm/Cascader/Cascader.js +13 -2
  79. package/esm/CheckPicker/CheckPicker.d.ts +5 -2
  80. package/esm/CheckPicker/test/CheckPicker.test.js +7 -0
  81. package/esm/CheckTreePicker/CheckTreePicker.js +1 -1
  82. package/esm/CheckTreePicker/utils.js +1 -1
  83. package/esm/CustomProvider/CustomProvider.d.ts +14 -14
  84. package/esm/CustomProvider/CustomProvider.js +2 -2
  85. package/esm/DatePicker/DatePicker.d.ts +1 -1
  86. package/esm/DatePicker/DatePicker.js +2 -3
  87. package/esm/Disclosure/Disclosure.d.ts +8 -5
  88. package/esm/Disclosure/Disclosure.js +50 -11
  89. package/esm/Disclosure/DisclosureButton.d.ts +2 -2
  90. package/esm/Disclosure/DisclosureContext.d.ts +6 -1
  91. package/esm/Dropdown/Dropdown.d.ts +5 -0
  92. package/esm/Dropdown/Dropdown.js +1 -1
  93. package/esm/Dropdown/DropdownItem.js +9 -9
  94. package/esm/Dropdown/DropdownMenu.js +69 -20
  95. package/esm/Dropdown/test/Dropdown.test.d.ts +1 -0
  96. package/esm/Dropdown/test/Dropdown.test.js +22 -0
  97. package/esm/InputNumber/InputNumber.d.ts +1 -1
  98. package/esm/InputNumber/InputNumber.js +38 -7
  99. package/esm/InputNumber/test/InputNumber.test.d.ts +1 -0
  100. package/esm/InputNumber/test/InputNumber.test.js +7 -0
  101. package/esm/Modal/Modal.js +36 -24
  102. package/esm/Modal/utils.js +16 -8
  103. package/esm/MultiCascader/MultiCascader.js +7 -3
  104. package/esm/Nav/NavItem.js +3 -1
  105. package/esm/Navbar/index.d.ts +1 -0
  106. package/esm/Navbar/index.js +1 -0
  107. package/esm/Overlay/Modal.js +10 -27
  108. package/esm/Picker/DropdownMenu.js +5 -0
  109. package/esm/Picker/PickerToggle.js +2 -4
  110. package/esm/RangeSlider/RangeSlider.d.ts +12 -2
  111. package/esm/RangeSlider/RangeSlider.js +35 -12
  112. package/esm/SelectPicker/SelectPicker.d.ts +5 -2
  113. package/esm/SelectPicker/test/SelectPicker.test.js +7 -0
  114. package/esm/Uploader/UploadFileItem.d.ts +1 -1
  115. package/esm/Uploader/UploadFileItem.js +1 -1
  116. package/esm/Uploader/Uploader.js +4 -1
  117. package/esm/utils/index.d.ts +1 -0
  118. package/esm/utils/index.js +2 -1
  119. package/esm/utils/propTypeChecker.d.ts +2 -6
  120. package/esm/utils/propTypeChecker.js +7 -59
  121. package/esm/utils/treeUtils.js +6 -3
  122. package/esm/utils/useClickOutside.js +6 -2
  123. package/esm/utils/useMount.d.ts +2 -0
  124. package/esm/utils/useMount.js +13 -0
  125. package/package.json +2 -2
  126. package/styles/color-modes/dark.less +1 -0
  127. package/styles/color-modes/high-contrast.less +1 -0
  128. package/styles/color-modes/light.less +1 -0
  129. package/styles/mixins/utilities.less +17 -5
@@ -114,15 +114,15 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
114
114
  step = _props$step === void 0 ? 1 : _props$step,
115
115
  _props$buttonAppearan = props.buttonAppearance,
116
116
  buttonAppearance = _props$buttonAppearan === void 0 ? 'subtle' : _props$buttonAppearan,
117
- _props$min = props.min,
118
- min = _props$min === void 0 ? -Infinity : _props$min,
119
- _props$max = props.max,
120
- max = _props$max === void 0 ? Infinity : _props$max,
117
+ minProp = props.min,
118
+ maxProp = props.max,
121
119
  _props$scrollable = props.scrollable,
122
120
  scrollable = _props$scrollable === void 0 ? true : _props$scrollable,
123
121
  onChange = props.onChange,
124
122
  onWheel = props.onWheel,
125
123
  restProps = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "className", "classPrefix", "disabled", "readOnly", "plaintext", "value", "defaultValue", "size", "prefix", "postfix", "step", "buttonAppearance", "min", "max", "scrollable", "onChange", "onWheel"]);
124
+ var min = minProp !== null && minProp !== void 0 ? minProp : -Infinity;
125
+ var max = maxProp !== null && maxProp !== void 0 ? maxProp : Infinity;
126
126
 
127
127
  var _useControlled = (0, _utils.useControlled)(valueProp, defaultValue),
128
128
  value = _useControlled[0],
@@ -187,6 +187,35 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
187
187
  var bit = decimals(val, step);
188
188
  handleChangeValue(getSafeValue((val - step).toFixed(bit)), event);
189
189
  }, [getSafeValue, handleChangeValue, step, value]);
190
+ var handleKeyDown = (0, _react.useCallback)(function (event) {
191
+ switch (event.key) {
192
+ case _utils.KEY_VALUES.UP:
193
+ event.preventDefault();
194
+ handlePlus(event);
195
+ break;
196
+
197
+ case _utils.KEY_VALUES.DOWN:
198
+ event.preventDefault();
199
+ handleMinus(event);
200
+ break;
201
+
202
+ case _utils.KEY_VALUES.HOME:
203
+ if (typeof minProp !== 'undefined') {
204
+ event.preventDefault();
205
+ handleChangeValue(getSafeValue(minProp), event);
206
+ }
207
+
208
+ break;
209
+
210
+ case _utils.KEY_VALUES.END:
211
+ if (typeof maxProp !== 'undefined') {
212
+ event.preventDefault();
213
+ handleChangeValue(getSafeValue(maxProp), event);
214
+ }
215
+
216
+ break;
217
+ }
218
+ }, [handlePlus, handleMinus, minProp, maxProp, handleChangeValue, getSafeValue]);
190
219
  var handleWheel = (0, _react.useCallback)(function (event) {
191
220
  if (!disabled && !readOnly && event.target === document.activeElement) {
192
221
  event.preventDefault();
@@ -233,7 +262,7 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
233
262
  }, [handleWheel, scrollable]);
234
263
 
235
264
  var input = /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({}, htmlInputProps, {
236
- type: "text",
265
+ type: "number",
237
266
  autoComplete: "off",
238
267
  step: step,
239
268
  inputRef: inputRef,
@@ -243,7 +272,8 @@ var InputNumber = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
243
272
  disabled: disabled,
244
273
  readOnly: readOnly,
245
274
  plaintext: plaintext,
246
- ref: plaintext ? ref : undefined
275
+ ref: plaintext ? ref : undefined,
276
+ onKeyDown: handleKeyDown
247
277
  }));
248
278
 
249
279
  if (plaintext) {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _InputNumber = _interopRequireDefault(require("../InputNumber"));
8
+
9
+ // Inherits <input type="number" /> attributes
10
+
11
+ /*#__PURE__*/
12
+ _react.default.createElement(_InputNumber.default, {
13
+ placeholder: "Enter number"
14
+ });
@@ -90,6 +90,10 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
90
90
  merge = _useClassNames.merge,
91
91
  prefix = _useClassNames.prefix;
92
92
 
93
+ var _useState = (0, _react.useState)(false),
94
+ shake = _useState[0],
95
+ setShake = _useState[1];
96
+
93
97
  var classes = merge(className, prefix(size, {
94
98
  full: full
95
99
  }));
@@ -116,24 +120,6 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
116
120
  isDrawer: drawer
117
121
  };
118
122
  }, [dialogId, onClose, bodyStyles, drawer]);
119
-
120
- var _useState = (0, _react.useState)(false),
121
- shake = _useState[0],
122
- setShake = _useState[1];
123
-
124
- var handleBackdropClick = (0, _react.useCallback)(function () {
125
- // When the value of `backdrop` is `static`, a jitter animation will be added to the dialog when clicked.
126
- if (backdrop === 'static') {
127
- setShake(true);
128
-
129
- if (!transitionEndListener.current && dialogRef.current) {
130
- //fix: https://github.com/rsuite/rsuite/blob/a93d13c14fb20cc58204babe3331d3c3da3fe1fd/src/Modal/styles/index.less#L59
131
- transitionEndListener.current = (0, _on.default)(dialogRef.current, (0, _getAnimationEnd.default)(), function () {
132
- setShake(false);
133
- });
134
- }
135
- }
136
- }, [backdrop]);
137
123
  var handleExited = (0, _react.useCallback)(function (node) {
138
124
  var _transitionEndListene;
139
125
 
@@ -150,11 +136,37 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
150
136
  onEntering === null || onEntering === void 0 ? void 0 : onEntering(node);
151
137
  onChangeBodyStyles(true);
152
138
  }, [onChangeBodyStyles, onEntering]);
153
- (0, _react.useEffect)(function () {
139
+ var handleBackdropClick = (0, _react.useCallback)(function (e) {
140
+ if (e.target !== e.currentTarget) {
141
+ return;
142
+ } // When the value of `backdrop` is `static`, a jitter animation will be added to the dialog when clicked.
143
+
144
+
145
+ if (backdrop === 'static') {
146
+ setShake(true);
147
+
148
+ if (!transitionEndListener.current && dialogRef.current) {
149
+ //fix: https://github.com/rsuite/rsuite/blob/a93d13c14fb20cc58204babe3331d3c3da3fe1fd/src/Modal/styles/index.less#L59
150
+ transitionEndListener.current = (0, _on.default)(dialogRef.current, (0, _getAnimationEnd.default)(), function () {
151
+ setShake(false);
152
+ });
153
+ }
154
+
155
+ return;
156
+ }
157
+
158
+ onClose === null || onClose === void 0 ? void 0 : onClose(e);
159
+ }, [backdrop, onClose]);
160
+ var handleClick = (0, _react.useCallback)(function (e) {
161
+ if (dialogRef.current && e.target !== dialogRef.current) {
162
+ handleBackdropClick(e);
163
+ }
164
+ }, [handleBackdropClick]);
165
+ (0, _utils.useWillUnmount)(function () {
154
166
  var _transitionEndListene2;
155
167
 
156
168
  (_transitionEndListene2 = transitionEndListener.current) === null || _transitionEndListene2 === void 0 ? void 0 : _transitionEndListene2.off();
157
- }, []);
169
+ });
158
170
  return /*#__PURE__*/_react.default.createElement(_ModalContext.ModalContext.Provider, {
159
171
  value: modalContextValue
160
172
  }, /*#__PURE__*/_react.default.createElement(_Modal.default, (0, _extends2.default)({}, rest, {
@@ -162,7 +174,6 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
162
174
  backdrop: backdrop,
163
175
  open: open,
164
176
  onClose: onClose,
165
- onBackdropClick: handleBackdropClick,
166
177
  className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["wrapper"]))),
167
178
  onEntered: handleEntered,
168
179
  onEntering: handleEntering,
@@ -175,7 +186,8 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
175
186
  transition: animation ? animation : undefined,
176
187
  animationProps: animationProps,
177
188
  dialogTransitionTimeout: animationTimeout,
178
- backdropTransitionTimeout: 150
189
+ backdropTransitionTimeout: 150,
190
+ onClick: backdrop ? handleClick : undefined
179
191
  }), function (transitionProps, transitionRef) {
180
192
  var transitionClassName = transitionProps.className,
181
193
  transitionRest = (0, _objectWithoutPropertiesLoose2.default)(transitionProps, ["className"]);
@@ -56,21 +56,29 @@ var useBodyStyles = function useBodyStyles(ref, options) {
56
56
 
57
57
  (_windowResizeListener = windowResizeListener.current) === null || _windowResizeListener === void 0 ? void 0 : (_windowResizeListener2 = _windowResizeListener.off) === null || _windowResizeListener2 === void 0 ? void 0 : _windowResizeListener2.call(_windowResizeListener);
58
58
  (_contentElementResize = contentElementResizeObserver.current) === null || _contentElementResize === void 0 ? void 0 : _contentElementResize.disconnect();
59
+ windowResizeListener.current = null;
60
+ contentElementResizeObserver.current = null;
59
61
  }, []);
60
62
  var onChangeBodyStyles = (0, _react.useCallback)(function (entering) {
61
- if (overflow && !drawer) {
63
+ if (overflow && !drawer && ref.current) {
62
64
  updateBodyStyles(undefined, entering);
63
65
  contentElement.current = ref.current.querySelector("." + prefix('content'));
64
- windowResizeListener.current = (0, _on.default)(window, 'resize', updateBodyStyles);
65
- contentElementResizeObserver.current = new _resizeObserver.ResizeObserver(function () {
66
- return updateBodyStyles();
67
- });
68
- contentElementResizeObserver.current.observe(contentElement.current);
66
+
67
+ if (!windowResizeListener.current) {
68
+ windowResizeListener.current = (0, _on.default)(window, 'resize', updateBodyStyles);
69
+ }
70
+
71
+ if (contentElement.current && !contentElementResizeObserver.current) {
72
+ contentElementResizeObserver.current = new _resizeObserver.ResizeObserver(function () {
73
+ return updateBodyStyles();
74
+ });
75
+ contentElementResizeObserver.current.observe(contentElement.current);
76
+ }
69
77
  }
70
78
  }, [drawer, overflow, prefix, ref, updateBodyStyles]);
71
79
  (0, _react.useEffect)(function () {
72
- onDestroyEvents();
73
- }, [onDestroyEvents]);
80
+ return onDestroyEvents; // eslint-disable-next-line react-hooks/exhaustive-deps
81
+ }, []);
74
82
  return [overflow ? bodyStyles : {}, onChangeBodyStyles, onDestroyEvents];
75
83
  };
76
84
 
@@ -220,8 +220,11 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
220
220
  children.then(function (data) {
221
221
  node.loading = false;
222
222
  node[childrenKey] = data;
223
- addFlattenData(data, node);
224
- addColumn(data, cascadePaths.length);
223
+
224
+ if (targetRef.current) {
225
+ addFlattenData(data, node);
226
+ addColumn(data, cascadePaths.length);
227
+ }
225
228
  });
226
229
  } else {
227
230
  node.loading = false;
@@ -258,7 +261,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
258
261
  onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextValue, node, checked, event);
259
262
  }, [cascade, onChange, onCheck, setValue, splitValue, value, valueKey]);
260
263
  var handleClean = (0, _react.useCallback)(function (event) {
261
- if (disabled) {
264
+ if (disabled || !targetRef.current) {
262
265
  return;
263
266
  }
264
267
 
@@ -479,6 +482,7 @@ var MultiCascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
479
482
  var _usePickerClassName = (0, _Picker.usePickerClassName)((0, _extends3.default)({}, props, {
480
483
  classPrefix: classPrefix,
481
484
  hasValue: hasValue,
485
+ countable: countable,
482
486
  name: 'cascader',
483
487
  appearance: appearance,
484
488
  cleanable: cleanable
@@ -104,7 +104,9 @@ var NavItem = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
104
104
  }
105
105
 
106
106
  if (navbar) {
107
- return /*#__PURE__*/_react.default.createElement(_NavbarItem.default, props);
107
+ return /*#__PURE__*/_react.default.createElement(_NavbarItem.default, (0, _extends2.default)({
108
+ ref: ref
109
+ }, props));
108
110
  }
109
111
 
110
112
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
@@ -3,4 +3,5 @@ export type { NavbarProps } from './Navbar';
3
3
  export type { NavbarBodyProps } from './NavbarBody';
4
4
  export type { NavbarHeaderProps } from './NavbarHeader';
5
5
  export type { NavbarBrandProps } from './NavbarBrand';
6
+ export { NavbarContext } from './Navbar';
6
7
  export default Navbar;
@@ -1,11 +1,12 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
3
+ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
4
 
5
5
  exports.__esModule = true;
6
- exports.default = void 0;
6
+ exports.default = exports.NavbarContext = void 0;
7
7
 
8
- var _Navbar = _interopRequireDefault(require("./Navbar"));
8
+ var _Navbar = _interopRequireWildcard(require("./Navbar"));
9
9
 
10
+ exports.NavbarContext = _Navbar.NavbarContext;
10
11
  var _default = _Navbar.default;
11
12
  exports.default = _default;
@@ -94,7 +94,6 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
94
94
  open = props.open,
95
95
  _props$autoFocus = props.autoFocus,
96
96
  autoFocus = _props$autoFocus === void 0 ? true : _props$autoFocus,
97
- onBackdropClick = props.onBackdropClick,
98
97
  onEsc = props.onEsc,
99
98
  onExit = props.onExit,
100
99
  onExiting = props.onExiting,
@@ -104,7 +103,7 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
104
103
  onEntered = props.onEntered,
105
104
  onClose = props.onClose,
106
105
  onOpen = props.onOpen,
107
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "children", "transition", "dialogTransitionTimeout", "style", "className", "container", "animationProps", "containerClassName", "keyboard", "enforceFocus", "backdrop", "backdropTransitionTimeout", "backdropStyle", "backdropClassName", "open", "autoFocus", "onBackdropClick", "onEsc", "onExit", "onExiting", "onExited", "onEnter", "onEntering", "onEntered", "onClose", "onOpen"]);
106
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "children", "transition", "dialogTransitionTimeout", "style", "className", "container", "animationProps", "containerClassName", "keyboard", "enforceFocus", "backdrop", "backdropTransitionTimeout", "backdropStyle", "backdropClassName", "open", "autoFocus", "onEsc", "onExit", "onExiting", "onExited", "onEnter", "onEntering", "onEntered", "onClose", "onOpen"]);
108
107
 
109
108
  var _useState = (0, _react.useState)(!open),
110
109
  exited = _useState[0],
@@ -161,17 +160,6 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
161
160
 
162
161
  handleFocusDialog();
163
162
  });
164
- var handleBackdropClick = (0, _utils2.useEventCallback)(function (event) {
165
- if (event.target !== event.currentTarget) {
166
- return;
167
- }
168
-
169
- onBackdropClick === null || onBackdropClick === void 0 ? void 0 : onBackdropClick(event);
170
-
171
- if (backdrop === true) {
172
- onClose === null || onClose === void 0 ? void 0 : onClose(event);
173
- }
174
- });
175
163
  var documentKeyDownListener = (0, _react.useRef)();
176
164
  var documentFocusListener = (0, _react.useRef)();
177
165
  var handleOpen = (0, _utils2.useEventCallback)(function () {
@@ -237,11 +225,6 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
237
225
  }
238
226
 
239
227
  var renderBackdrop = function renderBackdrop() {
240
- var backdropPorps = {
241
- style: backdropStyle,
242
- onClick: handleBackdropClick
243
- };
244
-
245
228
  if (Transition) {
246
229
  return /*#__PURE__*/_react.default.createElement(_Fade.default, {
247
230
  transitionAppear: true,
@@ -252,18 +235,19 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
252
235
  rest = (0, _objectWithoutPropertiesLoose2.default)(fadeProps, ["className"]);
253
236
  return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
254
237
  "aria-hidden": true
255
- }, rest, backdropPorps, {
238
+ }, rest, {
239
+ style: backdropStyle,
256
240
  ref: (0, _utils2.mergeRefs)(modal.setBackdropRef, ref),
257
241
  className: (0, _classnames.default)(backdropClassName, className)
258
242
  }));
259
243
  });
260
244
  }
261
245
 
262
- return /*#__PURE__*/_react.default.createElement("div", (0, _extends2.default)({
263
- "aria-hidden": true
264
- }, backdropPorps, {
246
+ return /*#__PURE__*/_react.default.createElement("div", {
247
+ "aria-hidden": true,
248
+ style: backdropStyle,
265
249
  className: backdropClassName
266
- }));
250
+ });
267
251
  };
268
252
 
269
253
  var dialogElement = Transition ? /*#__PURE__*/_react.default.createElement(Transition, (0, _extends2.default)({}, animationProps, {
@@ -280,12 +264,12 @@ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
280
264
  }), children) : children;
281
265
  return /*#__PURE__*/_react.default.createElement(_OverlayContext.default.Provider, {
282
266
  value: contextValue
283
- }, /*#__PURE__*/_react.default.createElement(Portal, null, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
267
+ }, /*#__PURE__*/_react.default.createElement(Portal, null, backdrop && renderBackdrop(), /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
284
268
  ref: (0, _utils2.mergeRefs)(modal.setDialogRef, ref),
285
269
  style: style,
286
270
  className: className,
287
271
  tabIndex: -1
288
- }), backdrop && renderBackdrop(), dialogElement)));
272
+ }), dialogElement)));
289
273
  });
290
274
 
291
275
  var modalPropTypes = {
@@ -312,8 +296,7 @@ Modal.propTypes = (0, _extends2.default)({}, _utils.animationPropTypes, modalPro
312
296
  dialogTransitionTimeout: _propTypes.default.number,
313
297
  backdropTransitionTimeout: _propTypes.default.number,
314
298
  transition: _propTypes.default.any,
315
- onEsc: _propTypes.default.func,
316
- onBackdropClick: _propTypes.default.func
299
+ onEsc: _propTypes.default.func
317
300
  });
318
301
  var _default = Modal;
319
302
  exports.default = _default;
@@ -122,6 +122,11 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
122
122
 
123
123
  (0, _react.useEffect)(function () {
124
124
  var container = menuBodyContainerRef.current;
125
+
126
+ if (!container) {
127
+ return;
128
+ }
129
+
125
130
  var activeItem = container.querySelector("." + prefix('item-focus'));
126
131
 
127
132
  if (!activeItem) {
@@ -111,11 +111,9 @@ var PickerToggle = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
111
111
  }
112
112
  }, [input, onFocus]);
113
113
  var handleBlur = (0, _react.useCallback)(function (event) {
114
- if (document.activeElement !== inputRef.current) {
115
- var _inputRef$current2;
116
-
114
+ if (inputRef.current && document.activeElement !== inputRef.current) {
117
115
  setActive(false);
118
- (_inputRef$current2 = inputRef.current) === null || _inputRef$current2 === void 0 ? void 0 : _inputRef$current2.blur();
116
+ inputRef.current.blur();
119
117
  }
120
118
 
121
119
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
@@ -1,6 +1,16 @@
1
1
  import React from 'react';
2
2
  import { SliderProps } from '../Slider';
3
3
  export declare type Range = [number, number];
4
- export declare type RangeSliderProps = SliderProps<Range>;
5
- declare const RangeSlider: React.ForwardRefExoticComponent<RangeSliderProps & React.RefAttributes<unknown>>;
4
+ export declare type RangeSliderProps = SliderProps<Range> & {
5
+ /**
6
+ * Add constraint to validate before onChange is dispatched
7
+ */
8
+ constraint?: (range: Range) => boolean;
9
+ };
10
+ declare const RangeSlider: React.ForwardRefExoticComponent<SliderProps<Range> & {
11
+ /**
12
+ * Add constraint to validate before onChange is dispatched
13
+ */
14
+ constraint?: ((range: Range) => boolean) | undefined;
15
+ } & React.RefAttributes<unknown>>;
6
16
  export default RangeSlider;
@@ -45,6 +45,7 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
45
45
  Component = _props$as === void 0 ? 'div' : _props$as,
46
46
  barClassName = props.barClassName,
47
47
  className = props.className,
48
+ constraint = props.constraint,
48
49
  _props$defaultValue = props.defaultValue,
49
50
  defaultValue = _props$defaultValue === void 0 ? defaultDefaultValue : _props$defaultValue,
50
51
  graduated = props.graduated,
@@ -71,7 +72,7 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
71
72
  renderMark = props.renderMark,
72
73
  onChange = props.onChange,
73
74
  onChangeCommitted = props.onChangeCommitted,
74
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "barClassName", "className", "defaultValue", "graduated", "progress", "vertical", "disabled", "classPrefix", "min", "max", "step", "value", "handleClassName", "handleStyle", "handleTitle", "tooltip", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
75
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["aria-label", "aria-labelledby", "aria-valuetext", "as", "barClassName", "className", "constraint", "defaultValue", "graduated", "progress", "vertical", "disabled", "classPrefix", "min", "max", "step", "value", "handleClassName", "handleStyle", "handleTitle", "tooltip", "getAriaValueText", "renderTooltip", "renderMark", "onChange", "onChangeCommitted"]);
75
76
  var barRef = (0, _react.useRef)(null); // Define the parameter position of the handle
76
77
 
77
78
  var handleIndexs = (0, _react.useRef)([0, 1]);
@@ -180,14 +181,27 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
180
181
 
181
182
  return nextValue;
182
183
  }, [getRangeValue, getValidValue]);
184
+ /**
185
+ * Whether a range is valid against given constraint (if any)
186
+ * Should check before every `setValue` calls
187
+ */
188
+
189
+ var isRangeMatchingConstraint = (0, _react.useCallback)(function (range) {
190
+ // If no constraint is defined, any range is valid
191
+ if (!constraint) return true;
192
+ return constraint(range);
193
+ }, [constraint]);
183
194
  /**
184
195
  * Callback function that is fired when the mousemove is triggered
185
196
  */
186
197
 
187
198
  var handleDragMove = (0, _utils.useEventCallback)(function (event, dataset) {
188
199
  var nextValue = getNextValue(event, dataset);
189
- setValue(nextValue);
190
- onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
200
+
201
+ if (isRangeMatchingConstraint(nextValue)) {
202
+ setValue(nextValue);
203
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
204
+ }
191
205
  });
192
206
  /**
193
207
  * Callback function that is fired when the mouseup is triggered
@@ -195,9 +209,12 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
195
209
 
196
210
  var handleChangeCommitted = (0, _react.useCallback)(function (event, dataset) {
197
211
  var nextValue = getNextValue(event, dataset);
198
- setValue(nextValue);
199
- onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);
200
- }, [getNextValue, onChangeCommitted, setValue]);
212
+
213
+ if (isRangeMatchingConstraint(nextValue)) {
214
+ setValue(nextValue);
215
+ onChangeCommitted === null || onChangeCommitted === void 0 ? void 0 : onChangeCommitted(nextValue, event);
216
+ }
217
+ }, [getNextValue, onChangeCommitted, isRangeMatchingConstraint, setValue]);
201
218
  var handleKeyDown = (0, _react.useCallback)(function (event) {
202
219
  var _event$target;
203
220
 
@@ -240,9 +257,12 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
240
257
 
241
258
 
242
259
  event.preventDefault();
243
- setValue(nextValue);
244
- onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
245
- }, [max, min, onChange, rtl, setValue, step, value]);
260
+
261
+ if (isRangeMatchingConstraint(nextValue)) {
262
+ setValue(nextValue);
263
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
264
+ }
265
+ }, [max, min, onChange, rtl, isRangeMatchingConstraint, setValue, step, value]);
246
266
  var handleClick = (0, _react.useCallback)(function (event) {
247
267
  if (disabled) {
248
268
  return;
@@ -259,9 +279,12 @@ var RangeSlider = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
259
279
  }
260
280
 
261
281
  var nextValue = getValidValue([start, end].sort());
262
- setValue(nextValue);
263
- onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
264
- }, [disabled, getValidValue, getValueByPosition, onChange, setValue, value]);
282
+
283
+ if (isRangeMatchingConstraint(nextValue)) {
284
+ setValue(nextValue);
285
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
286
+ }
287
+ }, [disabled, getValidValue, getValueByPosition, isRangeMatchingConstraint, onChange, setValue, value]);
265
288
  var handleProps = (0, _react.useMemo)(function () {
266
289
  return [{
267
290
  value: value[0],
@@ -1,5 +1,6 @@
1
- import React from 'react';
1
+ import React, { Ref } from 'react';
2
2
  import { PickerLocale } from '../locales';
3
+ import { PickerInstance } from '../Picker';
3
4
  import { FormControlPickerProps, ItemDataType } from '../@types/common';
4
5
  import { ListProps } from 'react-virtualized/dist/commonjs/List';
5
6
  export interface SelectProps<T> {
@@ -42,7 +43,9 @@ export interface MultipleSelectProps<T> extends Omit<SelectProps<T>, 'renderValu
42
43
  export interface SelectPickerProps<T> extends FormControlPickerProps<T, PickerLocale, ItemDataType<T>>, SelectProps<T> {
43
44
  }
44
45
  export interface SelectPickerComponent {
45
- <T>(props: SelectPickerProps<T>): JSX.Element | null;
46
+ <T>(props: SelectPickerProps<T> & {
47
+ ref?: Ref<PickerInstance>;
48
+ }): JSX.Element | null;
46
49
  displayName?: string;
47
50
  propTypes?: React.WeakValidationMap<SelectPickerProps<any>>;
48
51
  }
@@ -59,4 +59,12 @@ _react.default.createElement(_SelectPicker.default, {
59
59
  onChange: function onChange(newValue) {
60
60
  (0, _tsExpect.expectType)(newValue);
61
61
  }
62
+ });
63
+
64
+ var pickerRef = /*#__PURE__*/_react.default.createRef();
65
+
66
+ /*#__PURE__*/
67
+ _react.default.createElement(_SelectPicker.default, {
68
+ ref: pickerRef,
69
+ data: []
62
70
  });
@@ -4,7 +4,7 @@ import { UploaderLocale } from '../locales';
4
4
  import { WithAsProps } from '../@types/common';
5
5
  export interface UploadFileItemProps extends WithAsProps {
6
6
  file: FileType;
7
- listType: 'text' | 'picture-text' | 'picture';
7
+ listType?: 'text' | 'picture-text' | 'picture';
8
8
  disabled?: boolean;
9
9
  className?: string;
10
10
  maxPreviewFileSize?: number;
@@ -297,7 +297,7 @@ UploadFileItem.displayName = 'UploadFileItem';
297
297
  UploadFileItem.propTypes = {
298
298
  locale: _propTypes.default.any,
299
299
  file: _propTypes.default.object.isRequired,
300
- listType: _propTypes.default.oneOf(['text', 'picture-text', 'picture']).isRequired,
300
+ listType: _propTypes.default.oneOf(['text', 'picture-text', 'picture']),
301
301
  disabled: _propTypes.default.bool,
302
302
  className: _propTypes.default.string,
303
303
  maxPreviewFileSize: _propTypes.default.number,
@@ -100,6 +100,9 @@ var useFileList = function useFileList(defaultFileList) {
100
100
  (_fileListUpdateCallba = fileListUpdateCallback.current) === null || _fileListUpdateCallba === void 0 ? void 0 : _fileListUpdateCallba.call(fileListUpdateCallback, fileList);
101
101
  fileListUpdateCallback.current = null;
102
102
  }, [fileList]);
103
+ (0, _utils.useWillUnmount)(function () {
104
+ fileListUpdateCallback.current = null;
105
+ });
103
106
  var dispatchCallback = (0, _react.useCallback)(function (action, callback) {
104
107
  dispatch(action);
105
108
  fileListUpdateCallback.current = callback;
@@ -40,3 +40,4 @@ export { default as useUpdatedRef } from './useUpdatedRef';
40
40
  export { default as useWillUnmount } from './useWillUnmount';
41
41
  export { default as useUpdateEffect } from './useUpdateEffect';
42
42
  export { default as useIsMounted } from './useIsMounted';
43
+ export { default as useMount } from './useMount';
@@ -41,13 +41,14 @@ var _exportNames = {
41
41
  useWillUnmount: true,
42
42
  useUpdateEffect: true,
43
43
  useIsMounted: true,
44
+ useMount: true,
44
45
  defaultClassPrefix: true,
45
46
  getClassNamePrefix: true,
46
47
  globalKey: true,
47
48
  DateUtils: true,
48
49
  TypeChecker: true
49
50
  };
50
- exports.TypeChecker = exports.DateUtils = exports.globalKey = exports.getClassNamePrefix = exports.defaultClassPrefix = 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.appendTooltip = exports.scrollTopAnimation = exports.reactToString = exports.composeFunctions = exports.shallowEqualArray = exports.shallowEqual = exports.mergeRefs = exports.getDOMNode = exports.placementPolyfill = exports.clone = exports.getDataGroupBy = exports.previewFile = exports.ajaxUpload = exports.tplTransform = exports.ReactChildren = exports.isOneOf = exports.createChainedFunction = exports.prefix = exports.guid = void 0;
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.appendTooltip = exports.scrollTopAnimation = exports.reactToString = exports.composeFunctions = exports.shallowEqualArray = exports.shallowEqual = exports.mergeRefs = exports.getDOMNode = exports.placementPolyfill = exports.clone = exports.getDataGroupBy = exports.previewFile = exports.ajaxUpload = exports.tplTransform = exports.ReactChildren = exports.isOneOf = exports.createChainedFunction = exports.prefix = exports.guid = void 0;
51
52
 
52
53
  var _BrowserDetection = require("./BrowserDetection");
53
54
 
@@ -234,4 +235,8 @@ exports.useUpdateEffect = _useUpdateEffect.default;
234
235
 
235
236
  var _useIsMounted = _interopRequireDefault(require("./useIsMounted"));
236
237
 
237
- exports.useIsMounted = _useIsMounted.default;
238
+ exports.useIsMounted = _useIsMounted.default;
239
+
240
+ var _useMount = _interopRequireDefault(require("./useMount"));
241
+
242
+ exports.useMount = _useMount.default;
@@ -1,7 +1,3 @@
1
- import PropTypes, { Requireable, Validator } from 'prop-types';
2
- declare type ExtractValue<T extends ReadonlyArray<Validator<any>>> = {
3
- [K in keyof T]: T[K] extends Validator<infer V> ? V : never;
4
- };
5
- export declare function tupleType<T extends readonly Validator<any>[]>(...types: T): Requireable<ExtractValue<T>>;
1
+ import PropTypes from 'prop-types';
2
+ export declare function tupleType<T>(...typeCheckers: any[]): PropTypes.Requireable<T>;
6
3
  export declare const refType: PropTypes.Requireable<any>;
7
- export {};