rsuite 5.49.0 → 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 (115) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/Cascader/styles/index.less +4 -4
  3. package/DateRangePicker/styles/index.less +15 -5
  4. package/Dropdown/styles/index.less +5 -4
  5. package/Dropdown/styles/mixin.less +0 -11
  6. package/Picker/styles/index.less +31 -24
  7. package/Picker/styles/mixin.less +17 -13
  8. package/README.md +4 -4
  9. package/TagInput/styles/index.less +1 -1
  10. package/cjs/AutoComplete/AutoComplete.js +25 -26
  11. package/cjs/Calendar/Calendar.d.ts +5 -1
  12. package/cjs/Calendar/CalendarContainer.d.ts +5 -1
  13. package/cjs/Cascader/Cascader.js +46 -48
  14. package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
  15. package/cjs/CheckPicker/CheckPicker.js +33 -36
  16. package/cjs/CheckTreePicker/CheckTreePicker.js +61 -64
  17. package/cjs/DatePicker/DatePicker.d.ts +5 -1
  18. package/cjs/DatePicker/DatePicker.js +2 -4
  19. package/cjs/DatePicker/Toolbar.js +2 -1
  20. package/cjs/DateRangeInput/DateRangeInput.js +2 -2
  21. package/cjs/DateRangePicker/Calendar.js +24 -23
  22. package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
  23. package/cjs/DateRangePicker/DateRangePicker.js +239 -201
  24. package/cjs/DateRangePicker/types.d.ts +11 -3
  25. package/cjs/DateRangePicker/utils.d.ts +2 -1
  26. package/cjs/DateRangePicker/utils.js +7 -5
  27. package/cjs/FormControl/FormControl.d.ts +11 -1
  28. package/cjs/FormControl/FormControl.js +6 -5
  29. package/cjs/InputPicker/InputPicker.js +62 -63
  30. package/cjs/MultiCascader/MultiCascader.js +40 -42
  31. package/cjs/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
  32. package/cjs/{DatePicker → Picker}/PickerIndicator.js +2 -1
  33. package/cjs/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
  34. package/cjs/Picker/PickerToggle.d.ts +17 -22
  35. package/cjs/Picker/PickerToggle.js +52 -177
  36. package/cjs/Picker/index.d.ts +3 -0
  37. package/cjs/Picker/index.js +10 -1
  38. package/cjs/Picker/usePickerRef.d.ts +3 -1
  39. package/cjs/Picker/usePickerRef.js +13 -7
  40. package/cjs/Picker/utils.d.ts +5 -9
  41. package/cjs/Picker/utils.js +22 -89
  42. package/cjs/SelectPicker/SelectPicker.d.ts +2 -2
  43. package/cjs/SelectPicker/SelectPicker.js +39 -42
  44. package/cjs/TreePicker/TreePicker.js +72 -75
  45. package/cjs/utils/constants.d.ts +2 -1
  46. package/cjs/utils/constants.js +1 -0
  47. package/cjs/utils/dateUtils.d.ts +0 -1
  48. package/cjs/utils/dateUtils.js +0 -6
  49. package/cjs/utils/getStringLength.d.ts +2 -0
  50. package/cjs/utils/getStringLength.js +18 -0
  51. package/cjs/utils/index.d.ts +1 -0
  52. package/cjs/utils/index.js +4 -1
  53. package/dist/rsuite-no-reset-rtl.css +92 -69
  54. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  55. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  56. package/dist/rsuite-no-reset.css +92 -69
  57. package/dist/rsuite-no-reset.min.css +1 -1
  58. package/dist/rsuite-no-reset.min.css.map +1 -1
  59. package/dist/rsuite-rtl.css +92 -69
  60. package/dist/rsuite-rtl.min.css +1 -1
  61. package/dist/rsuite-rtl.min.css.map +1 -1
  62. package/dist/rsuite.css +92 -69
  63. package/dist/rsuite.js +67 -46
  64. package/dist/rsuite.js.map +1 -1
  65. package/dist/rsuite.min.css +1 -1
  66. package/dist/rsuite.min.css.map +1 -1
  67. package/dist/rsuite.min.js +1 -1
  68. package/dist/rsuite.min.js.map +1 -1
  69. package/esm/AutoComplete/AutoComplete.js +28 -29
  70. package/esm/Calendar/Calendar.d.ts +5 -1
  71. package/esm/Calendar/CalendarContainer.d.ts +5 -1
  72. package/esm/Cascader/Cascader.js +49 -51
  73. package/esm/CheckPicker/CheckPicker.d.ts +2 -2
  74. package/esm/CheckPicker/CheckPicker.js +36 -39
  75. package/esm/CheckTreePicker/CheckTreePicker.js +64 -67
  76. package/esm/DatePicker/DatePicker.d.ts +5 -1
  77. package/esm/DatePicker/DatePicker.js +1 -3
  78. package/esm/DatePicker/Toolbar.js +2 -1
  79. package/esm/DateRangeInput/DateRangeInput.js +2 -2
  80. package/esm/DateRangePicker/Calendar.js +25 -23
  81. package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
  82. package/esm/DateRangePicker/DateRangePicker.js +241 -203
  83. package/esm/DateRangePicker/types.d.ts +11 -3
  84. package/esm/DateRangePicker/utils.d.ts +2 -1
  85. package/esm/DateRangePicker/utils.js +7 -5
  86. package/esm/FormControl/FormControl.d.ts +11 -1
  87. package/esm/FormControl/FormControl.js +4 -3
  88. package/esm/InputPicker/InputPicker.js +64 -65
  89. package/esm/MultiCascader/MultiCascader.js +43 -45
  90. package/esm/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
  91. package/esm/{DatePicker → Picker}/PickerIndicator.js +2 -1
  92. package/esm/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
  93. package/esm/Picker/PickerToggle.d.ts +17 -22
  94. package/esm/Picker/PickerToggle.js +54 -179
  95. package/esm/Picker/index.d.ts +3 -0
  96. package/esm/Picker/index.js +3 -0
  97. package/esm/Picker/usePickerRef.d.ts +3 -1
  98. package/esm/Picker/usePickerRef.js +13 -8
  99. package/esm/Picker/utils.d.ts +5 -9
  100. package/esm/Picker/utils.js +24 -90
  101. package/esm/SelectPicker/SelectPicker.d.ts +2 -2
  102. package/esm/SelectPicker/SelectPicker.js +42 -45
  103. package/esm/TreePicker/TreePicker.js +75 -78
  104. package/esm/utils/constants.d.ts +2 -1
  105. package/esm/utils/constants.js +1 -0
  106. package/esm/utils/dateUtils.d.ts +0 -1
  107. package/esm/utils/dateUtils.js +0 -5
  108. package/esm/utils/getStringLength.d.ts +2 -0
  109. package/esm/utils/getStringLength.js +13 -0
  110. package/esm/utils/index.d.ts +1 -0
  111. package/esm/utils/index.js +1 -0
  112. package/package.json +1 -1
  113. package/styles/mixins/combobox.less +10 -0
  114. /package/cjs/{DatePicker → Picker}/PickerLabel.js +0 -0
  115. /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, onMenuKeyDown as _onMenuKeyDown, PickerOverlay, 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,
@@ -238,19 +242,19 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
238
242
  onRenderTreeIcon: 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,16 +399,8 @@ 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
405
  // exclude searchBar
410
406
  if (target.matches('div[role="searchbox"] > input') || disabled || !cleanable) {
@@ -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
@@ -619,7 +615,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
619
615
  }, style) : {};
620
616
  return /*#__PURE__*/React.createElement("div", {
621
617
  id: id ? id + "-listbox" : undefined,
622
- ref: treeViewRef,
618
+ ref: inline ? root : treeView,
623
619
  role: "tree",
624
620
  "aria-multiselectable": true,
625
621
  className: classes,
@@ -637,7 +633,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
637
633
  }, function (_ref5) {
638
634
  var height = _ref5.height;
639
635
  return /*#__PURE__*/React.createElement(List, _extends({
640
- ref: listRef,
636
+ ref: list,
641
637
  height: height,
642
638
  itemSize: itemSize,
643
639
  itemCount: formattedNodes.length,
@@ -658,14 +654,14 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
658
654
  autoWidth: menuAutoWidth,
659
655
  className: classes,
660
656
  style: mergedMenuStyle,
661
- ref: mergeRefs(overlayRef, speakerRef),
657
+ ref: mergeRefs(overlay, speakerRef),
662
658
  onKeyDown: onPickerKeydown,
663
- target: triggerRef
659
+ target: trigger
664
660
  }, searchable ? /*#__PURE__*/React.createElement(SearchBar, {
665
661
  placeholder: locale.searchPlaceholder,
666
662
  onChange: handleSearch,
667
663
  value: searchKeywordState,
668
- inputRef: searchInputRef
664
+ inputRef: searchInput
669
665
  }) : null, renderMenu ? renderMenu(renderCheckTree()) : renderCheckTree(), renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter());
670
666
  };
671
667
  var selectedItems = useMemo(function () {
@@ -711,7 +707,7 @@ var CheckTreePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
711
707
  }
712
708
  return /*#__PURE__*/React.createElement(PickerToggleTrigger, {
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,11 @@ 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
721
  id: id,
725
- ref: targetRef,
722
+ ref: target,
726
723
  appearance: appearance,
727
724
  onKeyDown: onPickerKeydown,
728
725
  onClean: createChainedFunction(handleClean, onClean),
@@ -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,10 @@ 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';
22
+ import { PickerOverlay, PickerLabel, PickerIndicator, PickerToggleTrigger, pickerPropTypes, pickTriggerPropKeys, omitTriggerPropKeys, usePickerClassName, onMenuKeyDown } from '../Picker';
23
23
  import usePickerRef from '../Picker/usePickerRef';
24
24
  import DateInput from '../DateInput';
25
25
  import InputGroup from '../InputGroup';
26
- import PickerLabel from './PickerLabel';
27
- import PickerIndicator from './PickerIndicator';
28
26
  import { OverlayCloseCause } from '../Overlay/OverlayTrigger';
29
27
  import { deprecatePropTypeNew } from '../utils/deprecatePropType';
30
28
  import { getAriaLabel } from '../Calendar/utils';
@@ -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;