@douyinfe/semi-ui 2.2.2 → 2.3.0-beta.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 (434) hide show
  1. package/_base/_story/a11y.jsx +6 -6
  2. package/_utils/hooks/usePrevFocus.ts +16 -0
  3. package/_utils/index.ts +4 -0
  4. package/anchor/_story/anchor.stories.js +1 -1
  5. package/anchor/index.tsx +5 -2
  6. package/anchor/link.tsx +29 -4
  7. package/autoComplete/index.tsx +28 -1
  8. package/avatar/_story/avatar.stories.js +4 -4
  9. package/avatar/avatarGroup.tsx +1 -1
  10. package/avatar/index.tsx +10 -4
  11. package/banner/index.tsx +2 -1
  12. package/breadcrumb/_story/breadcrumb.stories.js +22 -8
  13. package/breadcrumb/index.tsx +8 -1
  14. package/breadcrumb/item.tsx +1 -1
  15. package/button/Button.tsx +4 -0
  16. package/button/__test__/button.test.js +1 -1
  17. package/button/_story/button.stories.js +10 -10
  18. package/button/buttonGroup.tsx +4 -2
  19. package/button/splitButtonGroup.tsx +5 -2
  20. package/card/_story/card.stories.js +8 -1
  21. package/card/_story/card.stories.tsx +3 -0
  22. package/card/index.tsx +5 -2
  23. package/cascader/index.tsx +33 -5
  24. package/checkbox/_story/checkbox.stories.js +21 -14
  25. package/checkbox/checkbox.tsx +40 -5
  26. package/checkbox/checkboxGroup.tsx +30 -5
  27. package/checkbox/checkboxInner.tsx +25 -2
  28. package/collapse/index.tsx +2 -2
  29. package/collapse/item.tsx +15 -8
  30. package/collapsible/index.tsx +4 -2
  31. package/configProvider/_story/configProvider.stories.tsx +27 -0
  32. package/datePicker/datePicker.tsx +19 -0
  33. package/dist/css/semi.css +8 -3
  34. package/dist/css/semi.min.css +1 -1
  35. package/dist/umd/semi-ui.js +2470 -1242
  36. package/dist/umd/semi-ui.js.map +1 -1
  37. package/dist/umd/semi-ui.min.js +1 -1
  38. package/dist/umd/semi-ui.min.js.map +1 -1
  39. package/dropdown/dropdownItem.tsx +1 -1
  40. package/dropdown/dropdownMenu.tsx +1 -1
  41. package/empty/index.tsx +5 -5
  42. package/form/_story/FormApi/formApiDemo.jsx +3 -2
  43. package/form/_story/Validate/validateDemo.jsx +1 -1
  44. package/form/_story/demo.jsx +12 -3
  45. package/form/_story/form.stories.js +0 -7
  46. package/form/baseForm.tsx +2 -0
  47. package/form/errorMessage.tsx +13 -2
  48. package/form/hoc/withField.tsx +37 -8
  49. package/form/index.tsx +0 -2
  50. package/form/interface.ts +2 -0
  51. package/form/label.tsx +4 -2
  52. package/input/index.tsx +49 -4
  53. package/input/inputGroup.tsx +9 -4
  54. package/input/textarea.tsx +25 -6
  55. package/inputNumber/index.tsx +28 -1
  56. package/layout/Sider.tsx +6 -2
  57. package/layout/index.tsx +4 -3
  58. package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
  59. package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
  60. package/lib/cjs/_utils/index.d.ts +1 -0
  61. package/lib/cjs/_utils/index.js +6 -1
  62. package/lib/cjs/anchor/index.d.ts +2 -0
  63. package/lib/cjs/anchor/index.js +6 -1
  64. package/lib/cjs/anchor/link.d.ts +4 -1
  65. package/lib/cjs/anchor/link.js +39 -5
  66. package/lib/cjs/autoComplete/index.d.ts +17 -0
  67. package/lib/cjs/autoComplete/index.js +21 -2
  68. package/lib/cjs/avatar/avatarGroup.js +2 -1
  69. package/lib/cjs/avatar/index.d.ts +4 -3
  70. package/lib/cjs/avatar/index.js +20 -11
  71. package/lib/cjs/banner/index.js +4 -2
  72. package/lib/cjs/breadcrumb/index.d.ts +3 -0
  73. package/lib/cjs/breadcrumb/index.js +10 -4
  74. package/lib/cjs/breadcrumb/item.js +2 -2
  75. package/lib/cjs/button/Button.d.ts +2 -0
  76. package/lib/cjs/button/Button.js +4 -2
  77. package/lib/cjs/button/buttonGroup.d.ts +3 -0
  78. package/lib/cjs/button/buttonGroup.js +8 -4
  79. package/lib/cjs/button/index.d.ts +1 -0
  80. package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
  81. package/lib/cjs/button/splitButtonGroup.js +5 -2
  82. package/lib/cjs/card/index.d.ts +3 -0
  83. package/lib/cjs/card/index.js +3 -1
  84. package/lib/cjs/cascader/index.d.ts +14 -0
  85. package/lib/cjs/cascader/index.js +35 -7
  86. package/lib/cjs/checkbox/checkbox.d.ts +21 -1
  87. package/lib/cjs/checkbox/checkbox.js +51 -17
  88. package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
  89. package/lib/cjs/checkbox/checkboxGroup.js +16 -3
  90. package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
  91. package/lib/cjs/checkbox/checkboxInner.js +20 -3
  92. package/lib/cjs/collapse/index.js +2 -1
  93. package/lib/cjs/collapse/item.d.ts +2 -1
  94. package/lib/cjs/collapse/item.js +17 -3
  95. package/lib/cjs/collapsible/index.d.ts +1 -0
  96. package/lib/cjs/collapsible/index.js +4 -2
  97. package/lib/cjs/datePicker/datePicker.d.ts +12 -0
  98. package/lib/cjs/datePicker/datePicker.js +14 -1
  99. package/lib/cjs/dropdown/dropdownItem.js +3 -1
  100. package/lib/cjs/dropdown/dropdownMenu.js +4 -1
  101. package/lib/cjs/empty/index.js +2 -1
  102. package/lib/cjs/form/baseForm.d.ts +9 -0
  103. package/lib/cjs/form/baseForm.js +3 -1
  104. package/lib/cjs/form/errorMessage.d.ts +4 -0
  105. package/lib/cjs/form/errorMessage.js +21 -3
  106. package/lib/cjs/form/field.d.ts +7 -0
  107. package/lib/cjs/form/hoc/withField.js +49 -16
  108. package/lib/cjs/form/index.d.ts +0 -1
  109. package/lib/cjs/form/interface.d.ts +2 -0
  110. package/lib/cjs/form/label.d.ts +2 -0
  111. package/lib/cjs/form/label.js +5 -2
  112. package/lib/cjs/input/index.d.ts +16 -0
  113. package/lib/cjs/input/index.js +51 -15
  114. package/lib/cjs/input/inputGroup.d.ts +2 -1
  115. package/lib/cjs/input/inputGroup.js +11 -1
  116. package/lib/cjs/input/textarea.js +12 -1
  117. package/lib/cjs/inputNumber/index.d.ts +8 -0
  118. package/lib/cjs/inputNumber/index.js +32 -2
  119. package/lib/cjs/layout/Sider.d.ts +4 -0
  120. package/lib/cjs/layout/Sider.js +4 -1
  121. package/lib/cjs/layout/index.js +2 -0
  122. package/lib/cjs/list/item.js +0 -1
  123. package/lib/cjs/modal/Modal.js +2 -0
  124. package/lib/cjs/modal/ModalContent.d.ts +3 -1
  125. package/lib/cjs/modal/ModalContent.js +47 -5
  126. package/lib/cjs/navigation/Item.d.ts +4 -2
  127. package/lib/cjs/navigation/Item.js +25 -5
  128. package/lib/cjs/navigation/SubNav.d.ts +4 -2
  129. package/lib/cjs/navigation/SubNav.js +8 -1
  130. package/lib/cjs/navigation/index.js +2 -0
  131. package/lib/cjs/notification/notice.d.ts +1 -1
  132. package/lib/cjs/notification/notice.js +32 -22
  133. package/lib/cjs/pagination/index.js +16 -6
  134. package/lib/cjs/popover/index.js +7 -3
  135. package/lib/cjs/progress/index.d.ts +8 -0
  136. package/lib/cjs/progress/index.js +42 -9
  137. package/lib/cjs/radio/radio.d.ts +6 -1
  138. package/lib/cjs/radio/radio.js +17 -5
  139. package/lib/cjs/radio/radioGroup.d.ts +16 -1
  140. package/lib/cjs/radio/radioGroup.js +18 -3
  141. package/lib/cjs/radio/radioInner.d.ts +6 -1
  142. package/lib/cjs/radio/radioInner.js +11 -3
  143. package/lib/cjs/rating/index.d.ts +14 -0
  144. package/lib/cjs/rating/index.js +14 -3
  145. package/lib/cjs/rating/item.d.ts +2 -0
  146. package/lib/cjs/rating/item.js +6 -1
  147. package/lib/cjs/select/index.d.ts +16 -0
  148. package/lib/cjs/select/index.js +65 -19
  149. package/lib/cjs/select/option.js +28 -22
  150. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  151. package/lib/cjs/sideSheet/SideSheetContent.js +12 -5
  152. package/lib/cjs/sideSheet/index.d.ts +1 -0
  153. package/lib/cjs/sideSheet/index.js +2 -1
  154. package/lib/cjs/slider/index.d.ts +2 -1
  155. package/lib/cjs/slider/index.js +64 -17
  156. package/lib/cjs/spin/icon.js +2 -4
  157. package/lib/cjs/steps/basicStep.d.ts +3 -0
  158. package/lib/cjs/steps/basicStep.js +23 -25
  159. package/lib/cjs/steps/basicSteps.d.ts +1 -0
  160. package/lib/cjs/steps/basicSteps.js +2 -1
  161. package/lib/cjs/steps/fillStep.d.ts +3 -0
  162. package/lib/cjs/steps/fillStep.js +19 -4
  163. package/lib/cjs/steps/fillSteps.d.ts +1 -0
  164. package/lib/cjs/steps/fillSteps.js +2 -1
  165. package/lib/cjs/steps/navStep.d.ts +3 -0
  166. package/lib/cjs/steps/navStep.js +22 -25
  167. package/lib/cjs/steps/navSteps.d.ts +1 -0
  168. package/lib/cjs/steps/navSteps.js +2 -1
  169. package/lib/cjs/switch/index.d.ts +12 -0
  170. package/lib/cjs/switch/index.js +19 -4
  171. package/lib/cjs/table/Body/BaseRow.js +35 -3
  172. package/lib/cjs/table/Body/index.js +9 -1
  173. package/lib/cjs/table/ColumnFilter.js +4 -0
  174. package/lib/cjs/table/ColumnSelection.d.ts +3 -0
  175. package/lib/cjs/table/ColumnSelection.js +6 -2
  176. package/lib/cjs/table/ColumnSorter.js +19 -3
  177. package/lib/cjs/table/CustomExpandIcon.js +7 -1
  178. package/lib/cjs/table/Table.d.ts +2 -0
  179. package/lib/cjs/table/Table.js +31 -15
  180. package/lib/cjs/table/TableCell.d.ts +2 -0
  181. package/lib/cjs/table/TableCell.js +6 -2
  182. package/lib/cjs/table/TableHeaderRow.js +8 -2
  183. package/lib/cjs/tabs/TabBar.js +11 -3
  184. package/lib/cjs/tabs/TabPane.js +3 -1
  185. package/lib/cjs/tabs/index.js +0 -1
  186. package/lib/cjs/tagInput/index.d.ts +4 -1
  187. package/lib/cjs/tagInput/index.js +29 -3
  188. package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
  189. package/lib/cjs/timePicker/TimePicker.js +9 -1
  190. package/lib/cjs/timePicker/index.d.ts +6 -0
  191. package/lib/cjs/timeline/index.d.ts +1 -1
  192. package/lib/cjs/timeline/index.js +1 -0
  193. package/lib/cjs/timeline/item.js +4 -2
  194. package/lib/cjs/toast/toast.js +2 -0
  195. package/lib/cjs/tooltip/TriangleArrow.js +1 -0
  196. package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
  197. package/lib/cjs/tooltip/index.d.ts +16 -12
  198. package/lib/cjs/tooltip/index.js +55 -39
  199. package/lib/cjs/transfer/index.js +32 -14
  200. package/lib/cjs/tree/index.d.ts +1 -0
  201. package/lib/cjs/tree/index.js +15 -6
  202. package/lib/cjs/tree/treeNode.d.ts +12 -4
  203. package/lib/cjs/tree/treeNode.js +44 -4
  204. package/lib/cjs/treeSelect/index.d.ts +16 -0
  205. package/lib/cjs/treeSelect/index.js +60 -12
  206. package/lib/cjs/typography/base.js +18 -7
  207. package/lib/cjs/typography/copyable.js +6 -1
  208. package/lib/cjs/upload/fileCard.js +23 -4
  209. package/lib/cjs/upload/index.js +19 -4
  210. package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
  211. package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
  212. package/lib/es/_utils/index.d.ts +1 -0
  213. package/lib/es/_utils/index.js +4 -1
  214. package/lib/es/anchor/index.d.ts +2 -0
  215. package/lib/es/anchor/index.js +6 -1
  216. package/lib/es/anchor/link.d.ts +4 -1
  217. package/lib/es/anchor/link.js +38 -5
  218. package/lib/es/autoComplete/index.d.ts +17 -0
  219. package/lib/es/autoComplete/index.js +21 -2
  220. package/lib/es/avatar/avatarGroup.js +2 -1
  221. package/lib/es/avatar/index.d.ts +4 -3
  222. package/lib/es/avatar/index.js +20 -11
  223. package/lib/es/banner/index.js +4 -2
  224. package/lib/es/breadcrumb/index.d.ts +3 -0
  225. package/lib/es/breadcrumb/index.js +10 -4
  226. package/lib/es/breadcrumb/item.js +2 -2
  227. package/lib/es/button/Button.d.ts +2 -0
  228. package/lib/es/button/Button.js +4 -2
  229. package/lib/es/button/buttonGroup.d.ts +3 -0
  230. package/lib/es/button/buttonGroup.js +8 -4
  231. package/lib/es/button/index.d.ts +1 -0
  232. package/lib/es/button/splitButtonGroup.d.ts +3 -0
  233. package/lib/es/button/splitButtonGroup.js +5 -2
  234. package/lib/es/card/index.d.ts +3 -0
  235. package/lib/es/card/index.js +3 -1
  236. package/lib/es/cascader/index.d.ts +14 -0
  237. package/lib/es/cascader/index.js +35 -7
  238. package/lib/es/checkbox/checkbox.d.ts +21 -1
  239. package/lib/es/checkbox/checkbox.js +50 -17
  240. package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
  241. package/lib/es/checkbox/checkboxGroup.js +18 -5
  242. package/lib/es/checkbox/checkboxInner.d.ts +15 -0
  243. package/lib/es/checkbox/checkboxInner.js +20 -3
  244. package/lib/es/collapse/index.js +2 -1
  245. package/lib/es/collapse/item.d.ts +2 -1
  246. package/lib/es/collapse/item.js +16 -3
  247. package/lib/es/collapsible/index.d.ts +1 -0
  248. package/lib/es/collapsible/index.js +4 -2
  249. package/lib/es/datePicker/datePicker.d.ts +12 -0
  250. package/lib/es/datePicker/datePicker.js +14 -1
  251. package/lib/es/dropdown/dropdownItem.js +3 -1
  252. package/lib/es/dropdown/dropdownMenu.js +4 -1
  253. package/lib/es/empty/index.js +2 -1
  254. package/lib/es/form/baseForm.d.ts +9 -0
  255. package/lib/es/form/baseForm.js +3 -1
  256. package/lib/es/form/errorMessage.d.ts +4 -0
  257. package/lib/es/form/errorMessage.js +21 -3
  258. package/lib/es/form/field.d.ts +7 -0
  259. package/lib/es/form/hoc/withField.js +48 -15
  260. package/lib/es/form/index.d.ts +0 -1
  261. package/lib/es/form/index.js +0 -1
  262. package/lib/es/form/interface.d.ts +2 -0
  263. package/lib/es/form/label.d.ts +2 -0
  264. package/lib/es/form/label.js +5 -2
  265. package/lib/es/input/index.d.ts +16 -0
  266. package/lib/es/input/index.js +51 -15
  267. package/lib/es/input/inputGroup.d.ts +2 -1
  268. package/lib/es/input/inputGroup.js +11 -1
  269. package/lib/es/input/textarea.js +12 -1
  270. package/lib/es/inputNumber/index.d.ts +8 -0
  271. package/lib/es/inputNumber/index.js +33 -2
  272. package/lib/es/layout/Sider.d.ts +4 -0
  273. package/lib/es/layout/Sider.js +4 -1
  274. package/lib/es/layout/index.js +2 -0
  275. package/lib/es/list/item.js +0 -1
  276. package/lib/es/modal/Modal.js +2 -0
  277. package/lib/es/modal/ModalContent.d.ts +3 -1
  278. package/lib/es/modal/ModalContent.js +46 -5
  279. package/lib/es/navigation/Item.d.ts +4 -2
  280. package/lib/es/navigation/Item.js +25 -5
  281. package/lib/es/navigation/SubNav.d.ts +4 -2
  282. package/lib/es/navigation/SubNav.js +8 -1
  283. package/lib/es/navigation/index.js +2 -0
  284. package/lib/es/notification/notice.d.ts +1 -1
  285. package/lib/es/notification/notice.js +33 -24
  286. package/lib/es/pagination/index.js +16 -6
  287. package/lib/es/popover/index.js +7 -3
  288. package/lib/es/progress/index.d.ts +8 -0
  289. package/lib/es/progress/index.js +42 -9
  290. package/lib/es/radio/radio.d.ts +6 -1
  291. package/lib/es/radio/radio.js +16 -5
  292. package/lib/es/radio/radioGroup.d.ts +16 -1
  293. package/lib/es/radio/radioGroup.js +18 -3
  294. package/lib/es/radio/radioInner.d.ts +6 -1
  295. package/lib/es/radio/radioInner.js +11 -3
  296. package/lib/es/rating/index.d.ts +14 -0
  297. package/lib/es/rating/index.js +14 -3
  298. package/lib/es/rating/item.d.ts +2 -0
  299. package/lib/es/rating/item.js +6 -1
  300. package/lib/es/select/index.d.ts +16 -0
  301. package/lib/es/select/index.js +63 -17
  302. package/lib/es/select/option.js +28 -22
  303. package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
  304. package/lib/es/sideSheet/SideSheetContent.js +12 -5
  305. package/lib/es/sideSheet/index.d.ts +1 -0
  306. package/lib/es/sideSheet/index.js +2 -1
  307. package/lib/es/slider/index.d.ts +2 -1
  308. package/lib/es/slider/index.js +63 -16
  309. package/lib/es/spin/icon.js +2 -4
  310. package/lib/es/steps/basicStep.d.ts +3 -0
  311. package/lib/es/steps/basicStep.js +23 -23
  312. package/lib/es/steps/basicSteps.d.ts +1 -0
  313. package/lib/es/steps/basicSteps.js +2 -1
  314. package/lib/es/steps/fillStep.d.ts +3 -0
  315. package/lib/es/steps/fillStep.js +19 -4
  316. package/lib/es/steps/fillSteps.d.ts +1 -0
  317. package/lib/es/steps/fillSteps.js +2 -1
  318. package/lib/es/steps/navStep.d.ts +3 -0
  319. package/lib/es/steps/navStep.js +22 -23
  320. package/lib/es/steps/navSteps.d.ts +1 -0
  321. package/lib/es/steps/navSteps.js +2 -1
  322. package/lib/es/switch/index.d.ts +12 -0
  323. package/lib/es/switch/index.js +19 -4
  324. package/lib/es/table/Body/BaseRow.js +35 -3
  325. package/lib/es/table/Body/index.js +9 -2
  326. package/lib/es/table/ColumnFilter.js +4 -0
  327. package/lib/es/table/ColumnSelection.d.ts +3 -0
  328. package/lib/es/table/ColumnSelection.js +6 -2
  329. package/lib/es/table/ColumnSorter.js +17 -3
  330. package/lib/es/table/CustomExpandIcon.js +6 -1
  331. package/lib/es/table/Table.d.ts +2 -0
  332. package/lib/es/table/Table.js +31 -15
  333. package/lib/es/table/TableCell.d.ts +2 -0
  334. package/lib/es/table/TableCell.js +6 -2
  335. package/lib/es/table/TableHeaderRow.js +8 -2
  336. package/lib/es/tabs/TabBar.js +11 -3
  337. package/lib/es/tabs/TabPane.js +3 -1
  338. package/lib/es/tabs/index.js +0 -1
  339. package/lib/es/tagInput/index.d.ts +4 -1
  340. package/lib/es/tagInput/index.js +29 -3
  341. package/lib/es/timePicker/TimePicker.d.ts +12 -0
  342. package/lib/es/timePicker/TimePicker.js +9 -1
  343. package/lib/es/timePicker/index.d.ts +6 -0
  344. package/lib/es/timeline/index.d.ts +1 -1
  345. package/lib/es/timeline/index.js +1 -0
  346. package/lib/es/timeline/item.js +4 -2
  347. package/lib/es/toast/toast.js +2 -0
  348. package/lib/es/tooltip/TriangleArrow.js +1 -0
  349. package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
  350. package/lib/es/tooltip/index.d.ts +16 -12
  351. package/lib/es/tooltip/index.js +53 -39
  352. package/lib/es/transfer/index.js +32 -14
  353. package/lib/es/tree/index.d.ts +1 -0
  354. package/lib/es/tree/index.js +15 -6
  355. package/lib/es/tree/treeNode.d.ts +12 -4
  356. package/lib/es/tree/treeNode.js +44 -4
  357. package/lib/es/treeSelect/index.d.ts +16 -0
  358. package/lib/es/treeSelect/index.js +57 -10
  359. package/lib/es/typography/base.js +17 -7
  360. package/lib/es/typography/copyable.js +5 -1
  361. package/lib/es/upload/fileCard.js +23 -4
  362. package/lib/es/upload/index.js +19 -4
  363. package/list/item.tsx +0 -1
  364. package/modal/Modal.tsx +2 -0
  365. package/modal/ModalContent.tsx +35 -5
  366. package/navigation/Item.tsx +15 -0
  367. package/navigation/SubNav.tsx +13 -1
  368. package/navigation/index.tsx +1 -1
  369. package/notification/notice.tsx +19 -14
  370. package/package.json +8 -8
  371. package/pagination/index.tsx +9 -5
  372. package/popover/index.tsx +5 -0
  373. package/progress/_story/progress.stories.js +18 -18
  374. package/progress/index.tsx +58 -20
  375. package/radio/radio.tsx +12 -2
  376. package/radio/radioGroup.tsx +29 -3
  377. package/radio/radioInner.tsx +10 -1
  378. package/rating/index.tsx +19 -2
  379. package/rating/item.tsx +6 -0
  380. package/select/__test__/select.test.js +45 -0
  381. package/select/_story/select.stories.js +29 -0
  382. package/select/index.tsx +52 -4
  383. package/select/option.tsx +3 -0
  384. package/sideSheet/SideSheetContent.tsx +13 -9
  385. package/sideSheet/index.tsx +3 -2
  386. package/slider/__test__/slider.test.js +9 -0
  387. package/slider/_story/slider.stories.js +1 -1
  388. package/slider/index.tsx +44 -7
  389. package/spin/icon.tsx +3 -3
  390. package/steps/basicStep.tsx +15 -4
  391. package/steps/basicSteps.tsx +3 -2
  392. package/steps/fillStep.tsx +27 -12
  393. package/steps/fillSteps.tsx +2 -0
  394. package/steps/navStep.tsx +15 -4
  395. package/steps/navSteps.tsx +3 -2
  396. package/switch/_story/switch.stories.js +20 -19
  397. package/switch/_story/switch.stories.tsx +13 -13
  398. package/switch/index.tsx +23 -5
  399. package/table/Body/BaseRow.tsx +25 -1
  400. package/table/Body/index.tsx +7 -2
  401. package/table/ColumnFilter.tsx +7 -1
  402. package/table/ColumnSelection.tsx +4 -1
  403. package/table/ColumnSorter.tsx +18 -1
  404. package/table/CustomExpandIcon.tsx +5 -0
  405. package/table/Table.tsx +26 -13
  406. package/table/TableCell.tsx +11 -1
  407. package/table/TableHeaderRow.tsx +16 -2
  408. package/table/__test__/table.test.js +46 -0
  409. package/tabs/TabBar.tsx +8 -5
  410. package/tabs/TabPane.tsx +3 -1
  411. package/tabs/index.tsx +0 -1
  412. package/tagInput/__test__/tagInput.test.js +46 -0
  413. package/tagInput/_story/tagInput.stories.js +2 -2
  414. package/tagInput/index.tsx +31 -8
  415. package/timePicker/TimePicker.tsx +14 -1
  416. package/timeline/_story/timeline.stories.js +1 -1
  417. package/timeline/index.tsx +2 -2
  418. package/timeline/item.tsx +2 -1
  419. package/toast/toast.tsx +2 -0
  420. package/tooltip/TriangleArrow.tsx +1 -1
  421. package/tooltip/TriangleArrowVertical.tsx +1 -1
  422. package/tooltip/_story/tooltip.stories.js +562 -514
  423. package/tooltip/index.tsx +50 -33
  424. package/transfer/index.tsx +29 -25
  425. package/tree/_story/tree.stories.js +3 -3
  426. package/tree/index.tsx +10 -2
  427. package/tree/treeNode.tsx +46 -10
  428. package/treeSelect/__test__/treeMultiple.test.js +5 -0
  429. package/treeSelect/_story/treeSelect.stories.js +12 -0
  430. package/treeSelect/index.tsx +58 -7
  431. package/typography/base.tsx +7 -1
  432. package/typography/copyable.tsx +10 -1
  433. package/upload/fileCard.tsx +13 -15
  434. package/upload/index.tsx +10 -6
@@ -24,6 +24,7 @@ export interface AnchorProps {
24
24
  targetOffset?: number;
25
25
  onChange?: (currentLink: string, previousLink: string) => void;
26
26
  onClick?: (e: React.MouseEvent<HTMLElement>, currentLink: string) => void;
27
+ 'aria-label'?: React.AriaAttributes['aria-label'];
27
28
  }
28
29
  export interface AnchorState {
29
30
  activeLink: string;
@@ -51,6 +52,7 @@ declare class Anchor extends BaseComponent<AnchorProps, AnchorState> {
51
52
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
52
53
  onClick: PropTypes.Requireable<(...args: any[]) => any>;
53
54
  defaultAnchor: PropTypes.Requireable<string>;
55
+ 'aria-label': PropTypes.Requireable<string>;
54
56
  };
55
57
  static defaultProps: {
56
58
  size: string;
@@ -221,6 +221,7 @@ class Anchor extends BaseComponent {
221
221
  position,
222
222
  autoCollapse
223
223
  } = this.props;
224
+ const ariaLabel = this.props['aria-label'];
224
225
  const {
225
226
  activeLink,
226
227
  scrollHeight,
@@ -255,10 +256,13 @@ class Anchor extends BaseComponent {
255
256
  removeLink: this.removeLink
256
257
  }
257
258
  }, /*#__PURE__*/React.createElement("div", {
259
+ role: "navigation",
260
+ "aria-label": ariaLabel || 'Side navigation',
258
261
  className: wrapperCls,
259
262
  style: wrapperStyle,
260
263
  id: this.anchorID
261
264
  }, /*#__PURE__*/React.createElement("div", {
265
+ "aria-hidden": true,
262
266
  className: slideCls,
263
267
  style: {
264
268
  height: scrollHeight
@@ -292,7 +296,8 @@ Anchor.PropTypes = {
292
296
  getContainer: PropTypes.func,
293
297
  onChange: PropTypes.func,
294
298
  onClick: PropTypes.func,
295
- defaultAnchor: PropTypes.string
299
+ defaultAnchor: PropTypes.string,
300
+ 'aria-label': PropTypes.string
296
301
  };
297
302
  Anchor.defaultProps = {
298
303
  size: 'default',
@@ -2,6 +2,7 @@ import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import BaseComponent from '../_base/baseComponent';
4
4
  import LinkFoundation, { LinkAdapter } from '@douyinfe/semi-foundation/lib/es/anchor/linkFoundation';
5
+ import { AnchorContextType } from './anchor-context';
5
6
  export interface LinkProps {
6
7
  href?: string;
7
8
  title?: string | React.ReactNode;
@@ -21,13 +22,15 @@ export default class Link extends BaseComponent<LinkProps, {}> {
21
22
  title: string;
22
23
  className: string;
23
24
  };
24
- static contextType: React.Context<import("./anchor-context").AnchorContextType>;
25
+ static contextType: React.Context<AnchorContextType>;
25
26
  foundation: LinkFoundation;
27
+ context: AnchorContextType;
26
28
  constructor(props: LinkProps);
27
29
  get adapter(): LinkAdapter;
28
30
  handleAddLink(): void;
29
31
  handleRemoveLink(): void;
30
32
  handleUpdateLink(href: string, prevHref: string): void;
33
+ handleClick(e: React.KeyboardEvent | React.MouseEvent): void;
31
34
  componentDidMount(): void;
32
35
  componentDidUpdate(prevProps: LinkProps): void;
33
36
  componentWillUnmount(): void;
@@ -1,4 +1,5 @@
1
1
  import _Object$assign from "@babel/runtime-corejs3/core-js-stable/object/assign";
2
+ import _bindInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/bind";
2
3
  import React from 'react';
3
4
  import cls from 'classnames';
4
5
  import PropTypes from 'prop-types';
@@ -11,6 +12,8 @@ const prefixCls = cssClasses.PREFIX; // eslint-disable-next-line @typescript-esl
11
12
 
12
13
  export default class Link extends BaseComponent {
13
14
  constructor(props) {
15
+ var _context;
16
+
14
17
  super(props);
15
18
 
16
19
  this.renderTitle = () => {
@@ -69,6 +72,7 @@ export default class Link extends BaseComponent {
69
72
  };
70
73
 
71
74
  this.foundation = new LinkFoundation(this.adapter);
75
+ this.handleClick = _bindInstanceProperty(_context = this.handleClick).call(_context, this);
72
76
  }
73
77
 
74
78
  get adapter() {
@@ -94,6 +98,17 @@ export default class Link extends BaseComponent {
94
98
  this.foundation.handleUpdateLink(href, prevHref);
95
99
  }
96
100
 
101
+ handleClick(e) {
102
+ const {
103
+ disabled,
104
+ href
105
+ } = this.props;
106
+ const {
107
+ onClick
108
+ } = this.context;
109
+ !disabled && onClick(e, href);
110
+ }
111
+
97
112
  componentDidMount() {
98
113
  this.handleAddLink();
99
114
  }
@@ -115,11 +130,12 @@ export default class Link extends BaseComponent {
115
130
  href,
116
131
  className,
117
132
  style,
118
- disabled = false
133
+ disabled = false,
134
+ title
119
135
  } = this.props;
120
136
  const {
121
137
  activeLink,
122
- onClick
138
+ showTooltip
123
139
  } = this.context;
124
140
  const active = activeLink === href;
125
141
  const linkCls = cls("".concat(prefixCls, "-link"), className);
@@ -127,13 +143,30 @@ export default class Link extends BaseComponent {
127
143
  ["".concat(prefixCls, "-link-title-active")]: active,
128
144
  ["".concat(prefixCls, "-link-title-disabled")]: disabled
129
145
  });
146
+ const ariaProps = {
147
+ 'aria-disabled': disabled,
148
+ 'aria-label': href
149
+ };
150
+
151
+ if (active) {
152
+ ariaProps['aria-details'] = 'active';
153
+ }
154
+
155
+ if (!showTooltip && typeof title === 'string') {
156
+ ariaProps['title'] = title;
157
+ }
158
+
130
159
  return /*#__PURE__*/React.createElement("div", {
131
160
  className: linkCls,
132
161
  style: style
133
- }, /*#__PURE__*/React.createElement("div", {
162
+ }, /*#__PURE__*/React.createElement("div", _Object$assign({
163
+ role: "link",
164
+ tabIndex: 0
165
+ }, ariaProps, {
134
166
  className: linkTitleCls,
135
- onClick: e => !disabled && onClick(e, href)
136
- }, this.renderTitle()), this.renderChildren());
167
+ onClick: e => this.handleClick(e),
168
+ onKeyPress: e => this.handleClick(e)
169
+ }), this.renderTitle()), this.renderChildren());
137
170
  }
138
171
 
139
172
  }
@@ -18,6 +18,12 @@ export interface BaseDataItem extends DataItem {
18
18
  }
19
19
  export declare type AutoCompleteItems = BaseDataItem | string | number;
20
20
  export interface AutoCompleteProps<T extends AutoCompleteItems> {
21
+ 'aria-describedby'?: React.AriaAttributes['aria-describedby'];
22
+ 'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
23
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
24
+ 'aria-label'?: React.AriaAttributes['aria-label'];
25
+ 'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
26
+ 'aria-required'?: React.AriaAttributes['aria-required'];
21
27
  autoAdjustOverflow?: boolean;
22
28
  autoFocus?: boolean;
23
29
  className?: string;
@@ -33,6 +39,8 @@ export interface AutoCompleteProps<T extends AutoCompleteItems> {
33
39
  emptyContent?: React.ReactNode | null;
34
40
  getPopupContainer?: () => HTMLElement;
35
41
  insetLabel?: React.ReactNode;
42
+ insetLabelId?: string;
43
+ id?: string;
36
44
  loading?: boolean;
37
45
  motion?: Motion;
38
46
  maxHeight?: string | number;
@@ -77,6 +85,12 @@ interface AutoCompleteState {
77
85
  }
78
86
  declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<AutoCompleteProps<T>, AutoCompleteState> {
79
87
  static propTypes: {
88
+ 'aria-label': PropTypes.Requireable<string>;
89
+ 'aria-labelledby': PropTypes.Requireable<string>;
90
+ 'aria-invalid': PropTypes.Requireable<boolean>;
91
+ 'aria-errormessage': PropTypes.Requireable<string>;
92
+ 'aria-describedby': PropTypes.Requireable<string>;
93
+ 'aria-required': PropTypes.Requireable<boolean>;
80
94
  autoFocus: PropTypes.Requireable<boolean>;
81
95
  autoAdjustOverflow: PropTypes.Requireable<boolean>;
82
96
  className: PropTypes.Requireable<string>;
@@ -90,6 +104,9 @@ declare class AutoComplete<T extends AutoCompleteItems> extends BaseComponent<Au
90
104
  dropdownClassName: PropTypes.Requireable<string>;
91
105
  dropdownStyle: PropTypes.Requireable<object>;
92
106
  emptyContent: PropTypes.Requireable<PropTypes.ReactNodeLike>;
107
+ id: PropTypes.Requireable<string>;
108
+ insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
109
+ insetLabelId: PropTypes.Requireable<string>;
93
110
  onSearch: PropTypes.Requireable<(...args: any[]) => any>;
94
111
  onSelect: PropTypes.Requireable<(...args: any[]) => any>;
95
112
  onClear: PropTypes.Requireable<(...args: any[]) => any>;
@@ -175,6 +175,7 @@ class AutoComplete extends BaseComponent {
175
175
  size,
176
176
  prefix,
177
177
  insetLabel,
178
+ insetLabelId,
178
179
  suffix,
179
180
  placeholder,
180
181
  style,
@@ -184,7 +185,8 @@ class AutoComplete extends BaseComponent {
184
185
  triggerRender,
185
186
  validateStatus,
186
187
  autoFocus,
187
- value
188
+ value,
189
+ id
188
190
  } = this.props;
189
191
  const {
190
192
  inputValue,
@@ -200,7 +202,8 @@ class AutoComplete extends BaseComponent {
200
202
  ["".concat(prefixCls, "-disabled")]: disabled
201
203
  }, className),
202
204
  onClick: this.handleInputClick,
203
- ref: this.triggerRef
205
+ ref: this.triggerRef,
206
+ id
204
207
  }, keyboardEventSet);
205
208
 
206
209
  const innerProps = {
@@ -209,9 +212,16 @@ class AutoComplete extends BaseComponent {
209
212
  autofocus: autoFocus,
210
213
  onChange: this.onSearch,
211
214
  onClear: this.onInputClear,
215
+ 'aria-label': this.props['aria-label'],
216
+ 'aria-labelledby': this.props['aria-labelledby'],
217
+ 'aria-invalid': this.props['aria-invalid'],
218
+ 'aria-errormessage': this.props['aria-errormessage'],
219
+ 'aria-describedby': this.props['aria-describedby'],
220
+ 'aria-required': this.props['aria-required'],
212
221
  // TODO: remove in next major version
213
222
  suffix,
214
223
  prefix: prefix || insetLabel,
224
+ insetLabelId,
215
225
  showClear,
216
226
  validateStatus,
217
227
  size,
@@ -326,6 +336,12 @@ class AutoComplete extends BaseComponent {
326
336
  }
327
337
 
328
338
  AutoComplete.propTypes = {
339
+ 'aria-label': PropTypes.string,
340
+ 'aria-labelledby': PropTypes.string,
341
+ 'aria-invalid': PropTypes.bool,
342
+ 'aria-errormessage': PropTypes.string,
343
+ 'aria-describedby': PropTypes.string,
344
+ 'aria-required': PropTypes.bool,
329
345
  autoFocus: PropTypes.bool,
330
346
  autoAdjustOverflow: PropTypes.bool,
331
347
  className: PropTypes.string,
@@ -339,6 +355,9 @@ AutoComplete.propTypes = {
339
355
  dropdownClassName: PropTypes.string,
340
356
  dropdownStyle: PropTypes.object,
341
357
  emptyContent: PropTypes.node,
358
+ id: PropTypes.string,
359
+ insetLabel: PropTypes.node,
360
+ insetLabelId: PropTypes.string,
342
361
  onSearch: PropTypes.func,
343
362
  onSelect: PropTypes.func,
344
363
  onClear: PropTypes.func,
@@ -115,7 +115,8 @@ export default class AvatarGroup extends PureComponent {
115
115
  }
116
116
 
117
117
  return /*#__PURE__*/React.createElement("div", {
118
- className: groupCls
118
+ className: groupCls,
119
+ "aria-label": "avatar group"
119
120
  }, inner);
120
121
  }
121
122
 
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { AvatarAdapter } from '@douyinfe/semi-foundation/lib/es/avatar/foundation';
3
+ import AvatarFoundation, { AvatarAdapter } from '@douyinfe/semi-foundation/lib/es/avatar/foundation';
4
4
  import '@douyinfe/semi-foundation/lib/es/avatar/avatar.css';
5
5
  import { noop } from '@douyinfe/semi-foundation/lib/es/utils/function';
6
6
  import BaseComponent from '../_base/baseComponent';
@@ -36,13 +36,14 @@ export default class Avatar extends BaseComponent<AvatarProps, AvatarState> {
36
36
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
37
37
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
38
38
  };
39
+ foundation: AvatarFoundation;
39
40
  constructor(props: AvatarProps);
40
41
  get adapter(): AvatarAdapter<AvatarProps, AvatarState>;
41
42
  componentDidMount(): void;
42
43
  componentDidUpdate(prevProps: AvatarProps): void;
43
44
  componentWillUnmount(): void;
44
- onEnter(): void;
45
- onLeave(): void;
45
+ onEnter(e: React.MouseEvent): void;
46
+ onLeave(e: React.MouseEvent): void;
46
47
  handleError(): void;
47
48
  render(): JSX.Element;
48
49
  }
@@ -110,12 +110,12 @@ export default class Avatar extends BaseComponent {
110
110
  this.foundation.destroy();
111
111
  }
112
112
 
113
- onEnter() {
114
- this.foundation.handleEnter();
113
+ onEnter(e) {
114
+ this.foundation.handleEnter(e);
115
115
  }
116
116
 
117
- onLeave() {
118
- this.foundation.handleLeave();
117
+ onLeave(e) {
118
+ this.foundation.handleLeave(e);
119
119
  }
120
120
 
121
121
  handleError() {
@@ -158,6 +158,7 @@ export default class Avatar extends BaseComponent {
158
158
  const hoverRender = hoverContent ? /*#__PURE__*/React.createElement("div", {
159
159
  className: "".concat(prefixCls, "-hover")
160
160
  }, hoverContent) : null;
161
+ let ariaLabel;
161
162
 
162
163
  if (isImg) {
163
164
  content = /*#__PURE__*/React.createElement("img", _Object$assign({
@@ -166,21 +167,29 @@ export default class Avatar extends BaseComponent {
166
167
  onError: this.handleError,
167
168
  alt: alt
168
169
  }, imgAttr));
170
+ ariaLabel = 'avatar';
169
171
  } else if (typeof children === 'string') {
170
172
  content = /*#__PURE__*/React.createElement("span", {
171
173
  className: "".concat(prefixCls, "-content")
172
174
  }, /*#__PURE__*/React.createElement("span", {
173
175
  className: "".concat(prefixCls, "-label")
174
176
  }, children));
177
+ ariaLabel = "avatar of ".concat(children);
175
178
  }
176
179
 
177
- return /*#__PURE__*/React.createElement("span", _Object$assign({}, others, {
178
- style: style,
179
- className: avatarCls,
180
- onClick: onClick,
181
- onMouseEnter: this.onEnter,
182
- onMouseLeave: this.onLeave
183
- }), content, hoverRender);
180
+ return (
181
+ /*#__PURE__*/
182
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events
183
+ React.createElement("span", _Object$assign({
184
+ "aria-label": ariaLabel
185
+ }, others, {
186
+ style: style,
187
+ className: avatarCls,
188
+ onClick: onClick,
189
+ onMouseEnter: this.onEnter,
190
+ onMouseLeave: this.onLeave
191
+ }), content, hoverRender)
192
+ );
184
193
  }
185
194
 
186
195
  }
@@ -70,7 +70,8 @@ export default class Banner extends BaseComponent {
70
70
  icon: closeIcon || /*#__PURE__*/React.createElement(IconClose, null),
71
71
  theme: "borderless",
72
72
  size: "small",
73
- type: "tertiary"
73
+ type: "tertiary",
74
+ "aria-label": 'Close'
74
75
  });
75
76
  return closer;
76
77
  }
@@ -137,7 +138,8 @@ export default class Banner extends BaseComponent {
137
138
  });
138
139
  const banner = visible ? /*#__PURE__*/React.createElement("div", {
139
140
  className: wrapper,
140
- style: style
141
+ style: style,
142
+ role: "alert"
141
143
  }, /*#__PURE__*/React.createElement("div", {
142
144
  className: "".concat(prefixCls, "-content-wrapper")
143
145
  }, /*#__PURE__*/React.createElement("div", {
@@ -27,6 +27,7 @@ export interface BreadcrumbProps extends BaseProps {
27
27
  autoCollapse?: boolean;
28
28
  renderMore?: (restItem: Array<React.ReactNode>) => React.ReactNode;
29
29
  moreType?: MoreType;
30
+ 'aria-label'?: React.AriaAttributes['aria-label'];
30
31
  }
31
32
  interface BreadcrumbState {
32
33
  isCollapsed: boolean;
@@ -52,6 +53,7 @@ declare class Breadcrumb extends BaseComponent<BreadcrumbProps, BreadcrumbState>
52
53
  maxItemCount: propTypes.Requireable<number>;
53
54
  renderMore: propTypes.Requireable<(...args: any[]) => any>;
54
55
  moreType: propTypes.Requireable<string>;
56
+ 'aria-label': propTypes.Requireable<string>;
55
57
  };
56
58
  static defaultProps: {
57
59
  routes: [];
@@ -66,6 +68,7 @@ declare class Breadcrumb extends BaseComponent<BreadcrumbProps, BreadcrumbState>
66
68
  autoCollapse: boolean;
67
69
  moreType: string;
68
70
  maxItemCount: number;
71
+ 'aria-label': string;
69
72
  };
70
73
  constructor(props: BreadcrumbProps);
71
74
  get adapter(): BreadcrumbAdapter<BreadcrumbProps, BreadcrumbState>;
@@ -47,8 +47,12 @@ class Breadcrumb extends BaseComponent {
47
47
  }, /*#__PURE__*/React.createElement("span", {
48
48
  className: "".concat(clsPrefix, "-item-wrap")
49
49
  }, /*#__PURE__*/React.createElement("span", {
50
+ role: 'button',
51
+ tabIndex: 0,
52
+ "aria-label": 'Expand breadcrumb items',
50
53
  className: _concatInstanceProperty(_context = "".concat(clsPrefix, "-item ")).call(_context, clsPrefix, "-item-more"),
51
- onClick: item => this.foundation.handleExpand(item)
54
+ onClick: item => this.foundation.handleExpand(item),
55
+ onKeyPress: e => this.foundation.handleExpandEnterPress(e)
52
56
  }, hasRenderMore && renderMore(restItem), !hasRenderMore && moreType === 'default' && /*#__PURE__*/React.createElement(IconMore, null), !hasRenderMore && moreType === 'popover' && this.renderPopoverMore(restItem)), /*#__PURE__*/React.createElement("span", {
53
57
  className: "".concat(clsPrefix, "-separator")
54
58
  }, this.props.separator)));
@@ -210,7 +214,7 @@ class Breadcrumb extends BaseComponent {
210
214
  separator
211
215
  }
212
216
  }, /*#__PURE__*/React.createElement("nav", {
213
- "aria-label": "".concat(clsPrefix),
217
+ "aria-label": this.props['aria-label'],
214
218
  className: sizeCls,
215
219
  style: style
216
220
  }, breadcrumbs));
@@ -241,7 +245,8 @@ Breadcrumb.propTypes = {
241
245
  renderMore: propTypes.func,
242
246
 
243
247
  /* Type of ellipsis area */
244
- moreType: propTypes.oneOf(strings.MORE_TYPE)
248
+ moreType: propTypes.oneOf(strings.MORE_TYPE),
249
+ 'aria-label': propTypes.string
245
250
  };
246
251
  Breadcrumb.defaultProps = {
247
252
  routes: [],
@@ -255,6 +260,7 @@ Breadcrumb.defaultProps = {
255
260
  },
256
261
  autoCollapse: true,
257
262
  moreType: 'default',
258
- maxItemCount: 4
263
+ maxItemCount: 4,
264
+ 'aria-label': 'Breadcrumb'
259
265
  };
260
266
  export default Breadcrumb;
@@ -177,9 +177,9 @@ export default class BreadcrumbItem extends BaseComponent {
177
177
  shouldRenderSeparator // children,
178
178
 
179
179
  } = this.props;
180
- const pageLabel = active ? {} : {
180
+ const pageLabel = active ? {
181
181
  'aria-current': 'page'
182
- };
182
+ } : {};
183
183
  const item = this.renderItem();
184
184
  const separator = !active ? this.props.separator || /*#__PURE__*/React.createElement("span", {
185
185
  className: "".concat(clsPrefix, "-separator")
@@ -25,6 +25,7 @@ export interface ButtonProps {
25
25
  onMouseDown?: React.MouseEventHandler<HTMLButtonElement>;
26
26
  onMouseEnter?: React.MouseEventHandler<HTMLButtonElement>;
27
27
  onMouseLeave?: React.MouseEventHandler<HTMLButtonElement>;
28
+ 'aria-label'?: React.AriaAttributes['aria-label'];
28
29
  }
29
30
  export default class Button extends PureComponent<ButtonProps> {
30
31
  static defaultProps: {
@@ -57,6 +58,7 @@ export default class Button extends PureComponent<ButtonProps> {
57
58
  className: PropTypes.Requireable<string>;
58
59
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
59
60
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
61
+ 'aria-label': PropTypes.Requireable<string>;
60
62
  };
61
63
  render(): JSX.Element;
62
64
  }
@@ -64,7 +64,8 @@ export default class Button extends PureComponent {
64
64
  ["".concat(prefixCls, "-circle")]: circle,
65
65
  ["".concat(prefixCls, "-borderless")]: theme === 'borderless'
66
66
  }, className),
67
- type: htmlType
67
+ type: htmlType,
68
+ 'aria-disabled': disabled
68
69
  });
69
70
 
70
71
  return (
@@ -111,5 +112,6 @@ Button.propTypes = {
111
112
  theme: PropTypes.oneOf(strings.themes),
112
113
  className: PropTypes.string,
113
114
  onMouseEnter: PropTypes.func,
114
- onMouseLeave: PropTypes.func
115
+ onMouseLeave: PropTypes.func,
116
+ 'aria-label': PropTypes.string
115
117
  };
@@ -1,3 +1,4 @@
1
+ import React from 'react';
1
2
  import BaseComponent, { BaseProps } from '../_base/baseComponent';
2
3
  import PropTypes from 'prop-types';
3
4
  import { Type, Size } from './Button';
@@ -8,6 +9,7 @@ export interface ButtonGroupProps extends BaseProps {
8
9
  type?: Type;
9
10
  size?: Size;
10
11
  theme?: Theme;
12
+ 'aria-label'?: React.AriaAttributes['aria-label'];
11
13
  }
12
14
  export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
13
15
  static propTypes: {
@@ -16,6 +18,7 @@ export default class ButtonGroup extends BaseComponent<ButtonGroupProps> {
16
18
  type: PropTypes.Requireable<string>;
17
19
  size: PropTypes.Requireable<unknown>;
18
20
  theme: PropTypes.Requireable<unknown>;
21
+ 'aria-label': PropTypes.Requireable<string>;
19
22
  };
20
23
  static defaultProps: {
21
24
  size: string;
@@ -29,9 +29,10 @@ export default class ButtonGroup extends BaseComponent {
29
29
  children,
30
30
  disabled,
31
31
  size,
32
- type
32
+ type,
33
+ 'aria-label': ariaLabel
33
34
  } = _a,
34
- rest = __rest(_a, ["children", "disabled", "size", "type"]);
35
+ rest = __rest(_a, ["children", "disabled", "size", "type", 'aria-label']);
35
36
 
36
37
  let inner;
37
38
 
@@ -48,7 +49,9 @@ export default class ButtonGroup extends BaseComponent {
48
49
  }
49
50
 
50
51
  return /*#__PURE__*/React.createElement("div", {
51
- className: "".concat(prefixCls, "-group")
52
+ className: "".concat(prefixCls, "-group"),
53
+ role: "group",
54
+ "aria-label": ariaLabel
52
55
  }, inner);
53
56
  }
54
57
 
@@ -58,7 +61,8 @@ ButtonGroup.propTypes = {
58
61
  disabled: PropTypes.bool,
59
62
  type: PropTypes.string,
60
63
  size: PropTypes.oneOf(btnSizes),
61
- theme: PropTypes.oneOf(strings.themes)
64
+ theme: PropTypes.oneOf(strings.themes),
65
+ 'aria-label': PropTypes.string
62
66
  };
63
67
  ButtonGroup.defaultProps = {
64
68
  size: 'default',
@@ -30,6 +30,7 @@ declare class Button extends React.PureComponent<ButtonProps> {
30
30
  onMouseDown: import("prop-types").Requireable<(...args: any[]) => any>;
31
31
  circle: import("prop-types").Requireable<boolean>;
32
32
  htmlType: import("prop-types").Requireable<unknown>;
33
+ 'aria-label': import("prop-types").Requireable<string>;
33
34
  };
34
35
  constructor(props?: {});
35
36
  render(): JSX.Element;
@@ -1,12 +1,15 @@
1
+ import React from 'react';
1
2
  import PropTypes from 'prop-types';
2
3
  import '@douyinfe/semi-foundation/lib/es/button/button.css';
3
4
  import BaseComponent, { BaseProps } from '../_base/baseComponent';
4
5
  export interface SplitButtonGroupProps extends BaseProps {
6
+ 'aria-label'?: React.AriaAttributes['aria-label'];
5
7
  }
6
8
  export default class SplitButtonGroup extends BaseComponent<SplitButtonGroupProps> {
7
9
  static propTypes: {
8
10
  style: PropTypes.Requireable<object>;
9
11
  className: PropTypes.Requireable<string>;
12
+ 'aria-label': PropTypes.Requireable<string>;
10
13
  };
11
14
  render(): JSX.Element;
12
15
  }
@@ -15,12 +15,15 @@ export default class SplitButtonGroup extends BaseComponent {
15
15
  const cls = classNames("".concat(prefixCls, "-split"), className);
16
16
  return /*#__PURE__*/React.createElement("div", {
17
17
  className: cls,
18
- style: style
18
+ style: style,
19
+ role: "group",
20
+ "aria-label": this.props['aria-label']
19
21
  }, children);
20
22
  }
21
23
 
22
24
  }
23
25
  SplitButtonGroup.propTypes = {
24
26
  style: PropTypes.object,
25
- className: PropTypes.string
27
+ className: PropTypes.string,
28
+ 'aria-label': PropTypes.string
26
29
  };
@@ -38,6 +38,8 @@ export interface CardProps {
38
38
  style?: CSSProperties;
39
39
  /** Title */
40
40
  title?: ReactNode;
41
+ /** aria label */
42
+ 'aria-label'?: string;
41
43
  }
42
44
  declare class Card extends PureComponent<CardProps> {
43
45
  static Meta: typeof Meta;
@@ -59,6 +61,7 @@ declare class Card extends PureComponent<CardProps> {
59
61
  shadows: PropTypes.Requireable<string>;
60
62
  style: PropTypes.Requireable<object>;
61
63
  title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
64
+ 'aria-label': PropTypes.Requireable<string>;
62
65
  };
63
66
  static defaultProps: {
64
67
  bordered: boolean;
@@ -150,6 +150,7 @@ class Card extends PureComponent {
150
150
  [_concatInstanceProperty(_context = "".concat(prefixcls, "-shadows-")).call(_context, shadows)]: shadows
151
151
  });
152
152
  return /*#__PURE__*/React.createElement("div", _Object$assign({}, others, {
153
+ "aria-busy": this.props.loading,
153
154
  className: cardCls,
154
155
  style: style
155
156
  }), this.renderHeader(), this.renderCover(), this.renderBody(), this.renderFooter());
@@ -175,7 +176,8 @@ Card.propTypes = {
175
176
  loading: PropTypes.bool,
176
177
  shadows: PropTypes.oneOf(strings.SHADOWS),
177
178
  style: PropTypes.object,
178
- title: PropTypes.node
179
+ title: PropTypes.node,
180
+ 'aria-label': PropTypes.string
179
181
  };
180
182
  Card.defaultProps = {
181
183
  bordered: true,