rsuite 5.4.4 → 5.6.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 (91) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/Carousel/styles/index.less +1 -0
  3. package/CheckTreePicker/styles/index.less +51 -50
  4. package/Modal/styles/mixin.less +1 -0
  5. package/Picker/styles/mixin.less +3 -2
  6. package/README.md +1 -1
  7. package/Sidenav/styles/index.less +54 -59
  8. package/TreePicker/styles/index.less +3 -3
  9. package/cjs/Affix/Affix.js +1 -0
  10. package/cjs/Calendar/TimeDropdown.js +7 -4
  11. package/cjs/Carousel/Carousel.d.ts +5 -1
  12. package/cjs/Carousel/Carousel.js +22 -16
  13. package/cjs/Cascader/Cascader.js +2 -2
  14. package/cjs/Cascader/DropdownMenu.js +1 -1
  15. package/cjs/CheckTreePicker/CheckTreePicker.js +17 -12
  16. package/cjs/CheckTreePicker/utils.d.ts +3 -3
  17. package/cjs/CheckTreePicker/utils.js +2 -2
  18. package/cjs/DOMHelper/index.d.ts +4 -4
  19. package/cjs/DatePicker/DatePicker.js +15 -9
  20. package/cjs/DateRangePicker/Calendar.js +2 -16
  21. package/cjs/DateRangePicker/DateRangePicker.js +1 -1
  22. package/cjs/Dropdown/Dropdown.d.ts +5 -0
  23. package/cjs/Dropdown/test/Dropdown.test.d.ts +1 -0
  24. package/cjs/Dropdown/test/Dropdown.test.js +30 -0
  25. package/cjs/InputNumber/InputNumber.d.ts +1 -1
  26. package/cjs/InputNumber/InputNumber.js +36 -6
  27. package/cjs/InputNumber/test/InputNumber.test.d.ts +1 -0
  28. package/cjs/InputNumber/test/InputNumber.test.js +14 -0
  29. package/cjs/InputPicker/InputAutosize.js +3 -1
  30. package/cjs/InputPicker/InputPicker.js +6 -2
  31. package/cjs/List/ListItem.js +13 -11
  32. package/cjs/Menu/MenuItem.js +14 -11
  33. package/cjs/MultiCascader/MultiCascader.js +1 -0
  34. package/cjs/Picker/PickerOverlay.js +4 -1
  35. package/cjs/RangeSlider/RangeSlider.d.ts +12 -2
  36. package/cjs/RangeSlider/RangeSlider.js +35 -12
  37. package/cjs/Ripple/Ripple.js +17 -9
  38. package/cjs/TreePicker/TreePicker.js +15 -11
  39. package/cjs/Uploader/UploadTrigger.js +3 -1
  40. package/cjs/Uploader/Uploader.js +3 -1
  41. package/cjs/utils/treeUtils.d.ts +3 -3
  42. package/cjs/utils/treeUtils.js +4 -3
  43. package/cjs/utils/useElementResize.d.ts +1 -1
  44. package/cjs/utils/useElementResize.js +5 -2
  45. package/dist/rsuite-rtl.css +114 -123
  46. package/dist/rsuite-rtl.min.css +1 -1
  47. package/dist/rsuite-rtl.min.css.map +1 -1
  48. package/dist/rsuite.css +114 -123
  49. package/dist/rsuite.js +372 -53
  50. package/dist/rsuite.js.map +1 -1
  51. package/dist/rsuite.min.css +1 -1
  52. package/dist/rsuite.min.css.map +1 -1
  53. package/dist/rsuite.min.js +1 -1
  54. package/dist/rsuite.min.js.map +1 -1
  55. package/esm/Affix/Affix.js +1 -0
  56. package/esm/Calendar/TimeDropdown.js +7 -4
  57. package/esm/Carousel/Carousel.d.ts +5 -1
  58. package/esm/Carousel/Carousel.js +23 -17
  59. package/esm/Cascader/Cascader.js +2 -2
  60. package/esm/Cascader/DropdownMenu.js +1 -1
  61. package/esm/CheckTreePicker/CheckTreePicker.js +17 -12
  62. package/esm/CheckTreePicker/utils.d.ts +3 -3
  63. package/esm/CheckTreePicker/utils.js +2 -2
  64. package/esm/DOMHelper/index.d.ts +4 -4
  65. package/esm/DatePicker/DatePicker.js +15 -9
  66. package/esm/DateRangePicker/Calendar.js +2 -16
  67. package/esm/DateRangePicker/DateRangePicker.js +1 -1
  68. package/esm/Dropdown/Dropdown.d.ts +5 -0
  69. package/esm/Dropdown/test/Dropdown.test.d.ts +1 -0
  70. package/esm/Dropdown/test/Dropdown.test.js +22 -0
  71. package/esm/InputNumber/InputNumber.d.ts +1 -1
  72. package/esm/InputNumber/InputNumber.js +38 -7
  73. package/esm/InputNumber/test/InputNumber.test.d.ts +1 -0
  74. package/esm/InputNumber/test/InputNumber.test.js +7 -0
  75. package/esm/InputPicker/InputAutosize.js +3 -1
  76. package/esm/InputPicker/InputPicker.js +6 -2
  77. package/esm/List/ListItem.js +13 -11
  78. package/esm/Menu/MenuItem.js +14 -11
  79. package/esm/MultiCascader/MultiCascader.js +1 -0
  80. package/esm/Picker/PickerOverlay.js +4 -1
  81. package/esm/RangeSlider/RangeSlider.d.ts +12 -2
  82. package/esm/RangeSlider/RangeSlider.js +35 -12
  83. package/esm/Ripple/Ripple.js +17 -9
  84. package/esm/TreePicker/TreePicker.js +15 -11
  85. package/esm/Uploader/UploadTrigger.js +3 -1
  86. package/esm/Uploader/Uploader.js +3 -1
  87. package/esm/utils/treeUtils.d.ts +3 -3
  88. package/esm/utils/treeUtils.js +6 -3
  89. package/esm/utils/useElementResize.d.ts +1 -1
  90. package/esm/utils/useElementResize.js +5 -2
  91. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -1,3 +1,51 @@
1
+ # [5.6.0](https://github.com/rsuite/rsuite/compare/v5.5.2...v5.6.0) (2022-02-10)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **DatePicker:** fixed oneTap to work in month view ([#2342](https://github.com/rsuite/rsuite/issues/2342)) ([d5368cd](https://github.com/rsuite/rsuite/commit/d5368cdfb2a6386bfb509a6316520e450f35f2b4))
6
+ - handle some null value branch ([#2323](https://github.com/rsuite/rsuite/issues/2323)) ([3ffd1d9](https://github.com/rsuite/rsuite/commit/3ffd1d966d5fd7f0a4f42bb8b08bf0cb65955fef))
7
+
8
+ ### Features
9
+
10
+ - **Carousel:** Expose active index ([#2338](https://github.com/rsuite/rsuite/issues/2338)) ([beac483](https://github.com/rsuite/rsuite/commit/beac48395c9fc7c30efb3f49f81e8969cd3ee71d))
11
+
12
+ ## [5.5.2](https://github.com/rsuite/rsuite/compare/v5.5.1...v5.5.2) (2022-01-27)
13
+
14
+ ### Features
15
+
16
+ - **Cascader:** add parent node in serach result while parentSelectable ([#2313](https://github.com/rsuite/rsuite/issues/2313)) ([e677bb6](https://github.com/rsuite/rsuite/commit/e677bb6b75d0cc26dafedc8e5326d413969c2867))
17
+
18
+ ## [5.5.1](https://github.com/rsuite/rsuite/compare/v5.5.0...v5.5.1) (2022-01-21)
19
+
20
+ ### Bug Fixes
21
+
22
+ - **Carousel:** add a flex-wrap property on toolbar buttons ([#2302](https://github.com/rsuite/rsuite/issues/2302)) ([a9a9113](https://github.com/rsuite/rsuite/commit/a9a911378c4aaeba43233dd3acdc05913a9bf6ae))
23
+ - **CheckTreePicker:** fix CheckTreePicker label style ([#2304](https://github.com/rsuite/rsuite/issues/2304)) ([07eb5ac](https://github.com/rsuite/rsuite/commit/07eb5acd4e8283529619ad2b4d6003b0c4f8614d))
24
+ - **DateRangePicker:** fix month not selectable on calendar ([#2312](https://github.com/rsuite/rsuite/issues/2312)) ([5199845](https://github.com/rsuite/rsuite/commit/5199845ee435e923c807da5e0813f4ba06a86798))
25
+ - **Sidenav:** hide focus ring when interacting with mouse ([#2311](https://github.com/rsuite/rsuite/issues/2311)) ([9413bc9](https://github.com/rsuite/rsuite/commit/9413bc9a48fb8a3f915cc811b3392ba4e65b0b70))
26
+
27
+ ### Performance Improvements
28
+
29
+ - Responsive for small screen ([#2293](https://github.com/rsuite/rsuite/issues/2293)) ([cadc42e](https://github.com/rsuite/rsuite/commit/cadc42e39baee174ff7d5577ea933cb471ef5bd0))
30
+
31
+ # [5.5.0](https://github.com/rsuite/rsuite/compare/v5.4.4...v5.5.0) (2022-01-13)
32
+
33
+ ### Bug Fixes
34
+
35
+ - **Dropdown:** infer toggleAs component props ([#2299](https://github.com/rsuite/rsuite/issues/2299)) ([84611cc](https://github.com/rsuite/rsuite/commit/84611cc6f88e1d9cd712bc3f08be559d0a146ba0))
36
+ - **InputNumber:** inherit html input attributes ([#2298](https://github.com/rsuite/rsuite/issues/2298)) ([d7622ee](https://github.com/rsuite/rsuite/commit/d7622eed72b36ed15e91f606027d2e540391bdc7))
37
+ - **MultiCascader:** fix not rendering the count of selected values ([#2289](https://github.com/rsuite/rsuite/issues/2289)) ([324e90c](https://github.com/rsuite/rsuite/commit/324e90c8499adf58cb25083fd5c99fe98eb9ecba))
38
+ - **Tree:** fix dragNode has cyclic object ([#2281](https://github.com/rsuite/rsuite/issues/2281)) ([26cbaf2](https://github.com/rsuite/rsuite/commit/26cbaf2fd92ab562174e19cf55388c01fe22143a)), closes [#2268](https://github.com/rsuite/rsuite/issues/2268)
39
+
40
+ ### Features
41
+
42
+ - **InputNumber:** support keyboard interaction ([#2294](https://github.com/rsuite/rsuite/issues/2294)) ([46993e2](https://github.com/rsuite/rsuite/commit/46993e235ca3d3ee8b6faa16a5fa11a8ed544e3b))
43
+ - **RangeSlider:** add `constraint` prop ([#2291](https://github.com/rsuite/rsuite/issues/2291)) ([a2d38a8](https://github.com/rsuite/rsuite/commit/a2d38a8efe4f85c28ce1f4ee79a89eda1e1cf7b0))
44
+
45
+ ### Performance Improvements
46
+
47
+ - **styles:** simplify compound selectors over 4 levels ([#2282](https://github.com/rsuite/rsuite/issues/2282)) ([304e8da](https://github.com/rsuite/rsuite/commit/304e8da0c2057d148bbad36674aba33382439949))
48
+
1
49
  ## [5.4.4](https://github.com/rsuite/rsuite/compare/v5.4.3...v5.4.4) (2022-01-06)
2
50
 
3
51
  ### Bug Fixes
@@ -53,6 +53,7 @@
53
53
 
54
54
  > ul {
55
55
  display: flex;
56
+ flex-wrap: wrap;
56
57
  list-style: none;
57
58
  margin: 0;
58
59
  padding: 0;
@@ -1,6 +1,7 @@
1
1
  @import '../../styles/common';
2
- @import '../../Picker/styles/mixin';
2
+ @import '../../Picker/styles/index';
3
3
  @import '../../TreePicker/styles/mixin';
4
+ @import '../../Checkbox/styles/index';
4
5
 
5
6
  // **Check Tree Picker
6
7
  // **----------------------
@@ -23,38 +24,16 @@
23
24
  }
24
25
  }
25
26
  }
26
- }
27
-
28
- .rs-check-tree-node {
29
- position: relative;
30
- font-size: @picker-tree-node-font-size;
31
- line-height: @picker-tree-node-line-height;
32
-
33
- &-label {
34
- .rs-check-item {
35
- display: inline-block;
36
-
37
- .rs-picker-menu & {
38
- display: block;
39
- }
40
- }
41
27
 
42
- &:focus .rs-check-item .rs-checkbox-checker > label {
43
- .picker-item-hover();
44
- }
45
-
46
- .rs-check-item.rs-checkbox-checked .rs-checkbox-checker > label {
47
- .picker-item-active();
48
- }
49
-
50
- .rs-check-item .rs-checkbox-checker > label {
28
+ .rs-check-item .rs-checkbox-checker {
29
+ > label {
51
30
  text-align: left;
52
31
  position: relative;
53
32
  margin: 0;
54
33
  //padding-left: 16px;
55
34
  padding: @picker-tree-node-padding-vertical @picker-tree-node-padding-horizontal;
56
- //text gap + checkbox space
57
- padding-left: 58px; // 10px + 36px + 12px
35
+ //text gap + checkbox space + label gap
36
+ padding-left: 50px; // 10px + 36px + 4px
58
37
 
59
38
  &::before {
60
39
  content: '';
@@ -65,39 +44,61 @@
65
44
 
66
45
  height: 100%;
67
46
  top: 0;
68
- margin-left: -58px; // 10px + 36px + 12px
47
+ margin-left: -52px; // 10px + 36px + 6px
69
48
  }
49
+ }
70
50
 
71
- .rs-checkbox-wrapper {
72
- left: (@checkbox-sense-width + 10px);
73
- }
51
+ .rs-checkbox-wrapper {
52
+ left: (@checkbox-sense-width + 10px);
53
+ }
54
+ }
55
+ }
74
56
 
75
- // Only has the first level
76
- .rs-check-tree-without-children & {
77
- padding-left: 34px; //text gap + checkbox space
57
+ // Only has the first level
58
+ .rs-check-tree-without-children .rs-check-item .rs-checkbox-checker {
59
+ > label {
60
+ padding-left: 32px; //text gap + checkbox space
78
61
 
79
- &::before {
80
- width: 28px;
81
- margin-left: -36px;
82
- }
62
+ &::before {
63
+ width: 28px;
64
+ margin-left: -34px;
65
+ }
66
+ }
83
67
 
84
- .rs-checkbox-wrapper {
85
- left: 0;
86
- }
87
- }
68
+ .rs-checkbox-wrapper {
69
+ left: 0;
70
+ }
71
+ }
72
+
73
+ .rs-check-tree-node {
74
+ position: relative;
75
+ font-size: @picker-tree-node-font-size;
76
+ line-height: @picker-tree-node-line-height;
77
+
78
+ .rs-check-item {
79
+ display: inline-block;
80
+
81
+ .rs-picker-menu & {
82
+ display: block;
88
83
  }
89
84
  }
90
85
 
86
+ &:focus .rs-check-item .rs-checkbox-checker > label {
87
+ .picker-item-hover();
88
+ }
89
+
90
+ .rs-check-item.rs-checkbox-checked .rs-checkbox-checker > label {
91
+ .picker-item-active();
92
+ }
93
+
91
94
  // Uncheckable state
92
- &-all-uncheckable > .rs-check-tree-node-label {
93
- .rs-check-item .rs-checkbox-checker > label {
94
- padding-left: 22px; // 10px + 12px
95
+ &-all-uncheckable > .rs-check-item .rs-checkbox-checker > label {
96
+ padding-left: 22px; // 10px + 12px
95
97
 
96
- &::before {
97
- width: 14px;
98
- margin-left: 0;
99
- left: 0;
100
- }
98
+ &::before {
99
+ width: 14px;
100
+ margin-left: 0;
101
+ left: 0;
101
102
  }
102
103
  }
103
104
  }
@@ -1,3 +1,4 @@
1
1
  .content-width(@width) {
2
2
  width: @width;
3
+ max-width: calc(100% - 10px);
3
4
  }
@@ -265,7 +265,8 @@
265
265
  line-height: @line-height;
266
266
  }
267
267
 
268
- .rs-picker-input.rs-picker-tag & ~ .rs-picker-tag-wrapper {
268
+ // FIXME Bad design. Should not set search input styles in a mixin that is used in picker buttons.
269
+ .rs-picker-tag & ~ .rs-picker-tag-wrapper {
269
270
  padding-bottom: @padding-vertical - 3px;
270
271
 
271
272
  .rs-tag {
@@ -278,7 +279,7 @@
278
279
  font-size: @font-size;
279
280
  }
280
281
 
281
- .rs-picker-search-input input {
282
+ input {
282
283
  height: @line-height * @font-size - 2px;
283
284
  }
284
285
  }
package/README.md CHANGED
@@ -147,7 +147,7 @@ React Suite is [MIT licensed][license]. Copyright (c) 2016-present, HYPERS.
147
147
  [rsuite-design]: https://rsuitejs.com/design/default
148
148
  [live-preview-on-codesandbox]: https://codesandbox.io/s/rsuite-template-5vq6zo2z5l
149
149
  [rsuite-doc-guide]: https://rsuitejs.com/en/guide/introduction
150
- [rsuite-doc-guide-themes]: https://rsuitejs.com/en/guide/themes
150
+ [rsuite-doc-guide-themes]: https://rsuitejs.com/en/guide/customization
151
151
  [rsuite-doc-guide-intl]: https://rsuitejs.com/en/guide/intl
152
152
  [rsuite-doc-guide-rtl]: https://rsuitejs.com/en/guide/rtl
153
153
  [rsuite-components-overview]: https://rsuitejs.com/en/components/overview
@@ -37,34 +37,59 @@
37
37
  margin: 0 !important;
38
38
  }
39
39
 
40
- .high-contrast-mode({
41
- .rs-dropdown-toggle,
42
- .rs-dropdown-menu {
43
- border: none;
44
- }
45
- });
40
+ // <Dropdown> within <Sidenav>
41
+ > .rs-dropdown {
42
+ // Submenu toggle
43
+ .rs-dropdown-item-toggle {
44
+ display: block;
45
+ width: 100%;
46
+ text-align: start;
47
+ background: none;
48
+ padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
49
+ position: relative;
46
50
 
47
- .rs-dropdown-item-toggle {
48
- display: block;
49
- width: 100%;
50
- text-align: start;
51
- background: none;
51
+ .rs-sidenav-collapse-in & {
52
+ padding-left: @sidenav-level2-retract;
53
+ }
52
54
 
53
- &:focus {
54
- outline: 0;
55
- }
55
+ &:focus {
56
+ outline: 0;
57
+ }
56
58
 
57
- &:focus-visible {
58
- .focus-ring(inset);
59
+ &:focus-visible {
60
+ .focus-ring(inset);
59
61
 
60
- .high-contrast-mode({
61
- .focus-ring(slim-inset);
62
- });
62
+ .high-contrast-mode({
63
+ .focus-ring(slim-inset);
64
+ });
63
65
 
64
- z-index: 1;
66
+ z-index: 1;
67
+ }
68
+
69
+ // Submenu toggle icon
70
+ &-icon {
71
+ position: absolute;
72
+ right: @sidenav-padding-horizontal;
73
+ top: @sidenav-children-padding-vertical;
74
+ width: auto;
75
+ height: @sidenav-dropdown-toggle-caret-width;
76
+ transform: rotate(90deg);
77
+ }
78
+ }
79
+
80
+ // Expanded submenu toggle icon
81
+ .rs-dropdown-item-expand .rs-dropdown-item-toggle-icon {
82
+ transform: rotate(270deg);
65
83
  }
66
84
  }
67
85
 
86
+ .high-contrast-mode({
87
+ .rs-dropdown-toggle,
88
+ .rs-dropdown-menu {
89
+ border: none;
90
+ }
91
+ });
92
+
68
93
  .rs-sidenav-item:focus-visible {
69
94
  .focus-ring(inset);
70
95
 
@@ -112,7 +137,7 @@
112
137
 
113
138
  // Sidenav is usually placed by the left/right edge of the page
114
139
  // thus use an inset focus ring to prevent overflow clipping
115
- &:focus {
140
+ &:focus-visible {
116
141
  .focus-ring(inset);
117
142
  }
118
143
 
@@ -225,32 +250,17 @@
225
250
  transform: rotate(180deg);
226
251
  }
227
252
 
228
- .rs-dropdown-item.rs-dropdown-item-expand
229
- > .rs-dropdown-item-toggle
230
- > .rs-dropdown-item-toggle-icon {
231
- transform: rotate(270deg);
232
- }
233
-
234
253
  // Dropdown menu
235
- > .rs-dropdown-menu {
254
+ .rs-dropdown-menu {
236
255
  .reset-sidenav-dropdown-menu();
256
+ }
237
257
 
238
- // Submenu
239
- .rs-dropdown-item-submenu {
240
- padding: 0;
241
-
242
- > .rs-dropdown-menu-toggle {
243
- display: block;
244
- padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
245
- }
246
-
247
- > .rs-dropdown-menu {
248
- .reset-sidenav-dropdown-menu();
249
- }
258
+ // Submenu
259
+ .rs-dropdown-item-submenu {
260
+ padding: 0;
250
261
 
251
- &:hover {
252
- background-color: transparent;
253
- }
262
+ &:hover {
263
+ background-color: transparent;
254
264
  }
255
265
  }
256
266
  }
@@ -283,21 +293,6 @@
283
293
  // @warn Here we can only use absolute positioning because of the limitations of using <Dropdown/> component.
284
294
 
285
295
  .rs-dropdown-item-submenu {
286
- > .rs-dropdown-item-toggle {
287
- padding-left: @sidenav-level2-retract;
288
- padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
289
- position: relative;
290
-
291
- > .rs-dropdown-item-toggle-icon {
292
- position: absolute;
293
- right: @sidenav-padding-horizontal;
294
- top: @sidenav-children-padding-vertical;
295
- width: auto;
296
- height: @sidenav-dropdown-toggle-caret-width;
297
- transform: rotate(90deg);
298
- }
299
- }
300
-
301
296
  > .rs-dropdown-item-menu-icon {
302
297
  padding-top: @sidenav-children-padding-vertical;
303
298
  padding-bottom: @sidenav-children-padding-vertical;
@@ -342,7 +337,7 @@
342
337
  // supplement padding
343
338
  padding-left: @sidenav-default-width;
344
339
 
345
- &:focus {
340
+ &:focus-visible {
346
341
  .focus-ring();
347
342
 
348
343
  .high-contrast-mode({
@@ -34,7 +34,7 @@
34
34
  text-align: left;
35
35
  margin: 0 0 4px 0;
36
36
 
37
- > .rs-tree-node-label {
37
+ &-label {
38
38
  position: relative;
39
39
  margin: 0;
40
40
  //text gap
@@ -44,7 +44,7 @@
44
44
  font-size: @picker-tree-node-font-size;
45
45
  line-height: @picker-tree-node-line-height;
46
46
 
47
- > .rs-tree-node-label-content {
47
+ &-content {
48
48
  padding: @custom-picker-tree-node-padding-vertical @picker-tree-node-padding-horizontal
49
49
  @custom-picker-tree-node-padding-vertical @picker-tree-arrow-down-gap;
50
50
  display: inline-block;
@@ -59,7 +59,7 @@
59
59
  }
60
60
  }
61
61
 
62
- &&-active > .rs-tree-node-label > .rs-tree-node-label-content {
62
+ &-active &-label-content {
63
63
  .picker-item-active();
64
64
 
65
65
  color: var(--rs-text-link);
@@ -28,6 +28,7 @@ function useOffset(mountRef) {
28
28
  setOffset = _useState[1];
29
29
 
30
30
  var updateOffset = (0, _react.useCallback)(function () {
31
+ // FIXME upgrade dom-lib
31
32
  setOffset((0, _getOffset.default)(mountRef.current));
32
33
  }, [mountRef]); // Update after the element size changes
33
34
 
@@ -101,10 +101,11 @@ var scrollTo = function scrollTo(time, row) {
101
101
  var node = container === null || container === void 0 ? void 0 : container.querySelector("[data-key=\"" + type + "-" + value + "\"]");
102
102
 
103
103
  if (node && container) {
104
- var _ref2 = (0, _getPosition.default)(node, container),
105
- top = _ref2.top;
104
+ var position = (0, _getPosition.default)(node, container);
106
105
 
107
- (0, _utils.scrollTopAnimation)(container, top, (0, _scrollTop.default)(container) !== 0);
106
+ if (position) {
107
+ (0, _utils.scrollTopAnimation)(container, position.top, (0, _scrollTop.default)(container) !== 0);
108
+ }
108
109
  }
109
110
  });
110
111
  };
@@ -134,7 +135,9 @@ var TimeDropdown = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
134
135
  showMeridian: showMeridian
135
136
  }); // The currently selected time scrolls to the visible range.
136
137
 
137
- show && scrollTo(time, rowRef.current);
138
+ if (show && rowRef.current) {
139
+ scrollTo(time, rowRef.current);
140
+ }
138
141
  }, [date, format, show, showMeridian]);
139
142
 
140
143
  var handleClick = function handleClick(type, d, event) {
@@ -9,7 +9,11 @@ export interface CarouselProps extends WithAsProps {
9
9
  placement?: 'top' | 'bottom' | 'left' | 'right';
10
10
  /** Button shape */
11
11
  shape?: 'dot' | 'bar';
12
- /** Callback fired when the active item changes */
12
+ /** Active element index */
13
+ activeIndex?: number;
14
+ /** Defaul initial index */
15
+ defaultActiveIndex?: number;
16
+ /** Callback fired when the active item manually changes */
13
17
  onSelect?: (index: number, event: React.ChangeEvent<HTMLInputElement>) => void;
14
18
  /** Callback fired when a slide transition starts */
15
19
  onSlideStart?: (index: number, event?: React.ChangeEvent<HTMLInputElement>) => void;
@@ -35,10 +35,13 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
35
35
  autoplay = props.autoplay,
36
36
  _props$autoplayInterv = props.autoplayInterval,
37
37
  autoplayInterval = _props$autoplayInterv === void 0 ? 4000 : _props$autoplayInterv,
38
+ activeIndexProp = props.activeIndex,
39
+ _props$defaultActiveI = props.defaultActiveIndex,
40
+ defaultActiveIndex = _props$defaultActiveI === void 0 ? 0 : _props$defaultActiveI,
38
41
  onSelect = props.onSelect,
39
42
  onSlideStart = props.onSlideStart,
40
43
  onSlideEnd = props.onSlideEnd,
41
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "children", "classPrefix", "className", "placement", "shape", "autoplay", "autoplayInterval", "onSelect", "onSlideStart", "onSlideEnd"]);
44
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "children", "classPrefix", "className", "placement", "shape", "autoplay", "autoplayInterval", "activeIndex", "defaultActiveIndex", "onSelect", "onSlideStart", "onSlideEnd"]);
42
45
 
43
46
  var _useCustom = (0, _utils.useCustom)('Carousel'),
44
47
  rtl = _useCustom.rtl;
@@ -54,17 +57,24 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
54
57
  var vertical = placement === 'left' || placement === 'right';
55
58
  var lengthKey = vertical ? 'height' : 'width';
56
59
 
60
+ var _useControlled = (0, _utils.useControlled)(activeIndexProp, defaultActiveIndex),
61
+ activeIndex = _useControlled[0],
62
+ setActiveIndex = _useControlled[1];
63
+
57
64
  var _useState = (0, _react.useState)(0),
58
- activeIndex = _useState[0],
59
- setActiveIndex = _useState[1];
65
+ lastIndex = _useState[0],
66
+ setLastIndex = _useState[1];
60
67
 
61
- var _useState2 = (0, _react.useState)(0),
62
- lastIndex = _useState2[0],
63
- setLastIndex = _useState2[1];
68
+ var rootRef = (0, _react.useRef)(null); // Set a timer for automatic playback.
69
+ // `autoplay` needs to be cast to boolean type to avoid undefined parameters.
64
70
 
65
- var rootRef = (0, _react.useRef)(null);
71
+ var _useTimeout = (0, _utils.useTimeout)(function () {
72
+ return handleSlide();
73
+ }, autoplayInterval, !!autoplay && count > 1),
74
+ clear = _useTimeout.clear,
75
+ reset = _useTimeout.reset;
66
76
 
67
- var handleSlide = function handleSlide(nextActiveIndex, event) {
77
+ var handleSlide = (0, _react.useCallback)(function (nextActiveIndex, event) {
68
78
  if (!rootRef.current) {
69
79
  return;
70
80
  }
@@ -77,7 +87,7 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
77
87
  onSlideStart === null || onSlideStart === void 0 ? void 0 : onSlideStart(nextIndex, event);
78
88
  setLastIndex(nextActiveIndex == null ? activeIndex : nextIndex);
79
89
  reset();
80
- };
90
+ }, [activeIndex, count, setActiveIndex, clear, onSlideStart, reset]);
81
91
 
82
92
  var handleChange = function handleChange(event) {
83
93
  var activeIndex = +event.target.value;
@@ -87,13 +97,7 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
87
97
 
88
98
  var handleTransitionEnd = (0, _react.useCallback)(function (event) {
89
99
  onSlideEnd === null || onSlideEnd === void 0 ? void 0 : onSlideEnd(activeIndex, event);
90
- }, [activeIndex, onSlideEnd]); // Set a timer for automatic playback.
91
- // `autoplay` needs to be cast to boolean type to avoid undefined parameters.
92
-
93
- var _useTimeout = (0, _utils.useTimeout)(handleSlide, autoplayInterval, !!autoplay && count > 1),
94
- clear = _useTimeout.clear,
95
- reset = _useTimeout.reset;
96
-
100
+ }, [activeIndex, onSlideEnd]);
97
101
  var uniqueId = (0, _react.useMemo)(function () {
98
102
  return (0, _utils.guid)();
99
103
  }, []);
@@ -165,6 +169,8 @@ Carousel.propTypes = {
165
169
  as: _propTypes.default.elementType,
166
170
  className: _propTypes.default.string,
167
171
  classPrefix: _propTypes.default.string,
172
+ activeIndex: _propTypes.default.number,
173
+ defaultActiveIndex: _propTypes.default.number,
168
174
  autoplay: _propTypes.default.bool,
169
175
  autoplayInterval: _propTypes.default.number,
170
176
  placement: _propTypes.default.oneOf(['top', 'bottom', 'left', 'right']),
@@ -163,7 +163,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
163
163
  var getSearchResult = (0, _react.useCallback)(function (keyword) {
164
164
  var items = [];
165
165
  var result = flattenData.filter(function (item) {
166
- if (item[childrenKey]) {
166
+ if (!parentSelectable && item[childrenKey]) {
167
167
  return false;
168
168
  }
169
169
 
@@ -179,7 +179,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
179
179
  }
180
180
 
181
181
  return items;
182
- }, [childrenKey, flattenData, someKeyword]); // Used to hover the focuse item when trigger `onKeydown`
182
+ }, [childrenKey, flattenData, someKeyword, parentSelectable]); // Used to hover the focuse item when trigger `onKeydown`
183
183
 
184
184
  var _useFocusItemValue = (0, _Picker.useFocusItemValue)(value, {
185
185
  rtl: rtl,
@@ -87,7 +87,7 @@ var DropdownMenu = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
87
87
  if (activeItem) {
88
88
  var position = (0, _getPosition.default)(activeItem, column); // Let the active option scroll into view.
89
89
 
90
- (0, _scrollTop.default)(column, position.top);
90
+ (0, _scrollTop.default)(column, position === null || position === void 0 ? void 0 : position.top);
91
91
  }
92
92
  });
93
93
  }, [prefix]);
@@ -79,17 +79,20 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
79
79
  controlledValue = props.value,
80
80
  _props$defaultValue = props.defaultValue,
81
81
  defaultValue = _props$defaultValue === void 0 ? emptyArray : _props$defaultValue,
82
- defaultExpandAll = props.defaultExpandAll,
82
+ _props$defaultExpandA = props.defaultExpandAll,
83
+ defaultExpandAll = _props$defaultExpandA === void 0 ? false : _props$defaultExpandA,
83
84
  _props$disabledItemVa = props.disabledItemValues,
84
85
  disabledItemValues = _props$disabledItemVa === void 0 ? emptyArray : _props$disabledItemVa,
85
86
  controlledExpandItemValues = props.expandItemValues,
86
- defaultExpandItemValues = props.defaultExpandItemValues,
87
+ _props$defaultExpandI = props.defaultExpandItemValues,
88
+ defaultExpandItemValues = _props$defaultExpandI === void 0 ? emptyArray : _props$defaultExpandI,
87
89
  _props$height = props.height,
88
90
  height = _props$height === void 0 ? 360 : _props$height,
89
91
  menuStyle = props.menuStyle,
90
92
  _props$searchable = props.searchable,
91
93
  searchable = _props$searchable === void 0 ? true : _props$searchable,
92
- virtualized = props.virtualized,
94
+ _props$virtualized = props.virtualized,
95
+ virtualized = _props$virtualized === void 0 ? false : _props$virtualized,
93
96
  className = props.className,
94
97
  _props$classPrefix = props.classPrefix,
95
98
  classPrefix = _props$classPrefix === void 0 ? 'picker' : _props$classPrefix,
@@ -271,15 +274,17 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
271
274
  };
272
275
 
273
276
  var focusActiveNode = (0, _react.useCallback)(function () {
274
- (0, _treeUtils.focusToActiveTreeNode)({
275
- list: listRef.current,
276
- valueKey: valueKey,
277
- selector: "." + checkTreePrefix('node-active'),
278
- activeNode: activeNode,
279
- virtualized: virtualized,
280
- container: treeViewRef.current,
281
- formattedNodes: getFormattedNodes()
282
- });
277
+ if (listRef.current) {
278
+ (0, _treeUtils.focusToActiveTreeNode)({
279
+ list: listRef.current,
280
+ valueKey: valueKey,
281
+ selector: "." + checkTreePrefix('node-active'),
282
+ activeNode: activeNode,
283
+ virtualized: virtualized,
284
+ container: treeViewRef.current,
285
+ formattedNodes: getFormattedNodes()
286
+ });
287
+ }
283
288
  }, [checkTreePrefix, activeNode, getFormattedNodes, valueKey, virtualized]);
284
289
  (0, _react.useEffect)(function () {
285
290
  setValue((0, _utils2.getCheckTreePickerDefaultValue)(value, uncheckableItemValues));
@@ -36,9 +36,9 @@ export declare function isEveryFirstLevelNodeUncheckable(nodes: TreeNodesType, u
36
36
  * get node uncheckable state
37
37
  * @param {*} node
38
38
  */
39
- export declare function isNodeUncheckable(node: any, props: Partial<CheckTreePickerProps>): boolean;
40
- export declare function getFormattedTree(data: any[], nodes: TreeNodesType, props: Partial<CheckTreePickerProps>): any[];
41
- export declare function getDisabledState(nodes: TreeNodesType, node: TreeNodeType, props: Partial<CheckTreePickerProps>): boolean;
39
+ export declare function isNodeUncheckable(node: any, props: Required<Pick<CheckTreePickerProps, 'uncheckableItemValues' | 'valueKey'>>): boolean;
40
+ export declare function getFormattedTree(data: any[], nodes: TreeNodesType, props: Required<Pick<CheckTreePickerProps, 'childrenKey' | 'cascade'>>): any[];
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
43
  export declare function getSelectedItems(nodes: TreeNodesType, value: (string | number)[], valueKey: string): TreeNodeType[];
44
44
  export declare function getNodeCheckState({ nodes, node, cascade, childrenKey }: any): CheckStateType;
@@ -136,7 +136,7 @@ function getFormattedTree(data, nodes, props) {
136
136
  var curNode = nodes[node.refKey];
137
137
 
138
138
  if (curNode) {
139
- var _node;
139
+ var _node$childrenKey;
140
140
 
141
141
  var checkState = !(0, _isUndefined2.default)(cascade) ? getNodeCheckState({
142
142
  node: curNode,
@@ -150,7 +150,7 @@ function getFormattedTree(data, nodes, props) {
150
150
  formatted.parent = curNode.parent;
151
151
  formatted.checkState = checkState;
152
152
 
153
- if (((_node = node[childrenKey]) === null || _node === void 0 ? void 0 : _node.length) > 0) {
153
+ if (((_node$childrenKey = node[childrenKey]) === null || _node$childrenKey === void 0 ? void 0 : _node$childrenKey.length) > 0) {
154
154
  formatted[childrenKey] = getFormattedTree(formatted[childrenKey], nodes, props);
155
155
  }
156
156
  }