@douyinfe/semi-ui 2.11.0 → 2.12.0-alpha.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 (210) hide show
  1. package/README.md +1 -1
  2. package/avatar/index.tsx +2 -2
  3. package/backtop/index.tsx +11 -7
  4. package/badge/index.tsx +1 -1
  5. package/banner/index.tsx +5 -5
  6. package/breadcrumb/index.tsx +5 -3
  7. package/button/Button.tsx +10 -8
  8. package/card/index.tsx +43 -41
  9. package/carousel/CarouselArrow.tsx +2 -0
  10. package/carousel/index.tsx +1 -0
  11. package/cascader/index.tsx +101 -123
  12. package/cascader/item.tsx +1 -1
  13. package/checkbox/checkbox.tsx +13 -2
  14. package/collapsible/index.tsx +8 -1
  15. package/datePicker/dateInput.tsx +1 -0
  16. package/datePicker/datePicker.tsx +13 -5
  17. package/dist/css/semi.css +33 -0
  18. package/dist/css/semi.min.css +1 -1
  19. package/dist/umd/semi-ui.js +694 -384
  20. package/dist/umd/semi-ui.js.map +1 -1
  21. package/dist/umd/semi-ui.min.js +1 -1
  22. package/dist/umd/semi-ui.min.js.map +1 -1
  23. package/divider/index.tsx +8 -4
  24. package/dropdown/index.tsx +1 -1
  25. package/empty/index.tsx +13 -5
  26. package/form/_story/FormSubmit/index.tsx +45 -0
  27. package/form/_story/form.stories.js +2 -1
  28. package/form/hoc/withField.tsx +1 -1
  29. package/form/label.tsx +1 -1
  30. package/grid/col.tsx +1 -1
  31. package/grid/row.tsx +1 -1
  32. package/iconButton/index.tsx +2 -1
  33. package/input/index.tsx +38 -11
  34. package/lib/cjs/avatar/index.js +4 -2
  35. package/lib/cjs/backtop/index.js +2 -1
  36. package/lib/cjs/badge/index.js +2 -1
  37. package/lib/cjs/banner/index.js +9 -4
  38. package/lib/cjs/breadcrumb/index.js +4 -3
  39. package/lib/cjs/button/Button.js +13 -3
  40. package/lib/cjs/card/index.js +10 -5
  41. package/lib/cjs/carousel/CarouselArrow.js +6 -2
  42. package/lib/cjs/carousel/index.js +2 -1
  43. package/lib/cjs/cascader/index.js +9 -6
  44. package/lib/cjs/cascader/item.js +2 -1
  45. package/lib/cjs/checkbox/checkbox.js +8 -4
  46. package/lib/cjs/collapsible/index.js +2 -1
  47. package/lib/cjs/datePicker/dateInput.d.ts +1 -1
  48. package/lib/cjs/datePicker/dateInput.js +2 -1
  49. package/lib/cjs/datePicker/datePicker.d.ts +1 -1
  50. package/lib/cjs/datePicker/datePicker.js +4 -2
  51. package/lib/cjs/datePicker/monthsGrid.d.ts +2 -2
  52. package/lib/cjs/divider/index.js +2 -1
  53. package/lib/cjs/dropdown/index.js +2 -1
  54. package/lib/cjs/empty/index.js +8 -4
  55. package/lib/cjs/form/baseForm.d.ts +1 -1
  56. package/lib/cjs/form/field.d.ts +1 -1
  57. package/lib/cjs/form/hoc/withField.js +2 -1
  58. package/lib/cjs/form/label.js +2 -1
  59. package/lib/cjs/grid/col.js +2 -1
  60. package/lib/cjs/grid/row.js +2 -1
  61. package/lib/cjs/iconButton/index.js +3 -1
  62. package/lib/cjs/input/index.js +9 -5
  63. package/lib/cjs/list/index.js +6 -3
  64. package/lib/cjs/modal/ConfirmModal.js +2 -1
  65. package/lib/cjs/modal/Modal.js +6 -2
  66. package/lib/cjs/modal/ModalContent.js +13 -6
  67. package/lib/cjs/navigation/Item.d.ts +1 -1
  68. package/lib/cjs/notification/notice.js +6 -3
  69. package/lib/cjs/pagination/index.js +4 -2
  70. package/lib/cjs/popconfirm/index.js +6 -3
  71. package/lib/cjs/radio/radio.d.ts +1 -1
  72. package/lib/cjs/radio/radio.js +4 -2
  73. package/lib/cjs/radio/radioGroup.d.ts +1 -1
  74. package/lib/cjs/rating/item.js +2 -1
  75. package/lib/cjs/scrollList/index.js +6 -3
  76. package/lib/cjs/select/index.js +9 -5
  77. package/lib/cjs/select/option.js +2 -1
  78. package/lib/cjs/sideSheet/SideSheetContent.js +6 -3
  79. package/lib/cjs/skeleton/index.js +3 -1
  80. package/lib/cjs/slider/index.js +9 -5
  81. package/lib/cjs/space/index.js +2 -1
  82. package/lib/cjs/spin/index.js +7 -3
  83. package/lib/cjs/switch/index.js +6 -4
  84. package/lib/cjs/table/Table.d.ts +1 -1
  85. package/lib/cjs/table/Table.js +6 -3
  86. package/lib/cjs/tabs/TabBar.d.ts +1 -0
  87. package/lib/cjs/tabs/TabBar.js +10 -2
  88. package/lib/cjs/tabs/TabPane.js +7 -3
  89. package/lib/cjs/tabs/index.js +2 -1
  90. package/lib/cjs/tabs/interface.d.ts +1 -0
  91. package/lib/cjs/tag/index.d.ts +2 -0
  92. package/lib/cjs/tag/index.js +60 -11
  93. package/lib/cjs/tag/interface.d.ts +1 -0
  94. package/lib/cjs/tagInput/index.js +7 -4
  95. package/lib/cjs/timePicker/Combobox.js +3 -1
  96. package/lib/cjs/toast/toast.js +6 -3
  97. package/lib/cjs/transfer/index.js +2 -1
  98. package/lib/cjs/tree/treeNode.js +2 -1
  99. package/lib/cjs/treeSelect/index.js +9 -6
  100. package/lib/cjs/typography/base.js +2 -1
  101. package/lib/cjs/typography/title.d.ts +1 -1
  102. package/lib/cjs/upload/index.d.ts +1 -1
  103. package/lib/cjs/upload/index.js +13 -6
  104. package/lib/es/avatar/index.js +4 -2
  105. package/lib/es/backtop/index.js +2 -1
  106. package/lib/es/badge/index.js +2 -1
  107. package/lib/es/banner/index.js +9 -4
  108. package/lib/es/breadcrumb/index.js +4 -3
  109. package/lib/es/button/Button.js +11 -3
  110. package/lib/es/card/index.js +10 -5
  111. package/lib/es/carousel/CarouselArrow.js +6 -2
  112. package/lib/es/carousel/index.js +2 -1
  113. package/lib/es/cascader/index.js +9 -6
  114. package/lib/es/cascader/item.js +2 -1
  115. package/lib/es/checkbox/checkbox.js +8 -4
  116. package/lib/es/collapsible/index.js +2 -1
  117. package/lib/es/datePicker/dateInput.d.ts +1 -1
  118. package/lib/es/datePicker/dateInput.js +2 -1
  119. package/lib/es/datePicker/datePicker.d.ts +1 -1
  120. package/lib/es/datePicker/datePicker.js +4 -2
  121. package/lib/es/datePicker/monthsGrid.d.ts +2 -2
  122. package/lib/es/divider/index.js +2 -1
  123. package/lib/es/dropdown/index.js +2 -1
  124. package/lib/es/empty/index.js +8 -4
  125. package/lib/es/form/baseForm.d.ts +1 -1
  126. package/lib/es/form/field.d.ts +1 -1
  127. package/lib/es/form/hoc/withField.js +2 -1
  128. package/lib/es/form/label.js +2 -1
  129. package/lib/es/grid/col.js +2 -1
  130. package/lib/es/grid/row.js +2 -1
  131. package/lib/es/iconButton/index.js +3 -1
  132. package/lib/es/input/index.js +9 -5
  133. package/lib/es/list/index.js +6 -3
  134. package/lib/es/modal/ConfirmModal.js +2 -1
  135. package/lib/es/modal/Modal.js +6 -2
  136. package/lib/es/modal/ModalContent.js +13 -6
  137. package/lib/es/navigation/Item.d.ts +1 -1
  138. package/lib/es/notification/notice.js +6 -3
  139. package/lib/es/pagination/index.js +4 -2
  140. package/lib/es/popconfirm/index.js +6 -3
  141. package/lib/es/radio/radio.d.ts +1 -1
  142. package/lib/es/radio/radio.js +4 -2
  143. package/lib/es/radio/radioGroup.d.ts +1 -1
  144. package/lib/es/rating/item.js +2 -1
  145. package/lib/es/scrollList/index.js +6 -3
  146. package/lib/es/select/index.js +9 -5
  147. package/lib/es/select/option.js +2 -1
  148. package/lib/es/sideSheet/SideSheetContent.js +6 -3
  149. package/lib/es/skeleton/index.js +3 -1
  150. package/lib/es/slider/index.js +9 -5
  151. package/lib/es/space/index.js +2 -1
  152. package/lib/es/spin/index.js +7 -3
  153. package/lib/es/switch/index.js +6 -4
  154. package/lib/es/table/Table.d.ts +1 -1
  155. package/lib/es/table/Table.js +6 -3
  156. package/lib/es/tabs/TabBar.d.ts +1 -0
  157. package/lib/es/tabs/TabBar.js +10 -2
  158. package/lib/es/tabs/TabPane.js +7 -3
  159. package/lib/es/tabs/index.js +2 -1
  160. package/lib/es/tabs/interface.d.ts +1 -0
  161. package/lib/es/tag/index.d.ts +2 -0
  162. package/lib/es/tag/index.js +56 -9
  163. package/lib/es/tag/interface.d.ts +1 -0
  164. package/lib/es/tagInput/index.js +7 -4
  165. package/lib/es/timePicker/Combobox.js +3 -1
  166. package/lib/es/toast/toast.js +6 -3
  167. package/lib/es/transfer/index.js +2 -1
  168. package/lib/es/tree/treeNode.js +2 -1
  169. package/lib/es/treeSelect/index.js +8 -5
  170. package/lib/es/typography/base.js +2 -1
  171. package/lib/es/typography/title.d.ts +1 -1
  172. package/lib/es/upload/index.d.ts +1 -1
  173. package/lib/es/upload/index.js +13 -6
  174. package/list/index.tsx +16 -4
  175. package/modal/ConfirmModal.tsx +1 -1
  176. package/modal/Modal.tsx +2 -0
  177. package/modal/ModalContent.tsx +33 -21
  178. package/navigation/Item.tsx +1 -1
  179. package/notification/notice.tsx +16 -4
  180. package/package.json +9 -9
  181. package/pagination/index.tsx +16 -2
  182. package/popconfirm/index.tsx +11 -3
  183. package/radio/radio.tsx +10 -2
  184. package/rating/item.tsx +1 -1
  185. package/scrollList/index.tsx +19 -3
  186. package/select/index.tsx +13 -6
  187. package/select/option.tsx +5 -1
  188. package/sideSheet/SideSheetContent.tsx +3 -3
  189. package/skeleton/index.tsx +1 -1
  190. package/slider/index.tsx +5 -3
  191. package/space/index.tsx +1 -1
  192. package/spin/index.tsx +15 -9
  193. package/switch/index.tsx +9 -14
  194. package/table/Table.tsx +5 -3
  195. package/table/_story/v2/index.js +2 -1
  196. package/table/_story/v2/radioRowSelection.tsx +107 -0
  197. package/tabs/TabBar.tsx +8 -1
  198. package/tabs/TabPane.tsx +10 -4
  199. package/tabs/index.tsx +2 -1
  200. package/tabs/interface.ts +1 -0
  201. package/tag/index.tsx +32 -2
  202. package/tag/interface.ts +1 -0
  203. package/tagInput/index.tsx +3 -2
  204. package/timePicker/Combobox.tsx +6 -1
  205. package/toast/toast.tsx +3 -3
  206. package/transfer/index.tsx +1 -0
  207. package/tree/treeNode.tsx +1 -1
  208. package/treeSelect/index.tsx +16 -4
  209. package/typography/base.tsx +1 -1
  210. package/upload/index.tsx +107 -38
@@ -95,7 +95,8 @@ class Space extends _react.PureComponent {
95
95
  const childrenNodes = (0, _utils.flatten)(children);
96
96
  return /*#__PURE__*/_react.default.createElement("div", {
97
97
  className: classNames,
98
- style: realStyle
98
+ style: realStyle,
99
+ "x-semi-prop": "children"
99
100
  }, childrenNodes);
100
101
  }
101
102
 
@@ -89,8 +89,11 @@ class Spin extends _baseComponent.default {
89
89
  return loading ? /*#__PURE__*/_react.default.createElement("div", {
90
90
  className: "".concat(prefixCls, "-wrapper")
91
91
  }, indicator ? /*#__PURE__*/_react.default.createElement("div", {
92
- className: spinIconCls
93
- }, indicator) : /*#__PURE__*/_react.default.createElement(_icon.default, null), tip ? /*#__PURE__*/_react.default.createElement("div", null, tip) : null) : null;
92
+ className: spinIconCls,
93
+ "x-semi-prop": "indicator"
94
+ }, indicator) : /*#__PURE__*/_react.default.createElement(_icon.default, null), tip ? /*#__PURE__*/_react.default.createElement("div", {
95
+ "x-semi-prop": "tip"
96
+ }, tip) : null) : null;
94
97
  }
95
98
 
96
99
  render() {
@@ -117,7 +120,8 @@ class Spin extends _baseComponent.default {
117
120
  style: style
118
121
  }, this.renderSpin(), /*#__PURE__*/_react.default.createElement("div", {
119
122
  className: "".concat(prefixCls, "-children"),
120
- style: childStyle
123
+ style: childStyle,
124
+ "x-semi-prop": "children"
121
125
  }, children));
122
126
  }
123
127
 
@@ -139,19 +139,21 @@ class Switch extends _baseComponent.default {
139
139
  className: _constants.cssClasses.KNOB,
140
140
  "aria-hidden": true
141
141
  }), showCheckedText ? /*#__PURE__*/_react.default.createElement("div", {
142
- className: _constants.cssClasses.CHECKED_TEXT
142
+ className: _constants.cssClasses.CHECKED_TEXT,
143
+ "x-semi-prop": "checkedText"
143
144
  }, checkedText) : null, showUncheckedText ? /*#__PURE__*/_react.default.createElement("div", {
144
- className: _constants.cssClasses.UNCHECKED_TEXT
145
+ className: _constants.cssClasses.UNCHECKED_TEXT,
146
+ "x-semi-prop": "uncheckedText"
145
147
  }, uncheckedText) : null, /*#__PURE__*/_react.default.createElement("input", (0, _assign.default)({}, switchProps, {
146
148
  ref: this.switchRef,
147
149
  id: id,
148
- role: 'switch',
150
+ role: "switch",
149
151
  "aria-checked": nativeControlChecked,
150
152
  "aria-invalid": this.props['aria-invalid'],
151
153
  "aria-errormessage": this.props['aria-errormessage'],
152
154
  "aria-label": this.props['aria-label'],
153
155
  "aria-labelledby": this.props['aria-labelledby'],
154
- "aria-describedby": this.props["aria-describedby"],
156
+ "aria-describedby": this.props['aria-describedby'],
155
157
  "aria-disabled": this.props['disabled'],
156
158
  onChange: e => this.foundation.handleChange(e.target.checked, e),
157
159
  onFocus: e => this.handleFocusVisible(e),
@@ -280,7 +280,7 @@ declare class Table<RecordType extends Record<string, any>> extends BaseComponen
280
280
  * Combine pagination and table paging processing functions
281
281
  */
282
282
  mergePagination: (pagination: TablePaginationProps) => {
283
- position?: "top" | "bottom" | "both";
283
+ position?: "both" | "top" | "bottom";
284
284
  formatPageText?: import("./interface").FormatPageText;
285
285
  style?: React.CSSProperties;
286
286
  className?: string;
@@ -642,7 +642,8 @@ class Table extends _baseComponent.default {
642
642
  }
643
643
 
644
644
  return /*#__PURE__*/(0, _react.isValidElement)(title) || typeof title === 'string' ? /*#__PURE__*/_react.default.createElement("div", {
645
- className: "".concat(prefixCls, "-title")
645
+ className: "".concat(prefixCls, "-title"),
646
+ "x-semi-prop": "title"
646
647
  }, title) : null;
647
648
  };
648
649
 
@@ -667,7 +668,8 @@ class Table extends _baseComponent.default {
667
668
  }, (locale, localeCode) => /*#__PURE__*/_react.default.createElement("div", {
668
669
  className: wrapCls
669
670
  }, /*#__PURE__*/_react.default.createElement("div", {
670
- className: "".concat(prefixCls, "-empty")
671
+ className: "".concat(prefixCls, "-empty"),
672
+ "x-semi-prop": "empty"
671
673
  }, empty || locale.emptyText)));
672
674
  };
673
675
 
@@ -687,7 +689,8 @@ class Table extends _baseComponent.default {
687
689
 
688
690
  return /*#__PURE__*/(0, _react.isValidElement)(footer) || typeof footer === 'string' ? /*#__PURE__*/_react.default.createElement("div", {
689
691
  className: "".concat(prefixCls, "-footer"),
690
- key: "footer"
692
+ key: "footer",
693
+ "x-semi-prop": "footer"
691
694
  }, footer) : null;
692
695
  };
693
696
 
@@ -30,6 +30,7 @@ declare class TabBar extends React.Component<TabBarProps, TabBarState> {
30
30
  renderIcon(icon: ReactNode): ReactNode;
31
31
  renderExtra(): ReactNode;
32
32
  handleItemClick: (itemKey: string, e: MouseEvent<Element>) => void;
33
+ handleKeyDown: (event: React.KeyboardEvent, itemKey: string, closable: boolean) => void;
33
34
  renderTabItem: (panel: PlainTab) => ReactNode;
34
35
  renderTabComponents: (list: Array<PlainTab>) => Array<ReactNode>;
35
36
  handleArrowClick: (items: Array<OverflowItem>, pos: 'start' | 'end') => void;
@@ -75,6 +75,10 @@ class TabBar extends _react.default.Component {
75
75
  }
76
76
  };
77
77
 
78
+ this.handleKeyDown = (event, itemKey, closable) => {
79
+ this.props.handleKeyDown(event, itemKey, closable);
80
+ };
81
+
78
82
  this.renderTabItem = panel => {
79
83
  const {
80
84
  size,
@@ -108,9 +112,12 @@ class TabBar extends _react.default.Component {
108
112
  return /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
109
113
  role: "tab",
110
114
  id: "semiTab".concat(key),
115
+ "data-tabkey": "semiTab".concat(key),
111
116
  "aria-controls": "semiTabPanel".concat(key),
112
117
  "aria-disabled": panel.disabled ? 'true' : 'false',
113
- "aria-selected": isSelected ? 'true' : 'false'
118
+ "aria-selected": isSelected ? 'true' : 'false',
119
+ tabIndex: isSelected ? 0 : -1,
120
+ onKeyDown: e => this.handleKeyDown(e, key, panel.closable)
114
121
  }, events, {
115
122
  className: className,
116
123
  key: this._getItemKey(key)
@@ -264,7 +271,8 @@ class TabBar extends _react.default.Component {
264
271
  const tabBarStyle = (0, _assign.default)((0, _assign.default)({}, tabBarExtraContentDefaultStyle), tabBarExtraContentStyle);
265
272
  return /*#__PURE__*/_react.default.createElement("div", {
266
273
  className: extraCls,
267
- style: tabBarStyle
274
+ style: tabBarStyle,
275
+ "x-semi-prop": "tabBarExtraContent"
268
276
  }, tabBarExtraContent);
269
277
  }
270
278
 
@@ -141,15 +141,19 @@ class TabPane extends _react.PureComponent {
141
141
  "aria-labelledby": "semiTab".concat(itemKey),
142
142
  className: classNames,
143
143
  style: style,
144
- "aria-hidden": active ? 'false' : 'true'
145
- }, (0, _getDataAttr.default)(restProps)), motion ? /*#__PURE__*/_react.default.createElement(_TabPaneTransition.default, {
144
+ "aria-hidden": active ? 'false' : 'true',
145
+ tabIndex: 0
146
+ }, (0, _getDataAttr.default)(restProps), {
147
+ "x-semi-prop": "children"
148
+ }), motion ? /*#__PURE__*/_react.default.createElement(_TabPaneTransition.default, {
146
149
  direction: this.getDirection(this.context.activeKey, itemKey, this.context.panes),
147
150
  motion: motion,
148
151
  mode: tabPosition === 'top' ? 'horizontal' : 'vertical',
149
152
  state: active ? 'enter' : 'leave'
150
153
  }, transitionStyle => /*#__PURE__*/_react.default.createElement("div", {
151
154
  className: "".concat(_constants.cssClasses.TABS_PANE_MOTION_OVERLAY),
152
- style: (0, _assign.default)({}, transitionStyle)
155
+ style: (0, _assign.default)({}, transitionStyle),
156
+ "x-semi-prop": "children"
153
157
  }, shouldRender ? children : null)) : shouldRender ? children : null);
154
158
  }
155
159
 
@@ -372,7 +372,8 @@ class Tabs extends _baseComponent.default {
372
372
  tabBarExtraContent,
373
373
  tabPosition,
374
374
  type,
375
- deleteTabItem: this.deleteTabItem
375
+ deleteTabItem: this.deleteTabItem,
376
+ handleKeyDown: this.foundation.handleKeyDown
376
377
  };
377
378
  const tabBar = renderTabBar ? renderTabBar(tabBarProps, _TabBar.default) : /*#__PURE__*/_react.default.createElement(_TabBar.default, (0, _assign.default)({}, tabBarProps));
378
379
  const content = keepDOM ? children : this.getActiveItem();
@@ -48,6 +48,7 @@ export interface TabBarProps {
48
48
  dropdownStyle?: CSSProperties;
49
49
  closable?: boolean;
50
50
  deleteTabItem?: (tabKey: string, event: MouseEvent<Element>) => void;
51
+ handleKeyDown?: (event: React.KeyboardEvent, itemKey: string, closable: boolean) => void;
51
52
  }
52
53
  export interface TabPaneProps {
53
54
  className?: string;
@@ -21,6 +21,7 @@ export default class Tag extends Component<TagProps, TagState> {
21
21
  className: PropTypes.Requireable<string>;
22
22
  avatarSrc: PropTypes.Requireable<string>;
23
23
  avatarShape: PropTypes.Requireable<string>;
24
+ 'aria-label': PropTypes.Requireable<string>;
24
25
  };
25
26
  constructor(props: TagProps);
26
27
  static getDerivedStateFromProps(nextProps: TagProps): {
@@ -28,6 +29,7 @@ export default class Tag extends Component<TagProps, TagState> {
28
29
  };
29
30
  setVisible(visible: boolean): void;
30
31
  close(e: React.MouseEvent<HTMLElement>, value: React.ReactNode): void;
32
+ handleKeyDown(event: any): void;
31
33
  renderAvatar(): JSX.Element;
32
34
  render(): JSX.Element;
33
35
  }
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
 
3
- var _context6;
3
+ var _context8;
4
4
 
5
5
  var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
6
6
 
@@ -31,6 +31,8 @@ var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-sta
31
31
 
32
32
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
33
33
 
34
+ var _isString2 = _interopRequireDefault(require("lodash/isString"));
35
+
34
36
  var _react = _interopRequireWildcard(require("react"));
35
37
 
36
38
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -43,11 +45,13 @@ var _index = _interopRequireDefault(require("../avatar/index"));
43
45
 
44
46
  var _semiIcons = require("@douyinfe/semi-icons");
45
47
 
48
+ var _a11y = require("@douyinfe/semi-foundation/lib/cjs/utils/a11y");
49
+
46
50
  require("@douyinfe/semi-foundation/lib/cjs/tag/tag.css");
47
51
 
48
52
  var _interface = require("./interface");
49
53
 
50
- _forEachInstanceProperty(_context6 = _Object$keys(_interface)).call(_context6, function (key) {
54
+ _forEachInstanceProperty(_context8 = _Object$keys(_interface)).call(_context8, function (key) {
51
55
  if (key === "default" || key === "__esModule") return;
52
56
  if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
53
57
  if (key in exports && exports[key] === _interface[key]) return;
@@ -74,6 +78,8 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
74
78
  }
75
79
  return t;
76
80
  };
81
+ /* eslint-disable jsx-a11y/no-static-element-interactions */
82
+
77
83
  /* eslint-disable no-unused-vars */
78
84
 
79
85
  /* eslint-disable max-len */
@@ -87,13 +93,14 @@ const avatarShapeSet = _constants.strings.AVATAR_SHAPE;
87
93
 
88
94
  class Tag extends _react.Component {
89
95
  constructor(props) {
90
- var _context;
96
+ var _context, _context2;
91
97
 
92
98
  super(props);
93
99
  this.state = {
94
100
  visible: true
95
101
  };
96
102
  this.close = (0, _bind.default)(_context = this.close).call(_context, this);
103
+ this.handleKeyDown = (0, _bind.default)(_context2 = this.handleKeyDown).call(_context2, this);
97
104
  } // any other way to achieve this?
98
105
 
99
106
 
@@ -130,6 +137,33 @@ class Tag extends _react.Component {
130
137
  this.setVisible(false);
131
138
  }
132
139
 
140
+ handleKeyDown(event) {
141
+ const {
142
+ closable,
143
+ onClick
144
+ } = this.props;
145
+
146
+ switch (event.key) {
147
+ case "Backspace":
148
+ case "Delete":
149
+ closable && this.close(event, this.props.children);
150
+ (0, _a11y.handlePrevent)(event);
151
+ break;
152
+
153
+ case "Enter":
154
+ onClick(event);
155
+ (0, _a11y.handlePrevent)(event);
156
+ break;
157
+
158
+ case 'Escape':
159
+ event.target.blur();
160
+ break;
161
+
162
+ default:
163
+ break;
164
+ }
165
+ }
166
+
133
167
  renderAvatar() {
134
168
  const {
135
169
  avatarShape,
@@ -145,7 +179,7 @@ class Tag extends _react.Component {
145
179
  }
146
180
 
147
181
  render() {
148
- var _context2, _context3, _context4, _context5;
182
+ var _context3, _context4, _context5, _context6, _context7;
149
183
 
150
184
  const _a = this.props,
151
185
  {
@@ -155,35 +189,49 @@ class Tag extends _react.Component {
155
189
  closable,
156
190
  visible,
157
191
  onClose,
192
+ onClick,
158
193
  className,
159
194
  type,
160
195
  avatarSrc,
161
196
  avatarShape
162
197
  } = _a,
163
- attr = __rest(_a, ["children", "size", "color", "closable", "visible", "onClose", "className", "type", "avatarSrc", "avatarShape"]);
198
+ attr = __rest(_a, ["children", "size", "color", "closable", "visible", "onClose", "onClick", "className", "type", "avatarSrc", "avatarShape"]);
164
199
 
165
200
  const {
166
201
  visible: isVisible
167
202
  } = this.state;
203
+ const clickable = onClick !== Tag.defaultProps.onClick || closable;
204
+ const a11yProps = {
205
+ role: 'button',
206
+ tabIndex: 0,
207
+ onKeyDown: this.handleKeyDown
208
+ };
168
209
  const baseProps = (0, _assign.default)((0, _assign.default)({}, attr), {
210
+ onClick,
169
211
  className: (0, _classnames.default)(prefixCls, {
170
212
  ["".concat(prefixCls, "-default")]: size === 'default',
171
213
  ["".concat(prefixCls, "-small")]: size === 'small',
172
214
  ["".concat(prefixCls, "-large")]: size === 'large',
173
- [(0, _concat.default)(_context2 = "".concat(prefixCls, "-")).call(_context2, type)]: type,
174
- [(0, _concat.default)(_context3 = (0, _concat.default)(_context4 = "".concat(prefixCls, "-")).call(_context4, color, "-")).call(_context3, type)]: color && type,
215
+ [(0, _concat.default)(_context3 = "".concat(prefixCls, "-")).call(_context3, type)]: type,
216
+ [(0, _concat.default)(_context4 = (0, _concat.default)(_context5 = "".concat(prefixCls, "-")).call(_context5, color, "-")).call(_context4, type)]: color && type,
175
217
  ["".concat(prefixCls, "-closable")]: closable,
176
218
  ["".concat(prefixCls, "-invisible")]: !isVisible,
177
- [(0, _concat.default)(_context5 = "".concat(prefixCls, "-avatar-")).call(_context5, avatarShape)]: avatarSrc
219
+ [(0, _concat.default)(_context6 = "".concat(prefixCls, "-avatar-")).call(_context6, avatarShape)]: avatarSrc
178
220
  }, className)
179
221
  });
180
- const closeIcon = closable ? /*#__PURE__*/_react.default.createElement("div", {
222
+ const wrapProps = clickable ? (0, _assign.default)((0, _assign.default)({}, baseProps), a11yProps) : baseProps;
223
+ const closeIcon = closable ?
224
+ /*#__PURE__*/
225
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events
226
+ _react.default.createElement("div", {
181
227
  className: "".concat(prefixCls, "-close"),
182
228
  onClick: e => this.close(e, children)
183
229
  }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
184
230
  size: "small"
185
231
  })) : null;
186
- return /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({}, baseProps), /*#__PURE__*/_react.default.createElement("div", {
232
+ return /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
233
+ "aria-label": this.props['aria-label'] || (0, _isString2.default)(children) ? (0, _concat.default)(_context7 = "".concat(closable ? 'Closable ' : '', "Tag: ")).call(_context7, children) : ''
234
+ }, wrapProps), /*#__PURE__*/_react.default.createElement("div", {
187
235
  className: "".concat(prefixCls, "-content")
188
236
  }, avatarSrc ? this.renderAvatar() : null, children, closeIcon));
189
237
  }
@@ -215,5 +263,6 @@ Tag.propTypes = {
215
263
  style: _propTypes.default.object,
216
264
  className: _propTypes.default.string,
217
265
  avatarSrc: _propTypes.default.string,
218
- avatarShape: _propTypes.default.oneOf(avatarShapeSet)
266
+ avatarShape: _propTypes.default.oneOf(avatarShapeSet),
267
+ 'aria-label': _propTypes.default.string
219
268
  };
@@ -16,6 +16,7 @@ export interface TagProps {
16
16
  className?: string;
17
17
  avatarSrc?: string;
18
18
  avatarShape?: AvatarShape;
19
+ 'aria-label'?: React.AriaAttributes['aria-label'];
19
20
  }
20
21
  export interface TagGroupProps {
21
22
  style?: React.CSSProperties;
@@ -228,7 +228,8 @@ class TagInput extends _baseComponent.default {
228
228
  ["".concat(prefixCls, "-prefix-icon")]: /*#__PURE__*/_react.default.isValidElement(prefix) && !(prefix && (0, _isString2.default)(prefix))
229
229
  });
230
230
  return /*#__PURE__*/_react.default.createElement("div", {
231
- className: prefixWrapperCls
231
+ className: prefixWrapperCls,
232
+ "x-semi-prop": "prefix"
232
233
  }, prefix);
233
234
  }
234
235
 
@@ -247,7 +248,8 @@ class TagInput extends _baseComponent.default {
247
248
  ["".concat(prefixCls, "-suffix-icon")]: /*#__PURE__*/_react.default.isValidElement(suffix) && !(suffix && (0, _isString2.default)(suffix))
248
249
  });
249
250
  return /*#__PURE__*/_react.default.createElement("div", {
250
- className: suffixWrapperCls
251
+ className: suffixWrapperCls,
252
+ "x-semi-prop": "suffix"
251
253
  }, suffix);
252
254
  }
253
255
 
@@ -283,7 +285,7 @@ class TagInput extends _baseComponent.default {
283
285
  if ((0, _isFunction2.default)(renderTagItem)) {
284
286
  item = renderTagItem(value, index);
285
287
  } else {
286
- var _context2;
288
+ var _context2, _context3;
287
289
 
288
290
  item = /*#__PURE__*/_react.default.createElement(_tag.default, {
289
291
  className: tagCls,
@@ -295,7 +297,8 @@ class TagInput extends _baseComponent.default {
295
297
  },
296
298
  closable: !disabled,
297
299
  key: (0, _concat.default)(_context2 = "".concat(index)).call(_context2, value),
298
- visible: true
300
+ visible: true,
301
+ "aria-label": (0, _concat.default)(_context3 = "".concat(!disabled ? 'Closable ' : '', "Tag: ")).call(_context3, value)
299
302
  }, /*#__PURE__*/_react.default.createElement(_paragraph.default, {
300
303
  className: typoCls,
301
304
  ellipsis: {
@@ -311,7 +311,9 @@ class Combobox extends _baseComponent.default {
311
311
  componentName: "TimePicker"
312
312
  }, (locale, localeCode) => /*#__PURE__*/_react.default.createElement(_index.default, {
313
313
  header: panelHeader,
314
- footer: panelFooter
314
+ footer: panelFooter,
315
+ "x-semi-header-alias": "panelHeader",
316
+ "x-semi-footer-alias": "panelFooter"
315
317
  }, this.renderAMPMSelect(locale, localeCode), this.renderHourSelect(value.getHours(), locale), this.renderMinuteSelect(value.getMinutes(), locale), this.renderSecondSelect(value.getSeconds(), locale)));
316
318
  }
317
319
 
@@ -135,7 +135,7 @@ class Toast extends _baseComponent.default {
135
135
  const btnTheme = 'borderless';
136
136
  const btnSize = 'small';
137
137
  return /*#__PURE__*/_react.default.createElement("div", {
138
- role: 'alert',
138
+ role: "alert",
139
139
  "aria-label": "".concat(type ? type : 'default', " type"),
140
140
  className: toastCls,
141
141
  style: style,
@@ -145,13 +145,16 @@ class Toast extends _baseComponent.default {
145
145
  className: "".concat(prefixCls, "-content")
146
146
  }, this.renderIcon(), /*#__PURE__*/_react.default.createElement("span", {
147
147
  className: "".concat(prefixCls, "-content-text"),
148
- style: textStyle
148
+ style: textStyle,
149
+ "x-semi-prop": "content"
149
150
  }, content), showClose && /*#__PURE__*/_react.default.createElement("div", {
150
151
  className: "".concat(prefixCls, "-close-button")
151
152
  }, /*#__PURE__*/_react.default.createElement(_index.default, {
152
153
  onClick: e => this.close(e),
153
154
  type: "tertiary",
154
- icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null),
155
+ icon: /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, {
156
+ "x-semi-prop": "icon"
157
+ }),
155
158
  theme: btnTheme,
156
159
  size: btnSize
157
160
  }))));
@@ -279,7 +279,8 @@ class Transfer extends _baseComponent.default {
279
279
  className: leftItemCls,
280
280
  checked: checked,
281
281
  role: "listitem",
282
- onChange: () => this.onSelectOrRemove(item)
282
+ onChange: () => this.onSelectOrRemove(item),
283
+ "x-semi-children-alias": "dataSource[".concat(index, "].label")
283
284
  }, item.label);
284
285
  }
285
286
 
@@ -410,7 +410,8 @@ class TreeNode extends _react.PureComponent {
410
410
  return /*#__PURE__*/_react.default.createElement("ul", {
411
411
  className: wrapperCls
412
412
  }, /*#__PURE__*/_react.default.createElement("li", {
413
- className: (0, _concat.default)(_context2 = "".concat(prefixcls, "-label ")).call(_context2, prefixcls, "-label-empty")
413
+ className: (0, _concat.default)(_context2 = "".concat(prefixcls, "-label ")).call(_context2, prefixcls, "-label-empty"),
414
+ "x-semi-prop": "emptyContent"
414
415
  }, emptyContent));
415
416
  } // eslint-disable-next-line max-lines-per-function
416
417
 
@@ -16,6 +16,8 @@ exports.default = void 0;
16
16
 
17
17
  var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
18
18
 
19
+ var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
20
+
19
21
  var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
20
22
 
21
23
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
@@ -28,8 +30,6 @@ var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable
28
30
 
29
31
  var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
30
32
 
31
- var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/keys"));
32
-
33
33
  var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
34
34
 
35
35
  var _get2 = _interopRequireDefault(require("lodash/get"));
@@ -120,7 +120,8 @@ class TreeSelect extends _baseComponent.default {
120
120
  ["".concat(prefixcls, "-suffix-icon")]: (0, _utils.isSemiIcon)(suffix)
121
121
  });
122
122
  return /*#__PURE__*/_react.default.createElement("div", {
123
- className: suffixWrapperCls
123
+ className: suffixWrapperCls,
124
+ "x-semi-prop": "suffix"
124
125
  }, suffix);
125
126
  };
126
127
 
@@ -140,7 +141,8 @@ class TreeSelect extends _baseComponent.default {
140
141
  });
141
142
  return /*#__PURE__*/_react.default.createElement("div", {
142
143
  className: prefixWrapperCls,
143
- id: insetLabelId
144
+ id: insetLabelId,
145
+ "x-semi-prop": "prefix,insetLabel"
144
146
  }, labelNode);
145
147
  };
146
148
 
@@ -238,7 +240,7 @@ class TreeSelect extends _baseComponent.default {
238
240
 
239
241
  if (checkRelation === 'related') {
240
242
  renderKeys = (0, _treeUtil.normalizeKeyList)([...checkedKeys], keyEntities, leafOnly);
241
- } else if (checkRelation === 'unRelated') {
243
+ } else if (checkRelation === 'unRelated' && (0, _keys.default)(keyEntities).length > 0) {
242
244
  renderKeys = [...realCheckedKeys];
243
245
  }
244
246
 
@@ -394,7 +396,8 @@ class TreeSelect extends _baseComponent.default {
394
396
  }
395
397
 
396
398
  return arrowIcon ? /*#__PURE__*/_react.default.createElement("div", {
397
- className: (0, _classnames.default)("".concat(prefixcls, "-arrow"))
399
+ className: (0, _classnames.default)("".concat(prefixcls, "-arrow")),
400
+ "x-semi-prop": "arrowIcon"
398
401
  }, arrowIcon) : null;
399
402
  };
400
403
 
@@ -571,7 +571,8 @@ class Base extends _react.Component {
571
571
 
572
572
  const iconSize = size === 'small' ? 'small' : 'default';
573
573
  return /*#__PURE__*/_react.default.createElement("span", {
574
- className: "".concat(prefixCls, "-icon")
574
+ className: "".concat(prefixCls, "-icon"),
575
+ "x-semi-prop": "icon"
575
576
  }, (0, _utils.isSemiIcon)(icon) ? /*#__PURE__*/_react.default.cloneElement(icon, {
576
577
  size: iconSize
577
578
  }) : icon);
@@ -37,7 +37,7 @@ export default class Title extends PureComponent<TitleProps> {
37
37
  underline: PropTypes.Requireable<boolean>;
38
38
  strong: PropTypes.Requireable<boolean>;
39
39
  type: PropTypes.Requireable<"warning" | "success" | "primary" | "tertiary" | "secondary" | "danger" | "quaternary">;
40
- heading: PropTypes.Requireable<1 | 2 | 3 | 4 | 5 | 6>;
40
+ heading: PropTypes.Requireable<4 | 1 | 2 | 3 | 5 | 6>;
41
41
  style: PropTypes.Requireable<object>;
42
42
  className: PropTypes.Requireable<string>;
43
43
  component: PropTypes.Requireable<string>;
@@ -6,7 +6,7 @@ import BaseComponent, { ValidateStatus } from '../_base/baseComponent';
6
6
  import { FileItem, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError } from './interface';
7
7
  import { Locale } from '../locale/interface';
8
8
  import '@douyinfe/semi-foundation/lib/cjs/upload/upload.css';
9
- export { FileItem, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError, BeforeUploadObjectResult, AfterUploadResult };
9
+ export { FileItem, RenderFileItemProps, UploadListType, PromptPositionType, BeforeUploadProps, AfterUploadProps, OnChangeProps, customRequestArgs, CustomError, BeforeUploadObjectResult, AfterUploadResult, };
10
10
  export interface UploadProps {
11
11
  accept?: string;
12
12
  action: string;
@@ -256,7 +256,9 @@ class Upload extends _baseComponent.default {
256
256
  });
257
257
  }
258
258
 
259
- const addContent = /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({}, addContentProps), children);
259
+ const addContent = /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({}, addContentProps, {
260
+ "x-semi-prop": "children"
261
+ }), children);
260
262
 
261
263
  if (!showUploadList || !fileList.length) {
262
264
  if (showAddTriggerInList) {
@@ -389,15 +391,18 @@ class Upload extends _baseComponent.default {
389
391
  onDragEnter: this.onDragEnter,
390
392
  onClick: this.onClick
391
393
  }, children ? children : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
392
- className: "".concat(dragAreaBaseCls, "-icon")
394
+ className: "".concat(dragAreaBaseCls, "-icon"),
395
+ "x-semi-prop": "dragIcon"
393
396
  }, dragIcon || /*#__PURE__*/_react.default.createElement(_semiIcons.IconUpload, {
394
397
  size: "extra-large"
395
398
  })), /*#__PURE__*/_react.default.createElement("div", {
396
399
  className: "".concat(dragAreaBaseCls, "-text")
397
400
  }, /*#__PURE__*/_react.default.createElement("div", {
398
- className: "".concat(dragAreaBaseCls, "-main-text")
401
+ className: "".concat(dragAreaBaseCls, "-main-text"),
402
+ "x-semi-prop": "dragMainText"
399
403
  }, dragMainText || locale.mainText), /*#__PURE__*/_react.default.createElement("div", {
400
- className: "".concat(dragAreaBaseCls, "-sub-text")
404
+ className: "".concat(dragAreaBaseCls, "-sub-text"),
405
+ "x-semi-prop": "dragSubText"
401
406
  }, dragSubText), /*#__PURE__*/_react.default.createElement("div", {
402
407
  className: "".concat(dragAreaBaseCls, "-tips")
403
408
  }, dragAreaStatus === _constants.strings.DRAG_AREA_LEGAL && /*#__PURE__*/_react.default.createElement("span", {
@@ -583,9 +588,11 @@ class Upload extends _baseComponent.default {
583
588
  className: inputReplaceCls,
584
589
  ref: this.replaceInputRef
585
590
  }), this.renderAddContent(), prompt ? /*#__PURE__*/_react.default.createElement("div", {
586
- className: promptCls
591
+ className: promptCls,
592
+ "x-semi-prop": "prompt"
587
593
  }, prompt) : null, validateMessage ? /*#__PURE__*/_react.default.createElement("div", {
588
- className: validateMsgCls
594
+ className: validateMsgCls,
595
+ "x-semi-prop": "validateMessage"
589
596
  }, validateMessage) : null, this.renderFileList());
590
597
  }
591
598
 
@@ -156,7 +156,8 @@ export default class Avatar extends BaseComponent {
156
156
  }, className);
157
157
  let content = children;
158
158
  const hoverRender = hoverContent ? /*#__PURE__*/React.createElement("div", {
159
- className: "".concat(prefixCls, "-hover")
159
+ className: "".concat(prefixCls, "-hover"),
160
+ "x-semi-prop": "hoverContent"
160
161
  }, hoverContent) : null;
161
162
 
162
163
  if (isImg) {
@@ -170,7 +171,8 @@ export default class Avatar extends BaseComponent {
170
171
  content = /*#__PURE__*/React.createElement("span", {
171
172
  className: "".concat(prefixCls, "-content")
172
173
  }, /*#__PURE__*/React.createElement("span", {
173
- className: "".concat(prefixCls, "-label")
174
+ className: "".concat(prefixCls, "-label"),
175
+ "x-semi-prop": "children"
174
176
  }, children));
175
177
  }
176
178
 
@@ -98,7 +98,8 @@ export default class BackTop extends BaseComponent {
98
98
  const content = visible ? /*#__PURE__*/React.createElement("div", _Object$assign({}, others, {
99
99
  className: preCls,
100
100
  style: style,
101
- onClick: e => this.handleClick(e)
101
+ onClick: e => this.handleClick(e),
102
+ "x-semi-prop": "children"
102
103
  }), backtopBtn) : null;
103
104
  return content;
104
105
  }