@douyinfe/semi-ui 2.12.0-alpha.0 → 2.12.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (192) hide show
  1. package/avatar/index.tsx +2 -2
  2. package/backtop/index.tsx +7 -11
  3. package/badge/index.tsx +1 -1
  4. package/banner/index.tsx +5 -5
  5. package/breadcrumb/index.tsx +3 -5
  6. package/button/Button.tsx +9 -11
  7. package/card/index.tsx +41 -43
  8. package/carousel/CarouselArrow.tsx +0 -2
  9. package/carousel/index.tsx +0 -1
  10. package/cascader/index.tsx +123 -101
  11. package/cascader/item.tsx +1 -1
  12. package/checkbox/checkbox.tsx +2 -13
  13. package/collapsible/index.tsx +1 -8
  14. package/datePicker/dateInput.tsx +0 -1
  15. package/datePicker/datePicker.tsx +5 -13
  16. package/dist/umd/semi-ui.js +626 -500
  17. package/dist/umd/semi-ui.js.map +1 -1
  18. package/dist/umd/semi-ui.min.js +1 -1
  19. package/dist/umd/semi-ui.min.js.map +1 -1
  20. package/divider/index.tsx +4 -8
  21. package/dropdown/index.tsx +1 -1
  22. package/empty/index.tsx +5 -13
  23. package/form/hoc/withField.tsx +1 -1
  24. package/form/label.tsx +1 -1
  25. package/grid/col.tsx +1 -1
  26. package/grid/row.tsx +1 -1
  27. package/iconButton/index.tsx +1 -2
  28. package/input/index.tsx +11 -38
  29. package/lib/cjs/avatar/index.js +2 -4
  30. package/lib/cjs/backtop/index.js +1 -2
  31. package/lib/cjs/badge/index.js +1 -2
  32. package/lib/cjs/banner/index.js +4 -9
  33. package/lib/cjs/breadcrumb/index.js +3 -4
  34. package/lib/cjs/button/Button.d.ts +1 -1
  35. package/lib/cjs/button/Button.js +3 -13
  36. package/lib/cjs/card/index.js +5 -10
  37. package/lib/cjs/carousel/CarouselArrow.js +2 -6
  38. package/lib/cjs/carousel/index.js +1 -2
  39. package/lib/cjs/cascader/index.js +6 -9
  40. package/lib/cjs/cascader/item.js +1 -2
  41. package/lib/cjs/checkbox/checkbox.js +4 -8
  42. package/lib/cjs/collapsible/index.js +1 -2
  43. package/lib/cjs/datePicker/dateInput.d.ts +1 -1
  44. package/lib/cjs/datePicker/dateInput.js +1 -2
  45. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  46. package/lib/cjs/datePicker/datePicker.js +2 -4
  47. package/lib/cjs/datePicker/monthsGrid.d.ts +2 -2
  48. package/lib/cjs/divider/index.js +1 -2
  49. package/lib/cjs/dropdown/index.js +1 -2
  50. package/lib/cjs/empty/index.js +4 -8
  51. package/lib/cjs/form/baseForm.d.ts +1 -1
  52. package/lib/cjs/form/field.d.ts +1 -1
  53. package/lib/cjs/form/hoc/withField.js +1 -2
  54. package/lib/cjs/form/label.js +1 -2
  55. package/lib/cjs/grid/col.js +1 -2
  56. package/lib/cjs/grid/row.js +1 -2
  57. package/lib/cjs/iconButton/index.js +1 -3
  58. package/lib/cjs/input/index.js +5 -9
  59. package/lib/cjs/list/index.js +3 -6
  60. package/lib/cjs/modal/ConfirmModal.js +1 -2
  61. package/lib/cjs/modal/Modal.js +5 -8
  62. package/lib/cjs/modal/ModalContent.d.ts +2 -0
  63. package/lib/cjs/modal/ModalContent.js +23 -22
  64. package/lib/cjs/notification/notice.js +3 -6
  65. package/lib/cjs/pagination/index.js +2 -4
  66. package/lib/cjs/popconfirm/index.js +3 -6
  67. package/lib/cjs/progress/index.js +1 -1
  68. package/lib/cjs/radio/radio.d.ts +1 -1
  69. package/lib/cjs/radio/radio.js +2 -4
  70. package/lib/cjs/radio/radioGroup.d.ts +1 -1
  71. package/lib/cjs/rating/item.js +1 -2
  72. package/lib/cjs/scrollList/index.js +3 -6
  73. package/lib/cjs/select/index.js +4 -8
  74. package/lib/cjs/select/option.js +1 -2
  75. package/lib/cjs/sideSheet/SideSheetContent.js +3 -6
  76. package/lib/cjs/skeleton/index.js +1 -3
  77. package/lib/cjs/space/index.js +1 -2
  78. package/lib/cjs/spin/index.js +3 -7
  79. package/lib/cjs/switch/index.js +4 -6
  80. package/lib/cjs/table/Table.d.ts +1 -1
  81. package/lib/cjs/table/Table.js +3 -6
  82. package/lib/cjs/tabs/TabBar.js +1 -2
  83. package/lib/cjs/tabs/TabPane.js +2 -5
  84. package/lib/cjs/tagInput/index.js +2 -4
  85. package/lib/cjs/timePicker/Combobox.js +1 -3
  86. package/lib/cjs/toast/toast.js +3 -6
  87. package/lib/cjs/tooltip/TooltipStyledTransition.js +5 -2
  88. package/lib/cjs/transfer/index.js +1 -2
  89. package/lib/cjs/tree/treeNode.js +1 -2
  90. package/lib/cjs/treeSelect/index.js +3 -6
  91. package/lib/cjs/typography/base.js +1 -2
  92. package/lib/cjs/typography/title.d.ts +1 -1
  93. package/lib/cjs/upload/index.d.ts +1 -1
  94. package/lib/cjs/upload/index.js +6 -13
  95. package/lib/es/avatar/index.js +2 -4
  96. package/lib/es/backtop/index.js +1 -2
  97. package/lib/es/badge/index.js +1 -2
  98. package/lib/es/banner/index.js +4 -9
  99. package/lib/es/breadcrumb/index.js +3 -4
  100. package/lib/es/button/Button.d.ts +1 -1
  101. package/lib/es/button/Button.js +3 -11
  102. package/lib/es/card/index.js +5 -10
  103. package/lib/es/carousel/CarouselArrow.js +2 -6
  104. package/lib/es/carousel/index.js +1 -2
  105. package/lib/es/cascader/index.js +6 -9
  106. package/lib/es/cascader/item.js +1 -2
  107. package/lib/es/checkbox/checkbox.js +4 -8
  108. package/lib/es/collapsible/index.js +1 -2
  109. package/lib/es/datePicker/dateInput.d.ts +1 -1
  110. package/lib/es/datePicker/dateInput.js +1 -2
  111. package/lib/es/datePicker/datePicker.d.ts +1 -1
  112. package/lib/es/datePicker/datePicker.js +2 -4
  113. package/lib/es/datePicker/monthsGrid.d.ts +2 -2
  114. package/lib/es/divider/index.js +1 -2
  115. package/lib/es/dropdown/index.js +1 -2
  116. package/lib/es/empty/index.js +4 -8
  117. package/lib/es/form/baseForm.d.ts +1 -1
  118. package/lib/es/form/field.d.ts +1 -1
  119. package/lib/es/form/hoc/withField.js +1 -2
  120. package/lib/es/form/label.js +1 -2
  121. package/lib/es/grid/col.js +1 -2
  122. package/lib/es/grid/row.js +1 -2
  123. package/lib/es/iconButton/index.js +1 -3
  124. package/lib/es/input/index.js +5 -9
  125. package/lib/es/list/index.js +3 -6
  126. package/lib/es/modal/ConfirmModal.js +1 -2
  127. package/lib/es/modal/Modal.js +5 -8
  128. package/lib/es/modal/ModalContent.d.ts +2 -0
  129. package/lib/es/modal/ModalContent.js +22 -22
  130. package/lib/es/notification/notice.js +3 -6
  131. package/lib/es/pagination/index.js +2 -4
  132. package/lib/es/popconfirm/index.js +3 -6
  133. package/lib/es/progress/index.js +1 -1
  134. package/lib/es/radio/radio.d.ts +1 -1
  135. package/lib/es/radio/radio.js +2 -4
  136. package/lib/es/radio/radioGroup.d.ts +1 -1
  137. package/lib/es/rating/item.js +1 -2
  138. package/lib/es/scrollList/index.js +3 -6
  139. package/lib/es/select/index.js +4 -8
  140. package/lib/es/select/option.js +1 -2
  141. package/lib/es/sideSheet/SideSheetContent.js +3 -6
  142. package/lib/es/skeleton/index.js +1 -3
  143. package/lib/es/space/index.js +1 -2
  144. package/lib/es/spin/index.js +3 -7
  145. package/lib/es/switch/index.js +4 -6
  146. package/lib/es/table/Table.d.ts +1 -1
  147. package/lib/es/table/Table.js +3 -6
  148. package/lib/es/tabs/TabBar.js +1 -2
  149. package/lib/es/tabs/TabPane.js +2 -5
  150. package/lib/es/tagInput/index.js +2 -4
  151. package/lib/es/timePicker/Combobox.js +1 -3
  152. package/lib/es/toast/toast.js +3 -6
  153. package/lib/es/tooltip/TooltipStyledTransition.js +5 -2
  154. package/lib/es/transfer/index.js +1 -2
  155. package/lib/es/tree/treeNode.js +1 -2
  156. package/lib/es/treeSelect/index.js +3 -6
  157. package/lib/es/typography/base.js +1 -2
  158. package/lib/es/typography/title.d.ts +1 -1
  159. package/lib/es/upload/index.d.ts +1 -1
  160. package/lib/es/upload/index.js +6 -13
  161. package/list/index.tsx +4 -16
  162. package/modal/ConfirmModal.tsx +1 -1
  163. package/modal/Modal.tsx +2 -3
  164. package/modal/ModalContent.tsx +34 -40
  165. package/notification/notice.tsx +4 -16
  166. package/package.json +9 -9
  167. package/pagination/index.tsx +2 -16
  168. package/popconfirm/index.tsx +3 -11
  169. package/progress/index.tsx +1 -1
  170. package/radio/radio.tsx +2 -10
  171. package/rating/item.tsx +1 -1
  172. package/scrollList/index.tsx +3 -19
  173. package/select/index.tsx +4 -12
  174. package/select/option.tsx +1 -5
  175. package/sideSheet/SideSheetContent.tsx +3 -3
  176. package/skeleton/index.tsx +1 -1
  177. package/space/index.tsx +1 -1
  178. package/spin/index.tsx +9 -15
  179. package/switch/index.tsx +14 -9
  180. package/table/Table.tsx +3 -5
  181. package/tabs/TabBar.tsx +1 -1
  182. package/tabs/TabPane.tsx +4 -9
  183. package/tagInput/index.tsx +2 -2
  184. package/timePicker/Combobox.tsx +1 -6
  185. package/toast/toast.tsx +3 -3
  186. package/tooltip/TooltipStyledTransition.tsx +2 -1
  187. package/tooltip/_story/tooltip.stories.js +90 -0
  188. package/transfer/index.tsx +0 -1
  189. package/tree/treeNode.tsx +1 -1
  190. package/treeSelect/index.tsx +3 -15
  191. package/typography/base.tsx +1 -1
  192. package/upload/index.tsx +38 -107
@@ -13,9 +13,9 @@ import ModalContentFoundation, {
13
13
  ModalContentProps,
14
14
  ModalContentState
15
15
  } from '@douyinfe/semi-foundation/modal/modalContentFoundation';
16
- import { noop, isFunction, get } from 'lodash';
16
+ import { get, isFunction, noop } from 'lodash';
17
17
  import { IconClose } from '@douyinfe/semi-icons';
18
- import { getActiveElement } from '../_utils';
18
+ import FocusTrapHandle from "@douyinfe/semi-foundation/utils/FocusHandle";
19
19
 
20
20
  let uuid = 0;
21
21
 
@@ -23,6 +23,7 @@ let uuid = 0;
23
23
  export interface ModalContentReactProps extends ModalContentProps {
24
24
  children?: React.ReactNode;
25
25
  }
26
+
26
27
  export default class ModalContent extends BaseComponent<ModalContentReactProps, ModalContentState> {
27
28
  static contextType = ConfigContext;
28
29
  static propTypes = {
@@ -45,12 +46,13 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
45
46
  modalDialogRef: React.MutableRefObject<HTMLDivElement>;
46
47
  foundation: ModalContentFoundation;
47
48
  context: ContextValue;
49
+ focusTrapHandle: FocusTrapHandle;
48
50
 
49
51
  constructor(props: ModalContentProps) {
50
52
  super(props);
51
53
  this.state = {
52
54
  dialogMouseDown: false,
53
- prevFocusElement: getActiveElement(),
55
+ prevFocusElement: FocusTrapHandle.getActiveElement(),
54
56
  };
55
57
  this.foundation = new ModalContentFoundation(this.adapter);
56
58
  this.dialogId = `dialog-${uuid++}`;
@@ -88,15 +90,18 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
88
90
  modalDialogFocus: () => {
89
91
  let activeElementInDialog;
90
92
  if (this.modalDialogRef) {
91
- const activeElement = getActiveElement();
93
+ const activeElement = FocusTrapHandle.getActiveElement();
92
94
  activeElementInDialog = this.modalDialogRef.current.contains(activeElement);
95
+ this.focusTrapHandle?.destroy();
96
+ this.focusTrapHandle = new FocusTrapHandle(this.modalDialogRef.current);
93
97
  }
94
98
  if (!activeElementInDialog) {
95
- this.modalDialogRef && this.modalDialogRef.current.focus();
99
+ this.modalDialogRef?.current?.focus();
96
100
  }
97
101
  },
98
102
  modalDialogBlur: () => {
99
- this.modalDialogRef && this.modalDialogRef.current.blur();
103
+ this.modalDialogRef?.current.blur();
104
+ this.focusTrapHandle?.destroy();
100
105
  },
101
106
  prevFocusElementReFocus: () => {
102
107
  const { prevFocusElement } = this.state;
@@ -158,7 +163,7 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
158
163
  } = this.props;
159
164
  let closer;
160
165
  if (closable) {
161
- const iconType = closeIcon || <IconClose x-semi-prop="closeIcon" />;
166
+ const iconType = closeIcon || <IconClose/>;
162
167
  closer = (
163
168
  <Button
164
169
  aria-label="close"
@@ -177,7 +182,7 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
177
182
 
178
183
  renderIcon = () => {
179
184
  const { icon } = this.props;
180
- return icon ? <span className={`${cssClasses.DIALOG}-icon-wrapper`} x-semi-prop="icon">{icon}</span> : null;
185
+ return icon ? <span className={`${cssClasses.DIALOG}-icon-wrapper`}>{icon}</span> : null;
181
186
  };
182
187
 
183
188
  renderHeader = () => {
@@ -187,20 +192,16 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
187
192
  const { title } = this.props;
188
193
  const closer = this.renderCloseBtn();
189
194
  const icon = this.renderIcon();
190
- return title === null || title === undefined ? null : (
191
- <div className={`${cssClasses.DIALOG}-header`}>
192
- {icon}
193
- <Typography.Title
194
- heading={5}
195
- className={`${cssClasses.DIALOG}-title`}
196
- id={`${cssClasses.DIALOG}-title`}
197
- x-semi-prop="title"
198
- >
199
- {title}
200
- </Typography.Title>
201
- {closer}
202
- </div>
203
- );
195
+ return (title === null || title === undefined) ?
196
+ null :
197
+ (
198
+ <div className={`${cssClasses.DIALOG}-header`}>
199
+ {icon}
200
+ <Typography.Title heading={5} className={`${cssClasses.DIALOG}-title`}
201
+ id={`${cssClasses.DIALOG}-title`}>{title}</Typography.Title>
202
+ {closer}
203
+ </div>
204
+ );
204
205
  };
205
206
 
206
207
  renderBody = () => {
@@ -215,19 +216,16 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
215
216
  const closer = this.renderCloseBtn();
216
217
  const icon = this.renderIcon();
217
218
  const hasHeader = title !== null && title !== undefined || 'header' in this.props;
218
- return hasHeader ? (
219
- <div className={bodyCls} id={`${cssClasses.DIALOG}-body`} style={bodyStyle} x-semi-prop="children">
220
- {children}
221
- </div>
222
- ) : (
223
- <div className={`${cssClasses.DIALOG}-body-wrapper`}>
224
- {icon}
225
- <div className={bodyCls} style={bodyStyle} x-semi-prop="children">
226
- {children}
219
+ return hasHeader ?
220
+ <div className={bodyCls} id={`${cssClasses.DIALOG}-body`} style={bodyStyle}>{children}</div> :
221
+ (
222
+ <div className={`${cssClasses.DIALOG}-body-wrapper`}>
223
+ {icon}
224
+ <div className={bodyCls} style={bodyStyle}>{children}</div>
225
+ {closer}
227
226
  </div>
228
- {closer}
229
- </div>
230
- );
227
+ );
228
+
231
229
  };
232
230
 
233
231
  getDialogElement = () => {
@@ -250,11 +248,7 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
250
248
  }
251
249
  const body = this.renderBody();
252
250
  const header = this.renderHeader();
253
- const footer = props.footer ? (
254
- <div className={`${cssClasses.DIALOG}-footer`} x-semi-prop="footer">
255
- {props.footer}
256
- </div>
257
- ) : null;
251
+ const footer = props.footer ? <div className={`${cssClasses.DIALOG}-footer`}>{props.footer}</div> : null;
258
252
  const dialogElement = (
259
253
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions
260
254
  <div
@@ -267,6 +261,7 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
267
261
  <div
268
262
  role="dialog"
269
263
  ref={this.modalDialogRef}
264
+ tabIndex={-1}
270
265
  aria-modal="true"
271
266
  aria-labelledby={`${cssClasses.DIALOG}-title`}
272
267
  aria-describedby={`${cssClasses.DIALOG}-body`}
@@ -316,7 +311,6 @@ export default class ModalContent extends BaseComponent<ModalContentReactProps,
316
311
  </div>
317
312
  );
318
313
 
319
- // @ts-ignore Unreachable branch
320
314
  // eslint-disable-next-line max-len
321
315
  return containerContext && containerContext.Provider ?
322
316
  <containerContext.Provider value={containerContext.value}>{elem}</containerContext.Provider> : elem;
@@ -106,7 +106,7 @@ class Notice extends BaseComponent<NoticeReactProps, NoticeState> {
106
106
  }
107
107
  if (iconType) {
108
108
  return (
109
- <div className={iconCls} x-semi-prop="icon">
109
+ <div className={iconCls}>
110
110
  {isSemiIcon(iconType) ? React.cloneElement(iconType, { size: iconType.props.size || 'large' }) : iconType}
111
111
  </div>
112
112
  );
@@ -170,26 +170,14 @@ class Notice extends BaseComponent<NoticeReactProps, NoticeState> {
170
170
  <div>{this.renderTypeIcon()}</div>
171
171
  <div className={`${prefixCls}-inner`}>
172
172
  <div className={`${prefixCls}-content-wrapper`}>
173
- {title ? (
174
- <div id={titleID} className={`${prefixCls}-title`} x-semi-prop="title">
175
- {title}
176
- </div>
177
- ) : (
178
- ''
179
- )}
180
- {content ? (
181
- <div className={`${prefixCls}-content`} x-semi-prop="content">
182
- {content}
183
- </div>
184
- ) : (
185
- ''
186
- )}
173
+ {title ? <div id={titleID} className={`${prefixCls}-title`}>{title}</div> : ''}
174
+ {content ? <div className={`${prefixCls}-content`}>{content}</div> : ''}
187
175
  </div>
188
176
  {showClose && (
189
177
  <Button
190
178
  className={`${prefixCls}-icon-close`}
191
179
  type="tertiary"
192
- icon={<IconClose />}
180
+ icon={<IconClose/>}
193
181
  theme="borderless"
194
182
  size="small"
195
183
  onClick={this.close}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-ui",
3
- "version": "2.12.0-alpha.0",
3
+ "version": "2.12.0-beta.2",
4
4
  "description": "",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es/index.js",
@@ -14,12 +14,12 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@babel/runtime-corejs3": "^7.15.4",
17
- "@douyinfe/semi-animation": "^2.12.0-alpha.0",
18
- "@douyinfe/semi-animation-react": "^2.12.0-alpha.0",
19
- "@douyinfe/semi-foundation": "^2.12.0-alpha.0",
20
- "@douyinfe/semi-icons": "^2.12.0-alpha.0",
21
- "@douyinfe/semi-illustrations": "^2.12.0-alpha.0",
22
- "@douyinfe/semi-theme-default": "^2.12.0-alpha.0",
17
+ "@douyinfe/semi-animation": "2.12.0-beta.2",
18
+ "@douyinfe/semi-animation-react": "2.12.0-beta.2",
19
+ "@douyinfe/semi-foundation": "2.12.0-beta.2",
20
+ "@douyinfe/semi-icons": "2.12.0-beta.2",
21
+ "@douyinfe/semi-illustrations": "2.12.0-beta.2",
22
+ "@douyinfe/semi-theme-default": "2.12.0-beta.2",
23
23
  "@types/react-window": "^1.8.2",
24
24
  "async-validator": "^3.5.0",
25
25
  "classnames": "^2.2.6",
@@ -69,13 +69,13 @@
69
69
  ],
70
70
  "author": "",
71
71
  "license": "MIT",
72
- "gitHead": "2a4f34115b9dd03fc3c40b1edcc421bf64a3024b",
72
+ "gitHead": "d594b54331194b982f24ef179147622642073c3d",
73
73
  "devDependencies": {
74
74
  "@babel/plugin-proposal-decorators": "^7.15.8",
75
75
  "@babel/plugin-transform-runtime": "^7.15.8",
76
76
  "@babel/preset-env": "^7.15.8",
77
77
  "@babel/preset-react": "^7.14.5",
78
- "@douyinfe/semi-scss-compile": "^2.12.0-alpha.0",
78
+ "@douyinfe/semi-scss-compile": "2.12.0-beta.2",
79
79
  "@storybook/addon-knobs": "^6.3.1",
80
80
  "@types/lodash": "^4.14.176",
81
81
  "babel-loader": "^8.2.2",
@@ -216,14 +216,7 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
216
216
  [`${prefixCls}-item-disabled`]: prevDisabled,
217
217
  });
218
218
  return (
219
- <li
220
- role="button"
221
- aria-disabled={prevDisabled ? true : false}
222
- aria-label="Previous"
223
- onClick={e => !prevDisabled && this.foundation.goPrev(e)}
224
- className={preClassName}
225
- x-semi-prop="prevText"
226
- >
219
+ <li role="button" aria-disabled={prevDisabled ? true : false} aria-label="Previous" onClick={e => !prevDisabled && this.foundation.goPrev(e)} className={preClassName}>
227
220
  {prevText || <IconChevronLeft size="large" />}
228
221
  </li>
229
222
  );
@@ -238,14 +231,7 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
238
231
  [`${prefixCls}-next`]: true,
239
232
  });
240
233
  return (
241
- <li
242
- role="button"
243
- aria-disabled={nextDisabled ? true : false}
244
- aria-label="Next"
245
- onClick={e => !nextDisabled && this.foundation.goNext(e)}
246
- className={nextClassName}
247
- x-semi-prop="prevText"
248
- >
234
+ <li role="button" aria-disabled={nextDisabled ? true : false} aria-label="Next" onClick={e => !nextDisabled && this.foundation.goNext(e)} className={nextClassName}>
249
235
  {nextText || <IconChevronRight size="large" />}
250
236
  </li>
251
237
  );
@@ -174,20 +174,12 @@ export default class Popconfirm extends BaseComponent<PopconfirmProps, Popconfir
174
174
  <div className={popCardCls} onClick={this.stopImmediatePropagation} style={style}>
175
175
  <div className={`${prefixCls}-inner`}>
176
176
  <div className={`${prefixCls}-header`}>
177
- <i className={`${prefixCls}-header-icon`} x-semi-prop="icon">
177
+ <i className={`${prefixCls}-header-icon`}>
178
178
  {React.isValidElement(icon) ? icon : null}
179
179
  </i>
180
180
  <div className={`${prefixCls}-header-body`}>
181
- {showTitle ? (
182
- <div className={`${prefixCls}-header-title`} x-semi-prop="title">
183
- {title}
184
- </div>
185
- ) : null}
186
- {showContent ? (
187
- <div className={`${prefixCls}-header-content`} x-semi-prop="content">
188
- {content}
189
- </div>
190
- ) : null}
181
+ {showTitle ? <div className={`${prefixCls}-header-title`}>{title}</div> : null}
182
+ {showContent ? <div className={`${prefixCls}-header-content`}>{content}</div> : null}
191
183
  </div>
192
184
  <Button
193
185
  className={`${prefixCls}-btn-close`}
@@ -239,7 +239,7 @@ class Progress extends Component<ProgressProps, ProgressState> {
239
239
  const percNumber = this.calcPercent(percentNumber);
240
240
 
241
241
  const innerStyle: Record<string, any> = {
242
- backgroundColor: stroke
242
+ background: stroke
243
243
  };
244
244
  if (direction === strings.DEFAULT_DIRECTION) {
245
245
  innerStyle.width = `${perc}%`;
package/radio/radio.tsx CHANGED
@@ -228,16 +228,8 @@ class Radio extends BaseComponent<RadioProps, RadioState> {
228
228
  }, addonClassName);
229
229
  const renderContent = () => (
230
230
  <>
231
- {children ? (
232
- <span className={addonCls} style={addonStyle} id={this.addonId} x-semi-prop="children">
233
- {children}
234
- </span>
235
- ) : null}
236
- {extra && !isButtonRadio ? (
237
- <div className={`${prefix}-extra`} id={this.extraId} x-semi-prop="extra">
238
- {extra}
239
- </div>
240
- ) : null}
231
+ {children ? <span className={addonCls} style={addonStyle} id={addonId}>{children}</span> : null}
232
+ {extra && !isButtonRadio ? <div className={`${prefix}-extra`} id={extraId}>{extra}</div> : null}
241
233
  </>
242
234
  );
243
235
  return (
package/rating/item.tsx CHANGED
@@ -110,7 +110,7 @@ export default class Item extends PureComponent<RatingItemProps> {
110
110
  className={`${prefixCls}-wrapper`}
111
111
  >
112
112
  <div className={`${prefixCls}-first`} style={{ width: `${firstWidth * 100}%` }}>{content}</div>
113
- <div className={`${prefixCls}-second`} x-semi-prop="character">{content}</div>
113
+ <div className={`${prefixCls}-second`}>{content}</div>
114
114
  </div>
115
115
  </li>
116
116
  );
@@ -49,30 +49,14 @@ class ScrollList extends BaseComponent<ScrollListProps, {}> {
49
49
  <div className={clsWrapper} style={style}>
50
50
  {header ? (
51
51
  <div className={clsHeader}>
52
- <div
53
- className={`${clsHeader}-title`}
54
- x-semi-prop={this.props['x-semi-header-alias'] || "header"}
55
- >
56
- {header}
57
- </div>
52
+ <div className={`${clsHeader}-title`}>{header}</div>
58
53
  <div className={`${clsWrapper}-line`} />
59
54
  </div>
60
55
  ) : null}
61
- <div
62
- className={`${clsWrapper}-body`}
63
- style={{ height: bodyHeight ? bodyHeight : '' }}
64
- x-semi-prop="children"
65
- >
56
+ <div className={`${clsWrapper}-body`} style={{ height: bodyHeight ? bodyHeight : '' }}>
66
57
  {children}
67
58
  </div>
68
- {footer ? (
69
- <div
70
- className={`${clsWrapper}-footer`}
71
- x-semi-prop={this.props['x-semi-footer-alias'] || "footer"}
72
- >
73
- {footer}
74
- </div>
75
- ) : null}
59
+ {footer ? <div className={`${clsWrapper}-footer`}>{footer}</div> : null}
76
60
  </div>
77
61
  );
78
62
  }
package/select/index.tsx CHANGED
@@ -878,11 +878,7 @@ class Select extends BaseComponent<SelectProps, SelectState> {
878
878
  return (
879
879
  <>
880
880
  <div className={contentWrapperCls}>
881
- {
882
- <span className={spanCls} x-semi-prop="placeholder">
883
- {renderText || renderText === 0 ? renderText : placeholder}
884
- </span>
885
- }
881
+ {<span className={spanCls}>{renderText || renderText === 0 ? renderText : placeholder}</span>}
886
882
  {filterable && showInput ? this.renderInput() : null}
887
883
  </div>
888
884
  </>
@@ -1010,7 +1006,7 @@ class Select extends BaseComponent<SelectProps, SelectState> {
1010
1006
  [`${prefixcls}-suffix-text`]: suffix && isString(suffix),
1011
1007
  [`${prefixcls}-suffix-icon`]: isSemiIcon(suffix),
1012
1008
  });
1013
- return <div className={suffixWrapperCls} x-semi-prop="suffix">{suffix}</div>;
1009
+ return <div className={suffixWrapperCls}>{suffix}</div>;
1014
1010
  }
1015
1011
 
1016
1012
  renderPrefix() {
@@ -1024,11 +1020,7 @@ class Select extends BaseComponent<SelectProps, SelectState> {
1024
1020
  [`${prefixcls}-prefix-icon`]: isSemiIcon(labelNode),
1025
1021
  });
1026
1022
 
1027
- return (
1028
- <div className={prefixWrapperCls} id={insetLabelId} x-semi-prop="prefix,insetLabel">
1029
- {labelNode}
1030
- </div>
1031
- );
1023
+ return <div className={prefixWrapperCls} id={insetLabelId}>{labelNode}</div>;
1032
1024
  }
1033
1025
 
1034
1026
  renderSelection() {
@@ -1075,7 +1067,7 @@ class Select extends BaseComponent<SelectProps, SelectState> {
1075
1067
  (selections.size || inputValue) && !disabled && (isHovering || isOpen);
1076
1068
 
1077
1069
  const arrowContent = showArrow ? (
1078
- <div className={`${prefixcls}-arrow`} x-semi-prop="arrowIcon">
1070
+ <div className={`${prefixcls}-arrow`}>
1079
1071
  {arrowIcon}
1080
1072
  </div>
1081
1073
  ) : (
package/select/option.tsx CHANGED
@@ -105,11 +105,7 @@ class Option extends PureComponent<OptionProps> {
105
105
  }
106
106
  return (
107
107
  <LocaleConsumer<Locale['Select']> componentName="Select">
108
- {(locale: Locale['Select']) => (
109
- <div className={optionClassName} x-semi-prop="emptyContent">
110
- {emptyContent || locale.emptyText}
111
- </div>
112
- )}
108
+ {(locale: Locale['Select']) => <div className={optionClassName}>{emptyContent || locale.emptyText}</div>}
113
109
  </LocaleConsumer>
114
110
  );
115
111
  }
@@ -88,7 +88,7 @@ export default class SideSheetContent extends React.PureComponent<SideSheetConte
88
88
  let header, closer;
89
89
  if (title) {
90
90
  header = (
91
- <div className={`${prefixCls}-title`} x-semi-prop="title">
91
+ <div className={`${prefixCls}-title`}>
92
92
  {this.props.title}
93
93
  </div>
94
94
  );
@@ -140,11 +140,11 @@ export default class SideSheetContent extends React.PureComponent<SideSheetConte
140
140
  >
141
141
  <div className={`${prefixCls}-content`}>
142
142
  {header}
143
- <div className={`${prefixCls}-body`} style={props.bodyStyle} x-semi-prop="children">
143
+ <div className={`${prefixCls}-body`} style={props.bodyStyle}>
144
144
  {props.children}
145
145
  </div>
146
146
  {props.footer ? (
147
- <div className={`${prefixCls}-footer`} x-semi-prop="footer">
147
+ <div className={`${prefixCls}-footer`}>
148
148
  {props.footer}
149
149
  </div>
150
150
  ) : null}
@@ -48,7 +48,7 @@ class Skeleton extends PureComponent<SkeletonProps> {
48
48
  let content;
49
49
  if (loading) {
50
50
  content = (
51
- <div className={skCls} style={style} {...others} x-semi-prop="placeholder">
51
+ <div className={skCls} style={style} {...others}>
52
52
  {placeholder}
53
53
  </div>
54
54
  );
package/space/index.tsx CHANGED
@@ -85,7 +85,7 @@ class Space extends PureComponent<SpaceProps> {
85
85
  });
86
86
  const childrenNodes = flatten(children);
87
87
  return (
88
- <div className={classNames} style={realStyle} x-semi-prop="children">
88
+ <div className={classNames} style={realStyle}>
89
89
  {childrenNodes}
90
90
  </div>
91
91
  );
package/spin/index.tsx CHANGED
@@ -95,18 +95,14 @@ class Spin extends BaseComponent<SpinProps, SpinState> {
95
95
  [`${prefixCls}-animate`]: loading,
96
96
  });
97
97
 
98
- return loading ? (
99
- <div className={`${prefixCls}-wrapper`}>
100
- {indicator ? (
101
- <div className={spinIconCls} x-semi-prop="indicator">
102
- {indicator}
103
- </div>
104
- ) : (
105
- <SpinIcon />
106
- )}
107
- {tip ? <div x-semi-prop="tip">{tip}</div> : null}
108
- </div>
109
- ) : null;
98
+ return (
99
+ loading ? (
100
+ <div className={`${prefixCls}-wrapper`}>
101
+ {indicator ? <div className={spinIconCls}>{indicator}</div> : <SpinIcon />}
102
+ {tip ? <div>{tip}</div> : null}
103
+ </div>
104
+ ) : null
105
+ );
110
106
  }
111
107
 
112
108
  render() {
@@ -126,9 +122,7 @@ class Spin extends BaseComponent<SpinProps, SpinState> {
126
122
  return (
127
123
  <div className={spinCls} style={style}>
128
124
  {this.renderSpin()}
129
- <div className={`${prefixCls}-children`} style={childStyle} x-semi-prop="children">
130
- {children}
131
- </div>
125
+ <div className={`${prefixCls}-children`} style={childStyle}>{children}</div>
132
126
  </div>
133
127
  );
134
128
  }
package/switch/index.tsx CHANGED
@@ -146,18 +146,23 @@ class Switch extends BaseComponent<SwitchProps, SwitchState> {
146
146
  const showUncheckedText = uncheckedText && !nativeControlChecked && size !== 'small';
147
147
  return (
148
148
  <div className={wrapperCls} style={style} onMouseEnter={onMouseEnter} onMouseLeave={onMouseLeave}>
149
- {loading ? (
150
- <Spin wrapperClassName={cssClasses.LOADING_SPIN} size={size === 'default' ? 'middle' : size} />
151
- ) : (
152
- <div className={cssClasses.KNOB} aria-hidden={true} />
153
- )}
149
+ {
150
+ loading
151
+ ? (
152
+ <Spin
153
+ wrapperClassName={cssClasses.LOADING_SPIN}
154
+ size={size === 'default' ? 'middle' : size}
155
+ />
156
+ )
157
+ : <div className={cssClasses.KNOB} aria-hidden={true} />
158
+ }
154
159
  {showCheckedText ? (
155
- <div className={cssClasses.CHECKED_TEXT} x-semi-prop="checkedText">
160
+ <div className={cssClasses.CHECKED_TEXT}>
156
161
  {checkedText}
157
162
  </div>
158
163
  ) : null}
159
164
  {showUncheckedText ? (
160
- <div className={cssClasses.UNCHECKED_TEXT} x-semi-prop="uncheckedText">
165
+ <div className={cssClasses.UNCHECKED_TEXT}>
161
166
  {uncheckedText}
162
167
  </div>
163
168
  ) : null}
@@ -165,13 +170,13 @@ class Switch extends BaseComponent<SwitchProps, SwitchState> {
165
170
  {...switchProps}
166
171
  ref={this.switchRef}
167
172
  id={id}
168
- role="switch"
173
+ role='switch'
169
174
  aria-checked={nativeControlChecked}
170
175
  aria-invalid={this.props['aria-invalid']}
171
176
  aria-errormessage={this.props['aria-errormessage']}
172
177
  aria-label={this.props['aria-label']}
173
178
  aria-labelledby={this.props['aria-labelledby']}
174
- aria-describedby={this.props['aria-describedby']}
179
+ aria-describedby={this.props["aria-describedby"]}
175
180
  aria-disabled={this.props['disabled']}
176
181
  onChange={e => this.foundation.handleChange(e.target.checked, e)}
177
182
  onFocus={e => this.handleFocusVisible(e)}
package/table/Table.tsx CHANGED
@@ -1015,7 +1015,7 @@ class Table<RecordType extends Record<string, any>> extends BaseComponent<Normal
1015
1015
  }
1016
1016
 
1017
1017
  return isValidElement(title) || typeof title === 'string' ? (
1018
- <div className={`${prefixCls}-title`} x-semi-prop="title">{title}</div>
1018
+ <div className={`${prefixCls}-title`}>{title}</div>
1019
1019
  ) : null;
1020
1020
  };
1021
1021
 
@@ -1032,9 +1032,7 @@ class Table<RecordType extends Record<string, any>> extends BaseComponent<Normal
1032
1032
  <LocaleConsumer componentName="Table" key={'emptyText'}>
1033
1033
  {(locale: TableLocale, localeCode: string) => (
1034
1034
  <div className={wrapCls}>
1035
- <div className={`${prefixCls}-empty`} x-semi-prop="empty">
1036
- {empty || locale.emptyText}
1037
- </div>
1035
+ <div className={`${prefixCls}-empty`}>{empty || locale.emptyText}</div>
1038
1036
  </div>
1039
1037
  )}
1040
1038
  </LocaleConsumer>
@@ -1050,7 +1048,7 @@ class Table<RecordType extends Record<string, any>> extends BaseComponent<Normal
1050
1048
  }
1051
1049
 
1052
1050
  return isValidElement(footer) || typeof footer === 'string' ? (
1053
- <div className={`${prefixCls}-footer`} key="footer" x-semi-prop="footer">
1051
+ <div className={`${prefixCls}-footer`} key="footer">
1054
1052
  {footer}
1055
1053
  </div>
1056
1054
  ) : null;
package/tabs/TabBar.tsx CHANGED
@@ -70,7 +70,7 @@ class TabBar extends React.Component<TabBarProps, TabBarState> {
70
70
  if (tabBarExtraContent) {
71
71
  const tabBarStyle = { ...tabBarExtraContentDefaultStyle, ...tabBarExtraContentStyle };
72
72
  return (
73
- <div className={extraCls} style={tabBarStyle} x-semi-prop="tabBarExtraContent">
73
+ <div className={extraCls} style={tabBarStyle}>
74
74
  {tabBarExtraContent}
75
75
  </div>
76
76
  );
package/tabs/TabPane.tsx CHANGED
@@ -98,7 +98,6 @@ class TabPane extends PureComponent<TabPaneProps> {
98
98
  aria-hidden={active ? 'false' : 'true'}
99
99
  tabIndex={0}
100
100
  {...getDataAttr(restProps)}
101
- x-semi-prop="children"
102
101
  >
103
102
  {motion ? (
104
103
  <TabPaneTransition
@@ -108,18 +107,14 @@ class TabPane extends PureComponent<TabPaneProps> {
108
107
  state={active ? 'enter' : 'leave'}
109
108
  >
110
109
  {(transitionStyle): ReactNode => (
111
- <div
112
- className={`${cssClasses.TABS_PANE_MOTION_OVERLAY}`}
113
- style={{ ...transitionStyle }}
114
- x-semi-prop="children"
115
- >
110
+ <div className={`${cssClasses.TABS_PANE_MOTION_OVERLAY}`} style={{ ...transitionStyle }}>
116
111
  {shouldRender ? children : null}
117
112
  </div>
118
113
  )}
119
114
  </TabPaneTransition>
120
- ) : shouldRender ? (
121
- children
122
- ) : null}
115
+ ) : (
116
+ shouldRender ? children : null
117
+ )}
123
118
  </div>
124
119
  );
125
120
  }