@qsxy/element-plus-react 1.0.1 → 1.0.2

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 (66) hide show
  1. package/dist/Calendar/Calendar.js +12 -3
  2. package/dist/Calendar/Footer.js +4 -2
  3. package/dist/Calendar/QuarterPanel.d.ts +4 -0
  4. package/dist/Calendar/QuarterPanel.js +109 -0
  5. package/dist/Calendar/WeekPanel.js +1 -1
  6. package/dist/Calendar/typings.d.ts +1 -1
  7. package/dist/Card/Card.js +9 -4
  8. package/dist/Card/typings.d.ts +1 -1
  9. package/dist/Cascader/Cascader.js +1 -1
  10. package/dist/DatePicker/DatePicker.js +38 -12
  11. package/dist/DatePicker/DateRangePicker.js +27 -9
  12. package/dist/DatePicker/main.js +1 -1
  13. package/dist/DatePicker/typings.d.ts +1 -1
  14. package/dist/DateTimePicker/DateTimePicker.js +2 -2
  15. package/dist/Input/Input.1.d.ts +16 -0
  16. package/dist/Input/Input.1.js +376 -0
  17. package/dist/Input/Input.js +137 -121
  18. package/dist/Input/InputRange.js +1 -1
  19. package/dist/Input/TextArea.js +87 -12
  20. package/dist/Input/typings.d.ts +15 -5
  21. package/dist/Input/useComposition.d.ts +23 -0
  22. package/dist/Input/useComposition.js +63 -0
  23. package/dist/Input/utils.d.ts +6 -0
  24. package/dist/Input/utils.js +91 -0
  25. package/dist/InputNumber/InputNumber.js +1 -1
  26. package/dist/InputNumber/typings.d.ts +1 -1
  27. package/dist/Select/Option.js +30 -14
  28. package/dist/Select/SelectContext.d.ts +3 -4
  29. package/dist/Select/SelectCore.d.ts +2 -2
  30. package/dist/Select/SelectCore.js +164 -447
  31. package/dist/Select/SelectDropdown.js +67 -145
  32. package/dist/Select/typings.d.ts +47 -21
  33. package/dist/Select/useSelect.d.ts +125 -0
  34. package/dist/Select/useSelect.js +516 -0
  35. package/dist/Table/util.js +6 -5
  36. package/dist/Tag/Tag.js +22 -17
  37. package/dist/TimePicker/TimePicker.js +2 -2
  38. package/dist/TreeSelect/TreeSelect.js +2 -2
  39. package/dist/Util/aria.d.ts +25 -0
  40. package/dist/Util/aria.js +118 -0
  41. package/dist/hooks/useCalcInputWidth.d.ts +8 -0
  42. package/dist/hooks/useCalcInputWidth.js +30 -0
  43. package/dist/hooks/useComposition.d.ts +16 -0
  44. package/dist/hooks/useComposition.js +39 -0
  45. package/dist/hooks/useCursor.d.ts +2 -0
  46. package/dist/hooks/useCursor.js +52 -0
  47. package/dist/hooks/useFocusController.d.ts +27 -0
  48. package/dist/hooks/useFocusController.js +72 -0
  49. package/dist/index.css +1 -1
  50. package/dist/locale/en.d.ts +15 -0
  51. package/dist/locale/en.js +15 -0
  52. package/dist/locale/zhCn.d.ts +15 -0
  53. package/dist/locale/zhCn.js +15 -0
  54. package/package.json +1 -1
  55. package/theme-chalk/calendar/index.scss +1 -0
  56. package/theme-chalk/calendar/quarter-table.scss +78 -0
  57. package/theme-chalk/common/var.scss +1 -1
  58. package/theme-chalk/input/input.scss +424 -578
  59. package/theme-chalk/input/input.scss--bak +578 -0
  60. package/theme-chalk/select/index.scss +272 -247
  61. package/theme-chalk/select/index.scss--bak +247 -0
  62. package/theme-chalk/select/option-group.scss +2 -2
  63. package/theme-chalk/select/option.scss +2 -2
  64. package/theme-chalk/select/select-dropdown.scss +2 -2
  65. package/theme-chalk/tag.scss +181 -203
  66. package/theme-chalk/tag.scss--bak +203 -0
@@ -1,578 +1,424 @@
1
- @use '../mixins/config' as *;
2
- @use './mixins' as *;
3
- @use 'sass:map';
4
-
5
- @mixin inset-prepend-border($color, $important: false) {
6
- @if $important == true {
7
- box-shadow: 1px 0 0 0 $color inset, 0 1px 0 0 $color inset, 0 -1px 0 0 $color inset !important;
8
- } @else {
9
- box-shadow: 1px 0 0 0 $color inset, 0 1px 0 0 $color inset, 0 -1px 0 0 $color inset;
10
- }
11
- }
12
-
13
- @mixin inset-append-border($color) {
14
- box-shadow: 0 1px 0 0 $color inset, 0 -1px 0 0 $color inset, -1px 0 0 0 $color inset;
15
- }
16
-
17
- @mixin inset-prepend-input-border($color) {
18
- box-shadow: 1px 0 0 0 $color inset, 1px 0 0 0 $color, 0 1px 0 0 $color inset, 0 -1px 0 0 $color inset !important;
19
- }
20
-
21
- @mixin inset-append-input-border($color) {
22
- box-shadow: -1px 0 0 0 $color, -1px 0 0 0 $color inset, 0 1px 0 0 $color inset, 0 -1px 0 0 $color inset !important;
23
- }
24
-
25
- @mixin mixed-input-border($color) {
26
- box-shadow: 0 0 0 1px $color inset;
27
- }
28
-
29
- @mixin inset-input-border($color, $important: false) {
30
- @if $important == true {
31
- box-shadow: 0 0 0 1px $color inset !important;
32
- } @else {
33
- box-shadow: 0 0 0 1px $color inset;
34
- }
35
- }
36
-
37
- // @mixin placeholder {
38
- // &::-webkit-input-placeholder {
39
- // color: var(--#{$namespace}-text-color-placeholder);
40
- // }
41
- // &:-moz-placeholder {
42
- // color: var(--#{$namespace}-text-color-placeholder);
43
- // }
44
- // &::-moz-placeholder {
45
- // color: var(--#{$namespace}-text-color-placeholder);
46
- // }
47
- // &:-ms-input-placeholder {
48
- // color: var(--#{$namespace}-text-color-placeholder);
49
- // }
50
- // }
51
-
52
- .#{$namespace}-textarea,
53
- .#{$namespace}-input,
54
- .#{$namespace}-input-group {
55
- --#{$namespace}-input-text-color: var(--#{$namespace}-text-color-regular);
56
- --#{$namespace}-input-border: var(--#{$namespace}-border-color);
57
- --#{$namespace}-input-hover-border: var(--#{$namespace}-border-color-hover);
58
- --#{$namespace}-input-focus-border-color: var(--#{$namespace}-color-primary);
59
- --#{$namespace}-input-transparent-border: 0 0 0 1px transparent inset;
60
- --#{$namespace}-input-border-color: var(--#{$namespace}-border-color);
61
- --#{$namespace}-input-border-radius: 4px;
62
- --#{$namespace}-input-bg-color: var(--#{$namespace}-fill-color-blank);
63
- --#{$namespace}-input-icon-color: var(--#{$namespace}-text-color-placeholder);
64
- --#{$namespace}-input-placeholder-color: var(--#{$namespace}-text-color-placeholder);
65
- --#{$namespace}-input-hover-border-color: var(--#{$namespace}-border-color-hover);
66
- --#{$namespace}-input-clear-hover-color: var(--#{$namespace}-text-color-secondary);
67
- --#{$namespace}-input-focus-border-color: var(--#{$namespace}-color-primary);
68
- }
69
-
70
- .#{$namespace}-textarea {
71
- position: relative;
72
- display: inline-block;
73
- width: 100%;
74
- vertical-align: bottom;
75
- font-size: 14px;
76
-
77
- .#{$namespace}-textarea__count {
78
- color: var(--#{$namespace}-color-info);
79
- background: var(--#{$namespace}-fill-color-blank);
80
- position: absolute;
81
- font-size: 12px;
82
- line-height: 14px;
83
- bottom: 5px;
84
- right: 10px;
85
- }
86
-
87
- &.is-plain {
88
- .#{$namespace}-textarea__inner {
89
- box-shadow: none !important;
90
- resize: none !important;
91
- }
92
- }
93
-
94
- &.is-disabled {
95
- .#{$namespace}-textarea__inner {
96
- background-color: var(--#{$namespace}-disabled-bg-color);
97
- color: var(--#{$namespace}-disabled-text-color);
98
- box-shadow: 0 0 0 1px var(--#{$namespace}-border-color-light) inset;
99
- cursor: not-allowed;
100
- }
101
- }
102
-
103
- &.is-active {
104
- .#{$namespace}-textarea__inner {
105
- outline: none;
106
- box-shadow: 0 0 0 1px var(--#{$namespace}-color-primary) inset;
107
- }
108
- }
109
-
110
- &.is-exceed {
111
- .#{$namespace}-textarea__inner {
112
- border-color: var(--#{$namespace}-color-error);
113
- }
114
-
115
- .#{$namespace}-textarea__count {
116
- color: var(--#{$namespace}-color-error);
117
- }
118
- }
119
- }
120
-
121
- .#{$namespace}-textarea__inner {
122
- font-family: 'PingFang-SC-Regular', 'PingFang SC', sans-serif;
123
- position: relative;
124
- display: block;
125
- resize: vertical;
126
- padding: 5px 15px;
127
- line-height: 1.5;
128
- box-sizing: border-box;
129
- width: 100%;
130
- font-size: inherit;
131
- font-family: inherit;
132
- background-color: var(--#{$namespace}-input-bg-color, var(--#{$namespace}-fill-color-blank));
133
- color: var(--#{$namespace}-input-text-color, var(--#{$namespace}-text-color-regular));
134
- background-image: none;
135
- @include inset-input-border(var(--#{$namespace}-input-border-color, var(--#{$namespace}-border-color)));
136
- border-radius: 4px;
137
- transition: box-shadow 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
138
- border: none;
139
- outline: none;
140
-
141
- @include placeholder();
142
-
143
- &:hover {
144
- @include inset-input-border(var(--#{$namespace}-input-hover-border-color));
145
- }
146
-
147
- &:focus {
148
- outline: none;
149
- @include inset-input-border(var(--#{$namespace}-color-primary));
150
- }
151
-
152
- &.is-warning {
153
- @include inset-input-border(var(--#{$namespace}-color-warning));
154
- color: var(--#{$namespace}-color-warning) !important;
155
- }
156
-
157
- &.is-error {
158
- @include inset-input-border(var(--#{$namespace}-color-error));
159
- color: var(--#{$namespace}-color-error) !important;
160
- }
161
- }
162
-
163
- .#{$namespace}-input {
164
- --#{$namespace}-input-inner-height: calc(var(--#{$namespace}-input-height, 32px) - 2px);
165
- position: relative;
166
- display: inline-flex;
167
- width: 100%;
168
- font-size: 14px;
169
- line-height: var(--#{$namespace}-input-inner-height, 30px);
170
- box-sizing: border-box;
171
- vertical-align: middle;
172
-
173
- &.is-active {
174
- .#{$namespace}-input__wrapper {
175
- outline: none;
176
- box-shadow: 0 0 0 1px var(--#{$namespace}-input-focus-color, var(--#{$namespace}-color-primary)) inset;
177
- }
178
- }
179
-
180
- &.is-disabled {
181
- cursor: not-allowed;
182
-
183
- .#{$namespace}-input__wrapper {
184
- background-color: var(--#{$namespace}-disabled-bg-color);
185
- box-shadow: 0 0 0 1px var(--#{$namespace}-border-color-light) inset;
186
- }
187
-
188
- .#{$namespace}-input__inner {
189
- color: var(--#{$namespace}-disabled-text-color);
190
- -webkit-text-fill-color: var(--#{$namespace}-disabled-text-color);
191
- cursor: not-allowed;
192
- }
193
-
194
- &::placeholder {
195
- color: var(--#{$namespace}-disabled-text-color);
196
- }
197
-
198
- .#{$namespace}-input__icon {
199
- cursor: not-allowed;
200
- }
201
-
202
- &.is-plain {
203
- .#{$namespace}-input__wrapper {
204
- background-color: transparent !important;
205
- }
206
- }
207
- }
208
-
209
- &.is-plain {
210
- .#{$namespace}-input__wrapper {
211
- box-shadow: none !important;
212
- }
213
- }
214
-
215
- &.is-exceed {
216
- .#{$namespace}-input__wrapper {
217
- @include mixed-input-border(var(--#{$namespace}-color-error));
218
- }
219
-
220
- .#{$namespace}-input__suffix {
221
- .#{$namespace}-input__count {
222
- color: var(--#{$namespace}-color-error);
223
- }
224
- }
225
- }
226
-
227
- .#{$namespace}-input__count {
228
- height: 100%;
229
- display: inline-flex;
230
- align-items: center;
231
- color: var(--#{$namespace}-color-info);
232
- font-size: 12px;
233
-
234
- .#{$namespace}-input__count-inner {
235
- background: var(--#{$namespace}-fill-color-blank);
236
- line-height: initial;
237
- display: inline-block;
238
- padding-left: 8px;
239
- }
240
- }
241
- }
242
-
243
- .#{$namespace}-input__icon {
244
- height: inherit;
245
- line-height: inherit;
246
- display: flex;
247
- justify-content: center;
248
- align-items: center;
249
- transition: all 0.3s;
250
- margin-left: 8px;
251
- }
252
-
253
- .#{$namespace}-input__clear,
254
- .#{$namespace}-input__password,
255
- .#{$namespace}-input__click {
256
- cursor: pointer;
257
-
258
- &:hover {
259
- color: var(--#{$namespace}-color-primary);
260
- }
261
- }
262
-
263
- .#{$namespace}-input__wrapper {
264
- display: inline-flex;
265
- flex-grow: 1;
266
- align-items: center;
267
- justify-content: center;
268
- padding: 1px 11px;
269
- background-color: var(--#{$namespace}-input-bg-color, var(--#{$namespace}-fill-color-blank));
270
- background-image: none;
271
- border-radius: 4px;
272
- transition: box-shadow 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
273
- @include inset-input-border(var(--#{$namespace}-input-border-color, var(--#{$namespace}-border-color)));
274
-
275
- &:hover {
276
- @include inset-input-border(var(--#{$namespace}-input-hover-border-color));
277
- }
278
-
279
- &.is-focus {
280
- @include inset-input-border(var(--#{$namespace}-input-focus-border-color));
281
- }
282
-
283
- &.is-warning {
284
- @include inset-input-border(var(--#{$namespace}-color-warning));
285
- color: var(--#{$namespace}-color-warning) !important;
286
- }
287
-
288
- &.is-error {
289
- @include inset-input-border(var(--#{$namespace}-color-error));
290
- color: var(--#{$namespace}-color-error) !important;
291
- }
292
- }
293
-
294
- .#{$namespace}-input__inner {
295
- font-family: 'PingFang-SC-Regular', 'PingFang SC', sans-serif;
296
- width: 100%;
297
- flex-grow: 1;
298
- -webkit-appearance: none;
299
- color: var(--#{$namespace}-input-text-color, var(--#{$namespace}-text-color-regular));
300
- font-size: inherit;
301
- height: var(--#{$namespace}-input-inner-height, 32px);
302
- line-height: var(--#{$namespace}-input-inner-height, 32px);
303
- padding: 0;
304
- outline: none;
305
- border: none;
306
- background: none;
307
- box-sizing: border-box;
308
- @include placeholder();
309
-
310
- &:focus {
311
- outline: none;
312
- }
313
- // override edge default style
314
- &[type='password']::-ms-reveal {
315
- display: none;
316
- }
317
-
318
- &.#{$namespace}-date {
319
- cursor: pointer;
320
- }
321
- }
322
-
323
- .#{$namespace}-input__suffix {
324
- display: inline-flex;
325
- white-space: nowrap;
326
- flex-shrink: 0;
327
- flex-wrap: nowrap;
328
- text-align: center;
329
- color: var(--#{$namespace}-input-icon-color, var(--#{$namespace}-text-color-placeholder));
330
- transition: all 0.3s;
331
- pointer-events: none;
332
- }
333
-
334
- .#{$namespace}-input__suffix-inner {
335
- pointer-events: all;
336
- display: inline-flex;
337
- align-items: center;
338
- justify-content: center;
339
- }
340
-
341
- .#{$namespace}-input__prefix {
342
- display: inline-flex;
343
- white-space: nowrap;
344
- flex-shrink: 0;
345
- flex-wrap: nowrap;
346
- text-align: center;
347
- color: var(--#{$namespace}-input-icon-color, var(--#{$namespace}-text-color-placeholder));
348
- transition: all 0.3s;
349
- pointer-events: none;
350
- }
351
-
352
- .#{$namespace}-input__prefix-inner {
353
- pointer-events: all;
354
- display: inline-flex;
355
- align-items: center;
356
- justify-content: center;
357
-
358
- & > :last-child {
359
- margin-right: 8px;
360
- }
361
-
362
- & > :first-child {
363
- margin-left: 8px;
364
-
365
- &.#{$namespace}-input__icon {
366
- margin-left: 0;
367
- }
368
- }
369
- }
370
-
371
- .#{$namespace}-input__validateIcon {
372
- pointer-events: none;
373
- }
374
-
375
- // input-group=========================================================
376
-
377
- // 复合型输入框
378
- .#{$namespace}-input-group {
379
- display: inline-flex;
380
- width: 100%;
381
- align-items: stretch;
382
-
383
- & > .#{$namespace}-input__inner {
384
- vertical-align: middle;
385
- display: table-cell;
386
- }
387
-
388
- &.is-plain {
389
- .#{$namespace}-input__wrapper {
390
- box-shadow: none !important;
391
- }
392
- }
393
- }
394
-
395
- .#{$namespace}-input-group__append,
396
- .#{$namespace}-input-group__prepend {
397
- background-color: var(--#{$namespace}-fill-color-light);
398
- color: var(--#{$namespace}-color-info);
399
- position: relative;
400
- display: inline-flex;
401
- align-items: center;
402
- justify-content: center;
403
- min-height: 100%;
404
- border-radius: 4px;
405
- padding: 0 20px;
406
- white-space: nowrap;
407
-
408
- &:focus {
409
- outline: none;
410
- }
411
-
412
- .#{$namespace}-select,
413
- .#{$namespace}-button {
414
- display: inline-block;
415
- margin: 0 -20px;
416
- line-height: 0;
417
- }
418
-
419
- button.#{$namespace}-button,
420
- button.#{$namespace}-button:hover,
421
- div.#{$namespace}-select .#{$namespace}-input__inner,
422
- div.#{$namespace}-select:hover .#{$namespace}-input__inner {
423
- border-color: transparent;
424
- background-color: transparent;
425
- color: inherit;
426
- }
427
-
428
- .#{$namespace}-button,
429
- .#{$namespace}-input {
430
- font-size: inherit;
431
- }
432
-
433
- button.#{$namespace}-button,
434
- button.#{$namespace}-button:hover,
435
- div.#{$namespace}-select .#{$namespace}-input__wrapper,
436
- div.#{$namespace}-select:hover .#{$namespace}-input__wrapper {
437
- border-color: transparent;
438
- background-color: transparent;
439
- color: inherit;
440
- }
441
-
442
- .#{$namespace}-button,
443
- .#{$namespace}-input {
444
- font-size: inherit;
445
- }
446
- }
447
-
448
- .#{$namespace}-input-group__prepend {
449
- border-right: 0;
450
- border-top-right-radius: 0;
451
- border-bottom-right-radius: 0;
452
- @include inset-prepend-border(var(--#{$namespace}-input-border-color));
453
- }
454
-
455
- .#{$namespace}-input-group__append {
456
- border-left: 0;
457
- border-top-left-radius: 0;
458
- border-bottom-left-radius: 0;
459
- @include inset-append-border(var(--#{$namespace}-input-border-color));
460
- }
461
-
462
- .#{$namespace}-input-group--prepend {
463
- & > .#{$namespace}-input__wrapper {
464
- border-top-left-radius: 0;
465
- border-bottom-left-radius: 0;
466
- }
467
-
468
- .#{$namespace}-input-group__prepend {
469
- .#{$namespace}-select {
470
- .#{$namespace}-input {
471
- .#{$namespace}-input__inner {
472
- box-shadow: none !important;
473
- }
474
-
475
- .#{$namespace}-input__wrapper {
476
- border-top-right-radius: 0;
477
- border-bottom-right-radius: 0;
478
- @include inset-prepend-border(var(--#{$namespace}-input-border-color));
479
- background-color: var(--#{$namespace}-fill-color-blank);
480
-
481
- &.is-error {
482
- @include inset-prepend-border(var(--#{$namespace}-color-error), true);
483
- }
484
- }
485
-
486
- &.is-focus,
487
- &.is-active {
488
- .#{$namespace}-input__inner {
489
- box-shadow: none !important;
490
- }
491
-
492
- .#{$namespace}-input__wrapper {
493
- @include inset-prepend-input-border(var(--#{$namespace}-input-focus-border-color));
494
- z-index: 2;
495
-
496
- &:focus {
497
- outline: none;
498
- z-index: 2;
499
- @include inset-prepend-input-border(var(--#{$namespace}-input-focus-border-color));
500
- }
501
- }
502
- }
503
- }
504
- &:hover {
505
- .#{$namespace}-input__inner {
506
- box-shadow: none !important;
507
- }
508
-
509
- .#{$namespace}-input__wrapper {
510
- z-index: 1;
511
- @include inset-prepend-input-border(var(--#{$namespace}-input-hover-border-color));
512
- }
513
- }
514
- }
515
- }
516
- }
517
-
518
- .#{$namespace}-input-group--append {
519
- & > .#{$namespace}-input__wrapper {
520
- border-top-right-radius: 0;
521
- border-bottom-right-radius: 0;
522
- }
523
-
524
- .#{$namespace}-input-group__append {
525
- .#{$namespace}-select {
526
- .#{$namespace}-input {
527
- .#{$namespace}-input__inner {
528
- box-shadow: none !important;
529
- }
530
-
531
- .#{$namespace}-input__wrapper {
532
- border-top-left-radius: 0;
533
- border-bottom-left-radius: 0;
534
- @include inset-append-input-border(var(--#{$namespace}-input-border-color));
535
- background-color: var(--#{$namespace}-fill-color-blank);
536
-
537
- &.is-error {
538
- @include inset-append-input-border(var(--#{$namespace}-color-error));
539
- }
540
- }
541
-
542
- &.is-focus,
543
- &.is-active {
544
- .#{$namespace}-input__inner {
545
- box-shadow: none !important;
546
- }
547
- .#{$namespace}-input__wrapper {
548
- z-index: 2;
549
- @include inset-append-input-border(var(--#{$namespace}-input-focus-border-color));
550
- }
551
- }
552
- }
553
-
554
- &:hover {
555
- .#{$namespace}-input__inner {
556
- box-shadow: none !important;
557
- }
558
-
559
- .#{$namespace}-input__wrapper {
560
- z-index: 1;
561
- @include inset-append-input-border(var(--#{$namespace}-input-hover-border-color));
562
- }
563
- }
564
- }
565
- }
566
- }
567
-
568
- .#{$namespace}-input--large {
569
- --#{$namespace}-input-height: var(--#{$namespace}-component-size-large);
570
- --#{$namespace}-input-inner-height: calc(var(--#{$namespace}-input-height, 40px) - 2px);
571
- font-size: 14px;
572
- }
573
-
574
- .#{$namespace}-input--small {
575
- --#{$namespace}-input-height: var(--#{$namespace}-component-size-small);
576
- --#{$namespace}-input-inner-height: calc(var(--#{$namespace}-input-height, 24px) - 2px);
577
- font-size: 12px;
578
- }
1
+ @use 'sass:map';
2
+
3
+ @use '../mixins/mixins' as *;
4
+ @use '../mixins/var' as *;
5
+ @use '../common/var' as *;
6
+
7
+ @mixin inset-prepend-border($color) {
8
+ box-shadow: 1px 0 0 0 $color inset, 0 1px 0 0 $color inset, 0 -1px 0 0 $color inset;
9
+ }
10
+
11
+ @mixin inset-append-border($color) {
12
+ box-shadow: 0 1px 0 0 $color inset, 0 -1px 0 0 $color inset, -1px 0 0 0 $color inset;
13
+ }
14
+
15
+ @mixin inset-prepend-input-border($color) {
16
+ box-shadow: 1px 0 0 0 $color inset, 1px 0 0 0 $color, 0 1px 0 0 $color inset, 0 -1px 0 0 $color inset !important;
17
+ }
18
+
19
+ @mixin inset-append-input-border($color) {
20
+ box-shadow: -1px 0 0 0 $color, -1px 0 0 0 $color inset, 0 1px 0 0 $color inset, 0 -1px 0 0 $color inset !important;
21
+ }
22
+
23
+ @mixin mixed-input-border($color) {
24
+ box-shadow: 0 0 0 1px $color inset;
25
+ }
26
+
27
+ @include b(textarea) {
28
+ @include set-component-css-var('input', $input);
29
+ }
30
+
31
+ @include b(textarea) {
32
+ position: relative;
33
+ display: inline-block;
34
+ width: 100%;
35
+ vertical-align: bottom;
36
+ font-size: getCssVar('font-size', 'base');
37
+
38
+ @include e(inner) {
39
+ position: relative;
40
+ display: block;
41
+ resize: vertical;
42
+ padding: 5px map.get($input-padding-horizontal, 'default')-$border-width;
43
+ line-height: 1.5;
44
+ box-sizing: border-box;
45
+ width: 100%;
46
+ font-size: inherit;
47
+ font-family: inherit;
48
+ color: var(#{getCssVarName('input-text-color')}, map.get($input, 'text-color'));
49
+ background-color: var(#{getCssVarName('input-bg-color')}, map.get($input, 'bg-color'));
50
+ background-image: none;
51
+ -webkit-appearance: none;
52
+ @include inset-input-border(var(#{getCssVarName('input-border-color')}, map.get($input, 'border-color')));
53
+ border-radius: getCssVarWithDefault('input-border-radius', map.get($input, 'border-radius'));
54
+ transition: getCssVar('transition-box-shadow');
55
+ border: none;
56
+
57
+ &::placeholder {
58
+ color: getCssVarWithDefault('input-placeholder-color', map.get($input, 'placeholder-color'));
59
+ }
60
+
61
+ &:hover {
62
+ @include inset-input-border(#{getCssVar('input', 'hover-border-color')});
63
+ }
64
+
65
+ &:focus {
66
+ outline: none;
67
+ @include inset-input-border(#{getCssVar('input', 'focus-border-color')});
68
+ }
69
+ }
70
+
71
+ & .#{$namespace}-input__count,
72
+ & .#{$namespace}-textarea__count {
73
+ color: getCssVar('color-info');
74
+ background: getCssVar('fill-color', 'blank');
75
+ position: absolute;
76
+ font-size: 12px;
77
+ line-height: 14px;
78
+ bottom: 5px;
79
+ right: 10px;
80
+ }
81
+
82
+ @include when(disabled) {
83
+ .#{$namespace}-textarea__inner {
84
+ @include inset-input-border(#{getCssVar('disabled-border-color')});
85
+ background-color: map.get($input-disabled, 'fill');
86
+ color: map.get($input-disabled, 'text-color');
87
+ cursor: not-allowed;
88
+
89
+ &::placeholder {
90
+ color: map.get($input-disabled, 'placeholder-color');
91
+ }
92
+ }
93
+ }
94
+
95
+ @include when(exceed) {
96
+ .#{$namespace}-textarea__inner {
97
+ @include mixed-input-border(#{getCssVar('color-danger')});
98
+ }
99
+
100
+ .#{$namespace}-input__count {
101
+ color: getCssVar('color-danger');
102
+ }
103
+ }
104
+ }
105
+
106
+ @include b(input) {
107
+ @include set-component-css-var('input', $input);
108
+ }
109
+
110
+ @include b(input) {
111
+ @include css-var-from-global('input-height', 'component-size');
112
+
113
+ position: relative;
114
+ font-size: getCssVar('font-size', 'base');
115
+ display: inline-flex;
116
+ width: getCssVar('input-width');
117
+ line-height: getCssVar('input-height');
118
+ box-sizing: border-box;
119
+ vertical-align: middle;
120
+ @include scroll-bar;
121
+
122
+ & .#{$namespace}-input__clear,
123
+ & .#{$namespace}-input__password {
124
+ color: getCssVar('input-icon-color');
125
+ font-size: map.get($input-font-size, 'default');
126
+ cursor: pointer;
127
+
128
+ &:hover {
129
+ color: getCssVar('input-clear-hover-color');
130
+ }
131
+ }
132
+
133
+ & .#{$namespace}-input__count {
134
+ height: 100%;
135
+ display: inline-flex;
136
+ align-items: center;
137
+ color: getCssVar('color-info');
138
+ font-size: 12px;
139
+
140
+ .#{$namespace}-input__count-inner {
141
+ background: getCssVar('fill-color', 'blank');
142
+ line-height: initial;
143
+ display: inline-block;
144
+ padding-left: 8px;
145
+ }
146
+ }
147
+
148
+ @include e(wrapper) {
149
+ display: inline-flex;
150
+ flex-grow: 1;
151
+ align-items: center;
152
+ justify-content: center;
153
+ padding: $border-width map.get($input-padding-horizontal, 'default')-$border-width;
154
+ background-color: var(#{getCssVarName('input-bg-color')}, map.get($input, 'bg-color'));
155
+ background-image: none;
156
+ border-radius: getCssVarWithDefault('input-border-radius', map.get($input, 'border-radius'));
157
+ cursor: text;
158
+ transition: getCssVar('transition-box-shadow');
159
+ transform: translate3d(0, 0, 0);
160
+ @include inset-input-border(var(#{getCssVarName('input-border-color')}, map.get($input, 'border-color')));
161
+
162
+ &:hover {
163
+ @include inset-input-border(#{getCssVar('input', 'hover-border-color')});
164
+ }
165
+
166
+ @include when(focus) {
167
+ @include inset-input-border(#{getCssVar('input', 'focus-border-color')});
168
+ }
169
+ }
170
+
171
+ & {
172
+ // use map.get as default value for date picker range
173
+ @include set-css-var-value('input-inner-height', calc(var(#{getCssVarName('input-height')}, #{map.get($input-height, 'default')}) - $border-width * 2));
174
+ }
175
+
176
+ @include e(inner) {
177
+ width: 100%;
178
+ flex-grow: 1;
179
+ -webkit-appearance: none;
180
+ color: var(#{getCssVarName('input-text-color')}, map.get($input, 'text-color'));
181
+ font-size: inherit;
182
+ height: getCssVar('input-inner-height');
183
+ line-height: getCssVar('input-inner-height');
184
+ padding: 0;
185
+ outline: none;
186
+ border: none;
187
+ background: none;
188
+ box-sizing: border-box;
189
+
190
+ &:focus {
191
+ outline: none;
192
+ }
193
+
194
+ &::placeholder {
195
+ color: getCssVarWithDefault('input-placeholder-color', map.get($input, 'placeholder-color'));
196
+ }
197
+
198
+ // override edge default style
199
+ &[type='password']::-ms-reveal {
200
+ display: none;
201
+ }
202
+
203
+ &[type='number'] {
204
+ line-height: 1;
205
+ }
206
+ }
207
+
208
+ @each $slot in (prefix, suffix) {
209
+ @include e($slot) {
210
+ display: inline-flex;
211
+ white-space: nowrap;
212
+ flex-shrink: 0;
213
+ flex-wrap: nowrap;
214
+ height: 100%;
215
+ line-height: getCssVar('input-inner-height');
216
+ text-align: center;
217
+ color: var(#{getCssVarName('input-icon-color')}, map.get($input, 'icon-color'));
218
+ transition: all getCssVar('transition-duration');
219
+ pointer-events: none;
220
+ }
221
+
222
+ @include e(#{$slot}-inner) {
223
+ pointer-events: all;
224
+ display: inline-flex;
225
+ align-items: center;
226
+ justify-content: center;
227
+
228
+ @if $slot == prefix {
229
+ > :last-child {
230
+ margin-right: 8px;
231
+ }
232
+
233
+ > :first-child {
234
+ &,
235
+ &.#{$namespace}-input__icon {
236
+ margin-left: 0;
237
+ }
238
+ }
239
+ } @else {
240
+ > :first-child {
241
+ margin-left: 8px;
242
+ }
243
+ }
244
+ }
245
+ }
246
+
247
+ & .#{$namespace}-input__icon {
248
+ height: inherit;
249
+ line-height: inherit;
250
+ display: flex;
251
+ justify-content: center;
252
+ align-items: center;
253
+ transition: all getCssVar('transition-duration');
254
+ margin-left: 8px;
255
+ }
256
+
257
+ @include e(validateIcon) {
258
+ pointer-events: none;
259
+ }
260
+
261
+ @include when(active) {
262
+ .#{$namespace}-input__wrapper {
263
+ @include mixed-input-border(var(#{getCssVarName('input-focus-color')}, map.get($input, 'focus-color')));
264
+ }
265
+ }
266
+
267
+ @include when(disabled) {
268
+ cursor: not-allowed;
269
+
270
+ .#{$namespace}-input__wrapper {
271
+ background-color: map.get($input-disabled, 'fill');
272
+ cursor: not-allowed;
273
+ @include mixed-input-border(map.get($input-disabled, 'border'));
274
+ }
275
+
276
+ .#{$namespace}-input__inner {
277
+ color: map.get($input-disabled, 'text-color');
278
+ -webkit-text-fill-color: map.get($input-disabled, 'text-color');
279
+ cursor: not-allowed;
280
+
281
+ &::placeholder {
282
+ color: map.get($input-disabled, 'placeholder-color');
283
+ }
284
+ }
285
+
286
+ .#{$namespace}-input__icon {
287
+ cursor: not-allowed;
288
+ }
289
+
290
+ .#{$namespace}-input__prefix-inner,
291
+ .#{$namespace}-input__suffix-inner {
292
+ pointer-events: none;
293
+ }
294
+ }
295
+
296
+ @include when(exceed) {
297
+ .#{$namespace}-input__wrapper {
298
+ @include mixed-input-border(#{getCssVar('color-danger')});
299
+ }
300
+
301
+ .#{$namespace}-input__suffix {
302
+ .#{$namespace}-input__count {
303
+ color: getCssVar('color-danger');
304
+ }
305
+ }
306
+ }
307
+
308
+ @each $size in (large, small) {
309
+ @include m($size) {
310
+ @include css-var-from-global('input-height', ('component-size', $size));
311
+
312
+ font-size: map.get($input-font-size, $size);
313
+
314
+ @include e(wrapper) {
315
+ padding: $border-width map.get($input-padding-horizontal, $size)-$border-width;
316
+ }
317
+ & {
318
+ @include set-css-var-value('input-inner-height', calc(var(#{getCssVarName('input-height')}, #{map.get($input-height, $size)}) - $border-width * 2));
319
+ }
320
+ }
321
+ }
322
+ }
323
+
324
+ @include b(input-group) {
325
+ display: inline-flex;
326
+ width: 100%;
327
+ align-items: stretch;
328
+
329
+ @include e((append, prepend)) {
330
+ background-color: getCssVar('fill-color', 'light');
331
+ color: getCssVar('color-info');
332
+ position: relative;
333
+ display: inline-flex;
334
+ align-items: center;
335
+ justify-content: center;
336
+ min-height: 100%;
337
+ border-radius: getCssVar('input-border-radius');
338
+ padding: 0 20px;
339
+ white-space: nowrap;
340
+
341
+ &:focus {
342
+ outline: none;
343
+ }
344
+
345
+ .#{$namespace}-select,
346
+ .#{$namespace}-button {
347
+ display: inline-block;
348
+ flex: 1;
349
+ margin: 0 -20px;
350
+ }
351
+
352
+ button.#{$namespace}-button,
353
+ button.#{$namespace}-button:hover,
354
+ div.#{$namespace}-select .#{$namespace}-select__wrapper,
355
+ div.#{$namespace}-select:hover .#{$namespace}-select__wrapper {
356
+ border-color: transparent;
357
+ background-color: transparent;
358
+ color: inherit;
359
+ }
360
+
361
+ .#{$namespace}-button,
362
+ .#{$namespace}-input {
363
+ font-size: inherit;
364
+ }
365
+ }
366
+
367
+ @include e(prepend) {
368
+ border-right: 0;
369
+ border-top-right-radius: 0;
370
+ border-bottom-right-radius: 0;
371
+ @include inset-prepend-border(#{getCssVar('input-border-color')});
372
+ }
373
+
374
+ @include e(append) {
375
+ border-left: 0;
376
+ border-top-left-radius: 0;
377
+ border-bottom-left-radius: 0;
378
+ @include inset-append-border(#{getCssVar('input-border-color')});
379
+ }
380
+
381
+ @include m(prepend) {
382
+ > .#{$namespace}-input__wrapper {
383
+ border-top-left-radius: 0;
384
+ border-bottom-left-radius: 0;
385
+ }
386
+
387
+ @include e(prepend) {
388
+ .#{$namespace}-select {
389
+ .#{$namespace}-select__wrapper {
390
+ border-top-right-radius: 0;
391
+ border-bottom-right-radius: 0;
392
+ @include inset-prepend-border(#{getCssVar('input-border-color')});
393
+ }
394
+ }
395
+ }
396
+ :has(> .#{$namespace}-select) {
397
+ background-color: var(--el-fill-color-blank);
398
+ }
399
+ }
400
+
401
+ @include m(append) {
402
+ > .#{$namespace}-input__wrapper {
403
+ border-top-right-radius: 0;
404
+ border-bottom-right-radius: 0;
405
+ }
406
+
407
+ @include e(append) {
408
+ .#{$namespace}-select {
409
+ .#{$namespace}-select__wrapper {
410
+ border-top-left-radius: 0;
411
+ border-bottom-left-radius: 0;
412
+ @include inset-append-border(#{getCssVar('input-border-color')});
413
+ }
414
+ }
415
+ }
416
+ :has(> .#{$namespace}-select) {
417
+ background-color: var(--el-fill-color-blank);
418
+ }
419
+ }
420
+ }
421
+
422
+ @include b(input-hidden) {
423
+ display: none !important;
424
+ }