@tiny-design/react 1.3.0 → 1.4.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.
- package/es/button/style/_index.scss +16 -11
- package/es/button/style/index.css +26 -5
- package/es/pop-confirm/style/_index.scss +4 -0
- package/es/pop-confirm/style/index.css +4 -0
- package/es/slider/style/_index.scss +1 -9
- package/es/slider/style/index.css +1 -6
- package/es/speed-dial/style/_index.scss +6 -7
- package/es/speed-dial/style/index.css +5 -5
- package/es/style/base.css +24 -3
- package/es/tag/style/_index.scss +24 -0
- package/es/tag/style/index.css +20 -0
- package/es/tag/types.d.ts +2 -1
- package/es/tag/types.js +7 -2
- package/es/tag/types.js.map +1 -1
- package/es/time-picker/style/_index.scss +13 -0
- package/es/time-picker/style/index.css +10 -0
- package/es/time-picker/time-panel.js +28 -28
- package/es/time-picker/time-panel.js.map +1 -1
- package/es/time-picker/time-picker.js +50 -29
- package/es/time-picker/time-picker.js.map +1 -1
- package/lib/button/style/_index.scss +16 -11
- package/lib/button/style/index.css +26 -5
- package/lib/pop-confirm/style/_index.scss +4 -0
- package/lib/pop-confirm/style/index.css +4 -0
- package/lib/slider/style/_index.scss +1 -9
- package/lib/slider/style/index.css +1 -6
- package/lib/speed-dial/style/_index.scss +6 -7
- package/lib/speed-dial/style/index.css +5 -5
- package/lib/style/base.css +24 -3
- package/lib/tag/style/_index.scss +24 -0
- package/lib/tag/style/index.css +20 -0
- package/lib/tag/types.d.ts +2 -1
- package/lib/tag/types.js +7 -2
- package/lib/tag/types.js.map +1 -1
- package/lib/time-picker/style/_index.scss +13 -0
- package/lib/time-picker/style/index.css +10 -0
- package/lib/time-picker/time-panel.js +28 -28
- package/lib/time-picker/time-panel.js.map +1 -1
- package/lib/time-picker/time-picker.js +50 -29
- package/lib/time-picker/time-picker.js.map +1 -1
- package/package.json +3 -3
|
@@ -24,7 +24,7 @@ $btn-prefix: #{$prefix}-btn;
|
|
|
24
24
|
line-height: $btn-line-height;
|
|
25
25
|
|
|
26
26
|
&__loader {
|
|
27
|
-
@include loader
|
|
27
|
+
@include loader;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
&__icon-container, &__loader {
|
|
@@ -91,19 +91,27 @@ $btn-prefix: #{$prefix}-btn;
|
|
|
91
91
|
}
|
|
92
92
|
|
|
93
93
|
&_info {
|
|
94
|
-
@include button-style(#fff, var(--ty-color-info), var(--ty-color-info)
|
|
94
|
+
@include button-style(#fff, var(--ty-color-info), var(--ty-color-info),
|
|
95
|
+
var(--ty-color-info-hover), var(--ty-color-info-hover), #fff,
|
|
96
|
+
var(--ty-color-info-active), var(--ty-color-info-active), #fff);
|
|
95
97
|
}
|
|
96
98
|
|
|
97
99
|
&_success {
|
|
98
|
-
@include button-style(#fff, var(--ty-color-success), var(--ty-color-success)
|
|
100
|
+
@include button-style(#fff, var(--ty-color-success), var(--ty-color-success),
|
|
101
|
+
var(--ty-color-success-hover), var(--ty-color-success-hover), #fff,
|
|
102
|
+
var(--ty-color-success-active), var(--ty-color-success-active), #fff);
|
|
99
103
|
}
|
|
100
104
|
|
|
101
105
|
&_warning {
|
|
102
|
-
@include button-style(#fff, var(--ty-color-warning), var(--ty-color-warning)
|
|
106
|
+
@include button-style(#fff, var(--ty-color-warning), var(--ty-color-warning),
|
|
107
|
+
var(--ty-color-warning-hover), var(--ty-color-warning-hover), #fff,
|
|
108
|
+
var(--ty-color-warning-active), var(--ty-color-warning-active), #fff);
|
|
103
109
|
}
|
|
104
110
|
|
|
105
111
|
&_danger {
|
|
106
|
-
@include button-style(#fff, var(--ty-color-danger), var(--ty-color-danger)
|
|
112
|
+
@include button-style(#fff, var(--ty-color-danger), var(--ty-color-danger),
|
|
113
|
+
var(--ty-color-danger-hover), var(--ty-color-danger-hover), #fff,
|
|
114
|
+
var(--ty-color-danger-active), var(--ty-color-danger-active), #fff);
|
|
107
115
|
}
|
|
108
116
|
|
|
109
117
|
// Sizes
|
|
@@ -135,13 +143,10 @@ $btn-prefix: #{$prefix}-btn;
|
|
|
135
143
|
position: relative;
|
|
136
144
|
pointer-events: none;
|
|
137
145
|
|
|
138
|
-
|
|
146
|
+
&::before {
|
|
139
147
|
content: '';
|
|
140
148
|
position: absolute;
|
|
141
|
-
|
|
142
|
-
right: -1px;
|
|
143
|
-
bottom: -1px;
|
|
144
|
-
left: -1px;
|
|
149
|
+
inset: -1px;
|
|
145
150
|
z-index: 1;
|
|
146
151
|
display: block;
|
|
147
152
|
background: var(--ty-btn-loading-bg);
|
|
@@ -208,7 +213,7 @@ $btn-prefix: #{$prefix}-btn;
|
|
|
208
213
|
&_danger {
|
|
209
214
|
.#{$btn-prefix} {
|
|
210
215
|
&:not(:first-child) {
|
|
211
|
-
border-left-color:
|
|
216
|
+
border-left-color: rgb(255 255 255 / 20%);
|
|
212
217
|
}
|
|
213
218
|
}
|
|
214
219
|
}
|
|
@@ -212,13 +212,19 @@
|
|
|
212
212
|
}
|
|
213
213
|
.ty-btn_info:hover {
|
|
214
214
|
color: #fff;
|
|
215
|
+
background: var(--ty-color-info-hover);
|
|
216
|
+
border-color: var(--ty-color-info-hover);
|
|
215
217
|
}
|
|
216
218
|
.ty-btn_info:focus {
|
|
217
219
|
color: #fff;
|
|
220
|
+
background: var(--ty-color-info-hover);
|
|
221
|
+
border-color: var(--ty-color-info-hover);
|
|
218
222
|
z-index: 1;
|
|
219
223
|
}
|
|
220
224
|
.ty-btn_info:active {
|
|
221
225
|
color: #fff;
|
|
226
|
+
background: var(--ty-color-info-active);
|
|
227
|
+
border-color: var(--ty-color-info-active);
|
|
222
228
|
}
|
|
223
229
|
.ty-btn_info:disabled {
|
|
224
230
|
color: var(--ty-btn-disabled-color);
|
|
@@ -232,13 +238,19 @@
|
|
|
232
238
|
}
|
|
233
239
|
.ty-btn_success:hover {
|
|
234
240
|
color: #fff;
|
|
241
|
+
background: var(--ty-color-success-hover);
|
|
242
|
+
border-color: var(--ty-color-success-hover);
|
|
235
243
|
}
|
|
236
244
|
.ty-btn_success:focus {
|
|
237
245
|
color: #fff;
|
|
246
|
+
background: var(--ty-color-success-hover);
|
|
247
|
+
border-color: var(--ty-color-success-hover);
|
|
238
248
|
z-index: 1;
|
|
239
249
|
}
|
|
240
250
|
.ty-btn_success:active {
|
|
241
251
|
color: #fff;
|
|
252
|
+
background: var(--ty-color-success-active);
|
|
253
|
+
border-color: var(--ty-color-success-active);
|
|
242
254
|
}
|
|
243
255
|
.ty-btn_success:disabled {
|
|
244
256
|
color: var(--ty-btn-disabled-color);
|
|
@@ -252,13 +264,19 @@
|
|
|
252
264
|
}
|
|
253
265
|
.ty-btn_warning:hover {
|
|
254
266
|
color: #fff;
|
|
267
|
+
background: var(--ty-color-warning-hover);
|
|
268
|
+
border-color: var(--ty-color-warning-hover);
|
|
255
269
|
}
|
|
256
270
|
.ty-btn_warning:focus {
|
|
257
271
|
color: #fff;
|
|
272
|
+
background: var(--ty-color-warning-hover);
|
|
273
|
+
border-color: var(--ty-color-warning-hover);
|
|
258
274
|
z-index: 1;
|
|
259
275
|
}
|
|
260
276
|
.ty-btn_warning:active {
|
|
261
277
|
color: #fff;
|
|
278
|
+
background: var(--ty-color-warning-active);
|
|
279
|
+
border-color: var(--ty-color-warning-active);
|
|
262
280
|
}
|
|
263
281
|
.ty-btn_warning:disabled {
|
|
264
282
|
color: var(--ty-btn-disabled-color);
|
|
@@ -272,13 +290,19 @@
|
|
|
272
290
|
}
|
|
273
291
|
.ty-btn_danger:hover {
|
|
274
292
|
color: #fff;
|
|
293
|
+
background: var(--ty-color-danger-hover);
|
|
294
|
+
border-color: var(--ty-color-danger-hover);
|
|
275
295
|
}
|
|
276
296
|
.ty-btn_danger:focus {
|
|
277
297
|
color: #fff;
|
|
298
|
+
background: var(--ty-color-danger-hover);
|
|
299
|
+
border-color: var(--ty-color-danger-hover);
|
|
278
300
|
z-index: 1;
|
|
279
301
|
}
|
|
280
302
|
.ty-btn_danger:active {
|
|
281
303
|
color: #fff;
|
|
304
|
+
background: var(--ty-color-danger-active);
|
|
305
|
+
border-color: var(--ty-color-danger-active);
|
|
282
306
|
}
|
|
283
307
|
.ty-btn_danger:disabled {
|
|
284
308
|
color: var(--ty-btn-disabled-color);
|
|
@@ -313,13 +337,10 @@
|
|
|
313
337
|
position: relative;
|
|
314
338
|
pointer-events: none;
|
|
315
339
|
}
|
|
316
|
-
.ty-btn_loading
|
|
340
|
+
.ty-btn_loading::before {
|
|
317
341
|
content: "";
|
|
318
342
|
position: absolute;
|
|
319
|
-
|
|
320
|
-
right: -1px;
|
|
321
|
-
bottom: -1px;
|
|
322
|
-
left: -1px;
|
|
343
|
+
inset: -1px;
|
|
323
344
|
z-index: 1;
|
|
324
345
|
display: block;
|
|
325
346
|
background: var(--ty-btn-loading-bg);
|
|
@@ -5,21 +5,13 @@
|
|
|
5
5
|
box-sizing: border-box;
|
|
6
6
|
cursor: pointer;
|
|
7
7
|
|
|
8
|
-
&_horizontal.#{$prefix}-slider {
|
|
9
|
-
margin-bottom: $slider-margin-bottom-with-marks;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
&_vertical.#{$prefix}-slider {
|
|
13
|
-
margin-right: $slider-margin-bottom-with-marks;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
8
|
&_horizontal {
|
|
9
|
+
width: 100%;
|
|
17
10
|
min-height: $slider-size;
|
|
18
11
|
margin: 13px 7px;
|
|
19
12
|
padding: 4px 0;
|
|
20
13
|
|
|
21
14
|
.#{$prefix}-slider {
|
|
22
|
-
|
|
23
15
|
&__rail {
|
|
24
16
|
width: 100%;
|
|
25
17
|
height: $slider-track-size;
|
|
@@ -3,13 +3,8 @@
|
|
|
3
3
|
box-sizing: border-box;
|
|
4
4
|
cursor: pointer;
|
|
5
5
|
}
|
|
6
|
-
.ty-slider_horizontal.ty-slider {
|
|
7
|
-
margin-bottom: 30px;
|
|
8
|
-
}
|
|
9
|
-
.ty-slider_vertical.ty-slider {
|
|
10
|
-
margin-right: 30px;
|
|
11
|
-
}
|
|
12
6
|
.ty-slider_horizontal {
|
|
7
|
+
width: 100%;
|
|
13
8
|
min-height: 12px;
|
|
14
9
|
margin: 13px 7px;
|
|
15
10
|
padding: 4px 0;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
@use "../../style/variables" as *;
|
|
2
|
-
@use "sass:color";
|
|
3
2
|
|
|
4
3
|
$speed-dial-fab-size: 56px;
|
|
5
4
|
$speed-dial-action-size: 40px;
|
|
@@ -18,8 +17,8 @@ $speed-dial-actions-gap: 16px;
|
|
|
18
17
|
height: $speed-dial-fab-size;
|
|
19
18
|
border-radius: 50%;
|
|
20
19
|
border: none;
|
|
21
|
-
background-color: var(--ty-speed-dial-bg,
|
|
22
|
-
color: var(--ty-speed-dial-color, #
|
|
20
|
+
background-color: var(--ty-speed-dial-bg, var(--ty-color-primary));
|
|
21
|
+
color: var(--ty-speed-dial-color, #fff);
|
|
23
22
|
font-size: 24px;
|
|
24
23
|
cursor: pointer;
|
|
25
24
|
box-shadow: $box-shadow;
|
|
@@ -27,11 +26,11 @@ $speed-dial-actions-gap: 16px;
|
|
|
27
26
|
outline: none;
|
|
28
27
|
|
|
29
28
|
&:hover:not(.#{$prefix}-speed-dial__button_disabled) {
|
|
30
|
-
background-color: var(--ty-speed-dial-bg-hover,
|
|
29
|
+
background-color: var(--ty-speed-dial-bg-hover, var(--ty-color-primary-active));
|
|
31
30
|
}
|
|
32
31
|
|
|
33
32
|
&:focus-visible {
|
|
34
|
-
box-shadow: 0 0 0 3px
|
|
33
|
+
box-shadow: 0 0 0 3px var(--ty-input-focus-shadow, rgb(110 65 191 / 20%)), $box-shadow;
|
|
35
34
|
}
|
|
36
35
|
|
|
37
36
|
&_open {
|
|
@@ -59,7 +58,7 @@ $speed-dial-actions-gap: 16px;
|
|
|
59
58
|
position: absolute;
|
|
60
59
|
top: 50%;
|
|
61
60
|
left: 50%;
|
|
62
|
-
background-color:
|
|
61
|
+
background-color: currentcolor;
|
|
63
62
|
border-radius: 1px;
|
|
64
63
|
translate: -50% -50%;
|
|
65
64
|
}
|
|
@@ -183,7 +182,7 @@ $speed-dial-actions-gap: 16px;
|
|
|
183
182
|
}
|
|
184
183
|
|
|
185
184
|
&:focus-visible {
|
|
186
|
-
box-shadow: 0 0 0 3px
|
|
185
|
+
box-shadow: 0 0 0 3px var(--ty-input-focus-shadow, rgb(110 65 191 / 20%)), $box-shadow-sm;
|
|
187
186
|
}
|
|
188
187
|
|
|
189
188
|
&_disabled {
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
height: 56px;
|
|
11
11
|
border-radius: 50%;
|
|
12
12
|
border: none;
|
|
13
|
-
background-color: var(--ty-speed-dial-bg,
|
|
13
|
+
background-color: var(--ty-speed-dial-bg, var(--ty-color-primary));
|
|
14
14
|
color: var(--ty-speed-dial-color, #fff);
|
|
15
15
|
font-size: 24px;
|
|
16
16
|
cursor: pointer;
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
outline: none;
|
|
20
20
|
}
|
|
21
21
|
.ty-speed-dial__button:hover:not(.ty-speed-dial__button_disabled) {
|
|
22
|
-
background-color: var(--ty-speed-dial-bg-hover,
|
|
22
|
+
background-color: var(--ty-speed-dial-bg-hover, var(--ty-color-primary-active));
|
|
23
23
|
}
|
|
24
24
|
.ty-speed-dial__button:focus-visible {
|
|
25
|
-
box-shadow: 0 0 0 3px rgba(110, 65, 191, 0.
|
|
25
|
+
box-shadow: 0 0 0 3px var(--ty-input-focus-shadow, rgba(110, 65, 191, 0.2)), 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
|
26
26
|
}
|
|
27
27
|
.ty-speed-dial__button_open .ty-speed-dial__icon-default {
|
|
28
28
|
transform: rotate(45deg);
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
position: absolute;
|
|
44
44
|
top: 50%;
|
|
45
45
|
left: 50%;
|
|
46
|
-
background-color:
|
|
46
|
+
background-color: currentcolor;
|
|
47
47
|
border-radius: 1px;
|
|
48
48
|
translate: -50% -50%;
|
|
49
49
|
}
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
|
146
146
|
}
|
|
147
147
|
.ty-speed-dial__action:focus-visible {
|
|
148
|
-
box-shadow: 0 0 0 3px rgba(110, 65, 191, 0.
|
|
148
|
+
box-shadow: 0 0 0 3px var(--ty-input-focus-shadow, rgba(110, 65, 191, 0.2)), 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
|
|
149
149
|
}
|
|
150
150
|
.ty-speed-dial__action_disabled {
|
|
151
151
|
opacity: 0.5;
|
package/es/style/base.css
CHANGED
|
@@ -27,19 +27,26 @@
|
|
|
27
27
|
--ty-color-fill-secondary: #f5f5f5;
|
|
28
28
|
--ty-color-fill-tertiary: #f0f0f0;
|
|
29
29
|
--ty-color-success: #52c41a;
|
|
30
|
+
--ty-color-success-hover: #73d13d;
|
|
31
|
+
--ty-color-success-active: #389e0d;
|
|
30
32
|
--ty-color-success-bg: #f6ffed;
|
|
31
33
|
--ty-color-success-border: #b7eb8f;
|
|
32
34
|
--ty-color-success-text: #49b10e;
|
|
33
35
|
--ty-color-warning: #ff9800;
|
|
36
|
+
--ty-color-warning-hover: #ffad33;
|
|
37
|
+
--ty-color-warning-active: #e68a00;
|
|
34
38
|
--ty-color-warning-bg: #fffbe6;
|
|
35
39
|
--ty-color-warning-border: #ffe58f;
|
|
36
40
|
--ty-color-warning-text: #d48806;
|
|
37
41
|
--ty-color-danger: #f44336;
|
|
42
|
+
--ty-color-danger-hover: #ff7875;
|
|
43
|
+
--ty-color-danger-active: #cf1322;
|
|
38
44
|
--ty-color-danger-bg: #fff1f0;
|
|
39
45
|
--ty-color-danger-border: #ffa39e;
|
|
40
46
|
--ty-color-danger-text: #cf1322;
|
|
41
|
-
--ty-color-danger-hover: #ff7875;
|
|
42
47
|
--ty-color-info: #1890ff;
|
|
48
|
+
--ty-color-info-hover: #40a9ff;
|
|
49
|
+
--ty-color-info-active: #096dd9;
|
|
43
50
|
--ty-color-info-bg: #e6f7ff;
|
|
44
51
|
--ty-color-info-border: #91d5ff;
|
|
45
52
|
--ty-color-info-text: #096dd9;
|
|
@@ -294,19 +301,26 @@ html[data-tiny-theme=dark] {
|
|
|
294
301
|
--ty-color-fill-secondary: #2a2a2a;
|
|
295
302
|
--ty-color-fill-tertiary: #303030;
|
|
296
303
|
--ty-color-success: #49aa19;
|
|
304
|
+
--ty-color-success-hover: #6abe39;
|
|
305
|
+
--ty-color-success-active: #3c8c14;
|
|
297
306
|
--ty-color-success-bg: #162312;
|
|
298
307
|
--ty-color-success-border: #274916;
|
|
299
308
|
--ty-color-success-text: #6abe39;
|
|
300
309
|
--ty-color-warning: #d89614;
|
|
310
|
+
--ty-color-warning-hover: #e8b339;
|
|
311
|
+
--ty-color-warning-active: #b37a10;
|
|
301
312
|
--ty-color-warning-bg: #2b2111;
|
|
302
313
|
--ty-color-warning-border: #594214;
|
|
303
314
|
--ty-color-warning-text: #e8b339;
|
|
304
315
|
--ty-color-danger: #d32029;
|
|
316
|
+
--ty-color-danger-hover: #e84749;
|
|
317
|
+
--ty-color-danger-active: #ab1a20;
|
|
305
318
|
--ty-color-danger-bg: #2a1215;
|
|
306
319
|
--ty-color-danger-border: #58181c;
|
|
307
320
|
--ty-color-danger-text: #e84749;
|
|
308
|
-
--ty-color-danger-hover: #e84749;
|
|
309
321
|
--ty-color-info: #177ddc;
|
|
322
|
+
--ty-color-info-hover: #3c9ae8;
|
|
323
|
+
--ty-color-info-active: #1268b3;
|
|
310
324
|
--ty-color-info-bg: #111d2c;
|
|
311
325
|
--ty-color-info-border: #15395b;
|
|
312
326
|
--ty-color-info-text: #3c9ae8;
|
|
@@ -562,19 +576,26 @@ html[data-tiny-theme=dark] {
|
|
|
562
576
|
--ty-color-fill-secondary: #2a2a2a;
|
|
563
577
|
--ty-color-fill-tertiary: #303030;
|
|
564
578
|
--ty-color-success: #49aa19;
|
|
579
|
+
--ty-color-success-hover: #6abe39;
|
|
580
|
+
--ty-color-success-active: #3c8c14;
|
|
565
581
|
--ty-color-success-bg: #162312;
|
|
566
582
|
--ty-color-success-border: #274916;
|
|
567
583
|
--ty-color-success-text: #6abe39;
|
|
568
584
|
--ty-color-warning: #d89614;
|
|
585
|
+
--ty-color-warning-hover: #e8b339;
|
|
586
|
+
--ty-color-warning-active: #b37a10;
|
|
569
587
|
--ty-color-warning-bg: #2b2111;
|
|
570
588
|
--ty-color-warning-border: #594214;
|
|
571
589
|
--ty-color-warning-text: #e8b339;
|
|
572
590
|
--ty-color-danger: #d32029;
|
|
591
|
+
--ty-color-danger-hover: #e84749;
|
|
592
|
+
--ty-color-danger-active: #ab1a20;
|
|
573
593
|
--ty-color-danger-bg: #2a1215;
|
|
574
594
|
--ty-color-danger-border: #58181c;
|
|
575
595
|
--ty-color-danger-text: #e84749;
|
|
576
|
-
--ty-color-danger-hover: #e84749;
|
|
577
596
|
--ty-color-info: #177ddc;
|
|
597
|
+
--ty-color-info-hover: #3c9ae8;
|
|
598
|
+
--ty-color-info-active: #1268b3;
|
|
578
599
|
--ty-color-info-bg: #111d2c;
|
|
579
600
|
--ty-color-info-border: #15395b;
|
|
580
601
|
--ty-color-info-text: #3c9ae8;
|
package/es/tag/style/_index.scss
CHANGED
|
@@ -102,6 +102,30 @@
|
|
|
102
102
|
background: var(--ty-tag-purple-bg);
|
|
103
103
|
border-color: var(--ty-tag-purple-border);
|
|
104
104
|
}
|
|
105
|
+
|
|
106
|
+
&_success {
|
|
107
|
+
color: var(--ty-color-success);
|
|
108
|
+
background: var(--ty-color-success-bg);
|
|
109
|
+
border-color: var(--ty-color-success-border);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
&_info {
|
|
113
|
+
color: var(--ty-color-info);
|
|
114
|
+
background: var(--ty-color-info-bg);
|
|
115
|
+
border-color: var(--ty-color-info-border);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
&_warning {
|
|
119
|
+
color: var(--ty-color-warning);
|
|
120
|
+
background: var(--ty-color-warning-bg);
|
|
121
|
+
border-color: var(--ty-color-warning-border);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
&_danger {
|
|
125
|
+
color: var(--ty-color-danger);
|
|
126
|
+
background: var(--ty-color-danger-bg);
|
|
127
|
+
border-color: var(--ty-color-danger-border);
|
|
128
|
+
}
|
|
105
129
|
}
|
|
106
130
|
|
|
107
131
|
.#{$prefix}-checkable-tag {
|
package/es/tag/style/index.css
CHANGED
|
@@ -88,6 +88,26 @@
|
|
|
88
88
|
background: var(--ty-tag-purple-bg);
|
|
89
89
|
border-color: var(--ty-tag-purple-border);
|
|
90
90
|
}
|
|
91
|
+
.ty-tag_success {
|
|
92
|
+
color: var(--ty-color-success);
|
|
93
|
+
background: var(--ty-color-success-bg);
|
|
94
|
+
border-color: var(--ty-color-success-border);
|
|
95
|
+
}
|
|
96
|
+
.ty-tag_info {
|
|
97
|
+
color: var(--ty-color-info);
|
|
98
|
+
background: var(--ty-color-info-bg);
|
|
99
|
+
border-color: var(--ty-color-info-border);
|
|
100
|
+
}
|
|
101
|
+
.ty-tag_warning {
|
|
102
|
+
color: var(--ty-color-warning);
|
|
103
|
+
background: var(--ty-color-warning-bg);
|
|
104
|
+
border-color: var(--ty-color-warning-border);
|
|
105
|
+
}
|
|
106
|
+
.ty-tag_danger {
|
|
107
|
+
color: var(--ty-color-danger);
|
|
108
|
+
background: var(--ty-color-danger-bg);
|
|
109
|
+
border-color: var(--ty-color-danger-border);
|
|
110
|
+
}
|
|
91
111
|
|
|
92
112
|
.ty-checkable-tag {
|
|
93
113
|
background-color: var(--ty-tag-checkable-bg);
|
package/es/tag/types.d.ts
CHANGED
|
@@ -8,8 +8,9 @@ interface CheckableTagProps extends BaseProps {
|
|
|
8
8
|
onChange?: (checked: boolean, e: React.MouseEvent) => void;
|
|
9
9
|
children?: React.ReactNode;
|
|
10
10
|
}
|
|
11
|
+
type StatusColor = 'success' | 'warning' | 'info' | 'danger';
|
|
11
12
|
interface TagProps extends BaseProps, React.PropsWithoutRef<JSX.IntrinsicElements['div']> {
|
|
12
|
-
color?: string;
|
|
13
|
+
color?: string | StatusColor;
|
|
13
14
|
closable?: boolean;
|
|
14
15
|
onClose?: React.MouseEventHandler;
|
|
15
16
|
onClick?: React.MouseEventHandler;
|
package/es/tag/types.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/tag/types.ts
|
|
2
1
|
const PresetColors = [
|
|
3
2
|
"magenta",
|
|
4
3
|
"red",
|
|
@@ -10,7 +9,13 @@ const PresetColors = [
|
|
|
10
9
|
"cyan",
|
|
11
10
|
"blue",
|
|
12
11
|
"geekblue",
|
|
13
|
-
"purple"
|
|
12
|
+
"purple",
|
|
13
|
+
...[
|
|
14
|
+
"success",
|
|
15
|
+
"info",
|
|
16
|
+
"warning",
|
|
17
|
+
"danger"
|
|
18
|
+
]
|
|
14
19
|
];
|
|
15
20
|
//#endregion
|
|
16
21
|
export { PresetColors };
|
package/es/tag/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../src/tag/types.ts"],"sourcesContent":["import React from 'react';\nimport { BaseProps } from '../_utils/props';\n\nexport interface CheckableTagProps extends BaseProps {\n defaultChecked?: boolean;\n checked?: boolean;\n onChange?: (checked: boolean, e: React.MouseEvent) => void;\n children?: React.ReactNode;\n}\n\nexport const PresetColors = [\n 'magenta',\n 'red',\n 'volcano',\n 'orange',\n 'gold',\n 'lime',\n 'green',\n 'cyan',\n 'blue',\n 'geekblue',\n 'purple',\n];\n\nexport interface TagProps extends BaseProps, React.PropsWithoutRef<JSX.IntrinsicElements['div']> {\n color?: string;\n closable?: boolean;\n onClose?: React.MouseEventHandler;\n onClick?: React.MouseEventHandler;\n defaultVisible?: boolean;\n visible?: boolean;\n children?: React.ReactNode;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../src/tag/types.ts"],"sourcesContent":["import React from 'react';\nimport { BaseProps } from '../_utils/props';\n\nexport interface CheckableTagProps extends BaseProps {\n defaultChecked?: boolean;\n checked?: boolean;\n onChange?: (checked: boolean, e: React.MouseEvent) => void;\n children?: React.ReactNode;\n}\n\nexport type StatusColor = 'success' | 'warning' | 'info' | 'danger';\n\nexport const StatusColors: StatusColor[] = ['success', 'info', 'warning', 'danger'];\n\nexport const PresetColors = [\n 'magenta',\n 'red',\n 'volcano',\n 'orange',\n 'gold',\n 'lime',\n 'green',\n 'cyan',\n 'blue',\n 'geekblue',\n 'purple',\n ...StatusColors,\n];\n\nexport interface TagProps extends BaseProps, React.PropsWithoutRef<JSX.IntrinsicElements['div']> {\n color?: string | StatusColor;\n closable?: boolean;\n onClose?: React.MouseEventHandler;\n onClick?: React.MouseEventHandler;\n defaultVisible?: boolean;\n visible?: boolean;\n children?: React.ReactNode;\n}\n"],"mappings":"AAcA,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA,GAdyC;EAAC;EAAW;EAAQ;EAAW;EAAS;CAelF"}
|
|
@@ -29,6 +29,10 @@ $tp: #{$prefix}-time-picker;
|
|
|
29
29
|
box-shadow: var(--ty-input-focus-shadow);
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
&_pending &__input-field {
|
|
33
|
+
color: var(--ty-color-text-tertiary);
|
|
34
|
+
}
|
|
35
|
+
|
|
32
36
|
&__input-field {
|
|
33
37
|
flex: 1;
|
|
34
38
|
border: none;
|
|
@@ -191,6 +195,15 @@ $tp: #{$prefix}-time-picker;
|
|
|
191
195
|
}
|
|
192
196
|
}
|
|
193
197
|
|
|
198
|
+
&_pending {
|
|
199
|
+
background: var(--ty-color-primary-bg);
|
|
200
|
+
color: var(--ty-color-text-tertiary);
|
|
201
|
+
|
|
202
|
+
&:hover {
|
|
203
|
+
background: var(--ty-color-primary-bg-hover);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
|
|
194
207
|
&_disabled {
|
|
195
208
|
color: var(--ty-color-text-quaternary);
|
|
196
209
|
cursor: not-allowed;
|
|
@@ -21,6 +21,9 @@
|
|
|
21
21
|
border-color: var(--ty-color-primary);
|
|
22
22
|
box-shadow: var(--ty-input-focus-shadow);
|
|
23
23
|
}
|
|
24
|
+
.ty-time-picker_pending .ty-time-picker__input-field {
|
|
25
|
+
color: var(--ty-color-text-tertiary);
|
|
26
|
+
}
|
|
24
27
|
.ty-time-picker__input-field {
|
|
25
28
|
flex: 1;
|
|
26
29
|
border: none;
|
|
@@ -157,6 +160,13 @@
|
|
|
157
160
|
.ty-time-picker__cell_selected:hover {
|
|
158
161
|
background: var(--ty-color-primary-bg-hover);
|
|
159
162
|
}
|
|
163
|
+
.ty-time-picker__cell_pending {
|
|
164
|
+
background: var(--ty-color-primary-bg);
|
|
165
|
+
color: var(--ty-color-text-tertiary);
|
|
166
|
+
}
|
|
167
|
+
.ty-time-picker__cell_pending:hover {
|
|
168
|
+
background: var(--ty-color-primary-bg-hover);
|
|
169
|
+
}
|
|
160
170
|
.ty-time-picker__cell_disabled {
|
|
161
171
|
color: var(--ty-color-text-quaternary);
|
|
162
172
|
cursor: not-allowed;
|
|
@@ -4,14 +4,16 @@ import { jsx } from "react/jsx-runtime";
|
|
|
4
4
|
//#region src/time-picker/time-panel.tsx
|
|
5
5
|
const ITEM_HEIGHT = 28;
|
|
6
6
|
const TimePanel = (props) => {
|
|
7
|
-
const { prefixCls, value, items, disabledItems = [], loop = false, onChange } = props;
|
|
7
|
+
const { prefixCls, value, pendingValue, items, disabledItems = [], loop = false, onChange } = props;
|
|
8
8
|
const panelRef = useRef(null);
|
|
9
9
|
const itemRefs = useRef(/* @__PURE__ */ new Map());
|
|
10
10
|
const isResetting = useRef(false);
|
|
11
11
|
const clickedRef = useRef(false);
|
|
12
12
|
const scrollToItemRef = useRef(null);
|
|
13
13
|
const oneGroupHeight = items.length * ITEM_HEIGHT;
|
|
14
|
+
const displayValue = pendingValue ?? value;
|
|
14
15
|
scrollToItemRef.current = (val) => {
|
|
16
|
+
if (val === null) return;
|
|
15
17
|
const panel = panelRef.current;
|
|
16
18
|
if (!panel) return;
|
|
17
19
|
if (loop) {
|
|
@@ -39,8 +41,8 @@ const TimePanel = (props) => {
|
|
|
39
41
|
clickedRef.current = false;
|
|
40
42
|
return;
|
|
41
43
|
}
|
|
42
|
-
scrollToItemRef.current?.(
|
|
43
|
-
}, [
|
|
44
|
+
scrollToItemRef.current?.(displayValue);
|
|
45
|
+
}, [displayValue]);
|
|
44
46
|
const handleScroll = useCallback(() => {
|
|
45
47
|
if (!loop || isResetting.current) return;
|
|
46
48
|
const panel = panelRef.current;
|
|
@@ -62,6 +64,16 @@ const TimePanel = (props) => {
|
|
|
62
64
|
clickedRef.current = true;
|
|
63
65
|
onChange(num);
|
|
64
66
|
};
|
|
67
|
+
const isPending = pendingValue !== null;
|
|
68
|
+
const isCommitted = value !== null && pendingValue === null;
|
|
69
|
+
const cellCls = (num) => {
|
|
70
|
+
const isSelected = num === displayValue;
|
|
71
|
+
return classNames(`${prefixCls}__cell`, {
|
|
72
|
+
[`${prefixCls}__cell_selected`]: isSelected && isCommitted,
|
|
73
|
+
[`${prefixCls}__cell_pending`]: isSelected && isPending,
|
|
74
|
+
[`${prefixCls}__cell_disabled`]: disabledItems.includes(num)
|
|
75
|
+
});
|
|
76
|
+
};
|
|
65
77
|
if (loop) return /* @__PURE__ */ jsx("div", {
|
|
66
78
|
className: `${prefixCls}__column`,
|
|
67
79
|
ref: panelRef,
|
|
@@ -72,17 +84,11 @@ const TimePanel = (props) => {
|
|
|
72
84
|
0,
|
|
73
85
|
1,
|
|
74
86
|
2
|
|
75
|
-
].map((copyIdx) => items.map((num, i) => {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
[`${prefixCls}__cell_disabled`]: isDisabled
|
|
81
|
-
}),
|
|
82
|
-
onClick: () => handleClick(num),
|
|
83
|
-
children: String(num).padStart(2, "0")
|
|
84
|
-
}, `c${copyIdx}-${i}`);
|
|
85
|
-
}))
|
|
87
|
+
].map((copyIdx) => items.map((num, i) => /* @__PURE__ */ jsx("li", {
|
|
88
|
+
className: cellCls(num),
|
|
89
|
+
onClick: () => handleClick(num),
|
|
90
|
+
children: String(num).padStart(2, "0")
|
|
91
|
+
}, `c${copyIdx}-${i}`)))
|
|
86
92
|
})
|
|
87
93
|
});
|
|
88
94
|
return /* @__PURE__ */ jsx("div", {
|
|
@@ -90,20 +96,14 @@ const TimePanel = (props) => {
|
|
|
90
96
|
ref: panelRef,
|
|
91
97
|
children: /* @__PURE__ */ jsx("ul", {
|
|
92
98
|
className: `${prefixCls}__column-list`,
|
|
93
|
-
children: items.map((num) => {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
[`${prefixCls}__cell_disabled`]: isDisabled
|
|
102
|
-
}),
|
|
103
|
-
onClick: () => handleClick(num),
|
|
104
|
-
children: String(num).padStart(2, "0")
|
|
105
|
-
}, num);
|
|
106
|
-
})
|
|
99
|
+
children: items.map((num) => /* @__PURE__ */ jsx("li", {
|
|
100
|
+
ref: (el) => {
|
|
101
|
+
if (el) itemRefs.current.set(num, el);
|
|
102
|
+
},
|
|
103
|
+
className: cellCls(num),
|
|
104
|
+
onClick: () => handleClick(num),
|
|
105
|
+
children: String(num).padStart(2, "0")
|
|
106
|
+
}, num))
|
|
107
107
|
})
|
|
108
108
|
});
|
|
109
109
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-panel.js","names":[],"sources":["../../src/time-picker/time-panel.tsx"],"sourcesContent":["import { useRef, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\n\nexport interface TimePanelProps {\n value: number;\n items: number[];\n disabledItems?: number[];\n loop?: boolean;\n onChange: (num: number) => void;\n prefixCls: string;\n}\n\nconst ITEM_HEIGHT = 28; // 4px padding-top + 20px line-height + 4px padding-bottom\n\nconst TimePanel = (props: TimePanelProps): React.ReactElement => {\n const { prefixCls, value, items, disabledItems = [], loop = false, onChange } = props;\n const panelRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<Map<number, HTMLLIElement>>(new Map());\n const isResetting = useRef(false);\n const clickedRef = useRef(false);\n const scrollToItemRef = useRef<((val: number) => void) | null>(null);\n\n const oneGroupHeight = items.length * ITEM_HEIGHT;\n\n scrollToItemRef.current = (val: number) => {\n const panel = panelRef.current;\n if (!panel) return;\n\n if (loop) {\n const idx = items.indexOf(val);\n if (idx === -1) return;\n const top = oneGroupHeight + idx * ITEM_HEIGHT;\n isResetting.current = true;\n panel.scrollTo({ top, behavior: 'auto' });\n requestAnimationFrame(() => { isResetting.current = false; });\n } else {\n const el = itemRefs.current.get(val);\n if (el) {\n panel.scrollTo({ top: el.offsetTop, behavior: 'auto' });\n }\n }\n };\n\n useEffect(() => {\n if (clickedRef.current) {\n clickedRef.current = false;\n return;\n }\n scrollToItemRef.current?.(
|
|
1
|
+
{"version":3,"file":"time-panel.js","names":[],"sources":["../../src/time-picker/time-panel.tsx"],"sourcesContent":["import { useRef, useEffect, useCallback } from 'react';\nimport classNames from 'classnames';\n\nexport interface TimePanelProps {\n value: number | null;\n pendingValue: number | null;\n items: number[];\n disabledItems?: number[];\n loop?: boolean;\n onChange: (num: number) => void;\n prefixCls: string;\n}\n\nconst ITEM_HEIGHT = 28; // 4px padding-top + 20px line-height + 4px padding-bottom\n\nconst TimePanel = (props: TimePanelProps): React.ReactElement => {\n const { prefixCls, value, pendingValue, items, disabledItems = [], loop = false, onChange } = props;\n const panelRef = useRef<HTMLDivElement>(null);\n const itemRefs = useRef<Map<number, HTMLLIElement>>(new Map());\n const isResetting = useRef(false);\n const clickedRef = useRef(false);\n const scrollToItemRef = useRef<((val: number | null) => void) | null>(null);\n\n const oneGroupHeight = items.length * ITEM_HEIGHT;\n\n // The displayed value: pending takes priority, then committed\n const displayValue = pendingValue ?? value;\n\n scrollToItemRef.current = (val: number | null) => {\n if (val === null) return;\n const panel = panelRef.current;\n if (!panel) return;\n\n if (loop) {\n const idx = items.indexOf(val);\n if (idx === -1) return;\n const top = oneGroupHeight + idx * ITEM_HEIGHT;\n isResetting.current = true;\n panel.scrollTo({ top, behavior: 'auto' });\n requestAnimationFrame(() => { isResetting.current = false; });\n } else {\n const el = itemRefs.current.get(val);\n if (el) {\n panel.scrollTo({ top: el.offsetTop, behavior: 'auto' });\n }\n }\n };\n\n useEffect(() => {\n if (clickedRef.current) {\n clickedRef.current = false;\n return;\n }\n scrollToItemRef.current?.(displayValue);\n }, [displayValue]);\n\n // Scroll reset for loop mode\n const handleScroll = useCallback(() => {\n if (!loop || isResetting.current) return;\n const panel = panelRef.current;\n if (!panel) return;\n\n const st = panel.scrollTop;\n if (st < oneGroupHeight || st >= 2 * oneGroupHeight) {\n isResetting.current = true;\n panel.scrollTo({ top: (st % oneGroupHeight) + oneGroupHeight, behavior: 'auto' });\n requestAnimationFrame(() => { isResetting.current = false; });\n }\n }, [loop, oneGroupHeight]);\n\n const handleClick = (num: number) => {\n if (disabledItems.includes(num)) return;\n clickedRef.current = true;\n onChange(num);\n };\n\n const isPending = pendingValue !== null;\n const isCommitted = value !== null && pendingValue === null;\n\n const cellCls = (num: number) => {\n const isSelected = num === displayValue;\n return classNames(`${prefixCls}__cell`, {\n [`${prefixCls}__cell_selected`]: isSelected && isCommitted,\n [`${prefixCls}__cell_pending`]: isSelected && isPending,\n [`${prefixCls}__cell_disabled`]: disabledItems.includes(num),\n });\n };\n\n if (loop) {\n const copies = [0, 1, 2];\n return (\n <div className={`${prefixCls}__column`} ref={panelRef} onScroll={handleScroll}>\n <ul className={`${prefixCls}__column-list`}>\n {copies.map((copyIdx) =>\n items.map((num, i) => (\n <li\n key={`c${copyIdx}-${i}`}\n className={cellCls(num)}\n onClick={() => handleClick(num)}>\n {String(num).padStart(2, '0')}\n </li>\n ))\n )}\n </ul>\n </div>\n );\n }\n\n return (\n <div className={`${prefixCls}__column`} ref={panelRef}>\n <ul className={`${prefixCls}__column-list`}>\n {items.map((num) => (\n <li\n key={num}\n ref={(el) => {\n if (el) itemRefs.current.set(num, el);\n }}\n className={cellCls(num)}\n onClick={() => handleClick(num)}>\n {String(num).padStart(2, '0')}\n </li>\n ))}\n </ul>\n </div>\n );\n};\n\nexport default TimePanel;\n"],"mappings":"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"}
|