rsuite 5.48.1 → 5.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/Cascader/styles/index.less +5 -4
  3. package/DatePicker/styles/index.less +18 -11
  4. package/DateRangeInput/package.json +7 -0
  5. package/DateRangePicker/styles/index.less +20 -0
  6. package/Dropdown/styles/index.less +5 -4
  7. package/Dropdown/styles/mixin.less +0 -11
  8. package/InputGroup/styles/index.less +1 -0
  9. package/Picker/styles/index.less +51 -24
  10. package/Picker/styles/mixin.less +17 -13
  11. package/README.md +34 -24
  12. package/Sidenav/styles/index.less +2 -0
  13. package/TagInput/styles/index.less +1 -1
  14. package/cjs/AutoComplete/AutoComplete.js +25 -26
  15. package/cjs/Calendar/Calendar.d.ts +5 -1
  16. package/cjs/Calendar/CalendarContainer.d.ts +7 -1
  17. package/cjs/Calendar/CalendarContainer.js +11 -4
  18. package/cjs/Calendar/CalendarHeader.js +2 -0
  19. package/cjs/Calendar/MonthDropdown.js +7 -2
  20. package/cjs/Calendar/MonthDropdownItem.js +2 -2
  21. package/cjs/Calendar/Table.js +6 -1
  22. package/cjs/Calendar/TimeDropdown.js +17 -10
  23. package/cjs/Calendar/types.d.ts +1 -0
  24. package/cjs/Cascader/Cascader.js +46 -48
  25. package/cjs/CheckPicker/CheckPicker.d.ts +2 -2
  26. package/cjs/CheckPicker/CheckPicker.js +33 -36
  27. package/cjs/CheckTreePicker/CheckTreePicker.js +61 -64
  28. package/cjs/CustomProvider/CustomProvider.d.ts +13 -0
  29. package/cjs/CustomProvider/CustomProvider.js +2 -2
  30. package/cjs/DateInput/DateField.d.ts +9 -31
  31. package/cjs/DateInput/DateField.js +61 -12
  32. package/cjs/DateInput/DateInput.d.ts +7 -2
  33. package/cjs/DateInput/DateInput.js +74 -92
  34. package/cjs/DateInput/index.d.ts +4 -0
  35. package/cjs/DateInput/index.js +19 -1
  36. package/cjs/DateInput/useDateInputState.d.ts +7 -31
  37. package/cjs/DateInput/useDateInputState.js +39 -15
  38. package/cjs/DateInput/useIsFocused.d.ts +7 -0
  39. package/cjs/DateInput/useIsFocused.js +28 -0
  40. package/cjs/DateInput/useKeyboardInputEvent.d.ts +10 -0
  41. package/cjs/DateInput/useKeyboardInputEvent.js +44 -0
  42. package/cjs/DateInput/utils.d.ts +23 -1
  43. package/cjs/DateInput/utils.js +155 -51
  44. package/cjs/DatePicker/DatePicker.d.ts +25 -8
  45. package/cjs/DatePicker/DatePicker.js +208 -241
  46. package/cjs/DatePicker/Toolbar.js +5 -22
  47. package/cjs/DatePicker/utils.d.ts +5 -1
  48. package/cjs/DatePicker/utils.js +17 -1
  49. package/cjs/DateRangeInput/DateRangeInput.d.ts +29 -0
  50. package/cjs/DateRangeInput/DateRangeInput.js +244 -0
  51. package/cjs/DateRangeInput/index.d.ts +3 -0
  52. package/cjs/DateRangeInput/index.js +9 -0
  53. package/cjs/DateRangeInput/utils.d.ts +61 -0
  54. package/cjs/DateRangeInput/utils.js +146 -0
  55. package/cjs/DateRangePicker/Calendar.js +24 -23
  56. package/cjs/DateRangePicker/DateRangePicker.d.ts +18 -4
  57. package/cjs/DateRangePicker/DateRangePicker.js +251 -203
  58. package/cjs/DateRangePicker/types.d.ts +11 -3
  59. package/cjs/DateRangePicker/utils.d.ts +2 -1
  60. package/cjs/DateRangePicker/utils.js +7 -5
  61. package/cjs/FormControl/FormControl.d.ts +11 -1
  62. package/cjs/FormControl/FormControl.js +6 -5
  63. package/cjs/Input/Input.d.ts +11 -0
  64. package/cjs/Input/Input.js +11 -8
  65. package/cjs/InputPicker/InputPicker.js +62 -63
  66. package/cjs/MultiCascader/MultiCascader.js +40 -42
  67. package/cjs/Overlay/OverlayTrigger.d.ts +3 -0
  68. package/cjs/Overlay/OverlayTrigger.js +5 -0
  69. package/cjs/Picker/PickerIndicator.d.ts +10 -0
  70. package/cjs/Picker/PickerIndicator.js +49 -0
  71. package/cjs/Picker/PickerLabel.d.ts +9 -0
  72. package/cjs/Picker/PickerLabel.js +23 -0
  73. package/cjs/Picker/PickerToggle.d.ts +17 -22
  74. package/cjs/Picker/PickerToggle.js +52 -177
  75. package/cjs/Picker/index.d.ts +3 -0
  76. package/cjs/Picker/index.js +10 -1
  77. package/cjs/Picker/usePickerRef.d.ts +19 -0
  78. package/cjs/Picker/usePickerRef.js +88 -0
  79. package/cjs/Picker/utils.d.ts +5 -9
  80. package/cjs/Picker/utils.js +22 -89
  81. package/cjs/SelectPicker/SelectPicker.d.ts +2 -2
  82. package/cjs/SelectPicker/SelectPicker.js +39 -42
  83. package/cjs/TreePicker/TreePicker.js +72 -75
  84. package/cjs/index.d.ts +2 -0
  85. package/cjs/index.js +3 -1
  86. package/cjs/locales/index.d.ts +2 -2
  87. package/cjs/utils/constants.d.ts +2 -1
  88. package/cjs/utils/constants.js +1 -0
  89. package/cjs/utils/dateUtils.d.ts +0 -1
  90. package/cjs/utils/dateUtils.js +0 -6
  91. package/cjs/utils/getStringLength.d.ts +2 -0
  92. package/cjs/utils/getStringLength.js +18 -0
  93. package/cjs/utils/index.d.ts +3 -0
  94. package/cjs/utils/index.js +11 -2
  95. package/cjs/utils/useCustom.js +1 -1
  96. package/cjs/utils/useIsomorphicLayoutEffect.d.ts +3 -0
  97. package/cjs/utils/useIsomorphicLayoutEffect.js +9 -0
  98. package/dist/rsuite-no-reset-rtl.css +140 -207
  99. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  100. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  101. package/dist/rsuite-no-reset.css +140 -207
  102. package/dist/rsuite-no-reset.min.css +1 -1
  103. package/dist/rsuite-no-reset.min.css.map +1 -1
  104. package/dist/rsuite-rtl.css +140 -75
  105. package/dist/rsuite-rtl.min.css +1 -1
  106. package/dist/rsuite-rtl.min.css.map +1 -1
  107. package/dist/rsuite.css +140 -75
  108. package/dist/rsuite.js +4833 -258
  109. package/dist/rsuite.js.map +1 -1
  110. package/dist/rsuite.min.css +1 -1
  111. package/dist/rsuite.min.css.map +1 -1
  112. package/dist/rsuite.min.js +1 -1
  113. package/dist/rsuite.min.js.map +1 -1
  114. package/esm/AutoComplete/AutoComplete.js +28 -29
  115. package/esm/Calendar/Calendar.d.ts +5 -1
  116. package/esm/Calendar/CalendarContainer.d.ts +7 -1
  117. package/esm/Calendar/CalendarContainer.js +12 -5
  118. package/esm/Calendar/CalendarHeader.js +2 -0
  119. package/esm/Calendar/MonthDropdown.js +7 -2
  120. package/esm/Calendar/MonthDropdownItem.js +2 -2
  121. package/esm/Calendar/Table.js +6 -1
  122. package/esm/Calendar/TimeDropdown.js +17 -10
  123. package/esm/Calendar/types.d.ts +1 -0
  124. package/esm/Cascader/Cascader.js +49 -51
  125. package/esm/CheckPicker/CheckPicker.d.ts +2 -2
  126. package/esm/CheckPicker/CheckPicker.js +36 -39
  127. package/esm/CheckTreePicker/CheckTreePicker.js +64 -67
  128. package/esm/CustomProvider/CustomProvider.d.ts +13 -0
  129. package/esm/CustomProvider/CustomProvider.js +3 -3
  130. package/esm/DateInput/DateField.d.ts +9 -31
  131. package/esm/DateInput/DateField.js +61 -12
  132. package/esm/DateInput/DateInput.d.ts +7 -2
  133. package/esm/DateInput/DateInput.js +77 -95
  134. package/esm/DateInput/index.d.ts +4 -0
  135. package/esm/DateInput/index.js +4 -0
  136. package/esm/DateInput/useDateInputState.d.ts +7 -31
  137. package/esm/DateInput/useDateInputState.js +41 -18
  138. package/esm/DateInput/useIsFocused.d.ts +7 -0
  139. package/esm/DateInput/useIsFocused.js +22 -0
  140. package/esm/DateInput/useKeyboardInputEvent.d.ts +10 -0
  141. package/esm/DateInput/useKeyboardInputEvent.js +38 -0
  142. package/esm/DateInput/utils.d.ts +23 -1
  143. package/esm/DateInput/utils.js +150 -51
  144. package/esm/DatePicker/DatePicker.d.ts +25 -8
  145. package/esm/DatePicker/DatePicker.js +211 -244
  146. package/esm/DatePicker/Toolbar.js +5 -22
  147. package/esm/DatePicker/utils.d.ts +5 -1
  148. package/esm/DatePicker/utils.js +16 -1
  149. package/esm/DateRangeInput/DateRangeInput.d.ts +29 -0
  150. package/esm/DateRangeInput/DateRangeInput.js +237 -0
  151. package/esm/DateRangeInput/index.d.ts +3 -0
  152. package/esm/DateRangeInput/index.js +3 -0
  153. package/esm/DateRangeInput/utils.d.ts +61 -0
  154. package/esm/DateRangeInput/utils.js +137 -0
  155. package/esm/DateRangePicker/Calendar.js +25 -23
  156. package/esm/DateRangePicker/DateRangePicker.d.ts +18 -4
  157. package/esm/DateRangePicker/DateRangePicker.js +253 -205
  158. package/esm/DateRangePicker/types.d.ts +11 -3
  159. package/esm/DateRangePicker/utils.d.ts +2 -1
  160. package/esm/DateRangePicker/utils.js +7 -5
  161. package/esm/FormControl/FormControl.d.ts +11 -1
  162. package/esm/FormControl/FormControl.js +4 -3
  163. package/esm/Input/Input.d.ts +11 -0
  164. package/esm/Input/Input.js +12 -9
  165. package/esm/InputPicker/InputPicker.js +64 -65
  166. package/esm/MultiCascader/MultiCascader.js +43 -45
  167. package/esm/Overlay/OverlayTrigger.d.ts +3 -0
  168. package/esm/Overlay/OverlayTrigger.js +5 -0
  169. package/esm/Picker/PickerIndicator.d.ts +10 -0
  170. package/esm/Picker/PickerIndicator.js +43 -0
  171. package/esm/Picker/PickerLabel.d.ts +9 -0
  172. package/esm/Picker/PickerLabel.js +17 -0
  173. package/esm/Picker/PickerToggle.d.ts +17 -22
  174. package/esm/Picker/PickerToggle.js +54 -179
  175. package/esm/Picker/index.d.ts +3 -0
  176. package/esm/Picker/index.js +3 -0
  177. package/esm/Picker/usePickerRef.d.ts +19 -0
  178. package/esm/Picker/usePickerRef.js +82 -0
  179. package/esm/Picker/utils.d.ts +5 -9
  180. package/esm/Picker/utils.js +24 -90
  181. package/esm/SelectPicker/SelectPicker.d.ts +2 -2
  182. package/esm/SelectPicker/SelectPicker.js +42 -45
  183. package/esm/TreePicker/TreePicker.js +75 -78
  184. package/esm/index.d.ts +2 -0
  185. package/esm/index.js +1 -0
  186. package/esm/locales/index.d.ts +2 -2
  187. package/esm/utils/constants.d.ts +2 -1
  188. package/esm/utils/constants.js +1 -0
  189. package/esm/utils/dateUtils.d.ts +0 -1
  190. package/esm/utils/dateUtils.js +0 -5
  191. package/esm/utils/getStringLength.d.ts +2 -0
  192. package/esm/utils/getStringLength.js +13 -0
  193. package/esm/utils/index.d.ts +3 -0
  194. package/esm/utils/index.js +4 -1
  195. package/esm/utils/useCustom.js +2 -2
  196. package/esm/utils/useIsomorphicLayoutEffect.d.ts +3 -0
  197. package/esm/utils/useIsomorphicLayoutEffect.js +4 -0
  198. package/package.json +1 -1
  199. package/styles/color-modes/dark.less +1 -0
  200. package/styles/color-modes/high-contrast.less +1 -0
  201. package/styles/color-modes/light.less +1 -0
  202. package/styles/mixins/combobox.less +10 -0
  203. package/styles/normalize.less +230 -231
package/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ # [5.50.0](https://github.com/rsuite/rsuite/compare/v5.49.0...v5.50.0) (2024-01-12)
2
+
3
+ ### Bug Fixes
4
+
5
+ - typo in Next.js guide ([#3555](https://github.com/rsuite/rsuite/issues/3555)) ([77d60cf](https://github.com/rsuite/rsuite/commit/77d60cfeb27e3e52b4003d72114e5164b275a3d2))
6
+
7
+ ### Features
8
+
9
+ - **cra:** supports using CRA to install javascript template ([#3538](https://github.com/rsuite/rsuite/issues/3538)) ([1b697f4](https://github.com/rsuite/rsuite/commit/1b697f4a4f61a7943351c5ca0f46a484c9ea1ac6))
10
+ - **cra:** supports using CRA to install typescript template ([#3540](https://github.com/rsuite/rsuite/issues/3540)) ([bbe3609](https://github.com/rsuite/rsuite/commit/bbe3609d4492e9186e32309f6c6ee6101d5eb83c))
11
+ - **DateRangePicker:** supports date selection by using keyboard ([#3554](https://github.com/rsuite/rsuite/issues/3554)) ([2c8d197](https://github.com/rsuite/rsuite/commit/2c8d1974e018903b3a1b874566b31c751d207493))
12
+ - **FormControl:** added support for `name` setting path of object ([#3511](https://github.com/rsuite/rsuite/issues/3511)) ([03d5396](https://github.com/rsuite/rsuite/commit/03d5396b8a23d88907be9d1864776d61a0a3b963))
13
+
14
+ # [5.49.0](https://github.com/rsuite/rsuite/compare/v5.48.1...v5.49.0) (2023-12-29)
15
+
16
+ ### Bug Fixes
17
+
18
+ - **CSS Reset:** fix `rsuite-no-reset.css` overrides the default styles of the app ([#3527](https://github.com/rsuite/rsuite/issues/3527)) ([dff5804](https://github.com/rsuite/rsuite/commit/dff5804f81c00dfe4f4bb02eac92e070fabcc4f8))
19
+ - **CustomProvider:** fix the flicker when initializing in Dark mode ([#3528](https://github.com/rsuite/rsuite/issues/3528)) ([2bd67fd](https://github.com/rsuite/rsuite/commit/2bd67fd60ddaec9a5925d22e7cee126425b6ad78))
20
+ - **DateRangePicker:** fix layout misalignment due to missing min-width ([#3523](https://github.com/rsuite/rsuite/issues/3523)) ([464af79](https://github.com/rsuite/rsuite/commit/464af7964fe5fb8e434c7113084e6597726f3db6))
21
+
22
+ ### Features
23
+
24
+ - **DatePicker:** supports date selection by using keyboard ([#3515](https://github.com/rsuite/rsuite/issues/3515)) ([bc56cb3](https://github.com/rsuite/rsuite/commit/bc56cb33fb15854a0d3f6c3c3bb6ee3b4036aef5))
25
+ - **DateRangeInput:** add support for DateRangeInput ([#3525](https://github.com/rsuite/rsuite/issues/3525)) ([074245a](https://github.com/rsuite/rsuite/commit/074245a2f5f18028426d896584690d1738606d1c))
26
+ - **Input:** add support for htmlSize prop ([#3526](https://github.com/rsuite/rsuite/issues/3526)) ([62de8ca](https://github.com/rsuite/rsuite/commit/62de8ca14eb2aaf8dde904b3667035cb3f060c23))
27
+
1
28
  ## [5.48.1](https://github.com/rsuite/rsuite/compare/v5.48.0...v5.48.1) (2023-12-22)
2
29
 
3
30
  ### 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
  // ----------------------
@@ -80,6 +80,7 @@
80
80
  margin: 0;
81
81
  padding: 0;
82
82
  list-style: none;
83
+ font-size: @font-size-base;
83
84
  }
84
85
  }
85
86
 
@@ -122,5 +123,5 @@
122
123
  }
123
124
 
124
125
  .rs-picker-cascader-menu-caret {
125
- .dropdown-toggle-caret-common();
126
+ .combobox-indicator-icon();
126
127
  }
@@ -8,17 +8,6 @@
8
8
  // DatePicker Picker
9
9
  // ----------------------
10
10
 
11
- // Change the <caret/> & <clean/> vertical position make it align middle.
12
- .rs-picker-date,
13
- .rs-picker-daterange {
14
- &.rs-picker-default {
15
- .rs-picker-toggle-caret,
16
- .rs-picker-toggle-clean {
17
- top: @padding-y - @picker-default-toggle-border-width;
18
- }
19
- }
20
- }
21
-
22
11
  // Toolbar
23
12
  .rs-picker-toolbar {
24
13
  padding: @calendar-picker-padding;
@@ -34,6 +23,24 @@
34
23
  height: 286px;
35
24
  }
36
25
  }
26
+
27
+ .rs-input-group-addon {
28
+ color: var(--rs-text-secondary);
29
+
30
+ .rs-btn-close {
31
+ padding: 0;
32
+ }
33
+ }
34
+
35
+ &.rs-picker-subtle {
36
+ .rs-input-group {
37
+ border-color: transparent;
38
+ }
39
+ }
40
+
41
+ > .rs-input-group.rs-input-group-inside .rs-input {
42
+ padding-right: 0;
43
+ }
37
44
  }
38
45
 
39
46
  // Predefined Ranges
@@ -0,0 +1,7 @@
1
+ {
2
+ "name": "rsuite/DateRangeInput",
3
+ "private": true,
4
+ "main": "../cjs/DateRangeInput/index.js",
5
+ "module": "../esm/DateRangeInput/index.js",
6
+ "types": "../esm/DateRangeInput/index.d.ts"
7
+ }
@@ -4,6 +4,26 @@
4
4
  @import '../../DatePicker/styles/index';
5
5
  @import '../../Calendar/styles/index';
6
6
 
7
+ .rs-picker-daterange {
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;
19
+ }
20
+ }
21
+
22
+ > .rs-input-group.rs-input-group-inside .rs-input {
23
+ padding-right: 0;
24
+ }
25
+ }
26
+
7
27
  // Date range Picker
8
28
  // ----------------------
9
29
 
@@ -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
 
@@ -35,6 +35,7 @@
35
35
 
36
36
  & & {
37
37
  outline: none !important;
38
+ border-color: transparent !important;
38
39
  }
39
40
 
40
41
  .rs-input-number,
@@ -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
@@ -80,6 +81,26 @@
80
81
  &.rs-picker-focused {
81
82
  box-shadow: var(--rs-state-focus-shadow);
82
83
  }
84
+
85
+ &-label.rs-input-group-addon {
86
+ color: var(--rs-text-primary);
87
+ padding-right: 4px !important;
88
+ }
89
+
90
+ &-loader {
91
+ width: 14px;
92
+ height: 14px;
93
+ display: flex;
94
+ align-items: center;
95
+ }
96
+
97
+ &-error > .rs-input-group {
98
+ border-color: var(--rs-state-error) !important;
99
+
100
+ &:focus-within {
101
+ outline: var(--rs-state-error-outline) !important;
102
+ }
103
+ }
83
104
  }
84
105
 
85
106
  .rs-picker-toggle {
@@ -232,31 +253,37 @@
232
253
  }
233
254
  }
234
255
 
235
- // Picker clear button
236
- .rs-picker-toggle-clean {
237
- .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);
238
260
 
239
- background: inherit;
240
- color: var(--rs-text-secondary);
241
- transition: 0.2s color linear;
242
- cursor: pointer;
261
+ background: inherit;
262
+ color: var(--rs-text-secondary);
263
+ transition: 0.2s color linear;
264
+ cursor: pointer;
243
265
 
244
- &.rs-btn-close {
245
- padding: 4px 0;
246
- }
266
+ &.rs-btn-close {
267
+ padding: 4px 0;
268
+ }
247
269
 
248
- .rs-@{date-picker-prefix} &,
249
- .rs-@{date-range-picker-prefix} & {
250
- 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
+ }
251
274
  }
252
- }
253
275
 
254
- // Picker toggle caret
255
- .rs-picker-toggle-caret {
256
- // Extend Dropdown toggle caret style
257
- .dropdown-toggle-caret-common();
276
+ // Picker toggle caret
277
+ .rs-picker-caret-icon {
278
+ // Extend Dropdown toggle caret style
279
+ .combobox-indicator-icon();
258
280
 
259
- color: var(--rs-text-secondary);
281
+ color: var(--rs-text-secondary);
282
+ }
283
+
284
+ .rs-picker-loader {
285
+ .combobox-indicator-icon();
286
+ }
260
287
  }
261
288
 
262
289
  // Picker Menu
@@ -103,13 +103,15 @@
103
103
  padding-right: (@padding-horizontal + @dropdown-caret-width + @dropdown-caret-padding);
104
104
  }
105
105
 
106
- .rs-picker-toggle-caret,
107
- .rs-picker-toggle-clean {
108
- top: @padding-vertical;
109
- right: @padding-horizontal;
110
-
111
- .rs-picker-default & {
112
- top: @padding-vertical - @picker-default-toggle-border-width;
106
+ .rs-picker-toggle-indicator {
107
+ .rs-picker-caret-icon,
108
+ .rs-picker-clean {
109
+ top: @padding-vertical;
110
+ right: @padding-horizontal;
111
+
112
+ .rs-picker-default & {
113
+ top: @padding-vertical - @picker-default-toggle-border-width;
114
+ }
113
115
  }
114
116
  }
115
117
  }
@@ -144,13 +146,15 @@
144
146
 
145
147
  padding-right: (@padding-horizontal + @calendar-caret-width + @dropdown-caret-padding);
146
148
 
147
- .rs-picker-toggle-clean,
148
- .rs-picker-toggle-caret {
149
- top: @top;
150
- right: @padding-horizontal;
149
+ .rs-picker-toggle-indicator {
150
+ .rs-picker-clean,
151
+ .rs-picker-caret-icon {
152
+ top: @top;
153
+ right: @padding-horizontal;
151
154
 
152
- .rs-picker-subtle & {
153
- top: @top - @picker-default-toggle-border-width;
155
+ .rs-picker-subtle & {
156
+ top: @top - @picker-default-toggle-border-width;
157
+ }
154
158
  }
155
159
  }
156
160
  }
package/README.md CHANGED
@@ -8,11 +8,13 @@ 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/main/graph/badge.svg?token=HGeKd0BD3t)](https://codecov.io/gh/rsuite/rsuite)
11
+ [![npm bundle size][npm-bundle-size-img]][npm-bundle-size]
12
+ [![rsuite.min.js][rsuite-min-js-img]][rsuite-min-js]
13
+ [![codecov][codecov-img]][codecov]
12
14
  [![Discord][discord-svg]][discord-invite]
13
15
  [![Gitter][gitter-svg]][gitter]
14
16
  [![Gitter][gitter-cn-svg]][gitter-cn]
15
- [![Gitpod ready-to-code](https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/rsuite/rsuite)
17
+ [![Gitpod ready-to-code][gitpod-img]][gitpod]
16
18
 
17
19
  React Suite is a set of react component libraries for enterprise system products. It is a well-thought-out and developer-friendly UI framework.
18
20
 
@@ -94,8 +96,8 @@ You can go through [full documentation][rsuite-doc-guide] or start with followin
94
96
  - [Use in Electron][demo-electron]
95
97
  - [Use in Flow][demo-flow-app]
96
98
  - [Use in TypeScript][demo-typescript-app]
97
- - [Use in Next.js][demo-nextjs]
98
- - [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]
99
101
  - [Use in UmiJS][demo-umi-app]
100
102
  - [Use in Snowpack][demo-snowpack]
101
103
  - [Use in Vite][demo-vite]
@@ -145,11 +147,15 @@ This project exists thanks to all the people who contribute.
145
147
 
146
148
  React Suite is [MIT licensed][license]. Copyright (c) 2016-present, HYPERS.
147
149
 
148
- [readm-cn]: https://github.com/rsuite/rsuite/blob/master/README_zh.md
150
+ [readm-cn]: https://github.com/rsuite/rsuite/blob/main/README_zh.md
149
151
  [npm-svg]: https://img.shields.io/npm/v/rsuite
150
152
  [npm-home]: https://www.npmjs.com/package/rsuite
151
- [actions-svg]: https://github.com/rsuite/rsuite/workflows/Node.js%20CI/badge.svg?branch=master
152
- [actions-home]: https://github.com/rsuite/rsuite/actions?query=branch%3Amaster+workflow%3A%22Node.js+CI%22
153
+ [npm-bundle-size-img]: https://badgen.net/bundlephobia/minzip/rsuite?icon=npm
154
+ [npm-bundle-size]: https://bundlephobia.com/package/rsuite
155
+ [rsuite-min-js-img]: https://img.badgesize.io/https:/unpkg.com/rsuite/dist/rsuite.min.js?label=rsuite.min.js&compression=gzip
156
+ [rsuite-min-js]: https://unpkg.com/browse/rsuite/dist/rsuite.min.js
157
+ [actions-svg]: https://github.com/rsuite/rsuite/workflows/Node.js%20CI/badge.svg?branch=main
158
+ [actions-home]: https://github.com/rsuite/rsuite/actions?query=branch%3Amain+workflow%3A%22Node.js+CI%22
153
159
  [discord-svg]: https://img.shields.io/badge/Discord-Join%20chat%20%E2%86%92-738bd7.svg
154
160
  [discord-invite]: https://discord.gg/R8mnjwh
155
161
  [rsuite-design]: https://rsuitejs.com/design/default
@@ -160,30 +166,34 @@ React Suite is [MIT licensed][license]. Copyright (c) 2016-present, HYPERS.
160
166
  [rsuite-doc-guide-rtl]: https://rsuitejs.com/en/guide/rtl
161
167
  [rsuite-components-overview]: https://rsuitejs.com/en/components/overview
162
168
  [release-notes]: https://github.com/rsuite/rsuite/releases
163
- [contributing]: https://github.com/rsuite/rsuite/blob/master/CONTRIBUTING.md
169
+ [contributing]: https://github.com/rsuite/rsuite/blob/main/CONTRIBUTING.md
164
170
  [prettierrc]: https://github.com/rsuite/rsuite/wiki/.prettierrc
165
171
  [issues-11]: https://github.com/rsuite/rsuite/issues/11
166
172
  [opencollective-svg]: https://opencollective.com/rsuite/tiers/backer.svg?avatarHeight=36
167
173
  [opencollective-home]: https://opencollective.com/rsuite
168
- [license]: https://github.com/rsuite/rsuite/blob/master/LICENSE
174
+ [license]: https://github.com/rsuite/rsuite/blob/main/LICENSE
169
175
  [rsuite-sample]: https://sample.rsuitejs.com/
170
176
  [gitter]: https://gitter.im/rsuite/rsuite?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
171
177
  [gitter-svg]: https://img.shields.io/gitter/room/rsuite/rsuite?label=chat-english
172
178
  [gitter-cn]: https://gitter.im/rsuite/rsuite-CN?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge
173
179
  [gitter-cn-svg]: https://img.shields.io/gitter/room/rsuite/rsuite?label=chat-chinese
174
180
  [demo-admin]: https://github.com/rsuite/rsuite-management-system
175
- [demo-modular-import]: https://github.com/rsuite/rsuite/tree/master/examples/with-babel-preset-rsuite
176
- [demo-cdn]: https://github.com/rsuite/rsuite/tree/master/examples/cdn
177
- [demo-create-react-app]: https://github.com/rsuite/rsuite/tree/master/examples/create-react-app
178
- [demo-electron]: https://github.com/rsuite/rsuite/tree/master/examples/with-electron
179
- [demo-intl-app]: https://github.com/rsuite/rsuite/tree/master/examples/custom-i18n
180
- [demo-multiple-themes]: https://github.com/rsuite/rsuite/tree/master/examples/custom-multiple-themes
181
- [demo-flow-app]: https://github.com/rsuite/rsuite/tree/master/examples/with-flow
182
- [demo-typescript-app]: https://github.com/rsuite/rsuite/tree/master/examples/with-typescript
183
- [demo-nextjs]: https://github.com/rsuite/rsuite/tree/master/examples/with-nextjs
184
- [demo-umi-app]: https://github.com/rsuite/rsuite/tree/master/examples/with-umi
185
- [demo-rtlcss]: https://github.com/rsuite/rsuite/tree/master/examples/with-rtlcss
186
- [demo-postcss-rtl]: https://github.com/rsuite/rsuite/tree/master/examples/with-postcss-rtl
187
- [demo-nextjs-typescript]: https://github.com/rsuite/rsuite/tree/master/examples/with-nextjs-typescript
188
- [demo-snowpack]: https://github.com/rsuite/rsuite/tree/master/examples/with-snowpack
189
- [demo-vite]: https://github.com/rsuite/rsuite/tree/master/examples/with-vite
181
+ [demo-modular-import]: https://github.com/rsuite/rsuite/tree/main/examples/with-babel-preset-rsuite
182
+ [demo-cdn]: https://github.com/rsuite/rsuite/tree/main/examples/cdn
183
+ [demo-create-react-app]: https://github.com/rsuite/rsuite/tree/main/examples/create-react-app
184
+ [demo-electron]: https://github.com/rsuite/rsuite/tree/main/examples/with-electron
185
+ [demo-intl-app]: https://github.com/rsuite/rsuite/tree/main/examples/custom-i18n
186
+ [demo-multiple-themes]: https://github.com/rsuite/rsuite/tree/main/examples/custom-multiple-themes
187
+ [demo-flow-app]: https://github.com/rsuite/rsuite/tree/main/examples/with-flow
188
+ [demo-typescript-app]: https://github.com/rsuite/rsuite/tree/main/examples/with-typescript
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
191
+ [demo-umi-app]: https://github.com/rsuite/rsuite/tree/main/examples/with-umi
192
+ [demo-rtlcss]: https://github.com/rsuite/rsuite/tree/main/examples/with-rtlcss
193
+ [demo-postcss-rtl]: https://github.com/rsuite/rsuite/tree/main/examples/with-postcss-rtl
194
+ [demo-snowpack]: https://github.com/rsuite/rsuite/tree/main/examples/with-snowpack
195
+ [demo-vite]: https://github.com/rsuite/rsuite/tree/main/examples/with-vite
196
+ [codecov]: https://codecov.io/gh/rsuite/rsuite
197
+ [codecov-img]: https://codecov.io/gh/rsuite/rsuite/branch/main/graph/badge.svg?token=HGeKd0BD3t
198
+ [gitpod]: https://gitpod.io/#https://github.com/rsuite/rsuite
199
+ [gitpod-img]: https://img.shields.io/badge/Gitpod-ready--to--code-blue?logo=gitpod
@@ -49,6 +49,7 @@
49
49
  background: none;
50
50
  padding-right: (@sidenav-padding-horizontal + @sidenav-dropdown-toggle-caret-width);
51
51
  position: relative;
52
+ border-width: 0;
52
53
 
53
54
  .rs-sidenav-collapse-in & {
54
55
  padding-left: @sidenav-level2-retract;
@@ -178,6 +179,7 @@
178
179
  display: block;
179
180
  outline: 0;
180
181
  overflow: hidden;
182
+ text-decoration: none;
181
183
 
182
184
  &:hover,
183
185
  &:focus {
@@ -7,7 +7,7 @@
7
7
  .rs-picker-tag-wrapper {
8
8
  margin-right: @dropdown-toggle-padding-right !important;
9
9
  }
10
- .rs-picker-toggle-clean {
10
+ .rs-picker-clean {
11
11
  right: (@dropdown-toggle-padding-right / 2 - 6) !important;
12
12
  }
13
13
  }
@@ -69,7 +69,10 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
69
69
  setFocus = _useState[1];
70
70
  var items = (datalist === null || datalist === void 0 ? void 0 : datalist.filter((0, _utils3.shouldDisplay)(filterBy, value))) || [];
71
71
  var hasItems = items.length > 0;
72
- var overlayRef = (0, _react.useRef)(null);
72
+ var _usePickerRef = (0, _Picker.usePickerRef)(ref),
73
+ trigger = _usePickerRef.trigger,
74
+ overlay = _usePickerRef.overlay,
75
+ root = _usePickerRef.root;
73
76
  var isMounted = (0, _utils.useIsMounted)();
74
77
 
75
78
  // Used to hover the focuse item when trigger `onKeydown`
@@ -77,14 +80,14 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
77
80
  data: datalist,
78
81
  callback: onMenuFocus,
79
82
  target: function target() {
80
- return overlayRef.current;
83
+ return overlay.current;
81
84
  }
82
85
  }),
83
86
  focusItemValue = _useFocusItemValue.focusItemValue,
84
87
  setFocusItemValue = _useFocusItemValue.setFocusItemValue,
85
88
  handleKeyDown = _useFocusItemValue.onKeyDown;
86
89
  var handleKeyDownEvent = function handleKeyDownEvent(event) {
87
- if (!overlayRef.current) {
90
+ if (!overlay.current) {
88
91
  return;
89
92
  }
90
93
  (0, _Picker.onMenuKeyDown)(event, {
@@ -109,29 +112,29 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
109
112
  }
110
113
  handleClose();
111
114
  };
112
- var handleSelect = (0, _react.useCallback)(function (item, event) {
115
+ var handleSelect = (0, _utils.useEventCallback)(function (item, event) {
113
116
  onSelect === null || onSelect === void 0 ? void 0 : onSelect(item.value, item, event);
114
- }, [onSelect]);
115
- var handleChangeValue = (0, _react.useCallback)(function (value, event) {
117
+ });
118
+ var handleChangeValue = (0, _utils.useEventCallback)(function (value, event) {
116
119
  onChange === null || onChange === void 0 ? void 0 : onChange(value, event);
117
- }, [onChange]);
120
+ });
118
121
  var handleChange = function handleChange(value, event) {
119
122
  setFocusItemValue('');
120
123
  setValue(value);
121
124
  setFocus(true);
122
125
  handleChangeValue(value, event);
123
126
  };
124
- var handleClose = (0, _react.useCallback)(function () {
127
+ var handleClose = (0, _utils.useEventCallback)(function () {
125
128
  if (isMounted()) {
126
129
  setFocus(false);
127
130
  onClose === null || onClose === void 0 ? void 0 : onClose();
128
131
  }
129
- }, [isMounted, onClose]);
130
- var handleOpen = (0, _react.useCallback)(function () {
132
+ });
133
+ var handleOpen = (0, _utils.useEventCallback)(function () {
131
134
  setFocus(true);
132
135
  onOpen === null || onOpen === void 0 ? void 0 : onOpen();
133
- }, [onOpen]);
134
- var handleItemSelect = (0, _react.useCallback)(function (nextItemValue, item, event) {
136
+ });
137
+ var handleItemSelect = (0, _utils.useEventCallback)(function (nextItemValue, item, event) {
135
138
  setValue(nextItemValue);
136
139
  setFocusItemValue(nextItemValue);
137
140
  handleSelect(item, event);
@@ -139,29 +142,24 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
139
142
  handleChangeValue(nextItemValue, event);
140
143
  }
141
144
  handleClose();
142
- }, [value, setValue, handleSelect, handleChangeValue, handleClose, setFocusItemValue]);
143
- var handleInputFocus = (0, _react.useCallback)(function (event) {
145
+ });
146
+ var handleInputFocus = (0, _utils.useEventCallback)(function (event) {
144
147
  onFocus === null || onFocus === void 0 ? void 0 : onFocus(event);
145
148
  handleOpen();
146
- }, [onFocus, handleOpen]);
147
- var handleInputBlur = (0, _react.useCallback)(function (event) {
149
+ });
150
+ var handleInputBlur = (0, _utils.useEventCallback)(function (event) {
148
151
  setTimeout(handleClose, 300);
149
152
  onBlur === null || onBlur === void 0 ? void 0 : onBlur(event);
150
- }, [onBlur, handleClose]);
153
+ });
151
154
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
152
155
  withClassPrefix = _useClassNames.withClassPrefix,
153
156
  merge = _useClassNames.merge;
154
157
  var classes = merge(className, withClassPrefix({
155
158
  disabled: disabled
156
159
  }));
157
- var triggerRef = (0, _react.useRef)(null);
158
160
  var _partitionHTMLProps = (0, _utils.partitionHTMLProps)((0, _omit.default)(rest, _Picker.pickTriggerPropKeys)),
159
161
  htmlInputProps = _partitionHTMLProps[0],
160
162
  restProps = _partitionHTMLProps[1];
161
- (0, _Picker.usePublicMethods)(ref, {
162
- triggerRef: triggerRef,
163
- overlayRef: overlayRef
164
- });
165
163
  var renderDropdownMenu = function renderDropdownMenu(positionProps, speakerRef) {
166
164
  var left = positionProps.left,
167
165
  top = positionProps.top,
@@ -182,11 +180,11 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
182
180
  className: menuClassName
183
181
  });
184
182
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerOverlay, {
185
- ref: (0, _utils.mergeRefs)(overlayRef, speakerRef),
183
+ ref: (0, _utils.mergeRefs)(overlay, speakerRef),
186
184
  style: styles,
187
185
  className: className,
188
186
  onKeyDown: handleKeyDownEvent,
189
- target: triggerRef,
187
+ target: trigger,
190
188
  autoWidth: menuAutoWidth
191
189
  }, renderMenu ? renderMenu(menu) : menu);
192
190
  };
@@ -197,7 +195,7 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
197
195
  }, typeof value === 'undefined' ? defaultValue : value);
198
196
  }
199
197
  return /*#__PURE__*/_react.default.createElement(_Picker.PickerToggleTrigger, {
200
- ref: triggerRef,
198
+ ref: trigger,
201
199
  placement: placement,
202
200
  pickerProps: (0, _pick.default)(props, _Picker.pickTriggerPropKeys),
203
201
  trigger: ['click', 'focus'],
@@ -205,7 +203,8 @@ var AutoComplete = /*#__PURE__*/_react.default.forwardRef(function (props, ref)
205
203
  speaker: renderDropdownMenu
206
204
  }, /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
207
205
  className: classes,
208
- style: style
206
+ style: style,
207
+ ref: root
209
208
  }, restProps), /*#__PURE__*/_react.default.createElement(_Input.default, (0, _extends2.default)({}, htmlInputProps, {
210
209
  id: id,
211
210
  disabled: disabled,
@@ -7,7 +7,11 @@ export interface CalendarProps extends WithAsProps {
7
7
  value?: Date;
8
8
  /** Default value */
9
9
  defaultValue?: Date;
10
- /** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
10
+ /**
11
+ * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
12
+ *
13
+ * @see https://en.wikipedia.org/wiki/ISO_week_date
14
+ */
11
15
  isoWeek?: boolean;
12
16
  /** Display a compact calendar */
13
17
  compact?: boolean;
@@ -6,6 +6,8 @@ import { CalendarState } from './useCalendarState';
6
6
  export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivElement>, 'onSelect' | 'onChange' | 'onMouseMove'>, CalendarHeaderProps {
7
7
  /** The panel render based on date range */
8
8
  dateRange?: Date[];
9
+ /** The Id of the target element that triggers the opening of the calendar */
10
+ targetId?: string;
9
11
  /** Date displayed on the current page */
10
12
  calendarDate: Date;
11
13
  /** Whether to show week numbers */
@@ -30,7 +32,11 @@ export interface CalendarProps extends WithAsProps, Omit<HTMLAttributes<HTMLDivE
30
32
  hideSeconds?: (second: number, date: Date) => boolean;
31
33
  /** The value that mouse hover on in range selection */
32
34
  hoverRangeValue?: [Date, Date];
33
- /** ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day */
35
+ /**
36
+ * ISO 8601 standard, each calendar week begins on Monday and Sunday on the seventh day
37
+ *
38
+ * @see https://en.wikipedia.org/wiki/ISO_week_date
39
+ */
34
40
  isoWeek?: boolean;
35
41
  /** Limit showing how many years in the future */
36
42
  limitEndYear?: number;