rsuite 5.19.0 → 5.20.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 (73) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/Picker/styles/index.less +4 -0
  3. package/cjs/Animation/Transition.d.ts +2 -2
  4. package/cjs/Cascader/Cascader.js +10 -5
  5. package/cjs/Cascader/utils.d.ts +1 -0
  6. package/cjs/Cascader/utils.js +11 -1
  7. package/cjs/CheckTreePicker/CheckTreePicker.js +32 -36
  8. package/cjs/CheckTreePicker/utils.d.ts +2 -2
  9. package/cjs/CheckTreePicker/utils.js +9 -10
  10. package/cjs/DOMHelper/index.d.ts +3 -2
  11. package/cjs/DatePicker/DatePicker.js +9 -0
  12. package/cjs/DatePicker/PredefinedRanges.js +5 -0
  13. package/cjs/DateRangePicker/DateRangePicker.js +9 -7
  14. package/cjs/Form/Form.js +44 -38
  15. package/cjs/MultiCascader/MultiCascader.js +10 -5
  16. package/cjs/MultiCascader/utils.d.ts +1 -0
  17. package/cjs/MultiCascader/utils.js +10 -0
  18. package/cjs/Overlay/OverlayTrigger.d.ts +10 -1
  19. package/cjs/Overlay/OverlayTrigger.js +26 -4
  20. package/cjs/Picker/PickerToggle.d.ts +1 -0
  21. package/cjs/Picker/PickerToggle.js +24 -8
  22. package/cjs/Picker/PickerToggleTrigger.d.ts +1 -1
  23. package/cjs/Picker/PickerToggleTrigger.js +4 -2
  24. package/cjs/SelectPicker/SelectPicker.d.ts +2 -0
  25. package/cjs/TreePicker/TreePicker.d.ts +0 -1
  26. package/cjs/TreePicker/TreePicker.js +13 -14
  27. package/cjs/locales/fr_FR.d.ts +105 -0
  28. package/cjs/locales/fr_FR.js +84 -0
  29. package/cjs/locales/index.d.ts +1 -0
  30. package/cjs/locales/index.js +6 -2
  31. package/cjs/utils/treeUtils.d.ts +7 -1
  32. package/cjs/utils/treeUtils.js +24 -5
  33. package/dist/rsuite-rtl.css +3 -0
  34. package/dist/rsuite-rtl.min.css +1 -1
  35. package/dist/rsuite-rtl.min.css.map +1 -1
  36. package/dist/rsuite.css +3 -0
  37. package/dist/rsuite.js +64 -64
  38. package/dist/rsuite.min.css +1 -1
  39. package/dist/rsuite.min.css.map +1 -1
  40. package/dist/rsuite.min.js +1 -1
  41. package/dist/rsuite.min.js.map +1 -1
  42. package/esm/Animation/Transition.d.ts +2 -2
  43. package/esm/Cascader/Cascader.js +10 -5
  44. package/esm/Cascader/utils.d.ts +1 -0
  45. package/esm/Cascader/utils.js +11 -1
  46. package/esm/CheckTreePicker/CheckTreePicker.js +34 -37
  47. package/esm/CheckTreePicker/utils.d.ts +2 -2
  48. package/esm/CheckTreePicker/utils.js +11 -12
  49. package/esm/DOMHelper/index.d.ts +3 -2
  50. package/esm/DatePicker/DatePicker.js +8 -0
  51. package/esm/DatePicker/PredefinedRanges.js +5 -0
  52. package/esm/DateRangePicker/DateRangePicker.js +9 -7
  53. package/esm/Form/Form.js +44 -38
  54. package/esm/MultiCascader/MultiCascader.js +10 -5
  55. package/esm/MultiCascader/utils.d.ts +1 -0
  56. package/esm/MultiCascader/utils.js +10 -0
  57. package/esm/Overlay/OverlayTrigger.d.ts +10 -1
  58. package/esm/Overlay/OverlayTrigger.js +23 -3
  59. package/esm/Picker/PickerToggle.d.ts +1 -0
  60. package/esm/Picker/PickerToggle.js +22 -8
  61. package/esm/Picker/PickerToggleTrigger.d.ts +1 -1
  62. package/esm/Picker/PickerToggleTrigger.js +4 -2
  63. package/esm/SelectPicker/SelectPicker.d.ts +2 -0
  64. package/esm/TreePicker/TreePicker.d.ts +0 -1
  65. package/esm/TreePicker/TreePicker.js +13 -13
  66. package/esm/locales/fr_FR.d.ts +105 -0
  67. package/esm/locales/fr_FR.js +74 -0
  68. package/esm/locales/index.d.ts +1 -0
  69. package/esm/locales/index.js +2 -1
  70. package/esm/utils/treeUtils.d.ts +7 -1
  71. package/esm/utils/treeUtils.js +22 -5
  72. package/locales/fr_FR/package.json +7 -0
  73. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -1,3 +1,33 @@
1
+ # [5.20.0](https://github.com/rsuite/rsuite/compare/v5.19.1...v5.20.0) (2022-10-21)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **DatePicker:** reset calendar selection after closing picker menu ([#2807](https://github.com/rsuite/rsuite/issues/2807)) ([1ef91a8](https://github.com/rsuite/rsuite/commit/1ef91a846fc6d99c7479e96994aa50da2af9ef9e))
6
+ - **Form.Control:** when shouldResetWithUnmount should remove value and error ([#2802](https://github.com/rsuite/rsuite/issues/2802)) ([f8d108a](https://github.com/rsuite/rsuite/commit/f8d108aed3e94811491be63e3373008d12e83b60))
7
+
8
+ ### Features
9
+
10
+ - **SelectPicker,CheckPicker:** add `loading` prop ([#2808](https://github.com/rsuite/rsuite/issues/2808)) ([3a5e5d5](https://github.com/rsuite/rsuite/commit/3a5e5d5d4b891373c8a05ec4d642103f75920f10))
11
+
12
+ ## [5.19.1](https://github.com/rsuite/rsuite/compare/v5.19.0...v5.19.1) (2022-10-13)
13
+
14
+ ### Bug Fixes
15
+
16
+ - **Cascader,MultiCascader:** fix sub-columns not being removed when a leaf node is selected ([#2792](https://github.com/rsuite/rsuite/issues/2792)) ([619c7de](https://github.com/rsuite/rsuite/commit/619c7debfca63a58622a1ae4a4776544bebf3405))
17
+ - **CheckTreePicker:** fix children node can't uncheck when setting virtualized ([#2782](https://github.com/rsuite/rsuite/issues/2782)) ([#2783](https://github.com/rsuite/rsuite/issues/2783)) ([50f7b89](https://github.com/rsuite/rsuite/commit/50f7b89dbe1a2b59c212e021e1bc42c50e9ebb37))
18
+ - **DateRangePicker:** fix predefined range affecting calendar height ([#2794](https://github.com/rsuite/rsuite/issues/2794)) ([957ce4e](https://github.com/rsuite/rsuite/commit/957ce4e197355ecbb9a0aea6cb6c5906ab1e1a2a))
19
+ - **TreePicker, CheckTreePicker:** ignore backspace when setting cleanable=false or disabled=true ([#2798](https://github.com/rsuite/rsuite/issues/2798)) ([eefe0eb](https://github.com/rsuite/rsuite/commit/eefe0ebc396ee1764243a1e2c8ec432dc6ce39a5))
20
+ - **TreePicker,CheckTreePicker:** fix `renderExtraFooter` causing the … ([#2745](https://github.com/rsuite/rsuite/issues/2745)) ([d7279d1](https://github.com/rsuite/rsuite/commit/d7279d14877e4b3b0ac74abdfeb56836b3a07780)), closes [#2758](https://github.com/rsuite/rsuite/issues/2758)
21
+ - **TreePicker,CheckTreePicker:** fix value being cleared internally when value is controlled ([#2788](https://github.com/rsuite/rsuite/issues/2788)) ([4521a27](https://github.com/rsuite/rsuite/commit/4521a2730a7311b7fe095d85e39966a1d56f5d9d)), closes [#2784](https://github.com/rsuite/rsuite/issues/2784)
22
+
23
+ ### Features
24
+
25
+ - **i18n:** add fr_FR locale ([#2735](https://github.com/rsuite/rsuite/issues/2735)) ([087cfc8](https://github.com/rsuite/rsuite/commit/087cfc885252d764864e075b086f5d980f94db94))
26
+
27
+ ### Performance Improvements
28
+
29
+ - **CheckTreePicker:** improve performance when using large data ([#2767](https://github.com/rsuite/rsuite/issues/2767)) ([651a8a1](https://github.com/rsuite/rsuite/commit/651a8a1ebb0bf1c1e07e1541ca1f0a61a96a3df4))
30
+
1
31
  # [5.19.0](https://github.com/rsuite/rsuite/compare/v5.18.1...v5.19.0) (2022-09-23)
2
32
 
3
33
  ### Bug Fixes
@@ -18,6 +18,10 @@
18
18
  max-width: 100%;
19
19
  }
20
20
 
21
+ &-toggle {
22
+ min-width: 75px;
23
+ }
24
+
21
25
  &-toggle.rs-btn {
22
26
  .rs-ripple-pond {
23
27
  display: none !important;
@@ -36,7 +36,7 @@ interface TransitionState {
36
36
  }
37
37
  export declare const transitionPropTypes: {
38
38
  animation: PropTypes.Requireable<boolean>;
39
- children: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
39
+ children: PropTypes.Requireable<string | number | boolean | ((...args: any[]) => any) | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
40
40
  className: PropTypes.Requireable<string>;
41
41
  in: PropTypes.Requireable<boolean>;
42
42
  unmountOnExit: PropTypes.Requireable<boolean>;
@@ -59,7 +59,7 @@ declare type EventToken = {
59
59
  declare class Transition extends React.Component<TransitionProps, TransitionState> {
60
60
  static propTypes: {
61
61
  animation: PropTypes.Requireable<boolean>;
62
- children: PropTypes.Requireable<string | number | boolean | {} | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
62
+ children: PropTypes.Requireable<string | number | boolean | ((...args: any[]) => any) | PropTypes.ReactElementLike | PropTypes.ReactNodeArray>;
63
63
  className: PropTypes.Requireable<string>;
64
64
  in: PropTypes.Requireable<boolean>;
65
65
  unmountOnExit: PropTypes.Requireable<boolean>;
@@ -117,6 +117,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
117
117
  valueToPaths = _usePaths.valueToPaths,
118
118
  columnData = _usePaths.columnData,
119
119
  addColumn = _usePaths.addColumn,
120
+ romoveColumnByIndex = _usePaths.romoveColumnByIndex,
120
121
  setValueToPaths = _usePaths.setValueToPaths,
121
122
  setColumnData = _usePaths.setColumnData,
122
123
  setSelectedPaths = _usePaths.setSelectedPaths,
@@ -280,9 +281,10 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
280
281
  var handleSelect = function handleSelect(node, cascadePaths, isLeafNode, event) {
281
282
  var _node$childrenKey, _node$childrenKey2, _triggerRef$current2;
282
283
 
283
- var nextValue = node[valueKey];
284
284
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
285
- setSelectedPaths(cascadePaths); // Lazy load node's children
285
+ setSelectedPaths(cascadePaths);
286
+ var nextValue = node[valueKey];
287
+ var columnIndex = cascadePaths.length; // Lazy load node's children
286
288
 
287
289
  if (typeof getChildren === 'function' && ((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) === 0) {
288
290
  node.loading = true;
@@ -294,16 +296,19 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
294
296
  node[childrenKey] = data;
295
297
 
296
298
  if (targetRef.current) {
297
- addColumn(data, cascadePaths.length);
299
+ addColumn(data, columnIndex);
298
300
  }
299
301
  });
300
302
  } else {
301
303
  node.loading = false;
302
304
  node[childrenKey] = children;
303
- addColumn(children, cascadePaths.length);
305
+ addColumn(children, columnIndex);
304
306
  }
305
307
  } else if ((_node$childrenKey2 = node[childrenKey]) !== null && _node$childrenKey2 !== void 0 && _node$childrenKey2.length) {
306
- addColumn(node[childrenKey], cascadePaths.length);
308
+ addColumn(node[childrenKey], columnIndex);
309
+ } else {
310
+ // Removes subsequent columns of the current column when the clicked node is a leaf node.
311
+ romoveColumnByIndex(columnIndex);
307
312
  }
308
313
 
309
314
  if (isLeafNode) {
@@ -14,4 +14,5 @@ export declare function usePaths(props: CascaderProps): {
14
14
  setColumnData: import("react").Dispatch<import("react").SetStateAction<ItemDataType<string | number>[][]>>;
15
15
  setSelectedPaths: import("react").Dispatch<import("react").SetStateAction<ItemDataType<string | number>[]>>;
16
16
  addColumn: (column: ItemDataType[], index: number) => void;
17
+ romoveColumnByIndex: (index: number) => void;
17
18
  };
@@ -125,6 +125,15 @@ function usePaths(props) {
125
125
  function addColumn(column, index) {
126
126
  setColumnData([].concat((0, _slice.default)(columnData, 0, index), [column]));
127
127
  }
128
+ /**
129
+ * Remove subsequent columns of the specified column
130
+ * @param index
131
+ */
132
+
133
+
134
+ function romoveColumnByIndex(index) {
135
+ setColumnData([].concat((0, _slice.default)(columnData, 0, index)));
136
+ }
128
137
  /**
129
138
  * Enforce update of columns and paths.
130
139
  * @param nextValue Selected value
@@ -160,6 +169,7 @@ function usePaths(props) {
160
169
  setValueToPaths: setValueToPaths,
161
170
  setColumnData: setColumnData,
162
171
  setSelectedPaths: setSelectedPaths,
163
- addColumn: addColumn
172
+ addColumn: addColumn,
173
+ romoveColumnByIndex: romoveColumnByIndex
164
174
  };
165
175
  }
@@ -43,8 +43,6 @@ var _Picker = require("../Picker");
43
43
 
44
44
  var _utils2 = require("./utils");
45
45
 
46
- var _TreePicker = require("../TreePicker/TreePicker");
47
-
48
46
  var emptyArray = [];
49
47
 
50
48
  var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
@@ -88,6 +86,8 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
88
86
  defaultExpandItemValues = _props$defaultExpandI === void 0 ? emptyArray : _props$defaultExpandI,
89
87
  _props$height = props.height,
90
88
  height = _props$height === void 0 ? 360 : _props$height,
89
+ _props$menuMaxHeight = props.menuMaxHeight,
90
+ menuMaxHeight = _props$menuMaxHeight === void 0 ? 320 : _props$menuMaxHeight,
91
91
  menuStyle = props.menuStyle,
92
92
  _props$searchable = props.searchable,
93
93
  searchable = _props$searchable === void 0 ? true : _props$searchable,
@@ -119,7 +119,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
119
119
  renderValue = props.renderValue,
120
120
  renderTreeIcon = props.renderTreeIcon,
121
121
  renderTreeNode = props.renderTreeNode,
122
- rest = (0, _objectWithoutPropertiesLoose2.default)(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", "menuStyle", "searchable", "virtualized", "className", "classPrefix", "menuClassName", "menuAutoWidth", "uncheckableItemValues", "id", "listProps", "renderMenu", "getChildren", "renderExtraFooter", "onEntered", "onChange", "onClean", "onClose", "onExited", "onSearch", "onSelect", "onOpen", "onScroll", "onExpand", "renderValue", "renderTreeIcon", "renderTreeNode"]);
122
+ rest = (0, _objectWithoutPropertiesLoose2.default)(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", "onOpen", "onScroll", "onExpand", "renderValue", "renderTreeIcon", "renderTreeNode"]);
123
123
 
124
124
  var _useContext = (0, _react.useContext)(_TreeContext.default),
125
125
  inline = _useContext.inline;
@@ -249,11 +249,11 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
249
249
  value: node[valueKey],
250
250
  label: node[labelKey],
251
251
  layer: layer,
252
- focus: (0, _utils.shallowEqual)(focusItemValue, node[valueKey]),
252
+ focus: focusItemValue === node[valueKey],
253
253
  expand: node.expand,
254
254
  visible: node.visible,
255
255
  loading: loadingNodeValues.some(function (item) {
256
- return (0, _utils.shallowEqual)(item, node[valueKey]);
256
+ return item === node[valueKey];
257
257
  }),
258
258
  disabled: (0, _utils2.getDisabledState)(flattenNodes, node, {
259
259
  disabledItemValues: disabledItemValues,
@@ -390,18 +390,6 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
390
390
  onChange === null || onChange === void 0 ? void 0 : onChange(selectedValues, event);
391
391
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, selectedValues, event);
392
392
  }, [cascade, valueKey, flattenNodes, isControlled, uncheckableItemValues, setValue, onChange, onSelect, toggleChecked, unSerializeList]);
393
-
394
- var hasValue = function hasValue() {
395
- var selectedValues = Object.keys(flattenNodes).map(function (refKey) {
396
- return flattenNodes[refKey][valueKey];
397
- }).filter(function (item) {
398
- return value.some(function (v) {
399
- return (0, _utils.shallowEqual)(v, item);
400
- });
401
- });
402
- return !!selectedValues.length;
403
- };
404
-
405
393
  var handleOpen = (0, _react.useCallback)(function () {
406
394
  var _triggerRef$current, _triggerRef$current$o;
407
395
 
@@ -453,22 +441,26 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
453
441
  var handleClean = (0, _react.useCallback)(function (event) {
454
442
  var target = event.target; // exclude searchBar
455
443
 
456
- if (target.matches('div[role="searchbox"] > input')) {
444
+ if (target.matches('div[role="searchbox"] > input') || disabled || !cleanable) {
457
445
  return;
458
446
  }
459
447
 
460
448
  setActiveNode(null);
461
- setValue([]);
462
449
  setFocusItemValue(null);
463
- unSerializeList({
464
- nodes: flattenNodes,
465
- key: 'check',
466
- value: [],
467
- cascade: cascade,
468
- uncheckableItemValues: uncheckableItemValues
469
- });
450
+
451
+ if (!isControlled) {
452
+ setValue([]);
453
+ unSerializeList({
454
+ nodes: flattenNodes,
455
+ key: 'check',
456
+ value: [],
457
+ cascade: cascade,
458
+ uncheckableItemValues: uncheckableItemValues
459
+ });
460
+ }
461
+
470
462
  onChange === null || onChange === void 0 ? void 0 : onChange([], event);
471
- }, [cascade, flattenNodes, onChange, setValue, unSerializeList, uncheckableItemValues]);
463
+ }, [cascade, cleanable, disabled, flattenNodes, onChange, setValue, unSerializeList, uncheckableItemValues, isControlled]);
472
464
  var handleFocusItem = (0, _react.useCallback)(function (key) {
473
465
  var focusableItems = (0, _treeUtils.getFocusableItems)(filteredData, {
474
466
  disabledItemValues: disabledItemValues,
@@ -593,7 +585,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
593
585
  var visibleChildren = (0, _isUndefined2.default)(searchKeywordState) || searchKeywordState.length === 0 ? !!children : (0, _treeUtils.hasVisibleChildren)(node, childrenKey);
594
586
  var nodeProps = (0, _extends2.default)({}, getTreeNodeProps((0, _extends2.default)({}, node, {
595
587
  /**
596
- * spread operator dont copy unenumerable properties
588
+ * spread operator don't copy unenumerable properties
597
589
  * so we need to copy them manually
598
590
  */
599
591
  parent: node.parent,
@@ -645,6 +637,11 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
645
637
  visible = node.visible;
646
638
  var expand = (0, _treeUtils.getExpandWhenSearching)(searchKeywordState, expandItemValues.includes(node[valueKey]));
647
639
  var nodeProps = (0, _extends2.default)({}, getTreeNodeProps((0, _extends2.default)({}, node, {
640
+ /**
641
+ * spread operator don't copy unenumerable properties
642
+ * so we need to copy them manually
643
+ */
644
+ parent: node.parent,
648
645
  expand: expand
649
646
  }), layer), {
650
647
  hasChildren: node.hasChildren
@@ -689,7 +686,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
689
686
  }, /*#__PURE__*/_react.default.createElement("div", {
690
687
  className: treeNodesClass
691
688
  }, virtualized ? /*#__PURE__*/_react.default.createElement(_VirtualizedList.AutoSizer, {
692
- defaultHeight: inline ? height : _TreePicker.maxTreeHeight,
689
+ defaultHeight: inline ? height : menuMaxHeight,
693
690
  style: {
694
691
  width: 'auto',
695
692
  height: 'auto'
@@ -718,13 +715,10 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
718
715
  left: left,
719
716
  top: top
720
717
  });
721
- var styles = virtualized ? (0, _extends2.default)({
722
- height: height
723
- }, mergedMenuStyle) : (0, _extends2.default)({}, mergedMenuStyle);
724
718
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
725
719
  autoWidth: menuAutoWidth,
726
720
  className: classes,
727
- style: styles,
721
+ style: mergedMenuStyle,
728
722
  ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
729
723
  onKeyDown: onPickerKeydown,
730
724
  target: triggerRef
@@ -735,15 +729,17 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
735
729
  inputRef: searchInputRef
736
730
  }) : null, renderMenu ? renderMenu(renderCheckTree()) : renderCheckTree(), renderExtraFooter === null || renderExtraFooter === void 0 ? void 0 : renderExtraFooter());
737
731
  };
732
+
733
+ var selectedItems = (0, _react.useMemo)(function () {
734
+ return (0, _utils2.getSelectedItems)(flattenNodes, value);
735
+ }, [flattenNodes, value]);
738
736
  /**
739
737
  * 1.Have a value and the value is valid.
740
738
  * 2.Regardless of whether the value is valid, as long as renderValue is set, it is judged to have a value.
741
739
  */
742
740
 
743
-
744
- var hasValidValue = hasValue() || value.length > 0 && (0, _isFunction2.default)(renderValue);
741
+ var hasValidValue = selectedItems.length > 0 || value.length > 0 && (0, _isFunction2.default)(renderValue);
745
742
  var selectedElement = placeholder;
746
- var selectedItems = (0, _utils2.getSelectedItems)(flattenNodes, value, valueKey);
747
743
 
748
744
  if (hasValidValue) {
749
745
  selectedElement = /*#__PURE__*/_react.default.createElement(_Picker.SelectedElement, {
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { CheckTreePickerProps } from './CheckTreePicker';
2
+ import { CheckTreePickerProps, ValueType } from './CheckTreePicker';
3
3
  import { CheckStateType } from '../utils';
4
4
  export interface TreeNodeType {
5
5
  uncheckable?: boolean;
@@ -40,5 +40,5 @@ export declare function isNodeUncheckable(node: any, props: Required<Pick<CheckT
40
40
  export declare function getFormattedTree(data: any[], nodes: TreeNodesType, props: Required<Pick<CheckTreePickerProps, 'childrenKey' | 'cascade'>>): any[];
41
41
  export declare function getDisabledState(nodes: TreeNodesType, node: TreeNodeType, props: Required<Pick<CheckTreePickerProps, 'disabledItemValues' | 'valueKey'>>): boolean;
42
42
  export declare function getCheckTreePickerDefaultValue(value: any[], uncheckableItemValues: any[]): any[];
43
- export declare function getSelectedItems(nodes: TreeNodesType, value: (string | number)[], valueKey: string): TreeNodeType[];
43
+ export declare function getSelectedItems(nodes: TreeNodesType, values: ValueType): TreeNodeType[];
44
44
  export declare function getNodeCheckState({ nodes, node, cascade, childrenKey }: any): CheckStateType;
@@ -126,7 +126,7 @@ function isNodeUncheckable(node, props) {
126
126
  uncheckableItemValues = _props$uncheckableIte === void 0 ? [] : _props$uncheckableIte,
127
127
  valueKey = props.valueKey;
128
128
  return uncheckableItemValues.some(function (value) {
129
- return (0, _utils.shallowEqual)(node[valueKey], value);
129
+ return node[valueKey] === value;
130
130
  });
131
131
  }
132
132
 
@@ -171,7 +171,7 @@ function getDisabledState(nodes, node, props) {
171
171
  }
172
172
 
173
173
  return disabledItemValues.some(function (value) {
174
- return node.refKey && (0, _utils.shallowEqual)(nodes[node.refKey][valueKey], value);
174
+ return node.refKey && nodes[node.refKey][valueKey] === value;
175
175
  });
176
176
  }
177
177
 
@@ -185,18 +185,17 @@ function getCheckTreePickerDefaultValue(value, uncheckableItemValues) {
185
185
  return [];
186
186
  }
187
187
 
188
- function getSelectedItems(nodes, value, valueKey) {
189
- var checkItems = [];
190
- Object.keys(nodes).map(function (refKey) {
188
+ function getSelectedItems(nodes, values) {
189
+ var checkedItems = [];
190
+ values.forEach(function (value) {
191
+ var refKey = (0, _treeUtils.getNodeFormattedRefKey)(value);
191
192
  var node = nodes[refKey];
192
193
 
193
- if (value.some(function (value) {
194
- return (0, _utils.shallowEqual)(node[valueKey], value);
195
- })) {
196
- checkItems.push(node);
194
+ if (!(0, _isNil2.default)(node)) {
195
+ checkedItems.push(node);
197
196
  }
198
197
  });
199
- return checkItems;
198
+ return checkedItems;
200
199
  }
201
200
 
202
201
  function getNodeCheckState(_ref) {
@@ -1,3 +1,4 @@
1
+ /// <reference types="node" />
1
2
  import * as helpers from 'dom-lib';
2
3
  export * from 'dom-lib';
3
4
  declare const DOMHelper: {
@@ -10,8 +11,8 @@ declare const DOMHelper: {
10
11
  removeClass: (target: Element, className: string) => Element;
11
12
  hasClass: (target: Element, className: string) => boolean;
12
13
  toggleClass: (target: Element, className: string) => Element;
13
- cancelAnimationFramePolyfill: typeof clearTimeout;
14
- requestAnimationFramePolyfill: typeof requestAnimationFrame;
14
+ cancelAnimationFramePolyfill: typeof cancelAnimationFrame | typeof clearTimeout;
15
+ requestAnimationFramePolyfill: typeof requestAnimationFrame | ((callback: (t: number) => void) => NodeJS.Timeout);
15
16
  getAnimationEnd: typeof helpers.getAnimationEnd;
16
17
  ownerDocument: (node: Element | null) => Document;
17
18
  ownerWindow: (componentOrElement: Element) => Window;
@@ -35,6 +35,8 @@ var _utils = require("../utils");
35
35
 
36
36
  var _Picker = require("../Picker");
37
37
 
38
+ var _OverlayTrigger = require("../Overlay/OverlayTrigger");
39
+
38
40
  var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
39
41
  var _props$as = props.as,
40
42
  Component = _props$as === void 0 ? 'div' : _props$as,
@@ -419,6 +421,13 @@ var DatePicker = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
419
421
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
420
422
  ref: triggerRef,
421
423
  placement: placement,
424
+ onClose: function onClose(cause) {
425
+ // Unless overlay is closing on user clicking "OK" button,
426
+ // reset the selected date on calendar panel
427
+ if (cause !== _OverlayTrigger.OverlayCloseCause.ImperativeHandle) {
428
+ resetCalendarDate();
429
+ }
430
+ },
422
431
  onEntered: (0, _utils.createChainedFunction)(handleEntered, onEntered),
423
432
  onExited: (0, _utils.createChainedFunction)(handleExited, onExited),
424
433
  speaker: renderDropdownMenu
@@ -45,6 +45,11 @@ var PredefinedRanges = /*#__PURE__*/_react.default.forwardRef(function (props, r
45
45
  return item.label === key;
46
46
  });
47
47
  }, [calendarDate]);
48
+
49
+ if (ranges.length === 0) {
50
+ return null;
51
+ }
52
+
48
53
  return /*#__PURE__*/_react.default.createElement(_Stack.default, (0, _extends2.default)({
49
54
  className: className,
50
55
  ref: ref,
@@ -601,6 +601,12 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
601
601
  onToggleMeridian: handleToggleMeridian,
602
602
  renderTitle: renderTitle
603
603
  };
604
+ var sideRanges = (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
605
+ return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
606
+ })) || [];
607
+ var bottomRanges = ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
608
+ return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
609
+ });
604
610
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
605
611
  role: "dialog",
606
612
  className: classes,
@@ -611,13 +617,11 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
611
617
  className: panelClasses
612
618
  }, /*#__PURE__*/_react.default.createElement(_Stack.default, {
613
619
  alignItems: "flex-start"
614
- }, /*#__PURE__*/_react.default.createElement(_PredefinedRanges.default, {
620
+ }, sideRanges.length > 0 && /*#__PURE__*/_react.default.createElement(_PredefinedRanges.default, {
615
621
  direction: "column",
616
622
  spacing: 0,
617
623
  className: prefix('daterange-predefined'),
618
- ranges: (ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
619
- return (range === null || range === void 0 ? void 0 : range.placement) === 'left';
620
- })) || [],
624
+ ranges: sideRanges,
621
625
  calendarDate: calendarDate,
622
626
  locale: locale,
623
627
  disabledShortcut: disabledShortcutButton,
@@ -640,9 +644,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
640
644
  hideOkBtn: oneTap,
641
645
  onOk: handleOK,
642
646
  onClickShortcut: handleShortcutPageDate,
643
- ranges: ranges === null || ranges === void 0 ? void 0 : ranges.filter(function (range) {
644
- return (range === null || range === void 0 ? void 0 : range.placement) === 'bottom' || (range === null || range === void 0 ? void 0 : range.placement) === undefined;
645
- })
647
+ ranges: bottomRanges
646
648
  })))));
647
649
  };
648
650