rsuite 5.15.2 → 5.16.2

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 (79) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/Form/styles/mixin.less +1 -1
  3. package/InputGroup/styles/index.less +8 -4
  4. package/Picker/styles/index.less +6 -0
  5. package/Slider/styles/index.less +2 -1
  6. package/TreePicker/styles/index.less +0 -3
  7. package/cjs/Cascader/utils.js +3 -5
  8. package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
  9. package/cjs/CheckPicker/test/CheckPicker.test.js +15 -0
  10. package/cjs/CheckTreePicker/CheckTreePicker.d.ts +2 -2
  11. package/cjs/CheckTreePicker/test/CheckTreePicker.test.d.ts +1 -0
  12. package/cjs/CheckTreePicker/test/CheckTreePicker.test.js +15 -0
  13. package/cjs/CheckTreePicker/utils.js +3 -1
  14. package/cjs/CustomProvider/CustomProvider.js +6 -3
  15. package/cjs/DateRangePicker/Calendar.d.ts +0 -1
  16. package/cjs/DateRangePicker/Calendar.js +1 -39
  17. package/cjs/DateRangePicker/DateRangePicker.js +22 -22
  18. package/cjs/DateRangePicker/utils.d.ts +2 -1
  19. package/cjs/DateRangePicker/utils.js +12 -3
  20. package/cjs/InputPicker/InputPicker.d.ts +2 -2
  21. package/cjs/InputPicker/test/InputPicker.test.d.ts +1 -0
  22. package/cjs/InputPicker/test/InputPicker.test.js +15 -0
  23. package/cjs/MultiCascader/utils.js +3 -2
  24. package/cjs/Overlay/OverlayTrigger.js +1 -1
  25. package/cjs/Panel/Panel.js +8 -7
  26. package/cjs/Picker/PickerToggle.d.ts +1 -0
  27. package/cjs/Picker/PickerToggle.js +5 -2
  28. package/cjs/SelectPicker/SelectPicker.d.ts +8 -2
  29. package/cjs/SelectPicker/test/SelectPicker.test.js +30 -0
  30. package/cjs/TreePicker/TreePicker.d.ts +2 -2
  31. package/cjs/TreePicker/test/TreePicker.test.d.ts +1 -0
  32. package/cjs/TreePicker/test/TreePicker.test.js +15 -0
  33. package/cjs/utils/attachParent.d.ts +1 -0
  34. package/cjs/utils/attachParent.js +15 -0
  35. package/cjs/utils/treeUtils.js +3 -2
  36. package/cjs/utils/usePortal.d.ts +4 -2
  37. package/cjs/utils/usePortal.js +40 -14
  38. package/dist/rsuite-rtl.css +34 -27
  39. package/dist/rsuite-rtl.min.css +1 -1
  40. package/dist/rsuite-rtl.min.css.map +1 -1
  41. package/dist/rsuite.css +34 -27
  42. package/dist/rsuite.js +28 -17
  43. package/dist/rsuite.js.map +1 -1
  44. package/dist/rsuite.min.css +1 -1
  45. package/dist/rsuite.min.css.map +1 -1
  46. package/dist/rsuite.min.js +1 -1
  47. package/dist/rsuite.min.js.map +1 -1
  48. package/esm/Cascader/utils.js +2 -4
  49. package/esm/CheckPicker/CheckPicker.d.ts +2 -2
  50. package/esm/CheckPicker/test/CheckPicker.test.js +14 -0
  51. package/esm/CheckTreePicker/CheckTreePicker.d.ts +2 -2
  52. package/esm/CheckTreePicker/test/CheckTreePicker.test.d.ts +1 -0
  53. package/esm/CheckTreePicker/test/CheckTreePicker.test.js +10 -0
  54. package/esm/CheckTreePicker/utils.js +2 -1
  55. package/esm/CustomProvider/CustomProvider.js +6 -3
  56. package/esm/DateRangePicker/Calendar.d.ts +0 -1
  57. package/esm/DateRangePicker/Calendar.js +2 -41
  58. package/esm/DateRangePicker/DateRangePicker.js +22 -22
  59. package/esm/DateRangePicker/utils.d.ts +2 -1
  60. package/esm/DateRangePicker/utils.js +12 -3
  61. package/esm/InputPicker/InputPicker.d.ts +2 -2
  62. package/esm/InputPicker/test/InputPicker.test.d.ts +1 -0
  63. package/esm/InputPicker/test/InputPicker.test.js +10 -0
  64. package/esm/MultiCascader/utils.js +2 -2
  65. package/esm/Overlay/OverlayTrigger.js +1 -1
  66. package/esm/Panel/Panel.js +8 -7
  67. package/esm/Picker/PickerToggle.d.ts +1 -0
  68. package/esm/Picker/PickerToggle.js +5 -2
  69. package/esm/SelectPicker/SelectPicker.d.ts +8 -2
  70. package/esm/SelectPicker/test/SelectPicker.test.js +29 -0
  71. package/esm/TreePicker/TreePicker.d.ts +2 -2
  72. package/esm/TreePicker/test/TreePicker.test.d.ts +1 -0
  73. package/esm/TreePicker/test/TreePicker.test.js +10 -0
  74. package/esm/utils/attachParent.d.ts +1 -0
  75. package/esm/utils/attachParent.js +10 -0
  76. package/esm/utils/treeUtils.js +2 -2
  77. package/esm/utils/usePortal.d.ts +4 -2
  78. package/esm/utils/usePortal.js +36 -14
  79. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ ## [5.16.2](https://github.com/rsuite/rsuite/compare/v5.16.1...v5.16.2) (2022-07-28)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **CustomProvider:** fix warnings caused by server-side rendering ([#2599](https://github.com/rsuite/rsuite/issues/2599)) ([ea05efb](https://github.com/rsuite/rsuite/commit/ea05efba3c53bf7e04ea4caa7b378a762b85af93))
6
+ - **DateRangePicker:** improved experience for date range selection ([#2618](https://github.com/rsuite/rsuite/issues/2618)) ([225fc08](https://github.com/rsuite/rsuite/commit/225fc08e21d43c41d92c1514f67c05eb660bf9dd))
7
+ - **focus:** fix outline style for form components when focused ([#2601](https://github.com/rsuite/rsuite/issues/2601)) ([0e2f9df](https://github.com/rsuite/rsuite/commit/0e2f9dffe5e882fc56727eb8ba8901aaf1b7d7b3))
8
+ - **OverlayTrigger:** fix invalid rendering without followCursor ([#2600](https://github.com/rsuite/rsuite/issues/2600)) ([08abc8e](https://github.com/rsuite/rsuite/commit/08abc8e825af55d8334a6e6057d4f5582a3197ac))
9
+ - **Panel:** allow custom header in collapsible panels ([#2611](https://github.com/rsuite/rsuite/issues/2611)) ([6372d44](https://github.com/rsuite/rsuite/commit/6372d441235b5b65036c257608098df01f93bf6d))
10
+ - **Picker:** add missing caretAs prop declaration ([#2592](https://github.com/rsuite/rsuite/issues/2592)) ([faabba4](https://github.com/rsuite/rsuite/commit/faabba4b32d82f819b5c5431c3d7040798db1765))
11
+ - **Picker:** fix style dependency ([#2612](https://github.com/rsuite/rsuite/issues/2612)) ([0b5b1d6](https://github.com/rsuite/rsuite/commit/0b5b1d60909a069c317f069e9ab235da70eb4aa3))
12
+ - **SelectPicker:** make controlled value nullable ([#2591](https://github.com/rsuite/rsuite/issues/2591)) ([6619a75](https://github.com/rsuite/rsuite/commit/6619a75eca9eabf9bf08dd84dee78f1df0e094ca))
13
+ - **treelike:** fix data item stringify throw error ([#2606](https://github.com/rsuite/rsuite/issues/2606)) ([3a586d2](https://github.com/rsuite/rsuite/commit/3a586d28e075b5bdd95d8df948ce4887570fab1d))
14
+
15
+ ## [5.16.1](https://github.com/rsuite/rsuite/compare/v5.16.0...v5.16.1) (2022-07-15)
16
+
17
+ ### Bug Fixes
18
+
19
+ - **InputNumber:** fix unexpected focus ring when used within an InputGroup ([#2585](https://github.com/rsuite/rsuite/issues/2585)) ([6f76b57](https://github.com/rsuite/rsuite/commit/6f76b5752bca2e11639d7fe34dd927dd84c98f73))
20
+ - **SelectPicker,CheckPicker:** add missing label prop declaration ([#2586](https://github.com/rsuite/rsuite/issues/2586)) ([e1a8cfe](https://github.com/rsuite/rsuite/commit/e1a8cfe32223ec210ac9a5ff793b973d4bcac131))
21
+
22
+ # [5.16.0](https://github.com/rsuite/rsuite/compare/v5.15.2...v5.16.0) (2022-07-07)
23
+
24
+ ### Features
25
+
26
+ - **SelectPicker,CheckPicker:** add label prop ([#2572](https://github.com/rsuite/rsuite/issues/2572)) ([d00f442](https://github.com/rsuite/rsuite/commit/d00f442c46eb5edbb13d127b23f1c2eda6cf60d7))
27
+
1
28
  ## [5.15.2](https://github.com/rsuite/rsuite/compare/v5.15.1...v5.15.2) (2022-06-30)
2
29
 
3
30
  ### Bug Fixes
@@ -27,7 +27,7 @@
27
27
  }
28
28
 
29
29
  &:focus {
30
- box-shadow: var(--rs-state-focus-shadow);
30
+ .focus-ring();
31
31
  }
32
32
 
33
33
  &:disabled {
@@ -30,7 +30,11 @@
30
30
 
31
31
  &:not(.rs-input-group-disabled).rs-input-group-focus,
32
32
  &:focus-within {
33
- box-shadow: var(--rs-state-focus-shadow);
33
+ .focus-ring();
34
+ }
35
+
36
+ & & {
37
+ outline: none !important;
34
38
  }
35
39
 
36
40
  .rs-input-number,
@@ -39,7 +43,7 @@
39
43
  .rs-picker-date .rs-picker-toggle {
40
44
  border: none;
41
45
  border-radius: 0;
42
- box-shadow: none;
46
+ outline: none;
43
47
  }
44
48
 
45
49
  // Reset border
@@ -47,7 +51,7 @@
47
51
  .rs-input {
48
52
  border: none;
49
53
  border-radius: 0;
50
- box-shadow: none;
54
+ outline: none;
51
55
  }
52
56
 
53
57
  .rs-input-number:not(:last-child) .rs-input-number {
@@ -144,7 +148,7 @@
144
148
  .reset-inside-input-group-btn-size(base);
145
149
 
146
150
  &:focus {
147
- box-shadow: none;
151
+ outline: none;
148
152
  }
149
153
 
150
154
  // reset border radius
@@ -213,6 +213,10 @@
213
213
  text-align: left;
214
214
  .ellipsis();
215
215
 
216
+ &-label {
217
+ color: var(--rs-text-primary);
218
+ }
219
+
216
220
  &-value {
217
221
  display: block;
218
222
  .ellipsis();
@@ -273,6 +277,8 @@
273
277
  overflow: hidden;
274
278
  // Remove transition
275
279
  transition: none;
280
+ display: flex;
281
+ flex-direction: column;
276
282
 
277
283
  .high-contrast-mode({
278
284
  border: 1px solid var(--rs-border-primary);
@@ -50,10 +50,11 @@
50
50
  }
51
51
  }
52
52
 
53
- //
53
+ // Handle
54
54
  .rs-slider-handle {
55
55
  position: absolute;
56
56
  top: -50%;
57
+ outline: none;
57
58
 
58
59
  &::before {
59
60
  content: '';
@@ -207,9 +207,6 @@
207
207
  }
208
208
 
209
209
  .rs-picker-menu {
210
- display: flex;
211
- flex-direction: column;
212
-
213
210
  &.rs-tree-menu {
214
211
  padding-top: @picker-menu-padding;
215
212
 
@@ -6,8 +6,6 @@ exports.__esModule = true;
6
6
  exports.getColumnsAndPaths = getColumnsAndPaths;
7
7
  exports.usePaths = usePaths;
8
8
 
9
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
-
11
9
  var _react = require("react");
12
10
 
13
11
  var _slice = _interopRequireDefault(require("lodash/slice"));
@@ -16,6 +14,8 @@ var _utils = require("../utils");
16
14
 
17
15
  var _treeUtils = require("../utils/treeUtils");
18
16
 
17
+ var _attachParent = require("../utils/attachParent");
18
+
19
19
  function getColumnsAndPaths(data, value, options) {
20
20
  var childrenKey = options.childrenKey,
21
21
  valueKey = options.valueKey,
@@ -39,9 +39,7 @@ function getColumnsAndPaths(data, value, options) {
39
39
 
40
40
  if (node) {
41
41
  columns.push(children.map(function (item) {
42
- return (0, _extends2.default)({}, item, {
43
- parent: items[i]
44
- });
42
+ return (0, _attachParent.attachParent)(item, items[i]);
45
43
  }));
46
44
  paths.push(node.active);
47
45
  return {
@@ -1,10 +1,10 @@
1
1
  import React, { Ref } from 'react';
2
2
  import { PickerLocale } from '../locales';
3
- import { PickerInstance } from '../Picker';
3
+ import { PickerInstance, PickerToggleProps } from '../Picker';
4
4
  import { ItemDataType, FormControlPickerProps } from '../@types/common';
5
5
  import type { MultipleSelectProps } from '../SelectPicker';
6
6
  export declare type ValueType = (number | string)[];
7
- export interface CheckPickerProps<T> extends FormControlPickerProps<T[], PickerLocale, ItemDataType<T>>, MultipleSelectProps<T> {
7
+ export interface CheckPickerProps<T> extends FormControlPickerProps<T[], PickerLocale, ItemDataType<T>>, MultipleSelectProps<T>, Pick<PickerToggleProps, 'label' | 'caretAs'> {
8
8
  /** Top the selected option in the options */
9
9
  sticky?: boolean;
10
10
  /** A picker that can be counted */
@@ -81,4 +81,19 @@ var pickerRef = /*#__PURE__*/_react.default.createRef();
81
81
  _react.default.createElement(_CheckPicker.default, {
82
82
  ref: pickerRef,
83
83
  data: []
84
+ }); // With a label
85
+
86
+
87
+ /*#__PURE__*/
88
+ _react.default.createElement(_CheckPicker.default, {
89
+ label: "User",
90
+ data: []
91
+ });
92
+
93
+ /*#__PURE__*/
94
+ _react.default.createElement(_CheckPicker.default, {
95
+ caretAs: function caretAs() {
96
+ return /*#__PURE__*/_react.default.createElement("div", null);
97
+ },
98
+ data: []
84
99
  });
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import { PickerLocale } from '../locales';
3
- import { PickerComponent } from '../Picker';
3
+ import { PickerComponent, PickerToggleProps } from '../Picker';
4
4
  import { TreeBaseProps } from '../Tree/Tree';
5
5
  import { FormControlPickerProps, ItemDataType } from '../@types/common';
6
6
  export declare type ValueType = (string | number)[];
7
- export interface CheckTreePickerProps<T = ValueType> extends TreeBaseProps<T, ItemDataType>, FormControlPickerProps<T, PickerLocale, ItemDataType> {
7
+ export interface CheckTreePickerProps<T = ValueType> extends TreeBaseProps<T, ItemDataType>, FormControlPickerProps<T, PickerLocale, ItemDataType>, Pick<PickerToggleProps, 'caretAs'> {
8
8
  /** Tree node cascade */
9
9
  cascade?: boolean;
10
10
  /** A picker that can be counted */
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _CheckTreePicker = _interopRequireDefault(require("../CheckTreePicker"));
8
+
9
+ /*#__PURE__*/
10
+ _react.default.createElement(_CheckTreePicker.default, {
11
+ caretAs: function caretAs() {
12
+ return /*#__PURE__*/_react.default.createElement("div", null);
13
+ },
14
+ data: []
15
+ });
@@ -25,6 +25,8 @@ var _utils = require("../utils");
25
25
 
26
26
  var _treeUtils = require("../utils/treeUtils");
27
27
 
28
+ var _attachParent = require("../utils/attachParent");
29
+
28
30
  function isEveryChildChecked(nodes, parent) {
29
31
  if ((0, _isNil2.default)(parent.refKey) || (0, _isNil2.default)(nodes[parent.refKey])) {
30
32
  return false;
@@ -147,7 +149,7 @@ function getFormattedTree(data, nodes, props) {
147
149
  formatted.check = curNode.check;
148
150
  formatted.expand = curNode.expand;
149
151
  formatted.uncheckable = curNode.uncheckable;
150
- formatted.parent = curNode.parent;
152
+ (0, _attachParent.attachParent)(formatted, curNode.parent);
151
153
  formatted.checkState = checkState;
152
154
 
153
155
  if (((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) > 0) {
@@ -40,7 +40,8 @@ var CustomProvider = function CustomProvider(props) {
40
40
  var toasters = _react.default.useRef(new Map());
41
41
 
42
42
  var _usePortal = (0, _utils.usePortal)({
43
- container: container
43
+ container: container,
44
+ waitMount: true
44
45
  }),
45
46
  Portal = _usePortal.Portal;
46
47
 
@@ -65,7 +66,9 @@ var CustomProvider = function CustomProvider(props) {
65
66
  }, [classPrefix, theme]);
66
67
  return /*#__PURE__*/_react.default.createElement(Provider, {
67
68
  value: value
68
- }, children, /*#__PURE__*/_react.default.createElement(Portal, null, _ToastContainer.toastPlacements.map(function (placement) {
69
+ }, children, /*#__PURE__*/_react.default.createElement(Portal, null, /*#__PURE__*/_react.default.createElement("div", {
70
+ className: "rs-toast-provider"
71
+ }, _ToastContainer.toastPlacements.map(function (placement) {
69
72
  return /*#__PURE__*/_react.default.createElement(_ToastContainer.default, {
70
73
  key: placement,
71
74
  placement: placement,
@@ -73,7 +76,7 @@ var CustomProvider = function CustomProvider(props) {
73
76
  toasters.current.set(placement, _ref);
74
77
  }
75
78
  });
76
- })));
79
+ }))));
77
80
  };
78
81
 
79
82
  var _default = CustomProvider;
@@ -19,7 +19,6 @@ export interface CalendarProps extends WithAsProps, Omit<CalendarCoreProps, Omit
19
19
  onToggleMeridian: (index: number, event: React.MouseEvent) => void;
20
20
  onMouseMove?: (date: Date) => void;
21
21
  onSelect?: (date: Date, event: React.SyntheticEvent) => void;
22
- showOneCalendar?: boolean;
23
22
  showWeekNumbers?: boolean;
24
23
  value?: [] | [Date] | [Date, Date];
25
24
  }
@@ -21,14 +21,6 @@ var _Calendar = _interopRequireWildcard(require("../Calendar/Calendar"));
21
21
 
22
22
  var _utils = require("../utils");
23
23
 
24
- /**
25
- * Omit the time in the date, which is used to compare and judge the date.
26
- * eg: isAfter/isBefore
27
- */
28
- function omitTime(date) {
29
- return new Date(date.getFullYear(), date.getMonth(), date.getDate());
30
- }
31
-
32
24
  var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
33
25
  var _props$as = props.as,
34
26
  Component = _props$as === void 0 ? _Calendar.default : _props$as,
@@ -43,10 +35,9 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
43
35
  onChangeCalendarDate = props.onChangeCalendarDate,
44
36
  onChangeCalendarTime = props.onChangeCalendarTime,
45
37
  onToggleMeridian = props.onToggleMeridian,
46
- showOneCalendar = props.showOneCalendar,
47
38
  _props$value = props.value,
48
39
  value = _props$value === void 0 ? [] : _props$value,
49
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "calendarDate", "format", "disabledDate", "index", "limitEndYear", "onChangeCalendarDate", "onChangeCalendarTime", "onToggleMeridian", "showOneCalendar", "value"]);
40
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "calendarDate", "format", "disabledDate", "index", "limitEndYear", "onChangeCalendarDate", "onChangeCalendarTime", "onToggleMeridian", "value"]);
50
41
 
51
42
  var _useState = (0, _react.useState)(),
52
43
  calendarState = _useState[0],
@@ -86,33 +77,6 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
86
77
  var handleMoveBackward = (0, _react.useCallback)(function () {
87
78
  onMoveBackward === null || onMoveBackward === void 0 ? void 0 : onMoveBackward((0, _dateUtils.addMonths)(getCalendarDate(), -1));
88
79
  }, [getCalendarDate, onMoveBackward]);
89
- var disabledBackward = (0, _react.useCallback)(function () {
90
- // Do not disable the Backward button on the first calendar.
91
- if (index === 0) {
92
- return false;
93
- }
94
-
95
- var startDate = (0, _dateUtils.setDate)((0, _dateUtils.addMonths)(calendarDate[0], 1), 1);
96
- var endDate = (0, _dateUtils.setDate)(omitTime(calendarDate[1]), 1);
97
- var after = (0, _dateUtils.isAfter)(endDate, startDate);
98
- return !after;
99
- }, [calendarDate, index]);
100
- var disabledForward = (0, _react.useCallback)(function () {
101
- // If only one calendar is displayed, do not disable
102
- if (showOneCalendar) {
103
- return false;
104
- } // Do not disable the Forward button on the second calendar.
105
-
106
-
107
- if (index === 1) {
108
- return false;
109
- }
110
-
111
- var startDate = (0, _dateUtils.setDate)((0, _dateUtils.addMonths)(omitTime(calendarDate[0]), 1), 1);
112
- var endDate = (0, _dateUtils.setDate)(omitTime(calendarDate[1]), 1);
113
- var after = (0, _dateUtils.isAfter)(endDate, startDate);
114
- return !after;
115
- }, [calendarDate, index, showOneCalendar]);
116
80
  var disabledMonth = (0, _react.useCallback)(function (date) {
117
81
  return disabledDate === null || disabledDate === void 0 ? void 0 : disabledDate(date, value, _utils.DATERANGE_DISABLED_TARGET.CALENDAR);
118
82
  }, [disabledDate, value]);
@@ -120,9 +84,7 @@ var Calendar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
120
84
  format: format,
121
85
  calendarState: calendarState,
122
86
  dateRange: value,
123
- disabledBackward: disabledBackward(),
124
87
  disabledDate: disabledMonth,
125
- disabledForward: disabledForward(),
126
88
  inSameMonth: inSameMonth,
127
89
  index: index,
128
90
  limitEndYear: limitEndYear,
@@ -160,9 +160,10 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
160
160
  * If params `value` is not passed, it defaults to [new Date(), addMonth(new Date(), 1)].
161
161
  */
162
162
 
163
- var updateCalendarDate = (0, _react.useCallback)(function (value) {
163
+ var updateCalendarDateRange = (0, _react.useCallback)(function (value, calendarKey) {
164
164
  setCalendarDate((0, _utils2.getCalendarDate)({
165
- value: value
165
+ value: value,
166
+ calendarKey: calendarKey
166
167
  }));
167
168
  }, []); // if valueProp changed then update selectValue/hoverValue
168
169
 
@@ -337,10 +338,10 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
337
338
 
338
339
  setHoverDateRange(nextSelectDates.length === 2 ? nextSelectDates : [nextSelectDates[0], nextSelectDates[0]]);
339
340
  setSelectedDates(nextSelectDates);
340
- updateCalendarDate(nextSelectDates);
341
+ updateCalendarDateRange(nextSelectDates);
341
342
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(date, event);
342
343
  hasDoneSelect.current = !hasDoneSelect.current;
343
- }, [getHoverRangeValue, handleValueUpdate, hoverDateRange, onSelect, oneTap, selectedDates, updateCalendarDate]);
344
+ }, [getHoverRangeValue, handleValueUpdate, hoverDateRange, onSelect, oneTap, selectedDates, updateCalendarDateRange]);
344
345
  /**
345
346
  * If `selectValue` changed, there will be the following effects.
346
347
  * 1. Check if the selection is completed.
@@ -352,12 +353,12 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
352
353
  var doneSelected = selectValueLength === 0 || selectValueLength === 2;
353
354
  doneSelected && setHoverDateRange(null);
354
355
  }, [selectedDates]);
355
- var handleChangeCalendarDate = (0, _react.useCallback)(function (index, date) {
356
+ var updateSingleCalendarDate = (0, _react.useCallback)(function (index, date) {
356
357
  var nextCalendarDate = Array.from(calendarDate);
357
358
  nextCalendarDate[index] = date;
358
- updateCalendarDate(nextCalendarDate);
359
- }, [calendarDate, updateCalendarDate]);
360
- var handleChangeCalendarTime = (0, _react.useCallback)(function (index, date) {
359
+ updateCalendarDateRange(nextCalendarDate, index === 0 ? 'start' : 'end');
360
+ }, [calendarDate, updateCalendarDateRange]);
361
+ var updateSingleCalendarTime = (0, _react.useCallback)(function (index, date) {
361
362
  setSelectedDates(function (prev) {
362
363
  var next = [].concat(prev);
363
364
  var clonedDate = new Date(date.valueOf()); // if next[index] is not empty, only update the time after aligning the year, month and day
@@ -369,8 +370,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
369
370
  next[index] = clonedDate;
370
371
  return next;
371
372
  });
372
- handleChangeCalendarDate(index, date);
373
- }, [handleChangeCalendarDate]);
373
+ updateSingleCalendarDate(index, date);
374
+ }, [updateSingleCalendarDate]);
374
375
  /**
375
376
  * The callback triggered when PM/AM is switched.
376
377
  */
@@ -407,9 +408,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
407
408
  onOk === null || onOk === void 0 ? void 0 : onOk(selectedDates, event);
408
409
  }, [handleValueUpdate, onOk, selectedDates]);
409
410
  var handleClean = (0, _react.useCallback)(function (event) {
410
- updateCalendarDate(null);
411
+ updateCalendarDateRange(null);
411
412
  handleValueUpdate(event, null);
412
- }, [handleValueUpdate, updateCalendarDate]);
413
+ }, [handleValueUpdate, updateCalendarDateRange]);
413
414
  /**
414
415
  * Callback after the input box value is changed.
415
416
  */
@@ -444,9 +445,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
444
445
 
445
446
  setHoverDateRange(selectValue);
446
447
  setSelectedDates(selectValue);
447
- updateCalendarDate(selectValue);
448
+ updateCalendarDateRange(selectValue);
448
449
  }, // eslint-disable-next-line react-hooks/exhaustive-deps
449
- [character, rangeFormatStr, updateCalendarDate]);
450
+ [character, rangeFormatStr, updateCalendarDateRange]);
450
451
  /**
451
452
  * The callback after the enter key is triggered on the input
452
453
  */
@@ -472,8 +473,8 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
472
473
  }
473
474
 
474
475
  setSelectedDates(value !== null && value !== void 0 ? value : []);
475
- updateCalendarDate(nextCalendarDate);
476
- }, [defaultCalendarValue, updateCalendarDate, setSelectedDates, value]);
476
+ updateCalendarDateRange(nextCalendarDate);
477
+ }, [defaultCalendarValue, updateCalendarDateRange, setSelectedDates, value]);
477
478
  var handleEntered = (0, _react.useCallback)(function () {
478
479
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
479
480
  setPickerToggleActive(true);
@@ -548,7 +549,7 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
548
549
  left: left,
549
550
  top: top
550
551
  });
551
- var panelProps = {
552
+ var calendarProps = {
552
553
  calendarDate: calendarDate,
553
554
  disabledDate: handleDisabledDate,
554
555
  format: formatStr,
@@ -556,12 +557,11 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
556
557
  isoWeek: isoWeek,
557
558
  limitEndYear: limitEndYear,
558
559
  locale: locale,
559
- showOneCalendar: showOneCalendar,
560
560
  showWeekNumbers: showWeekNumbers,
561
561
  value: selectedDates,
562
562
  showMeridian: showMeridian,
563
- onChangeCalendarDate: handleChangeCalendarDate,
564
- onChangeCalendarTime: handleChangeCalendarTime,
563
+ onChangeCalendarDate: updateSingleCalendarDate,
564
+ onChangeCalendarTime: updateSingleCalendarTime,
565
565
  onMouseMove: handleMouseMove,
566
566
  onSelect: handleSelectDate,
567
567
  onToggleMeridian: handleToggleMeridian,
@@ -582,9 +582,9 @@ var DateRangePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
582
582
  className: prefix("daterange-calendar-" + (showOneCalendar ? 'single' : 'group'))
583
583
  }, /*#__PURE__*/_react.default.createElement(_Calendar2.default, (0, _extends2.default)({
584
584
  index: 0
585
- }, panelProps)), !showOneCalendar && /*#__PURE__*/_react.default.createElement(_Calendar2.default, (0, _extends2.default)({
585
+ }, calendarProps)), !showOneCalendar && /*#__PURE__*/_react.default.createElement(_Calendar2.default, (0, _extends2.default)({
586
586
  index: 1
587
- }, panelProps)))), /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
587
+ }, calendarProps)))), /*#__PURE__*/_react.default.createElement(_Toolbar.default, {
588
588
  locale: locale,
589
589
  calendarDate: selectedDates,
590
590
  disabledOkBtn: disabledOkButton,
@@ -1,7 +1,8 @@
1
1
  import { DateRange, RangeType } from './types';
2
2
  export declare const setTimingMargin: (date: any, way?: string) => Date;
3
- export declare function getCalendarDate({ value }: {
3
+ export declare function getCalendarDate({ value, calendarKey }: {
4
4
  value: [] | [Date] | [Date, Date] | null;
5
+ calendarKey?: 'start' | 'end';
5
6
  }): DateRange;
6
7
  export declare const getDefaultRanges: () => RangeType[];
7
8
  export declare const isSameRange: (source: DateRange | null, dest: DateRange | null, format: string) => boolean;
@@ -19,14 +19,23 @@ exports.setTimingMargin = setTimingMargin;
19
19
  function getCalendarDate(_ref) {
20
20
  var _value;
21
21
 
22
- var value = _ref.value;
22
+ var value = _ref.value,
23
+ _ref$calendarKey = _ref.calendarKey,
24
+ calendarKey = _ref$calendarKey === void 0 ? 'start' : _ref$calendarKey;
23
25
  // Update calendarDate if the value is not null
24
26
  value = (_value = value) !== null && _value !== void 0 ? _value : [];
25
27
 
26
28
  if (value[0] && value[1]) {
27
- var sameMonth = _utils.DateUtils.isSameMonth(value[0], value[1]);
29
+ var startMonth = _utils.DateUtils.getMonth(value[0]);
30
+
31
+ var endMonth = _utils.DateUtils.getMonth(value[1]);
32
+
33
+ if (calendarKey === 'start') {
34
+ return [value[0], startMonth >= endMonth ? _utils.DateUtils.addMonths(value[0], 1) : value[1]];
35
+ } else if (calendarKey === 'end') {
36
+ return [startMonth >= endMonth ? _utils.DateUtils.addMonths(value[1], -1) : value[0], value[1]];
37
+ } // If only the start date
28
38
 
29
- return [value[0], sameMonth ? _utils.DateUtils.addMonths(value[1], 1) : value[1]]; // If only the start date
30
39
  } else if (value[0]) {
31
40
  return [value[0], _utils.DateUtils.addMonths(value[0], 1)];
32
41
  }
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { InputPickerLocale } from '../locales';
3
- import { PickerComponent } from '../Picker';
3
+ import { PickerComponent, PickerToggleProps } from '../Picker';
4
4
  import { TagProps } from '../Tag';
5
5
  import { ItemDataType, FormControlPickerProps } from '../@types/common';
6
6
  import { SelectProps } from '../SelectPicker';
@@ -24,7 +24,7 @@ interface InputItemDataType extends ItemDataType {
24
24
  create?: boolean;
25
25
  }
26
26
  export declare type ValueType = any;
27
- export interface InputPickerProps<T = ValueType> extends FormControlPickerProps<T, InputPickerLocale, InputItemDataType>, SelectProps<T> {
27
+ export interface InputPickerProps<T = ValueType> extends FormControlPickerProps<T, InputPickerLocale, InputItemDataType>, SelectProps<T>, Pick<PickerToggleProps, 'caretAs'> {
28
28
  tabIndex?: number;
29
29
  /** Settings can create new options */
30
30
  creatable?: boolean;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _react = _interopRequireDefault(require("react"));
6
+
7
+ var _InputPicker = _interopRequireDefault(require("../InputPicker"));
8
+
9
+ /*#__PURE__*/
10
+ _react.default.createElement(_InputPicker.default, {
11
+ caretAs: function caretAs() {
12
+ return /*#__PURE__*/_react.default.createElement("div", null);
13
+ },
14
+ data: []
15
+ });
@@ -18,6 +18,8 @@ var _slice = _interopRequireDefault(require("lodash/slice"));
18
18
 
19
19
  var _treeUtils = require("../utils/treeUtils");
20
20
 
21
+ var _attachParent = require("../utils/attachParent");
22
+
21
23
  /**
22
24
  * Get all parents of a node
23
25
  * @param node
@@ -196,8 +198,7 @@ function useFlattenData(data, itemKeys) {
196
198
 
197
199
  var addFlattenData = (0, _react.useCallback)(function (children, parent) {
198
200
  var nodes = children.map(function (child) {
199
- child.parent = parent;
200
- return child;
201
+ return (0, _attachParent.attachParent)(child, parent);
201
202
  });
202
203
  parent[childrenKey] = nodes;
203
204
  setFlattenData([].concat(flattenData, nodes));
@@ -324,7 +324,7 @@ var OverlayTrigger = /*#__PURE__*/_react.default.forwardRef(function (props, ref
324
324
  triggerEvents.onBlur = (0, _utils.createChainedFunction)(handleDelayedClose, onBlur);
325
325
  }
326
326
 
327
- if (trigger !== 'none') {
327
+ if (trigger !== 'none' && followCursor) {
328
328
  triggerEvents.onMouseMove = (0, _utils.createChainedFunction)(handledMoveOverlay, onMouseMove);
329
329
  }
330
330
  }
@@ -121,21 +121,19 @@ var Panel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
121
121
  return null;
122
122
  }
123
123
 
124
- var content;
124
+ var panelTitleElement;
125
125
 
126
126
  if (! /*#__PURE__*/_react.default.isValidElement(header) || Array.isArray(header)) {
127
- content = collapsible ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_AngleDown.default, {
128
- rotate: expanded ? 180 : 0
129
- }), /*#__PURE__*/_react.default.createElement("span", {
127
+ panelTitleElement = /*#__PURE__*/_react.default.createElement("span", {
130
128
  className: prefix('title'),
131
129
  role: "presentation"
132
130
  }, /*#__PURE__*/_react.default.createElement("span", {
133
131
  className: expanded ? undefined : 'collapsed'
134
- }, header))) : header;
132
+ }, header));
135
133
  } else {
136
134
  var _className = merge(prefix('title'), (0, _get.default)(header, 'props.className'));
137
135
 
138
- content = /*#__PURE__*/_react.default.cloneElement(header, {
136
+ panelTitleElement = /*#__PURE__*/_react.default.cloneElement(header, {
139
137
  className: _className
140
138
  });
141
139
  }
@@ -147,7 +145,10 @@ var Panel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
147
145
  className: prefix('header'),
148
146
  onClick: collapsible ? handleSelect : undefined,
149
147
  tabIndex: -1
150
- }, content);
148
+ }, panelTitleElement, collapsible && /*#__PURE__*/_react.default.createElement(_AngleDown.default, {
149
+ rotate: expanded ? 180 : 0,
150
+ "data-testid": "caret icon"
151
+ }));
151
152
  };
152
153
 
153
154
  var classes = merge(className, withClassPrefix({
@@ -31,6 +31,7 @@ export interface PickerToggleProps extends ToggleButtonProps {
31
31
  /** Custom caret component */
32
32
  caretAs?: React.ElementType;
33
33
  onClean?: (event: React.MouseEvent) => void;
34
+ label?: React.ReactNode;
34
35
  }
35
36
  declare const PickerToggle: RsRefForwardingComponent<typeof ToggleButton, PickerToggleProps>;
36
37
  export default PickerToggle;