rsuite 5.49.0 → 5.51.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 (233) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/Cascader/styles/index.less +4 -4
  3. package/CheckTreePicker/styles/index.less +3 -3
  4. package/DatePicker/styles/index.less +1 -1
  5. package/DateRangePicker/styles/index.less +15 -5
  6. package/Dropdown/styles/index.less +5 -4
  7. package/Dropdown/styles/mixin.less +0 -11
  8. package/Form/styles/mixin.less +1 -2
  9. package/InputGroup/styles/index.less +0 -14
  10. package/InputPicker/styles/index.less +1 -1
  11. package/Picker/styles/index.less +33 -26
  12. package/Picker/styles/mixin.less +20 -16
  13. package/README.md +4 -4
  14. package/TagInput/styles/index.less +2 -2
  15. package/TagPicker/styles/index.less +5 -1
  16. package/TreePicker/styles/index.less +2 -2
  17. package/cjs/@types/common.d.ts +8 -0
  18. package/cjs/AutoComplete/AutoComplete.js +39 -37
  19. package/cjs/AutoComplete/Combobox.d.ts +8 -0
  20. package/cjs/AutoComplete/Combobox.js +31 -0
  21. package/cjs/Calendar/Calendar.d.ts +5 -1
  22. package/cjs/Calendar/CalendarContainer.d.ts +5 -1
  23. package/cjs/Calendar/CalendarContainer.js +35 -37
  24. package/cjs/Cascader/Cascader.js +58 -59
  25. package/cjs/Cascader/DropdownMenu.d.ts +3 -20
  26. package/cjs/Cascader/DropdownMenu.js +48 -48
  27. package/cjs/Cascader/TreeView.d.ts +24 -0
  28. package/cjs/Cascader/TreeView.js +174 -0
  29. package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
  30. package/cjs/CheckPicker/CheckPicker.js +42 -44
  31. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +2 -2
  32. package/cjs/CheckTreePicker/CheckTreeNode.js +31 -59
  33. package/cjs/CheckTreePicker/CheckTreePicker.js +81 -84
  34. package/cjs/DatePicker/DatePicker.d.ts +5 -1
  35. package/cjs/DatePicker/DatePicker.js +7 -10
  36. package/cjs/DatePicker/Toolbar.js +2 -1
  37. package/cjs/DateRangeInput/DateRangeInput.js +2 -2
  38. package/cjs/DateRangePicker/Calendar.js +24 -23
  39. package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
  40. package/cjs/DateRangePicker/DateRangePicker.js +239 -202
  41. package/cjs/DateRangePicker/types.d.ts +11 -3
  42. package/cjs/DateRangePicker/utils.d.ts +2 -1
  43. package/cjs/DateRangePicker/utils.js +7 -5
  44. package/cjs/Form/Form.d.ts +14 -0
  45. package/cjs/Form/Form.js +39 -30
  46. package/cjs/Form/FormContext.d.ts +1 -0
  47. package/cjs/FormControl/FormControl.d.ts +11 -1
  48. package/cjs/FormControl/FormControl.js +40 -17
  49. package/cjs/FormGroup/FormGroup.js +2 -1
  50. package/cjs/InputPicker/InputPicker.js +108 -92
  51. package/cjs/InputPicker/InputSearch.js +3 -15
  52. package/cjs/InputPicker/TagList.d.ts +3 -0
  53. package/cjs/InputPicker/TagList.js +29 -0
  54. package/cjs/InputPicker/TextBox.d.ts +18 -0
  55. package/cjs/InputPicker/TextBox.js +48 -0
  56. package/cjs/MultiCascader/MultiCascader.js +53 -52
  57. package/cjs/MultiCascader/{DropdownMenu.d.ts → TreeView.d.ts} +3 -3
  58. package/cjs/MultiCascader/{DropdownMenu.js → TreeView.js} +77 -74
  59. package/{esm/Picker/DropdownMenuCheckItem.d.ts → cjs/Picker/ListCheckItem.d.ts} +3 -3
  60. package/cjs/Picker/{DropdownMenuCheckItem.js → ListCheckItem.js} +14 -30
  61. package/cjs/Picker/{DropdownMenuItem.d.ts → ListItem.d.ts} +4 -4
  62. package/cjs/Picker/{DropdownMenuItem.js → ListItem.js} +15 -24
  63. package/cjs/Picker/ListItemGroup.d.ts +6 -0
  64. package/cjs/Picker/{DropdownMenuGroup.js → ListItemGroup.js} +3 -9
  65. package/cjs/Picker/Listbox.d.ts +35 -0
  66. package/cjs/Picker/{DropdownMenu.js → Listbox.js} +49 -64
  67. package/cjs/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
  68. package/cjs/{DatePicker → Picker}/PickerIndicator.js +2 -1
  69. package/cjs/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
  70. package/cjs/Picker/{PickerOverlay.d.ts → PickerPopup.d.ts} +3 -3
  71. package/cjs/Picker/{PickerOverlay.js → PickerPopup.js} +9 -7
  72. package/cjs/Picker/PickerToggle.d.ts +17 -22
  73. package/cjs/Picker/PickerToggle.js +63 -181
  74. package/cjs/Picker/PickerToggleTrigger.d.ts +15 -0
  75. package/cjs/Picker/PickerToggleTrigger.js +21 -5
  76. package/cjs/Picker/SearchBar.js +7 -9
  77. package/cjs/Picker/TreeView.d.ts +7 -0
  78. package/cjs/Picker/TreeView.js +31 -0
  79. package/cjs/Picker/hooks/index.d.ts +6 -0
  80. package/cjs/Picker/hooks/index.js +18 -0
  81. package/cjs/Picker/hooks/useCombobox.d.ts +7 -0
  82. package/cjs/Picker/hooks/useCombobox.js +22 -0
  83. package/cjs/Picker/hooks/useFocusItemValue.d.ts +30 -0
  84. package/cjs/Picker/hooks/useFocusItemValue.js +246 -0
  85. package/cjs/Picker/hooks/usePickerClassName.d.ts +21 -0
  86. package/cjs/Picker/hooks/usePickerClassName.js +39 -0
  87. package/cjs/Picker/{usePickerRef.d.ts → hooks/usePickerRef.d.ts} +5 -3
  88. package/cjs/Picker/{usePickerRef.js → hooks/usePickerRef.js} +13 -7
  89. package/cjs/Picker/hooks/useSearch.d.ts +18 -0
  90. package/cjs/Picker/hooks/useSearch.js +57 -0
  91. package/cjs/Picker/hooks/useToggleKeyDownEvent.d.ts +25 -0
  92. package/cjs/Picker/hooks/useToggleKeyDownEvent.js +101 -0
  93. package/cjs/Picker/index.d.ts +9 -5
  94. package/cjs/Picker/index.js +32 -16
  95. package/cjs/Picker/propTypes.d.ts +0 -6
  96. package/cjs/Picker/propTypes.js +0 -5
  97. package/cjs/Picker/utils.d.ts +2 -100
  98. package/cjs/Picker/utils.js +1 -473
  99. package/cjs/SelectPicker/SelectPicker.d.ts +2 -2
  100. package/cjs/SelectPicker/SelectPicker.js +47 -50
  101. package/cjs/TagInput/index.js +4 -0
  102. package/cjs/TreePicker/TreeNode.d.ts +2 -2
  103. package/cjs/TreePicker/TreeNode.js +22 -56
  104. package/cjs/TreePicker/TreePicker.js +91 -95
  105. package/cjs/utils/constants.d.ts +2 -1
  106. package/cjs/utils/constants.js +1 -0
  107. package/cjs/utils/dateUtils.d.ts +0 -1
  108. package/cjs/utils/dateUtils.js +0 -6
  109. package/cjs/utils/getStringLength.d.ts +2 -0
  110. package/cjs/utils/getStringLength.js +18 -0
  111. package/cjs/utils/index.d.ts +1 -0
  112. package/cjs/utils/index.js +4 -1
  113. package/dist/rsuite-no-reset-rtl.css +201 -186
  114. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  115. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  116. package/dist/rsuite-no-reset.css +201 -186
  117. package/dist/rsuite-no-reset.min.css +1 -1
  118. package/dist/rsuite-no-reset.min.css.map +1 -1
  119. package/dist/rsuite-rtl.css +201 -186
  120. package/dist/rsuite-rtl.min.css +1 -1
  121. package/dist/rsuite-rtl.min.css.map +1 -1
  122. package/dist/rsuite.css +201 -186
  123. package/dist/rsuite.js +235 -104
  124. package/dist/rsuite.js.map +1 -1
  125. package/dist/rsuite.min.css +1 -1
  126. package/dist/rsuite.min.css.map +1 -1
  127. package/dist/rsuite.min.js +1 -1
  128. package/dist/rsuite.min.js.map +1 -1
  129. package/esm/@types/common.d.ts +8 -0
  130. package/esm/AutoComplete/AutoComplete.js +42 -40
  131. package/esm/AutoComplete/Combobox.d.ts +8 -0
  132. package/esm/AutoComplete/Combobox.js +25 -0
  133. package/esm/Calendar/Calendar.d.ts +5 -1
  134. package/esm/Calendar/CalendarContainer.d.ts +5 -1
  135. package/esm/Calendar/CalendarContainer.js +37 -39
  136. package/esm/Cascader/Cascader.js +61 -62
  137. package/esm/Cascader/DropdownMenu.d.ts +3 -20
  138. package/esm/Cascader/DropdownMenu.js +50 -49
  139. package/esm/Cascader/TreeView.d.ts +24 -0
  140. package/esm/Cascader/TreeView.js +167 -0
  141. package/esm/CheckPicker/CheckPicker.d.ts +2 -2
  142. package/esm/CheckPicker/CheckPicker.js +45 -47
  143. package/esm/CheckTreePicker/CheckTreeNode.d.ts +2 -2
  144. package/esm/CheckTreePicker/CheckTreeNode.js +33 -61
  145. package/esm/CheckTreePicker/CheckTreePicker.js +84 -87
  146. package/esm/DatePicker/DatePicker.d.ts +5 -1
  147. package/esm/DatePicker/DatePicker.js +5 -8
  148. package/esm/DatePicker/Toolbar.js +2 -1
  149. package/esm/DateRangeInput/DateRangeInput.js +2 -2
  150. package/esm/DateRangePicker/Calendar.js +25 -23
  151. package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
  152. package/esm/DateRangePicker/DateRangePicker.js +241 -204
  153. package/esm/DateRangePicker/types.d.ts +11 -3
  154. package/esm/DateRangePicker/utils.d.ts +2 -1
  155. package/esm/DateRangePicker/utils.js +7 -5
  156. package/esm/Form/Form.d.ts +14 -0
  157. package/esm/Form/Form.js +41 -32
  158. package/esm/Form/FormContext.d.ts +1 -0
  159. package/esm/FormControl/FormControl.d.ts +11 -1
  160. package/esm/FormControl/FormControl.js +41 -18
  161. package/esm/FormGroup/FormGroup.js +3 -2
  162. package/esm/InputPicker/InputPicker.js +110 -94
  163. package/esm/InputPicker/InputSearch.js +4 -15
  164. package/esm/InputPicker/TagList.d.ts +3 -0
  165. package/esm/InputPicker/TagList.js +23 -0
  166. package/esm/InputPicker/TextBox.d.ts +18 -0
  167. package/esm/InputPicker/TextBox.js +42 -0
  168. package/esm/MultiCascader/MultiCascader.js +56 -55
  169. package/esm/MultiCascader/{DropdownMenu.d.ts → TreeView.d.ts} +3 -3
  170. package/esm/MultiCascader/{DropdownMenu.js → TreeView.js} +79 -75
  171. package/{cjs/Picker/DropdownMenuCheckItem.d.ts → esm/Picker/ListCheckItem.d.ts} +3 -3
  172. package/esm/Picker/{DropdownMenuCheckItem.js → ListCheckItem.js} +15 -30
  173. package/esm/Picker/{DropdownMenuItem.d.ts → ListItem.d.ts} +4 -4
  174. package/esm/Picker/{DropdownMenuItem.js → ListItem.js} +16 -24
  175. package/esm/Picker/ListItemGroup.d.ts +6 -0
  176. package/esm/Picker/{DropdownMenuGroup.js → ListItemGroup.js} +3 -9
  177. package/esm/Picker/Listbox.d.ts +35 -0
  178. package/esm/Picker/{DropdownMenu.js → Listbox.js} +50 -64
  179. package/esm/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
  180. package/esm/{DatePicker → Picker}/PickerIndicator.js +2 -1
  181. package/esm/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
  182. package/esm/Picker/{PickerOverlay.d.ts → PickerPopup.d.ts} +3 -3
  183. package/esm/Picker/{PickerOverlay.js → PickerPopup.js} +10 -8
  184. package/esm/Picker/PickerToggle.d.ts +17 -22
  185. package/esm/Picker/PickerToggle.js +65 -183
  186. package/esm/Picker/PickerToggleTrigger.d.ts +15 -0
  187. package/esm/Picker/PickerToggleTrigger.js +20 -5
  188. package/esm/Picker/SearchBar.js +8 -9
  189. package/esm/Picker/TreeView.d.ts +7 -0
  190. package/esm/Picker/TreeView.js +25 -0
  191. package/esm/Picker/hooks/index.d.ts +6 -0
  192. package/esm/Picker/hooks/index.js +7 -0
  193. package/esm/Picker/hooks/useCombobox.d.ts +7 -0
  194. package/esm/Picker/hooks/useCombobox.js +17 -0
  195. package/esm/Picker/hooks/useFocusItemValue.d.ts +30 -0
  196. package/esm/Picker/hooks/useFocusItemValue.js +240 -0
  197. package/esm/Picker/hooks/usePickerClassName.d.ts +21 -0
  198. package/esm/Picker/hooks/usePickerClassName.js +33 -0
  199. package/esm/Picker/{usePickerRef.d.ts → hooks/usePickerRef.d.ts} +5 -3
  200. package/esm/Picker/{usePickerRef.js → hooks/usePickerRef.js} +13 -8
  201. package/esm/Picker/hooks/useSearch.d.ts +18 -0
  202. package/esm/Picker/hooks/useSearch.js +51 -0
  203. package/esm/Picker/hooks/useToggleKeyDownEvent.d.ts +25 -0
  204. package/esm/Picker/hooks/useToggleKeyDownEvent.js +96 -0
  205. package/esm/Picker/index.d.ts +9 -5
  206. package/esm/Picker/index.js +9 -5
  207. package/esm/Picker/propTypes.d.ts +0 -6
  208. package/esm/Picker/propTypes.js +0 -5
  209. package/esm/Picker/utils.d.ts +2 -100
  210. package/esm/Picker/utils.js +2 -467
  211. package/esm/SelectPicker/SelectPicker.d.ts +2 -2
  212. package/esm/SelectPicker/SelectPicker.js +50 -53
  213. package/esm/TagInput/index.js +4 -0
  214. package/esm/TreePicker/TreeNode.d.ts +2 -2
  215. package/esm/TreePicker/TreeNode.js +24 -58
  216. package/esm/TreePicker/TreePicker.js +94 -98
  217. package/esm/utils/constants.d.ts +2 -1
  218. package/esm/utils/constants.js +1 -0
  219. package/esm/utils/dateUtils.d.ts +0 -1
  220. package/esm/utils/dateUtils.js +0 -5
  221. package/esm/utils/getStringLength.d.ts +2 -0
  222. package/esm/utils/getStringLength.js +13 -0
  223. package/esm/utils/index.d.ts +1 -0
  224. package/esm/utils/index.js +1 -0
  225. package/package.json +1 -1
  226. package/styles/mixins/combobox.less +10 -0
  227. package/styles/variables.less +1 -3
  228. package/cjs/Picker/DropdownMenu.d.ts +0 -59
  229. package/cjs/Picker/DropdownMenuGroup.d.ts +0 -6
  230. package/esm/Picker/DropdownMenu.d.ts +0 -59
  231. package/esm/Picker/DropdownMenuGroup.d.ts +0 -6
  232. /package/cjs/{DatePicker → Picker}/PickerLabel.js +0 -0
  233. /package/esm/{DatePicker → Picker}/PickerLabel.js +0 -0
@@ -7,15 +7,15 @@ import _omit from "lodash/omit";
7
7
  import _isFunction from "lodash/isFunction";
8
8
  import _pick from "lodash/pick";
9
9
  import _isNil from "lodash/isNil";
10
- import React, { useState, useRef, useEffect, useCallback, useContext, useMemo } from 'react';
10
+ import React, { useState, useEffect, useContext, useMemo } from 'react';
11
11
  import PropTypes from 'prop-types';
12
12
  import classNames from 'classnames';
13
13
  import { List, AutoSizer } from '../Windowing';
14
14
  import CheckTreeNode from './CheckTreeNode';
15
15
  import TreeContext from '../Tree/TreeContext';
16
16
  import { getKeyParentMap, getPathTowardsItem, getTreeNodeIndent } from '../utils/treeUtils';
17
- import { createChainedFunction, useCustom, useClassNames, useControlled, KEY_VALUES, mergeRefs } from '../utils';
18
- import { PickerToggle, onMenuKeyDown as _onMenuKeyDown, PickerOverlay, SearchBar, SelectedElement, PickerToggleTrigger, createConcatChildrenFunction, usePickerClassName, usePublicMethods, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes, useToggleKeyDownEvent } from '../Picker';
17
+ import { createChainedFunction, useCustom, useClassNames, useControlled, useEventCallback, KEY_VALUES, mergeRefs } from '../utils';
18
+ import { PickerToggle, TreeView, onMenuKeyDown as _onMenuKeyDown, PickerPopup, SearchBar, SelectedElement, PickerToggleTrigger, createConcatChildrenFunction, usePickerClassName, useToggleKeyDownEvent, usePickerRef, pickTriggerPropKeys, omitTriggerPropKeys, listPickerPropTypes } from '../Picker';
19
19
  import { isEveryChildChecked, isSomeNodeHasChildren, isAllSiblingNodeUncheckable, isEveryFirstLevelNodeUncheckable, getFormattedTree, getDisabledState, getCheckTreePickerDefaultValue, getSelectedItems, isNodeUncheckable } from './utils';
20
20
  import { hasVisibleChildren, getExpandWhenSearching, useTreeSearch, useTreeNodeRefs, getDefaultExpandItemValues, useFlattenTreeData, focusNextItem, getFocusableItems, focusPreviousItem, toggleExpand, getActiveItem, useGetTreeNodeChildren, focusToActiveTreeNode, focusTreeNode, leftArrowHandler, rightArrowHandler, isSearching } from '../utils/treeUtils';
21
21
  var emptyArray = [];
@@ -106,12 +106,16 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
106
106
  rest = _objectWithoutPropertiesLoose(props, ["as", "data", "style", "appearance", "cleanable", "countable", "searchBy", "toggleAs", "searchKeyword", "showIndentLine", "locale", "cascade", "disabled", "valueKey", "labelKey", "placement", "childrenKey", "placeholder", "value", "defaultValue", "defaultExpandAll", "disabledItemValues", "expandItemValues", "defaultExpandItemValues", "height", "menuMaxHeight", "menuStyle", "searchable", "virtualized", "className", "classPrefix", "menuClassName", "menuAutoWidth", "uncheckableItemValues", "id", "listProps", "renderMenu", "getChildren", "renderExtraFooter", "onEntered", "onChange", "onClean", "onClose", "onExited", "onSearch", "onSelect", "onSelectItem", "onOpen", "onScroll", "onExpand", "renderValue", "renderTreeIcon", "renderTreeNode"]);
107
107
  var _useContext = useContext(TreeContext),
108
108
  inline = _useContext.inline;
109
- var triggerRef = useRef(null);
110
- var targetRef = useRef(null);
111
- var listRef = useRef(null);
112
- var overlayRef = useRef(null);
113
- var searchInputRef = useRef(null);
114
- var treeViewRef = useRef(null);
109
+ var _usePickerRef = usePickerRef(ref, {
110
+ inline: inline
111
+ }),
112
+ trigger = _usePickerRef.trigger,
113
+ root = _usePickerRef.root,
114
+ target = _usePickerRef.target,
115
+ overlay = _usePickerRef.overlay,
116
+ list = _usePickerRef.list,
117
+ searchInput = _usePickerRef.searchInput,
118
+ treeView = _usePickerRef.treeView;
115
119
  var _useCustom = useCustom('Picker', overrideLocale),
116
120
  rtl = _useCustom.rtl,
117
121
  locale = _useCustom.locale;
@@ -192,7 +196,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
192
196
  * get formatted nodes for render tree
193
197
  * @params render - renderNode function. only used when virtualized setting false
194
198
  */
195
- var getFormattedNodes = useCallback(function (render) {
199
+ var getFormattedNodes = function getFormattedNodes(render) {
196
200
  if (virtualized) {
197
201
  return formatVirtualizedTreeData(flattenNodes, filteredData, expandItemValues, {
198
202
  cascade: cascade,
@@ -207,7 +211,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
207
211
  }).map(function (node) {
208
212
  return render === null || render === void 0 ? void 0 : render(node, 1);
209
213
  });
210
- }, [searchKeywordState, expandItemValues, filteredData, flattenNodes, formatVirtualizedTreeData, virtualized, childrenKey, cascade]);
214
+ };
211
215
  var getTreeNodeProps = function getTreeNodeProps(node, layer) {
212
216
  return {
213
217
  as: Component,
@@ -234,23 +238,23 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
234
238
  allUncheckable: isAllSiblingNodeUncheckable(node, flattenNodes, uncheckableItemValues, valueKey),
235
239
  onSelect: handleSelect,
236
240
  onExpand: handleExpand,
237
- onRenderTreeNode: renderTreeNode,
238
- onRenderTreeIcon: renderTreeIcon
241
+ renderTreeNode: renderTreeNode,
242
+ renderTreeIcon: renderTreeIcon
239
243
  };
240
244
  };
241
- var focusActiveNode = useCallback(function () {
242
- if (listRef.current) {
245
+ var focusActiveNode = function focusActiveNode() {
246
+ if (list.current) {
243
247
  focusToActiveTreeNode({
244
- list: listRef.current,
248
+ list: list.current,
245
249
  valueKey: valueKey,
246
250
  selector: "." + checkTreePrefix('node-active'),
247
251
  activeNode: activeNode,
248
252
  virtualized: virtualized,
249
- container: treeViewRef.current,
253
+ container: treeView.current,
250
254
  formattedNodes: getFormattedNodes()
251
255
  });
252
256
  }
253
- }, [checkTreePrefix, activeNode, getFormattedNodes, valueKey, virtualized]);
257
+ };
254
258
  useEffect(function () {
255
259
  setValue(getCheckTreePickerDefaultValue(value, uncheckableItemValues));
256
260
  }, []); // eslint-disable-line react-hooks/exhaustive-deps
@@ -280,7 +284,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
280
284
  });
281
285
  forceUpdate();
282
286
  }, [cascade, value, uncheckableItemValues, unSerializeList, flattenNodes, forceUpdate]);
283
- var toggleUpChecked = useCallback(function (nodes, node, checked) {
287
+ var toggleUpChecked = useEventCallback(function (nodes, node, checked) {
284
288
  var currentNode = node.refKey ? nodes[node.refKey] : null;
285
289
  if (cascade && currentNode) {
286
290
  if (!checked) {
@@ -299,8 +303,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
299
303
  toggleUpChecked(nodes, currentNode.parent, checked);
300
304
  }
301
305
  }
302
- }, [cascade]);
303
- var toggleDownChecked = useCallback(function (nodes, node, isChecked) {
306
+ });
307
+ var toggleDownChecked = useEventCallback(function (nodes, node, isChecked) {
304
308
  var currentNode = node.refKey ? nodes[node.refKey] : null;
305
309
  if (!currentNode) {
306
310
  return;
@@ -314,8 +318,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
314
318
  toggleDownChecked(nodes, child, isChecked);
315
319
  });
316
320
  }
317
- }, [cascade, childrenKey]);
318
- var toggleChecked = useCallback(function (node, isChecked) {
321
+ });
322
+ var toggleChecked = useEventCallback(function (node, isChecked) {
319
323
  var nodes = _cloneDeep(flattenNodes);
320
324
  toggleDownChecked(nodes, node, isChecked);
321
325
  node.parent && toggleUpChecked(nodes, node.parent, isChecked);
@@ -324,7 +328,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
324
328
  return values.filter(function (v) {
325
329
  return !uncheckableItemValues.includes(v);
326
330
  });
327
- }, [flattenNodes, uncheckableItemValues, serializeListOnlyParent, toggleDownChecked, toggleUpChecked]);
331
+ });
328
332
 
329
333
  // TODO-Doma
330
334
  // Replace `getKeyParentMap` with `getParentMap`
@@ -335,7 +339,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
335
339
  return node[childrenKey];
336
340
  });
337
341
  }, [childrenKey, data, valueKey]);
338
- var handleSelect = useCallback(function (node, event) {
342
+ var handleSelect = useEventCallback(function (node, event) {
339
343
  var currentNode = node.refKey ? flattenNodes[node.refKey] : null;
340
344
  if (!node || !currentNode) {
341
345
  return;
@@ -358,18 +362,18 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
358
362
  onSelectItem === null || onSelectItem === void 0 ? void 0 : onSelectItem(node, getPathTowardsItem(node, function (item) {
359
363
  return itemParentMap.get(item[valueKey]);
360
364
  }));
361
- }, [flattenNodes, toggleChecked, isControlled, valueKey, onChange, onSelect, onSelectItem, unSerializeList, cascade, uncheckableItemValues, setValue, itemParentMap]);
362
- var handleOpen = useCallback(function () {
363
- var _triggerRef$current, _triggerRef$current$o;
364
- (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : (_triggerRef$current$o = _triggerRef$current.open) === null || _triggerRef$current$o === void 0 ? void 0 : _triggerRef$current$o.call(_triggerRef$current);
365
+ });
366
+ var handleOpen = useEventCallback(function () {
367
+ var _trigger$current, _trigger$current$open;
368
+ (_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : (_trigger$current$open = _trigger$current.open) === null || _trigger$current$open === void 0 ? void 0 : _trigger$current$open.call(_trigger$current);
365
369
  setFocusItemValue(activeNode === null || activeNode === void 0 ? void 0 : activeNode[valueKey]);
366
370
  focusActiveNode();
367
371
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
368
372
  setActive(true);
369
- }, [activeNode, focusActiveNode, onOpen, valueKey]);
370
- var handleClose = useCallback(function () {
371
- var _triggerRef$current2, _triggerRef$current2$, _targetRef$current;
372
- (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : (_triggerRef$current2$ = _triggerRef$current2.close) === null || _triggerRef$current2$ === void 0 ? void 0 : _triggerRef$current2$.call(_triggerRef$current2);
373
+ });
374
+ var handleClose = useEventCallback(function () {
375
+ var _trigger$current2, _trigger$current2$clo, _target$current;
376
+ (_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : (_trigger$current2$clo = _trigger$current2.close) === null || _trigger$current2$clo === void 0 ? void 0 : _trigger$current2$clo.call(_trigger$current2);
373
377
  setSearchKeyword('');
374
378
  onClose === null || onClose === void 0 ? void 0 : onClose();
375
379
  setFocusItemValue(null);
@@ -378,9 +382,9 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
378
382
  /**
379
383
  * when using keyboard toggle picker, should refocus on PickerToggle Component after close picker menu
380
384
  */
381
- (_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : _targetRef$current.focus();
382
- }, [onClose, setSearchKeyword]);
383
- var handleExpand = useCallback(function (node) {
385
+ (_target$current = target.current) === null || _target$current === void 0 ? void 0 : _target$current.focus();
386
+ });
387
+ var handleExpand = useEventCallback(function (node) {
384
388
  var nextExpandItemValues = toggleExpand({
385
389
  node: node,
386
390
  isExpand: !node.expand,
@@ -395,19 +399,11 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
395
399
  if (_isFunction(getChildren) && !node.expand && Array.isArray(node[childrenKey]) && node[childrenKey].length === 0) {
396
400
  loadChildren(node, getChildren);
397
401
  }
398
- }, [childrenKey, expandItemValues, getChildren, loadChildren, onExpand, setExpandItemValues, valueKey]);
399
- usePublicMethods(ref, {
400
- rootRef: inline ? treeViewRef : undefined,
401
- triggerRef: triggerRef,
402
- overlayRef: overlayRef,
403
- targetRef: targetRef,
404
- listRef: listRef,
405
- inline: inline
406
402
  });
407
- var handleClean = useCallback(function (event) {
403
+ var handleClean = useEventCallback(function (event) {
408
404
  var target = event.target;
409
- // exclude searchBar
410
- if (target.matches('div[role="searchbox"] > input') || disabled || !cleanable) {
405
+ // exclude searchbox
406
+ if (target.matches('input[role="searchbox"]') || disabled || !cleanable) {
411
407
  return;
412
408
  }
413
409
  setActiveNode(null);
@@ -423,8 +419,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
423
419
  });
424
420
  }
425
421
  onChange === null || onChange === void 0 ? void 0 : onChange([], event);
426
- }, [cascade, cleanable, disabled, flattenNodes, onChange, setValue, unSerializeList, uncheckableItemValues, isControlled]);
427
- var handleFocusItem = useCallback(function (key) {
422
+ });
423
+ var handleFocusItem = useEventCallback(function (key) {
428
424
  var focusableItems = getFocusableItems(filteredData, {
429
425
  disabledItemValues: disabledItemValues,
430
426
  valueKey: valueKey,
@@ -449,8 +445,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
449
445
  if (key === KEY_VALUES.UP) {
450
446
  focusPreviousItem(focusProps);
451
447
  }
452
- }, [searchKeywordState, checkTreePrefix, expandItemValues, filteredData, focusItemValue, treeNodesRefs, childrenKey, valueKey, disabledItemValues]);
453
- var handleLeftArrow = useCallback(function () {
448
+ });
449
+ var handleLeftArrow = useEventCallback(function () {
454
450
  if (_isNil(focusItemValue)) return;
455
451
  var focusItem = getActiveItem(focusItemValue, flattenNodes, valueKey);
456
452
  leftArrowHandler({
@@ -464,8 +460,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
464
460
  focusTreeNode(focusItem === null || focusItem === void 0 ? void 0 : (_focusItem$parent2 = focusItem.parent) === null || _focusItem$parent2 === void 0 ? void 0 : _focusItem$parent2.refKey, treeNodesRefs, "." + checkTreePrefix('node-label'));
465
461
  }
466
462
  });
467
- }, [checkTreePrefix, expandItemValues, flattenNodes, focusItemValue, handleExpand, treeNodesRefs, valueKey, childrenKey]);
468
- var handleRightArrow = useCallback(function () {
463
+ });
464
+ var handleRightArrow = useEventCallback(function () {
469
465
  if (_isNil(focusItemValue)) return;
470
466
  var focusItem = getActiveItem(focusItemValue, flattenNodes, valueKey);
471
467
  rightArrowHandler({
@@ -477,8 +473,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
477
473
  handleFocusItem(KEY_VALUES.DOWN);
478
474
  }
479
475
  });
480
- }, [focusItemValue, flattenNodes, valueKey, expandItemValues, childrenKey, handleExpand, handleFocusItem]);
481
- var selectActiveItem = useCallback(function (event) {
476
+ });
477
+ var selectActiveItem = function selectActiveItem(event) {
482
478
  if (_isNil(focusItemValue)) return;
483
479
  var activeItem = getActiveItem(focusItemValue, flattenNodes, valueKey);
484
480
  if (!isNodeUncheckable(activeItem, {
@@ -487,13 +483,13 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
487
483
  }) && activeItem !== null) {
488
484
  handleSelect(activeItem, event);
489
485
  }
490
- }, [flattenNodes, focusItemValue, handleSelect, uncheckableItemValues, valueKey]);
486
+ };
491
487
  var onPickerKeydown = useToggleKeyDownEvent(_extends({
492
488
  toggle: !focusItemValue || !active,
493
- triggerRef: triggerRef,
494
- targetRef: targetRef,
495
- overlayRef: overlayRef,
496
- searchInputRef: searchInputRef,
489
+ trigger: trigger,
490
+ target: target,
491
+ overlay: overlay,
492
+ searchInput: searchInput,
497
493
  active: active,
498
494
  onExit: handleClean,
499
495
  onClose: handleClose,
@@ -512,8 +508,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
512
508
  });
513
509
  }
514
510
  }, rest));
515
- var handleTreeKeydown = useCallback(function (event) {
516
- if (!treeViewRef.current) {
511
+ var handleTreeKeydown = useEventCallback(function (event) {
512
+ if (!treeView.current) {
517
513
  return;
518
514
  }
519
515
  _onMenuKeyDown(event, {
@@ -527,7 +523,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
527
523
  right: rtl ? handleLeftArrow : handleRightArrow,
528
524
  enter: selectActiveItem
529
525
  });
530
- }, [handleFocusItem, handleLeftArrow, handleRightArrow, rtl, selectActiveItem]);
526
+ });
531
527
  var renderNode = function renderNode(node, layer) {
532
528
  var visible = node.visible,
533
529
  refKey = node.refKey; // when searching, all nodes should be expand
@@ -561,7 +557,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
561
557
  return saveTreeNodeRef(_ref, refKey);
562
558
  }
563
559
  })), /*#__PURE__*/React.createElement("div", {
564
- className: checkTreePrefix('children')
560
+ className: checkTreePrefix('group'),
561
+ role: "group"
565
562
  }, nodes.map(function (child) {
566
563
  return renderNode(child, layer);
567
564
  }), showIndentLine && /*#__PURE__*/React.createElement("span", {
@@ -613,21 +610,17 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
613
610
  className: prefix('none')
614
611
  }, locale.noResultsText);
615
612
  }
616
- var treeNodesClass = merge(checkTreePrefix('nodes'), (_merge2 = {}, _merge2[checkTreePrefix('all-uncheckable')] = isEveryFirstLevelNodeUncheckable(flattenNodes, uncheckableItemValues, valueKey), _merge2));
617
- var styles = inline ? _extends({
618
- height: height
619
- }, style) : {};
620
- return /*#__PURE__*/React.createElement("div", {
621
- id: id ? id + "-listbox" : undefined,
622
- ref: treeViewRef,
623
- role: "tree",
624
- "aria-multiselectable": true,
613
+ var treeNodesClass = merge(checkTreePrefix('root'), (_merge2 = {}, _merge2[checkTreePrefix('all-uncheckable')] = isEveryFirstLevelNodeUncheckable(flattenNodes, uncheckableItemValues, valueKey), _merge2));
614
+ return /*#__PURE__*/React.createElement(TreeView, {
615
+ ref: inline ? root : treeView,
616
+ multiselectable: true,
617
+ treeRootClassName: treeNodesClass,
625
618
  className: classes,
626
- style: styles,
619
+ style: inline ? _extends({
620
+ height: height
621
+ }, style) : {},
627
622
  onScroll: onScroll,
628
623
  onKeyDown: inline ? handleTreeKeydown : undefined
629
- }, /*#__PURE__*/React.createElement("div", {
630
- className: treeNodesClass
631
624
  }, virtualized ? /*#__PURE__*/React.createElement(AutoSizer, {
632
625
  defaultHeight: inline ? height : menuMaxHeight,
633
626
  style: {
@@ -637,13 +630,13 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
637
630
  }, function (_ref5) {
638
631
  var height = _ref5.height;
639
632
  return /*#__PURE__*/React.createElement(List, _extends({
640
- ref: listRef,
633
+ ref: list,
641
634
  height: height,
642
635
  itemSize: itemSize,
643
636
  itemCount: formattedNodes.length,
644
637
  itemData: formattedNodes
645
638
  }, listProps), renderVirtualListNode);
646
- }) : formattedNodes));
639
+ }) : formattedNodes);
647
640
  };
648
641
  var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
649
642
  var left = positionProps.left,
@@ -654,18 +647,18 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
654
647
  left: left,
655
648
  top: top
656
649
  });
657
- return /*#__PURE__*/React.createElement(PickerOverlay, {
650
+ return /*#__PURE__*/React.createElement(PickerPopup, {
658
651
  autoWidth: menuAutoWidth,
659
652
  className: classes,
660
653
  style: mergedMenuStyle,
661
- ref: mergeRefs(overlayRef, speakerRef),
654
+ ref: mergeRefs(overlay, speakerRef),
662
655
  onKeyDown: onPickerKeydown,
663
- target: triggerRef
656
+ target: trigger
664
657
  }, searchable ? /*#__PURE__*/React.createElement(SearchBar, {
665
658
  placeholder: locale.searchPlaceholder,
666
659
  onChange: handleSearch,
667
660
  value: searchKeywordState,
668
- inputRef: searchInputRef
661
+ inputRef: searchInput
669
662
  }) : null, renderMenu ? renderMenu(renderCheckTree()) : renderCheckTree(), renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter());
670
663
  };
671
664
  var selectedItems = useMemo(function () {
@@ -710,8 +703,11 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
710
703
  return renderCheckTree();
711
704
  }
712
705
  return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
706
+ id: id,
707
+ popupType: "tree",
708
+ multiple: true,
713
709
  pickerProps: _pick(props, pickTriggerPropKeys),
714
- ref: triggerRef,
710
+ ref: trigger,
715
711
  placement: placement,
716
712
  onEnter: handleOpen,
717
713
  onEntered: onEntered,
@@ -719,10 +715,10 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
719
715
  speaker: renderDropdownMenu
720
716
  }, /*#__PURE__*/React.createElement(Component, {
721
717
  className: classes,
722
- style: style
718
+ style: style,
719
+ ref: root
723
720
  }, /*#__PURE__*/React.createElement(PickerToggle, _extends({}, _omit(rest, [].concat(omitTriggerPropKeys, usedClassNamePropKeys)), {
724
- id: id,
725
- ref: targetRef,
721
+ ref: target,
726
722
  appearance: appearance,
727
723
  onKeyDown: onPickerKeydown,
728
724
  onClean: createChainedFunction(handleClean, onClean),
@@ -732,7 +728,8 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
732
728
  hasValue: hasValidValue,
733
729
  active: active,
734
730
  placement: placement,
735
- inputValue: value
731
+ inputValue: value,
732
+ focusItemValue: focusItemValue
736
733
  }), selectedElement || locale.placeholder)));
737
734
  });
738
735
  CheckTreePicker.displayName = 'CheckTreePicker';
@@ -20,7 +20,11 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
20
20
  * @deprecated use <Calendar> instead
21
21
  **/
22
22
  inline?: boolean;
23
- /** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
23
+ /**
24
+ * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
25
+ *
26
+ * @see https://en.wikipedia.org/wiki/ISO_week_date
27
+ */
24
28
  isoWeek?: boolean;
25
29
  /** A label displayed at the beginning of toggle button */
26
30
  label?: React.ReactNode;
@@ -19,12 +19,9 @@ import Stack from '../Stack';
19
19
  import PredefinedRanges from './PredefinedRanges';
20
20
  import { createChainedFunction, mergeRefs, useClassNames, useControlled, useCustom, useUniqueId, useEventCallback, partitionHTMLProps } from '../utils';
21
21
  import { shouldRenderMonth, shouldRenderDate, shouldRenderTime, shouldOnlyRenderTime, setHours, getHours, addMonths, addDays, isValid, disabledTime, copyTime, calendarOnlyProps } from '../utils/dateUtils';
22
- import { PickerOverlay, pickerPropTypes, PickerToggleTrigger, pickTriggerPropKeys, omitTriggerPropKeys, usePickerClassName, onMenuKeyDown } from '../Picker';
23
- import usePickerRef from '../Picker/usePickerRef';
22
+ import { PickerPopup, PickerLabel, PickerIndicator, PickerToggleTrigger, pickerPropTypes, pickTriggerPropKeys, omitTriggerPropKeys, usePickerClassName, usePickerRef, onMenuKeyDown } from '../Picker';
24
23
  import DateInput from '../DateInput';
25
24
  import InputGroup from '../InputGroup';
26
- import PickerLabel from './PickerLabel';
27
- import PickerIndicator from './PickerIndicator';
28
25
  import { OverlayCloseCause } from '../Overlay/OverlayTrigger';
29
26
  import { deprecatePropTypeNew } from '../utils/deprecatePropType';
30
27
  import { getAriaLabel } from '../Calendar/utils';
@@ -99,7 +96,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
99
96
  onToggleTimeDropdown = props.onToggleTimeDropdown,
100
97
  onShortcutClick = props.onShortcutClick,
101
98
  restProps = _objectWithoutPropertiesLoose(props, ["as", "className", "classPrefix", "calendarDefaultDate", "cleanable", "editable", "defaultValue", "disabled", "readOnly", "plaintext", "format", "id", "isoWeek", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "appearance", "placement", "oneTap", "placeholder", "ranges", "value", "showMeridian", "showWeekNumbers", "style", "size", "caretAs", "disabledDate", "disabledHours", "disabledMinutes", "disabledSeconds", "shouldDisableDate", "shouldDisableHour", "shouldDisableMinute", "shouldDisableSecond", "onChange", "onChangeCalendarDate", "onClean", "onClose", "onEntered", "onExited", "onNextMonth", "onOk", "onOpen", "onPrevMonth", "onSelect", "onToggleMonthDropdown", "onToggleTimeDropdown", "onShortcutClick"]);
102
- var id = useUniqueId(classPrefix + "-", idProp);
99
+ var id = useUniqueId('rs-', idProp);
103
100
  var _usePickerRef = usePickerRef(ref),
104
101
  trigger = _usePickerRef.trigger,
105
102
  root = _usePickerRef.root,
@@ -276,7 +273,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
276
273
  onClean === null || onClean === void 0 ? void 0 : onClean(event);
277
274
  event.stopPropagation();
278
275
  });
279
- var handlePickerOverlayKeyDown = useEventCallback(function (event) {
276
+ var handlePickerPopupKeyDown = useEventCallback(function (event) {
280
277
  var delta = 0;
281
278
  var step = showMonth ? 6 : 7;
282
279
  var changeDateFunc = showMonth ? addMonths : addDays;
@@ -420,7 +417,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
420
417
  left: left,
421
418
  top: top
422
419
  });
423
- return /*#__PURE__*/React.createElement(PickerOverlay, {
420
+ return /*#__PURE__*/React.createElement(PickerPopup, {
424
421
  role: "dialog",
425
422
  "aria-labelledby": label ? id + "-label" : undefined,
426
423
  tabIndex: -1,
@@ -428,7 +425,7 @@ var DatePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
428
425
  ref: mergeRefs(overlay, speakerRef),
429
426
  style: styles,
430
427
  target: trigger,
431
- onKeyDown: handlePickerOverlayKeyDown
428
+ onKeyDown: handlePickerPopupKeyDown
432
429
  }, /*#__PURE__*/React.createElement(Stack, {
433
430
  alignItems: "flex-start"
434
431
  }, sideRanges.length > 0 && /*#__PURE__*/React.createElement(PredefinedRanges, {
@@ -56,7 +56,8 @@ var Toolbar = /*#__PURE__*/React.forwardRef(function Toolbar(props, ref) {
56
56
  calendarDate: calendarDate,
57
57
  locale: locale,
58
58
  disabledShortcut: disabledShortcut,
59
- onShortcutClick: onShortcutClick
59
+ onShortcutClick: onShortcutClick,
60
+ "data-testid": "daterange-predefined-bottom"
60
61
  }), /*#__PURE__*/React.createElement("div", {
61
62
  className: prefix('right')
62
63
  }, !hideOkBtn && /*#__PURE__*/React.createElement(SubmitButton, {
@@ -58,10 +58,10 @@ var DateRangeInput = /*#__PURE__*/React.forwardRef(function (props, ref) {
58
58
  isControlledDate: isControlled
59
59
  };
60
60
  var startDateState = useDateInputState(_extends({}, dateInputOptions, {
61
- date: value === null || value === void 0 ? void 0 : value[0]
61
+ date: (value === null || value === void 0 ? void 0 : value[0]) || null
62
62
  }));
63
63
  var endDateState = useDateInputState(_extends({}, dateInputOptions, {
64
- date: value === null || value === void 0 ? void 0 : value[1]
64
+ date: (value === null || value === void 0 ? void 0 : value[1]) || null
65
65
  }));
66
66
  var getActiveState = function getActiveState(type) {
67
67
  if (type === void 0) {
@@ -1,11 +1,11 @@
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 from 'react';
4
5
  import PropTypes from 'prop-types';
5
- import React, { useCallback } from 'react';
6
6
  import { addMonths } from '../utils/dateUtils';
7
7
  import CalendarCore from '../Calendar/CalendarContainer';
8
- import { DATERANGE_DISABLED_TARGET } from '../utils';
8
+ import { DATERANGE_DISABLED_TARGET, useEventCallback } from '../utils';
9
9
  var Calendar = /*#__PURE__*/React.forwardRef(function (props, ref) {
10
10
  var _props$as = props.as,
11
11
  Component = _props$as === void 0 ? CalendarCore : _props$as,
@@ -25,37 +25,39 @@ var Calendar = /*#__PURE__*/React.forwardRef(function (props, ref) {
25
25
  _props$value = props.value,
26
26
  value = _props$value === void 0 ? [] : _props$value,
27
27
  rest = _objectWithoutPropertiesLoose(props, ["as", "calendarDate", "format", "disabledDate", "index", "limitEndYear", "limitStartYear", "onChangeCalendarMonth", "onChangeCalendarTime", "onToggleMeridian", "onSelect", "value"]);
28
- var onMoveForward = useCallback(function (nextPageDate) {
28
+ var onMoveForward = useEventCallback(function (nextPageDate) {
29
29
  onChangeCalendarMonth === null || onChangeCalendarMonth === void 0 ? void 0 : onChangeCalendarMonth(index, nextPageDate);
30
- }, [index, onChangeCalendarMonth]);
31
- var onMoveBackward = useCallback(function (nextPageDate) {
30
+ });
31
+ var onMoveBackward = useEventCallback(function (nextPageDate) {
32
32
  onChangeCalendarMonth === null || onChangeCalendarMonth === void 0 ? void 0 : onChangeCalendarMonth(index, nextPageDate);
33
- }, [index, onChangeCalendarMonth]);
34
- var handleSelect = useCallback(function (date, event) {
33
+ });
34
+ var handleSelect = useEventCallback(function (date, event) {
35
35
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(index, date, event);
36
- }, [index, onSelect]);
37
- var handleChangeMonth = useCallback(function (nextPageDate) {
36
+ });
37
+ var handleChangeMonth = useEventCallback(function (nextPageDate) {
38
38
  onChangeCalendarMonth === null || onChangeCalendarMonth === void 0 ? void 0 : onChangeCalendarMonth(index, nextPageDate);
39
- }, [index, onChangeCalendarMonth]);
40
- var handleChangeTime = useCallback(function (nextPageDate) {
39
+ });
40
+ var handleChangeTime = useEventCallback(function (nextPageDate) {
41
41
  onChangeCalendarTime === null || onChangeCalendarTime === void 0 ? void 0 : onChangeCalendarTime(index, nextPageDate);
42
- }, [index, onChangeCalendarTime]);
43
- var handleToggleMeridian = useCallback(function (event) {
42
+ });
43
+ var handleToggleMeridian = useEventCallback(function (event) {
44
44
  onToggleMeridian(index, event);
45
- }, [index, onToggleMeridian]);
46
- var getCalendarDate = useCallback(function () {
45
+ });
46
+ var getCalendarDate = function getCalendarDate() {
47
47
  return calendarDate[index];
48
- }, [calendarDate, index]);
49
- var handleMoveForward = useCallback(function () {
48
+ };
49
+ var handleMoveForward = useEventCallback(function () {
50
50
  onMoveForward === null || onMoveForward === void 0 ? void 0 : onMoveForward(addMonths(getCalendarDate(), 1));
51
- }, [getCalendarDate, onMoveForward]);
52
- var handleMoveBackward = useCallback(function () {
51
+ });
52
+ var handleMoveBackward = useEventCallback(function () {
53
53
  onMoveBackward === null || onMoveBackward === void 0 ? void 0 : onMoveBackward(addMonths(getCalendarDate(), -1));
54
- }, [getCalendarDate, onMoveBackward]);
55
- var disabledMonth = useCallback(function (date) {
54
+ });
55
+ var disabledMonth = function disabledMonth(date) {
56
56
  return disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date, value, DATERANGE_DISABLED_TARGET.CALENDAR);
57
- }, [disabledDate, value]);
58
- return /*#__PURE__*/React.createElement(Component, _extends({}, rest, {
57
+ };
58
+ return /*#__PURE__*/React.createElement(Component, _extends({
59
+ "data-testid": "calendar-" + (index === 0 ? 'start' : 'end')
60
+ }, rest, {
59
61
  format: format,
60
62
  dateRange: value,
61
63
  disabledDate: disabledMonth,
@@ -1,8 +1,11 @@
1
1
  import React from 'react';
2
2
  import { FormControlBaseProps, PickerBaseProps } from '../@types/common';
3
- import { PickerComponent, PickerToggleProps } from '../Picker';
3
+ import { DateRangePickerLocale } from '../locales';
4
+ import { PickerComponent } from '../Picker';
4
5
  import { DisabledDateFunction, RangeType, DateRange } from './types';
5
- export interface DateRangePickerProps extends PickerBaseProps, FormControlBaseProps<DateRange | null>, Pick<PickerToggleProps, 'caretAs' | 'readOnly' | 'plaintext' | 'loading'> {
6
+ export interface DateRangePickerProps extends PickerBaseProps<DateRangePickerLocale>, FormControlBaseProps<DateRange | null> {
7
+ /** Custom caret component */
8
+ caretAs?: React.ElementType | null;
6
9
  /** Predefined date ranges */
7
10
  ranges?: RangeType[];
8
11
  /** Format date */
@@ -13,12 +16,20 @@ export interface DateRangePickerProps extends PickerBaseProps, FormControlBasePr
13
16
  hoverRange?: 'week' | 'month' | ((date: Date) => DateRange);
14
17
  /** Whether to click once on selected date range,Can be used with hoverRange */
15
18
  oneTap?: boolean;
16
- /** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
19
+ /**
20
+ * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
21
+ *
22
+ * @see https://en.wikipedia.org/wiki/ISO_week_date
23
+ */
17
24
  isoWeek?: boolean;
25
+ /** A label displayed at the beginning of toggle button */
26
+ label?: React.ReactNode;
18
27
  /** Set the upper limit of the available year relative to the current selection date */
19
28
  limitEndYear?: number;
20
29
  /** Set the lower limit of the available year relative to the current selection date */
21
30
  limitStartYear?: number;
31
+ /** Whether to display a loading state indicator */
32
+ loading?: boolean;
22
33
  /** Whether to show week numbers */
23
34
  showWeekNumbers?: boolean;
24
35
  /** Show only one calendar select */
@@ -47,7 +58,10 @@ export interface DateRangePickerProps extends PickerBaseProps, FormControlBasePr
47
58
  onShortcutClick?: (range: RangeType, event: React.MouseEvent) => void;
48
59
  /** Called when clean */
49
60
  onClean?: (event: React.MouseEvent) => void;
50
- /** Custom render value */
61
+ /**
62
+ * Custom render value
63
+ * @deprecated
64
+ */
51
65
  renderValue?: (value: DateRange, format: string) => React.ReactNode;
52
66
  /** Custom render for calendar title */
53
67
  renderTitle?: (date: Date) => React.ReactNode;