@douyinfe/semi-ui 2.1.4-alpha.0 → 2.1.4

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 (65) hide show
  1. package/_base/_story/index.scss +1 -0
  2. package/button/__test__/button.test.js +15 -0
  3. package/button/_story/button.stories.js +13 -0
  4. package/button/buttonGroup.tsx +6 -4
  5. package/cascader/item.tsx +3 -0
  6. package/checkbox/__test__/checkboxGroup.test.js +37 -5
  7. package/checkbox/_story/checkbox.stories.js +78 -6
  8. package/checkbox/checkbox.tsx +1 -0
  9. package/dist/css/semi.css +57 -4
  10. package/dist/css/semi.min.css +1 -1
  11. package/dist/umd/semi-ui.js +284 -256
  12. package/dist/umd/semi-ui.js.map +1 -1
  13. package/dist/umd/semi-ui.min.js +1 -1
  14. package/dist/umd/semi-ui.min.js.map +1 -1
  15. package/form/_story/form.stories.tsx +2 -2
  16. package/form/hoc/withField.tsx +1 -1
  17. package/lib/cjs/button/buttonGroup.js +11 -3
  18. package/lib/cjs/cascader/item.js +5 -0
  19. package/lib/cjs/checkbox/checkbox.js +1 -0
  20. package/lib/cjs/datePicker/dateInput.d.ts +1 -1
  21. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  22. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -1
  23. package/lib/cjs/modal/Modal.d.ts +6 -6
  24. package/lib/cjs/modal/Modal.js +2 -2
  25. package/lib/cjs/radio/radio.d.ts +1 -1
  26. package/lib/cjs/radio/radio.js +1 -0
  27. package/lib/cjs/radio/radioGroup.d.ts +1 -1
  28. package/lib/cjs/rating/item.js +2 -1
  29. package/lib/cjs/table/Table.d.ts +1 -1
  30. package/lib/cjs/timePicker/TimePicker.d.ts +2 -2
  31. package/lib/cjs/timePicker/TimeShape.d.ts +1 -1
  32. package/lib/cjs/timePicker/index.d.ts +2 -2
  33. package/lib/cjs/treeSelect/index.js +1 -0
  34. package/lib/cjs/typography/title.d.ts +1 -1
  35. package/lib/cjs/upload/index.d.ts +11 -2
  36. package/lib/cjs/upload/index.js +8 -0
  37. package/lib/es/button/buttonGroup.js +3 -3
  38. package/lib/es/cascader/item.js +5 -0
  39. package/lib/es/checkbox/checkbox.js +1 -0
  40. package/lib/es/datePicker/dateInput.d.ts +1 -1
  41. package/lib/es/datePicker/datePicker.d.ts +1 -1
  42. package/lib/es/datePicker/monthsGrid.d.ts +1 -1
  43. package/lib/es/modal/Modal.d.ts +6 -6
  44. package/lib/es/modal/Modal.js +2 -2
  45. package/lib/es/radio/radio.d.ts +1 -1
  46. package/lib/es/radio/radio.js +1 -0
  47. package/lib/es/radio/radioGroup.d.ts +1 -1
  48. package/lib/es/rating/item.js +2 -1
  49. package/lib/es/table/Table.d.ts +1 -1
  50. package/lib/es/timePicker/TimePicker.d.ts +2 -2
  51. package/lib/es/timePicker/TimeShape.d.ts +1 -1
  52. package/lib/es/timePicker/index.d.ts +2 -2
  53. package/lib/es/treeSelect/index.js +1 -0
  54. package/lib/es/typography/title.d.ts +1 -1
  55. package/lib/es/upload/index.d.ts +11 -2
  56. package/lib/es/upload/index.js +8 -0
  57. package/modal/Modal.tsx +2 -2
  58. package/package.json +8 -8
  59. package/radio/__test__/radioGroup.test.jsx +41 -6
  60. package/radio/_story/radio.stories.js +10 -10
  61. package/radio/radio.tsx +1 -0
  62. package/rating/item.tsx +1 -0
  63. package/treeSelect/index.tsx +3 -2
  64. package/tsconfig.json +2 -1
  65. package/upload/index.tsx +8 -1
@@ -5,6 +5,7 @@ body {
5
5
  color: var(--semi-color-text-0);
6
6
  }
7
7
 
8
+
8
9
  // 给每个组件的 story 区域加个 padding,如果需要更大的 padding 可以在组件内自定义样式
9
10
  .sb-show-main.sb-main-padded {
10
11
 
@@ -1,4 +1,5 @@
1
1
  import Button from '../index';
2
+ import ButtonGroup from '../index';
2
3
  import { mount } from 'enzyme';
3
4
  import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants';
4
5
  import { IconEdit } from '@douyinfe/semi-icons';
@@ -46,4 +47,18 @@ describe('Button', () => {
46
47
  expect(elem.find(`.${BASE_CLASS_PREFIX}-button-content-left`).length).toBe(1);
47
48
  expect(elem.find(`.${BASE_CLASS_PREFIX}-button-content-right`).length).toBe(0);
48
49
  });
50
+
51
+ it(`button group with invalid child`, () => {
52
+ const buttonGroup = mount(
53
+ <ButtonGroup>
54
+ {false}
55
+ {null}
56
+ {undefined}
57
+ {1}
58
+ <Button>查询</Button>
59
+ <Button>剪切</Button>
60
+ </ButtonGroup>
61
+ );
62
+ expect(buttonGroup.getDOMNode().textContent).toEqual('1查询剪切');
63
+ });
49
64
  });
@@ -122,6 +122,19 @@ export const ButtonGroupDemo = () => (
122
122
  </Button>
123
123
  </ButtonGroup>
124
124
  <br />
125
+ <div>ButtonGroup children 不是合法元素的情况:</div>
126
+ <ButtonGroup>
127
+ {false}
128
+ {123}
129
+ {null}
130
+ {undefined}
131
+ text
132
+ <span>span</span>
133
+ {true && <Button>拷贝</Button>}
134
+ <Button>查询</Button>
135
+ <Button>剪切</Button>
136
+ </ButtonGroup>
137
+ <br />
125
138
  </div>
126
139
  );
127
140
 
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { isValidElement, cloneElement } from 'react';
2
2
  import BaseComponent, { BaseProps } from '../_base/baseComponent';
3
3
  import PropTypes from 'prop-types';
4
4
  import { cssClasses, strings } from '@douyinfe/semi-foundation/button/constants';
@@ -38,9 +38,11 @@ export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
38
38
  let inner;
39
39
 
40
40
  if (children) {
41
- inner = ((Array.isArray(children) ? children : [children]) as React.ReactElement[]).map((itm, index) =>
42
- React.cloneElement(itm, { disabled, size, type, ...itm.props, ...rest, key: index })
43
- );
41
+ inner = ((Array.isArray(children) ? children : [children])).map((itm, index) => (
42
+ isValidElement(itm)
43
+ ? cloneElement(itm, { disabled, size, type, ...itm.props, ...rest, key: index })
44
+ : itm
45
+ ));
44
46
  }
45
47
  return <div className={`${prefixCls}-group`}>{inner}</div>;
46
48
  }
package/cascader/item.tsx CHANGED
@@ -104,6 +104,9 @@ export default class Item extends PureComponent<CascaderItemProps> {
104
104
  const { onItemCheckboxClick } = this.props;
105
105
  // Prevent Checkbox's click event bubbling to trigger the li click event
106
106
  e.stopPropagation();
107
+ if (e.nativeEvent && typeof e.nativeEvent.stopImmediatePropagation === 'function') {
108
+ e.nativeEvent.stopImmediatePropagation();
109
+ }
107
110
  onItemCheckboxClick(item);
108
111
  };
109
112
 
@@ -136,13 +136,45 @@ describe('CheckboxGroup', () => {
136
136
  });
137
137
 
138
138
  it('checkboxGroup card style', () => {
139
- const checkbox = getCG({ type: 'card' });
140
- expect(checkbox.exists(`.${BASE_CLASS_PREFIX}-checkbox-cardType`)).toEqual(true);
139
+ const checkboxGroup = getCG({ type: 'card' });
140
+ expect(checkboxGroup.exists(`.${BASE_CLASS_PREFIX}-checkbox-cardType`)).toEqual(true);
141
+ checkboxGroup.unmount();
142
+
143
+ const disabledCheckboxGroup = getCG({ type: 'card', disabled: true, defaultValue: 'abc' });
144
+ expect(
145
+ disabledCheckboxGroup
146
+ .find(`.${BASE_CLASS_PREFIX}-checkbox-cardType`)
147
+ .at(0)
148
+ .exists(`.${BASE_CLASS_PREFIX}-checkbox-cardType_checked_disabled`)
149
+ ).toEqual(true);
150
+ expect(
151
+ disabledCheckboxGroup
152
+ .find(`.${BASE_CLASS_PREFIX}-checkbox-cardType`)
153
+ .at(1)
154
+ .exists(`.${BASE_CLASS_PREFIX}-checkbox-cardType_checked_disabled`)
155
+ ).toEqual(false);
156
+ disabledCheckboxGroup.unmount();
141
157
  });
142
158
 
143
159
  it('checkboxGroup pure card style', () => {
144
- const checkbox = getCG({ type: 'pureCard' });
145
- expect(checkbox.exists(`.${BASE_CLASS_PREFIX}-checkbox-cardType`)).toEqual(true);
146
- expect(checkbox.exists(`.${BASE_CLASS_PREFIX}-checkbox-inner-pureCardType`)).toEqual(true);
160
+ const checkboxGroup = getCG({ type: 'pureCard' });
161
+ expect(checkboxGroup.exists(`.${BASE_CLASS_PREFIX}-checkbox-cardType`)).toEqual(true);
162
+ expect(checkboxGroup.exists(`.${BASE_CLASS_PREFIX}-checkbox-inner-pureCardType`)).toEqual(true);
163
+ checkboxGroup.unmount();
164
+
165
+ const disabledCheckboxGroup = getCG({ type: 'pureCard', disabled: true, defaultValue: 'abc' });
166
+ expect(
167
+ disabledCheckboxGroup
168
+ .find(`.${BASE_CLASS_PREFIX}-checkbox-cardType`)
169
+ .at(0)
170
+ .exists(`.${BASE_CLASS_PREFIX}-checkbox-cardType_checked_disabled`)
171
+ ).toEqual(true);
172
+ expect(
173
+ disabledCheckboxGroup
174
+ .find(`.${BASE_CLASS_PREFIX}-checkbox-cardType`)
175
+ .at(1)
176
+ .exists(`.${BASE_CLASS_PREFIX}-checkbox-cardType_checked_disabled`)
177
+ ).toEqual(false);
178
+ disabledCheckboxGroup.unmount();
147
179
  });
148
180
  });
@@ -1,6 +1,8 @@
1
1
  import React, { useCallback, useMemo, useState } from 'react';
2
2
  import Button from '../../button';
3
3
  import Popover from '../../popover';
4
+ import Tag from '../../tag';
5
+ import Cascader from '../../cascader';
4
6
  import Checkbox from '../index';
5
7
  import CheckboxGroup from '../checkboxGroup';
6
8
  import { Col, Input, Row } from '../../index';
@@ -572,12 +574,12 @@ export const CheckboxGroupCardStyle = () => (
572
574
  </CheckboxGroup>
573
575
  <br />
574
576
  <br />
575
- <div>radio disabled</div>
577
+ <div>Checkbox disabled</div>
576
578
  <CheckboxGroup type="card" direction="horizontal" defaultValue={['1']}>
577
- <Checkbox value="1" disabled extra="Semi Design" style={{ width: 280 }}>
579
+ <Checkbox value="1" disabled extra="disabled+checked" style={{ width: 280 }}>
578
580
  多选框标题
579
581
  </Checkbox>
580
- <Checkbox value="2" extra="Semi Design" style={{ width: 280 }}>
582
+ <Checkbox value="2" disabled extra="disabled+unchecked" style={{ width: 280 }}>
581
583
  多选框标题
582
584
  </Checkbox>
583
585
  <Checkbox value="3" extra="Semi Design" style={{ width: 280 }}>
@@ -765,12 +767,12 @@ export const CheckboxGroupPureCardStyle = () => (
765
767
  </CheckboxGroup>
766
768
  <br />
767
769
  <br />
768
- <div>radio disabled</div>
770
+ <div>Checkbox disabled</div>
769
771
  <CheckboxGroup type="pureCard" defaultValue={['1']}>
770
- <Checkbox value="1" disabled extra="Semi Design" style={{ width: 280 }}>
772
+ <Checkbox value="1" disabled extra="disabled+checked" style={{ width: 280 }}>
771
773
  多选框标题
772
774
  </Checkbox>
773
- <Checkbox value="2" extra="Semi Design" style={{ width: 280 }}>
775
+ <Checkbox value="2" disabled extra="disabled+unchecked" style={{ width: 280 }}>
774
776
  多选框标题
775
777
  </Checkbox>
776
778
  <Checkbox value="3" extra="Semi Design" style={{ width: 280 }}>
@@ -941,3 +943,73 @@ export const CheckboxGroupPureCardStyle = () => (
941
943
  </CheckboxGroup>
942
944
  </>
943
945
  );
946
+
947
+ export const CheckboxOnChangeEvent = () => (
948
+ <div style={{marginLeft: 100}}>
949
+ <div>查看 onChange 入参</div>
950
+ <Checkbox onChange={e => console.log(e)}>
951
+ Apple
952
+ </Checkbox>
953
+ <div style={{marginTop: 30}}>Popover 内套 Popover, 且 content 为 checkbox</div>
954
+ <Popover
955
+ trigger={'click'}
956
+ onClickOutSide={e => console.log('onClickOutSide')}
957
+ content={
958
+ <Popover
959
+ trigger='click'
960
+ content={
961
+ <Checkbox
962
+ onChange={e => {
963
+ console.log('checkbox onChange', e);
964
+ e.stopPropagation();
965
+ e.nativeEvent && e.nativeEvent.stopImmediatePropagation();
966
+ }}
967
+ >
968
+ Semi Design
969
+ </Checkbox>
970
+ }
971
+ >
972
+ trigger
973
+ </Popover>
974
+ }
975
+ >
976
+ <Tag>点击此处</Tag>
977
+ </Popover>
978
+ <div style={{marginTop: 30}}>Popover 内套 Cascader 多选</div>
979
+ <Popover
980
+ trigger={'click'}
981
+ content={
982
+ <Cascader
983
+ defaultValue={['zhejiang', 'ningbo', 'jiangbei']}
984
+ style={{ width: 300 }}
985
+ treeData={[
986
+ {
987
+ label: '浙江省',
988
+ value: 'zhejiang',
989
+ children: [
990
+ {
991
+ label: '杭州市',
992
+ value: 'hangzhou',
993
+ children: [
994
+ {
995
+ label: '西湖区',
996
+ value: 'xihu',
997
+ },
998
+ ],
999
+ },
1000
+ ],
1001
+ }
1002
+ ]}
1003
+ placeholder="请选择所在地区"
1004
+ multiple
1005
+ />
1006
+ }
1007
+ >
1008
+ <Tag>点击此处</Tag>
1009
+ </Popover>
1010
+ </div>
1011
+ );
1012
+
1013
+ CheckboxOnChangeEvent.story = {
1014
+ name: 'checkbox onChange event',
1015
+ };
@@ -154,6 +154,7 @@ class Checkbox extends BaseComponent<CheckboxProps, CheckboxState> {
154
154
  [`${prefix}-cardType_disabled`]: props.disabled && props.isCardType,
155
155
  [`${prefix}-cardType_unDisabled`]: !(props.disabled && props.isCardType),
156
156
  [`${prefix}-cardType_checked`]: props.isCardType && props.checked && !props.disabled,
157
+ [`${prefix}-cardType_checked_disabled`]: props.isCardType && props.checked && props.disabled,
157
158
  [className]: Boolean(className),
158
159
  });
159
160
 
package/dist/css/semi.css CHANGED
@@ -3059,12 +3059,14 @@ body[theme-mode=dark], body .semi-always-dark {
3059
3059
  }
3060
3060
  .semi-checkbox:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display {
3061
3061
  background: var(--semi-color-primary-hover);
3062
+ box-shadow: none;
3062
3063
  }
3063
3064
  .semi-checkbox:active .semi-checkbox-inner-display {
3064
3065
  background: var(--semi-color-fill-1);
3065
3066
  }
3066
3067
  .semi-checkbox:active .semi-checkbox-inner-checked .semi-checkbox-inner-display {
3067
3068
  background: var(--semi-color-primary-active);
3069
+ box-shadow: none;
3068
3070
  }
3069
3071
  .semi-checkbox.semi-checkbox-disabled:hover .semi-checkbox-inner-display, .semi-checkbox.semi-checkbox-disabled:active .semi-checkbox-inner-display {
3070
3072
  background: var(--semi-color-disabled-fill);
@@ -3072,6 +3074,7 @@ body[theme-mode=dark], body .semi-always-dark {
3072
3074
  }
3073
3075
  .semi-checkbox.semi-checkbox-disabled:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display, .semi-checkbox.semi-checkbox-disabled:active .semi-checkbox-inner-checked .semi-checkbox-inner-display {
3074
3076
  background: var(--semi-color-primary-disabled);
3077
+ box-shadow: none;
3075
3078
  }
3076
3079
  .semi-checkbox-inner {
3077
3080
  position: relative;
@@ -3112,7 +3115,7 @@ body[theme-mode=dark], body .semi-always-dark {
3112
3115
  }
3113
3116
  .semi-checkbox:hover.semi-checkbox-indeterminate .semi-checkbox-inner-display {
3114
3117
  background: var(--semi-color-primary-hover);
3115
- box-shadow: inset 0 0 0 1px var(--semi-color-focus-border);
3118
+ box-shadow: none;
3116
3119
  color: var(--semi-color-white);
3117
3120
  }
3118
3121
  .semi-checkbox:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display {
@@ -3130,6 +3133,7 @@ body[theme-mode=dark], body .semi-always-dark {
3130
3133
  background: var(--semi-color-primary-active);
3131
3134
  border-color: var(--semi-color-primary-active);
3132
3135
  color: var(--semi-color-white);
3136
+ box-shadow: none;
3133
3137
  }
3134
3138
  .semi-checkbox:active .semi-checkbox-inner-checked .semi-checkbox-inner-display {
3135
3139
  background: var(--semi-color-primary-active);
@@ -3181,10 +3185,18 @@ body[theme-mode=dark], body .semi-always-dark {
3181
3185
  }
3182
3186
  .semi-checkbox-cardType_checked {
3183
3187
  background: var(--semi-color-primary-light-default);
3184
- border: 1px solid var(--semi-color-focus-border);
3188
+ border: 1px solid var(--semi-color-primary);
3185
3189
  }
3186
3190
  .semi-checkbox-cardType_checked:hover {
3187
3191
  background: var(--semi-color-primary-light-default);
3192
+ border-color: var(--semi-color-primary-hover);
3193
+ }
3194
+ .semi-checkbox-cardType_checked:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display {
3195
+ box-shadow: none;
3196
+ }
3197
+ .semi-checkbox-cardType_checked:active {
3198
+ background: var(--semi-color-primary-light-default);
3199
+ border-color: var(--semi-color-primary-active);
3188
3200
  }
3189
3201
  .semi-checkbox-cardType_disabled:active {
3190
3202
  background: transparent;
@@ -3192,6 +3204,13 @@ body[theme-mode=dark], body .semi-always-dark {
3192
3204
  .semi-checkbox-cardType_disabled:hover {
3193
3205
  background: transparent;
3194
3206
  }
3207
+ .semi-checkbox-cardType_checked_disabled.semi-checkbox-cardType {
3208
+ background: var(--semi-color-primary-light-default);
3209
+ border: 1px solid var(--semi-color-primary-disabled);
3210
+ }
3211
+ .semi-checkbox-cardType_checked_disabled.semi-checkbox-cardType:hover .semi-checkbox-inner-checked .semi-checkbox-inner-display {
3212
+ box-shadow: none;
3213
+ }
3195
3214
  .semi-checkbox-indeterminate .semi-checkbox-inner-display, .semi-checkbox-checked .semi-checkbox-inner-display {
3196
3215
  background: var(--semi-color-primary);
3197
3216
  color: var(--semi-color-white);
@@ -13658,6 +13677,7 @@ body[theme-mode=dark], body .semi-always-dark {
13658
13677
  width: 100%;
13659
13678
  height: 100%;
13660
13679
  margin: 0;
13680
+ cursor: pointer;
13661
13681
  }
13662
13682
  .semi-radio:hover .semi-radio-inner-display {
13663
13683
  background: var(--semi-color-fill-0);
@@ -13668,6 +13688,7 @@ body[theme-mode=dark], body .semi-always-dark {
13668
13688
  }
13669
13689
  .semi-radio:hover .semi-radio-inner-checked .semi-radio-inner-display {
13670
13690
  background: var(--semi-color-primary-hover);
13691
+ border-color: var(--semi-color-primary-hover);
13671
13692
  }
13672
13693
  .semi-radio:active .semi-radio-inner-display {
13673
13694
  background: var(--semi-color-fill-1);
@@ -13677,6 +13698,7 @@ body[theme-mode=dark], body .semi-always-dark {
13677
13698
  }
13678
13699
  .semi-radio:active .semi-radio-inner-checked .semi-radio-inner-display {
13679
13700
  background: var(--semi-color-primary-active);
13701
+ border-color: var(--semi-color-primary-active);
13680
13702
  }
13681
13703
  .semi-radio-buttonRadioComponent {
13682
13704
  padding: 4px;
@@ -13734,7 +13756,23 @@ body[theme-mode=dark], body .semi-always-dark {
13734
13756
  }
13735
13757
  .semi-radio-cardRadioGroup_checked {
13736
13758
  background: var(--semi-color-primary-light-default);
13737
- border: 1px solid var(--semi-color-focus-border);
13759
+ border: 1px solid var(--semi-color-primary);
13760
+ }
13761
+ .semi-radio-cardRadioGroup_checked:hover {
13762
+ border: 1px solid var(--semi-color-primary-hover);
13763
+ }
13764
+ .semi-radio-cardRadioGroup_checked:hover .semi-radio-inner-checked .semi-radio-inner-display {
13765
+ border-color: var(--semi-color-primary-hover);
13766
+ }
13767
+ .semi-radio-cardRadioGroup_checked:active {
13768
+ background: var(--semi-color-primary-light-default);
13769
+ border: 1px solid var(--semi-color-primary-active);
13770
+ }
13771
+ .semi-radio-cardRadioGroup_checked:active .semi-radio-inner-checked .semi-radio-inner-display {
13772
+ border-color: var(--semi-color-primary-active);
13773
+ }
13774
+ .semi-radio-cardRadioGroup_checked:active .semi-radio-inner-checked:hover .semi-radio-inner-display {
13775
+ background: var(--semi-color-primary-active);
13738
13776
  }
13739
13777
  .semi-radio-cardRadioGroup_hover {
13740
13778
  background: var(--semi-color-fill-0);
@@ -13742,12 +13780,23 @@ body[theme-mode=dark], body .semi-always-dark {
13742
13780
  .semi-radio-cardRadioGroup_disabled:active {
13743
13781
  background: transparent;
13744
13782
  }
13783
+ .semi-radio-cardRadioGroup_checked_disabled.semi-radio-cardRadioGroup {
13784
+ background: var(--semi-color-primary-light-default);
13785
+ border: 1px solid var(--semi-color-primary-disabled);
13786
+ }
13787
+ .semi-radio-cardRadioGroup_checked_disabled.semi-radio-cardRadioGroup .semi-radio-inner-checked .semi-radio-inner-display {
13788
+ border-color: var(--semi-color-primary-disabled);
13789
+ }
13790
+ .semi-radio-cardRadioGroup_checked_disabled.semi-radio-cardRadioGroup:hover .semi-radio-inner-checked .semi-radio-inner-display {
13791
+ border-color: var(--semi-color-primary-disabled);
13792
+ }
13745
13793
  .semi-radio.semi-radio-disabled:hover .semi-radio-inner-display, .semi-radio.semi-radio-disabled:active .semi-radio-inner-display {
13746
13794
  background: var(--semi-color-disabled-fill);
13747
13795
  border: solid 1px var(--semi-color-border);
13748
13796
  }
13749
13797
  .semi-radio.semi-radio-disabled:hover .semi-radio-inner-checked .semi-radio-inner-display, .semi-radio.semi-radio-disabled:active .semi-radio-inner-checked .semi-radio-inner-display {
13750
13798
  background: var(--semi-color-primary-disabled);
13799
+ border-color: var(--semi-color-primary-disabled);
13751
13800
  }
13752
13801
  .semi-radio-inner {
13753
13802
  position: absolute;
@@ -13855,10 +13904,11 @@ body[theme-mode=dark], body .semi-always-dark {
13855
13904
  }
13856
13905
  .semi-radio-disabled .semi-radio-inner-checked .semi-radio-inner-display {
13857
13906
  background: var(--semi-color-primary-disabled);
13858
- border-color: var(--semi-color-border);
13907
+ border-color: var(--semi-color-primary-disabled);
13859
13908
  }
13860
13909
  .semi-radio-disabled .semi-radio-inner-checked .semi-radio-inner-display:hover {
13861
13910
  background: var(--semi-color-primary-disabled);
13911
+ border-color: var(--semi-color-primary-disabled);
13862
13912
  }
13863
13913
  .semi-radio-disabled .semi-radio-addon {
13864
13914
  color: var(--semi-color-disabled-text);
@@ -14020,6 +14070,9 @@ body[theme-mode=dark], body .semi-always-dark {
14020
14070
  height: 24px;
14021
14071
  font-size: 24px;
14022
14072
  }
14073
+ .semi-rating-star-wrapper {
14074
+ position: relative;
14075
+ }
14023
14076
  .semi-rating-star-first, .semi-rating-star-second {
14024
14077
  color: var(--semi-color-fill-0);
14025
14078
  user-select: none;