@douyinfe/semi-ui 2.3.0-beta.0 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/_base/_story/a11y.scss +0 -1
  2. package/_base/_story/index.scss +2 -5
  3. package/avatar/avatarGroup.tsx +1 -1
  4. package/avatar/index.tsx +0 -4
  5. package/button/__test__/button.test.js +1 -1
  6. package/checkbox/_story/checkbox.stories.js +2 -2
  7. package/collapse/index.tsx +1 -1
  8. package/collapse/item.tsx +1 -3
  9. package/datePicker/_story/RenderDate/index.js +13 -3
  10. package/datePicker/_story/RenderFullDate/index.js +36 -14
  11. package/datePicker/_story/RenderFullDate/index.scss +1 -1
  12. package/datePicker/_story/datePicker.stories.js +19 -11
  13. package/datePicker/_story/v2/PanelOpen.jsx +39 -0
  14. package/datePicker/_story/v2/index.js +2 -1
  15. package/dist/css/semi.css +33 -9
  16. package/dist/css/semi.min.css +1 -1
  17. package/dist/umd/semi-ui.js +96 -57
  18. package/dist/umd/semi-ui.js.map +1 -1
  19. package/dist/umd/semi-ui.min.js +1 -1
  20. package/dist/umd/semi-ui.min.js.map +1 -1
  21. package/dropdown/index.tsx +11 -3
  22. package/empty/index.tsx +1 -1
  23. package/input/textarea.tsx +5 -3
  24. package/inputNumber/__test__/inputNumber.test.js +36 -8
  25. package/inputNumber/index.tsx +2 -1
  26. package/lib/cjs/avatar/avatarGroup.js +1 -2
  27. package/lib/cjs/avatar/index.js +1 -6
  28. package/lib/cjs/collapse/index.js +1 -2
  29. package/lib/cjs/collapse/item.js +1 -5
  30. package/lib/cjs/dropdown/index.d.ts +10 -3
  31. package/lib/cjs/empty/index.js +1 -2
  32. package/lib/cjs/input/textarea.js +4 -2
  33. package/lib/cjs/inputNumber/index.js +3 -2
  34. package/lib/cjs/list/index.d.ts +4 -4
  35. package/lib/cjs/navigation/Item.js +1 -1
  36. package/lib/cjs/navigation/SubNav.js +1 -1
  37. package/lib/cjs/scrollList/scrollItem.d.ts +5 -1
  38. package/lib/cjs/scrollList/scrollItem.js +7 -0
  39. package/lib/cjs/select/index.js +1 -1
  40. package/lib/cjs/sideSheet/SideSheetContent.js +5 -9
  41. package/lib/cjs/spin/icon.js +2 -1
  42. package/lib/cjs/table/Table.js +9 -5
  43. package/lib/cjs/timePicker/TimePicker.d.ts +2 -0
  44. package/lib/cjs/timePicker/TimePicker.js +2 -3
  45. package/lib/cjs/timePicker/index.d.ts +1 -0
  46. package/lib/cjs/tooltip/index.js +1 -1
  47. package/lib/cjs/tree/treeNode.js +10 -1
  48. package/lib/cjs/treeSelect/index.js +11 -3
  49. package/lib/cjs/typography/util.js +0 -1
  50. package/lib/cjs/upload/fileCard.js +3 -3
  51. package/lib/es/avatar/avatarGroup.js +1 -2
  52. package/lib/es/avatar/index.js +1 -6
  53. package/lib/es/collapse/index.js +1 -2
  54. package/lib/es/collapse/item.js +1 -5
  55. package/lib/es/dropdown/index.d.ts +10 -3
  56. package/lib/es/empty/index.js +1 -2
  57. package/lib/es/input/textarea.js +4 -2
  58. package/lib/es/inputNumber/index.js +3 -2
  59. package/lib/es/list/index.d.ts +4 -4
  60. package/lib/es/navigation/Item.js +1 -1
  61. package/lib/es/navigation/SubNav.js +1 -1
  62. package/lib/es/scrollList/scrollItem.d.ts +5 -1
  63. package/lib/es/scrollList/scrollItem.js +7 -0
  64. package/lib/es/select/index.js +1 -1
  65. package/lib/es/sideSheet/SideSheetContent.js +5 -9
  66. package/lib/es/spin/icon.js +2 -1
  67. package/lib/es/table/Table.js +9 -5
  68. package/lib/es/timePicker/TimePicker.d.ts +2 -0
  69. package/lib/es/timePicker/TimePicker.js +2 -3
  70. package/lib/es/timePicker/index.d.ts +1 -0
  71. package/lib/es/tooltip/index.js +2 -2
  72. package/lib/es/tree/treeNode.js +9 -1
  73. package/lib/es/treeSelect/index.js +12 -4
  74. package/lib/es/typography/util.js +0 -1
  75. package/lib/es/upload/fileCard.js +3 -3
  76. package/list/index.tsx +5 -5
  77. package/navigation/Item.tsx +1 -1
  78. package/navigation/SubNav.tsx +1 -1
  79. package/package.json +8 -8
  80. package/scrollList/scrollItem.tsx +10 -3
  81. package/select/index.tsx +6 -1
  82. package/sideSheet/SideSheetContent.tsx +6 -8
  83. package/spin/icon.tsx +2 -1
  84. package/table/Table.tsx +9 -6
  85. package/table/_story/table.stories.js +2 -0
  86. package/table/_story/v2/FixedColumnsChange/index.jsx +104 -0
  87. package/table/_story/v2/FixedZIndex/index.jsx +87 -0
  88. package/timePicker/TimePicker.tsx +3 -1
  89. package/timePicker/__test__/timePicker.test.js +42 -3
  90. package/timePicker/_story/timepicker.stories.js +18 -0
  91. package/tooltip/index.tsx +3 -2
  92. package/tree/treeNode.tsx +9 -2
  93. package/treeSelect/__test__/treeSelect.test.js +157 -0
  94. package/treeSelect/index.tsx +21 -12
  95. package/typography/_story/typography.stories.js +8 -0
  96. package/typography/util.tsx +0 -1
  97. package/upload/fileCard.tsx +2 -2
@@ -22,7 +22,6 @@ body[data-page="a11y"] {
22
22
  }
23
23
 
24
24
  .grid {
25
-
26
25
  .semi-row,
27
26
  .semi-row-flex {
28
27
  text-align: center;
@@ -7,9 +7,6 @@ body {
7
7
 
8
8
 
9
9
  // 给每个组件的 story 区域加个 padding,如果需要更大的 padding 可以在组件内自定义样式
10
- .sb-show-main.sb-main-padded {
11
-
12
- #root {
13
- padding: 20px;
14
- }
10
+ .sb-show-main.sb-main-padded > #root {
11
+ padding: 20px;
15
12
  }
@@ -76,6 +76,6 @@ export default class AvatarGroup extends PureComponent<AvatarGroupProps> {
76
76
 
77
77
  }
78
78
 
79
- return <div className={groupCls} aria-label="avatar group">{inner}</div>;
79
+ return <div className={groupCls}>{inner}</div>;
80
80
  }
81
81
  }
package/avatar/index.tsx CHANGED
@@ -136,24 +136,20 @@ export default class Avatar extends BaseComponent<AvatarProps, AvatarState> {
136
136
  );
137
137
  let content = children;
138
138
  const hoverRender = hoverContent ? (<div className={`${prefixCls}-hover`}>{hoverContent}</div>) : null;
139
- let ariaLabel;
140
139
  if (isImg) {
141
140
  content = (
142
141
  <img src={src} srcSet={srcSet} onError={this.handleError} alt={alt} {...imgAttr} />
143
142
  );
144
- ariaLabel = 'avatar';
145
143
  } else if (typeof children === 'string') {
146
144
  content = (
147
145
  <span className={`${prefixCls}-content`}>
148
146
  <span className={`${prefixCls}-label`}>{children}</span>
149
147
  </span>
150
148
  );
151
- ariaLabel = `avatar of ${children}`;
152
149
  }
153
150
  return (
154
151
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events
155
152
  <span
156
- aria-label={ariaLabel}
157
153
  {...(others as any)}
158
154
  style={style}
159
155
  className={avatarCls}
@@ -29,7 +29,7 @@ describe('Button', () => {
29
29
 
30
30
  it(`test loading`, () => {
31
31
  const elem = mount(<Button icon={<IconEdit />} loading />);
32
- expect(elem.find({ 'aria-label': 'spin' }).length).toBe(1);
32
+ expect(elem.find({ 'data-icon': 'spin' }).length).toBe(1);
33
33
  });
34
34
 
35
35
  it('test button type',()=>{
@@ -578,9 +578,9 @@ export const CheckboxGroupCardStyle = () => (
578
578
  </CheckboxGroup>
579
579
  <br />
580
580
  <br />
581
- <div>radio disabled</div>
581
+ <div>Checkbox disabled</div>
582
582
  <CheckboxGroup key={getUuidShort({ prefix: '' })} aria-label='group demo' type="card" direction="horizontal" defaultValue={['1']}>
583
- <Checkbox value="1" disabled extra="Semi Design" style={{ width: 280 }}>
583
+ <Checkbox value="1" disabled extra="disabled+checked" style={{ width: 280 }}>
584
584
  多选框标题
585
585
  </Checkbox>
586
586
  <Checkbox value="2" disabled extra="disabled+unchecked" style={{ width: 280 }}>
@@ -97,7 +97,7 @@ class Collapse extends BaseComponent<CollapseReactProps, CollapseState> {
97
97
  const clsPrefix = cls(cssClasses.PREFIX, className);
98
98
  const { activeSet } = this.state;
99
99
  return (
100
- <div className={clsPrefix} style={style} aria-label={`Collapse`}>
100
+ <div className={clsPrefix} style={style}>
101
101
  <CollapseContext.Provider
102
102
  value={{
103
103
  activeSet,
package/collapse/item.tsx CHANGED
@@ -65,7 +65,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
65
65
  {iconPosLeft ? icon : null}
66
66
  <span>{header}</span>
67
67
  <span className={`${cssClasses.PREFIX}-header-right`}>
68
- <span aria-label={'Extra of collapse header'}>{extra}</span>
68
+ <span>{extra}</span>
69
69
  {iconPosLeft ? null : icon}
70
70
  </span>
71
71
  </>
@@ -108,7 +108,6 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
108
108
  });
109
109
  return (
110
110
  <div
111
- aria-label={'Collapse panel'}
112
111
  className={itemCls}
113
112
  {...restProps}
114
113
  >
@@ -129,7 +128,6 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
129
128
  reCalcKey={reCalcKey}>
130
129
  <div
131
130
  className={contentCls}
132
- aria-label={'Collapse content'}
133
131
  aria-hidden={!active}
134
132
  id={this.ariaID}
135
133
  >
@@ -2,20 +2,30 @@ import React from 'react';
2
2
  import DatePicker from '../../index';
3
3
  import { Tooltip } from '@douyinfe/semi-ui';
4
4
 
5
+ /**
6
+ * 使用 Chromatic UI 测试
7
+ */
5
8
  export default function Demo() {
6
9
  const dateStyle = { width: '100%', height: '100%', border: '1px solid #0077FA', display: 'flex', justifyContent: 'center', alignItems: 'center' };
10
+ const defaultValue = new Date('2021-01-10 00:00:00');
7
11
  const renderDate = (dayNumber, fullDate) => {
8
12
  if (dayNumber === 1) {
9
13
  return <Tooltip content={'Always Day 1'} >
10
14
  <div style={dateStyle}>{dayNumber}</div>
11
- </Tooltip>
15
+ </Tooltip>;
12
16
  }
13
17
  return dayNumber;
14
18
  };
15
19
  return (
16
- <div>
20
+ <div style={{ height: '100vh' }}>
17
21
  <div>通过 renderDate 可以自定义日期的显示内容</div>
18
- <DatePicker renderDate={renderDate} />
22
+ <DatePicker motion={false} defaultValue={defaultValue} defaultOpen renderDate={renderDate} />
19
23
  </div>
20
24
  );
21
25
  }
26
+ Demo.parameters = {
27
+ chromatic: {
28
+ disableSnapshot: false,
29
+ delay: 3000,
30
+ },
31
+ };
@@ -1,8 +1,12 @@
1
1
  import React from 'react';
2
- import DatePicker from '../../index';
2
+ import { DatePicker, Space } from '@douyinfe/semi-ui';
3
3
  import classNames from 'classnames';
4
4
  import '@douyinfe/semi-foundation/datePicker/datePicker.scss';
5
+ import './index.scss';
5
6
 
7
+ /**
8
+ * 开启 Chromatic UI 测试
9
+ */
6
10
  export default function Demo() {
7
11
  const dayStyle = {
8
12
  display: 'flex',
@@ -33,24 +37,42 @@ export default function Demo() {
33
37
  </div>
34
38
  );
35
39
  };
40
+ const props = {
41
+ defaultOpen: true,
42
+ position: 'bottomLeft',
43
+ autoAdjustOverflow: false,
44
+ motion: false,
45
+ };
46
+ const singleDefaultValue = new Date('2021-01-08');
47
+ const multipleDefaultValue = [new Date('2021-01-08'), new Date('2021-01-09'), new Date('2021-01-10'), new Date('2021-01-19')];
48
+ const rangeDefaultValue = [new Date('2021-12-08'), new Date('2021-01-20')];
36
49
 
37
50
  return (
38
- <div>
51
+ <div style={{ height: '100vh' }}>
39
52
  <div>
40
53
  通过 renderFullDate 可以自定义日期单元格子的渲染,API 提供日期的当前状态:是否被选中,是否是当前日等。
41
54
  </div>
42
- <div>
43
- 单选选中
44
- <DatePicker style={{ width: '230px' }} renderFullDate={renderFullDate} />
45
- </div>
46
- <div>
47
- 多选选中
48
- <DatePicker style={{ width: '230px' }} multiple={true} renderFullDate={renderFullDate} />
49
- </div>
50
- <div>
51
- 范围选中
52
- <DatePicker style={{ width: '230px' }} type={'dateRange'} renderFullDate={renderFullDate} />
53
- </div>
55
+ <Space wrap spacing={[12, 400]}>
56
+ <div>
57
+ 单选选中
58
+ <DatePicker {...props} style={{ width: '230px' }} renderFullDate={renderFullDate} defaultValue={singleDefaultValue} />
59
+ </div>
60
+ <div>
61
+ 多选选中
62
+ <DatePicker {...props} style={{ width: '230px' }} multiple={true} renderFullDate={renderFullDate} defaultValue={multipleDefaultValue} />
63
+ </div>
64
+ <div>
65
+ 范围选中
66
+ <DatePicker {...props} style={{ width: '230px' }} type={'dateRange'} renderFullDate={renderFullDate} defaultValue={rangeDefaultValue} />
67
+ </div>
68
+ </Space>
54
69
  </div>
55
70
  );
56
71
  }
72
+ Demo.parameters = {
73
+ chromatic: {
74
+ disableSnapshot: false,
75
+ delay: 3000,
76
+ viewports: [1800]
77
+ },
78
+ };
@@ -20,4 +20,4 @@
20
20
 
21
21
  .components-datepicker-demo-day-disabled {
22
22
  background: rgba(46, 50, 56, 0.04);
23
- }
23
+ }
@@ -36,7 +36,7 @@ import DatePickerSlot from './DatePickerSlot';
36
36
  import DatePickerTimeZone from './DatePickerTimeZone';
37
37
  import BetterRangePicker from './BetterRangePicker';
38
38
  import SyncSwitchMonth from './SyncSwitchMonth';
39
- import { YearButton } from './v2';
39
+ export * from './v2';
40
40
 
41
41
  export default {
42
42
  title: 'DatePicker',
@@ -67,7 +67,6 @@ export {
67
67
  DatePickerTimeZone,
68
68
  BetterRangePicker,
69
69
  SyncSwitchMonth,
70
- YearButton
71
70
  }
72
71
 
73
72
  const demoDiv = {
@@ -76,7 +75,7 @@ const demoDiv = {
76
75
  };
77
76
 
78
77
  export const DatePickerDefault = () => (
79
- <div style={demoDiv}>
78
+ <div style={{...demoDiv, height: '100vh'}}>
80
79
  <span>datePicker施工现场</span>
81
80
  <DatePicker
82
81
  insetLabel={<span>日期</span>}
@@ -87,14 +86,7 @@ export const DatePickerDefault = () => (
87
86
  <br />
88
87
 
89
88
  <span>datePicker默认显示</span>
90
- <DatePicker defaultOpen />
91
- <br />
92
-
93
- <span>defaultValue: new Date('2019-07-07')</span>
94
- <DatePicker
95
- defaultValue={new Date('2019-07-07')}
96
- onOpenChange={isOpen => console.log(isOpen)}
97
- />
89
+ <DatePicker />
98
90
  <br />
99
91
 
100
92
  <span>defaultValue: 2019-07-09</span>
@@ -106,8 +98,23 @@ export const DatePickerDefault = () => (
106
98
  defaultValue={1569888000000}
107
99
  onChange={(input, value) => console.log({ input, value })}
108
100
  />
101
+ <br />
102
+
103
+ <span>defaultValue: new Date('2019-07-07')</span>
104
+ <DatePicker
105
+ defaultValue={new Date('2019-07-07')}
106
+ onOpenChange={isOpen => console.log(isOpen)}
107
+ defaultOpen
108
+ motion={false}
109
+ />
109
110
  </div>
110
111
  );
112
+ DatePickerDefault.parameters = {
113
+ chromatic: {
114
+ disableSnapshot: false,
115
+ delay: 300
116
+ }
117
+ };
111
118
 
112
119
  export const DatePickerCallbacks = () => {
113
120
  const printArgs = (...args) => console.log(...args);
@@ -806,3 +813,4 @@ export const FixTriggerRenderClosePanel = () => {
806
813
  );
807
814
  };
808
815
  FixTriggerRenderClosePanel.storyName = "fix triggerRender close bug"
816
+
@@ -0,0 +1,39 @@
1
+ import React from 'react';
2
+ import { DatePicker, Space } from '@douyinfe/semi-ui';
3
+
4
+ /**
5
+ * Test with Chromatic
6
+ */
7
+ export default function App() {
8
+ // 使用过去的时间,避免当前日变动引入 UI 测试失败
9
+ const defaultValue = new Date('2021-01-01 00:00:00');
10
+ const props = {
11
+ defaultOpen: true,
12
+ position: 'bottomLeft',
13
+ autoAdjustOverflow: false,
14
+ defaultPickerValue: defaultValue,
15
+ needConfirm: true,
16
+ motion: false,
17
+ };
18
+ const spacing = [48, 400];
19
+ // 使用过去的时间,避免当前日变动引入 UI 测试失败
20
+ const defaultRangeValue = [defaultValue, new Date('2021-03-31 00:00:00')];
21
+ return (
22
+ <div style={{ height: '100vh' }}>
23
+ <Space wrap spacing={spacing}>
24
+ <DatePicker {...props} type="month" defaultValue={defaultValue} />
25
+ <DatePicker {...props} type="dateTimeRange" defaultValue={defaultRangeValue} density="compact" />
26
+ <DatePicker {...props} type="dateTimeRange" defaultValue={defaultRangeValue} />
27
+ </Space>
28
+ </div>
29
+ );
30
+ }
31
+
32
+ App.parameters = {
33
+ chromatic: {
34
+ disableSnapshot: false,
35
+ delay: 3000,
36
+ viewports: [1800]
37
+ },
38
+ };
39
+ App.storyName = 'defaultOpen';
@@ -1 +1,2 @@
1
- export { default as YearButton } from './YearButton';
1
+ export { default as YearButton } from './YearButton';
2
+ export { default as PanelOpen } from './PanelOpen';
package/dist/css/semi.css CHANGED
@@ -648,6 +648,7 @@ body[theme-mode=dark], body .semi-always-dark {
648
648
  padding-top: 8px;
649
649
  padding-bottom: 8px;
650
650
  color: var(--semi-color-text-0);
651
+ border-radius: 0;
651
652
  position: relative;
652
653
  display: flex;
653
654
  flex-wrap: nowrap;
@@ -1667,21 +1668,27 @@ body[theme-mode=dark], body .semi-always-dark {
1667
1668
  }
1668
1669
  .semi-button-borderless {
1669
1670
  background-color: transparent;
1671
+ border: 0 transparent solid;
1670
1672
  }
1671
1673
  .semi-button-borderless:not(.semi-button-disabled):hover {
1672
1674
  background-color: var(--semi-color-fill-0);
1675
+ border: 0 transparent solid;
1673
1676
  }
1674
1677
  .semi-button-borderless:not(.semi-button-disabled):active {
1675
1678
  background-color: var(--semi-color-fill-1);
1679
+ border: 0 transparent solid;
1676
1680
  }
1677
1681
  .semi-button-light {
1678
1682
  background-color: var(--semi-color-fill-0);
1683
+ border: 0 transparent solid;
1679
1684
  }
1680
1685
  .semi-button-light:not(.semi-button-disabled):hover {
1681
1686
  background-color: var(--semi-color-fill-1);
1687
+ border: 0 transparent solid;
1682
1688
  }
1683
1689
  .semi-button-light:not(.semi-button-disabled):active {
1684
1690
  background-color: var(--semi-color-fill-2);
1691
+ border: 0 transparent solid;
1685
1692
  }
1686
1693
  .semi-button-size-small {
1687
1694
  height: 24px;
@@ -12060,6 +12067,7 @@ body[theme-mode=dark], body .semi-always-dark {
12060
12067
  padding: 0 0;
12061
12068
  font-size: 14px;
12062
12069
  font-weight: 600;
12070
+ background-color: transparent;
12063
12071
  color: var(--semi-color-text-0);
12064
12072
  border-bottom: 0 solid transparent;
12065
12073
  }
@@ -12082,6 +12090,7 @@ body[theme-mode=dark], body .semi-always-dark {
12082
12090
  text-align: right;
12083
12091
  border-radius: 0 0 5px 5px;
12084
12092
  border-top: 0 solid transparent;
12093
+ background-color: transparent;
12085
12094
  }
12086
12095
  .semi-modal-footer .semi-button {
12087
12096
  margin-left: 12px;
@@ -14167,6 +14176,7 @@ body[theme-mode=dark], body .semi-always-dark {
14167
14176
  .semi-scrolllist-header-title {
14168
14177
  padding: 16px 0;
14169
14178
  font-weight: 600;
14179
+ color: var(--semi-color-text-0);
14170
14180
  font-size: 14px;
14171
14181
  line-height: 20px;
14172
14182
  font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, sans-serif;
@@ -14336,6 +14346,7 @@ body[theme-mode=dark], body .semi-always-dark {
14336
14346
  padding-top: 8px;
14337
14347
  padding-bottom: 8px;
14338
14348
  color: var(--semi-color-text-0);
14349
+ border-radius: 0;
14339
14350
  position: relative;
14340
14351
  display: flex;
14341
14352
  flex-wrap: nowrap;
@@ -14415,9 +14426,11 @@ body[theme-mode=dark], body .semi-always-dark {
14415
14426
  }
14416
14427
  .semi-select:hover {
14417
14428
  background-color: var(--semi-color-fill-1);
14429
+ border: 1px solid transparent;
14418
14430
  }
14419
14431
  .semi-select:active {
14420
14432
  background-color: var(--semi-color-fill-2);
14433
+ border: 1px solid var(--semi-color-focus-border);
14421
14434
  }
14422
14435
  .semi-select:focus {
14423
14436
  border: 1px solid var(--semi-color-focus-border);
@@ -14697,6 +14710,7 @@ body[theme-mode=dark], body .semi-always-dark {
14697
14710
  .semi-select-option-list {
14698
14711
  overflow-x: hidden;
14699
14712
  overflow-y: auto;
14713
+ padding: 0 0 0 0;
14700
14714
  }
14701
14715
  .semi-select-option-list-chosen .semi-select-option-icon {
14702
14716
  display: flex;
@@ -16135,6 +16149,9 @@ body[theme-mode=dark], body .semi-always-dark {
16135
16149
  color: var(--semi-color-text-0);
16136
16150
  width: 100%;
16137
16151
  }
16152
+ .semi-table-wrapper[data-column-fixed=true] {
16153
+ z-index: 1;
16154
+ }
16138
16155
  .semi-table-middle .semi-table-tbody > .semi-table-row > .semi-table-row-cell {
16139
16156
  padding-top: 12px;
16140
16157
  padding-bottom: 12px;
@@ -18859,6 +18876,7 @@ body[theme-mode=dark], body .semi-always-dark {
18859
18876
  }
18860
18877
  .semi-tree-select:hover {
18861
18878
  background-color: var(--semi-color-fill-1);
18879
+ border: 1px solid inherit;
18862
18880
  }
18863
18881
  .semi-tree-select-focus {
18864
18882
  border: 1px solid var(--semi-color-focus-border);
@@ -20113,20 +20131,20 @@ p.semi-typography-extended,
20113
20131
  .semi-input-textarea-wrapper .semi-input-clearbtn-hidden {
20114
20132
  visibility: hidden;
20115
20133
  }
20116
- .semi-input-textarea-wrapper-readonly {
20117
- cursor: default;
20118
- }
20119
- .semi-input-textarea-wrapper-disabled {
20134
+ .semi-input-textarea-wrapper-disabled, .semi-input-textarea-wrapper-readonly {
20120
20135
  cursor: not-allowed;
20121
20136
  color: var(--semi-color-disabled-text);
20122
20137
  background-color: var(--semi-color-disabled-fill);
20123
20138
  }
20124
- .semi-input-textarea-wrapper-disabled:hover {
20139
+ .semi-input-textarea-wrapper-disabled:hover, .semi-input-textarea-wrapper-readonly:hover {
20125
20140
  background-color: var(--semi-color-disabled-fill);
20126
20141
  }
20127
- .semi-input-textarea-wrapper-disabled::placeholder {
20142
+ .semi-input-textarea-wrapper-disabled::placeholder, .semi-input-textarea-wrapper-readonly::placeholder {
20128
20143
  color: var(--semi-color-disabled-text);
20129
20144
  }
20145
+ .semi-input-textarea-wrapper-readonly {
20146
+ cursor: text;
20147
+ }
20130
20148
  .semi-input-textarea-wrapper-error {
20131
20149
  background-color: var(--semi-color-danger-light-default);
20132
20150
  border-color: var(--semi-color-danger-light-default);
@@ -20177,23 +20195,29 @@ p.semi-typography-extended,
20177
20195
  box-sizing: border-box;
20178
20196
  color: var(--semi-color-text-0);
20179
20197
  }
20198
+ .semi-input-textarea:hover {
20199
+ border-color: transparent;
20200
+ }
20180
20201
  .semi-input-textarea::placeholder {
20181
20202
  color: var(--semi-color-text-2);
20182
20203
  }
20183
20204
  .semi-input-textarea-showClear {
20184
20205
  padding-right: 36px;
20185
20206
  }
20186
- .semi-input-textarea-disabled {
20207
+ .semi-input-textarea-disabled, .semi-input-textarea-readonly {
20187
20208
  cursor: not-allowed;
20188
20209
  color: var(--semi-color-disabled-text);
20189
20210
  background-color: transparent;
20190
20211
  }
20191
- .semi-input-textarea-disabled:hover {
20212
+ .semi-input-textarea-disabled:hover, .semi-input-textarea-readonly:hover {
20192
20213
  background-color: transparent;
20193
20214
  }
20194
- .semi-input-textarea-disabled::placeholder {
20215
+ .semi-input-textarea-disabled::placeholder, .semi-input-textarea-readonly::placeholder {
20195
20216
  color: var(--semi-color-disabled-text);
20196
20217
  }
20218
+ .semi-input-textarea-readonly {
20219
+ cursor: text;
20220
+ }
20197
20221
  .semi-input-textarea-autosize {
20198
20222
  overflow: hidden;
20199
20223
  }