rsuite 5.58.1 → 5.59.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 (105) hide show
  1. package/Avatar/styles/index.css +74 -3
  2. package/Avatar/styles/index.less +25 -1
  3. package/Avatar/styles/mixin.less +8 -0
  4. package/AvatarGroup/styles/index.css +2 -0
  5. package/AvatarGroup/styles/index.less +2 -0
  6. package/CHANGELOG.md +29 -0
  7. package/CheckPicker/styles/index.css +2 -0
  8. package/CheckTree/styles/index.css +2 -0
  9. package/CheckTreePicker/styles/index.css +2 -0
  10. package/Checkbox/styles/index.css +2 -0
  11. package/Checkbox/styles/index.less +2 -0
  12. package/Drawer/styles/index.css +4 -0
  13. package/Drawer/styles/index.less +5 -0
  14. package/MultiCascadeTree/styles/index.css +2 -0
  15. package/MultiCascader/styles/index.css +2 -0
  16. package/Placeholder/styles/index.css +42 -6
  17. package/Placeholder/styles/index.less +18 -9
  18. package/Placeholder/styles/mixin.less +7 -0
  19. package/Sidenav/styles/index.css +3 -0
  20. package/Sidenav/styles/index.less +4 -0
  21. package/TagInput/styles/index.css +2 -0
  22. package/TagPicker/styles/index.css +2 -0
  23. package/cjs/Avatar/Avatar.d.ts +30 -5
  24. package/cjs/Avatar/Avatar.js +56 -22
  25. package/cjs/Avatar/AvatarIcon.d.ts +3 -0
  26. package/cjs/Avatar/AvatarIcon.js +24 -0
  27. package/cjs/Avatar/useImage.d.ts +39 -0
  28. package/cjs/Avatar/useImage.js +74 -0
  29. package/cjs/AvatarGroup/AvatarGroup.d.ts +15 -6
  30. package/cjs/AvatarGroup/AvatarGroup.js +12 -12
  31. package/cjs/Checkbox/Checkbox.js +1 -1
  32. package/cjs/DateInput/DateField.js +5 -0
  33. package/cjs/Form/Form.js +40 -56
  34. package/cjs/Form/FormContext.d.ts +1 -1
  35. package/cjs/Form/{useFormClassNames.d.ts → hooks/useFormClassNames.d.ts} +2 -2
  36. package/cjs/Form/{useFormClassNames.js → hooks/useFormClassNames.js} +2 -2
  37. package/cjs/Form/hooks/useFormError.d.ts +6 -0
  38. package/cjs/Form/hooks/useFormError.js +31 -0
  39. package/cjs/Form/hooks/useFormValue.d.ts +6 -0
  40. package/cjs/Form/hooks/useFormValue.js +31 -0
  41. package/cjs/Form/index.d.ts +1 -1
  42. package/cjs/Form/index.js +3 -9
  43. package/cjs/FormControl/FormControl.js +1 -1
  44. package/cjs/FormControl/useRegisterModel.d.ts +1 -1
  45. package/cjs/Modal/Modal.js +36 -21
  46. package/cjs/Placeholder/PlaceholderGraph.d.ts +13 -1
  47. package/cjs/Placeholder/PlaceholderGrid.d.ts +27 -1
  48. package/cjs/Placeholder/PlaceholderGrid.js +10 -13
  49. package/cjs/Placeholder/PlaceholderParagraph.d.ts +24 -1
  50. package/cjs/Placeholder/PlaceholderParagraph.js +13 -9
  51. package/cjs/internals/Overlay/Modal.js +2 -1
  52. package/dist/rsuite-no-reset-rtl.css +124 -9
  53. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  54. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  55. package/dist/rsuite-no-reset.css +124 -9
  56. package/dist/rsuite-no-reset.min.css +1 -1
  57. package/dist/rsuite-no-reset.min.css.map +1 -1
  58. package/dist/rsuite-rtl.css +124 -9
  59. package/dist/rsuite-rtl.min.css +1 -1
  60. package/dist/rsuite-rtl.min.css.map +1 -1
  61. package/dist/rsuite.css +124 -9
  62. package/dist/rsuite.js +122 -36
  63. package/dist/rsuite.js.map +1 -1
  64. package/dist/rsuite.min.css +1 -1
  65. package/dist/rsuite.min.css.map +1 -1
  66. package/dist/rsuite.min.js +1 -1
  67. package/dist/rsuite.min.js.map +1 -1
  68. package/esm/Avatar/Avatar.d.ts +30 -5
  69. package/esm/Avatar/Avatar.js +58 -24
  70. package/esm/Avatar/AvatarIcon.d.ts +3 -0
  71. package/esm/Avatar/AvatarIcon.js +18 -0
  72. package/esm/Avatar/useImage.d.ts +39 -0
  73. package/esm/Avatar/useImage.js +69 -0
  74. package/esm/AvatarGroup/AvatarGroup.d.ts +15 -6
  75. package/esm/AvatarGroup/AvatarGroup.js +12 -12
  76. package/esm/Checkbox/Checkbox.js +1 -1
  77. package/esm/DateInput/DateField.js +5 -0
  78. package/esm/Form/Form.js +40 -56
  79. package/esm/Form/FormContext.d.ts +1 -1
  80. package/esm/Form/{useFormClassNames.d.ts → hooks/useFormClassNames.d.ts} +2 -2
  81. package/esm/Form/{useFormClassNames.js → hooks/useFormClassNames.js} +2 -2
  82. package/esm/Form/hooks/useFormError.d.ts +6 -0
  83. package/esm/Form/hooks/useFormError.js +26 -0
  84. package/esm/Form/hooks/useFormValue.d.ts +6 -0
  85. package/esm/Form/hooks/useFormValue.js +26 -0
  86. package/esm/Form/index.d.ts +1 -1
  87. package/esm/Form/index.js +1 -1
  88. package/esm/FormControl/FormControl.js +1 -1
  89. package/esm/FormControl/useRegisterModel.d.ts +1 -1
  90. package/esm/Modal/Modal.js +36 -21
  91. package/esm/Placeholder/PlaceholderGraph.d.ts +13 -1
  92. package/esm/Placeholder/PlaceholderGrid.d.ts +27 -1
  93. package/esm/Placeholder/PlaceholderGrid.js +10 -13
  94. package/esm/Placeholder/PlaceholderParagraph.d.ts +24 -1
  95. package/esm/Placeholder/PlaceholderParagraph.js +12 -8
  96. package/esm/internals/Overlay/Modal.js +2 -1
  97. package/package.json +2 -2
  98. package/styles/color-modes/dark.less +2 -0
  99. package/styles/color-modes/high-contrast.less +2 -0
  100. package/styles/color-modes/light.less +2 -0
  101. package/styles/variables.less +12 -20
  102. /package/cjs/Form/{useSchemaModel.d.ts → hooks/useSchemaModel.d.ts} +0 -0
  103. /package/cjs/Form/{useSchemaModel.js → hooks/useSchemaModel.js} +0 -0
  104. /package/esm/Form/{useSchemaModel.d.ts → hooks/useSchemaModel.d.ts} +0 -0
  105. /package/esm/Form/{useSchemaModel.js → hooks/useSchemaModel.js} +0 -0
@@ -3,22 +3,31 @@
3
3
  --rs-gray-0: #fff;
4
4
  --rs-gray-300: #d9d9d9;
5
5
  --rs-gray-400: #c5c6c7;
6
+ --rs-gray-900: #272c36;
6
7
  --rs-avatar-bg: var(--rs-gray-300);
7
8
  --rs-avatar-text: var(--rs-gray-0);
9
+ --rs-avatar-offset-color: var(--rs-gray-0);
10
+ --rs-avatar-ring-color: var(--rs-avatar-bg);
8
11
  }
9
12
  .rs-theme-dark {
10
13
  --rs-gray-0: #fff;
11
14
  --rs-gray-300: #858b94;
12
15
  --rs-gray-400: #6a6f76;
16
+ --rs-gray-900: #0f131a;
13
17
  --rs-avatar-bg: var(--rs-gray-400);
14
18
  --rs-avatar-text: var(--rs-gray-0);
19
+ --rs-avatar-offset-color: var(--rs-gray-900);
20
+ --rs-avatar-ring-color: var(--rs-avatar-bg);
15
21
  }
16
22
  .rs-theme-high-contrast {
17
23
  --rs-gray-0: #fff;
18
24
  --rs-gray-300: #858b94;
19
25
  --rs-gray-400: #6a6f76;
26
+ --rs-gray-900: #0f131a;
20
27
  --rs-avatar-bg: var(--rs-gray-400);
21
28
  --rs-avatar-text: var(--rs-gray-0);
29
+ --rs-avatar-offset-color: var(--rs-gray-900);
30
+ --rs-avatar-ring-color: var(--rs-avatar-bg);
22
31
  }
23
32
  /* stylelint-disable */
24
33
  *[class*='rs-'] {
@@ -74,13 +83,47 @@
74
83
  background: var(--rs-avatar-bg);
75
84
  text-align: center;
76
85
  padding: 0 2px;
77
- overflow: hidden;
78
- text-overflow: ellipsis;
79
- white-space: nowrap;
86
+ }
87
+ .rs-avatar-icon {
88
+ position: absolute;
89
+ }
90
+ .rs-avatar-bordered {
91
+ --rs-ring-offset-shadow: var(--rs-avatar-offset-color) 0 0 0 2px;
92
+ --rs-ring-shadow: var(--rs-avatar-ring-color) 0 0 0 4px;
93
+ -webkit-box-shadow: var(--rs-ring-offset-shadow), var(--rs-ring-shadow), 0 0 #0000;
94
+ box-shadow: var(--rs-ring-offset-shadow), var(--rs-ring-shadow), 0 0 #0000;
80
95
  }
81
96
  .rs-avatar-circle {
82
97
  border-radius: 50%;
83
98
  }
99
+ .rs-avatar-xxl {
100
+ width: 120px;
101
+ height: 120px;
102
+ font-size: 48px;
103
+ }
104
+ .rs-avatar-xxl > .rs-icon {
105
+ font-size: 84px;
106
+ height: 84px;
107
+ }
108
+ .rs-avatar-xxl > .rs-avatar-image {
109
+ width: 120px;
110
+ height: 120px;
111
+ line-height: 120px;
112
+ }
113
+ .rs-avatar-xl {
114
+ width: 90px;
115
+ height: 90px;
116
+ font-size: 36px;
117
+ }
118
+ .rs-avatar-xl > .rs-icon {
119
+ font-size: 63px;
120
+ height: 63px;
121
+ }
122
+ .rs-avatar-xl > .rs-avatar-image {
123
+ width: 90px;
124
+ height: 90px;
125
+ line-height: 90px;
126
+ }
84
127
  .rs-avatar-lg {
85
128
  width: 60px;
86
129
  height: 60px;
@@ -123,5 +166,33 @@
123
166
  height: 20px;
124
167
  line-height: 20px;
125
168
  }
169
+ .rs-avatar-red {
170
+ --rs-avatar-bg: var(--rs-red-500);
171
+ --rs-avatar-ring-color: var(--rs-red-500);
172
+ }
173
+ .rs-avatar-orange {
174
+ --rs-avatar-bg: var(--rs-orange-500);
175
+ --rs-avatar-ring-color: var(--rs-orange-500);
176
+ }
177
+ .rs-avatar-yellow {
178
+ --rs-avatar-bg: var(--rs-yellow-500);
179
+ --rs-avatar-ring-color: var(--rs-yellow-500);
180
+ }
181
+ .rs-avatar-green {
182
+ --rs-avatar-bg: var(--rs-green-500);
183
+ --rs-avatar-ring-color: var(--rs-green-500);
184
+ }
185
+ .rs-avatar-cyan {
186
+ --rs-avatar-bg: var(--rs-cyan-500);
187
+ --rs-avatar-ring-color: var(--rs-cyan-500);
188
+ }
189
+ .rs-avatar-blue {
190
+ --rs-avatar-bg: var(--rs-blue-500);
191
+ --rs-avatar-ring-color: var(--rs-blue-500);
192
+ }
193
+ .rs-avatar-violet {
194
+ --rs-avatar-bg: var(--rs-violet-500);
195
+ --rs-avatar-ring-color: var(--rs-violet-500);
196
+ }
126
197
 
127
198
  /*# sourceMappingURL=index.css.map */
@@ -28,14 +28,31 @@
28
28
  background: var(--rs-avatar-bg);
29
29
  text-align: center;
30
30
  padding: 0 2px;
31
- .ellipsis-basic();
32
31
  }
33
32
  }
34
33
 
34
+ &-icon {
35
+ position: absolute;
36
+ }
37
+
38
+ &-bordered {
39
+ --rs-ring-offset-shadow: var(--rs-avatar-offset-color) 0 0 0 2px;
40
+ --rs-ring-shadow: var(--rs-avatar-ring-color) 0 0 0 4px;
41
+ box-shadow: var(--rs-ring-offset-shadow), var(--rs-ring-shadow), 0 0 #0000;
42
+ }
43
+
35
44
  &-circle {
36
45
  border-radius: 50%;
37
46
  }
38
47
 
48
+ &-xxl {
49
+ .avatar-xxl();
50
+ }
51
+
52
+ &-xl {
53
+ .avatar-xl();
54
+ }
55
+
39
56
  &-lg {
40
57
  .avatar-lg();
41
58
  }
@@ -48,3 +65,10 @@
48
65
  .avatar-xs();
49
66
  }
50
67
  }
68
+
69
+ each(@spectrum, .(@color) {
70
+ .rs-avatar-@{color} {
71
+ --rs-avatar-bg: var(~'--rs-@{color}-500');
72
+ --rs-avatar-ring-color: var(~'--rs-@{color}-500');
73
+ }
74
+ });
@@ -17,6 +17,14 @@
17
17
  }
18
18
  }
19
19
 
20
+ .avatar-xxl() {
21
+ .avatar-size(@avatar-size-xxl, @avatar-font-size-xxl);
22
+ }
23
+
24
+ .avatar-xl() {
25
+ .avatar-size(@avatar-size-xl, @avatar-font-size-xl);
26
+ }
27
+
20
28
  .avatar-lg() {
21
29
  .avatar-size(@avatar-size-lg, @avatar-font-size-lg);
22
30
  }
@@ -20,6 +20,8 @@
20
20
  -webkit-box-align: end;
21
21
  -ms-flex-align: end;
22
22
  align-items: flex-end;
23
+ -ms-flex-wrap: wrap;
24
+ flex-wrap: wrap;
23
25
  }
24
26
  .rs-avatar-group-stack .rs-avatar {
25
27
  -webkit-box-sizing: content-box;
@@ -4,6 +4,8 @@
4
4
  .rs-avatar-group {
5
5
  display: flex;
6
6
  align-items: flex-end;
7
+ flex-wrap: wrap;
8
+
7
9
  &-stack {
8
10
  .rs-avatar {
9
11
  box-sizing: content-box;
package/CHANGELOG.md CHANGED
@@ -1,3 +1,32 @@
1
+ ## [5.59.1](https://github.com/rsuite/rsuite/compare/v5.59.0...v5.59.1) (2024-04-12)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **AvatarGroup:** fix avatar deformation in group ([#3727](https://github.com/rsuite/rsuite/issues/3727)) ([466e428](https://github.com/rsuite/rsuite/commit/466e4285d794f081f90e79fc28e8f57783c438c1))
7
+ * **Checkbox:** fix Checkbox not clickable in Firefox ([#3728](https://github.com/rsuite/rsuite/issues/3728)) ([2fc23aa](https://github.com/rsuite/rsuite/commit/2fc23aa841532f4340f5bef9a7a70009b912a4b9))
8
+ * **docs:** typo on Form name ([#3723](https://github.com/rsuite/rsuite/issues/3723)) ([8f328e1](https://github.com/rsuite/rsuite/commit/8f328e10e16cbe978aa6737baefa67ca2b4f6867))
9
+ * **Placeholder:** fix Placeholder SSR and CSR mismatch ([#3735](https://github.com/rsuite/rsuite/issues/3735)) ([8a9c8bd](https://github.com/rsuite/rsuite/commit/8a9c8bd81003b54f930e3dfd4f99356db44f125f))
10
+ * **Sidenav:** fix secondary menu cannot expand ([#3732](https://github.com/rsuite/rsuite/issues/3732)) ([d680fa3](https://github.com/rsuite/rsuite/commit/d680fa3b7b498c72148ccff95b5ea1ad10ad7382))
11
+ * remove debug code ([#3720](https://github.com/rsuite/rsuite/issues/3720)) ([637b8dc](https://github.com/rsuite/rsuite/commit/637b8dc6bb19a6775eda692534282a0dce1ebfbc))
12
+
13
+
14
+
15
+ # [5.59.0](https://github.com/rsuite/rsuite/compare/v5.58.1...v5.59.0) (2024-04-03)
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **DatePicker,DateRangePicker:** fix the date change when the input date is incomplete ([#3719](https://github.com/rsuite/rsuite/issues/3719)) ([24f162f](https://github.com/rsuite/rsuite/commit/24f162f6ee403dbca0829159f3a099167b278bcf))
21
+ * **Drawer:** fix the focus cannot be moved to elements outside the Drawer when `backdrop=false` ([#3716](https://github.com/rsuite/rsuite/issues/3716)) ([f044445](https://github.com/rsuite/rsuite/commit/f044445e97d653debcb1772a70c51b4a30d44f6b))
22
+
23
+
24
+ ### Features
25
+
26
+ * **Avatar:** add support for `bordered` and `color` props ([#3711](https://github.com/rsuite/rsuite/issues/3711)) ([3ca7dc1](https://github.com/rsuite/rsuite/commit/3ca7dc1eeaf46461fff107012dac972d4ef20c1b))
27
+
28
+
29
+
1
30
  ## [5.58.1](https://github.com/rsuite/rsuite/compare/v5.58.0...v5.58.1) (2024-03-28)
2
31
 
3
32
 
@@ -456,6 +456,8 @@
456
456
  right: -10px;
457
457
  bottom: -10px;
458
458
  left: -10px;
459
+ min-width: 36px;
460
+ min-height: 36px;
459
461
  }
460
462
  .rs-checkbox-control::before,
461
463
  .rs-checkbox-control .rs-checkbox-inner::before,
@@ -3173,6 +3173,8 @@ textarea.rs-input-group-inside.rs-input-group-xs > .rs-input-group-btn {
3173
3173
  right: -10px;
3174
3174
  bottom: -10px;
3175
3175
  left: -10px;
3176
+ min-width: 36px;
3177
+ min-height: 36px;
3176
3178
  }
3177
3179
  .rs-checkbox-control::before,
3178
3180
  .rs-checkbox-control .rs-checkbox-inner::before,
@@ -3173,6 +3173,8 @@ textarea.rs-input-group-inside.rs-input-group-xs > .rs-input-group-btn {
3173
3173
  right: -10px;
3174
3174
  bottom: -10px;
3175
3175
  left: -10px;
3176
+ min-width: 36px;
3177
+ min-height: 36px;
3176
3178
  }
3177
3179
  .rs-checkbox-control::before,
3178
3180
  .rs-checkbox-control .rs-checkbox-inner::before,
@@ -207,6 +207,8 @@
207
207
  right: -10px;
208
208
  bottom: -10px;
209
209
  left: -10px;
210
+ min-width: 36px;
211
+ min-height: 36px;
210
212
  }
211
213
  .rs-checkbox-control::before,
212
214
  .rs-checkbox-control .rs-checkbox-inner::before,
@@ -86,6 +86,8 @@
86
86
  right: -@checkbox-sense-width;
87
87
  bottom: -@checkbox-sense-width;
88
88
  left: -@checkbox-sense-width;
89
+ min-width: 36px;
90
+ min-height: 36px;
89
91
  }
90
92
 
91
93
  &::before,
@@ -108,6 +108,9 @@
108
108
  width: 100%;
109
109
  height: 100%;
110
110
  }
111
+ .rs-drawer-wrapper.rs-drawer-no-backdrop {
112
+ pointer-events: none;
113
+ }
111
114
  .rs-drawer {
112
115
  display: none;
113
116
  overflow: hidden;
@@ -117,6 +120,7 @@
117
120
  -webkit-box-shadow: var(--rs-drawer-shadow);
118
121
  box-shadow: 0 4px 4px rgba(0, 0, 0, 0.12), 0 0 10px rgba(0, 0, 0, 0.06);
119
122
  box-shadow: var(--rs-drawer-shadow);
123
+ pointer-events: auto;
120
124
  outline: 0;
121
125
  }
122
126
  .rs-drawer-open.rs-drawer-has-backdrop {
@@ -9,6 +9,10 @@
9
9
  left: 0;
10
10
  width: 100%;
11
11
  height: 100%;
12
+
13
+ &.rs-drawer-no-backdrop {
14
+ pointer-events: none;
15
+ }
12
16
  }
13
17
 
14
18
  // Container that the drawer scrolls within
@@ -18,6 +22,7 @@
18
22
  position: fixed;
19
23
  z-index: @zindex-drawer;
20
24
  box-shadow: var(--rs-drawer-shadow);
25
+ pointer-events: auto;
21
26
  // Prevent Chrome on Windows from adding a focus outline. For details, see
22
27
  // https://github.com/twbs/bootstrap/pull/10951.
23
28
  outline: 0;
@@ -3367,6 +3367,8 @@ textarea.rs-input-group-inside.rs-input-group-xs > .rs-input-group-btn {
3367
3367
  right: -10px;
3368
3368
  bottom: -10px;
3369
3369
  left: -10px;
3370
+ min-width: 36px;
3371
+ min-height: 36px;
3370
3372
  }
3371
3373
  .rs-checkbox-control::before,
3372
3374
  .rs-checkbox-control .rs-checkbox-inner::before,
@@ -3385,6 +3385,8 @@ textarea.rs-input-group-inside.rs-input-group-xs > .rs-input-group-btn {
3385
3385
  right: -10px;
3386
3386
  bottom: -10px;
3387
3387
  left: -10px;
3388
+ min-width: 36px;
3389
+ min-height: 36px;
3388
3390
  }
3389
3391
  .rs-checkbox-control::before,
3390
3392
  .rs-checkbox-control .rs-checkbox-inner::before,
@@ -119,12 +119,40 @@
119
119
  background: var(--rs-bg-card);
120
120
  position: absolute;
121
121
  }
122
- .rs-placeholder-paragraph-rows {
122
+ .rs-placeholder-paragraph-group {
123
123
  width: 100%;
124
124
  }
125
- .rs-placeholder-paragraph-rows > p {
125
+ .rs-placeholder-paragraph .rs-placeholder-row:nth-child(9) {
126
+ width: 75%;
127
+ }
128
+ .rs-placeholder-paragraph .rs-placeholder-row:nth-child(8) {
129
+ width: 60%;
130
+ }
131
+ .rs-placeholder-paragraph .rs-placeholder-row:nth-child(7) {
132
+ width: 85%;
133
+ }
134
+ .rs-placeholder-paragraph .rs-placeholder-row:nth-child(6) {
135
+ width: 70%;
136
+ }
137
+ .rs-placeholder-paragraph .rs-placeholder-row:nth-child(5) {
138
+ width: 90%;
139
+ }
140
+ .rs-placeholder-paragraph .rs-placeholder-row:nth-child(4) {
141
+ width: 65%;
142
+ }
143
+ .rs-placeholder-paragraph .rs-placeholder-row:nth-child(3) {
144
+ width: 80%;
145
+ }
146
+ .rs-placeholder-paragraph .rs-placeholder-row:nth-child(2) {
147
+ width: 50%;
148
+ }
149
+ .rs-placeholder-paragraph .rs-placeholder-row:nth-child(1) {
150
+ width: 100%;
151
+ }
152
+ .rs-placeholder-row {
126
153
  background-color: #f2f2f5;
127
154
  background-color: var(--rs-placeholder);
155
+ width: 100%;
128
156
  }
129
157
  .rs-placeholder-grid-col {
130
158
  -webkit-box-flex: 1;
@@ -141,15 +169,23 @@
141
169
  -ms-flex-align: end;
142
170
  align-items: flex-end;
143
171
  }
144
- .rs-placeholder-grid-col > p {
145
- background-color: #f2f2f5;
146
- background-color: var(--rs-placeholder);
147
- }
148
172
  .rs-placeholder-grid-col:first-child {
149
173
  -webkit-box-align: start;
150
174
  -ms-flex-align: start;
151
175
  align-items: flex-start;
152
176
  }
177
+ .rs-placeholder-grid-col .rs-placeholder-row {
178
+ width: 30%;
179
+ }
180
+ .rs-placeholder-grid-col .rs-placeholder-row:nth-child(3) {
181
+ width: 35%;
182
+ }
183
+ .rs-placeholder-grid-col .rs-placeholder-row:nth-child(2) {
184
+ width: 25%;
185
+ }
186
+ .rs-placeholder-grid-col .rs-placeholder-row:nth-child(1) {
187
+ width: 50%;
188
+ }
153
189
  .rs-placeholder-graph {
154
190
  display: inline-block;
155
191
  width: 100%;
@@ -1,4 +1,5 @@
1
- @import '../../styles/common';
1
+ @import '../../styles/common.less';
2
+ @import './mixin.less';
2
3
 
3
4
  //
4
5
  // Placeholder
@@ -67,15 +68,21 @@
67
68
  }
68
69
  }
69
70
 
70
- &-rows {
71
+ &-group {
71
72
  width: 100%;
73
+ }
72
74
 
73
- & > p {
74
- background-color: var(--rs-placeholder);
75
- }
75
+ .rs-placeholder-row {
76
+ @widths: 100% 50% 80% 65% 90% 70% 85% 60% 75%;
77
+ .generate-row-width(@widths, length(@widths));
76
78
  }
77
79
  }
78
80
 
81
+ &-row {
82
+ background-color: var(--rs-placeholder);
83
+ width: 100%;
84
+ }
85
+
79
86
  &-grid {
80
87
  &-col {
81
88
  flex: 1;
@@ -83,13 +90,15 @@
83
90
  flex-direction: column;
84
91
  align-items: flex-end;
85
92
 
86
- & > p {
87
- background-color: var(--rs-placeholder);
88
- }
89
-
90
93
  &:first-child {
91
94
  align-items: flex-start; //first col align left
92
95
  }
96
+
97
+ .rs-placeholder-row {
98
+ width: 30%;
99
+ @widths: 50% 25% 35%;
100
+ .generate-row-width(@widths, length(@widths));
101
+ }
93
102
  }
94
103
  }
95
104
 
@@ -0,0 +1,7 @@
1
+ .generate-row-width(@widths, @n) when (@n > 0) {
2
+ &:nth-child(@{n}) {
3
+ width: extract(@widths, @n);
4
+ }
5
+
6
+ .generate-row-width(@widths, @n - 1);
7
+ }
@@ -154,6 +154,9 @@
154
154
  -webkit-transition: none;
155
155
  transition: none;
156
156
  }
157
+ .rs-sidenav-nav .rs-dropdown-item {
158
+ display: block;
159
+ }
157
160
  .rs-sidenav-nav > .rs-sidenav-item,
158
161
  .rs-sidenav-nav > .rs-dropdown {
159
162
  margin: 0 !important;
@@ -34,6 +34,10 @@
34
34
  });
35
35
  }
36
36
 
37
+ .rs-dropdown-item {
38
+ display: block;
39
+ }
40
+
37
41
  > .rs-sidenav-item,
38
42
  > .rs-dropdown {
39
43
  margin: 0 !important;
@@ -469,6 +469,8 @@
469
469
  right: -10px;
470
470
  bottom: -10px;
471
471
  left: -10px;
472
+ min-width: 36px;
473
+ min-height: 36px;
472
474
  }
473
475
  .rs-checkbox-control::before,
474
476
  .rs-checkbox-control .rs-checkbox-inner::before,
@@ -469,6 +469,8 @@
469
469
  right: -10px;
470
470
  bottom: -10px;
471
471
  left: -10px;
472
+ min-width: 36px;
473
+ min-height: 36px;
472
474
  }
473
475
  .rs-checkbox-control::before,
474
476
  .rs-checkbox-control .rs-checkbox-inner::before,
@@ -1,8 +1,14 @@
1
1
  import React from 'react';
2
- import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types/common';
2
+ import { WithAsProps, RsRefForwardingComponent, TypeAttributes } from '../@types/common';
3
+ import { type Size } from '../AvatarGroup/AvatarGroup';
3
4
  export interface AvatarProps extends WithAsProps {
4
- /** A avatar can have different sizes */
5
- size?: TypeAttributes.Size;
5
+ /**
6
+ * A avatar can have different sizes.
7
+ *
8
+ * @default 'md'
9
+ * @version xxl and xs added in v5.59.0
10
+ */
11
+ size?: Size;
6
12
  /**
7
13
  * The `src` attribute for the `img` element.
8
14
  */
@@ -21,10 +27,29 @@ export interface AvatarProps extends WithAsProps {
21
27
  * It can be used to listen for the loading error event.
22
28
  */
23
29
  imgProps?: React.ImgHTMLAttributes<HTMLImageElement>;
24
- /** Set avatar shape to circle */
30
+ /**
31
+ * Set avatar shape to circle
32
+ */
25
33
  circle?: boolean;
26
- /** This attribute defines an alternative text description of the image */
34
+ /**
35
+ * This attribute defines an alternative text description of the image
36
+ */
27
37
  alt?: string;
38
+ /**
39
+ * Show a border around the avatar.
40
+ * @version 5.59.0
41
+ */
42
+ bordered?: boolean;
43
+ /**
44
+ * Sets the avatar background color.
45
+ * @version 5.59.0
46
+ */
47
+ color?: TypeAttributes.Color;
48
+ /**
49
+ * Callback fired when the image failed to load.
50
+ * @version 5.59.0
51
+ */
52
+ onError?: OnErrorEventHandler;
28
53
  }
29
54
  /**
30
55
  * The Avatar component is used to represent user or brand.
@@ -5,53 +5,87 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
6
6
  exports.__esModule = true;
7
7
  exports.default = void 0;
8
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
8
  var _taggedTemplateLiteralLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteralLoose"));
9
+ var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
10
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
11
  var _react = _interopRequireWildcard(require("react"));
12
12
  var _propTypes = _interopRequireDefault(require("prop-types"));
13
13
  var _utils = require("../utils");
14
14
  var _AvatarGroup = require("../AvatarGroup/AvatarGroup");
15
15
  var _propTypes2 = require("../internals/propTypes");
16
- var _templateObject;
16
+ var _AvatarIcon = _interopRequireDefault(require("./AvatarIcon"));
17
+ var _useImage2 = _interopRequireDefault(require("./useImage"));
18
+ var _templateObject, _templateObject2;
17
19
  /**
18
20
  * The Avatar component is used to represent user or brand.
19
21
  * @see https://rsuitejs.com/components/avatar
20
22
  */
21
23
  var Avatar = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
22
- var _props$classPrefix = props.classPrefix,
23
- classPrefix = _props$classPrefix === void 0 ? 'avatar' : _props$classPrefix,
24
- _props$as = props.as,
24
+ var _extends2;
25
+ var _useContext = (0, _react.useContext)(_AvatarGroup.AvatarGroupContext),
26
+ groupSize = _useContext.size,
27
+ spacing = _useContext.spacing;
28
+ var _props$as = props.as,
25
29
  Component = _props$as === void 0 ? 'div' : _props$as,
26
- sizeProp = props.size,
30
+ bordered = props.bordered,
31
+ alt = props.alt,
27
32
  className = props.className,
28
33
  children = props.children,
34
+ circle = props.circle,
35
+ color = props.color,
36
+ _props$classPrefix = props.classPrefix,
37
+ classPrefix = _props$classPrefix === void 0 ? 'avatar' : _props$classPrefix,
38
+ _props$size = props.size,
39
+ size = _props$size === void 0 ? groupSize : _props$size,
29
40
  src = props.src,
30
41
  srcSet = props.srcSet,
31
42
  sizes = props.sizes,
43
+ style = props.style,
32
44
  imgProps = props.imgProps,
33
- circle = props.circle,
34
- alt = props.alt,
35
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["classPrefix", "as", "size", "className", "children", "src", "srcSet", "sizes", "imgProps", "circle", "alt"]);
36
- var _useContext = (0, _react.useContext)(_AvatarGroup.AvatarGroupContext),
37
- size = _useContext.size;
45
+ onError = props.onError,
46
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "bordered", "alt", "className", "children", "circle", "color", "classPrefix", "size", "src", "srcSet", "sizes", "style", "imgProps", "onError"]);
38
47
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
39
48
  withClassPrefix = _useClassNames.withClassPrefix,
40
49
  prefix = _useClassNames.prefix,
41
50
  merge = _useClassNames.merge;
42
- var classes = merge(className, withClassPrefix(sizeProp || size, {
43
- circle: circle
51
+ var classes = merge(className, withClassPrefix(size, color, {
52
+ circle: circle,
53
+ bordered: bordered
44
54
  }));
45
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
46
- ref: ref,
47
- className: classes
48
- }), src || srcSet ? /*#__PURE__*/_react.default.createElement("img", (0, _extends2.default)({}, imgProps, {
49
- className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["image"]))),
55
+ var imageProps = (0, _extends3.default)({}, imgProps, {
56
+ alt: alt,
50
57
  src: src,
51
- sizes: sizes,
52
58
  srcSet: srcSet,
53
- alt: alt
54
- })) : children);
59
+ sizes: sizes
60
+ });
61
+ var _useImage = (0, _useImage2.default)((0, _extends3.default)({}, imageProps, {
62
+ onError: onError
63
+ })),
64
+ loaded = _useImage.loaded;
65
+ var _useCustom = (0, _utils.useCustom)('Avatar'),
66
+ rtl = _useCustom.rtl;
67
+ var altComponent = (0, _react.useMemo)(function () {
68
+ if (alt) {
69
+ return /*#__PURE__*/_react.default.createElement("span", {
70
+ role: "img",
71
+ "aria-label": alt
72
+ }, alt);
73
+ }
74
+ return null;
75
+ }, [alt]);
76
+ var placeholder = children || altComponent || /*#__PURE__*/_react.default.createElement(_AvatarIcon.default, {
77
+ className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["icon"])))
78
+ });
79
+ var image = loaded ? /*#__PURE__*/_react.default.createElement("img", (0, _extends3.default)({}, imageProps, {
80
+ className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["image"])))
81
+ })) : placeholder;
82
+ var margin = rtl ? 'marginLeft' : 'marginRight';
83
+ var insertStyles = (0, _utils.isIE)() && spacing ? (0, _extends3.default)((_extends2 = {}, _extends2[margin] = spacing, _extends2), style) : style;
84
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends3.default)({}, rest, {
85
+ ref: ref,
86
+ className: classes,
87
+ style: insertStyles
88
+ }), src ? image : placeholder);
55
89
  });
56
90
  Avatar.displayName = 'Avatar';
57
91
  Avatar.propTypes = {
@@ -59,7 +93,7 @@ Avatar.propTypes = {
59
93
  classPrefix: _propTypes.default.string,
60
94
  className: _propTypes.default.string,
61
95
  children: _propTypes.default.node,
62
- size: (0, _propTypes2.oneOf)(['lg', 'md', 'sm', 'xs']),
96
+ size: (0, _propTypes2.oneOf)(['xxl', 'xl', 'lg', 'md', 'sm', 'xs']),
63
97
  src: _propTypes.default.string,
64
98
  sizes: _propTypes.default.string,
65
99
  srcSet: _propTypes.default.string,