@douyinfe/semi-ui 2.2.2 → 2.4.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 (441) hide show
  1. package/_base/_story/a11y.jsx +6 -6
  2. package/_base/_story/a11y.scss +0 -1
  3. package/_base/_story/index.scss +2 -5
  4. package/_utils/hooks/usePrevFocus.ts +16 -0
  5. package/_utils/index.ts +4 -0
  6. package/anchor/_story/anchor.stories.js +1 -1
  7. package/anchor/index.tsx +5 -2
  8. package/anchor/link.tsx +29 -4
  9. package/autoComplete/index.tsx +28 -1
  10. package/avatar/_story/avatar.stories.js +4 -4
  11. package/avatar/index.tsx +6 -4
  12. package/banner/index.tsx +2 -1
  13. package/breadcrumb/_story/breadcrumb.stories.js +22 -8
  14. package/breadcrumb/index.tsx +8 -1
  15. package/breadcrumb/item.tsx +1 -1
  16. package/button/Button.tsx +4 -0
  17. package/button/__test__/button.test.js +1 -1
  18. package/button/_story/button.stories.js +10 -10
  19. package/button/buttonGroup.tsx +4 -2
  20. package/button/splitButtonGroup.tsx +5 -2
  21. package/card/_story/card.stories.js +8 -1
  22. package/card/_story/card.stories.tsx +3 -0
  23. package/card/index.tsx +5 -2
  24. package/cascader/index.tsx +33 -5
  25. package/checkbox/_story/checkbox.stories.js +19 -12
  26. package/checkbox/checkbox.tsx +40 -5
  27. package/checkbox/checkboxGroup.tsx +30 -5
  28. package/checkbox/checkboxInner.tsx +25 -2
  29. package/collapse/index.tsx +1 -1
  30. package/collapse/item.tsx +12 -7
  31. package/collapsible/index.tsx +4 -2
  32. package/configProvider/_story/configProvider.stories.tsx +27 -0
  33. package/datePicker/datePicker.tsx +19 -0
  34. package/dist/css/semi.css +23 -12
  35. package/dist/css/semi.min.css +1 -1
  36. package/dist/umd/semi-ui.js +2502 -1249
  37. package/dist/umd/semi-ui.js.map +1 -1
  38. package/dist/umd/semi-ui.min.js +1 -1
  39. package/dist/umd/semi-ui.min.js.map +1 -1
  40. package/dropdown/dropdownItem.tsx +1 -1
  41. package/dropdown/dropdownMenu.tsx +1 -1
  42. package/dropdown/index.tsx +11 -3
  43. package/empty/index.tsx +4 -4
  44. package/form/_story/FormApi/formApiDemo.jsx +3 -2
  45. package/form/_story/Validate/validateDemo.jsx +1 -1
  46. package/form/_story/demo.jsx +12 -3
  47. package/form/_story/form.stories.js +0 -7
  48. package/form/baseForm.tsx +2 -0
  49. package/form/errorMessage.tsx +13 -2
  50. package/form/hoc/withField.tsx +37 -8
  51. package/form/index.tsx +0 -2
  52. package/form/interface.ts +2 -0
  53. package/form/label.tsx +4 -2
  54. package/input/index.tsx +49 -4
  55. package/input/inputGroup.tsx +9 -4
  56. package/input/textarea.tsx +30 -9
  57. package/inputNumber/__test__/inputNumber.test.js +36 -8
  58. package/inputNumber/index.tsx +30 -2
  59. package/layout/Sider.tsx +6 -2
  60. package/layout/index.tsx +4 -3
  61. package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
  62. package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
  63. package/lib/cjs/_utils/index.d.ts +1 -0
  64. package/lib/cjs/_utils/index.js +6 -1
  65. package/lib/cjs/anchor/index.d.ts +2 -0
  66. package/lib/cjs/anchor/index.js +6 -1
  67. package/lib/cjs/anchor/link.d.ts +4 -1
  68. package/lib/cjs/anchor/link.js +39 -5
  69. package/lib/cjs/autoComplete/index.d.ts +17 -0
  70. package/lib/cjs/autoComplete/index.js +21 -2
  71. package/lib/cjs/avatar/index.d.ts +4 -3
  72. package/lib/cjs/avatar/index.js +15 -11
  73. package/lib/cjs/banner/index.js +4 -2
  74. package/lib/cjs/breadcrumb/index.d.ts +3 -0
  75. package/lib/cjs/breadcrumb/index.js +10 -4
  76. package/lib/cjs/breadcrumb/item.js +2 -2
  77. package/lib/cjs/button/Button.d.ts +2 -0
  78. package/lib/cjs/button/Button.js +4 -2
  79. package/lib/cjs/button/buttonGroup.d.ts +3 -0
  80. package/lib/cjs/button/buttonGroup.js +8 -4
  81. package/lib/cjs/button/index.d.ts +1 -0
  82. package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
  83. package/lib/cjs/button/splitButtonGroup.js +5 -2
  84. package/lib/cjs/card/index.d.ts +3 -0
  85. package/lib/cjs/card/index.js +3 -1
  86. package/lib/cjs/cascader/index.d.ts +14 -0
  87. package/lib/cjs/cascader/index.js +35 -7
  88. package/lib/cjs/checkbox/checkbox.d.ts +21 -1
  89. package/lib/cjs/checkbox/checkbox.js +51 -17
  90. package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
  91. package/lib/cjs/checkbox/checkboxGroup.js +16 -3
  92. package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
  93. package/lib/cjs/checkbox/checkboxInner.js +20 -3
  94. package/lib/cjs/collapse/item.d.ts +2 -1
  95. package/lib/cjs/collapse/item.js +12 -2
  96. package/lib/cjs/collapsible/index.d.ts +1 -0
  97. package/lib/cjs/collapsible/index.js +4 -2
  98. package/lib/cjs/datePicker/datePicker.d.ts +12 -0
  99. package/lib/cjs/datePicker/datePicker.js +14 -1
  100. package/lib/cjs/dropdown/dropdownItem.js +3 -1
  101. package/lib/cjs/dropdown/dropdownMenu.js +4 -1
  102. package/lib/cjs/dropdown/index.d.ts +10 -3
  103. package/lib/cjs/form/baseForm.d.ts +9 -0
  104. package/lib/cjs/form/baseForm.js +3 -1
  105. package/lib/cjs/form/errorMessage.d.ts +4 -0
  106. package/lib/cjs/form/errorMessage.js +21 -3
  107. package/lib/cjs/form/field.d.ts +7 -0
  108. package/lib/cjs/form/hoc/withField.js +49 -16
  109. package/lib/cjs/form/index.d.ts +0 -1
  110. package/lib/cjs/form/interface.d.ts +2 -0
  111. package/lib/cjs/form/label.d.ts +2 -0
  112. package/lib/cjs/form/label.js +5 -2
  113. package/lib/cjs/input/index.d.ts +16 -0
  114. package/lib/cjs/input/index.js +51 -15
  115. package/lib/cjs/input/inputGroup.d.ts +2 -1
  116. package/lib/cjs/input/inputGroup.js +11 -1
  117. package/lib/cjs/input/textarea.js +16 -3
  118. package/lib/cjs/inputNumber/index.d.ts +8 -0
  119. package/lib/cjs/inputNumber/index.js +35 -4
  120. package/lib/cjs/layout/Sider.d.ts +4 -0
  121. package/lib/cjs/layout/Sider.js +4 -1
  122. package/lib/cjs/layout/index.js +2 -0
  123. package/lib/cjs/list/index.d.ts +4 -4
  124. package/lib/cjs/list/item.js +0 -1
  125. package/lib/cjs/modal/Modal.js +2 -0
  126. package/lib/cjs/modal/ModalContent.d.ts +3 -1
  127. package/lib/cjs/modal/ModalContent.js +47 -5
  128. package/lib/cjs/navigation/Item.d.ts +4 -2
  129. package/lib/cjs/navigation/Item.js +25 -5
  130. package/lib/cjs/navigation/SubNav.d.ts +4 -2
  131. package/lib/cjs/navigation/SubNav.js +8 -1
  132. package/lib/cjs/navigation/index.js +2 -0
  133. package/lib/cjs/notification/notice.d.ts +1 -1
  134. package/lib/cjs/notification/notice.js +32 -22
  135. package/lib/cjs/pagination/index.js +16 -6
  136. package/lib/cjs/popover/index.js +7 -3
  137. package/lib/cjs/progress/index.d.ts +8 -0
  138. package/lib/cjs/progress/index.js +42 -9
  139. package/lib/cjs/radio/radio.d.ts +6 -1
  140. package/lib/cjs/radio/radio.js +17 -5
  141. package/lib/cjs/radio/radioGroup.d.ts +16 -1
  142. package/lib/cjs/radio/radioGroup.js +18 -3
  143. package/lib/cjs/radio/radioInner.d.ts +6 -1
  144. package/lib/cjs/radio/radioInner.js +11 -3
  145. package/lib/cjs/rating/index.d.ts +14 -0
  146. package/lib/cjs/rating/index.js +14 -3
  147. package/lib/cjs/rating/item.d.ts +2 -0
  148. package/lib/cjs/rating/item.js +6 -1
  149. package/lib/cjs/select/index.d.ts +16 -0
  150. package/lib/cjs/select/index.js +65 -19
  151. package/lib/cjs/select/option.js +28 -22
  152. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  153. package/lib/cjs/sideSheet/SideSheetContent.js +4 -1
  154. package/lib/cjs/sideSheet/index.d.ts +1 -0
  155. package/lib/cjs/sideSheet/index.js +2 -1
  156. package/lib/cjs/slider/index.d.ts +2 -1
  157. package/lib/cjs/slider/index.js +64 -17
  158. package/lib/cjs/spin/icon.js +3 -4
  159. package/lib/cjs/steps/basicStep.d.ts +3 -0
  160. package/lib/cjs/steps/basicStep.js +23 -25
  161. package/lib/cjs/steps/basicSteps.d.ts +1 -0
  162. package/lib/cjs/steps/basicSteps.js +2 -1
  163. package/lib/cjs/steps/fillStep.d.ts +3 -0
  164. package/lib/cjs/steps/fillStep.js +19 -4
  165. package/lib/cjs/steps/fillSteps.d.ts +1 -0
  166. package/lib/cjs/steps/fillSteps.js +2 -1
  167. package/lib/cjs/steps/navStep.d.ts +3 -0
  168. package/lib/cjs/steps/navStep.js +22 -25
  169. package/lib/cjs/steps/navSteps.d.ts +1 -0
  170. package/lib/cjs/steps/navSteps.js +2 -1
  171. package/lib/cjs/switch/index.d.ts +12 -0
  172. package/lib/cjs/switch/index.js +19 -4
  173. package/lib/cjs/table/Body/BaseRow.js +35 -3
  174. package/lib/cjs/table/Body/index.js +9 -1
  175. package/lib/cjs/table/ColumnFilter.js +4 -0
  176. package/lib/cjs/table/ColumnSelection.d.ts +3 -0
  177. package/lib/cjs/table/ColumnSelection.js +6 -2
  178. package/lib/cjs/table/ColumnSorter.js +19 -3
  179. package/lib/cjs/table/CustomExpandIcon.js +7 -1
  180. package/lib/cjs/table/Table.d.ts +2 -0
  181. package/lib/cjs/table/Table.js +35 -15
  182. package/lib/cjs/table/TableCell.d.ts +2 -0
  183. package/lib/cjs/table/TableCell.js +6 -2
  184. package/lib/cjs/table/TableHeaderRow.js +8 -2
  185. package/lib/cjs/tabs/TabBar.js +11 -3
  186. package/lib/cjs/tabs/TabPane.js +3 -1
  187. package/lib/cjs/tabs/index.js +0 -1
  188. package/lib/cjs/tagInput/index.d.ts +4 -1
  189. package/lib/cjs/tagInput/index.js +29 -3
  190. package/lib/cjs/timePicker/TimePicker.d.ts +14 -0
  191. package/lib/cjs/timePicker/TimePicker.js +11 -4
  192. package/lib/cjs/timePicker/index.d.ts +7 -0
  193. package/lib/cjs/timeline/index.d.ts +1 -1
  194. package/lib/cjs/timeline/index.js +1 -0
  195. package/lib/cjs/timeline/item.js +4 -2
  196. package/lib/cjs/toast/toast.js +2 -0
  197. package/lib/cjs/tooltip/TriangleArrow.js +1 -0
  198. package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
  199. package/lib/cjs/tooltip/index.d.ts +16 -12
  200. package/lib/cjs/tooltip/index.js +55 -39
  201. package/lib/cjs/transfer/index.js +32 -14
  202. package/lib/cjs/tree/index.d.ts +1 -0
  203. package/lib/cjs/tree/index.js +15 -6
  204. package/lib/cjs/tree/treeNode.d.ts +12 -4
  205. package/lib/cjs/tree/treeNode.js +54 -5
  206. package/lib/cjs/treeSelect/index.d.ts +16 -0
  207. package/lib/cjs/treeSelect/index.js +60 -12
  208. package/lib/cjs/typography/base.js +18 -7
  209. package/lib/cjs/typography/copyable.js +6 -1
  210. package/lib/cjs/upload/fileCard.js +26 -7
  211. package/lib/cjs/upload/index.js +19 -4
  212. package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
  213. package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
  214. package/lib/es/_utils/index.d.ts +1 -0
  215. package/lib/es/_utils/index.js +4 -1
  216. package/lib/es/anchor/index.d.ts +2 -0
  217. package/lib/es/anchor/index.js +6 -1
  218. package/lib/es/anchor/link.d.ts +4 -1
  219. package/lib/es/anchor/link.js +38 -5
  220. package/lib/es/autoComplete/index.d.ts +17 -0
  221. package/lib/es/autoComplete/index.js +21 -2
  222. package/lib/es/avatar/index.d.ts +4 -3
  223. package/lib/es/avatar/index.js +15 -11
  224. package/lib/es/banner/index.js +4 -2
  225. package/lib/es/breadcrumb/index.d.ts +3 -0
  226. package/lib/es/breadcrumb/index.js +10 -4
  227. package/lib/es/breadcrumb/item.js +2 -2
  228. package/lib/es/button/Button.d.ts +2 -0
  229. package/lib/es/button/Button.js +4 -2
  230. package/lib/es/button/buttonGroup.d.ts +3 -0
  231. package/lib/es/button/buttonGroup.js +8 -4
  232. package/lib/es/button/index.d.ts +1 -0
  233. package/lib/es/button/splitButtonGroup.d.ts +3 -0
  234. package/lib/es/button/splitButtonGroup.js +5 -2
  235. package/lib/es/card/index.d.ts +3 -0
  236. package/lib/es/card/index.js +3 -1
  237. package/lib/es/cascader/index.d.ts +14 -0
  238. package/lib/es/cascader/index.js +35 -7
  239. package/lib/es/checkbox/checkbox.d.ts +21 -1
  240. package/lib/es/checkbox/checkbox.js +50 -17
  241. package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
  242. package/lib/es/checkbox/checkboxGroup.js +18 -5
  243. package/lib/es/checkbox/checkboxInner.d.ts +15 -0
  244. package/lib/es/checkbox/checkboxInner.js +20 -3
  245. package/lib/es/collapse/item.d.ts +2 -1
  246. package/lib/es/collapse/item.js +11 -2
  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/dropdown/index.d.ts +10 -3
  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 +16 -3
  270. package/lib/es/inputNumber/index.d.ts +8 -0
  271. package/lib/es/inputNumber/index.js +36 -4
  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/index.d.ts +4 -4
  276. package/lib/es/list/item.js +0 -1
  277. package/lib/es/modal/Modal.js +2 -0
  278. package/lib/es/modal/ModalContent.d.ts +3 -1
  279. package/lib/es/modal/ModalContent.js +46 -5
  280. package/lib/es/navigation/Item.d.ts +4 -2
  281. package/lib/es/navigation/Item.js +25 -5
  282. package/lib/es/navigation/SubNav.d.ts +4 -2
  283. package/lib/es/navigation/SubNav.js +8 -1
  284. package/lib/es/navigation/index.js +2 -0
  285. package/lib/es/notification/notice.d.ts +1 -1
  286. package/lib/es/notification/notice.js +33 -24
  287. package/lib/es/pagination/index.js +16 -6
  288. package/lib/es/popover/index.js +7 -3
  289. package/lib/es/progress/index.d.ts +8 -0
  290. package/lib/es/progress/index.js +42 -9
  291. package/lib/es/radio/radio.d.ts +6 -1
  292. package/lib/es/radio/radio.js +16 -5
  293. package/lib/es/radio/radioGroup.d.ts +16 -1
  294. package/lib/es/radio/radioGroup.js +18 -3
  295. package/lib/es/radio/radioInner.d.ts +6 -1
  296. package/lib/es/radio/radioInner.js +11 -3
  297. package/lib/es/rating/index.d.ts +14 -0
  298. package/lib/es/rating/index.js +14 -3
  299. package/lib/es/rating/item.d.ts +2 -0
  300. package/lib/es/rating/item.js +6 -1
  301. package/lib/es/select/index.d.ts +16 -0
  302. package/lib/es/select/index.js +63 -17
  303. package/lib/es/select/option.js +28 -22
  304. package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
  305. package/lib/es/sideSheet/SideSheetContent.js +4 -1
  306. package/lib/es/sideSheet/index.d.ts +1 -0
  307. package/lib/es/sideSheet/index.js +2 -1
  308. package/lib/es/slider/index.d.ts +2 -1
  309. package/lib/es/slider/index.js +63 -16
  310. package/lib/es/spin/icon.js +3 -4
  311. package/lib/es/steps/basicStep.d.ts +3 -0
  312. package/lib/es/steps/basicStep.js +23 -23
  313. package/lib/es/steps/basicSteps.d.ts +1 -0
  314. package/lib/es/steps/basicSteps.js +2 -1
  315. package/lib/es/steps/fillStep.d.ts +3 -0
  316. package/lib/es/steps/fillStep.js +19 -4
  317. package/lib/es/steps/fillSteps.d.ts +1 -0
  318. package/lib/es/steps/fillSteps.js +2 -1
  319. package/lib/es/steps/navStep.d.ts +3 -0
  320. package/lib/es/steps/navStep.js +22 -23
  321. package/lib/es/steps/navSteps.d.ts +1 -0
  322. package/lib/es/steps/navSteps.js +2 -1
  323. package/lib/es/switch/index.d.ts +12 -0
  324. package/lib/es/switch/index.js +19 -4
  325. package/lib/es/table/Body/BaseRow.js +35 -3
  326. package/lib/es/table/Body/index.js +9 -2
  327. package/lib/es/table/ColumnFilter.js +4 -0
  328. package/lib/es/table/ColumnSelection.d.ts +3 -0
  329. package/lib/es/table/ColumnSelection.js +6 -2
  330. package/lib/es/table/ColumnSorter.js +17 -3
  331. package/lib/es/table/CustomExpandIcon.js +6 -1
  332. package/lib/es/table/Table.d.ts +2 -0
  333. package/lib/es/table/Table.js +35 -15
  334. package/lib/es/table/TableCell.d.ts +2 -0
  335. package/lib/es/table/TableCell.js +6 -2
  336. package/lib/es/table/TableHeaderRow.js +8 -2
  337. package/lib/es/tabs/TabBar.js +11 -3
  338. package/lib/es/tabs/TabPane.js +3 -1
  339. package/lib/es/tabs/index.js +0 -1
  340. package/lib/es/tagInput/index.d.ts +4 -1
  341. package/lib/es/tagInput/index.js +29 -3
  342. package/lib/es/timePicker/TimePicker.d.ts +14 -0
  343. package/lib/es/timePicker/TimePicker.js +11 -4
  344. package/lib/es/timePicker/index.d.ts +7 -0
  345. package/lib/es/timeline/index.d.ts +1 -1
  346. package/lib/es/timeline/index.js +1 -0
  347. package/lib/es/timeline/item.js +4 -2
  348. package/lib/es/toast/toast.js +2 -0
  349. package/lib/es/tooltip/TriangleArrow.js +1 -0
  350. package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
  351. package/lib/es/tooltip/index.d.ts +16 -12
  352. package/lib/es/tooltip/index.js +53 -39
  353. package/lib/es/transfer/index.js +32 -14
  354. package/lib/es/tree/index.d.ts +1 -0
  355. package/lib/es/tree/index.js +15 -6
  356. package/lib/es/tree/treeNode.d.ts +12 -4
  357. package/lib/es/tree/treeNode.js +53 -5
  358. package/lib/es/treeSelect/index.d.ts +16 -0
  359. package/lib/es/treeSelect/index.js +57 -10
  360. package/lib/es/typography/base.js +17 -7
  361. package/lib/es/typography/copyable.js +5 -1
  362. package/lib/es/upload/fileCard.js +26 -7
  363. package/lib/es/upload/index.js +19 -4
  364. package/list/index.tsx +5 -5
  365. package/list/item.tsx +0 -1
  366. package/modal/Modal.tsx +2 -0
  367. package/modal/ModalContent.tsx +35 -5
  368. package/navigation/Item.tsx +15 -0
  369. package/navigation/SubNav.tsx +13 -1
  370. package/navigation/index.tsx +1 -1
  371. package/notification/notice.tsx +19 -14
  372. package/package.json +8 -8
  373. package/pagination/index.tsx +9 -5
  374. package/popover/index.tsx +5 -0
  375. package/progress/_story/progress.stories.js +18 -18
  376. package/progress/index.tsx +58 -20
  377. package/radio/radio.tsx +12 -2
  378. package/radio/radioGroup.tsx +29 -3
  379. package/radio/radioInner.tsx +10 -1
  380. package/rating/index.tsx +19 -2
  381. package/rating/item.tsx +6 -0
  382. package/select/__test__/select.test.js +45 -0
  383. package/select/_story/select.stories.js +29 -0
  384. package/select/index.tsx +57 -4
  385. package/select/option.tsx +3 -0
  386. package/sideSheet/SideSheetContent.tsx +6 -4
  387. package/sideSheet/index.tsx +3 -2
  388. package/slider/__test__/slider.test.js +9 -0
  389. package/slider/_story/slider.stories.js +1 -1
  390. package/slider/index.tsx +44 -7
  391. package/spin/icon.tsx +4 -3
  392. package/steps/basicStep.tsx +15 -4
  393. package/steps/basicSteps.tsx +3 -2
  394. package/steps/fillStep.tsx +27 -12
  395. package/steps/fillSteps.tsx +2 -0
  396. package/steps/navStep.tsx +15 -4
  397. package/steps/navSteps.tsx +3 -2
  398. package/switch/_story/switch.stories.js +20 -19
  399. package/switch/_story/switch.stories.tsx +13 -13
  400. package/switch/index.tsx +23 -5
  401. package/table/Body/BaseRow.tsx +25 -1
  402. package/table/Body/index.tsx +7 -2
  403. package/table/ColumnFilter.tsx +7 -1
  404. package/table/ColumnSelection.tsx +4 -1
  405. package/table/ColumnSorter.tsx +18 -1
  406. package/table/CustomExpandIcon.tsx +5 -0
  407. package/table/Table.tsx +30 -14
  408. package/table/TableCell.tsx +11 -1
  409. package/table/TableHeaderRow.tsx +16 -2
  410. package/table/__test__/table.test.js +46 -0
  411. package/table/_story/table.stories.js +2 -0
  412. package/table/_story/v2/FixedColumnsChange/index.jsx +104 -0
  413. package/table/_story/v2/FixedZIndex/index.jsx +87 -0
  414. package/tabs/TabBar.tsx +8 -5
  415. package/tabs/TabPane.tsx +3 -1
  416. package/tabs/index.tsx +0 -1
  417. package/tagInput/__test__/tagInput.test.js +46 -0
  418. package/tagInput/_story/tagInput.stories.js +2 -2
  419. package/tagInput/index.tsx +31 -8
  420. package/timePicker/TimePicker.tsx +17 -2
  421. package/timePicker/__test__/timePicker.test.js +34 -3
  422. package/timePicker/_story/timepicker.stories.js +18 -0
  423. package/timeline/_story/timeline.stories.js +1 -1
  424. package/timeline/index.tsx +2 -2
  425. package/timeline/item.tsx +2 -1
  426. package/toast/toast.tsx +2 -0
  427. package/tooltip/TriangleArrow.tsx +1 -1
  428. package/tooltip/TriangleArrowVertical.tsx +1 -1
  429. package/tooltip/_story/tooltip.stories.js +562 -514
  430. package/tooltip/index.tsx +51 -33
  431. package/transfer/index.tsx +29 -25
  432. package/tree/_story/tree.stories.js +3 -3
  433. package/tree/index.tsx +10 -2
  434. package/tree/treeNode.tsx +54 -11
  435. package/treeSelect/__test__/treeMultiple.test.js +5 -0
  436. package/treeSelect/_story/treeSelect.stories.js +12 -0
  437. package/treeSelect/index.tsx +58 -7
  438. package/typography/base.tsx +7 -1
  439. package/typography/copyable.tsx +10 -1
  440. package/upload/fileCard.tsx +14 -16
  441. package/upload/index.tsx +10 -6
@@ -5,6 +5,7 @@ import sinon from 'sinon';
5
5
  import keyCode from '@douyinfe/semi-foundation/utils/keyCode';
6
6
  import * as _ from 'lodash';
7
7
  import { BASE_CLASS_PREFIX } from '../../../semi-foundation/base/constants';
8
+ import { numbers } from '@douyinfe/semi-foundation/inputNumber/constants';
8
9
  import { Form, withField } from '../../index';
9
10
 
10
11
  const log = (...args) => console.log(...args);
@@ -216,8 +217,8 @@ describe(`InputNumber`, () => {
216
217
  const addCount = 3;
217
218
  const minusCount = 1;
218
219
 
219
- _.times(addCount, () => addBtn.simulate('mousedown'));
220
- _.times(minusCount, () => minusBtn.simulate('mousedown'));
220
+ _.times(addCount, () => addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
221
+ _.times(minusCount, () => minusBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
221
222
 
222
223
  expect(inputElem.instance().value).toBe(String(defaultValue + addCount - minusCount));
223
224
  expect(onUpClick.called).toBe(true);
@@ -243,8 +244,8 @@ describe(`InputNumber`, () => {
243
244
  const addCount = 3;
244
245
  const minusCount = 1;
245
246
 
246
- _.times(addCount, () => addBtn.simulate('mousedown'));
247
- _.times(minusCount, () => minusBtn.simulate('mousedown'));
247
+ _.times(addCount, () => addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
248
+ _.times(minusCount, () => minusBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
248
249
 
249
250
  expect(inputElem.instance().value).toBe(String(defaultValue + addCount - minusCount));
250
251
  expect(onUpClick.called).toBe(true);
@@ -283,9 +284,9 @@ describe(`InputNumber`, () => {
283
284
  // click button focus
284
285
  const addCount = 3;
285
286
  const minusCount = 1;
286
- _.times(addCount, () => addBtn.simulate('mousedown'));
287
+ _.times(addCount, () => addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
287
288
  _.times(addCount, () => addBtn.simulate('mouseup'));
288
- _.times(minusCount, () => minusBtn.simulate('mousedown'));
289
+ _.times(minusCount, () => minusBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT }));
289
290
  _.times(minusCount, () => minusBtn.simulate('mouseup'));
290
291
  expect(inputElem.instance().value).toBe(String(defaultValue + addCount - minusCount));
291
292
  expect(inputNumber.find(BaseInputNumber).state('focusing')).toBeTruthy();
@@ -338,7 +339,7 @@ describe(`InputNumber`, () => {
338
339
  const btns = inputNumber.find(`.${BASE_CLASS_PREFIX}-input-number-suffix-btns .${BASE_CLASS_PREFIX}-input-number-button`);
339
340
  const inputElem = inputNumber.find('input');
340
341
  const addBtn = btns.first();
341
- addBtn.simulate('mousedown');
342
+ addBtn.simulate('mousedown', { button: numbers.MOUSE_BUTTON_LEFT });
342
343
  expect(inputElem.instance().value).toBe("1");
343
344
  })
344
345
 
@@ -366,5 +367,32 @@ describe(`InputNumber`, () => {
366
367
  inputElem.simulate('change', newEvent);
367
368
  expect(onNumberChange.calledOnce).toBe(true);
368
369
  expect(inputElem.instance().value).toBe('123');
369
- })
370
+ });
371
+
372
+ /**
373
+ * test buttons right click
374
+ */
375
+ it(`right click add/minus button`, async () => {
376
+ const defaultValue = 1000;
377
+ const onUpClick = sinon.spy();
378
+ const onDownClick = sinon.spy();
379
+ const MOUSE_BUTTON_RIGHT = 2;
380
+
381
+ const inputNumber = mount(
382
+ <InputNumber defaultValue={defaultValue} onUpClick={onUpClick} onDownClick={onDownClick} />
383
+ );
384
+ const inputElem = inputNumber.find('input');
385
+
386
+ const btns = inputNumber.find(`.${BASE_CLASS_PREFIX}-input-number-suffix-btns .${BASE_CLASS_PREFIX}-input-number-button`);
387
+
388
+ const addBtn = btns.first();
389
+ const minusBtn = btns.last();
390
+
391
+ _.times(1, () => addBtn.simulate('mousedown', { button: MOUSE_BUTTON_RIGHT }));
392
+ _.times(3, () => minusBtn.simulate('mousedown', { button: MOUSE_BUTTON_RIGHT }));
393
+
394
+ expect(inputElem.instance().value).toBe(String(defaultValue));
395
+ expect(onUpClick.called).toBe(false);
396
+ expect(onDownClick.called).toBe(false);
397
+ });
370
398
  });
@@ -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,
@@ -381,6 +389,8 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
381
389
  return (
382
390
  <div className={suffixChildrenCls}>
383
391
  <span
392
+ role="button"
393
+ tabIndex={-1}
384
394
  className={upClassName}
385
395
  onMouseDown={notAllowedUp ? noop : this.handleUpClick}
386
396
  onMouseUp={this.handleMouseUp}
@@ -389,6 +399,8 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
389
399
  <IconChevronUp size="extra-small" />
390
400
  </span>
391
401
  <span
402
+ role="button"
403
+ tabIndex={-1}
392
404
  className={downClassName}
393
405
  onMouseDown={notAllowedDown ? noop : this.handleDownClick}
394
406
  onMouseUp={this.handleMouseUp}
@@ -435,15 +447,29 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
435
447
  style,
436
448
  onNumberChange,
437
449
  keepFocus,
450
+ defaultValue,
438
451
  ...rest
439
452
  } = this.props;
440
- const { value } = this.state;
453
+ const { value, number } = this.state;
441
454
 
442
455
  const inputNumberCls = classnames(className, `${prefixCls}-number`, {
443
456
  [`${prefixCls}-number-size-${size}`]: size,
444
457
  });
445
458
 
446
459
  const buttons = this.renderButtons();
460
+ const ariaProps = {
461
+ 'aria-disabled': disabled,
462
+ step,
463
+ };
464
+ if (number) {
465
+ ariaProps['aria-valuenow'] = number;
466
+ }
467
+ if (max !== Infinity) {
468
+ ariaProps['aria-valuemax'] = max;
469
+ }
470
+ if (min !== -Infinity) {
471
+ ariaProps['aria-valuemin'] = min;
472
+ }
447
473
 
448
474
  const input = (
449
475
  <div
@@ -454,6 +480,8 @@ class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
454
480
  onMouseLeave={e => this.handleInputMouseLeave(e)}
455
481
  >
456
482
  <Input
483
+ role="spinbutton"
484
+ {...ariaProps}
457
485
  {...rest}
458
486
  size={size}
459
487
  disabled={disabled}
@@ -481,4 +509,4 @@ export default forwardStatics(
481
509
  InputNumber
482
510
  );
483
511
 
484
- export { InputNumber };
512
+ export { InputNumber };
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,
@@ -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() {
@@ -220,13 +220,17 @@ class Avatar extends _baseComponent.default {
220
220
  }, children));
221
221
  }
222
222
 
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);
223
+ return (
224
+ /*#__PURE__*/
225
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events
226
+ _react.default.createElement("span", (0, _assign.default)({}, others, {
227
+ style: style,
228
+ className: avatarCls,
229
+ onClick: onClick,
230
+ onMouseEnter: this.onEnter,
231
+ onMouseLeave: this.onLeave
232
+ }), content, hoverRender)
233
+ );
230
234
  }
231
235
 
232
236
  }
@@ -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", {