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
package/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ # [5.50.0](https://github.com/rsuite/rsuite/compare/v5.49.0...v5.50.0) (2024-01-12)
2
+
3
+ ### Bug Fixes
4
+
5
+ - typo in Next.js guide ([#3555](https://github.com/rsuite/rsuite/issues/3555)) ([77d60cf](https://github.com/rsuite/rsuite/commit/77d60cfeb27e3e52b4003d72114e5164b275a3d2))
6
+
7
+ ### Features
8
+
9
+ - **cra:** supports using CRA to install javascript template ([#3538](https://github.com/rsuite/rsuite/issues/3538)) ([1b697f4](https://github.com/rsuite/rsuite/commit/1b697f4a4f61a7943351c5ca0f46a484c9ea1ac6))
10
+ - **cra:** supports using CRA to install typescript template ([#3540](https://github.com/rsuite/rsuite/issues/3540)) ([bbe3609](https://github.com/rsuite/rsuite/commit/bbe3609d4492e9186e32309f6c6ee6101d5eb83c))
11
+ - **DateRangePicker:** supports date selection by using keyboard ([#3554](https://github.com/rsuite/rsuite/issues/3554)) ([2c8d197](https://github.com/rsuite/rsuite/commit/2c8d1974e018903b3a1b874566b31c751d207493))
12
+ - **FormControl:** added support for `name` setting path of object ([#3511](https://github.com/rsuite/rsuite/issues/3511)) ([03d5396](https://github.com/rsuite/rsuite/commit/03d5396b8a23d88907be9d1864776d61a0a3b963))
13
+
1
14
  # [5.49.0](https://github.com/rsuite/rsuite/compare/v5.48.1...v5.49.0) (2023-12-29)
2
15
 
3
16
  ### Bug Fixes
@@ -1,6 +1,6 @@
1
- @import '../../styles/common';
2
- @import '../../Dropdown/styles/mixin';
3
- @import '../../styles/mixins/listbox';
1
+ @import '../../styles/common.less';
2
+ @import '../../styles/mixins/combobox.less';
3
+ @import '../../styles/mixins/listbox.less';
4
4
 
5
5
  // Cascader
6
6
  // ----------------------
@@ -123,5 +123,5 @@
123
123
  }
124
124
 
125
125
  .rs-picker-cascader-menu-caret {
126
- .dropdown-toggle-caret-common();
126
+ .combobox-indicator-icon();
127
127
  }
@@ -4,14 +4,24 @@
4
4
  @import '../../DatePicker/styles/index';
5
5
  @import '../../Calendar/styles/index';
6
6
 
7
- // Change the <caret/> & <clean/> vertical position make it align middle.
8
7
  .rs-picker-daterange {
9
- &.rs-picker-default {
10
- .rs-picker-toggle-caret,
11
- .rs-picker-toggle-clean {
12
- top: @padding-y - @picker-default-toggle-border-width;
8
+ .rs-input-group-addon {
9
+ color: var(--rs-text-secondary);
10
+
11
+ .rs-btn-close {
12
+ padding: 0;
13
+ }
14
+ }
15
+
16
+ &.rs-picker-subtle {
17
+ .rs-input-group {
18
+ border-color: transparent;
13
19
  }
14
20
  }
21
+
22
+ > .rs-input-group.rs-input-group-inside .rs-input {
23
+ padding-right: 0;
24
+ }
15
25
  }
16
26
 
17
27
  // Date range Picker
@@ -1,6 +1,7 @@
1
- @import '../../styles/common';
2
- @import '../../styles/mixins/menu';
3
- @import 'mixin';
1
+ @import '../../styles/common.less';
2
+ @import '../../styles/mixins/menu.less';
3
+ @import '../../styles/mixins/combobox.less';
4
+ @import 'mixin.less';
4
5
  @import '../../Button/styles/index.less';
5
6
 
6
7
  //
@@ -8,7 +9,7 @@
8
9
  // --------------------------------------------------
9
10
 
10
11
  .rs-dropdown-toggle-caret {
11
- .dropdown-toggle-caret-common();
12
+ .combobox-indicator-icon();
12
13
  }
13
14
 
14
15
  // The dropdown wrapper (div)
@@ -1,14 +1,3 @@
1
- .dropdown-toggle-caret-common(@right:@padding-x) {
2
- display: flex;
3
- align-items: center;
4
- margin-left: 2px;
5
- position: absolute;
6
- top: @padding-y;
7
- right: @right;
8
- height: @line-height-computed;
9
- font-size: 12px;
10
- }
11
-
12
1
  .dropdown-toggle-caret-size(@vertical,@horizontal,@caret-size) {
13
2
  padding-right: @horizontal+ @dropdown-caret-width+ @dropdown-caret-padding !important;
14
3
 
@@ -1,8 +1,9 @@
1
- @import '../../styles/common';
2
- @import '../../styles/mixins/listbox';
3
- @import (reference) '../../Button/styles/index';
4
- @import '../../Form/styles/mixin';
5
- @import 'mixin';
1
+ @import '../../styles/common.less';
2
+ @import '../../styles/mixins/listbox.less';
3
+ @import '../../styles/mixins/combobox.less';
4
+ @import (reference) '../../Button/styles/index.less';
5
+ @import '../../Form/styles/mixin.less';
6
+ @import 'mixin.less';
6
7
 
7
8
  //
8
9
  // Pickers
@@ -252,31 +253,37 @@
252
253
  }
253
254
  }
254
255
 
255
- // Picker clear button
256
- .rs-picker-toggle-clean {
257
- .dropdown-toggle-caret-common(@picker-toggle-clean-right);
256
+ .rs-picker-toggle-indicator {
257
+ // Picker clear button
258
+ .rs-picker-clean {
259
+ .combobox-indicator-icon(@picker-toggle-clean-right);
258
260
 
259
- background: inherit;
260
- color: var(--rs-text-secondary);
261
- transition: 0.2s color linear;
262
- cursor: pointer;
261
+ background: inherit;
262
+ color: var(--rs-text-secondary);
263
+ transition: 0.2s color linear;
264
+ cursor: pointer;
263
265
 
264
- &.rs-btn-close {
265
- padding: 4px 0;
266
- }
266
+ &.rs-btn-close {
267
+ padding: 4px 0;
268
+ }
267
269
 
268
- .rs-@{date-picker-prefix} &,
269
- .rs-@{date-range-picker-prefix} & {
270
- right: (@picker-toggle-clean-right + @picker-item-content-padding-vertical);
270
+ .rs-@{date-picker-prefix} &,
271
+ .rs-@{date-range-picker-prefix} & {
272
+ right: (@picker-toggle-clean-right + @picker-item-content-padding-vertical);
273
+ }
271
274
  }
272
- }
273
275
 
274
- // Picker toggle caret
275
- .rs-picker-toggle-caret {
276
- // Extend Dropdown toggle caret style
277
- .dropdown-toggle-caret-common();
276
+ // Picker toggle caret
277
+ .rs-picker-caret-icon {
278
+ // Extend Dropdown toggle caret style
279
+ .combobox-indicator-icon();
278
280
 
279
- color: var(--rs-text-secondary);
281
+ color: var(--rs-text-secondary);
282
+ }
283
+
284
+ .rs-picker-loader {
285
+ .combobox-indicator-icon();
286
+ }
280
287
  }
281
288
 
282
289
  // Picker Menu
@@ -103,13 +103,15 @@
103
103
  padding-right: (@padding-horizontal + @dropdown-caret-width + @dropdown-caret-padding);
104
104
  }
105
105
 
106
- .rs-picker-toggle-caret,
107
- .rs-picker-toggle-clean {
108
- top: @padding-vertical;
109
- right: @padding-horizontal;
110
-
111
- .rs-picker-default & {
112
- top: @padding-vertical - @picker-default-toggle-border-width;
106
+ .rs-picker-toggle-indicator {
107
+ .rs-picker-caret-icon,
108
+ .rs-picker-clean {
109
+ top: @padding-vertical;
110
+ right: @padding-horizontal;
111
+
112
+ .rs-picker-default & {
113
+ top: @padding-vertical - @picker-default-toggle-border-width;
114
+ }
113
115
  }
114
116
  }
115
117
  }
@@ -144,13 +146,15 @@
144
146
 
145
147
  padding-right: (@padding-horizontal + @calendar-caret-width + @dropdown-caret-padding);
146
148
 
147
- .rs-picker-toggle-clean,
148
- .rs-picker-toggle-caret {
149
- top: @top;
150
- right: @padding-horizontal;
149
+ .rs-picker-toggle-indicator {
150
+ .rs-picker-clean,
151
+ .rs-picker-caret-icon {
152
+ top: @top;
153
+ right: @padding-horizontal;
151
154
 
152
- .rs-picker-subtle & {
153
- top: @top - @picker-default-toggle-border-width;
155
+ .rs-picker-subtle & {
156
+ top: @top - @picker-default-toggle-border-width;
157
+ }
154
158
  }
155
159
  }
156
160
  }
package/README.md CHANGED
@@ -96,8 +96,8 @@ You can go through [full documentation][rsuite-doc-guide] or start with followin
96
96
  - [Use in Electron][demo-electron]
97
97
  - [Use in Flow][demo-flow-app]
98
98
  - [Use in TypeScript][demo-typescript-app]
99
- - [Use in Next.js][demo-nextjs]
100
- - [Use in Next.js and Typescript][demo-nextjs-typescript]
99
+ - [Use in Next.js (App)][demo-nextjs-app]
100
+ - [Use in Next.js (Pages)][demo-nextjs-pages]
101
101
  - [Use in UmiJS][demo-umi-app]
102
102
  - [Use in Snowpack][demo-snowpack]
103
103
  - [Use in Vite][demo-vite]
@@ -186,11 +186,11 @@ React Suite is [MIT licensed][license]. Copyright (c) 2016-present, HYPERS.
186
186
  [demo-multiple-themes]: https://github.com/rsuite/rsuite/tree/main/examples/custom-multiple-themes
187
187
  [demo-flow-app]: https://github.com/rsuite/rsuite/tree/main/examples/with-flow
188
188
  [demo-typescript-app]: https://github.com/rsuite/rsuite/tree/main/examples/with-typescript
189
- [demo-nextjs]: https://github.com/rsuite/rsuite/tree/main/examples/with-nextjs
189
+ [demo-nextjs-app]: https://github.com/rsuite/rsuite/tree/main/examples/with-nextjs-app
190
+ [demo-nextjs-pages]: https://github.com/rsuite/rsuite/tree/main/examples/with-nextjs-pages
190
191
  [demo-umi-app]: https://github.com/rsuite/rsuite/tree/main/examples/with-umi
191
192
  [demo-rtlcss]: https://github.com/rsuite/rsuite/tree/main/examples/with-rtlcss
192
193
  [demo-postcss-rtl]: https://github.com/rsuite/rsuite/tree/main/examples/with-postcss-rtl
193
- [demo-nextjs-typescript]: https://github.com/rsuite/rsuite/tree/main/examples/with-nextjs-typescript
194
194
  [demo-snowpack]: https://github.com/rsuite/rsuite/tree/main/examples/with-snowpack
195
195
  [demo-vite]: https://github.com/rsuite/rsuite/tree/main/examples/with-vite
196
196
  [codecov]: https://codecov.io/gh/rsuite/rsuite
@@ -7,7 +7,7 @@
7
7
  .rs-picker-tag-wrapper {
8
8
  margin-right: @dropdown-toggle-padding-right !important;
9
9
  }
10
- .rs-picker-toggle-clean {
10
+ .rs-picker-clean {
11
11
  right: (@dropdown-toggle-padding-right / 2 - 6) !important;
12
12
  }
13
13
  }
@@ -69,7 +69,10 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
69
69
  setFocus = _useState[1];
70
70
  var items = (datalist === null || datalist === void 0 ? void 0 : datalist.filter((0, _utils3.shouldDisplay)(filterBy, value))) || [];
71
71
  var hasItems = items.length > 0;
72
- var overlayRef = (0, _react.useRef)(null);
72
+ var _usePickerRef = (0, _Picker.usePickerRef)(ref),
73
+ trigger = _usePickerRef.trigger,
74
+ overlay = _usePickerRef.overlay,
75
+ root = _usePickerRef.root;
73
76
  var isMounted = (0, _utils.useIsMounted)();
74
77
 
75
78
  // Used to hover the focuse item when trigger `onKeydown`
@@ -77,14 +80,14 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
77
80
  data: datalist,
78
81
  callback: onMenuFocus,
79
82
  target: function target() {
80
- return overlayRef.current;
83
+ return overlay.current;
81
84
  }
82
85
  }),
83
86
  focusItemValue = _useFocusItemValue.focusItemValue,
84
87
  setFocusItemValue = _useFocusItemValue.setFocusItemValue,
85
88
  handleKeyDown = _useFocusItemValue.onKeyDown;
86
89
  var handleKeyDownEvent = function handleKeyDownEvent(event) {
87
- if (!overlayRef.current) {
90
+ if (!overlay.current) {
88
91
  return;
89
92
  }
90
93
  (0, _Picker.onMenuKeyDown)(event, {
@@ -109,29 +112,29 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
109
112
  }
110
113
  handleClose();
111
114
  };
112
- var handleSelect = (0, _react.useCallback)(function (item, event) {
115
+ var handleSelect = (0, _utils.useEventCallback)(function (item, event) {
113
116
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(item.value, item, event);
114
- }, [onSelect]);
115
- var handleChangeValue = (0, _react.useCallback)(function (value, event) {
117
+ });
118
+ var handleChangeValue = (0, _utils.useEventCallback)(function (value, event) {
116
119
  onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
117
- }, [onChange]);
120
+ });
118
121
  var handleChange = function handleChange(value, event) {
119
122
  setFocusItemValue('');
120
123
  setValue(value);
121
124
  setFocus(true);
122
125
  handleChangeValue(value, event);
123
126
  };
124
- var handleClose = (0, _react.useCallback)(function () {
127
+ var handleClose = (0, _utils.useEventCallback)(function () {
125
128
  if (isMounted()) {
126
129
  setFocus(false);
127
130
  onClose === null || onClose === void 0 ? void 0 : onClose();
128
131
  }
129
- }, [isMounted, onClose]);
130
- var handleOpen = (0, _react.useCallback)(function () {
132
+ });
133
+ var handleOpen = (0, _utils.useEventCallback)(function () {
131
134
  setFocus(true);
132
135
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
133
- }, [onOpen]);
134
- var handleItemSelect = (0, _react.useCallback)(function (nextItemValue, item, event) {
136
+ });
137
+ var handleItemSelect = (0, _utils.useEventCallback)(function (nextItemValue, item, event) {
135
138
  setValue(nextItemValue);
136
139
  setFocusItemValue(nextItemValue);
137
140
  handleSelect(item, event);
@@ -139,29 +142,24 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
139
142
  handleChangeValue(nextItemValue, event);
140
143
  }
141
144
  handleClose();
142
- }, [value, setValue, handleSelect, handleChangeValue, handleClose, setFocusItemValue]);
143
- var handleInputFocus = (0, _react.useCallback)(function (event) {
145
+ });
146
+ var handleInputFocus = (0, _utils.useEventCallback)(function (event) {
144
147
  onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
145
148
  handleOpen();
146
- }, [onFocus, handleOpen]);
147
- var handleInputBlur = (0, _react.useCallback)(function (event) {
149
+ });
150
+ var handleInputBlur = (0, _utils.useEventCallback)(function (event) {
148
151
  setTimeout(handleClose, 300);
149
152
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
150
- }, [onBlur, handleClose]);
153
+ });
151
154
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
152
155
  withClassPrefix = _useClassNames.withClassPrefix,
153
156
  merge = _useClassNames.merge;
154
157
  var classes = merge(className, withClassPrefix({
155
158
  disabled: disabled
156
159
  }));
157
- var triggerRef = (0, _react.useRef)(null);
158
160
  var _partitionHTMLProps = (0, _utils.partitionHTMLProps)((0, _omit.default)(rest, _Picker.pickTriggerPropKeys)),
159
161
  htmlInputProps = _partitionHTMLProps[0],
160
162
  restProps = _partitionHTMLProps[1];
161
- (0, _Picker.usePublicMethods)(ref, {
162
- triggerRef: triggerRef,
163
- overlayRef: overlayRef
164
- });
165
163
  var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
166
164
  var left = positionProps.left,
167
165
  top = positionProps.top,
@@ -182,11 +180,11 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
182
180
  className: menuClassName
183
181
  });
184
182
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
185
- ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
183
+ ref: (0, _utils.mergeRefs)(overlay, speakerRef),
186
184
  style: styles,
187
185
  className: className,
188
186
  onKeyDown: handleKeyDownEvent,
189
- target: triggerRef,
187
+ target: trigger,
190
188
  autoWidth: menuAutoWidth
191
189
  }, renderMenu ? renderMenu(menu) : menu);
192
190
  };
@@ -197,7 +195,7 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
197
195
  }, typeof value === 'undefined' ? defaultValue : value);
198
196
  }
199
197
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
200
- ref: triggerRef,
198
+ ref: trigger,
201
199
  placement: placement,
202
200
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
203
201
  trigger: ['click', 'focus'],
@@ -205,7 +203,8 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
205
203
  speaker: renderDropdownMenu
206
204
  }, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
207
205
  className: classes,
208
- style: style
206
+ style: style,
207
+ ref: root
209
208
  }, restProps), /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({}, htmlInputProps, {
210
209
  id: id,
211
210
  disabled: disabled,
@@ -7,7 +7,11 @@ export interface CalendarProps extends WithAsProps {
7
7
  value?: Date;
8
8
  /** Default value */
9
9
  defaultValue?: Date;
10
- /** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
10
+ /**
11
+ * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
12
+ *
13
+ * @see https://en.wikipedia.org/wiki/ISO_week_date
14
+ */
11
15
  isoWeek?: boolean;
12
16
  /** Display a compact calendar */
13
17
  compact?: boolean;
@@ -32,7 +32,11 @@ export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivE
32
32
  hideSeconds?: (second: number, date: Date) => boolean;
33
33
  /** The value that mouse hover on in range selection */
34
34
  hoverRangeValue?: [Date, Date];
35
- /** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
35
+ /**
36
+ * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
37
+ *
38
+ * @see https://en.wikipedia.org/wiki/ISO_week_date
39
+ */
36
40
  isoWeek?: boolean;
37
41
  /** Limit showing how many years in the future */
38
42
  limitEndYear?: number;
@@ -82,10 +82,12 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
82
82
  var _useState = (0, _react.useState)(false),
83
83
  active = _useState[0],
84
84
  setActive = _useState[1];
85
- var triggerRef = (0, _react.useRef)(null);
86
- var overlayRef = (0, _react.useRef)(null);
87
- var targetRef = (0, _react.useRef)(null);
88
- var searchInputRef = (0, _react.useRef)(null);
85
+ var _usePickerRef = (0, _Picker.usePickerRef)(ref),
86
+ trigger = _usePickerRef.trigger,
87
+ root = _usePickerRef.root,
88
+ target = _usePickerRef.target,
89
+ overlay = _usePickerRef.overlay,
90
+ searchInput = _usePickerRef.searchInput;
89
91
  var _ref = (0, _utils2.useControlled)(valueProp, defaultValue),
90
92
  value = _ref[0],
91
93
  setValue = _ref[1];
@@ -126,11 +128,6 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
126
128
  columnsToDisplay = _usePaths.columnsToDisplay,
127
129
  pathTowardsActiveItem = _usePaths.pathTowardsActiveItem,
128
130
  pathTowardsSelectedItem = _usePaths.pathTowardsSelectedItem;
129
- (0, _Picker.usePublicMethods)(ref, {
130
- triggerRef: triggerRef,
131
- overlayRef: overlayRef,
132
- targetRef: targetRef
133
- });
134
131
  var _useCustom = (0, _utils2.useCustom)('Picker', overrideLocale),
135
132
  locale = _useCustom.locale,
136
133
  rtl = _useCustom.rtl;
@@ -145,7 +142,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
145
142
  var _useState3 = (0, _react.useState)(''),
146
143
  searchKeyword = _useState3[0],
147
144
  setSearchKeyword = _useState3[1];
148
- var someKeyword = (0, _react.useCallback)(function (item, keyword) {
145
+ var someKeyword = function someKeyword(item, keyword) {
149
146
  if (item[labelKey].match(new RegExp((0, _utils2.getSafeRegExpString)(keyword || searchKeyword), 'i'))) {
150
147
  return true;
151
148
  }
@@ -154,8 +151,8 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
154
151
  return true;
155
152
  }
156
153
  return false;
157
- }, [labelKey, parentMap, searchKeyword]);
158
- var getSearchResult = (0, _react.useCallback)(function (keyword) {
154
+ };
155
+ var getSearchResult = function getSearchResult(keyword) {
159
156
  var items = [];
160
157
  var result = flattenedData.filter(function (item) {
161
158
  if (!parentSelectable && item[childrenKey]) {
@@ -172,7 +169,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
172
169
  }
173
170
  }
174
171
  return items;
175
- }, [childrenKey, flattenedData, someKeyword, parentSelectable]);
172
+ };
176
173
 
177
174
  // Used to hover the focuse item when trigger `onKeydown`
178
175
  var _useFocusItemValue = (0, _Picker.useFocusItemValue)(value, {
@@ -181,7 +178,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
181
178
  valueKey: valueKey,
182
179
  defaultLayer: pathTowardsSelectedItem !== null && pathTowardsSelectedItem !== void 0 && pathTowardsSelectedItem.length ? pathTowardsSelectedItem.length - 1 : 0,
183
180
  target: function target() {
184
- return overlayRef.current;
181
+ return overlay.current;
185
182
  },
186
183
  getParent: function getParent(item) {
187
184
  return parentMap.get(item);
@@ -197,7 +194,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
197
194
  setLayer = _useFocusItemValue.setLayer,
198
195
  setKeys = _useFocusItemValue.setKeys,
199
196
  onFocusItem = _useFocusItemValue.onKeyDown;
200
- var handleSearch = (0, _react.useCallback)(function (value, event) {
197
+ var handleSearch = (0, _utils2.useEventCallback)(function (value, event) {
201
198
  var items = getSearchResult(value);
202
199
  setSearchKeyword(value);
203
200
  onSearch === null || onSearch === void 0 ? void 0 : onSearch(value, event);
@@ -210,37 +207,37 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
210
207
  setLayer(0);
211
208
  setKeys([]);
212
209
  }
213
- }, [getSearchResult, onSearch, setFocusItemValue, setKeys, setLayer, valueKey]);
214
- var handleEntered = (0, _react.useCallback)(function () {
215
- if (!targetRef.current) {
210
+ });
211
+ var handleEntered = (0, _utils2.useEventCallback)(function () {
212
+ if (!target.current) {
216
213
  return;
217
214
  }
218
215
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
219
216
  setActive(true);
220
- }, [onOpen]);
221
- var handleExited = (0, _react.useCallback)(function () {
222
- if (!targetRef.current) {
217
+ });
218
+ var handleExited = (0, _utils2.useEventCallback)(function () {
219
+ if (!target.current) {
223
220
  return;
224
221
  }
225
222
  onClose === null || onClose === void 0 ? void 0 : onClose();
226
223
  setActive(false);
227
224
  setSearchKeyword('');
228
- }, [onClose]);
229
- var handleClose = (0, _react.useCallback)(function () {
230
- var _triggerRef$current, _targetRef$current, _targetRef$current$fo;
231
- (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.close();
225
+ });
226
+ var handleClose = (0, _utils2.useEventCallback)(function () {
227
+ var _trigger$current, _target$current, _target$current$focus;
228
+ (_trigger$current = trigger.current) === null || _trigger$current === void 0 ? void 0 : _trigger$current.close();
232
229
 
233
230
  // The focus is on the trigger button after closing
234
- (_targetRef$current = targetRef.current) === null || _targetRef$current === void 0 ? void 0 : (_targetRef$current$fo = _targetRef$current.focus) === null || _targetRef$current$fo === void 0 ? void 0 : _targetRef$current$fo.call(_targetRef$current);
235
- }, []);
236
- var handleClean = (0, _react.useCallback)(function (event) {
237
- if (disabled || !targetRef.current) {
231
+ (_target$current = target.current) === null || _target$current === void 0 ? void 0 : (_target$current$focus = _target$current.focus) === null || _target$current$focus === void 0 ? void 0 : _target$current$focus.call(_target$current);
232
+ });
233
+ var handleClean = (0, _utils2.useEventCallback)(function (event) {
234
+ if (disabled || !target.current) {
238
235
  return;
239
236
  }
240
237
  setValue(null);
241
238
  onChange === null || onChange === void 0 ? void 0 : onChange(null, event);
242
- }, [disabled, onChange, setValue]);
243
- var handleMenuPressEnter = (0, _react.useCallback)(function (event) {
239
+ });
240
+ var handleMenuPressEnter = (0, _utils2.useEventCallback)(function (event) {
244
241
  var focusItem = (0, _treeUtils.findNodeOfTree)(data, function (item) {
245
242
  return item[valueKey] === focusItemValue;
246
243
  });
@@ -256,20 +253,20 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
256
253
  }
257
254
  handleClose();
258
255
  }
259
- }, [childrenKey, data, focusItemValue, handleClose, onChange, pathTowardsActiveItem, setLayer, setValue, value, valueKey, onSelect]);
256
+ });
260
257
  var onPickerKeyDown = (0, _Picker.useToggleKeyDownEvent)((0, _extends3.default)({
261
258
  toggle: !focusItemValue || !active,
262
- triggerRef: triggerRef,
263
- targetRef: targetRef,
264
- overlayRef: overlayRef,
265
- searchInputRef: searchInputRef,
259
+ trigger: trigger,
260
+ target: target,
261
+ overlay: overlay,
262
+ searchInput: searchInput,
266
263
  active: active,
267
264
  onExit: handleClean,
268
265
  onMenuKeyDown: onFocusItem,
269
266
  onMenuPressEnter: handleMenuPressEnter
270
267
  }, rest));
271
- var handleSelect = function handleSelect(node, cascadePaths, isLeafNode, event) {
272
- var _node$childrenKey, _triggerRef$current2;
268
+ var handleSelect = (0, _utils2.useEventCallback)(function (node, cascadePaths, isLeafNode, event) {
269
+ var _node$childrenKey, _trigger$current2;
273
270
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, cascadePaths, event);
274
271
  setActiveItem(node);
275
272
  var nextValue = node[valueKey];
@@ -307,20 +304,20 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
307
304
  }
308
305
 
309
306
  // Update menu position
310
- (_triggerRef$current2 = triggerRef.current) === null || _triggerRef$current2 === void 0 ? void 0 : _triggerRef$current2.updatePosition();
311
- };
307
+ (_trigger$current2 = trigger.current) === null || _trigger$current2 === void 0 ? void 0 : _trigger$current2.updatePosition();
308
+ });
312
309
 
313
310
  /**
314
311
  * The search structure option is processed after being selected.
315
312
  */
316
- var handleSearchRowSelect = function handleSearchRowSelect(node, nodes, event) {
313
+ var handleSearchRowSelect = (0, _utils2.useEventCallback)(function (node, nodes, event) {
317
314
  var nextValue = node[valueKey];
318
315
  handleClose();
319
316
  setSearchKeyword('');
320
317
  setValue(nextValue);
321
318
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(node, nodes, event);
322
319
  onChange === null || onChange === void 0 ? void 0 : onChange(nextValue, event);
323
- };
320
+ });
324
321
  var renderSearchRow = function renderSearchRow(item, key) {
325
322
  var regx = new RegExp((0, _utils2.getSafeRegExpString)(searchKeyword), 'ig');
326
323
  var nodes = (0, _treeUtils.getPathTowardsItem)(item, function (item) {
@@ -397,16 +394,16 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
397
394
  inline: inline
398
395
  }));
399
396
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
400
- ref: (0, _utils2.mergeRefs)(overlayRef, speakerRef),
397
+ ref: (0, _utils2.mergeRefs)(overlay, speakerRef),
401
398
  className: classes,
402
399
  style: styles,
403
- target: triggerRef,
400
+ target: trigger,
404
401
  onKeyDown: onPickerKeyDown
405
402
  }, searchable && /*#__PURE__*/_react.default.createElement(_Picker.SearchBar, {
406
403
  placeholder: locale === null || locale === void 0 ? void 0 : locale.searchPlaceholder,
407
404
  onChange: handleSearch,
408
405
  value: searchKeyword,
409
- inputRef: searchInputRef
406
+ inputRef: searchInput
410
407
  }), renderSearchResultPanel(), searchKeyword === '' && /*#__PURE__*/_react.default.createElement(_DropdownMenu.default, {
411
408
  id: id ? id + "-listbox" : undefined,
412
409
  menuWidth: menuWidth,
@@ -465,17 +462,18 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
465
462
  }
466
463
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
467
464
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
468
- ref: triggerRef,
465
+ ref: trigger,
469
466
  placement: placement,
470
467
  onEntered: (0, _utils2.createChainedFunction)(handleEntered, onEnter),
471
468
  onExited: (0, _utils2.createChainedFunction)(handleExited, onExited),
472
469
  speaker: renderDropdownMenu
473
470
  }, /*#__PURE__*/_react.default.createElement(Component, {
474
471
  className: classes,
475
- style: style
472
+ style: style,
473
+ ref: root
476
474
  }, /*#__PURE__*/_react.default.createElement(_Picker.PickerToggle, (0, _extends3.default)({}, (0, _omit.default)(rest, [].concat(_Picker.omitTriggerPropKeys, usedClassNamePropKeys)), {
477
475
  id: id,
478
- ref: targetRef,
476
+ ref: target,
479
477
  as: toggleAs,
480
478
  appearance: appearance,
481
479
  disabled: disabled,
@@ -1,4 +1,4 @@
1
- import React, { Ref } from 'react';
1
+ import React from 'react';
2
2
  import { PickerLocale } from '../locales';
3
3
  import { PickerHandle, PickerToggleProps } from '../Picker';
4
4
  import { ItemDataType, FormControlPickerProps } from '../@types/common';
@@ -12,7 +12,7 @@ export interface CheckPickerProps<T> extends FormControlPickerProps<T[], PickerL
12
12
  }
13
13
  export interface CheckPickerComponent {
14
14
  <T>(props: CheckPickerProps<T> & {
15
- ref?: Ref<PickerHandle>;
15
+ ref?: React.Ref<PickerHandle>;
16
16
  }): JSX.Element | null;
17
17
  displayName?: string;
18
18
  propTypes?: React.WeakValidationMap<CheckPickerProps<any>>;