@douyinfe/semi-foundation 2.4.1 → 2.6.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/button/button.scss +11 -0
  2. package/button/variables.scss +4 -0
  3. package/cascader/cascader.scss +3 -2
  4. package/cascader/foundation.ts +19 -0
  5. package/cascader/variables.scss +6 -3
  6. package/datePicker/foundation.ts +16 -4
  7. package/datePicker/inputFoundation.ts +0 -1
  8. package/datePicker/monthFoundation.ts +1 -0
  9. package/form/form.scss +7 -1
  10. package/form/foundation.ts +40 -36
  11. package/form/interface.ts +1 -1
  12. package/input/input.scss +2 -1
  13. package/lib/cjs/autoComplete/constants.d.ts +1 -1
  14. package/lib/cjs/button/button.css +9 -0
  15. package/lib/cjs/button/button.scss +11 -0
  16. package/lib/cjs/button/variables.scss +4 -0
  17. package/lib/cjs/cascader/cascader.css +2 -1
  18. package/lib/cjs/cascader/cascader.scss +3 -2
  19. package/lib/cjs/cascader/foundation.d.ts +19 -0
  20. package/lib/cjs/cascader/foundation.js +22 -0
  21. package/lib/cjs/cascader/variables.scss +6 -3
  22. package/lib/cjs/datePicker/foundation.d.ts +9 -4
  23. package/lib/cjs/datePicker/foundation.js +18 -0
  24. package/lib/cjs/datePicker/inputFoundation.d.ts +0 -1
  25. package/lib/cjs/datePicker/monthFoundation.d.ts +1 -0
  26. package/lib/cjs/dropdown/constants.d.ts +1 -1
  27. package/lib/cjs/form/form.css +4 -0
  28. package/lib/cjs/form/form.scss +7 -1
  29. package/lib/cjs/form/foundation.d.ts +6 -6
  30. package/lib/cjs/form/foundation.js +51 -52
  31. package/lib/cjs/form/interface.d.ts +1 -1
  32. package/lib/cjs/input/input.css +1 -0
  33. package/lib/cjs/input/input.scss +2 -1
  34. package/lib/cjs/select/constants.d.ts +1 -1
  35. package/lib/cjs/select/foundation.d.ts +1 -1
  36. package/lib/cjs/select/foundation.js +2 -1
  37. package/lib/cjs/select/optionFoundation.d.ts +1 -1
  38. package/lib/cjs/select/optionFoundation.js +3 -3
  39. package/lib/cjs/slider/foundation.js +2 -2
  40. package/lib/cjs/table/foundation.d.ts +2 -0
  41. package/lib/cjs/table/foundation.js +16 -4
  42. package/lib/cjs/table/table.css +1 -2
  43. package/lib/cjs/table/table.scss +4 -5
  44. package/lib/cjs/table/utils.js +4 -1
  45. package/lib/cjs/table/variables.scss +1 -0
  46. package/lib/cjs/tooltip/constants.d.ts +1 -1
  47. package/lib/cjs/tooltip/constants.js +1 -1
  48. package/lib/cjs/tooltip/foundation.js +65 -4
  49. package/lib/cjs/tree/foundation.d.ts +4 -1
  50. package/lib/cjs/tree/foundation.js +69 -20
  51. package/lib/cjs/treeSelect/foundation.d.ts +3 -3
  52. package/lib/cjs/treeSelect/foundation.js +103 -35
  53. package/lib/cjs/upload/upload.css +49 -27
  54. package/lib/cjs/upload/upload.scss +66 -41
  55. package/lib/cjs/upload/variables.scss +3 -1
  56. package/lib/es/autoComplete/constants.d.ts +1 -1
  57. package/lib/es/button/button.css +9 -0
  58. package/lib/es/button/button.scss +11 -0
  59. package/lib/es/button/variables.scss +4 -0
  60. package/lib/es/cascader/cascader.css +2 -1
  61. package/lib/es/cascader/cascader.scss +3 -2
  62. package/lib/es/cascader/foundation.d.ts +19 -0
  63. package/lib/es/cascader/foundation.js +22 -1
  64. package/lib/es/cascader/variables.scss +6 -3
  65. package/lib/es/datePicker/foundation.d.ts +9 -4
  66. package/lib/es/datePicker/foundation.js +18 -0
  67. package/lib/es/datePicker/inputFoundation.d.ts +0 -1
  68. package/lib/es/datePicker/monthFoundation.d.ts +1 -0
  69. package/lib/es/dropdown/constants.d.ts +1 -1
  70. package/lib/es/form/form.css +4 -0
  71. package/lib/es/form/form.scss +7 -1
  72. package/lib/es/form/foundation.d.ts +6 -6
  73. package/lib/es/form/foundation.js +51 -52
  74. package/lib/es/form/interface.d.ts +1 -1
  75. package/lib/es/input/input.css +1 -0
  76. package/lib/es/input/input.scss +2 -1
  77. package/lib/es/select/constants.d.ts +1 -1
  78. package/lib/es/select/foundation.d.ts +1 -1
  79. package/lib/es/select/foundation.js +2 -1
  80. package/lib/es/select/optionFoundation.d.ts +1 -1
  81. package/lib/es/select/optionFoundation.js +3 -3
  82. package/lib/es/slider/foundation.js +2 -2
  83. package/lib/es/table/foundation.d.ts +2 -0
  84. package/lib/es/table/foundation.js +16 -4
  85. package/lib/es/table/table.css +1 -2
  86. package/lib/es/table/table.scss +4 -5
  87. package/lib/es/table/utils.js +4 -1
  88. package/lib/es/table/variables.scss +1 -0
  89. package/lib/es/tooltip/constants.d.ts +1 -1
  90. package/lib/es/tooltip/constants.js +1 -1
  91. package/lib/es/tooltip/foundation.js +65 -4
  92. package/lib/es/tree/foundation.d.ts +4 -1
  93. package/lib/es/tree/foundation.js +69 -20
  94. package/lib/es/treeSelect/foundation.d.ts +3 -3
  95. package/lib/es/treeSelect/foundation.js +102 -35
  96. package/lib/es/upload/upload.css +49 -27
  97. package/lib/es/upload/upload.scss +66 -41
  98. package/lib/es/upload/variables.scss +3 -1
  99. package/package.json +3 -3
  100. package/select/foundation.ts +3 -2
  101. package/select/optionFoundation.ts +3 -3
  102. package/slider/foundation.ts +2 -2
  103. package/table/foundation.ts +23 -10
  104. package/table/table.scss +4 -5
  105. package/table/utils.ts +3 -1
  106. package/table/variables.scss +1 -0
  107. package/tooltip/constants.ts +2 -0
  108. package/tooltip/foundation.ts +52 -4
  109. package/tree/foundation.ts +56 -17
  110. package/treeSelect/foundation.ts +89 -41
  111. package/upload/upload.scss +66 -41
  112. package/upload/variables.scss +3 -1
@@ -1,4 +1,4 @@
1
- @import "./variables.scss";
1
+ @import './variables.scss';
2
2
 
3
3
  $module: #{$prefix}-upload;
4
4
 
@@ -47,7 +47,7 @@ $module: #{$prefix}-upload;
47
47
  align-items: center;
48
48
  }
49
49
 
50
- &[x-prompt-pos="right"] {
50
+ &[x-prompt-pos='right'] {
51
51
  .#{$module}-add {
52
52
  display: inline-flex;
53
53
  }
@@ -57,7 +57,7 @@ $module: #{$prefix}-upload;
57
57
  }
58
58
  }
59
59
 
60
- &[x-prompt-pos="bottom"] {
60
+ &[x-prompt-pos='bottom'] {
61
61
  .#{$module}-add {
62
62
  display: flex;
63
63
  }
@@ -72,15 +72,14 @@ $module: #{$prefix}-upload;
72
72
  }
73
73
  }
74
74
 
75
- &[x-prompt-pos="left"] {
75
+ &[x-prompt-pos='left'] {
76
76
  .#{$module}-add {
77
77
  display: inline-flex;
78
- order: 2;
79
78
  }
80
79
 
81
80
  .#{$module}-prompt {
82
81
  display: inline-flex;
83
- order: 1;
82
+ order: -1;
84
83
  }
85
84
 
86
85
  .#{$module}-file-list {
@@ -247,7 +246,6 @@ $module: #{$prefix}-upload;
247
246
  }
248
247
 
249
248
  &-icon {
250
-
251
249
  &-loading,
252
250
  &-error {
253
251
  font-size: $width-upload_file_card-icon;
@@ -275,7 +273,6 @@ $module: #{$prefix}-upload;
275
273
  }
276
274
 
277
275
  .#{$module}-file-card {
278
-
279
276
  &-info-validate-message {
280
277
  color: $color-upload_file_card_fail_info-text;
281
278
  }
@@ -288,26 +285,18 @@ $module: #{$prefix}-upload;
288
285
  &-picture {
289
286
  display: flex;
290
287
 
291
- &[x-prompt-pos="bottom"] {
288
+ &[x-prompt-pos='bottom'] {
292
289
  flex-direction: column;
293
290
 
294
291
  .#{$module}-prompt {
295
292
  order: 1;
296
293
  }
297
-
298
- .#{$module}-add {
299
- order: 0;
300
- }
301
294
  }
302
295
 
303
- &[x-prompt-pos="right"] {
296
+ &[x-prompt-pos='right'] {
304
297
  .#{$module}-prompt {
305
298
  order: 1;
306
299
  }
307
-
308
- .#{$module}-add {
309
- order: 0;
310
- }
311
300
  }
312
301
 
313
302
  &-add {
@@ -321,7 +310,6 @@ $module: #{$prefix}-upload;
321
310
  border: $width-upload_picture_add-border dashed $color-upload-border;
322
311
  color: $color-upload-icon;
323
312
  border-radius: $radius-upload_picture_add;
324
- order: 2;
325
313
  cursor: pointer;
326
314
 
327
315
  &:hover {
@@ -370,38 +358,32 @@ $module: #{$prefix}-upload;
370
358
  }
371
359
 
372
360
  &-close {
373
- width: $width-upload_picture_file_card_close;
374
- height: $width-upload_picture_file_card_close;
375
- background-color: $color-upload_pic_remove-bg;
361
+ visibility: hidden;
362
+ display: inline-flex;
376
363
  position: absolute;
377
364
  top: $spacing-upload_picture_file_card_close-top;
378
365
  right: $spacing-upload_picture_file_card_close-right;
379
- @include all-center;
380
- display: none;
381
366
  border-radius: $radius-upload_picture_file_card_close;
382
- color: white;
383
367
  cursor: pointer;
384
368
  transition: all 0s;
385
369
  }
386
-
387
- &:hover {
388
- .#{$module}-picture-file-card-close {
389
- display: flex;
390
- }
391
-
392
- .#{$module}-picture-file-card-replace {
393
- visibility: visible;
394
- }
370
+ &-icon-close {
371
+ font-size: $width-upload_picture_file_card_close;
372
+ color: $color-upload_picture_file_card_close-icon;
395
373
  }
396
374
 
397
- .#{$prefix}-progress-circle {
375
+ &::before {
376
+ visibility: hidden;
377
+ background-color: $color-upload_picture_file_card_hover-bg;
378
+ content: '';
398
379
  position: absolute;
399
- top: 50%;
400
- left: 50%;
401
- transform: translate(-50%, -50%);
380
+ left: 0;
381
+ right: 0;
382
+ top: 0;
383
+ bottom: 0;
402
384
  }
403
-
404
385
  &-retry {
386
+ visibility: hidden;
405
387
  background-color: $color-upload_file_card_retry-bg;
406
388
  width: $width-upload_file_card_retry;
407
389
  height: $width-upload_file_card_retry;
@@ -416,7 +398,6 @@ $module: #{$prefix}-upload;
416
398
  justify-content: center;
417
399
  cursor: pointer;
418
400
  }
419
-
420
401
  &-icon-retry {
421
402
  transform: scale(-1, 1);
422
403
  font-size: $width-upload_file_card_retry-icon;
@@ -432,6 +413,17 @@ $module: #{$prefix}-upload;
432
413
  color: $color-upload_replace-text;
433
414
  transform: translate3D(-50%, -50%, 0);
434
415
  }
416
+
417
+ &-preview {
418
+ visibility: hidden;
419
+ display: inline-flex;
420
+ position: absolute;
421
+ cursor: pointer;
422
+ top: 50%;
423
+ left: 50%;
424
+ transform: translate3D(-50%, -50%, 0);
425
+ }
426
+
435
427
  &-pic-info {
436
428
  display: inline-flex;
437
429
  box-sizing: border-box;
@@ -468,6 +460,39 @@ $module: #{$prefix}-upload;
468
460
  &-error {
469
461
  outline: 1px solid $color-upload_picture_file_card_error-border;
470
462
  }
463
+
464
+ &:hover {
465
+ &::before {
466
+ visibility: visible;
467
+ }
468
+
469
+ .#{$module}-picture-file-card-close {
470
+ visibility: visible;
471
+ }
472
+ .#{$module}-picture-file-card-replace {
473
+ visibility: visible;
474
+ }
475
+
476
+ .#{$module}-picture-file-card-retry {
477
+ visibility: visible;
478
+ }
479
+ .#{$module}-picture-file-card-preview {
480
+ visibility: visible;
481
+ }
482
+ }
483
+
484
+ &-uploading {
485
+ &::before {
486
+ visibility: visible;
487
+ }
488
+ }
489
+
490
+ .#{$prefix}-progress-circle {
491
+ position: absolute;
492
+ top: 50%;
493
+ left: 50%;
494
+ transform: translate(-50%, -50%);
495
+ }
471
496
  }
472
497
  }
473
498
 
@@ -542,4 +567,4 @@ $module: #{$prefix}-upload;
542
567
  }
543
568
  }
544
569
 
545
- @import "./rtl.scss";
570
+ @import './rtl.scss';
@@ -16,7 +16,7 @@ $color-upload_drag_area_tips-text: var(--semi-color-primary); // 上传可拖拽
16
16
  $color-upload_file_card_fail_info-text: var(--semi-color-danger); // 上传文件卡片失败提示信息文本颜色
17
17
  $color-upload_file_card_preview_placeholder-bg: rgba(var(--semi-grey-3), 1); // 文件卡片默认预览背景颜色
18
18
  $color-upload_file_card_preview_placeholder-text: rgba(var(--semi-white), 1); // 文件卡片默认预览图颜色
19
- $color-upload_file_card_retry-bg: #fff; // 重新上传按钮背景颜色
19
+ $color-upload_file_card_retry-bg: var(--semi-color-white); // 重新上传按钮背景颜色
20
20
  $color-upload_file_card_retry-text: var(--semi-color-primary); // 重新上传按钮文本颜色
21
21
  $color-upload-icon: var(--semi-color-tertiary); // 图片墙上传图标加号颜色
22
22
  $color-upload_pic_add-bg-active: var(--semi-color-fill-2); // 图片墙上传背景色 - 按下
@@ -26,6 +26,8 @@ $color-upload_pic_remove-bg: var(--semi-color-overlay-bg); // 图片墙上传移
26
26
  $color-upload_picture_file_card_loading_error-icon: var(--semi-color-danger); // 图片墙上传移除图标颜色
27
27
  $color-upload_picture_file_card_error-border: var(--semi-color-danger); // 图片墙上传移除图标颜色
28
28
  $color-upload_picture_file_card_pic_info-text: var(--semi-color-white); // 图片墙图片信息(序号)文字颜色
29
+ $color-upload_picture_file_card_close-icon: var(--semi-color-white); // 图片墙关闭图标颜色
30
+ $color-upload_picture_file_card_hover-bg: var(--semi-color-overlay-bg); // 图片墙预览悬浮背景色
29
31
  $color-upload_preview-icon: var(--semi-color-text-2); // 上传文件卡片文本颜色
30
32
  $color-upload_retry-text: var(--semi-color-primary); // 上传文件卡片重新上传按钮文本颜色
31
33
  $color-upload_replace-text: var(--semi-color-white); // 上传文件卡片重新替换按钮文本颜色
@@ -3,7 +3,7 @@ declare const cssClasses: {
3
3
  };
4
4
  declare const strings: {
5
5
  readonly SIZE: readonly ["small", "large", "default"];
6
- readonly POSITION: readonly ["top", "topLeft", "topRight", "left", "leftTop", "leftBottom", "right", "rightTop", "rightBottom", "bottom", "bottomLeft", "bottomRight", "leftTopOver", "rightTopOver"];
6
+ readonly POSITION: readonly ["top", "topLeft", "topRight", "left", "leftTop", "leftBottom", "right", "rightTop", "rightBottom", "bottom", "bottomLeft", "bottomRight", "leftTopOver", "rightTopOver", "leftBottomOver", "rightBottomOver"];
7
7
  readonly OPTIONS: readonly ["children", "value"];
8
8
  readonly STATUS: readonly ["default", "error", "warning", "success"];
9
9
  };
@@ -44,6 +44,9 @@
44
44
  vertical-align: middle;
45
45
  white-space: nowrap;
46
46
  }
47
+ .semi-button:focus {
48
+ outline: 2px solid var(--semi-color-primary-light-active);
49
+ }
47
50
  .semi-button-danger {
48
51
  background-color: var(--semi-color-danger);
49
52
  color: white;
@@ -57,6 +60,9 @@
57
60
  .semi-button-danger.semi-button-light, .semi-button-danger.semi-button-borderless {
58
61
  color: var(--semi-color-danger);
59
62
  }
63
+ .semi-button-danger:not(.semi-button-borderless):not(.semi-button-light):focus {
64
+ outline-color: var(--semi-color-danger-light-active);
65
+ }
60
66
  .semi-button-warning {
61
67
  background-color: var(--semi-color-warning);
62
68
  color: white;
@@ -70,6 +76,9 @@
70
76
  .semi-button-warning.semi-button-light, .semi-button-warning.semi-button-borderless {
71
77
  color: var(--semi-color-warning);
72
78
  }
79
+ .semi-button-warning:not(.semi-button-borderless):not(.semi-button-light):focus {
80
+ outline-color: var(--semi-color-warning-light-active);
81
+ }
73
82
  .semi-button-tertiary {
74
83
  background-color: var(--semi-color-tertiary);
75
84
  color: white;
@@ -23,6 +23,11 @@ $module: #{$prefix}-button;
23
23
  outline: none;
24
24
  vertical-align: middle;
25
25
  white-space: nowrap;
26
+
27
+ &:focus {
28
+ outline: $width-button-outline solid $color-button_primary-outline-focus;
29
+ }
30
+
26
31
  &-danger {
27
32
  background-color: $color-button_danger-bg-default;
28
33
  color: $color-button_danger-text-default;
@@ -36,6 +41,9 @@ $module: #{$prefix}-button;
36
41
  &.#{$module}-borderless {
37
42
  color: $color-button_danger-bg-default;
38
43
  }
44
+ &:not(.#{$module}-borderless):not(.#{$module}-light):focus {
45
+ outline-color: $color-button_danger-outline-focus;
46
+ }
39
47
  }
40
48
  &-warning {
41
49
  background-color: $color-button_warning-bg-default;
@@ -50,6 +58,9 @@ $module: #{$prefix}-button;
50
58
  &.#{$module}-borderless {
51
59
  color: $color-button_warning-bg-default;
52
60
  }
61
+ &:not(.#{$module}-borderless):not(.#{$module}-light):focus {
62
+ outline-color: $color-button_warning-outline-focus;
63
+ }
53
64
  }
54
65
  &-tertiary {
55
66
  background-color: $color-button_tertiary-bg-default;
@@ -10,6 +10,7 @@ $color-button_primary-text-hover: white; // 主要按钮文字颜色 - 悬浮
10
10
  $color-button_primary-bg-active: var(--semi-color-primary-active); // 主要按钮背景颜色 - 按下
11
11
  $color-button_primary-border-active: var(--semi-color-primary-active); // 主要按钮描边颜色 - 按下
12
12
  $color-button_primary-text-active: white; // 主要按钮文字颜色 - 按下
13
+ $color-button_primary-outline-focus: var(--semi-color-primary-light-active); // 主要按钮轮廓 - 聚焦
13
14
 
14
15
  // secondary
15
16
  $color-button_secondary-bg-default: var(--semi-color-secondary); // 次要按钮背景颜色
@@ -36,6 +37,7 @@ $color-button_danger-text-hover: white; // 危险按钮文字颜色 - 悬浮
36
37
  $color-button_danger-bg-active: var(--semi-color-danger-active); // 危险按钮背景颜色 - 按下
37
38
  $color-button_danger-border-active: var(--semi-color-danger-active); // 危险按钮描边颜色 - 按下
38
39
  $color-button_danger-text-active: white; // 危险按钮文字颜色 - 按下
40
+ $color-button_danger-outline-focus: var(--semi-color-danger-light-active); // 危险按钮轮廓 - 聚焦
39
41
 
40
42
  // warning
41
43
  $color-button_warning-bg-default: var(--semi-color-warning); // 警告按钮背景颜色
@@ -49,6 +51,7 @@ $color-button_warning-text-hover: white; // 警告按钮文字颜色 - 悬浮
49
51
  $color-button_warning-bg-active: var(--semi-color-warning-active); // 警告按钮背景颜色 - 按下
50
52
  $color-button_warning-border-active: var(--semi-color-warning-active); // 警告按钮描边颜色 - 按下
51
53
  $color-button_warning-text-active: white; // 警告按钮文字颜色 - 按下
54
+ $color-button_warning-outline-focus: var(--semi-color-warning-light-active); // 警告按钮轮廓 - 聚焦
52
55
 
53
56
  // tertiary
54
57
  $color-button_tertiary-bg-default: var(--semi-color-tertiary); // 第三按钮背景颜色
@@ -134,3 +137,4 @@ $height-button_default: $height-control-default; // 按钮高度 - 默认
134
137
  $width-button-border: $border-thickness; // 按钮描边宽度
135
138
  $radius-button: var(--semi-border-radius-small); // 按钮圆角大小
136
139
  $radius-button_group: $radius-button; // 按钮组圆角大小
140
+ $width-button-outline: 2px; // 按钮轮廓宽度
@@ -19,6 +19,7 @@
19
19
  }
20
20
  .semi-cascader:hover {
21
21
  background-color: var(--semi-color-fill-1);
22
+ border: 1px transparent solid;
22
23
  }
23
24
  .semi-cascader-small {
24
25
  min-height: 24px;
@@ -94,7 +95,7 @@
94
95
  color: var(--semi-color-text-2);
95
96
  }
96
97
  .semi-cascader-selection-tag {
97
- margin: 1px 2px;
98
+ margin: 1px 2px 1px 0;
98
99
  }
99
100
  .semi-cascader-selection-tag:first-child {
100
101
  margin-left: 0;
@@ -20,6 +20,7 @@ $module: #{$prefix}-cascader;
20
20
 
21
21
  &:hover {
22
22
  background-color: $color-cascader_default-bg-hover;
23
+ border: $width-cascader_hover-border $color-cascader_default-border-hover solid;
23
24
  }
24
25
 
25
26
  &-small {
@@ -110,7 +111,7 @@ $module: #{$prefix}-cascader;
110
111
  }
111
112
 
112
113
  &-tag {
113
- margin: $spacing-cascader_selection_tag-marginY $spacing-cascader_selection_tag-marginX;
114
+ margin: $spacing-cascader_selection_tag-marginY $spacing-cascader_selection_tag-marginRight $spacing-cascader_selection_tag-marginY $spacing-cascader_selection_tag-marginLeft;
114
115
 
115
116
  &:first-child {
116
117
  margin-left: 0;
@@ -119,7 +120,7 @@ $module: #{$prefix}-cascader;
119
120
  &-disabled.#{$prefix}-tag {
120
121
  color: $color-cascader_input_disabled-text-default;
121
122
  cursor: not-allowed;
122
-
123
+
123
124
  .#{$prefix}-tag-close {
124
125
  color: $color-cascader_input_disabled-text-default;
125
126
  cursor: not-allowed;
@@ -193,6 +193,10 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
193
193
  handleShowNextByHover(item: BasicEntity): void;
194
194
  onItemCheckboxClick(item: BasicEntity | BasicData): void;
195
195
  handleClick(e: any): void;
196
+ /**
197
+ * A11y: simulate selection click
198
+ */
199
+ handleSelectionEnterPress(keyboardEvent: any): void;
196
200
  toggleHoverState(bool: boolean): void;
197
201
  _defaultRenderText(path: any[], displayRender?: BasicCascaderProps['displayRender']): any;
198
202
  renderDisplayText(targetKey: string, keyEntities?: BasicEntities): any;
@@ -201,6 +205,17 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
201
205
  handleSingleSelect(e: any, item: BasicEntity | BasicData): void;
202
206
  _handleMultipleSelect(item: BasicEntity | BasicData): void;
203
207
  calcNonDisabedCheckedKeys(eventKey: string, targetStatus: boolean): {
208
+ /**
209
+ * The typical scenario is: suppose we select the 0-0 node, at this time
210
+ * selectedKeys=Set('0-0'), the input box will display a 0-0 label. When
211
+ * treeData is updated, assuming 0-0 does not exist in treeData at this
212
+ * time, then selectedKeys=Set('not-exist-0-0'), at this time the input
213
+ * box displays 0-0, which means not-exist -After the content. When treeData
214
+ * is updated again, assuming that 0-0 exists in treeData at this time,
215
+ * then selectedKeys=Set('0-0'), and the input box displays a label of
216
+ * 0-0 at this time. The operation done here is for the 0-0 label to be
217
+ * displayed normally after the second update in the example.
218
+ */
204
219
  checkedKeys: Set<string>;
205
220
  halfCheckedKeys: Set<any>;
206
221
  };
@@ -217,6 +232,10 @@ export default class CascaderFoundation extends BaseFoundation<CascaderAdapter,
217
232
  };
218
233
  handleInputChange(sugInput: string): void;
219
234
  handleClear(): void;
235
+ /**
236
+ * A11y: simulate clear button click
237
+ */
238
+ handleClearEnterPress(keyboardEvent: any): void;
220
239
  getRenderData(): BasicEntity[] | BasicData[];
221
240
  getFilteredData(): BasicData[];
222
241
  handleListScroll(e: any, ind: number): void;
@@ -23,7 +23,8 @@ import _parseInt from "@babel/runtime-corejs3/core-js-stable/parse-int";
23
23
  import BaseFoundation from '../base/foundation';
24
24
  import { filter, findAncestorKeys, calcCheckedKeysForUnchecked, calcCheckedKeysForChecked, calcCheckedKeys, findDescendantKeys, normalizeKeyList } from '../tree/treeUtil';
25
25
  import { convertDataToEntities, findKeysForValues, normalizedArr, isValid, calcMergeType } from './util';
26
- import { strings } from './constants'; // eslint-disable-next-line max-len
26
+ import { strings } from './constants';
27
+ import isEnterPress from '../utils/isEnterPress'; // eslint-disable-next-line max-len
27
28
 
28
29
  export default class CascaderFoundation extends BaseFoundation {
29
30
  constructor(adapter) {
@@ -530,6 +531,16 @@ export default class CascaderFoundation extends BaseFoundation {
530
531
  this.close(e);
531
532
  }
532
533
  }
534
+ /**
535
+ * A11y: simulate selection click
536
+ */
537
+
538
+
539
+ handleSelectionEnterPress(keyboardEvent) {
540
+ if (isEnterPress(keyboardEvent)) {
541
+ this.handleClick(keyboardEvent);
542
+ }
543
+ }
533
544
 
534
545
  toggleHoverState(bool) {
535
546
  this._adapter.toggleHovering(bool);
@@ -961,6 +972,16 @@ export default class CascaderFoundation extends BaseFoundation {
961
972
 
962
973
  this._adapter.rePositionDropdown();
963
974
  }
975
+ /**
976
+ * A11y: simulate clear button click
977
+ */
978
+
979
+
980
+ handleClearEnterPress(keyboardEvent) {
981
+ if (isEnterPress(keyboardEvent)) {
982
+ this.handleClear();
983
+ }
984
+ }
964
985
 
965
986
  getRenderData() {
966
987
  var _context9, _context10;
@@ -1,9 +1,10 @@
1
1
  $radius-cascader: var(--semi-border-radius-small); // 级联选择菜单圆角
2
2
 
3
- $color-cascader_default-border-default: transparent; // 级联选择描边颜色
3
+ $color-cascader_default-border-default: transparent; // 级联选择描边颜色 - 默认
4
+ $color-cascader_default-border-hover: transparent; // 级联选择描边颜色 - 悬浮
5
+ $color-cascader_default-border-focus: var(--semi-color-focus-border); // 级联选择描边颜色 - 选中
4
6
  $color-cascader_default-bg-default: var(--semi-color-fill-0); // 级联选择菜单项背景颜色 - 默认
5
7
  $color-cascader_default-bg-hover: var(--semi-color-fill-1); // 级联选择菜单项背景颜色 - 悬浮
6
- $color-cascader_default-border-focus: var(--semi-color-focus-border); // 级联选择描边颜色 - 选中
7
8
  $color-cascader_option_list-border-default: var(--semi-color-fill-0); // 级联选择各级菜单分割线颜色
8
9
  $color-cascader_option_main-text-default: var(--semi-color-text-0); // 级联选择菜单项文字颜色
9
10
  $color-cascader_option-bg-hover: var(--semi-color-fill-0); // 级联选择菜单项背景颜色 - 悬浮
@@ -43,7 +44,8 @@ $spacing-cascader_selection-paddingLeft: 12px; // 级联选择触发器左侧内
43
44
  $spacing-cascader_selection-paddingRight: 12px; // 级联选择触发器右侧内边距
44
45
  $spacing-cascader_selection_multiple-paddingLeft: $spacing-extra-tight; // 级联选择触发器多选时左侧内边距
45
46
  $spacing-cascader_selection_multiple-paddingRight: $spacing-extra-tight; // 级联选择触发器多选时右侧内边距
46
- $spacing-cascader_selection_tag-marginX: $spacing-super-tight; // 级联选择触发器多选时标签的水平外边距
47
+ $spacing-cascader_selection_tag-marginLeft: $spacing-none; // 级联选择触发器多选时标签的水平左外边距
48
+ $spacing-cascader_selection_tag-marginRight: $spacing-super-tight; // 级联选择触发器多选时标签的水平右外边距
47
49
  $spacing-cascader_selection_tag-marginY: 1px; // 级联选择触发器多选时标签的垂直外边距
48
50
  $spacing-cascader_selection_tagInput-marginLeft: - $spacing-extra-tight; // 级联选择触发器多选搜索时 TagInput 的左外边距
49
51
  $spacing-cascader_selection_input-marginLeft: $spacing-extra-tight; // 级联选择触发器多选搜索时输入框的左外边距
@@ -83,6 +85,7 @@ $width-cascader: 80px; // 级联选择触发器最小宽度
83
85
  $height-cascader_default: $height-control-default; // 级联选择触发器高度 - 默认
84
86
  $height-cascader_small: $height-control-small; // 级联选择触发器高度 - 小尺寸
85
87
  $height-cascader_large: $height-control-large; // 级联选择触发器高度 - 大尺寸
88
+ $width-cascader_hover-border: $width-cascader-border; // 级联选择触发器描边宽度 - 悬浮
86
89
  $width-cascader_focus-border: $border-thickness-control-focus; // 级联选择触发器描边宽度 - 选中态
87
90
  $width-cascader_search-border: 1px; // 级联选择触搜索描边宽度
88
91
  $width-cascader-icon: 16px; // 级联选择图标尺寸
@@ -135,8 +135,8 @@ export interface DatePickerFoundationState {
135
135
  panelShow: boolean;
136
136
  isRange: boolean;
137
137
  inputValue: string;
138
- value: ValueType;
139
- cachedSelectedValue: ValueType;
138
+ value: Date[];
139
+ cachedSelectedValue: Date[];
140
140
  prevTimeZone: string | number;
141
141
  motionEnd: boolean;
142
142
  rangeInputFocus: 'rangeStart' | 'rangeEnd' | boolean;
@@ -155,9 +155,9 @@ export interface DatePickerAdapter extends DefaultAdapter<DatePickerFoundationPr
155
155
  notifyConfirm: DatePickerFoundationProps['onConfirm'];
156
156
  notifyOpenChange: DatePickerFoundationProps['onOpenChange'];
157
157
  notifyPresetsClick: DatePickerFoundationProps['onPresetClick'];
158
- updateValue: (value: ValueType) => void;
158
+ updateValue: (value: Date[]) => void;
159
159
  updatePrevTimezone: (prevTimeZone: string | number) => void;
160
- updateCachedSelectedValue: (cachedSelectedValue: ValueType) => void;
160
+ updateCachedSelectedValue: (cachedSelectedValue: Date[]) => void;
161
161
  updateInputValue: (inputValue: string) => void;
162
162
  needConfirm: () => boolean;
163
163
  typeIsYearOrMonth: () => boolean;
@@ -221,6 +221,11 @@ export default class DatePickerFoundation extends BaseFoundation<DatePickerAdapt
221
221
  * @param {Date[]} dates
222
222
  */
223
223
  closePanel(e?: any, inputValue?: string, dates?: Date[]): void;
224
+ /**
225
+ * clear range input focus when open is controlled
226
+ * fixed github 1375
227
+ */
228
+ clearRangeInputFocus: () => void;
224
229
  /**
225
230
  * Callback when the content of the input box changes
226
231
  * Update the date panel if the changed value is a legal date, otherwise only update the input box
@@ -38,6 +38,24 @@ import { strings as inputStrings } from '../input/constants';
38
38
  export default class DatePickerFoundation extends BaseFoundation {
39
39
  constructor(adapter) {
40
40
  super(_Object$assign({}, adapter));
41
+ /**
42
+ * clear range input focus when open is controlled
43
+ * fixed github 1375
44
+ */
45
+
46
+ this.clearRangeInputFocus = () => {
47
+ const {
48
+ type
49
+ } = this._adapter.getProps();
50
+
51
+ const {
52
+ rangeInputFocus
53
+ } = this._adapter.getStates();
54
+
55
+ if (type === 'dateTimeRange' && rangeInputFocus) {
56
+ this._adapter.setRangeInputFocus(false);
57
+ }
58
+ };
41
59
 
42
60
  this.getMergedMotion = motion => {
43
61
  const mergedMotion = typeof motion === 'undefined' || motion ? _Object$assign(_Object$assign({}, motion), {
@@ -22,7 +22,6 @@ export interface DateInputFoundationProps extends DateInputElementProps, DateInp
22
22
  value?: ValueType;
23
23
  disabled?: boolean;
24
24
  type?: Type;
25
- multiple?: boolean;
26
25
  showClear?: boolean;
27
26
  format?: string;
28
27
  inputStyle?: React.CSSProperties;
@@ -26,6 +26,7 @@ export interface MonthFoundationProps {
26
26
  focusRecordsRef: any;
27
27
  locale: any;
28
28
  localeCode: string;
29
+ multiple: boolean;
29
30
  }
30
31
  export declare type MonthDayInfo = {
31
32
  dayNumber: number;
@@ -4,7 +4,7 @@ declare const cssClasses: {
4
4
  DISABLED: string;
5
5
  };
6
6
  declare const strings: {
7
- POSITION_SET: readonly ["top", "topLeft", "topRight", "left", "leftTop", "leftBottom", "right", "rightTop", "rightBottom", "bottom", "bottomLeft", "bottomRight", "leftTopOver", "rightTopOver"];
7
+ POSITION_SET: readonly ["top", "topLeft", "topRight", "left", "leftTop", "leftBottom", "right", "rightTop", "rightBottom", "bottom", "bottomLeft", "bottomRight", "leftTopOver", "rightTopOver", "leftBottomOver", "rightBottomOver"];
8
8
  TRIGGER_SET: string[];
9
9
  DEFAULT_LEAVE_DELAY: number;
10
10
  ITEM_TYPE: string[];
@@ -111,6 +111,10 @@
111
111
  padding-top: 6px;
112
112
  padding-bottom: 6px;
113
113
  }
114
+ .semi-form-field[x-label-pos=left] .semi-radioGroup-buttonRadio {
115
+ padding-top: 0;
116
+ padding-bottom: 0;
117
+ }
114
118
  .semi-form-field[x-label-pos=left] .semi-switch,
115
119
  .semi-form-field[x-label-pos=left] .semi-rating {
116
120
  vertical-align: middle;
@@ -8,6 +8,8 @@ $col: #{$form}-col;
8
8
 
9
9
  $checkboxGroup: #{$prefix}-checkboxGroup;
10
10
  $radioGroup: #{$prefix}-radioGroup;
11
+ $buttonRadioGroup: #{$prefix}-radioGroup-buttonRadio;
12
+
11
13
  $switch: #{$prefix}-switch;
12
14
  $rating: #{$prefix}-rating;
13
15
 
@@ -154,7 +156,6 @@ $rating: #{$prefix}-rating;
154
156
  padding-top: $spacing-form_label_posTop-paddingTop;
155
157
  padding-bottom: $spacing-form_label_posTop-paddingBottom;
156
158
  }
157
-
158
159
  }
159
160
 
160
161
  &[x-label-pos="left"] {
@@ -173,6 +174,11 @@ $rating: #{$prefix}-rating;
173
174
  padding-top: $spacing-form_label-paddingTop;
174
175
  padding-bottom: $spacing-form_label-paddingTop;
175
176
  }
177
+ // no need to adjust height for button radio, already 32px
178
+ .#{$buttonRadioGroup} {
179
+ padding-top: 0;
180
+ padding-bottom: 0;
181
+ }
176
182
  .#{$switch},
177
183
  .#{$rating} {
178
184
  vertical-align: middle;
@@ -41,11 +41,11 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
41
41
  setValues(values: any, { isOverride }: {
42
42
  isOverride?: boolean;
43
43
  }): void;
44
- updateStateValue(field: string, value: any, opts: CallOpts): void;
44
+ updateStateValue(field: string, value: any, opts: CallOpts, callback?: () => void): void;
45
45
  getTouched(field?: string): boolean | Record<string, any> | undefined;
46
- updateStateTouched(field: string, isTouched: boolean, opts?: CallOpts): void;
46
+ updateStateTouched(field: string, isTouched: boolean, opts?: CallOpts, callback?: () => void): void;
47
47
  getError(field?: string): any;
48
- updateStateError(field: string, error: any, opts: CallOpts): void;
48
+ updateStateError(field: string, error: any, opts: CallOpts, callback?: () => void): void;
49
49
  getFieldSetterApi(): {
50
50
  setValue: (field: string, value: any, opts: CallOpts) => void;
51
51
  setError: (field: string, error: any, opts: CallOpts) => void;
@@ -54,9 +54,9 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
54
54
  getModifyFormStateApi(): {
55
55
  register: (field: string, fieldState: FieldState, fieldStuff: FieldStaff) => void;
56
56
  unRegister: (field: string) => void;
57
- updateStateValue: (field: string, value: any, opts: CallOpts) => void;
58
- updateStateError: (field: string, error: any, opts: CallOpts) => void;
59
- updateStateTouched: (field: string, isTouched: boolean, opts?: CallOpts) => void;
57
+ updateStateValue: (field: string, value: any, opts: CallOpts, callback?: () => void) => void;
58
+ updateStateError: (field: string, error: any, opts: CallOpts, callback?: () => void) => void;
59
+ updateStateTouched: (field: string, isTouched: boolean, opts?: CallOpts, callback?: () => void) => void;
60
60
  getValue: (field: string, opts?: CallOpts) => any;
61
61
  getError: (field?: string) => any;
62
62
  getTouched: (field?: string) => boolean | Record<string, any>;