rsuite 5.48.1 → 5.50.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 (203) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/Cascader/styles/index.less +5 -4
  3. package/DatePicker/styles/index.less +18 -11
  4. package/DateRangeInput/package.json +7 -0
  5. package/DateRangePicker/styles/index.less +20 -0
  6. package/Dropdown/styles/index.less +5 -4
  7. package/Dropdown/styles/mixin.less +0 -11
  8. package/InputGroup/styles/index.less +1 -0
  9. package/Picker/styles/index.less +51 -24
  10. package/Picker/styles/mixin.less +17 -13
  11. package/README.md +34 -24
  12. package/Sidenav/styles/index.less +2 -0
  13. package/TagInput/styles/index.less +1 -1
  14. package/cjs/AutoComplete/AutoComplete.js +25 -26
  15. package/cjs/Calendar/Calendar.d.ts +5 -1
  16. package/cjs/Calendar/CalendarContainer.d.ts +7 -1
  17. package/cjs/Calendar/CalendarContainer.js +11 -4
  18. package/cjs/Calendar/CalendarHeader.js +2 -0
  19. package/cjs/Calendar/MonthDropdown.js +7 -2
  20. package/cjs/Calendar/MonthDropdownItem.js +2 -2
  21. package/cjs/Calendar/Table.js +6 -1
  22. package/cjs/Calendar/TimeDropdown.js +17 -10
  23. package/cjs/Calendar/types.d.ts +1 -0
  24. package/cjs/Cascader/Cascader.js +46 -48
  25. package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
  26. package/cjs/CheckPicker/CheckPicker.js +33 -36
  27. package/cjs/CheckTreePicker/CheckTreePicker.js +61 -64
  28. package/cjs/CustomProvider/CustomProvider.d.ts +13 -0
  29. package/cjs/CustomProvider/CustomProvider.js +2 -2
  30. package/cjs/DateInput/DateField.d.ts +9 -31
  31. package/cjs/DateInput/DateField.js +61 -12
  32. package/cjs/DateInput/DateInput.d.ts +7 -2
  33. package/cjs/DateInput/DateInput.js +74 -92
  34. package/cjs/DateInput/index.d.ts +4 -0
  35. package/cjs/DateInput/index.js +19 -1
  36. package/cjs/DateInput/useDateInputState.d.ts +7 -31
  37. package/cjs/DateInput/useDateInputState.js +39 -15
  38. package/cjs/DateInput/useIsFocused.d.ts +7 -0
  39. package/cjs/DateInput/useIsFocused.js +28 -0
  40. package/cjs/DateInput/useKeyboardInputEvent.d.ts +10 -0
  41. package/cjs/DateInput/useKeyboardInputEvent.js +44 -0
  42. package/cjs/DateInput/utils.d.ts +23 -1
  43. package/cjs/DateInput/utils.js +155 -51
  44. package/cjs/DatePicker/DatePicker.d.ts +25 -8
  45. package/cjs/DatePicker/DatePicker.js +208 -241
  46. package/cjs/DatePicker/Toolbar.js +5 -22
  47. package/cjs/DatePicker/utils.d.ts +5 -1
  48. package/cjs/DatePicker/utils.js +17 -1
  49. package/cjs/DateRangeInput/DateRangeInput.d.ts +29 -0
  50. package/cjs/DateRangeInput/DateRangeInput.js +244 -0
  51. package/cjs/DateRangeInput/index.d.ts +3 -0
  52. package/cjs/DateRangeInput/index.js +9 -0
  53. package/cjs/DateRangeInput/utils.d.ts +61 -0
  54. package/cjs/DateRangeInput/utils.js +146 -0
  55. package/cjs/DateRangePicker/Calendar.js +24 -23
  56. package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
  57. package/cjs/DateRangePicker/DateRangePicker.js +251 -203
  58. package/cjs/DateRangePicker/types.d.ts +11 -3
  59. package/cjs/DateRangePicker/utils.d.ts +2 -1
  60. package/cjs/DateRangePicker/utils.js +7 -5
  61. package/cjs/FormControl/FormControl.d.ts +11 -1
  62. package/cjs/FormControl/FormControl.js +6 -5
  63. package/cjs/Input/Input.d.ts +11 -0
  64. package/cjs/Input/Input.js +11 -8
  65. package/cjs/InputPicker/InputPicker.js +62 -63
  66. package/cjs/MultiCascader/MultiCascader.js +40 -42
  67. package/cjs/Overlay/OverlayTrigger.d.ts +3 -0
  68. package/cjs/Overlay/OverlayTrigger.js +5 -0
  69. package/cjs/Picker/PickerIndicator.d.ts +10 -0
  70. package/cjs/Picker/PickerIndicator.js +49 -0
  71. package/cjs/Picker/PickerLabel.d.ts +9 -0
  72. package/cjs/Picker/PickerLabel.js +23 -0
  73. package/cjs/Picker/PickerToggle.d.ts +17 -22
  74. package/cjs/Picker/PickerToggle.js +52 -177
  75. package/cjs/Picker/index.d.ts +3 -0
  76. package/cjs/Picker/index.js +10 -1
  77. package/cjs/Picker/usePickerRef.d.ts +19 -0
  78. package/cjs/Picker/usePickerRef.js +88 -0
  79. package/cjs/Picker/utils.d.ts +5 -9
  80. package/cjs/Picker/utils.js +22 -89
  81. package/cjs/SelectPicker/SelectPicker.d.ts +2 -2
  82. package/cjs/SelectPicker/SelectPicker.js +39 -42
  83. package/cjs/TreePicker/TreePicker.js +72 -75
  84. package/cjs/index.d.ts +2 -0
  85. package/cjs/index.js +3 -1
  86. package/cjs/locales/index.d.ts +2 -2
  87. package/cjs/utils/constants.d.ts +2 -1
  88. package/cjs/utils/constants.js +1 -0
  89. package/cjs/utils/dateUtils.d.ts +0 -1
  90. package/cjs/utils/dateUtils.js +0 -6
  91. package/cjs/utils/getStringLength.d.ts +2 -0
  92. package/cjs/utils/getStringLength.js +18 -0
  93. package/cjs/utils/index.d.ts +3 -0
  94. package/cjs/utils/index.js +11 -2
  95. package/cjs/utils/useCustom.js +1 -1
  96. package/cjs/utils/useIsomorphicLayoutEffect.d.ts +3 -0
  97. package/cjs/utils/useIsomorphicLayoutEffect.js +9 -0
  98. package/dist/rsuite-no-reset-rtl.css +140 -207
  99. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  100. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  101. package/dist/rsuite-no-reset.css +140 -207
  102. package/dist/rsuite-no-reset.min.css +1 -1
  103. package/dist/rsuite-no-reset.min.css.map +1 -1
  104. package/dist/rsuite-rtl.css +140 -75
  105. package/dist/rsuite-rtl.min.css +1 -1
  106. package/dist/rsuite-rtl.min.css.map +1 -1
  107. package/dist/rsuite.css +140 -75
  108. package/dist/rsuite.js +4833 -258
  109. package/dist/rsuite.js.map +1 -1
  110. package/dist/rsuite.min.css +1 -1
  111. package/dist/rsuite.min.css.map +1 -1
  112. package/dist/rsuite.min.js +1 -1
  113. package/dist/rsuite.min.js.map +1 -1
  114. package/esm/AutoComplete/AutoComplete.js +28 -29
  115. package/esm/Calendar/Calendar.d.ts +5 -1
  116. package/esm/Calendar/CalendarContainer.d.ts +7 -1
  117. package/esm/Calendar/CalendarContainer.js +12 -5
  118. package/esm/Calendar/CalendarHeader.js +2 -0
  119. package/esm/Calendar/MonthDropdown.js +7 -2
  120. package/esm/Calendar/MonthDropdownItem.js +2 -2
  121. package/esm/Calendar/Table.js +6 -1
  122. package/esm/Calendar/TimeDropdown.js +17 -10
  123. package/esm/Calendar/types.d.ts +1 -0
  124. package/esm/Cascader/Cascader.js +49 -51
  125. package/esm/CheckPicker/CheckPicker.d.ts +2 -2
  126. package/esm/CheckPicker/CheckPicker.js +36 -39
  127. package/esm/CheckTreePicker/CheckTreePicker.js +64 -67
  128. package/esm/CustomProvider/CustomProvider.d.ts +13 -0
  129. package/esm/CustomProvider/CustomProvider.js +3 -3
  130. package/esm/DateInput/DateField.d.ts +9 -31
  131. package/esm/DateInput/DateField.js +61 -12
  132. package/esm/DateInput/DateInput.d.ts +7 -2
  133. package/esm/DateInput/DateInput.js +77 -95
  134. package/esm/DateInput/index.d.ts +4 -0
  135. package/esm/DateInput/index.js +4 -0
  136. package/esm/DateInput/useDateInputState.d.ts +7 -31
  137. package/esm/DateInput/useDateInputState.js +41 -18
  138. package/esm/DateInput/useIsFocused.d.ts +7 -0
  139. package/esm/DateInput/useIsFocused.js +22 -0
  140. package/esm/DateInput/useKeyboardInputEvent.d.ts +10 -0
  141. package/esm/DateInput/useKeyboardInputEvent.js +38 -0
  142. package/esm/DateInput/utils.d.ts +23 -1
  143. package/esm/DateInput/utils.js +150 -51
  144. package/esm/DatePicker/DatePicker.d.ts +25 -8
  145. package/esm/DatePicker/DatePicker.js +211 -244
  146. package/esm/DatePicker/Toolbar.js +5 -22
  147. package/esm/DatePicker/utils.d.ts +5 -1
  148. package/esm/DatePicker/utils.js +16 -1
  149. package/esm/DateRangeInput/DateRangeInput.d.ts +29 -0
  150. package/esm/DateRangeInput/DateRangeInput.js +237 -0
  151. package/esm/DateRangeInput/index.d.ts +3 -0
  152. package/esm/DateRangeInput/index.js +3 -0
  153. package/esm/DateRangeInput/utils.d.ts +61 -0
  154. package/esm/DateRangeInput/utils.js +137 -0
  155. package/esm/DateRangePicker/Calendar.js +25 -23
  156. package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
  157. package/esm/DateRangePicker/DateRangePicker.js +253 -205
  158. package/esm/DateRangePicker/types.d.ts +11 -3
  159. package/esm/DateRangePicker/utils.d.ts +2 -1
  160. package/esm/DateRangePicker/utils.js +7 -5
  161. package/esm/FormControl/FormControl.d.ts +11 -1
  162. package/esm/FormControl/FormControl.js +4 -3
  163. package/esm/Input/Input.d.ts +11 -0
  164. package/esm/Input/Input.js +12 -9
  165. package/esm/InputPicker/InputPicker.js +64 -65
  166. package/esm/MultiCascader/MultiCascader.js +43 -45
  167. package/esm/Overlay/OverlayTrigger.d.ts +3 -0
  168. package/esm/Overlay/OverlayTrigger.js +5 -0
  169. package/esm/Picker/PickerIndicator.d.ts +10 -0
  170. package/esm/Picker/PickerIndicator.js +43 -0
  171. package/esm/Picker/PickerLabel.d.ts +9 -0
  172. package/esm/Picker/PickerLabel.js +17 -0
  173. package/esm/Picker/PickerToggle.d.ts +17 -22
  174. package/esm/Picker/PickerToggle.js +54 -179
  175. package/esm/Picker/index.d.ts +3 -0
  176. package/esm/Picker/index.js +3 -0
  177. package/esm/Picker/usePickerRef.d.ts +19 -0
  178. package/esm/Picker/usePickerRef.js +82 -0
  179. package/esm/Picker/utils.d.ts +5 -9
  180. package/esm/Picker/utils.js +24 -90
  181. package/esm/SelectPicker/SelectPicker.d.ts +2 -2
  182. package/esm/SelectPicker/SelectPicker.js +42 -45
  183. package/esm/TreePicker/TreePicker.js +75 -78
  184. package/esm/index.d.ts +2 -0
  185. package/esm/index.js +1 -0
  186. package/esm/locales/index.d.ts +2 -2
  187. package/esm/utils/constants.d.ts +2 -1
  188. package/esm/utils/constants.js +1 -0
  189. package/esm/utils/dateUtils.d.ts +0 -1
  190. package/esm/utils/dateUtils.js +0 -5
  191. package/esm/utils/getStringLength.d.ts +2 -0
  192. package/esm/utils/getStringLength.js +13 -0
  193. package/esm/utils/index.d.ts +3 -0
  194. package/esm/utils/index.js +4 -1
  195. package/esm/utils/useCustom.js +2 -2
  196. package/esm/utils/useIsomorphicLayoutEffect.d.ts +3 -0
  197. package/esm/utils/useIsomorphicLayoutEffect.js +4 -0
  198. package/package.json +1 -1
  199. package/styles/color-modes/dark.less +1 -0
  200. package/styles/color-modes/high-contrast.less +1 -0
  201. package/styles/color-modes/light.less +1 -0
  202. package/styles/mixins/combobox.less +10 -0
  203. package/styles/normalize.less +230 -231
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import _extends from "@babel/runtime/helpers/esm/extends";
3
3
  import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
- import React, { useState, useRef, useCallback } from 'react';
4
+ import React, { useState, useCallback } from 'react';
5
5
  import PropTypes from 'prop-types';
6
6
  import pick from 'lodash/pick';
7
7
  import omit from 'lodash/omit';
@@ -12,8 +12,8 @@ import Checkbox from '../Checkbox';
12
12
  import { useCascadeValue, useColumnData, useFlattenData, isSomeChildChecked } from './utils';
13
13
  import { getNodeParents, findNodeOfTree } from '../utils/treeUtils';
14
14
  import { getColumnsAndPaths } from '../Cascader/utils';
15
- import { createChainedFunction, mergeRefs, getSafeRegExpString, useClassNames, useCustom, useUpdateEffect, useControlled } from '../utils';
16
- import { PickerToggle, PickerOverlay, SearchBar, SelectedElement, PickerToggleTrigger, usePickerClassName, usePublicMethods, useToggleKeyDownEvent, useFocusItemValue, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
15
+ import { createChainedFunction, mergeRefs, getSafeRegExpString, useClassNames, useCustom, useUpdateEffect, useControlled, useEventCallback } from '../utils';
16
+ import { PickerToggle, PickerOverlay, SearchBar, SelectedElement, PickerToggleTrigger, usePickerClassName, usePickerRef, useToggleKeyDownEvent, useFocusItemValue, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
17
17
  var emptyArray = [];
18
18
 
19
19
  /**
@@ -114,15 +114,12 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
114
114
  var _useState2 = useState(),
115
115
  selectedPaths = _useState2[0],
116
116
  setSelectedPaths = _useState2[1];
117
- var triggerRef = useRef(null);
118
- var overlayRef = useRef(null);
119
- var targetRef = useRef(null);
120
- var searchInputRef = useRef(null);
121
- usePublicMethods(ref, {
122
- triggerRef: triggerRef,
123
- overlayRef: overlayRef,
124
- targetRef: targetRef
125
- });
117
+ var _usePickerRef = usePickerRef(ref),
118
+ trigger = _usePickerRef.trigger,
119
+ root = _usePickerRef.root,
120
+ target = _usePickerRef.target,
121
+ overlay = _usePickerRef.overlay,
122
+ searchInput = _usePickerRef.searchInput;
126
123
  var _useCustom = useCustom('Picker', overrideLocale),
127
124
  locale = _useCustom.locale,
128
125
  rtl = _useCustom.rtl;
@@ -139,7 +136,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
139
136
  valueKey: valueKey,
140
137
  defaultLayer: selectedPaths !== null && selectedPaths !== void 0 && selectedPaths.length ? selectedPaths.length - 1 : 0,
141
138
  target: function target() {
142
- return overlayRef.current;
139
+ return overlay.current;
143
140
  },
144
141
  callback: useCallback(function (value) {
145
142
  var _getColumnsAndPaths = getColumnsAndPaths(data, flattenData.find(function (item) {
@@ -173,16 +170,16 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
173
170
  var _useState3 = useState(''),
174
171
  searchKeyword = _useState3[0],
175
172
  setSearchKeyword = _useState3[1];
176
- var handleEntered = useCallback(function () {
173
+ var handleEntered = useEventCallback(function () {
177
174
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
178
175
  setActive(true);
179
- }, [onOpen]);
180
- var handleExited = useCallback(function () {
176
+ });
177
+ var handleExited = useEventCallback(function () {
181
178
  setActive(false);
182
179
  setSearchKeyword('');
183
- }, []);
184
- var handleSelect = useCallback(function (node, cascadePaths, event) {
185
- var _node$childrenKey, _node$childrenKey2, _triggerRef$current, _triggerRef$current$u;
180
+ });
181
+ var handleSelect = useEventCallback(function (node, cascadePaths, event) {
182
+ var _node$childrenKey, _node$childrenKey2, _trigger$current, _trigger$current$upda;
186
183
  setSelectedPaths(cascadePaths);
187
184
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
188
185
  var columnIndex = cascadePaths.length;
@@ -195,7 +192,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
195
192
  children.then(function (data) {
196
193
  node.loading = false;
197
194
  node[childrenKey] = data;
198
- if (targetRef.current || inline) {
195
+ if (target.current || inline) {
199
196
  addFlattenData(data, node);
200
197
  addColumn(data, columnIndex);
201
198
  }
@@ -212,9 +209,9 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
212
209
  // Removes subsequent columns of the current column when the clicked node is a leaf node.
213
210
  removeColumnByIndex(columnIndex);
214
211
  }
215
- (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$u = _triggerRef$current.updatePosition) === null || _triggerRef$current$u === void 0 ? void 0 : _triggerRef$current$u.call(_triggerRef$current);
216
- }, [onSelect, getChildren, childrenKey, inline, addFlattenData, addColumn, removeColumnByIndex]);
217
- var handleCheck = useCallback(function (node, event, checked) {
212
+ (_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : (_trigger$current$upda = _trigger$current.updatePosition) === null || _trigger$current$upda === void 0 ? void 0 : _trigger$current$upda.call(_trigger$current);
213
+ });
214
+ var handleCheck = useEventCallback(function (node, event, checked) {
218
215
  var nodeValue = node[valueKey];
219
216
  var nextValue = [];
220
217
  if (cascade) {
@@ -232,38 +229,38 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
232
229
  setValue(nextValue);
233
230
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
234
231
  onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextValue, node, checked, event);
235
- }, [cascade, onChange, onCheck, setValue, splitValue, value, valueKey]);
236
- var handleClean = useCallback(function (event) {
237
- if (disabled || !targetRef.current) {
232
+ });
233
+ var handleClean = useEventCallback(function (event) {
234
+ if (disabled || !target.current) {
238
235
  return;
239
236
  }
240
237
  setSelectedPaths([]);
241
238
  setValue([]);
242
239
  setColumnData([data]);
243
240
  onChange === null || onChange === void 0 ? void 0 : onChange([], event);
244
- }, [data, disabled, onChange, setColumnData, setValue]);
245
- var handleMenuPressEnter = useCallback(function (event) {
246
- var _overlayRef$current;
241
+ });
242
+ var handleMenuPressEnter = useEventCallback(function (event) {
243
+ var _overlay$current;
247
244
  var focusItem = findNodeOfTree(data, function (item) {
248
245
  return item[valueKey] === focusItemValue;
249
246
  });
250
- var checkbox = (_overlayRef$current = overlayRef.current) === null || _overlayRef$current === void 0 ? void 0 : _overlayRef$current.querySelector("[data-key=\"" + focusItemValue + "\"] [type=\"checkbox\"]");
247
+ var checkbox = (_overlay$current = overlay.current) === null || _overlay$current === void 0 ? void 0 : _overlay$current.querySelector("[data-key=\"" + focusItemValue + "\"] [type=\"checkbox\"]");
251
248
  if (checkbox) {
252
249
  handleCheck(focusItem, event, (checkbox === null || checkbox === void 0 ? void 0 : checkbox.getAttribute('aria-checked')) !== 'true');
253
250
  }
254
- }, [data, focusItemValue, handleCheck, valueKey]);
251
+ });
255
252
  var onPickerKeyDown = useToggleKeyDownEvent(_extends({
256
253
  toggle: !focusItemValue || !active,
257
- triggerRef: triggerRef,
258
- targetRef: targetRef,
259
- overlayRef: overlayRef,
260
- searchInputRef: searchInputRef,
254
+ trigger: trigger,
255
+ target: target,
256
+ overlay: overlay,
257
+ searchInput: searchInput,
261
258
  active: active,
262
259
  onExit: handleClean,
263
260
  onMenuKeyDown: onFocusItem,
264
261
  onMenuPressEnter: handleMenuPressEnter
265
262
  }, rest));
266
- var handleSearch = useCallback(function (value, event) {
263
+ var handleSearch = useEventCallback(function (value, event) {
267
264
  setSearchKeyword(value);
268
265
  onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
269
266
  if (value) {
@@ -272,8 +269,8 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
272
269
  setLayer(selectedPaths.length - 1);
273
270
  }
274
271
  setKeys([]);
275
- }, [onSearch, selectedPaths, setKeys, setLayer]);
276
- var getSearchResult = useCallback(function () {
272
+ });
273
+ var getSearchResult = function getSearchResult() {
277
274
  var items = [];
278
275
  var result = flattenData.filter(function (item) {
279
276
  if (uncheckableItemValues.some(function (value) {
@@ -295,7 +292,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
295
292
  }
296
293
  }
297
294
  return items;
298
- }, [flattenData, labelKey, searchKeyword, uncheckableItemValues, valueKey]);
295
+ };
299
296
  var renderSearchRow = function renderSearchRow(item, key) {
300
297
  var _extends2;
301
298
  var nodes = getNodeParents(item);
@@ -380,16 +377,16 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
380
377
  inline: inline
381
378
  }));
382
379
  return /*#__PURE__*/React.createElement(PickerOverlay, {
383
- ref: mergeRefs(overlayRef, speakerRef),
380
+ ref: mergeRefs(overlay, speakerRef),
384
381
  className: classes,
385
382
  style: styles,
386
- target: triggerRef,
383
+ target: trigger,
387
384
  onKeyDown: onPickerKeyDown
388
385
  }, searchable && /*#__PURE__*/React.createElement(SearchBar, {
389
386
  placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
390
387
  onChange: handleSearch,
391
388
  value: searchKeyword,
392
- inputRef: searchInputRef
389
+ inputRef: searchInput
393
390
  }), renderSearchResultPanel(), searchKeyword === '' && /*#__PURE__*/React.createElement(DropdownMenu, {
394
391
  id: id ? id + "-listbox" : undefined,
395
392
  cascade: cascade,
@@ -445,7 +442,7 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
445
442
  }
446
443
  return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
447
444
  pickerProps: pick(props, pickTriggerPropKeys),
448
- ref: triggerRef,
445
+ ref: trigger,
449
446
  placement: placement,
450
447
  onEnter: createChainedFunction(handleEntered, onEnter),
451
448
  onExited: createChainedFunction(handleExited, onExited),
@@ -453,13 +450,14 @@ var MultiCascader = /*#__PURE__*/React.forwardRef(function (props, ref) {
453
450
  speaker: renderDropdownMenu
454
451
  }, /*#__PURE__*/React.createElement(Component, {
455
452
  className: classes,
456
- style: style
453
+ style: style,
454
+ ref: root
457
455
  }, /*#__PURE__*/React.createElement(PickerToggle, _extends({}, omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys)), {
458
456
  id: id,
459
457
  as: toggleAs,
460
458
  appearance: appearance,
461
459
  disabled: disabled,
462
- ref: targetRef,
460
+ ref: target,
463
461
  onClean: createChainedFunction(handleClean, onClean),
464
462
  onKeyDown: onPickerKeyDown,
465
463
  cleanable: cleanable && !disabled,
@@ -77,6 +77,9 @@ export interface OverlayTriggerHandle {
77
77
  updatePosition: () => void;
78
78
  open: (delay?: number) => void;
79
79
  close: (delay?: number) => void;
80
+ getState: () => {
81
+ open?: boolean;
82
+ };
80
83
  }
81
84
  /**
82
85
  * OverlayTrigger is used to display floating elements on another component.
@@ -165,6 +165,11 @@ var OverlayTrigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
165
165
  var _overlayRef$current;
166
166
  return (_overlayRef$current = overlayRef.current) === null || _overlayRef$current === void 0 ? void 0 : _overlayRef$current.child;
167
167
  },
168
+ getState: function getState() {
169
+ return {
170
+ open: open
171
+ };
172
+ },
168
173
  open: handleOpen,
169
174
  close: function close(delay) {
170
175
  return handleClose(delay, function () {
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface PickerIndicatorProps {
3
+ loading?: boolean;
4
+ caretAs?: React.ElementType | null;
5
+ onClose?: (event: React.MouseEvent<HTMLElement>) => void;
6
+ showCleanButton?: boolean;
7
+ as?: React.ElementType;
8
+ }
9
+ declare const PickerIndicator: ({ loading, caretAs, onClose, showCleanButton, as: Component }: PickerIndicatorProps) => JSX.Element;
10
+ export default PickerIndicator;
@@ -0,0 +1,43 @@
1
+ 'use client';
2
+ import React from 'react';
3
+ import { Icon } from '@rsuite/icons';
4
+ import { useCustom, useClassNames } from '../utils';
5
+ import InputGroup from '../InputGroup';
6
+ import CloseButton from '../CloseButton';
7
+ import Loader from '../Loader';
8
+ var PickerIndicator = function PickerIndicator(_ref) {
9
+ var loading = _ref.loading,
10
+ caretAs = _ref.caretAs,
11
+ onClose = _ref.onClose,
12
+ showCleanButton = _ref.showCleanButton,
13
+ _ref$as = _ref.as,
14
+ Component = _ref$as === void 0 ? InputGroup.Addon : _ref$as;
15
+ var _useCustom = useCustom(),
16
+ locale = _useCustom.locale;
17
+ var _useClassNames = useClassNames('picker'),
18
+ prefix = _useClassNames.prefix;
19
+ var addon = function addon() {
20
+ if (loading) {
21
+ return /*#__PURE__*/React.createElement(Loader, {
22
+ className: prefix('loader'),
23
+ "data-testid": "spinner"
24
+ });
25
+ }
26
+ if (showCleanButton) {
27
+ return /*#__PURE__*/React.createElement(CloseButton, {
28
+ className: prefix('clean'),
29
+ tabIndex: -1,
30
+ locale: {
31
+ closeLabel: locale === null || locale === void 0 ? void 0 : locale.clear
32
+ },
33
+ onClick: onClose
34
+ });
35
+ }
36
+ return caretAs && /*#__PURE__*/React.createElement(Icon, {
37
+ as: caretAs,
38
+ className: prefix('caret-icon')
39
+ });
40
+ };
41
+ return /*#__PURE__*/React.createElement(Component, null, addon());
42
+ };
43
+ export default PickerIndicator;
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ interface PickerLabelProps {
3
+ id?: string;
4
+ className?: string;
5
+ children?: React.ReactNode;
6
+ as?: React.ElementType;
7
+ }
8
+ declare const PickerLabel: ({ children, className, as: Component, ...rest }: PickerLabelProps) => JSX.Element | null;
9
+ export default PickerLabel;
@@ -0,0 +1,17 @@
1
+ 'use client';
2
+ import _extends from "@babel/runtime/helpers/esm/extends";
3
+ import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
4
+ import React from 'react';
5
+ import InputGroup from '../InputGroup';
6
+ var PickerLabel = function PickerLabel(_ref) {
7
+ var children = _ref.children,
8
+ className = _ref.className,
9
+ _ref$as = _ref.as,
10
+ Component = _ref$as === void 0 ? InputGroup.Addon : _ref$as,
11
+ rest = _objectWithoutPropertiesLoose(_ref, ["children", "className", "as"]);
12
+ return children ? /*#__PURE__*/React.createElement(Component, _extends({
13
+ "data-testid": "picker-label",
14
+ className: className
15
+ }, rest), children) : null;
16
+ };
17
+ export default PickerLabel;
@@ -4,38 +4,33 @@ import { RsRefForwardingComponent, TypeAttributes } from '../@types/common';
4
4
  import { IconProps } from '@rsuite/icons/lib/Icon';
5
5
  declare type ValueType = string | number;
6
6
  export interface PickerToggleProps extends ToggleButtonProps {
7
- value?: ValueType | ValueType[];
8
- inputValue?: ValueType | ValueType[];
9
- id?: string;
7
+ active?: boolean;
10
8
  hasValue?: boolean;
11
9
  cleanable?: boolean;
12
10
  caret?: boolean;
13
- active?: boolean;
14
- disabled?: boolean;
15
- readOnly?: boolean;
16
- plaintext?: boolean;
17
- tabIndex?: number;
18
- /** Whether to display an loading indicator on toggle button */
19
- loading?: boolean;
20
- editable?: boolean;
21
- name?: string;
22
- inputPlaceholder?: string;
23
- inputMask?: (string | RegExp)[];
24
- onInputChange?: (value: string, event: React.ChangeEvent) => void;
25
- onInputPressEnter?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
26
- onInputBackspace?: (event: React.KeyboardEvent<HTMLInputElement>) => void;
27
- onInputBlur?: (event: React.FocusEvent<HTMLElement>) => void;
28
- onInputFocus?: (event: React.FocusEvent<HTMLElement>) => void;
29
- placement?: TypeAttributes.Placement;
30
11
  /**
31
12
  * Custom caret component
32
13
  * @deprecated Use `caretAs` instead
33
14
  */
34
15
  caretComponent?: React.FC<IconProps>;
35
- /** Custom caret component */
16
+ /**
17
+ * Custom caret component
18
+ */
36
19
  caretAs?: React.ElementType;
37
- onClean?: (event: React.MouseEvent) => void;
20
+ disabled?: boolean;
21
+ placement?: TypeAttributes.Placement;
22
+ readOnly?: boolean;
23
+ plaintext?: boolean;
24
+ tabIndex?: number;
25
+ /**
26
+ * Whether to display an loading indicator on toggle button
27
+ */
28
+ loading?: boolean;
38
29
  label?: React.ReactNode;
30
+ name?: string;
31
+ id?: string;
32
+ inputValue?: ValueType | ValueType[];
33
+ onClean?: (event: React.MouseEvent) => void;
39
34
  }
40
35
  declare const PickerToggle: RsRefForwardingComponent<typeof ToggleButton, PickerToggleProps>;
41
36
  export default PickerToggle;