rsuite 5.49.0 → 5.51.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 (233) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/Cascader/styles/index.less +4 -4
  3. package/CheckTreePicker/styles/index.less +3 -3
  4. package/DatePicker/styles/index.less +1 -1
  5. package/DateRangePicker/styles/index.less +15 -5
  6. package/Dropdown/styles/index.less +5 -4
  7. package/Dropdown/styles/mixin.less +0 -11
  8. package/Form/styles/mixin.less +1 -2
  9. package/InputGroup/styles/index.less +0 -14
  10. package/InputPicker/styles/index.less +1 -1
  11. package/Picker/styles/index.less +33 -26
  12. package/Picker/styles/mixin.less +20 -16
  13. package/README.md +4 -4
  14. package/TagInput/styles/index.less +2 -2
  15. package/TagPicker/styles/index.less +5 -1
  16. package/TreePicker/styles/index.less +2 -2
  17. package/cjs/@types/common.d.ts +8 -0
  18. package/cjs/AutoComplete/AutoComplete.js +39 -37
  19. package/cjs/AutoComplete/Combobox.d.ts +8 -0
  20. package/cjs/AutoComplete/Combobox.js +31 -0
  21. package/cjs/Calendar/Calendar.d.ts +5 -1
  22. package/cjs/Calendar/CalendarContainer.d.ts +5 -1
  23. package/cjs/Calendar/CalendarContainer.js +35 -37
  24. package/cjs/Cascader/Cascader.js +58 -59
  25. package/cjs/Cascader/DropdownMenu.d.ts +3 -20
  26. package/cjs/Cascader/DropdownMenu.js +48 -48
  27. package/cjs/Cascader/TreeView.d.ts +24 -0
  28. package/cjs/Cascader/TreeView.js +174 -0
  29. package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
  30. package/cjs/CheckPicker/CheckPicker.js +42 -44
  31. package/cjs/CheckTreePicker/CheckTreeNode.d.ts +2 -2
  32. package/cjs/CheckTreePicker/CheckTreeNode.js +31 -59
  33. package/cjs/CheckTreePicker/CheckTreePicker.js +81 -84
  34. package/cjs/DatePicker/DatePicker.d.ts +5 -1
  35. package/cjs/DatePicker/DatePicker.js +7 -10
  36. package/cjs/DatePicker/Toolbar.js +2 -1
  37. package/cjs/DateRangeInput/DateRangeInput.js +2 -2
  38. package/cjs/DateRangePicker/Calendar.js +24 -23
  39. package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
  40. package/cjs/DateRangePicker/DateRangePicker.js +239 -202
  41. package/cjs/DateRangePicker/types.d.ts +11 -3
  42. package/cjs/DateRangePicker/utils.d.ts +2 -1
  43. package/cjs/DateRangePicker/utils.js +7 -5
  44. package/cjs/Form/Form.d.ts +14 -0
  45. package/cjs/Form/Form.js +39 -30
  46. package/cjs/Form/FormContext.d.ts +1 -0
  47. package/cjs/FormControl/FormControl.d.ts +11 -1
  48. package/cjs/FormControl/FormControl.js +40 -17
  49. package/cjs/FormGroup/FormGroup.js +2 -1
  50. package/cjs/InputPicker/InputPicker.js +108 -92
  51. package/cjs/InputPicker/InputSearch.js +3 -15
  52. package/cjs/InputPicker/TagList.d.ts +3 -0
  53. package/cjs/InputPicker/TagList.js +29 -0
  54. package/cjs/InputPicker/TextBox.d.ts +18 -0
  55. package/cjs/InputPicker/TextBox.js +48 -0
  56. package/cjs/MultiCascader/MultiCascader.js +53 -52
  57. package/cjs/MultiCascader/{DropdownMenu.d.ts → TreeView.d.ts} +3 -3
  58. package/cjs/MultiCascader/{DropdownMenu.js → TreeView.js} +77 -74
  59. package/{esm/Picker/DropdownMenuCheckItem.d.ts → cjs/Picker/ListCheckItem.d.ts} +3 -3
  60. package/cjs/Picker/{DropdownMenuCheckItem.js → ListCheckItem.js} +14 -30
  61. package/cjs/Picker/{DropdownMenuItem.d.ts → ListItem.d.ts} +4 -4
  62. package/cjs/Picker/{DropdownMenuItem.js → ListItem.js} +15 -24
  63. package/cjs/Picker/ListItemGroup.d.ts +6 -0
  64. package/cjs/Picker/{DropdownMenuGroup.js → ListItemGroup.js} +3 -9
  65. package/cjs/Picker/Listbox.d.ts +35 -0
  66. package/cjs/Picker/{DropdownMenu.js → Listbox.js} +49 -64
  67. package/cjs/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
  68. package/cjs/{DatePicker → Picker}/PickerIndicator.js +2 -1
  69. package/cjs/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
  70. package/cjs/Picker/{PickerOverlay.d.ts → PickerPopup.d.ts} +3 -3
  71. package/cjs/Picker/{PickerOverlay.js → PickerPopup.js} +9 -7
  72. package/cjs/Picker/PickerToggle.d.ts +17 -22
  73. package/cjs/Picker/PickerToggle.js +63 -181
  74. package/cjs/Picker/PickerToggleTrigger.d.ts +15 -0
  75. package/cjs/Picker/PickerToggleTrigger.js +21 -5
  76. package/cjs/Picker/SearchBar.js +7 -9
  77. package/cjs/Picker/TreeView.d.ts +7 -0
  78. package/cjs/Picker/TreeView.js +31 -0
  79. package/cjs/Picker/hooks/index.d.ts +6 -0
  80. package/cjs/Picker/hooks/index.js +18 -0
  81. package/cjs/Picker/hooks/useCombobox.d.ts +7 -0
  82. package/cjs/Picker/hooks/useCombobox.js +22 -0
  83. package/cjs/Picker/hooks/useFocusItemValue.d.ts +30 -0
  84. package/cjs/Picker/hooks/useFocusItemValue.js +246 -0
  85. package/cjs/Picker/hooks/usePickerClassName.d.ts +21 -0
  86. package/cjs/Picker/hooks/usePickerClassName.js +39 -0
  87. package/cjs/Picker/{usePickerRef.d.ts → hooks/usePickerRef.d.ts} +5 -3
  88. package/cjs/Picker/{usePickerRef.js → hooks/usePickerRef.js} +13 -7
  89. package/cjs/Picker/hooks/useSearch.d.ts +18 -0
  90. package/cjs/Picker/hooks/useSearch.js +57 -0
  91. package/cjs/Picker/hooks/useToggleKeyDownEvent.d.ts +25 -0
  92. package/cjs/Picker/hooks/useToggleKeyDownEvent.js +101 -0
  93. package/cjs/Picker/index.d.ts +9 -5
  94. package/cjs/Picker/index.js +32 -16
  95. package/cjs/Picker/propTypes.d.ts +0 -6
  96. package/cjs/Picker/propTypes.js +0 -5
  97. package/cjs/Picker/utils.d.ts +2 -100
  98. package/cjs/Picker/utils.js +1 -473
  99. package/cjs/SelectPicker/SelectPicker.d.ts +2 -2
  100. package/cjs/SelectPicker/SelectPicker.js +47 -50
  101. package/cjs/TagInput/index.js +4 -0
  102. package/cjs/TreePicker/TreeNode.d.ts +2 -2
  103. package/cjs/TreePicker/TreeNode.js +22 -56
  104. package/cjs/TreePicker/TreePicker.js +91 -95
  105. package/cjs/utils/constants.d.ts +2 -1
  106. package/cjs/utils/constants.js +1 -0
  107. package/cjs/utils/dateUtils.d.ts +0 -1
  108. package/cjs/utils/dateUtils.js +0 -6
  109. package/cjs/utils/getStringLength.d.ts +2 -0
  110. package/cjs/utils/getStringLength.js +18 -0
  111. package/cjs/utils/index.d.ts +1 -0
  112. package/cjs/utils/index.js +4 -1
  113. package/dist/rsuite-no-reset-rtl.css +201 -186
  114. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  115. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  116. package/dist/rsuite-no-reset.css +201 -186
  117. package/dist/rsuite-no-reset.min.css +1 -1
  118. package/dist/rsuite-no-reset.min.css.map +1 -1
  119. package/dist/rsuite-rtl.css +201 -186
  120. package/dist/rsuite-rtl.min.css +1 -1
  121. package/dist/rsuite-rtl.min.css.map +1 -1
  122. package/dist/rsuite.css +201 -186
  123. package/dist/rsuite.js +235 -104
  124. package/dist/rsuite.js.map +1 -1
  125. package/dist/rsuite.min.css +1 -1
  126. package/dist/rsuite.min.css.map +1 -1
  127. package/dist/rsuite.min.js +1 -1
  128. package/dist/rsuite.min.js.map +1 -1
  129. package/esm/@types/common.d.ts +8 -0
  130. package/esm/AutoComplete/AutoComplete.js +42 -40
  131. package/esm/AutoComplete/Combobox.d.ts +8 -0
  132. package/esm/AutoComplete/Combobox.js +25 -0
  133. package/esm/Calendar/Calendar.d.ts +5 -1
  134. package/esm/Calendar/CalendarContainer.d.ts +5 -1
  135. package/esm/Calendar/CalendarContainer.js +37 -39
  136. package/esm/Cascader/Cascader.js +61 -62
  137. package/esm/Cascader/DropdownMenu.d.ts +3 -20
  138. package/esm/Cascader/DropdownMenu.js +50 -49
  139. package/esm/Cascader/TreeView.d.ts +24 -0
  140. package/esm/Cascader/TreeView.js +167 -0
  141. package/esm/CheckPicker/CheckPicker.d.ts +2 -2
  142. package/esm/CheckPicker/CheckPicker.js +45 -47
  143. package/esm/CheckTreePicker/CheckTreeNode.d.ts +2 -2
  144. package/esm/CheckTreePicker/CheckTreeNode.js +33 -61
  145. package/esm/CheckTreePicker/CheckTreePicker.js +84 -87
  146. package/esm/DatePicker/DatePicker.d.ts +5 -1
  147. package/esm/DatePicker/DatePicker.js +5 -8
  148. package/esm/DatePicker/Toolbar.js +2 -1
  149. package/esm/DateRangeInput/DateRangeInput.js +2 -2
  150. package/esm/DateRangePicker/Calendar.js +25 -23
  151. package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
  152. package/esm/DateRangePicker/DateRangePicker.js +241 -204
  153. package/esm/DateRangePicker/types.d.ts +11 -3
  154. package/esm/DateRangePicker/utils.d.ts +2 -1
  155. package/esm/DateRangePicker/utils.js +7 -5
  156. package/esm/Form/Form.d.ts +14 -0
  157. package/esm/Form/Form.js +41 -32
  158. package/esm/Form/FormContext.d.ts +1 -0
  159. package/esm/FormControl/FormControl.d.ts +11 -1
  160. package/esm/FormControl/FormControl.js +41 -18
  161. package/esm/FormGroup/FormGroup.js +3 -2
  162. package/esm/InputPicker/InputPicker.js +110 -94
  163. package/esm/InputPicker/InputSearch.js +4 -15
  164. package/esm/InputPicker/TagList.d.ts +3 -0
  165. package/esm/InputPicker/TagList.js +23 -0
  166. package/esm/InputPicker/TextBox.d.ts +18 -0
  167. package/esm/InputPicker/TextBox.js +42 -0
  168. package/esm/MultiCascader/MultiCascader.js +56 -55
  169. package/esm/MultiCascader/{DropdownMenu.d.ts → TreeView.d.ts} +3 -3
  170. package/esm/MultiCascader/{DropdownMenu.js → TreeView.js} +79 -75
  171. package/{cjs/Picker/DropdownMenuCheckItem.d.ts → esm/Picker/ListCheckItem.d.ts} +3 -3
  172. package/esm/Picker/{DropdownMenuCheckItem.js → ListCheckItem.js} +15 -30
  173. package/esm/Picker/{DropdownMenuItem.d.ts → ListItem.d.ts} +4 -4
  174. package/esm/Picker/{DropdownMenuItem.js → ListItem.js} +16 -24
  175. package/esm/Picker/ListItemGroup.d.ts +6 -0
  176. package/esm/Picker/{DropdownMenuGroup.js → ListItemGroup.js} +3 -9
  177. package/esm/Picker/Listbox.d.ts +35 -0
  178. package/esm/Picker/{DropdownMenu.js → Listbox.js} +50 -64
  179. package/esm/{DatePicker → Picker}/PickerIndicator.d.ts +1 -1
  180. package/esm/{DatePicker → Picker}/PickerIndicator.js +2 -1
  181. package/esm/{DatePicker → Picker}/PickerLabel.d.ts +1 -1
  182. package/esm/Picker/{PickerOverlay.d.ts → PickerPopup.d.ts} +3 -3
  183. package/esm/Picker/{PickerOverlay.js → PickerPopup.js} +10 -8
  184. package/esm/Picker/PickerToggle.d.ts +17 -22
  185. package/esm/Picker/PickerToggle.js +65 -183
  186. package/esm/Picker/PickerToggleTrigger.d.ts +15 -0
  187. package/esm/Picker/PickerToggleTrigger.js +20 -5
  188. package/esm/Picker/SearchBar.js +8 -9
  189. package/esm/Picker/TreeView.d.ts +7 -0
  190. package/esm/Picker/TreeView.js +25 -0
  191. package/esm/Picker/hooks/index.d.ts +6 -0
  192. package/esm/Picker/hooks/index.js +7 -0
  193. package/esm/Picker/hooks/useCombobox.d.ts +7 -0
  194. package/esm/Picker/hooks/useCombobox.js +17 -0
  195. package/esm/Picker/hooks/useFocusItemValue.d.ts +30 -0
  196. package/esm/Picker/hooks/useFocusItemValue.js +240 -0
  197. package/esm/Picker/hooks/usePickerClassName.d.ts +21 -0
  198. package/esm/Picker/hooks/usePickerClassName.js +33 -0
  199. package/esm/Picker/{usePickerRef.d.ts → hooks/usePickerRef.d.ts} +5 -3
  200. package/esm/Picker/{usePickerRef.js → hooks/usePickerRef.js} +13 -8
  201. package/esm/Picker/hooks/useSearch.d.ts +18 -0
  202. package/esm/Picker/hooks/useSearch.js +51 -0
  203. package/esm/Picker/hooks/useToggleKeyDownEvent.d.ts +25 -0
  204. package/esm/Picker/hooks/useToggleKeyDownEvent.js +96 -0
  205. package/esm/Picker/index.d.ts +9 -5
  206. package/esm/Picker/index.js +9 -5
  207. package/esm/Picker/propTypes.d.ts +0 -6
  208. package/esm/Picker/propTypes.js +0 -5
  209. package/esm/Picker/utils.d.ts +2 -100
  210. package/esm/Picker/utils.js +2 -467
  211. package/esm/SelectPicker/SelectPicker.d.ts +2 -2
  212. package/esm/SelectPicker/SelectPicker.js +50 -53
  213. package/esm/TagInput/index.js +4 -0
  214. package/esm/TreePicker/TreeNode.d.ts +2 -2
  215. package/esm/TreePicker/TreeNode.js +24 -58
  216. package/esm/TreePicker/TreePicker.js +94 -98
  217. package/esm/utils/constants.d.ts +2 -1
  218. package/esm/utils/constants.js +1 -0
  219. package/esm/utils/dateUtils.d.ts +0 -1
  220. package/esm/utils/dateUtils.js +0 -5
  221. package/esm/utils/getStringLength.d.ts +2 -0
  222. package/esm/utils/getStringLength.js +13 -0
  223. package/esm/utils/index.d.ts +1 -0
  224. package/esm/utils/index.js +1 -0
  225. package/package.json +1 -1
  226. package/styles/mixins/combobox.less +10 -0
  227. package/styles/variables.less +1 -3
  228. package/cjs/Picker/DropdownMenu.d.ts +0 -59
  229. package/cjs/Picker/DropdownMenuGroup.d.ts +0 -6
  230. package/esm/Picker/DropdownMenu.d.ts +0 -59
  231. package/esm/Picker/DropdownMenuGroup.d.ts +0 -6
  232. /package/cjs/{DatePicker → Picker}/PickerLabel.js +0 -0
  233. /package/esm/{DatePicker → Picker}/PickerLabel.js +0 -0
package/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ # [5.51.0](https://github.com/rsuite/rsuite/compare/v5.50.0...v5.51.0) (2024-01-19)
2
+
3
+ ### Bug Fixes
4
+
5
+ - **InputGroup:** fix style conflict caused by zIndex set in InputGoup ([#3552](https://github.com/rsuite/rsuite/issues/3552)) ([f874edf](https://github.com/rsuite/rsuite/commit/f874edfdbf0dbc9a53e4fe26fb9cf39108f1a00c))
6
+
7
+ ### Features
8
+
9
+ - **Form:** add support for `nestedField` prop on Form ([#3568](https://github.com/rsuite/rsuite/issues/3568)) ([47fce55](https://github.com/rsuite/rsuite/commit/47fce559b159f128fd2f89ffc36c0e9bcfd3f25b))
10
+ - improve accessibility of all pickers ([#3558](https://github.com/rsuite/rsuite/issues/3558)) ([8ad3cfd](https://github.com/rsuite/rsuite/commit/8ad3cfd4f1a2de16b52fec2bed5e4a9ea509f824))
11
+
12
+ # [5.50.0](https://github.com/rsuite/rsuite/compare/v5.49.0...v5.50.0) (2024-01-12)
13
+
14
+ ### Bug Fixes
15
+
16
+ - typo in Next.js guide ([#3555](https://github.com/rsuite/rsuite/issues/3555)) ([77d60cf](https://github.com/rsuite/rsuite/commit/77d60cfeb27e3e52b4003d72114e5164b275a3d2))
17
+
18
+ ### Features
19
+
20
+ - **cra:** supports using CRA to install javascript template ([#3538](https://github.com/rsuite/rsuite/issues/3538)) ([1b697f4](https://github.com/rsuite/rsuite/commit/1b697f4a4f61a7943351c5ca0f46a484c9ea1ac6))
21
+ - **cra:** supports using CRA to install typescript template ([#3540](https://github.com/rsuite/rsuite/issues/3540)) ([bbe3609](https://github.com/rsuite/rsuite/commit/bbe3609d4492e9186e32309f6c6ee6101d5eb83c))
22
+ - **DateRangePicker:** supports date selection by using keyboard ([#3554](https://github.com/rsuite/rsuite/issues/3554)) ([2c8d197](https://github.com/rsuite/rsuite/commit/2c8d1974e018903b3a1b874566b31c751d207493))
23
+ - **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))
24
+
1
25
  # [5.49.0](https://github.com/rsuite/rsuite/compare/v5.48.1...v5.49.0) (2023-12-29)
2
26
 
3
27
  ### 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
  }
@@ -69,7 +69,7 @@
69
69
  .rs-check-item {
70
70
  display: inline-block;
71
71
 
72
- .rs-picker-menu & {
72
+ .rs-picker-popup & {
73
73
  display: block;
74
74
  }
75
75
  }
@@ -135,7 +135,7 @@
135
135
 
136
136
  // node children
137
137
  .rs-check-tree-node-children {
138
- > .rs-check-tree-children {
138
+ > .rs-check-tree-group {
139
139
  position: relative;
140
140
  display: none;
141
141
 
@@ -154,7 +154,7 @@
154
154
  border-left: 1px solid rgba(0, 0, 0, 0.1);
155
155
  }
156
156
 
157
- .rs-picker-menu {
157
+ .rs-picker-popup {
158
158
  display: flex;
159
159
  flex-direction: column;
160
160
 
@@ -55,7 +55,7 @@
55
55
  }
56
56
 
57
57
  // Calendar in DatePicker popup
58
- .rs-picker-menu {
58
+ .rs-picker-popup {
59
59
  @calendar-width: 264px; // This is a fixed value per design.
60
60
 
61
61
  @calendar-padding-x: 15px;
@@ -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
 
@@ -114,10 +114,9 @@
114
114
  @height: ~'input-height-@{size-name}';
115
115
  @useable-height: (@@height - 2px);
116
116
  @vertical: ~'padding-@{size-name}-vertical';
117
- @add-on-padding: ~'input-group-padding-for-add-on-@{size-name}';
118
117
 
119
118
  &.rs-input-group-inside > .rs-input {
120
- padding-right: @@add-on-padding;
119
+ padding-right: 0;
121
120
  }
122
121
 
123
122
  &.rs-input-group {
@@ -102,11 +102,6 @@
102
102
  // Ensure that the input is always above the *appended* addon button for
103
103
  // proper border colors.
104
104
  position: relative;
105
- z-index: @zindex-input;
106
-
107
- &:focus {
108
- z-index: (@zindex-input+1);
109
- }
110
105
  }
111
106
 
112
107
  input.rs-input ~ .rs-input-group-addon,
@@ -136,7 +131,6 @@
136
131
 
137
132
  .rs-input-group-btn,
138
133
  .rs-input-group-addon {
139
- z-index: @zindex-input-group-icon;
140
134
  flex: 0 0 auto;
141
135
  width: auto;
142
136
  }
@@ -380,13 +374,6 @@
380
374
  + .rs-btn {
381
375
  margin-left: -1px;
382
376
  }
383
-
384
- // Bring the "active" button to the front
385
- &:hover,
386
- &:focus,
387
- &:active {
388
- z-index: 2;
389
- }
390
377
  }
391
378
 
392
379
  // Negative margin to only have a 1px border between the two
@@ -401,7 +388,6 @@
401
388
  &:last-child {
402
389
  > .rs-btn,
403
390
  > .rs-btn-group {
404
- z-index: 2;
405
391
  margin-left: -1px;
406
392
  }
407
393
  }
@@ -33,7 +33,7 @@
33
33
  .input-picker-input-sizes();
34
34
  }
35
35
 
36
- .rs-picker-tag-wrapper {
36
+ .rs-picker-textbox {
37
37
  margin-right: @dropdown-toggle-padding-right;
38
38
  min-height: 34px;
39
39
 
@@ -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,38 +253,44 @@
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
283
- .rs-picker-menu {
290
+ .rs-picker-popup {
284
291
  position: absolute;
285
292
  text-align: left;
286
- z-index: @zindex-picker-menu;
293
+ z-index: @zindex-picker-popup;
287
294
  border-radius: @border-radius;
288
295
  background-color: var(--rs-bg-overlay);
289
296
  box-shadow: var(--rs-shadow-overlay);
@@ -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
  }
@@ -219,14 +223,14 @@
219
223
  }
220
224
 
221
225
  .tag-picker-search-input-size(@padding-vertical; @padding-horizontal; @font-size; @line-height;) {
222
- .rs-picker-input:not(.rs-picker-tag) & ~ .rs-picker-tag-wrapper .rs-picker-search-input {
226
+ .rs-picker-input:not(.rs-picker-tag) & ~ .rs-picker-textbox .rs-picker-search-input {
223
227
  padding: (@padding-vertical - 1px) @padding-horizontal;
224
228
  font-size: @font-size;
225
229
  line-height: @line-height;
226
230
  }
227
231
 
228
232
  // FIXME Bad design. Should not set search input styles in a mixin that is used in picker buttons.
229
- .rs-picker-tag & ~ .rs-picker-tag-wrapper {
233
+ .rs-picker-tag & ~ .rs-picker-textbox {
230
234
  padding-bottom: @padding-vertical - 3px;
231
235
 
232
236
  .rs-tag {
@@ -277,7 +281,7 @@
277
281
  );
278
282
  /* stylelint-enable */
279
283
 
280
- .rs-picker-input.rs-picker-tag & ~ .rs-picker-tag-wrapper {
284
+ .rs-picker-input.rs-picker-tag & ~ .rs-picker-textbox {
281
285
  padding-bottom: @padding-y-xs - 1px;
282
286
 
283
287
  .rs-tag {
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
@@ -4,10 +4,10 @@
4
4
  .rs-picker-toggle {
5
5
  padding-right: @dropdown-toggle-padding-right !important;
6
6
  }
7
- .rs-picker-tag-wrapper {
7
+ .rs-picker-textbox {
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
  }
@@ -52,7 +52,7 @@
52
52
  }
53
53
  }
54
54
 
55
- .rs-picker-tag-wrapper {
55
+ .rs-picker-textbox {
56
56
  position: relative;
57
57
  // make sure tag in front of toggle
58
58
  z-index: @zindex-picker-toggle + 1;
@@ -60,6 +60,10 @@
60
60
  }
61
61
  }
62
62
 
63
+ .rs-picker-tag-list {
64
+ display: contents;
65
+ }
66
+
63
67
  .rs-plaintext .rs-tag {
64
68
  margin-left: 6px;
65
69
  margin-bottom: 6px;
@@ -192,7 +192,7 @@
192
192
 
193
193
  // node children
194
194
  .rs-tree-node-children {
195
- > .rs-tree-children {
195
+ > .rs-tree-group {
196
196
  position: relative;
197
197
  display: none;
198
198
 
@@ -211,7 +211,7 @@
211
211
  border-left: 1px solid rgba(0, 0, 0, 0.1);
212
212
  }
213
213
 
214
- .rs-picker-menu {
214
+ .rs-picker-popup {
215
215
  &.rs-tree-menu {
216
216
  padding-top: @picker-menu-padding;
217
217
 
@@ -77,6 +77,14 @@ export interface PickerBaseProps<LocaleType = any> extends WithAsProps, Animatio
77
77
  onOpen?: () => void;
78
78
  /** Called when Modal is closed */
79
79
  onClose?: () => void;
80
+ /**
81
+ * Called when the component is focused.
82
+ */
83
+ onFocus?: React.FocusEventHandler<any>;
84
+ /**
85
+ * Called when the component is blurred.
86
+ */
87
+ onBlur?: React.FocusEventHandler<any>;
80
88
  /** Custom render extra footer */
81
89
  renderExtraFooter?: () => React.ReactNode;
82
90
  }
@@ -11,12 +11,12 @@ var _react = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
12
12
  var _pick = _interopRequireDefault(require("lodash/pick"));
13
13
  var _omit = _interopRequireDefault(require("lodash/omit"));
14
- var _Input = _interopRequireDefault(require("../Input"));
15
14
  var _utils = require("../utils");
16
15
  var _utils2 = require("../Animation/utils");
17
16
  var _Picker = require("../Picker");
18
17
  var _utils3 = require("./utils");
19
18
  var _Plaintext = _interopRequireDefault(require("../Plaintext"));
19
+ var _Combobox = _interopRequireDefault(require("./Combobox"));
20
20
  /**
21
21
  * Autocomplete function of input field.
22
22
  * @see https://rsuitejs.com/components/auto-complete
@@ -69,22 +69,26 @@ 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`
76
79
  var _useFocusItemValue = (0, _Picker.useFocusItemValue)(value, {
77
80
  data: datalist,
81
+ focusToOption: false,
78
82
  callback: onMenuFocus,
79
83
  target: function target() {
80
- return overlayRef.current;
84
+ return overlay.current;
81
85
  }
82
86
  }),
83
87
  focusItemValue = _useFocusItemValue.focusItemValue,
84
88
  setFocusItemValue = _useFocusItemValue.setFocusItemValue,
85
89
  handleKeyDown = _useFocusItemValue.onKeyDown;
86
90
  var handleKeyDownEvent = function handleKeyDownEvent(event) {
87
- if (!overlayRef.current) {
91
+ if (!overlay.current) {
88
92
  return;
89
93
  }
90
94
  (0, _Picker.onMenuKeyDown)(event, {
@@ -109,29 +113,29 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
109
113
  }
110
114
  handleClose();
111
115
  };
112
- var handleSelect = (0, _react.useCallback)(function (item, event) {
116
+ var handleSelect = (0, _utils.useEventCallback)(function (item, event) {
113
117
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(item.value, item, event);
114
- }, [onSelect]);
115
- var handleChangeValue = (0, _react.useCallback)(function (value, event) {
118
+ });
119
+ var handleChangeValue = (0, _utils.useEventCallback)(function (value, event) {
116
120
  onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
117
- }, [onChange]);
121
+ });
118
122
  var handleChange = function handleChange(value, event) {
119
123
  setFocusItemValue('');
120
124
  setValue(value);
121
125
  setFocus(true);
122
126
  handleChangeValue(value, event);
123
127
  };
124
- var handleClose = (0, _react.useCallback)(function () {
128
+ var handleClose = (0, _utils.useEventCallback)(function () {
125
129
  if (isMounted()) {
126
130
  setFocus(false);
127
131
  onClose === null || onClose === void 0 ? void 0 : onClose();
128
132
  }
129
- }, [isMounted, onClose]);
130
- var handleOpen = (0, _react.useCallback)(function () {
133
+ });
134
+ var handleOpen = (0, _utils.useEventCallback)(function () {
131
135
  setFocus(true);
132
136
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
133
- }, [onOpen]);
134
- var handleItemSelect = (0, _react.useCallback)(function (nextItemValue, item, event) {
137
+ });
138
+ var handleItemSelect = (0, _utils.useEventCallback)(function (nextItemValue, item, event) {
135
139
  setValue(nextItemValue);
136
140
  setFocusItemValue(nextItemValue);
137
141
  handleSelect(item, event);
@@ -139,30 +143,25 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
139
143
  handleChangeValue(nextItemValue, event);
140
144
  }
141
145
  handleClose();
142
- }, [value, setValue, handleSelect, handleChangeValue, handleClose, setFocusItemValue]);
143
- var handleInputFocus = (0, _react.useCallback)(function (event) {
146
+ });
147
+ var handleInputFocus = (0, _utils.useEventCallback)(function (event) {
144
148
  onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
145
149
  handleOpen();
146
- }, [onFocus, handleOpen]);
147
- var handleInputBlur = (0, _react.useCallback)(function (event) {
150
+ });
151
+ var handleInputBlur = (0, _utils.useEventCallback)(function (event) {
148
152
  setTimeout(handleClose, 300);
149
153
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
150
- }, [onBlur, handleClose]);
154
+ });
151
155
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
152
156
  withClassPrefix = _useClassNames.withClassPrefix,
153
157
  merge = _useClassNames.merge;
154
158
  var classes = merge(className, withClassPrefix({
155
159
  disabled: disabled
156
160
  }));
157
- var triggerRef = (0, _react.useRef)(null);
158
161
  var _partitionHTMLProps = (0, _utils.partitionHTMLProps)((0, _omit.default)(rest, _Picker.pickTriggerPropKeys)),
159
162
  htmlInputProps = _partitionHTMLProps[0],
160
163
  restProps = _partitionHTMLProps[1];
161
- (0, _Picker.usePublicMethods)(ref, {
162
- triggerRef: triggerRef,
163
- overlayRef: overlayRef
164
- });
165
- var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
164
+ var renderPopup = function renderPopup(positionProps, speakerRef) {
166
165
  var left = positionProps.left,
167
166
  top = positionProps.top,
168
167
  className = positionProps.className;
@@ -170,23 +169,22 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
170
169
  left: left,
171
170
  top: top
172
171
  };
173
- var menu = /*#__PURE__*/_react.default.createElement(_Picker.DropdownMenu, {
174
- id: id ? id + "-listbox" : undefined,
172
+ var menu = /*#__PURE__*/_react.default.createElement(_Picker.Listbox, {
175
173
  classPrefix: "auto-complete-menu",
176
- dropdownMenuItemClassPrefix: "auto-complete-item",
177
- dropdownMenuItemAs: _Picker.DropdownMenuItem,
174
+ listItemClassPrefix: "auto-complete-item",
175
+ listItemAs: _Picker.ListItem,
178
176
  focusItemValue: focusItemValue,
179
177
  onSelect: handleItemSelect,
180
178
  renderMenuItem: renderMenuItem,
181
179
  data: items,
182
180
  className: menuClassName
183
181
  });
184
- return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
185
- ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
182
+ return /*#__PURE__*/_react.default.createElement(_Picker.PickerPopup, {
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
  };
@@ -196,22 +194,26 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
196
194
  localeKey: "unfilled"
197
195
  }, typeof value === 'undefined' ? defaultValue : value);
198
196
  }
197
+ var expanded = open || focus && hasItems;
199
198
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
200
- ref: triggerRef,
199
+ id: id,
200
+ ref: trigger,
201
201
  placement: placement,
202
202
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
203
203
  trigger: ['click', 'focus'],
204
- open: open || focus && hasItems,
205
- speaker: renderDropdownMenu
204
+ open: expanded,
205
+ speaker: renderPopup
206
206
  }, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
207
207
  className: classes,
208
- style: style
209
- }, restProps), /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({}, htmlInputProps, {
210
- id: id,
208
+ style: style,
209
+ ref: root
210
+ }, restProps), /*#__PURE__*/_react.default.createElement(_Combobox.default, (0, _extends2.default)({}, htmlInputProps, {
211
211
  disabled: disabled,
212
212
  value: value,
213
213
  size: size,
214
214
  readOnly: readOnly,
215
+ expanded: expanded,
216
+ focusItemValue: focusItemValue,
215
217
  onBlur: handleInputBlur,
216
218
  onFocus: handleInputFocus,
217
219
  onChange: handleChange,
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { type InputProps } from '../Input';
3
+ interface ComboboxProps extends InputProps {
4
+ expanded?: boolean;
5
+ focusItemValue?: string | null;
6
+ }
7
+ declare const Combobox: React.ForwardRefExoticComponent<ComboboxProps & React.RefAttributes<HTMLInputElement>>;
8
+ export default Combobox;