@douyinfe/semi-ui 2.2.0-beta.1 → 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 (444) 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/__test__/datePicker.test.js +108 -0
  33. package/datePicker/_story/datePicker.stories.js +146 -2
  34. package/datePicker/datePicker.tsx +24 -0
  35. package/datePicker/monthsGrid.tsx +2 -1
  36. package/dist/css/semi.css +34 -7
  37. package/dist/css/semi.min.css +1 -1
  38. package/dist/umd/semi-ui.js +2785 -1508
  39. package/dist/umd/semi-ui.js.map +1 -1
  40. package/dist/umd/semi-ui.min.js +1 -1
  41. package/dist/umd/semi-ui.min.js.map +1 -1
  42. package/dropdown/dropdownItem.tsx +1 -1
  43. package/dropdown/dropdownMenu.tsx +1 -1
  44. package/empty/index.tsx +5 -5
  45. package/form/_story/FormApi/formApiDemo.jsx +3 -2
  46. package/form/_story/Validate/validateDemo.jsx +1 -1
  47. package/form/_story/demo.jsx +12 -3
  48. package/form/_story/form.stories.js +0 -7
  49. package/form/baseForm.tsx +2 -0
  50. package/form/errorMessage.tsx +13 -2
  51. package/form/hoc/withField.tsx +37 -8
  52. package/form/index.tsx +0 -2
  53. package/form/interface.ts +2 -0
  54. package/form/label.tsx +4 -2
  55. package/input/index.tsx +49 -4
  56. package/input/inputGroup.tsx +9 -4
  57. package/input/textarea.tsx +25 -6
  58. package/inputNumber/_story/inputNumber.stories.js +12 -0
  59. package/inputNumber/index.tsx +33 -2
  60. package/layout/Sider.tsx +6 -2
  61. package/layout/index.tsx +4 -3
  62. package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
  63. package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
  64. package/lib/cjs/_utils/index.d.ts +1 -0
  65. package/lib/cjs/_utils/index.js +6 -1
  66. package/lib/cjs/anchor/index.d.ts +2 -0
  67. package/lib/cjs/anchor/index.js +6 -1
  68. package/lib/cjs/anchor/link.d.ts +4 -1
  69. package/lib/cjs/anchor/link.js +39 -5
  70. package/lib/cjs/autoComplete/index.d.ts +17 -0
  71. package/lib/cjs/autoComplete/index.js +21 -2
  72. package/lib/cjs/avatar/avatarGroup.js +2 -1
  73. package/lib/cjs/avatar/index.d.ts +4 -3
  74. package/lib/cjs/avatar/index.js +20 -11
  75. package/lib/cjs/banner/index.js +4 -2
  76. package/lib/cjs/breadcrumb/index.d.ts +3 -0
  77. package/lib/cjs/breadcrumb/index.js +10 -4
  78. package/lib/cjs/breadcrumb/item.js +2 -2
  79. package/lib/cjs/button/Button.d.ts +2 -0
  80. package/lib/cjs/button/Button.js +4 -2
  81. package/lib/cjs/button/buttonGroup.d.ts +3 -0
  82. package/lib/cjs/button/buttonGroup.js +8 -4
  83. package/lib/cjs/button/index.d.ts +1 -0
  84. package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
  85. package/lib/cjs/button/splitButtonGroup.js +5 -2
  86. package/lib/cjs/card/index.d.ts +3 -0
  87. package/lib/cjs/card/index.js +3 -1
  88. package/lib/cjs/cascader/index.d.ts +14 -0
  89. package/lib/cjs/cascader/index.js +35 -7
  90. package/lib/cjs/checkbox/checkbox.d.ts +21 -1
  91. package/lib/cjs/checkbox/checkbox.js +51 -17
  92. package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
  93. package/lib/cjs/checkbox/checkboxGroup.js +16 -3
  94. package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
  95. package/lib/cjs/checkbox/checkboxInner.js +20 -3
  96. package/lib/cjs/collapse/index.js +2 -1
  97. package/lib/cjs/collapse/item.d.ts +2 -1
  98. package/lib/cjs/collapse/item.js +17 -3
  99. package/lib/cjs/collapsible/index.d.ts +1 -0
  100. package/lib/cjs/collapsible/index.js +4 -2
  101. package/lib/cjs/datePicker/datePicker.d.ts +12 -0
  102. package/lib/cjs/datePicker/datePicker.js +22 -3
  103. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -0
  104. package/lib/cjs/datePicker/monthsGrid.js +2 -1
  105. package/lib/cjs/dropdown/dropdownItem.js +3 -1
  106. package/lib/cjs/dropdown/dropdownMenu.js +4 -1
  107. package/lib/cjs/empty/index.js +2 -1
  108. package/lib/cjs/form/baseForm.d.ts +9 -0
  109. package/lib/cjs/form/baseForm.js +3 -1
  110. package/lib/cjs/form/errorMessage.d.ts +4 -0
  111. package/lib/cjs/form/errorMessage.js +21 -3
  112. package/lib/cjs/form/field.d.ts +7 -0
  113. package/lib/cjs/form/hoc/withField.js +49 -16
  114. package/lib/cjs/form/index.d.ts +0 -1
  115. package/lib/cjs/form/interface.d.ts +2 -0
  116. package/lib/cjs/form/label.d.ts +2 -0
  117. package/lib/cjs/form/label.js +5 -2
  118. package/lib/cjs/input/index.d.ts +16 -0
  119. package/lib/cjs/input/index.js +51 -15
  120. package/lib/cjs/input/inputGroup.d.ts +2 -1
  121. package/lib/cjs/input/inputGroup.js +11 -1
  122. package/lib/cjs/input/textarea.js +12 -1
  123. package/lib/cjs/inputNumber/index.d.ts +21 -12
  124. package/lib/cjs/inputNumber/index.js +37 -3
  125. package/lib/cjs/layout/Sider.d.ts +4 -0
  126. package/lib/cjs/layout/Sider.js +4 -1
  127. package/lib/cjs/layout/index.js +2 -0
  128. package/lib/cjs/list/item.js +0 -1
  129. package/lib/cjs/modal/Modal.js +2 -0
  130. package/lib/cjs/modal/ModalContent.d.ts +3 -1
  131. package/lib/cjs/modal/ModalContent.js +47 -5
  132. package/lib/cjs/navigation/Item.d.ts +4 -2
  133. package/lib/cjs/navigation/Item.js +25 -5
  134. package/lib/cjs/navigation/SubNav.d.ts +4 -2
  135. package/lib/cjs/navigation/SubNav.js +8 -1
  136. package/lib/cjs/navigation/index.js +2 -0
  137. package/lib/cjs/notification/notice.d.ts +1 -1
  138. package/lib/cjs/notification/notice.js +32 -22
  139. package/lib/cjs/pagination/index.js +16 -6
  140. package/lib/cjs/popover/index.js +7 -3
  141. package/lib/cjs/progress/index.d.ts +8 -0
  142. package/lib/cjs/progress/index.js +42 -9
  143. package/lib/cjs/radio/radio.d.ts +6 -1
  144. package/lib/cjs/radio/radio.js +17 -5
  145. package/lib/cjs/radio/radioGroup.d.ts +16 -1
  146. package/lib/cjs/radio/radioGroup.js +18 -3
  147. package/lib/cjs/radio/radioInner.d.ts +6 -1
  148. package/lib/cjs/radio/radioInner.js +11 -3
  149. package/lib/cjs/rating/index.d.ts +14 -0
  150. package/lib/cjs/rating/index.js +14 -3
  151. package/lib/cjs/rating/item.d.ts +2 -0
  152. package/lib/cjs/rating/item.js +6 -1
  153. package/lib/cjs/select/index.d.ts +16 -0
  154. package/lib/cjs/select/index.js +65 -19
  155. package/lib/cjs/select/option.js +28 -22
  156. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  157. package/lib/cjs/sideSheet/SideSheetContent.js +12 -5
  158. package/lib/cjs/sideSheet/index.d.ts +1 -0
  159. package/lib/cjs/sideSheet/index.js +2 -1
  160. package/lib/cjs/slider/index.d.ts +2 -1
  161. package/lib/cjs/slider/index.js +64 -17
  162. package/lib/cjs/spin/icon.js +2 -4
  163. package/lib/cjs/steps/basicStep.d.ts +3 -0
  164. package/lib/cjs/steps/basicStep.js +23 -25
  165. package/lib/cjs/steps/basicSteps.d.ts +1 -0
  166. package/lib/cjs/steps/basicSteps.js +2 -1
  167. package/lib/cjs/steps/fillStep.d.ts +3 -0
  168. package/lib/cjs/steps/fillStep.js +19 -4
  169. package/lib/cjs/steps/fillSteps.d.ts +1 -0
  170. package/lib/cjs/steps/fillSteps.js +2 -1
  171. package/lib/cjs/steps/navStep.d.ts +3 -0
  172. package/lib/cjs/steps/navStep.js +22 -25
  173. package/lib/cjs/steps/navSteps.d.ts +1 -0
  174. package/lib/cjs/steps/navSteps.js +2 -1
  175. package/lib/cjs/switch/index.d.ts +12 -0
  176. package/lib/cjs/switch/index.js +19 -4
  177. package/lib/cjs/table/Body/BaseRow.js +35 -3
  178. package/lib/cjs/table/Body/index.js +9 -1
  179. package/lib/cjs/table/ColumnFilter.js +4 -0
  180. package/lib/cjs/table/ColumnSelection.d.ts +3 -0
  181. package/lib/cjs/table/ColumnSelection.js +6 -2
  182. package/lib/cjs/table/ColumnSorter.js +19 -3
  183. package/lib/cjs/table/CustomExpandIcon.js +7 -1
  184. package/lib/cjs/table/Table.d.ts +2 -0
  185. package/lib/cjs/table/Table.js +31 -15
  186. package/lib/cjs/table/TableCell.d.ts +2 -0
  187. package/lib/cjs/table/TableCell.js +6 -2
  188. package/lib/cjs/table/TableHeaderRow.js +8 -2
  189. package/lib/cjs/tabs/TabBar.js +11 -3
  190. package/lib/cjs/tabs/TabPane.js +3 -1
  191. package/lib/cjs/tabs/index.js +3 -8
  192. package/lib/cjs/tagInput/index.d.ts +4 -1
  193. package/lib/cjs/tagInput/index.js +29 -3
  194. package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
  195. package/lib/cjs/timePicker/TimePicker.js +9 -1
  196. package/lib/cjs/timePicker/index.d.ts +6 -0
  197. package/lib/cjs/timeline/index.d.ts +1 -1
  198. package/lib/cjs/timeline/index.js +1 -0
  199. package/lib/cjs/timeline/item.js +4 -2
  200. package/lib/cjs/toast/toast.js +2 -0
  201. package/lib/cjs/tooltip/TriangleArrow.js +1 -0
  202. package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
  203. package/lib/cjs/tooltip/index.d.ts +16 -12
  204. package/lib/cjs/tooltip/index.js +55 -39
  205. package/lib/cjs/transfer/index.d.ts +1 -1
  206. package/lib/cjs/transfer/index.js +35 -17
  207. package/lib/cjs/tree/index.d.ts +1 -0
  208. package/lib/cjs/tree/index.js +15 -6
  209. package/lib/cjs/tree/treeNode.d.ts +12 -4
  210. package/lib/cjs/tree/treeNode.js +44 -4
  211. package/lib/cjs/treeSelect/index.d.ts +16 -0
  212. package/lib/cjs/treeSelect/index.js +60 -12
  213. package/lib/cjs/typography/base.js +18 -7
  214. package/lib/cjs/typography/copyable.js +6 -1
  215. package/lib/cjs/upload/fileCard.js +23 -4
  216. package/lib/cjs/upload/index.js +19 -4
  217. package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
  218. package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
  219. package/lib/es/_utils/index.d.ts +1 -0
  220. package/lib/es/_utils/index.js +4 -1
  221. package/lib/es/anchor/index.d.ts +2 -0
  222. package/lib/es/anchor/index.js +6 -1
  223. package/lib/es/anchor/link.d.ts +4 -1
  224. package/lib/es/anchor/link.js +38 -5
  225. package/lib/es/autoComplete/index.d.ts +17 -0
  226. package/lib/es/autoComplete/index.js +21 -2
  227. package/lib/es/avatar/avatarGroup.js +2 -1
  228. package/lib/es/avatar/index.d.ts +4 -3
  229. package/lib/es/avatar/index.js +20 -11
  230. package/lib/es/banner/index.js +4 -2
  231. package/lib/es/breadcrumb/index.d.ts +3 -0
  232. package/lib/es/breadcrumb/index.js +10 -4
  233. package/lib/es/breadcrumb/item.js +2 -2
  234. package/lib/es/button/Button.d.ts +2 -0
  235. package/lib/es/button/Button.js +4 -2
  236. package/lib/es/button/buttonGroup.d.ts +3 -0
  237. package/lib/es/button/buttonGroup.js +8 -4
  238. package/lib/es/button/index.d.ts +1 -0
  239. package/lib/es/button/splitButtonGroup.d.ts +3 -0
  240. package/lib/es/button/splitButtonGroup.js +5 -2
  241. package/lib/es/card/index.d.ts +3 -0
  242. package/lib/es/card/index.js +3 -1
  243. package/lib/es/cascader/index.d.ts +14 -0
  244. package/lib/es/cascader/index.js +35 -7
  245. package/lib/es/checkbox/checkbox.d.ts +21 -1
  246. package/lib/es/checkbox/checkbox.js +50 -17
  247. package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
  248. package/lib/es/checkbox/checkboxGroup.js +18 -5
  249. package/lib/es/checkbox/checkboxInner.d.ts +15 -0
  250. package/lib/es/checkbox/checkboxInner.js +20 -3
  251. package/lib/es/collapse/index.js +2 -1
  252. package/lib/es/collapse/item.d.ts +2 -1
  253. package/lib/es/collapse/item.js +16 -3
  254. package/lib/es/collapsible/index.d.ts +1 -0
  255. package/lib/es/collapsible/index.js +4 -2
  256. package/lib/es/datePicker/datePicker.d.ts +12 -0
  257. package/lib/es/datePicker/datePicker.js +22 -3
  258. package/lib/es/datePicker/monthsGrid.d.ts +1 -0
  259. package/lib/es/datePicker/monthsGrid.js +2 -1
  260. package/lib/es/dropdown/dropdownItem.js +3 -1
  261. package/lib/es/dropdown/dropdownMenu.js +4 -1
  262. package/lib/es/empty/index.js +2 -1
  263. package/lib/es/form/baseForm.d.ts +9 -0
  264. package/lib/es/form/baseForm.js +3 -1
  265. package/lib/es/form/errorMessage.d.ts +4 -0
  266. package/lib/es/form/errorMessage.js +21 -3
  267. package/lib/es/form/field.d.ts +7 -0
  268. package/lib/es/form/hoc/withField.js +48 -15
  269. package/lib/es/form/index.d.ts +0 -1
  270. package/lib/es/form/index.js +0 -1
  271. package/lib/es/form/interface.d.ts +2 -0
  272. package/lib/es/form/label.d.ts +2 -0
  273. package/lib/es/form/label.js +5 -2
  274. package/lib/es/input/index.d.ts +16 -0
  275. package/lib/es/input/index.js +51 -15
  276. package/lib/es/input/inputGroup.d.ts +2 -1
  277. package/lib/es/input/inputGroup.js +11 -1
  278. package/lib/es/input/textarea.js +12 -1
  279. package/lib/es/inputNumber/index.d.ts +21 -12
  280. package/lib/es/inputNumber/index.js +38 -3
  281. package/lib/es/layout/Sider.d.ts +4 -0
  282. package/lib/es/layout/Sider.js +4 -1
  283. package/lib/es/layout/index.js +2 -0
  284. package/lib/es/list/item.js +0 -1
  285. package/lib/es/modal/Modal.js +2 -0
  286. package/lib/es/modal/ModalContent.d.ts +3 -1
  287. package/lib/es/modal/ModalContent.js +46 -5
  288. package/lib/es/navigation/Item.d.ts +4 -2
  289. package/lib/es/navigation/Item.js +25 -5
  290. package/lib/es/navigation/SubNav.d.ts +4 -2
  291. package/lib/es/navigation/SubNav.js +8 -1
  292. package/lib/es/navigation/index.js +2 -0
  293. package/lib/es/notification/notice.d.ts +1 -1
  294. package/lib/es/notification/notice.js +33 -24
  295. package/lib/es/pagination/index.js +16 -6
  296. package/lib/es/popover/index.js +7 -3
  297. package/lib/es/progress/index.d.ts +8 -0
  298. package/lib/es/progress/index.js +42 -9
  299. package/lib/es/radio/radio.d.ts +6 -1
  300. package/lib/es/radio/radio.js +16 -5
  301. package/lib/es/radio/radioGroup.d.ts +16 -1
  302. package/lib/es/radio/radioGroup.js +18 -3
  303. package/lib/es/radio/radioInner.d.ts +6 -1
  304. package/lib/es/radio/radioInner.js +11 -3
  305. package/lib/es/rating/index.d.ts +14 -0
  306. package/lib/es/rating/index.js +14 -3
  307. package/lib/es/rating/item.d.ts +2 -0
  308. package/lib/es/rating/item.js +6 -1
  309. package/lib/es/select/index.d.ts +16 -0
  310. package/lib/es/select/index.js +63 -17
  311. package/lib/es/select/option.js +28 -22
  312. package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
  313. package/lib/es/sideSheet/SideSheetContent.js +12 -5
  314. package/lib/es/sideSheet/index.d.ts +1 -0
  315. package/lib/es/sideSheet/index.js +2 -1
  316. package/lib/es/slider/index.d.ts +2 -1
  317. package/lib/es/slider/index.js +63 -16
  318. package/lib/es/spin/icon.js +2 -4
  319. package/lib/es/steps/basicStep.d.ts +3 -0
  320. package/lib/es/steps/basicStep.js +23 -23
  321. package/lib/es/steps/basicSteps.d.ts +1 -0
  322. package/lib/es/steps/basicSteps.js +2 -1
  323. package/lib/es/steps/fillStep.d.ts +3 -0
  324. package/lib/es/steps/fillStep.js +19 -4
  325. package/lib/es/steps/fillSteps.d.ts +1 -0
  326. package/lib/es/steps/fillSteps.js +2 -1
  327. package/lib/es/steps/navStep.d.ts +3 -0
  328. package/lib/es/steps/navStep.js +22 -23
  329. package/lib/es/steps/navSteps.d.ts +1 -0
  330. package/lib/es/steps/navSteps.js +2 -1
  331. package/lib/es/switch/index.d.ts +12 -0
  332. package/lib/es/switch/index.js +19 -4
  333. package/lib/es/table/Body/BaseRow.js +35 -3
  334. package/lib/es/table/Body/index.js +9 -2
  335. package/lib/es/table/ColumnFilter.js +4 -0
  336. package/lib/es/table/ColumnSelection.d.ts +3 -0
  337. package/lib/es/table/ColumnSelection.js +6 -2
  338. package/lib/es/table/ColumnSorter.js +17 -3
  339. package/lib/es/table/CustomExpandIcon.js +6 -1
  340. package/lib/es/table/Table.d.ts +2 -0
  341. package/lib/es/table/Table.js +31 -15
  342. package/lib/es/table/TableCell.d.ts +2 -0
  343. package/lib/es/table/TableCell.js +6 -2
  344. package/lib/es/table/TableHeaderRow.js +8 -2
  345. package/lib/es/tabs/TabBar.js +11 -3
  346. package/lib/es/tabs/TabPane.js +3 -1
  347. package/lib/es/tabs/index.js +1 -6
  348. package/lib/es/tagInput/index.d.ts +4 -1
  349. package/lib/es/tagInput/index.js +29 -3
  350. package/lib/es/timePicker/TimePicker.d.ts +12 -0
  351. package/lib/es/timePicker/TimePicker.js +9 -1
  352. package/lib/es/timePicker/index.d.ts +6 -0
  353. package/lib/es/timeline/index.d.ts +1 -1
  354. package/lib/es/timeline/index.js +1 -0
  355. package/lib/es/timeline/item.js +4 -2
  356. package/lib/es/toast/toast.js +2 -0
  357. package/lib/es/tooltip/TriangleArrow.js +1 -0
  358. package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
  359. package/lib/es/tooltip/index.d.ts +16 -12
  360. package/lib/es/tooltip/index.js +53 -39
  361. package/lib/es/transfer/index.d.ts +1 -1
  362. package/lib/es/transfer/index.js +35 -17
  363. package/lib/es/tree/index.d.ts +1 -0
  364. package/lib/es/tree/index.js +15 -6
  365. package/lib/es/tree/treeNode.d.ts +12 -4
  366. package/lib/es/tree/treeNode.js +44 -4
  367. package/lib/es/treeSelect/index.d.ts +16 -0
  368. package/lib/es/treeSelect/index.js +57 -10
  369. package/lib/es/typography/base.js +17 -7
  370. package/lib/es/typography/copyable.js +5 -1
  371. package/lib/es/upload/fileCard.js +23 -4
  372. package/lib/es/upload/index.js +19 -4
  373. package/list/item.tsx +0 -1
  374. package/modal/Modal.tsx +2 -0
  375. package/modal/ModalContent.tsx +35 -5
  376. package/navigation/Item.tsx +15 -0
  377. package/navigation/SubNav.tsx +13 -1
  378. package/navigation/index.tsx +1 -1
  379. package/notification/notice.tsx +19 -14
  380. package/package.json +8 -8
  381. package/pagination/index.tsx +9 -5
  382. package/popover/index.tsx +5 -0
  383. package/progress/_story/progress.stories.js +18 -18
  384. package/progress/index.tsx +58 -20
  385. package/radio/radio.tsx +12 -2
  386. package/radio/radioGroup.tsx +29 -3
  387. package/radio/radioInner.tsx +10 -1
  388. package/rating/index.tsx +19 -2
  389. package/rating/item.tsx +6 -0
  390. package/select/__test__/select.test.js +45 -0
  391. package/select/_story/select.stories.js +29 -0
  392. package/select/index.tsx +52 -4
  393. package/select/option.tsx +3 -0
  394. package/sideSheet/SideSheetContent.tsx +13 -9
  395. package/sideSheet/index.tsx +3 -2
  396. package/slider/__test__/slider.test.js +9 -0
  397. package/slider/_story/slider.stories.js +1 -1
  398. package/slider/index.tsx +44 -7
  399. package/spin/icon.tsx +3 -3
  400. package/steps/basicStep.tsx +15 -4
  401. package/steps/basicSteps.tsx +3 -2
  402. package/steps/fillStep.tsx +27 -12
  403. package/steps/fillSteps.tsx +2 -0
  404. package/steps/navStep.tsx +15 -4
  405. package/steps/navSteps.tsx +3 -2
  406. package/switch/_story/switch.stories.js +20 -19
  407. package/switch/_story/switch.stories.tsx +13 -13
  408. package/switch/index.tsx +23 -5
  409. package/table/Body/BaseRow.tsx +25 -1
  410. package/table/Body/index.tsx +7 -2
  411. package/table/ColumnFilter.tsx +7 -1
  412. package/table/ColumnSelection.tsx +4 -1
  413. package/table/ColumnSorter.tsx +18 -1
  414. package/table/CustomExpandIcon.tsx +5 -0
  415. package/table/Table.tsx +26 -13
  416. package/table/TableCell.tsx +11 -1
  417. package/table/TableHeaderRow.tsx +16 -2
  418. package/table/__test__/table.test.js +46 -0
  419. package/tabs/TabBar.tsx +8 -5
  420. package/tabs/TabPane.tsx +3 -1
  421. package/tabs/index.tsx +1 -2
  422. package/tagInput/__test__/tagInput.test.js +46 -0
  423. package/tagInput/_story/tagInput.stories.js +2 -2
  424. package/tagInput/index.tsx +31 -8
  425. package/timePicker/TimePicker.tsx +14 -1
  426. package/timeline/_story/timeline.stories.js +1 -1
  427. package/timeline/index.tsx +2 -2
  428. package/timeline/item.tsx +2 -1
  429. package/toast/toast.tsx +2 -0
  430. package/tooltip/TriangleArrow.tsx +1 -1
  431. package/tooltip/TriangleArrowVertical.tsx +1 -1
  432. package/tooltip/_story/tooltip.stories.js +562 -514
  433. package/tooltip/index.tsx +50 -33
  434. package/transfer/index.tsx +32 -28
  435. package/tree/_story/tree.stories.js +3 -3
  436. package/tree/index.tsx +10 -2
  437. package/tree/treeNode.tsx +46 -10
  438. package/treeSelect/__test__/treeMultiple.test.js +5 -0
  439. package/treeSelect/_story/treeSelect.stories.js +12 -0
  440. package/treeSelect/index.tsx +58 -7
  441. package/typography/base.tsx +7 -1
  442. package/typography/copyable.tsx +10 -1
  443. package/upload/fileCard.tsx +13 -15
  444. package/upload/index.tsx +10 -6
@@ -29,6 +29,7 @@ export interface InputNumberProps extends InputProps {
29
29
  hideButtons?: boolean;
30
30
  innerButtons?: boolean;
31
31
  insetLabel?: React.ReactNode;
32
+ insetLabelId?: string;
32
33
  keepFocus?: boolean;
33
34
  max?: number;
34
35
  min?: number;
@@ -62,6 +63,12 @@ export interface InputNumberState {
62
63
 
63
64
  class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
64
65
  static propTypes = {
66
+ 'aria-label': PropTypes.string,
67
+ 'aria-labelledby': PropTypes.string,
68
+ 'aria-invalid': PropTypes.bool,
69
+ 'aria-errormessage': PropTypes.string,
70
+ 'aria-describedby': PropTypes.string,
71
+ 'aria-required': PropTypes.bool,
65
72
  autofocus: PropTypes.bool,
66
73
  className: PropTypes.string,
67
74
  defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
@@ -71,6 +78,7 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
71
78
  hideButtons: PropTypes.bool,
72
79
  innerButtons: PropTypes.bool,
73
80
  insetLabel: PropTypes.node,
81
+ insetLabelId: PropTypes.string,
74
82
  keepFocus: PropTypes.bool,
75
83
  max: PropTypes.number,
76
84
  min: PropTypes.number,
@@ -225,6 +233,7 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
225
233
  currentValue!: number | string;
226
234
  cursorBefore!: string;
227
235
  cursorAfter!: string;
236
+ foundation: InputNumberFoundation;
228
237
  constructor(props: InputNumberProps) {
229
238
  super(props);
230
239
  this.state = {
@@ -291,7 +300,10 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
291
300
  if (focusing) {
292
301
  if (this.foundation.isValidNumber(parsedNum) && parsedNum !== this.state.number) {
293
302
  const obj: { number?: number; value?: string } = { number: parsedNum };
294
- // Updates input when a button is clicked
303
+ /**
304
+ * If you are clicking the button, it will automatically format once
305
+ * We need to set the status to false after trigger focus event
306
+ */
295
307
  if (this.clickUpOrDown) {
296
308
  obj.value = this.foundation.doFormat(valueStr, true);
297
309
  }
@@ -377,6 +389,8 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
377
389
  return (
378
390
  <div className={suffixChildrenCls}>
379
391
  <span
392
+ role="button"
393
+ tabIndex={-1}
380
394
  className={upClassName}
381
395
  onMouseDown={notAllowedUp ? noop : this.handleUpClick}
382
396
  onMouseUp={this.handleMouseUp}
@@ -385,6 +399,8 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
385
399
  <IconChevronUp size="extra-small" />
386
400
  </span>
387
401
  <span
402
+ role="button"
403
+ tabIndex={-1}
388
404
  className={downClassName}
389
405
  onMouseDown={notAllowedDown ? noop : this.handleDownClick}
390
406
  onMouseUp={this.handleMouseUp}
@@ -433,13 +449,26 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
433
449
  keepFocus,
434
450
  ...rest
435
451
  } = this.props;
436
- const { value } = this.state;
452
+ const { value, number } = this.state;
437
453
 
438
454
  const inputNumberCls = classnames(className, `${prefixCls}-number`, {
439
455
  [`${prefixCls}-number-size-${size}`]: size,
440
456
  });
441
457
 
442
458
  const buttons = this.renderButtons();
459
+ const ariaProps = {
460
+ 'aria-disabled': disabled,
461
+ step,
462
+ };
463
+ if (number) {
464
+ ariaProps['aria-valuenow'] = number;
465
+ }
466
+ if (max !== Infinity) {
467
+ ariaProps['aria-valuemax'] = max;
468
+ }
469
+ if (min !== -Infinity) {
470
+ ariaProps['aria-valuemin'] = min;
471
+ }
443
472
 
444
473
  const input = (
445
474
  <div
@@ -450,6 +479,8 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
450
479
  onMouseLeave={e => this.handleInputMouseLeave(e)}
451
480
  >
452
481
  <Input
482
+ role="spinbutton"
483
+ {...ariaProps}
453
484
  {...rest}
454
485
  size={size}
455
486
  disabled={disabled}
package/layout/Sider.tsx CHANGED
@@ -1,4 +1,4 @@
1
- import React, { CSSProperties } from 'react';
1
+ import React, { AriaRole, CSSProperties } from 'react';
2
2
  import cls from 'classnames';
3
3
  import PropTypes from 'prop-types';
4
4
  import { cssClasses, strings } from '@douyinfe/semi-foundation/layout/constants';
@@ -40,6 +40,8 @@ export interface SiderProps {
40
40
  className?: string;
41
41
  breakpoint?: Array<keyof ResponsiveMap>;
42
42
  onBreakpoint?: (screen: keyof ResponsiveMap, match: boolean) => void;
43
+ 'aria-label'?: React.AriaAttributes['aria-label'];
44
+ 'role'?:React.AriaRole
43
45
  }
44
46
 
45
47
  class Sider extends React.PureComponent<SiderProps> {
@@ -49,6 +51,8 @@ class Sider extends React.PureComponent<SiderProps> {
49
51
  className: PropTypes.string,
50
52
  breakpoint: PropTypes.arrayOf(PropTypes.oneOf(bpt)),
51
53
  onBreakpoint: PropTypes.func,
54
+ 'aria-label': PropTypes.string,
55
+ role: PropTypes.string,
52
56
  };
53
57
 
54
58
  static defaultProps = {
@@ -104,7 +108,7 @@ class Sider extends React.PureComponent<SiderProps> {
104
108
  [`${prefixCls}-sider`]: true,
105
109
  });
106
110
  return (
107
- <aside className={classString} style={style} {...getDataAttr(others)}>
111
+ <aside className={classString} aria-label={this.props['aria-label']} style={style} {...getDataAttr(others)}>
108
112
  <div className={`${prefixCls}-sider-children`}>
109
113
  {children}
110
114
  </div>
package/layout/index.tsx CHANGED
@@ -1,4 +1,4 @@
1
- import React, { CSSProperties, ComponentClass } from 'react';
1
+ import React, { AriaRole, ComponentClass, CSSProperties } from 'react';
2
2
  import cls from 'classnames';
3
3
  import PropTypes from 'prop-types';
4
4
  import { cssClasses } from '@douyinfe/semi-foundation/layout/constants';
@@ -15,12 +15,13 @@ const htmlTag = {
15
15
  Layout: 'section'
16
16
  };
17
17
 
18
- function generator<P extends { type?: string; tagName?: string }>(type: string): (ComponentType: ComponentClass<{ type?: string; tagName?: string } & P>) => ComponentClass<P> {
18
+ function generator<P extends { type?: string; tagName?: string; role?: AriaRole; 'aria-label'?: string }>(type: string): (ComponentType: ComponentClass<{ type?: string; tagName?: string } & P>) => ComponentClass<P> {
19
19
  const tagName = htmlTag[type];
20
20
  const typeName = type.toLowerCase();
21
21
  return (BasicComponent): ComponentClass<P> => class Adapter extends React.PureComponent<P> {
22
22
  render() {
23
- return <BasicComponent type={typeName} tagName={tagName} {...this.props} />;
23
+ return <BasicComponent role={this.props.role} aria-label={this.props['aria-label']} type={typeName}
24
+ tagName={tagName} {...this.props} />;
24
25
  }
25
26
  };
26
27
  }
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function usePrevFocus(): (HTMLElement | import("react").Dispatch<import("react").SetStateAction<HTMLElement>>)[];
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
+
5
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
6
+
7
+ _Object$defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+
11
+ exports.usePrevFocus = usePrevFocus;
12
+
13
+ var _isFunction2 = _interopRequireDefault(require("lodash/isFunction"));
14
+
15
+ var _get2 = _interopRequireDefault(require("lodash/get"));
16
+
17
+ var _react = require("react");
18
+
19
+ var _index = require("../index");
20
+
21
+ function usePrevFocus() {
22
+ const [prevFocusElement, setPrevFocus] = (0, _react.useState)((0, _index.getActiveElement)());
23
+ (0, _react.useEffect)(() => {
24
+ return function cleanup() {
25
+ const blur = (0, _get2.default)(prevFocusElement, 'blur');
26
+ (0, _isFunction2.default)(blur) && blur();
27
+ };
28
+ }, [prevFocusElement]);
29
+ return [prevFocusElement, setPrevFocus];
30
+ }
@@ -67,3 +67,4 @@ export interface HighLightTextHTMLChunk {
67
67
  * @returns boolean
68
68
  */
69
69
  export declare const isSemiIcon: (icon: any) => boolean;
70
+ export declare function getActiveElement(): HTMLElement;
@@ -9,6 +9,7 @@ _Object$defineProperty(exports, "__esModule", {
9
9
  });
10
10
 
11
11
  exports.cloneDeep = cloneDeep;
12
+ exports.getActiveElement = getActiveElement;
12
13
  exports.registerMediaQuery = exports.isSemiIcon = exports.getHighLightTextHTML = void 0;
13
14
  exports.stopPropagation = stopPropagation;
14
15
 
@@ -197,4 +198,8 @@ exports.registerMediaQuery = registerMediaQuery;
197
198
 
198
199
  const isSemiIcon = icon => /*#__PURE__*/_react.default.isValidElement(icon) && (0, _get2.default)(icon.type, 'elementType') === 'Icon';
199
200
 
200
- exports.isSemiIcon = isSemiIcon;
201
+ exports.isSemiIcon = isSemiIcon;
202
+
203
+ function getActiveElement() {
204
+ return document ? document.activeElement : null;
205
+ }
@@ -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;
@@ -247,6 +247,7 @@ class Anchor extends _baseComponent.default {
247
247
  position,
248
248
  autoCollapse
249
249
  } = this.props;
250
+ const ariaLabel = this.props['aria-label'];
250
251
  const {
251
252
  activeLink,
252
253
  scrollHeight,
@@ -279,10 +280,13 @@ class Anchor extends _baseComponent.default {
279
280
  removeLink: this.removeLink
280
281
  }
281
282
  }, /*#__PURE__*/_react.default.createElement("div", {
283
+ role: "navigation",
284
+ "aria-label": ariaLabel || 'Side navigation',
282
285
  className: wrapperCls,
283
286
  style: wrapperStyle,
284
287
  id: this.anchorID
285
288
  }, /*#__PURE__*/_react.default.createElement("div", {
289
+ "aria-hidden": true,
286
290
  className: slideCls,
287
291
  style: {
288
292
  height: scrollHeight
@@ -316,7 +320,8 @@ Anchor.PropTypes = {
316
320
  getContainer: _propTypes.default.func,
317
321
  onChange: _propTypes.default.func,
318
322
  onClick: _propTypes.default.func,
319
- defaultAnchor: _propTypes.default.string
323
+ defaultAnchor: _propTypes.default.string,
324
+ 'aria-label': _propTypes.default.string
320
325
  };
321
326
  Anchor.defaultProps = {
322
327
  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/cjs/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;
@@ -12,6 +12,8 @@ exports.default = void 0;
12
12
 
13
13
  var _assign = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/object/assign"));
14
14
 
15
+ var _bind = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/bind"));
16
+
15
17
  var _react = _interopRequireDefault(require("react"));
16
18
 
17
19
  var _classnames = _interopRequireDefault(require("classnames"));
@@ -32,6 +34,8 @@ const prefixCls = _constants.cssClasses.PREFIX; // eslint-disable-next-line @typ
32
34
 
33
35
  class Link extends _baseComponent.default {
34
36
  constructor(props) {
37
+ var _context;
38
+
35
39
  super(props);
36
40
 
37
41
  this.renderTitle = () => {
@@ -90,6 +94,7 @@ class Link extends _baseComponent.default {
90
94
  };
91
95
 
92
96
  this.foundation = new _linkFoundation.default(this.adapter);
97
+ this.handleClick = (0, _bind.default)(_context = this.handleClick).call(_context, this);
93
98
  }
94
99
 
95
100
  get adapter() {
@@ -115,6 +120,17 @@ class Link extends _baseComponent.default {
115
120
  this.foundation.handleUpdateLink(href, prevHref);
116
121
  }
117
122
 
123
+ handleClick(e) {
124
+ const {
125
+ disabled,
126
+ href
127
+ } = this.props;
128
+ const {
129
+ onClick
130
+ } = this.context;
131
+ !disabled && onClick(e, href);
132
+ }
133
+
118
134
  componentDidMount() {
119
135
  this.handleAddLink();
120
136
  }
@@ -136,11 +152,12 @@ class Link extends _baseComponent.default {
136
152
  href,
137
153
  className,
138
154
  style,
139
- disabled = false
155
+ disabled = false,
156
+ title
140
157
  } = this.props;
141
158
  const {
142
159
  activeLink,
143
- onClick
160
+ showTooltip
144
161
  } = this.context;
145
162
  const active = activeLink === href;
146
163
  const linkCls = (0, _classnames.default)("".concat(prefixCls, "-link"), className);
@@ -148,13 +165,30 @@ class Link extends _baseComponent.default {
148
165
  ["".concat(prefixCls, "-link-title-active")]: active,
149
166
  ["".concat(prefixCls, "-link-title-disabled")]: disabled
150
167
  });
168
+ const ariaProps = {
169
+ 'aria-disabled': disabled,
170
+ 'aria-label': href
171
+ };
172
+
173
+ if (active) {
174
+ ariaProps['aria-details'] = 'active';
175
+ }
176
+
177
+ if (!showTooltip && typeof title === 'string') {
178
+ ariaProps['title'] = title;
179
+ }
180
+
151
181
  return /*#__PURE__*/_react.default.createElement("div", {
152
182
  className: linkCls,
153
183
  style: style
154
- }, /*#__PURE__*/_react.default.createElement("div", {
184
+ }, /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
185
+ role: "link",
186
+ tabIndex: 0
187
+ }, ariaProps, {
155
188
  className: linkTitleCls,
156
- onClick: e => !disabled && onClick(e, href)
157
- }, this.renderTitle()), this.renderChildren());
189
+ onClick: e => this.handleClick(e),
190
+ onKeyPress: e => this.handleClick(e)
191
+ }), this.renderTitle()), this.renderChildren());
158
192
  }
159
193
 
160
194
  }
@@ -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>;
@@ -208,6 +208,7 @@ class AutoComplete extends _baseComponent.default {
208
208
  size,
209
209
  prefix,
210
210
  insetLabel,
211
+ insetLabelId,
211
212
  suffix,
212
213
  placeholder,
213
214
  style,
@@ -217,7 +218,8 @@ class AutoComplete extends _baseComponent.default {
217
218
  triggerRender,
218
219
  validateStatus,
219
220
  autoFocus,
220
- value
221
+ value,
222
+ id
221
223
  } = this.props;
222
224
  const {
223
225
  inputValue,
@@ -232,7 +234,8 @@ class AutoComplete extends _baseComponent.default {
232
234
  ["".concat(prefixCls, "-disabled")]: disabled
233
235
  }, className),
234
236
  onClick: this.handleInputClick,
235
- ref: this.triggerRef
237
+ ref: this.triggerRef,
238
+ id
236
239
  }, keyboardEventSet);
237
240
  const innerProps = {
238
241
  disabled,
@@ -240,9 +243,16 @@ class AutoComplete extends _baseComponent.default {
240
243
  autofocus: autoFocus,
241
244
  onChange: this.onSearch,
242
245
  onClear: this.onInputClear,
246
+ 'aria-label': this.props['aria-label'],
247
+ 'aria-labelledby': this.props['aria-labelledby'],
248
+ 'aria-invalid': this.props['aria-invalid'],
249
+ 'aria-errormessage': this.props['aria-errormessage'],
250
+ 'aria-describedby': this.props['aria-describedby'],
251
+ 'aria-required': this.props['aria-required'],
243
252
  // TODO: remove in next major version
244
253
  suffix,
245
254
  prefix: prefix || insetLabel,
255
+ insetLabelId,
246
256
  showClear,
247
257
  validateStatus,
248
258
  size,
@@ -356,6 +366,12 @@ class AutoComplete extends _baseComponent.default {
356
366
  }
357
367
 
358
368
  AutoComplete.propTypes = {
369
+ 'aria-label': _propTypes.default.string,
370
+ 'aria-labelledby': _propTypes.default.string,
371
+ 'aria-invalid': _propTypes.default.bool,
372
+ 'aria-errormessage': _propTypes.default.string,
373
+ 'aria-describedby': _propTypes.default.string,
374
+ 'aria-required': _propTypes.default.bool,
359
375
  autoFocus: _propTypes.default.bool,
360
376
  autoAdjustOverflow: _propTypes.default.bool,
361
377
  className: _propTypes.default.string,
@@ -369,6 +385,9 @@ AutoComplete.propTypes = {
369
385
  dropdownClassName: _propTypes.default.string,
370
386
  dropdownStyle: _propTypes.default.object,
371
387
  emptyContent: _propTypes.default.node,
388
+ id: _propTypes.default.string,
389
+ insetLabel: _propTypes.default.node,
390
+ insetLabelId: _propTypes.default.string,
372
391
  onSearch: _propTypes.default.func,
373
392
  onSelect: _propTypes.default.func,
374
393
  onClear: _propTypes.default.func,
@@ -149,7 +149,8 @@ class AvatarGroup extends _react.PureComponent {
149
149
  }
150
150
 
151
151
  return /*#__PURE__*/_react.default.createElement("div", {
152
- className: groupCls
152
+ className: groupCls,
153
+ "aria-label": "avatar group"
153
154
  }, inner);
154
155
  }
155
156
 
@@ -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/cjs/avatar/foundation';
3
+ import AvatarFoundation, { AvatarAdapter } from '@douyinfe/semi-foundation/lib/cjs/avatar/foundation';
4
4
  import '@douyinfe/semi-foundation/lib/cjs/avatar/avatar.css';
5
5
  import { noop } from '@douyinfe/semi-foundation/lib/cjs/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
  }
@@ -156,12 +156,12 @@ class Avatar extends _baseComponent.default {
156
156
  this.foundation.destroy();
157
157
  }
158
158
 
159
- onEnter() {
160
- this.foundation.handleEnter();
159
+ onEnter(e) {
160
+ this.foundation.handleEnter(e);
161
161
  }
162
162
 
163
- onLeave() {
164
- this.foundation.handleLeave();
163
+ onLeave(e) {
164
+ this.foundation.handleLeave(e);
165
165
  }
166
166
 
167
167
  handleError() {
@@ -204,6 +204,7 @@ class Avatar extends _baseComponent.default {
204
204
  const hoverRender = hoverContent ? /*#__PURE__*/_react.default.createElement("div", {
205
205
  className: "".concat(prefixCls, "-hover")
206
206
  }, hoverContent) : null;
207
+ let ariaLabel;
207
208
 
208
209
  if (isImg) {
209
210
  content = /*#__PURE__*/_react.default.createElement("img", (0, _assign.default)({
@@ -212,21 +213,29 @@ class Avatar extends _baseComponent.default {
212
213
  onError: this.handleError,
213
214
  alt: alt
214
215
  }, imgAttr));
216
+ ariaLabel = 'avatar';
215
217
  } else if (typeof children === 'string') {
216
218
  content = /*#__PURE__*/_react.default.createElement("span", {
217
219
  className: "".concat(prefixCls, "-content")
218
220
  }, /*#__PURE__*/_react.default.createElement("span", {
219
221
  className: "".concat(prefixCls, "-label")
220
222
  }, children));
223
+ ariaLabel = "avatar of ".concat(children);
221
224
  }
222
225
 
223
- return /*#__PURE__*/_react.default.createElement("span", (0, _assign.default)({}, others, {
224
- style: style,
225
- className: avatarCls,
226
- onClick: onClick,
227
- onMouseEnter: this.onEnter,
228
- onMouseLeave: this.onLeave
229
- }), content, hoverRender);
226
+ return (
227
+ /*#__PURE__*/
228
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events
229
+ _react.default.createElement("span", (0, _assign.default)({
230
+ "aria-label": ariaLabel
231
+ }, others, {
232
+ style: style,
233
+ className: avatarCls,
234
+ onClick: onClick,
235
+ onMouseEnter: this.onEnter,
236
+ onMouseLeave: this.onLeave
237
+ }), content, hoverRender)
238
+ );
230
239
  }
231
240
 
232
241
  }
@@ -95,7 +95,8 @@ class Banner extends _baseComponent.default {
95
95
  icon: closeIcon || /*#__PURE__*/_react.default.createElement(_semiIcons.IconClose, null),
96
96
  theme: "borderless",
97
97
  size: "small",
98
- type: "tertiary"
98
+ type: "tertiary",
99
+ "aria-label": 'Close'
99
100
  });
100
101
 
101
102
  return closer;
@@ -163,7 +164,8 @@ class Banner extends _baseComponent.default {
163
164
  });
164
165
  const banner = visible ? /*#__PURE__*/_react.default.createElement("div", {
165
166
  className: wrapper,
166
- style: style
167
+ style: style,
168
+ role: "alert"
167
169
  }, /*#__PURE__*/_react.default.createElement("div", {
168
170
  className: "".concat(prefixCls, "-content-wrapper")
169
171
  }, /*#__PURE__*/_react.default.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>;