rsuite 5.4.2 → 5.5.1

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 (101) hide show
  1. package/Button/styles/index.less +1 -5
  2. package/CHANGELOG.md +47 -0
  3. package/Carousel/styles/index.less +1 -0
  4. package/CheckTreePicker/styles/index.less +51 -50
  5. package/Drawer/styles/index.less +3 -0
  6. package/Dropdown/styles/index.less +3 -19
  7. package/Dropdown/styles/mixin.less +0 -2
  8. package/Modal/styles/mixin.less +1 -0
  9. package/Navbar/styles/index.less +8 -3
  10. package/Picker/styles/mixin.less +3 -2
  11. package/README.md +1 -1
  12. package/Sidenav/styles/index.less +59 -58
  13. package/TreePicker/styles/index.less +3 -3
  14. package/cjs/Calendar/useCalendarDate.d.ts +1 -1
  15. package/cjs/Calendar/useCalendarDate.js +1 -1
  16. package/cjs/Carousel/Carousel.js +7 -1
  17. package/cjs/Cascader/Cascader.js +13 -2
  18. package/cjs/CheckPicker/CheckPicker.d.ts +5 -2
  19. package/cjs/CheckPicker/test/CheckPicker.test.js +8 -0
  20. package/cjs/CheckTreePicker/CheckTreePicker.js +1 -1
  21. package/cjs/CheckTreePicker/utils.js +1 -1
  22. package/cjs/CustomProvider/CustomProvider.d.ts +14 -14
  23. package/cjs/CustomProvider/CustomProvider.js +4 -3
  24. package/cjs/DatePicker/DatePicker.d.ts +1 -1
  25. package/cjs/DatePicker/DatePicker.js +2 -4
  26. package/cjs/DateRangePicker/Calendar.js +2 -16
  27. package/cjs/Dropdown/Dropdown.d.ts +5 -0
  28. package/cjs/Dropdown/DropdownMenu.js +5 -11
  29. package/cjs/Dropdown/test/Dropdown.test.d.ts +1 -0
  30. package/cjs/Dropdown/test/Dropdown.test.js +30 -0
  31. package/cjs/InputNumber/InputNumber.d.ts +1 -1
  32. package/cjs/InputNumber/InputNumber.js +36 -6
  33. package/cjs/InputNumber/test/InputNumber.test.d.ts +1 -0
  34. package/cjs/InputNumber/test/InputNumber.test.js +14 -0
  35. package/cjs/Modal/utils.js +16 -8
  36. package/cjs/MultiCascader/MultiCascader.js +7 -3
  37. package/cjs/Nav/NavItem.js +3 -1
  38. package/cjs/Picker/DropdownMenu.js +5 -0
  39. package/cjs/Picker/PickerToggle.js +2 -4
  40. package/cjs/RangeSlider/RangeSlider.d.ts +12 -2
  41. package/cjs/RangeSlider/RangeSlider.js +35 -12
  42. package/cjs/SelectPicker/SelectPicker.d.ts +5 -2
  43. package/cjs/SelectPicker/test/SelectPicker.test.js +8 -0
  44. package/cjs/Uploader/UploadFileItem.d.ts +1 -1
  45. package/cjs/Uploader/UploadFileItem.js +1 -1
  46. package/cjs/Uploader/Uploader.js +3 -0
  47. package/cjs/utils/propTypeChecker.d.ts +2 -6
  48. package/cjs/utils/propTypeChecker.js +7 -59
  49. package/cjs/utils/treeUtils.js +4 -3
  50. package/cjs/utils/useClickOutside.js +6 -2
  51. package/dist/rsuite-rtl.css +399 -252
  52. package/dist/rsuite-rtl.min.css +1 -1
  53. package/dist/rsuite-rtl.min.css.map +1 -1
  54. package/dist/rsuite.css +399 -252
  55. package/dist/rsuite.js +27 -27
  56. package/dist/rsuite.min.css +1 -1
  57. package/dist/rsuite.min.css.map +1 -1
  58. package/dist/rsuite.min.js +1 -1
  59. package/dist/rsuite.min.js.map +1 -1
  60. package/esm/Calendar/useCalendarDate.d.ts +1 -1
  61. package/esm/Calendar/useCalendarDate.js +1 -1
  62. package/esm/Carousel/Carousel.js +9 -3
  63. package/esm/Cascader/Cascader.js +13 -2
  64. package/esm/CheckPicker/CheckPicker.d.ts +5 -2
  65. package/esm/CheckPicker/test/CheckPicker.test.js +7 -0
  66. package/esm/CheckTreePicker/CheckTreePicker.js +1 -1
  67. package/esm/CheckTreePicker/utils.js +1 -1
  68. package/esm/CustomProvider/CustomProvider.d.ts +14 -14
  69. package/esm/CustomProvider/CustomProvider.js +2 -2
  70. package/esm/DatePicker/DatePicker.d.ts +1 -1
  71. package/esm/DatePicker/DatePicker.js +2 -3
  72. package/esm/DateRangePicker/Calendar.js +2 -16
  73. package/esm/Dropdown/Dropdown.d.ts +5 -0
  74. package/esm/Dropdown/DropdownMenu.js +5 -11
  75. package/esm/Dropdown/test/Dropdown.test.d.ts +1 -0
  76. package/esm/Dropdown/test/Dropdown.test.js +22 -0
  77. package/esm/InputNumber/InputNumber.d.ts +1 -1
  78. package/esm/InputNumber/InputNumber.js +38 -7
  79. package/esm/InputNumber/test/InputNumber.test.d.ts +1 -0
  80. package/esm/InputNumber/test/InputNumber.test.js +7 -0
  81. package/esm/Modal/utils.js +16 -8
  82. package/esm/MultiCascader/MultiCascader.js +7 -3
  83. package/esm/Nav/NavItem.js +3 -1
  84. package/esm/Picker/DropdownMenu.js +5 -0
  85. package/esm/Picker/PickerToggle.js +2 -4
  86. package/esm/RangeSlider/RangeSlider.d.ts +12 -2
  87. package/esm/RangeSlider/RangeSlider.js +35 -12
  88. package/esm/SelectPicker/SelectPicker.d.ts +5 -2
  89. package/esm/SelectPicker/test/SelectPicker.test.js +7 -0
  90. package/esm/Uploader/UploadFileItem.d.ts +1 -1
  91. package/esm/Uploader/UploadFileItem.js +1 -1
  92. package/esm/Uploader/Uploader.js +4 -1
  93. package/esm/utils/propTypeChecker.d.ts +2 -6
  94. package/esm/utils/propTypeChecker.js +7 -59
  95. package/esm/utils/treeUtils.js +6 -3
  96. package/esm/utils/useClickOutside.js +6 -2
  97. package/package.json +2 -2
  98. package/styles/color-modes/dark.less +1 -0
  99. package/styles/color-modes/high-contrast.less +1 -0
  100. package/styles/color-modes/light.less +1 -0
  101. package/styles/mixins/utilities.less +17 -5
@@ -14,7 +14,6 @@
14
14
  text-align: center;
15
15
  vertical-align: middle;
16
16
  cursor: pointer;
17
- outline: 0 !important;
18
17
  white-space: nowrap;
19
18
  transition: @btn-transition;
20
19
  // Reset border style in all browser
@@ -31,10 +30,7 @@
31
30
 
32
31
  .rs-btn-md();
33
32
 
34
- &:focus {
35
- outline: 0;
36
- box-shadow: var(--rs-state-focus-shadow);
37
- }
33
+ .with-focus-ring();
38
34
 
39
35
  .button-activated({
40
36
  color: var(--rs-btn-default-hover-text);
package/CHANGELOG.md CHANGED
@@ -1,3 +1,50 @@
1
+ ## [5.5.1](https://github.com/rsuite/rsuite/compare/v5.5.0...v5.5.1) (2022-01-21)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **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))
6
+ - **CheckTreePicker:** fix CheckTreePicker label style ([#2304](https://github.com/rsuite/rsuite/issues/2304)) ([07eb5ac](https://github.com/rsuite/rsuite/commit/07eb5acd4e8283529619ad2b4d6003b0c4f8614d))
7
+ - **DateRangePicker:** fix month not selectable on calendar ([#2312](https://github.com/rsuite/rsuite/issues/2312)) ([5199845](https://github.com/rsuite/rsuite/commit/5199845ee435e923c807da5e0813f4ba06a86798))
8
+ - **Sidenav:** hide focus ring when interacting with mouse ([#2311](https://github.com/rsuite/rsuite/issues/2311)) ([9413bc9](https://github.com/rsuite/rsuite/commit/9413bc9a48fb8a3f915cc811b3392ba4e65b0b70))
9
+
10
+ ### Performance Improvements
11
+
12
+ - Responsive for small screen ([#2293](https://github.com/rsuite/rsuite/issues/2293)) ([cadc42e](https://github.com/rsuite/rsuite/commit/cadc42e39baee174ff7d5577ea933cb471ef5bd0))
13
+
14
+ # [5.5.0](https://github.com/rsuite/rsuite/compare/v5.4.4...v5.5.0) (2022-01-13)
15
+
16
+ ### Bug Fixes
17
+
18
+ - **Dropdown:** infer toggleAs component props ([#2299](https://github.com/rsuite/rsuite/issues/2299)) ([84611cc](https://github.com/rsuite/rsuite/commit/84611cc6f88e1d9cd712bc3f08be559d0a146ba0))
19
+ - **InputNumber:** inherit html input attributes ([#2298](https://github.com/rsuite/rsuite/issues/2298)) ([d7622ee](https://github.com/rsuite/rsuite/commit/d7622eed72b36ed15e91f606027d2e540391bdc7))
20
+ - **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))
21
+ - **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)
22
+
23
+ ### Features
24
+
25
+ - **InputNumber:** support keyboard interaction ([#2294](https://github.com/rsuite/rsuite/issues/2294)) ([46993e2](https://github.com/rsuite/rsuite/commit/46993e235ca3d3ee8b6faa16a5fa11a8ed544e3b))
26
+ - **RangeSlider:** add `constraint` prop ([#2291](https://github.com/rsuite/rsuite/issues/2291)) ([a2d38a8](https://github.com/rsuite/rsuite/commit/a2d38a8efe4f85c28ce1f4ee79a89eda1e1cf7b0))
27
+
28
+ ### Performance Improvements
29
+
30
+ - **styles:** simplify compound selectors over 4 levels ([#2282](https://github.com/rsuite/rsuite/issues/2282)) ([304e8da](https://github.com/rsuite/rsuite/commit/304e8da0c2057d148bbad36674aba33382439949))
31
+
32
+ ## [5.4.4](https://github.com/rsuite/rsuite/compare/v5.4.3...v5.4.4) (2022-01-06)
33
+
34
+ ### Bug Fixes
35
+
36
+ - **CheckTreePicker:** fix root node style incorrect ([#2279](https://github.com/rsuite/rsuite/issues/2279)) ([c09226e](https://github.com/rsuite/rsuite/commit/c09226e141f7881b11fe5594d802974f49e789a9))
37
+ - **DatePicker:** fix clear button not working ([#2273](https://github.com/rsuite/rsuite/issues/2273)) ([649362a](https://github.com/rsuite/rsuite/commit/649362aa697a292af28c5ec666e4337a7bd449c7))
38
+ - **Dropdown:** wrong submenu placement in RTL direction ([#2280](https://github.com/rsuite/rsuite/issues/2280)) ([c3735c3](https://github.com/rsuite/rsuite/commit/c3735c335d5a8ca6e9954af1e5b77c453b5bd4d2))
39
+ - **Navbar:** fix Whisper on Nav.Item within Navbar wrong positioning ([#2274](https://github.com/rsuite/rsuite/issues/2274)) ([bd0f5e3](https://github.com/rsuite/rsuite/commit/bd0f5e316e6bb910d9a41e43770b4d1a61528d9f)), closes [#2263](https://github.com/rsuite/rsuite/issues/2263)
40
+
41
+ ## [5.4.3](https://github.com/rsuite/rsuite/compare/v5.4.2...v5.4.3) (2021-12-30)
42
+
43
+ ### Bug Fixes
44
+
45
+ - **Drawer:** fix Drawer cannot be closed when backdrop is clicked ([#2259](https://github.com/rsuite/rsuite/issues/2259)) ([a49ee03](https://github.com/rsuite/rsuite/commit/a49ee03db33c11db30597221ca61ce6daa088c4b))
46
+ - **Picker:** add ref to PickerComponentProps ([#2261](https://github.com/rsuite/rsuite/issues/2261)) ([6e3e6c5](https://github.com/rsuite/rsuite/commit/6e3e6c57932af142dc1a74da6b7fffb57ae628ca))
47
+
1
48
  ## [5.4.2](https://github.com/rsuite/rsuite/compare/v5.4.1...v5.4.2) (2021-12-24)
2
49
 
3
50
  ### 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
- .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
  }
@@ -6,6 +6,9 @@
6
6
  position: fixed;
7
7
  z-index: @zindex-drawer;
8
8
  top: 0;
9
+ left: 0;
10
+ width: 100%;
11
+ height: 100%;
9
12
  }
10
13
 
11
14
  // Container that the drawer scrolls within
@@ -108,6 +108,7 @@
108
108
  z-index: @zindex-dropdown + 1;
109
109
  float: left;
110
110
  box-shadow: var(--rs-dropdown-shadow);
111
+ outline: none;
111
112
 
112
113
  .high-contrast-mode({
113
114
  border: 1px solid var(--rs-border-primary);
@@ -219,26 +220,9 @@
219
220
  right: @dropdown-caret-icon-padding-horizontal;
220
221
  }
221
222
  }
222
- //
223
- //&.rs-dropdown-menu-pull-left {
224
- // &.rs-dropdown-item {
225
- // padding-left: @dropdown-item-padding-x+ @dropdown-item-submenu-icon-angle-spacing +
226
- // @dropdown-item-submenu-icon-angle-width;
227
- //
228
- // > .rs-dropdown-menu-toggle .rs-dropdown-menu-toggle-icon {
229
- // left: @dropdown-caret-icon-padding-horizontal;
230
- // }
231
- // }
232
- //}
233
-
234
- // Pull right
235
- .rs-dropdown-item-pull-right ~ .rs-dropdown-menu {
236
- left: 100%;
237
- }
238
223
 
239
- // Pull Left
240
- .rs-dropdown-item-pull-left ~ .rs-dropdown-menu {
241
- right: 100%;
224
+ .rs-dropdown-menu {
225
+ left: 100%;
242
226
  }
243
227
 
244
228
  // Open
@@ -39,8 +39,6 @@
39
39
  padding-right: @dropdown-toggle-padding-right;
40
40
  // Fixed: Content is not centered when customizing renderTitle.
41
41
  display: inline-block;
42
- // Rest `:focus` blue border.
43
- outline: none;
44
42
  cursor: pointer;
45
43
  }
46
44
 
@@ -1,3 +1,4 @@
1
1
  .content-width(@width) {
2
2
  width: @width;
3
+ max-width: calc(100% - 10px);
3
4
  }
@@ -73,8 +73,6 @@
73
73
  .rs-navbar-brand,
74
74
  .rs-navbar-item,
75
75
  .rs-navbar-nav > .rs-dropdown-item {
76
- outline: 0;
77
-
78
76
  &,
79
77
  &:hover,
80
78
  &:focus,
@@ -83,7 +81,9 @@
83
81
  }
84
82
 
85
83
  &:focus-visible {
86
- .focus-ring();
84
+ // Navbar is usually placed by the top edge of the page
85
+ // thus use an inset focus ring to prevent overflow clipping
86
+ .focus-ring(inset);
87
87
 
88
88
  .high-contrast-mode({
89
89
  .focus-ring(slim-inset);
@@ -108,6 +108,11 @@
108
108
  .rs-navbar-nav > .rs-dropdown .rs-dropdown-toggle {
109
109
  &:extend(.rs-navbar-item);
110
110
 
111
+ &:focus,
112
+ &:focus-visible {
113
+ &:extend(.rs-navbar-item:focus-visible);
114
+ }
115
+
111
116
  padding-right: @navbar-item-padding-x+ @dropdown-caret-width+ @dropdown-caret-padding;
112
117
 
113
118
  .high-contrast-mode({
@@ -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
@@ -8,7 +8,7 @@ English | [中文版][readm-cn]
8
8
 
9
9
  [![npm][npm-svg]][npm-home]
10
10
  [![GitHub Actions][actions-svg]][actions-home]
11
- [![codecov](https://codecov.io/gh/rsuite/rsuite/branch/next/graph/badge.svg?token=HGeKd0BD3t)](https://codecov.io/gh/rsuite/rsuite)
11
+ [![codecov](https://codecov.io/gh/rsuite/rsuite/branch/main/graph/badge.svg?token=HGeKd0BD3t)](https://codecov.io/gh/rsuite/rsuite)
12
12
  [![Discord][discord-svg]][discord-invite]
13
13
  [![Gitter][gitter-svg]][gitter]
14
14
  [![Gitter][gitter-cn-svg]][gitter-cn]
@@ -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
 
@@ -110,6 +135,12 @@
110
135
  width: 100%;
111
136
  white-space: normal;
112
137
 
138
+ // Sidenav is usually placed by the left/right edge of the page
139
+ // thus use an inset focus ring to prevent overflow clipping
140
+ &:focus-visible {
141
+ .focus-ring(inset);
142
+ }
143
+
113
144
  > .rs-icon:not(.rs-dropdown-toggle-caret) {
114
145
  font-size: @sidenav-level1-item-font-size;
115
146
  margin-right: @sidenav-icon-spacing;
@@ -219,32 +250,17 @@
219
250
  transform: rotate(180deg);
220
251
  }
221
252
 
222
- .rs-dropdown-item.rs-dropdown-item-expand
223
- > .rs-dropdown-item-toggle
224
- > .rs-dropdown-item-toggle-icon {
225
- transform: rotate(270deg);
226
- }
227
-
228
253
  // Dropdown menu
229
- > .rs-dropdown-menu {
254
+ .rs-dropdown-menu {
230
255
  .reset-sidenav-dropdown-menu();
256
+ }
231
257
 
232
- // Submenu
233
- .rs-dropdown-item-submenu {
234
- padding: 0;
235
-
236
- > .rs-dropdown-menu-toggle {
237
- display: block;
238
- padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
239
- }
240
-
241
- > .rs-dropdown-menu {
242
- .reset-sidenav-dropdown-menu();
243
- }
258
+ // Submenu
259
+ .rs-dropdown-item-submenu {
260
+ padding: 0;
244
261
 
245
- &:hover {
246
- background-color: transparent;
247
- }
262
+ &:hover {
263
+ background-color: transparent;
248
264
  }
249
265
  }
250
266
  }
@@ -277,21 +293,6 @@
277
293
  // @warn Here we can only use absolute positioning because of the limitations of using <Dropdown/> component.
278
294
 
279
295
  .rs-dropdown-item-submenu {
280
- > .rs-dropdown-item-toggle {
281
- padding-left: @sidenav-level2-retract;
282
- padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
283
- position: relative;
284
-
285
- > .rs-dropdown-item-toggle-icon {
286
- position: absolute;
287
- right: @sidenav-padding-horizontal;
288
- top: @sidenav-children-padding-vertical;
289
- width: auto;
290
- height: @sidenav-dropdown-toggle-caret-width;
291
- transform: rotate(90deg);
292
- }
293
- }
294
-
295
296
  > .rs-dropdown-item-menu-icon {
296
297
  padding-top: @sidenav-children-padding-vertical;
297
298
  padding-bottom: @sidenav-children-padding-vertical;
@@ -336,7 +337,7 @@
336
337
  // supplement padding
337
338
  padding-left: @sidenav-default-width;
338
339
 
339
- &:focus {
340
+ &:focus-visible {
340
341
  .focus-ring();
341
342
 
342
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);
@@ -1,4 +1,4 @@
1
- declare const useCalendarDate: (value: Date | undefined, defaultDate: Date | undefined) => {
1
+ declare const useCalendarDate: (value: Date | null | undefined, defaultDate: Date | undefined) => {
2
2
  calendarDate: Date;
3
3
  setCalendarDate: (date: Date | undefined) => void;
4
4
  };
@@ -25,7 +25,7 @@ var useCalendarDate = function useCalendarDate(value, defaultDate) {
25
25
  var _valueRef$current;
26
26
 
27
27
  if ((value === null || value === void 0 ? void 0 : value.valueOf()) !== ((_valueRef$current = valueRef.current) === null || _valueRef$current === void 0 ? void 0 : _valueRef$current.valueOf())) {
28
- setCalendarDate(value);
28
+ setCalendarDate(value !== null && value !== void 0 ? value : new Date());
29
29
  valueRef.current = value;
30
30
  }
31
31
  }, [value]);
@@ -62,7 +62,13 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
62
62
  lastIndex = _useState2[0],
63
63
  setLastIndex = _useState2[1];
64
64
 
65
+ var rootRef = (0, _react.useRef)(null);
66
+
65
67
  var handleSlide = function handleSlide(nextActiveIndex, event) {
68
+ if (!rootRef.current) {
69
+ return;
70
+ }
71
+
66
72
  clear();
67
73
  var index = nextActiveIndex !== null && nextActiveIndex !== void 0 ? nextActiveIndex : activeIndex + 1; // When index is greater than count, start from 1 again.
68
74
 
@@ -129,7 +135,7 @@ var Carousel = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
129
135
  var sliderStyles = (_sliderStyles = {}, _sliderStyles[lengthKey] = count * 100 + "%", _sliderStyles.transform = vertical ? "translate3d(0, " + activeRatio + " ,0)" : "translate3d(" + activeRatio + ", 0 ,0)", _sliderStyles);
130
136
  var showMask = count > 1 && activeIndex === 0 && activeIndex !== lastIndex;
131
137
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends4.default)({}, rest, {
132
- ref: ref,
138
+ ref: (0, _utils.mergeRefs)(ref, rootRef),
133
139
  className: classes
134
140
  }), /*#__PURE__*/_react.default.createElement("div", {
135
141
  className: prefix('content')
@@ -211,10 +211,18 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
211
211
  }
212
212
  }, [getSearchResult, onSearch, setFocusItemValue, setKeys, setLayer, valueKey]);
213
213
  var handleEntered = (0, _react.useCallback)(function () {
214
+ if (!targetRef.current) {
215
+ return;
216
+ }
217
+
214
218
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
215
219
  setActive(true);
216
220
  }, [onOpen]);
217
221
  var handleExited = (0, _react.useCallback)(function () {
222
+ if (!targetRef.current) {
223
+ return;
224
+ }
225
+
218
226
  onClose === null || onClose === void 0 ? void 0 : onClose();
219
227
  setActive(false);
220
228
  setSearchKeyword('');
@@ -225,7 +233,7 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
225
233
  (_triggerRef$current = triggerRef.current) === null || _triggerRef$current === void 0 ? void 0 : _triggerRef$current.close();
226
234
  }, [triggerRef]);
227
235
  var handleClean = (0, _react.useCallback)(function (event) {
228
- if (disabled) {
236
+ if (disabled || !targetRef.current) {
229
237
  return;
230
238
  }
231
239
 
@@ -283,7 +291,10 @@ var Cascader = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
283
291
  children.then(function (data) {
284
292
  node.loading = false;
285
293
  node[childrenKey] = data;
286
- addColumn(data, cascadePaths.length);
294
+
295
+ if (targetRef.current) {
296
+ addColumn(data, cascadePaths.length);
297
+ }
287
298
  });
288
299
  } else {
289
300
  node.loading = false;
@@ -1,5 +1,6 @@
1
- import React from 'react';
1
+ import React, { Ref } from 'react';
2
2
  import { PickerLocale } from '../locales';
3
+ import { PickerInstance } from '../Picker';
3
4
  import { ItemDataType, FormControlPickerProps } from '../@types/common';
4
5
  import type { MultipleSelectProps } from '../SelectPicker';
5
6
  export declare type ValueType = (number | string)[];
@@ -10,7 +11,9 @@ export interface CheckPickerProps<T> extends FormControlPickerProps<T[], PickerL
10
11
  countable?: boolean;
11
12
  }
12
13
  export interface CheckPickerComponent {
13
- <T>(props: CheckPickerProps<T>): JSX.Element | null;
14
+ <T>(props: CheckPickerProps<T> & {
15
+ ref?: Ref<PickerInstance>;
16
+ }): JSX.Element | null;
14
17
  displayName?: string;
15
18
  propTypes?: React.WeakValidationMap<CheckPickerProps<any>>;
16
19
  }
@@ -73,4 +73,12 @@ _react.default.createElement(_CheckPicker.default, {
73
73
  onChange: function onChange(newValue) {
74
74
  (0, _tsExpect.expectType)(newValue);
75
75
  }
76
+ });
77
+
78
+ var pickerRef = /*#__PURE__*/_react.default.createRef();
79
+
80
+ /*#__PURE__*/
81
+ _react.default.createElement(_CheckPicker.default, {
82
+ ref: pickerRef,
83
+ data: []
76
84
  });
@@ -645,7 +645,7 @@ var CheckTreePicker = /*#__PURE__*/_react.default.forwardRef(function (props, re
645
645
  var renderCheckTree = function renderCheckTree() {
646
646
  var _withCheckTreeClassPr, _merge2;
647
647
 
648
- var classes = withCheckTreeClassPrefix((_withCheckTreeClassPr = {}, _withCheckTreeClassPr[className !== null && className !== void 0 ? className : ''] = inline, _withCheckTreeClassPr['without-children'] = !_utils2.isSomeNodeHasChildren, _withCheckTreeClassPr.virtualized = virtualized, _withCheckTreeClassPr));
648
+ var classes = withCheckTreeClassPrefix((_withCheckTreeClassPr = {}, _withCheckTreeClassPr[className !== null && className !== void 0 ? className : ''] = inline, _withCheckTreeClassPr['without-children'] = !(0, _utils2.isSomeNodeHasChildren)(data, childrenKey), _withCheckTreeClassPr.virtualized = virtualized, _withCheckTreeClassPr));
649
649
  var formattedNodes = getFormattedNodes(renderNode);
650
650
 
651
651
  if (!formattedNodes.some(function (v) {
@@ -62,7 +62,7 @@ function isSomeChildChecked(nodes, parent, childrenKey) {
62
62
 
63
63
  function isSomeNodeHasChildren(data, childrenKey) {
64
64
  return data.some(function (node) {
65
- return node[childrenKey];
65
+ return Array.isArray(node[childrenKey]);
66
66
  });
67
67
  }
68
68
  /**