@douyinfe/semi-foundation 2.15.2-alpha.0 → 2.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/dropdown/menuFoundation.ts +4 -2
  2. package/input/input.scss +44 -9
  3. package/input/textarea.scss +2 -2
  4. package/lib/cjs/dropdown/menuFoundation.js +6 -3
  5. package/lib/cjs/input/input.css +32 -1
  6. package/lib/cjs/input/input.scss +44 -9
  7. package/lib/cjs/input/textarea.css +2 -2
  8. package/lib/cjs/input/textarea.scss +2 -2
  9. package/lib/cjs/radio/radio.css +75 -20
  10. package/lib/cjs/radio/radio.scss +36 -22
  11. package/lib/cjs/radio/rtl.scss +47 -0
  12. package/lib/cjs/select/select.css +2 -2
  13. package/lib/cjs/select/variables.scss +4 -4
  14. package/lib/cjs/slider/foundation.d.ts +9 -2
  15. package/lib/cjs/slider/foundation.js +195 -5
  16. package/lib/cjs/slider/slider.css +3 -0
  17. package/lib/cjs/slider/slider.scss +7 -5
  18. package/lib/cjs/slider/variables.scss +4 -4
  19. package/lib/cjs/switch/switch.css +2 -2
  20. package/lib/cjs/switch/switch.scss +2 -2
  21. package/lib/cjs/timePicker/foundation.d.ts +1 -1
  22. package/lib/cjs/timePicker/foundation.js +1 -1
  23. package/lib/cjs/tooltip/variables.scss +1 -1
  24. package/lib/cjs/treeSelect/treeSelect.css +2 -0
  25. package/lib/cjs/treeSelect/treeSelect.scss +2 -0
  26. package/lib/es/dropdown/menuFoundation.js +6 -3
  27. package/lib/es/input/input.css +32 -1
  28. package/lib/es/input/input.scss +44 -9
  29. package/lib/es/input/textarea.css +2 -2
  30. package/lib/es/input/textarea.scss +2 -2
  31. package/lib/es/radio/radio.css +75 -20
  32. package/lib/es/radio/radio.scss +36 -22
  33. package/lib/es/radio/rtl.scss +47 -0
  34. package/lib/es/select/select.css +2 -2
  35. package/lib/es/select/variables.scss +4 -4
  36. package/lib/es/slider/foundation.d.ts +9 -2
  37. package/lib/es/slider/foundation.js +192 -5
  38. package/lib/es/slider/slider.css +3 -0
  39. package/lib/es/slider/slider.scss +7 -5
  40. package/lib/es/slider/variables.scss +4 -4
  41. package/lib/es/switch/switch.css +2 -2
  42. package/lib/es/switch/switch.scss +2 -2
  43. package/lib/es/timePicker/foundation.d.ts +1 -1
  44. package/lib/es/timePicker/foundation.js +1 -1
  45. package/lib/es/tooltip/variables.scss +1 -1
  46. package/lib/es/treeSelect/treeSelect.css +2 -0
  47. package/lib/es/treeSelect/treeSelect.scss +2 -0
  48. package/package.json +2 -2
  49. package/radio/radio.scss +36 -22
  50. package/radio/rtl.scss +47 -0
  51. package/select/variables.scss +4 -4
  52. package/slider/foundation.ts +141 -9
  53. package/slider/slider.scss +7 -5
  54. package/slider/variables.scss +4 -4
  55. package/switch/switch.scss +2 -2
  56. package/timePicker/foundation.ts +1 -1
  57. package/tooltip/variables.scss +1 -1
  58. package/treeSelect/treeSelect.scss +2 -0
  59. package/utils/a11y.ts +2 -2
@@ -6,8 +6,9 @@ $inner-width: $width-icon-medium;
6
6
  .#{$module} {
7
7
  @include box-sizing;
8
8
  @include font-size-regular;
9
+ position: relative;
9
10
  display: inline-flex;
10
- column-gap: $spacing-radio_addon-paddingLeft;
11
+ flex-wrap: wrap;
11
12
 
12
13
  &.#{$module}-vertical {
13
14
  display: block;
@@ -77,8 +78,6 @@ $inner-width: $width-icon-medium;
77
78
  }
78
79
 
79
80
  &-buttonRadioGroup {
80
- // Button needs to be positioned relative to parent
81
- position: relative;
82
81
  padding: $spacing-radio_buttonRadioGroup_middle-padding;
83
82
  border-radius: $radius-radio_buttonRadio;
84
83
  line-height: $font-radio_buttonRadioGroup_middle-lineHeight;
@@ -107,6 +106,7 @@ $inner-width: $width-icon-medium;
107
106
  border: $width-radio_cardRadioGroup_checked-border solid transparent;
108
107
 
109
108
  .#{$module}-inner {
109
+ position: relative;
110
110
  &-display {
111
111
  background: $color-radio_card-bg-default;
112
112
  }
@@ -205,19 +205,19 @@ $inner-width: $width-icon-medium;
205
205
  }
206
206
 
207
207
  &-inner {
208
- display: inline-flex;
209
- margin-top: 2px;
210
- // WARN: The absolute positioning used by the input does not occupy space, and relative cannot be removed here.
211
- position: relative;
208
+ position: absolute;
209
+ display: inline-block;
210
+ top: 2px;
211
+ left: 0;
212
212
  width: $width-radio_inner;
213
213
  height: $width-radio_inner;
214
214
  vertical-align: sub;
215
215
  user-select: none; // prevent text under it will be selected when double click
216
216
 
217
217
  &-display {
218
- display: inline-flex;
219
- align-items: center;
220
- justify-content: center;
218
+ position: absolute;
219
+ left: 0;
220
+ top: 0;
221
221
  @include box-sizing;
222
222
  width: $width-radio_inner;
223
223
  height: $width-radio_inner;
@@ -226,6 +226,7 @@ $inner-width: $width-icon-medium;
226
226
  background: $color-radio_default-bg-default;
227
227
 
228
228
  .#{$prefix}-icon {
229
+ position: absolute;
229
230
  width: 100%;
230
231
  height: 100%;
231
232
  font-size: 14px;
@@ -233,11 +234,6 @@ $inner-width: $width-icon-medium;
233
234
  }
234
235
  }
235
236
 
236
- &-content {
237
- display: flex;
238
- flex-direction: column;
239
- }
240
-
241
237
  &:hover {
242
238
  .#{$module}-inner-display {
243
239
  background: $color-radio_default-bg-hover;
@@ -252,6 +248,8 @@ $inner-width: $width-icon-medium;
252
248
 
253
249
  &-addon {
254
250
  user-select: none;
251
+ padding-left: $spacing-radio_addon-paddingLeft;
252
+ margin-left: $spacing-radio_addon-marginLeft;
255
253
  color: $color-radio_default-text-default;
256
254
  display: inline-flex;
257
255
  align-items: center;
@@ -374,7 +372,11 @@ $inner-width: $width-icon-medium;
374
372
  }
375
373
 
376
374
  &-extra {
375
+ flex-grow: 1;
376
+ flex-basis: 100%;
377
+ flex-shrink: 0;
377
378
  color: $color-radio_extra-text-default;
379
+ padding-left: $spacing-radio_extra-paddingLeft;
378
380
  box-sizing: border-box;
379
381
  }
380
382
 
@@ -391,25 +393,37 @@ $inner-width: $width-icon-medium;
391
393
  @include font-size-regular;
392
394
 
393
395
  &-vertical {
394
- display: flex;
395
- flex-direction: column;
396
- row-gap: $spacing-radio_group_vertical-marginBottom;
397
-
396
+ .#{$module} {
397
+ &:last-of-type {
398
+ margin-bottom: 0;
399
+ }
400
+ }
398
401
  &-default {
399
402
  .#{$module} {
400
- display: flex;
403
+ display: block;
404
+ margin-bottom: $spacing-radio_group_vertical-marginBottom;
405
+
401
406
  }
402
407
  }
403
408
  &-card {
404
409
  .#{$module} {
405
410
  display: flex;
411
+ margin-bottom: $spacing-radio_card_group_vertical-marginBottom;
406
412
  }
407
413
  }
408
414
  }
409
415
 
410
416
  &-horizontal {
411
- display: inline-flex;
412
- column-gap: $spacing-radio_group_horizontal-marginRight;
417
+ .#{$module} {
418
+ margin-right: $spacing-radio_group_horizontal-marginRight;
419
+
420
+ &:last-of-type {
421
+ margin-right: 0;
422
+ }
423
+ }
424
+ &-default {
425
+ display: inline-block;
426
+ }
413
427
  }
414
428
 
415
429
  &-buttonRadio {
@@ -18,14 +18,61 @@ $inner-width: $width-icon-medium;
18
18
  }
19
19
  }
20
20
 
21
+ &-inner {
22
+ left: auto;
23
+ right: 0;
24
+
25
+ &-display {
26
+ left: auto;
27
+ right: 0;
28
+ }
29
+ }
30
+
21
31
  &-addon {
32
+ padding-left: 0;
33
+ margin-left: 0;
34
+ padding-right: $spacing-radio_addon-paddingLeft;
35
+ margin-right: $spacing-radio_addon-marginLeft;
36
+
22
37
  &-buttonRadio {
23
38
  margin-right: $spacing-none;
24
39
  }
25
40
  }
41
+
42
+ &-extra {
43
+ padding-left: 0;
44
+ padding-right: $spacing-radio_extra-paddingLeft;
45
+ }
46
+ }
47
+
48
+ &-isCardRadioGroup {
49
+ .#{$module}-inner {
50
+ margin-right: 0;
51
+ margin-left: $spacing-radio_cardRadioGroup_inner-marginRight;
52
+ }
53
+
54
+ .#{$module}-addon {
55
+ margin-right: 0;
56
+ padding-right: 0;
57
+ }
58
+
59
+ .#{$module}-extra {
60
+ padding-right: 0;
61
+ }
26
62
  }
27
63
 
28
64
  .#{$module}Group {
29
65
  direction: rtl;
66
+
67
+ &-horizontal {
68
+ .#{$module} {
69
+ margin-right: 0;
70
+ margin-left: $spacing-radio_group_horizontal-marginRight;
71
+
72
+ &:last-of-type {
73
+ margin-left: 0;
74
+ }
75
+ }
76
+ }
30
77
  }
31
78
  }
@@ -283,11 +283,11 @@
283
283
  align-items: center;
284
284
  }
285
285
  .semi-select-prefix-text, .semi-select-suffix-text {
286
- margin: 0 12px;
286
+ margin: 0px 12px;
287
287
  }
288
288
  .semi-select-prefix-icon, .semi-select-suffix-icon {
289
289
  color: var(--semi-color-text-2);
290
- margin: 0 8px;
290
+ margin: 0px 8px;
291
291
  }
292
292
  .semi-select-suffix {
293
293
  display: flex;
@@ -58,16 +58,16 @@ $width-select_arrow: 32px; // 选择器输入框下拉箭头宽度
58
58
  $width-select_arrow_empty: 12px; // 选择器输入框下拉箭头为空时(有suffix icon)宽度
59
59
  $width-select_clear-icon: 32px; // 选择器输入框清空按钮宽度
60
60
  $width-select_group_top-border: $border-thickness-control; // 选择器菜单分组标题描边宽度
61
- $height-select_multiple_content_wrapper-minHeight: $height-select_default - 2; // 多项选择器标签组最小宽度
61
+ $height-select_multiple_content_wrapper-minHeight: $height-select_default - 2px; // 多项选择器标签组最小宽度
62
62
  $width-select-border-hover: $width-select-border; // 选择器输入框描边宽度 - 悬浮
63
63
  $width-select-border-focus: $width-select-border-hover; // 选择器输入框描边宽度 - 按下
64
64
  $width-select-border-active: $width-select-border-focus; // 选择器输入框描边宽度 - 选中
65
65
  // Spacing
66
66
  $spacing-select_option_tick-marginRight: $spacing-tight; // 选择器菜单选中对勾右侧外边距
67
67
  $spacing-select_prefix_suffix_text-marginX: $spacing-base-tight; // 选择器输入框前后缀文本水平内边距
68
- $spacing-select_prefix_suffix_text-marginY: 0; // 选择器输入框前后缀文本垂直内边距
68
+ $spacing-select_prefix_suffix_text-marginY: 0px; // 选择器输入框前后缀文本垂直内边距
69
69
  $spacing-select_prefix_suffix_icon-marginX: $spacing-tight; // 选择器输入框前后缀图标水平内边距
70
- $spacing-select_prefix_suffix_icon-marginY: 0; // 选择器输入框前后缀图标垂直内边距
70
+ $spacing-select_prefix_suffix_icon-marginY: 0px; // 选择器输入框前后缀图标垂直内边距
71
71
  $spacing-select_create_tips-marginRight: $spacing-extra-tight; // 创建新选项右侧外边距
72
72
  $spacing-select_group-marginTop: $spacing-extra-tight; // 选择器菜单分组标题顶部外边距
73
73
  $spacing-select_group-paddingTop: $spacing-base-tight; // 选择器菜单分组标题顶部内边距
@@ -106,5 +106,5 @@ $font-select_inset_label-fontWeight: 600; // 选择器内嵌标签文本字重
106
106
  $font-select_keyword-fontWeight: 600; // 选择器搜索结果命关键词中文本字重
107
107
 
108
108
  // Other
109
- $opacity-select_selection_text_inactive: .4;
109
+ $opacity-select_selection_text_inactive: 0.4;
110
110
 
@@ -26,7 +26,7 @@ export interface SliderProps {
26
26
  'aria-label'?: string;
27
27
  'aria-labelledby'?: string;
28
28
  'aria-valuetext'?: string;
29
- getAriaValueText?: (value: number) => string;
29
+ getAriaValueText?: (value: number, index?: number) => string;
30
30
  }
31
31
  export interface SliderState {
32
32
  currentValue: number | number[];
@@ -40,6 +40,8 @@ export interface SliderState {
40
40
  clickValue: 0;
41
41
  showBoundary: boolean;
42
42
  isInRenderTree: boolean;
43
+ firstDotFocusVisible: boolean;
44
+ secondDotFocusVisible: boolean;
43
45
  }
44
46
  export interface SliderLengths {
45
47
  sliderX: number;
@@ -53,7 +55,6 @@ export interface ScrollParentVal {
53
55
  }
54
56
  export interface OverallVars {
55
57
  dragging: boolean[];
56
- chooseMovePos: 'min' | 'max';
57
58
  }
58
59
  export interface SliderAdapter extends DefaultAdapter<SliderProps, SliderState> {
59
60
  getSliderLengths: () => SliderLengths;
@@ -189,7 +190,13 @@ export default class SliderFoundation extends BaseFoundation<SliderAdapter> {
189
190
  onHandleEnter: (pos: SliderState['focusPos']) => void;
190
191
  onHandleLeave: () => void;
191
192
  onHandleUp: (e: any) => boolean;
193
+ _handleValueDecreaseWithKeyBoard: (step: number, handler: 'min' | 'max') => number | any[];
194
+ _handleValueIncreaseWithKeyBoard: (step: number, handler: 'min' | 'max') => any;
195
+ _handleHomeKey: (handler: 'min' | 'max') => any;
196
+ _handleEndKey: (handler: 'min' | 'max') => any;
197
+ handleKeyDown: (event: any, handler: 'min' | 'max') => void;
192
198
  onFocus: (e: any, handler: 'min' | 'max') => void;
199
+ onBlur: (e: any, handler: 'min' | 'max') => void;
193
200
  handleWrapClick: (e: any) => void;
194
201
  /**
195
202
  * Move the slider to the current click position
@@ -14,10 +14,16 @@ var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-sta
14
14
 
15
15
  var _isArray = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/is-array"));
16
16
 
17
+ var _includes = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/includes"));
18
+
17
19
  var _foundation = _interopRequireDefault(require("../base/foundation"));
18
20
 
19
21
  var _touchPolyfill = _interopRequireDefault(require("../utils/touchPolyfill"));
20
22
 
23
+ var _warning = _interopRequireDefault(require("../utils/warning"));
24
+
25
+ var _a11y = require("../utils/a11y");
26
+
21
27
  /* eslint-disable no-param-reassign */
22
28
 
23
29
  /* eslint-disable max-len */
@@ -547,8 +553,7 @@ class SliderFoundation extends _foundation.default {
547
553
  const handleMaxDom = this._adapter.getMaxHandleEl().current;
548
554
 
549
555
  if (e.target === handleMinDom || e.target === handleMaxDom) {
550
- e.preventDefault();
551
- e.stopPropagation();
556
+ (0, _a11y.handlePrevent)(e);
552
557
  const touch = (0, _touchPolyfill.default)(e.touches[0], e);
553
558
  this.onHandleDown(touch, handler);
554
559
  }
@@ -612,18 +617,203 @@ class SliderFoundation extends _foundation.default {
612
617
  this._adapter.setDragging([dragging[0], false]);
613
618
  }
614
619
 
615
- this._adapter.setStateVal('isDrag', false); // this._adapter.setStateVal('chooseMovePos', '');
616
-
620
+ this._adapter.setStateVal('isDrag', false);
617
621
 
618
622
  this._adapter.onHandleLeave();
619
623
 
620
624
  this._adapter.onHandleUpAfter();
621
625
 
622
626
  return true;
627
+ };
628
+
629
+ this._handleValueDecreaseWithKeyBoard = (step, handler) => {
630
+ const {
631
+ min,
632
+ currentValue
633
+ } = this.getStates();
634
+ const {
635
+ range
636
+ } = this.getProps();
637
+
638
+ if (handler === 'min') {
639
+ if (range) {
640
+ let newMinValue = currentValue[0] - step;
641
+ newMinValue = newMinValue < min ? min : newMinValue;
642
+ return [newMinValue, currentValue[1]];
643
+ } else {
644
+ let newMinValue = currentValue - step;
645
+ newMinValue = newMinValue < min ? min : newMinValue;
646
+ return newMinValue;
647
+ }
648
+ } else {
649
+ let newMaxValue = currentValue[1] - step;
650
+ newMaxValue = newMaxValue < currentValue[0] ? currentValue[0] : newMaxValue;
651
+ return [currentValue[0], newMaxValue];
652
+ }
653
+ };
654
+
655
+ this._handleValueIncreaseWithKeyBoard = (step, handler) => {
656
+ const {
657
+ max,
658
+ currentValue
659
+ } = this.getStates();
660
+ const {
661
+ range
662
+ } = this.getProps();
663
+
664
+ if (handler === 'min') {
665
+ if (range) {
666
+ let newMinValue = currentValue[0] + step;
667
+ newMinValue = newMinValue > currentValue[1] ? currentValue[1] : newMinValue;
668
+ return [newMinValue, currentValue[1]];
669
+ } else {
670
+ let newMinValue = currentValue + step;
671
+ newMinValue = newMinValue > max ? max : newMinValue;
672
+ return newMinValue;
673
+ }
674
+ } else {
675
+ let newMaxValue = currentValue[1] + step;
676
+ newMaxValue = newMaxValue > max ? max : newMaxValue;
677
+ return [currentValue[0], newMaxValue];
678
+ }
679
+ };
680
+
681
+ this._handleHomeKey = handler => {
682
+ const {
683
+ min,
684
+ currentValue
685
+ } = this.getStates();
686
+ const {
687
+ range
688
+ } = this.getProps();
689
+
690
+ if (handler === 'min') {
691
+ if (range) {
692
+ return [min, currentValue[1]];
693
+ } else {
694
+ return min;
695
+ }
696
+ } else {
697
+ return [currentValue[0], currentValue[0]];
698
+ }
699
+ };
700
+
701
+ this._handleEndKey = handler => {
702
+ const {
703
+ max,
704
+ currentValue
705
+ } = this.getStates();
706
+ const {
707
+ range
708
+ } = this.getProps();
709
+
710
+ if (handler === 'min') {
711
+ if (range) {
712
+ return [currentValue[1], currentValue[1]];
713
+ } else {
714
+ return max;
715
+ }
716
+ } else {
717
+ return [currentValue[0], max];
718
+ }
719
+ };
720
+
721
+ this.handleKeyDown = (event, handler) => {
722
+ var _context;
723
+
724
+ const {
725
+ min,
726
+ max,
727
+ currentValue
728
+ } = this.getStates();
729
+ const {
730
+ step,
731
+ range
732
+ } = this.getProps();
733
+ let outputValue;
734
+
735
+ switch (event.key) {
736
+ case "ArrowLeft":
737
+ case "ArrowDown":
738
+ outputValue = this._handleValueDecreaseWithKeyBoard(step, handler);
739
+ break;
740
+
741
+ case "ArrowRight":
742
+ case "ArrowUp":
743
+ outputValue = this._handleValueIncreaseWithKeyBoard(step, handler);
744
+ break;
745
+
746
+ case "PageUp":
747
+ outputValue = this._handleValueIncreaseWithKeyBoard(10 * step, handler);
748
+ break;
749
+
750
+ case "PageDown":
751
+ outputValue = this._handleValueDecreaseWithKeyBoard(10 * step, handler);
752
+ break;
753
+
754
+ case "Home":
755
+ outputValue = this._handleHomeKey(handler);
756
+ break;
757
+
758
+ case "End":
759
+ outputValue = this._handleEndKey(handler);
760
+ break;
761
+
762
+ case 'default':
763
+ break;
764
+ }
765
+
766
+ if ((0, _includes.default)(_context = ["ArrowLeft", "ArrowDown", "ArrowRight", "ArrowUp", "PageUp", "PageDown", "Home", "End"]).call(_context, event.key)) {
767
+ let update = true;
768
+
769
+ if ((0, _isArray.default)(currentValue)) {
770
+ update = !(currentValue[0] === outputValue[0] && currentValue[1] === outputValue[1]);
771
+ } else {
772
+ update = currentValue !== outputValue;
773
+ }
774
+
775
+ if (update) {
776
+ this._adapter.updateCurrentValue(outputValue);
777
+
778
+ this._adapter.notifyChange(outputValue);
779
+ }
780
+
781
+ (0, _a11y.handlePrevent)(event);
782
+ }
623
783
  }; // eslint-disable-next-line @typescript-eslint/no-empty-function
624
784
 
625
785
 
626
- this.onFocus = (e, handler) => {};
786
+ this.onFocus = (e, handler) => {
787
+ (0, _a11y.handlePrevent)(e);
788
+ const {
789
+ target
790
+ } = e;
791
+
792
+ try {
793
+ if (target.matches(':focus-visible')) {
794
+ if (handler === 'min') {
795
+ this._adapter.setStateVal('firstDotFocusVisible', true);
796
+ } else {
797
+ this._adapter.setStateVal('secondDotFocusVisible', true);
798
+ }
799
+ }
800
+ } catch (error) {
801
+ (0, _warning.default)(true, 'Warning: [Semi Slider] The current browser does not support the focus-visible');
802
+ }
803
+ };
804
+
805
+ this.onBlur = (e, handler) => {
806
+ const {
807
+ firstDotFocusVisible,
808
+ secondDotFocusVisible
809
+ } = this.getStates();
810
+
811
+ if (handler === 'min') {
812
+ firstDotFocusVisible && this._adapter.setStateVal('firstDotFocusVisible', false);
813
+ } else {
814
+ secondDotFocusVisible && this._adapter.setStateVal('secondDotFocusVisible', false);
815
+ }
816
+ };
627
817
 
628
818
  this.handleWrapClick = e => {
629
819
  const {
@@ -46,6 +46,9 @@
46
46
  cursor: pointer;
47
47
  transition: #fff 0.3s;
48
48
  }
49
+ .semi-slider-handle:focus-visible {
50
+ outline: 2px solid var(--semi-color-primary-light-active);
51
+ }
49
52
  .semi-slider-handle:hover {
50
53
  background-color: var(--semi-color-white);
51
54
  }
@@ -1,5 +1,5 @@
1
1
  //@import '../theme/variables.scss';
2
- @import "./variables.scss";
2
+ @import './variables.scss';
3
3
 
4
4
  $module: #{$prefix}-slider;
5
5
 
@@ -29,7 +29,7 @@ $module: #{$prefix}-slider;
29
29
  font-variant: tabular-nums;
30
30
  line-height: $font-slider_rail-lineHeight;
31
31
  list-style: none;
32
- font-feature-settings: "tnum";
32
+ font-feature-settings: 'tnum';
33
33
  position: absolute;
34
34
  height: $height-slider_rail;
35
35
  cursor: pointer;
@@ -54,7 +54,11 @@ $module: #{$prefix}-slider;
54
54
  border: none;
55
55
  border-radius: 50%;
56
56
  cursor: pointer;
57
- transition: #fff .3s;
57
+ transition: #fff 0.3s;
58
+
59
+ &:focus-visible {
60
+ outline: $width-slider_handle-focus solid $color-slider_handle-focus;
61
+ }
58
62
  }
59
63
 
60
64
  &-handle:hover {
@@ -133,10 +137,8 @@ $module: #{$prefix}-slider;
133
137
  text-align: center;
134
138
  cursor: pointer;
135
139
  transform: translate(-50%, 0) rotate(-180deg);
136
-
137
140
  }
138
141
 
139
-
140
142
  &-boundary {
141
143
  position: relative;
142
144
  font-size: $font-size-small;
@@ -11,9 +11,10 @@ $color-slider_handle_disabled-border-hover: var(--semi-color-white); // 禁用
11
11
  $color-slider_handle_disabled-border: var(--semi-color-border); // 禁用滑动条圆形描边颜色 - 默认态
12
12
  $color-slider_mark-text-default: var(--semi-color-text-2); // 滑动条刻度文字颜色
13
13
  $color-slider_rail-bg-default: var(--semi-color-fill-0); // 滑动条轨道颜色 - 未填充
14
- $color-slider_rail: rgba(0, 0, 0, .65);
14
+ $color-slider_rail: rgba(0, 0, 0, 0.65);
15
15
  $color-slider_track-bg-default: var(--semi-color-primary); // 滑动条轨道颜色 - 已填充
16
16
  $color-slider_track_disabled-bg: var(--semi-color-primary-disabled); // 禁用滑动条轨道颜色 - 已填充
17
+ $color-slider_handle-focus: var(--semi-color-primary-light-active); // 圆形按钮轮廓 - 聚焦
17
18
 
18
19
  // Spacing
19
20
  $spacing-slider-paddingX: 13px; // 滑动条整体水平内边距
@@ -33,7 +34,7 @@ $spacing-slider_boundary_min-left: 0;
33
34
  $spacing-slider_boundary_max-right: 0;
34
35
  $spacing-slider_vertical_marks-marginTop: -30px; // 垂直滑动条刻度标签顶部外边距
35
36
  $spacing-slider_vertical_marks-marginLeft: 29px; // 垂直滑动条刻度标签左侧外边距
36
- $spacing-slider_vertical_marks-reverse-marginLeft: -26px;// 垂直滑动条刻度标签左侧外边距(标签在左侧时)
37
+ $spacing-slider_vertical_marks-reverse-marginLeft: -26px; // 垂直滑动条刻度标签左侧外边距(标签在左侧时)
37
38
  $spacing-slider_vertical_rail-top: 0; // 垂直滑动条轨道顶部距离
38
39
  $spacing-slider_vertical_handle-marginTop: 0; // 垂直滑动条原型按钮顶部外边距
39
40
  $spacing-slider_vertical_handle-marginLeft: -10px; // 垂直滑动条原型按钮左侧外边距
@@ -42,7 +43,6 @@ $spacing-slider_vertical_handle-marginLeft: -10px; // 垂直滑动条原型按
42
43
  $radius-slider_rail: var(--semi-border-radius-small); // 滚动条未填充轨道圆角
43
44
  $radius-slider_track: var(--semi-border-radius-small); // 滚动条已填充轨道圆角
44
45
 
45
-
46
46
  // Width/Height
47
47
  $height-slider_wrapper: 32px; // 滚动条容器整体高度
48
48
  $height-slider_vertical_wrapper: 4px; // 垂直滚动条整体宽度
@@ -52,7 +52,7 @@ $width-slider_handle_clicked: 1px; // 滚动条圆形按钮按下后描边宽度
52
52
  $height-slider_track: 4px; // 滚动条已填充轨道高度
53
53
  $width-slider_dot: 4px; // 滚动条圆形刻度点宽度
54
54
  $width-slider_handle_border_disabled: 1px; // 禁用滚动条圆形按钮按下后描边宽度
55
-
55
+ $width-slider_handle-focus: 2px; // 圆形按钮轮廓 - 聚焦
56
56
 
57
57
  // Font
58
58
  $font-slider_rail-fontSize: 14px; // 滚动条轨道文本字号
@@ -91,8 +91,8 @@
91
91
  left: 0;
92
92
  }
93
93
  .semi-switch-native-control[type=checkbox] {
94
- width: 100%;
95
- height: 100%;
94
+ width: inherit;
95
+ height: inherit;
96
96
  }
97
97
  .semi-switch-checked-text, .semi-switch-unchecked-text {
98
98
  position: absolute;
@@ -103,8 +103,8 @@ $module: #{$prefix}-switch;
103
103
  &-native-control {
104
104
 
105
105
  &[type="checkbox"] {
106
- width: 100%;
107
- height: 100%;
106
+ width: inherit;
107
+ height: inherit;
108
108
  }
109
109
  width: 100%;
110
110
  height: 100%;
@@ -38,7 +38,7 @@ declare class TimePickerFoundation<P = Record<string, any>, S = Record<string, a
38
38
  setPanel(open: boolean): void;
39
39
  destroy(): void;
40
40
  handlePanelOpen(): void;
41
- hanldePanelClose(clickedOutside: boolean, e: any): void;
41
+ handlePanelClose(clickedOutside: boolean, e: any): void;
42
42
  handleVisibleChange(visible: boolean): void;
43
43
  handleInputChange(input: string): void;
44
44
  doValidate(args: string | Array<Date>): boolean;
@@ -261,7 +261,7 @@ class TimePickerFoundation extends _foundation.default {
261
261
  this._adapter.notifyOpenChange(true);
262
262
  }
263
263
 
264
- hanldePanelClose(clickedOutside, e) {
264
+ handlePanelClose(clickedOutside, e) {
265
265
  if (!this._isControlledComponent('open')) {
266
266
  this._adapter.unregisterClickOutSide();
267
267
 
@@ -19,7 +19,7 @@ $spacing-tooltip_content-paddingBottom: $spacing-tight; // 工具提示内容底
19
19
 
20
20
  $font-tooltip-fontSize: $font-size-regular; // 工具提示文本字号
21
21
  $width-tooltip: 240px; // 工具提示宽度 - 默认
22
- $width-tooltip_arrow: 24px; // 工具提示小三角箭头宽度 - 水平
22
+ $width-tooltip_arrow: 24px; // 工具提示小三角箭头宽度 - 水平 ignore-semi-css-trans
23
23
  $height-tooltip_arrow: 7px; // 工具提示小三角箭头高度 - 水平
24
24
 
25
25
  $height-tooltip_arrow_vertical: 24px; // 工具提示小三角箭头高度 - 垂直
@@ -188,6 +188,7 @@
188
188
  .semi-tree-select-arrow {
189
189
  display: inline-flex;
190
190
  align-items: center;
191
+ flex-shrink: 0;
191
192
  height: 100%;
192
193
  justify-content: center;
193
194
  width: 32px;
@@ -212,6 +213,7 @@
212
213
  display: inline-flex;
213
214
  align-items: center;
214
215
  height: 100%;
216
+ flex-shrink: 0;
215
217
  justify-content: center;
216
218
  width: 32px;
217
219
  color: var(--semi-color-text-2);