@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
@@ -110,6 +110,8 @@ class InputNumber extends BaseComponent {
110
110
  return /*#__PURE__*/React.createElement("div", {
111
111
  className: suffixChildrenCls
112
112
  }, /*#__PURE__*/React.createElement("span", {
113
+ role: "button",
114
+ tabIndex: -1,
113
115
  className: upClassName,
114
116
  onMouseDown: notAllowedUp ? _noop : this.handleUpClick,
115
117
  onMouseUp: this.handleMouseUp,
@@ -117,6 +119,8 @@ class InputNumber extends BaseComponent {
117
119
  }, /*#__PURE__*/React.createElement(IconChevronUp, {
118
120
  size: "extra-small"
119
121
  })), /*#__PURE__*/React.createElement("span", {
122
+ role: "button",
123
+ tabIndex: -1,
120
124
  className: downClassName,
121
125
  onMouseDown: notAllowedDown ? _noop : this.handleDownClick,
122
126
  onMouseUp: this.handleMouseUp,
@@ -408,24 +412,45 @@ class InputNumber extends BaseComponent {
408
412
  innerButtons,
409
413
  style,
410
414
  onNumberChange,
411
- keepFocus
415
+ keepFocus,
416
+ defaultValue
412
417
  } = _a,
413
- rest = __rest(_a, ["disabled", "className", "prefixCls", "min", "max", "step", "shiftStep", "precision", "formatter", "parser", "forwardedRef", "onUpClick", "onDownClick", "pressInterval", "pressTimeout", "suffix", "size", "hideButtons", "innerButtons", "style", "onNumberChange", "keepFocus"]);
418
+ rest = __rest(_a, ["disabled", "className", "prefixCls", "min", "max", "step", "shiftStep", "precision", "formatter", "parser", "forwardedRef", "onUpClick", "onDownClick", "pressInterval", "pressTimeout", "suffix", "size", "hideButtons", "innerButtons", "style", "onNumberChange", "keepFocus", "defaultValue"]);
414
419
 
415
420
  const {
416
- value
421
+ value,
422
+ number
417
423
  } = this.state;
418
424
  const inputNumberCls = classnames(className, "".concat(prefixCls, "-number"), {
419
425
  [_concatInstanceProperty(_context = "".concat(prefixCls, "-number-size-")).call(_context, size)]: size
420
426
  });
421
427
  const buttons = this.renderButtons();
428
+ const ariaProps = {
429
+ 'aria-disabled': disabled,
430
+ step
431
+ };
432
+
433
+ if (number) {
434
+ ariaProps['aria-valuenow'] = number;
435
+ }
436
+
437
+ if (max !== Infinity) {
438
+ ariaProps['aria-valuemax'] = max;
439
+ }
440
+
441
+ if (min !== -Infinity) {
442
+ ariaProps['aria-valuemin'] = min;
443
+ }
444
+
422
445
  const input = /*#__PURE__*/React.createElement("div", {
423
446
  className: inputNumberCls,
424
447
  style: style,
425
448
  onMouseMove: e => this.handleInputMouseMove(e),
426
449
  onMouseEnter: e => this.handleInputMouseEnter(e),
427
450
  onMouseLeave: e => this.handleInputMouseLeave(e)
428
- }, /*#__PURE__*/React.createElement(Input, _Object$assign({}, rest, {
451
+ }, /*#__PURE__*/React.createElement(Input, _Object$assign({
452
+ role: "spinbutton"
453
+ }, ariaProps, rest, {
429
454
  size: size,
430
455
  disabled: disabled,
431
456
  ref: this.setInputRef,
@@ -442,6 +467,12 @@ class InputNumber extends BaseComponent {
442
467
  }
443
468
 
444
469
  InputNumber.propTypes = {
470
+ 'aria-label': PropTypes.string,
471
+ 'aria-labelledby': PropTypes.string,
472
+ 'aria-invalid': PropTypes.bool,
473
+ 'aria-errormessage': PropTypes.string,
474
+ 'aria-describedby': PropTypes.string,
475
+ 'aria-required': PropTypes.bool,
445
476
  autofocus: PropTypes.bool,
446
477
  className: PropTypes.string,
447
478
  defaultValue: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
@@ -451,6 +482,7 @@ InputNumber.propTypes = {
451
482
  hideButtons: PropTypes.bool,
452
483
  innerButtons: PropTypes.bool,
453
484
  insetLabel: PropTypes.node,
485
+ insetLabelId: PropTypes.string,
454
486
  keepFocus: PropTypes.bool,
455
487
  max: PropTypes.number,
456
488
  min: PropTypes.number,
@@ -14,6 +14,8 @@ export interface SiderProps {
14
14
  className?: string;
15
15
  breakpoint?: Array<keyof ResponsiveMap>;
16
16
  onBreakpoint?: (screen: keyof ResponsiveMap, match: boolean) => void;
17
+ 'aria-label'?: React.AriaAttributes['aria-label'];
18
+ 'role'?: React.AriaRole;
17
19
  }
18
20
  declare class Sider extends React.PureComponent<SiderProps> {
19
21
  static propTypes: {
@@ -22,6 +24,8 @@ declare class Sider extends React.PureComponent<SiderProps> {
22
24
  className: PropTypes.Requireable<string>;
23
25
  breakpoint: PropTypes.Requireable<string[]>;
24
26
  onBreakpoint: PropTypes.Requireable<(...args: any[]) => any>;
27
+ 'aria-label': PropTypes.Requireable<string>;
28
+ role: PropTypes.Requireable<string>;
25
29
  };
26
30
  static defaultProps: {
27
31
  prefixCls: string;
@@ -114,6 +114,7 @@ class Sider extends React.PureComponent {
114
114
  });
115
115
  return /*#__PURE__*/React.createElement("aside", _Object$assign({
116
116
  className: classString,
117
+ "aria-label": this.props['aria-label'],
117
118
  style: style
118
119
  }, getDataAttr(others)), /*#__PURE__*/React.createElement("div", {
119
120
  className: "".concat(prefixCls, "-sider-children")
@@ -127,7 +128,9 @@ Sider.propTypes = {
127
128
  style: PropTypes.object,
128
129
  className: PropTypes.string,
129
130
  breakpoint: PropTypes.arrayOf(PropTypes.oneOf(bpt)),
130
- onBreakpoint: PropTypes.func
131
+ onBreakpoint: PropTypes.func,
132
+ 'aria-label': PropTypes.string,
133
+ role: PropTypes.string
131
134
  };
132
135
  Sider.defaultProps = {
133
136
  prefixCls: cssClasses.PREFIX
@@ -35,6 +35,8 @@ function generator(type) {
35
35
  return BasicComponent => class Adapter extends React.PureComponent {
36
36
  render() {
37
37
  return /*#__PURE__*/React.createElement(BasicComponent, _Object$assign({
38
+ role: this.props.role,
39
+ "aria-label": this.props['aria-label'],
38
40
  type: typeName,
39
41
  tagName: tagName
40
42
  }, this.props));
@@ -5,7 +5,7 @@ import ListItem from './item';
5
5
  import { Grid } from './list-context';
6
6
  import BaseComponent from '../_base/baseComponent';
7
7
  export { ListItemProps } from './item';
8
- export interface ListProps {
8
+ export interface ListProps<T> {
9
9
  style?: React.CSSProperties;
10
10
  className?: string;
11
11
  bordered?: boolean;
@@ -15,15 +15,15 @@ export interface ListProps {
15
15
  size?: 'small' | 'large' | 'default';
16
16
  split?: boolean;
17
17
  emptyContent?: React.ReactNode;
18
- dataSource?: any[];
19
- renderItem?: (item: any, ind: number) => React.ReactNode;
18
+ dataSource?: T[];
19
+ renderItem?: (item: T, ind: number) => React.ReactNode;
20
20
  grid?: Grid;
21
21
  loading?: boolean;
22
22
  loadMore?: React.ReactNode;
23
23
  onClick?: React.MouseEventHandler<HTMLLIElement>;
24
24
  onRightClick?: React.MouseEventHandler<HTMLLIElement>;
25
25
  }
26
- declare class List extends BaseComponent<ListProps> {
26
+ declare class List<T = any> extends BaseComponent<ListProps<T>> {
27
27
  static Item: typeof ListItem;
28
28
  static propTypes: {
29
29
  style: PropTypes.Requireable<object>;
@@ -79,7 +79,6 @@ export default class ListItem extends PureComponent {
79
79
  }
80
80
 
81
81
  let content = /*#__PURE__*/React.createElement("li", {
82
- role: "list-item",
83
82
  className: itemCls,
84
83
  style: style,
85
84
  onClick: handleClick,
@@ -75,6 +75,7 @@ class Modal extends BaseComponent {
75
75
  return null;
76
76
  } else {
77
77
  return /*#__PURE__*/React.createElement(Button, _Object$assign({
78
+ "aria-label": "cancel",
78
79
  onClick: this.handleCancel,
79
80
  loading: cancelLoading,
80
81
  type: "tertiary"
@@ -85,6 +86,7 @@ class Modal extends BaseComponent {
85
86
  return /*#__PURE__*/React.createElement(LocaleConsumer, {
86
87
  componentName: "Modal"
87
88
  }, (locale, localeCode) => /*#__PURE__*/React.createElement("div", null, getCancelButton(locale), /*#__PURE__*/React.createElement(Button, _Object$assign({
89
+ "aria-label": "confirm",
88
90
  type: okType,
89
91
  theme: "solid",
90
92
  loading: confirmLoading,
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import BaseComponent from '../_base/baseComponent';
4
- import { ModalContentAdapter, ModalContentProps, ModalContentState } from '@douyinfe/semi-foundation/lib/es/modal/modalContentFoundation';
4
+ import ModalContentFoundation, { ModalContentAdapter, ModalContentProps, ModalContentState } from '@douyinfe/semi-foundation/lib/es/modal/modalContentFoundation';
5
5
  export default class ModalContent extends BaseComponent<ModalContentProps, ModalContentState> {
6
6
  static contextType: React.Context<import("../configProvider/context").ContextValue>;
7
7
  static propTypes: {
@@ -19,6 +19,8 @@ export default class ModalContent extends BaseComponent<ModalContentProps, Modal
19
19
  };
20
20
  dialogId: string;
21
21
  private timeoutId;
22
+ modalDialogRef: React.MutableRefObject<HTMLDivElement>;
23
+ foundation: ModalContentFoundation;
22
24
  constructor(props: ModalContentProps);
23
25
  get adapter(): ModalContentAdapter;
24
26
  componentDidMount(): void;
@@ -1,3 +1,5 @@
1
+ import _get from "lodash/get";
2
+ import _isFunction from "lodash/isFunction";
1
3
  import _noop from "lodash/noop";
2
4
  import _indexOfInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/index-of";
3
5
  import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
@@ -30,6 +32,7 @@ import BaseComponent from '../_base/baseComponent'; // eslint-disable-next-line
30
32
 
31
33
  import ModalContentFoundation from '@douyinfe/semi-foundation/lib/es/modal/modalContentFoundation';
32
34
  import { IconClose } from '@douyinfe/semi-icons';
35
+ import { getActiveElement } from '../_utils';
33
36
  let uuid = 0;
34
37
  export default class ModalContent extends BaseComponent {
35
38
  constructor(props) {
@@ -89,6 +92,7 @@ export default class ModalContent extends BaseComponent {
89
92
  if (closable) {
90
93
  const iconType = closeIcon || /*#__PURE__*/React.createElement(IconClose, null);
91
94
  closer = /*#__PURE__*/React.createElement(Button, {
95
+ "aria-label": "close",
92
96
  className: "".concat(cssClasses.DIALOG, "-close"),
93
97
  key: "close-btn",
94
98
  onClick: this.close,
@@ -125,7 +129,8 @@ export default class ModalContent extends BaseComponent {
125
129
  className: "".concat(cssClasses.DIALOG, "-header")
126
130
  }, icon, /*#__PURE__*/React.createElement(Typography.Title, {
127
131
  heading: 5,
128
- className: "".concat(cssClasses.DIALOG, "-title")
132
+ className: "".concat(cssClasses.DIALOG, "-title"),
133
+ id: "".concat(cssClasses.DIALOG, "-title")
129
134
  }, title), closer);
130
135
  };
131
136
 
@@ -143,6 +148,7 @@ export default class ModalContent extends BaseComponent {
143
148
  const hasHeader = title !== null && title !== undefined || 'header' in this.props;
144
149
  return hasHeader ? /*#__PURE__*/React.createElement("div", {
145
150
  className: bodyCls,
151
+ id: "".concat(cssClasses.DIALOG, "-body"),
146
152
  style: bodyStyle
147
153
  }, children) : /*#__PURE__*/React.createElement("div", {
148
154
  className: "".concat(cssClasses.DIALOG, "-body-wrapper")
@@ -182,13 +188,21 @@ export default class ModalContent extends BaseComponent {
182
188
  const footer = props.footer ? /*#__PURE__*/React.createElement("div", {
183
189
  className: "".concat(cssClasses.DIALOG, "-footer")
184
190
  }, props.footer) : null;
185
- const dialogElement = /*#__PURE__*/React.createElement("div", {
191
+ const dialogElement =
192
+ /*#__PURE__*/
193
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
194
+ React.createElement("div", {
186
195
  key: "dialog-element",
187
196
  className: digCls,
188
197
  onMouseDown: this.onDialogMouseDown,
189
198
  style: _Object$assign(_Object$assign({}, props.style), style),
190
199
  id: this.dialogId
191
200
  }, /*#__PURE__*/React.createElement("div", {
201
+ role: "dialog",
202
+ ref: this.modalDialogRef,
203
+ "aria-modal": "true",
204
+ "aria-labelledby": "".concat(cssClasses.DIALOG, "-title"),
205
+ "aria-describedby": "".concat(cssClasses.DIALOG, "-body"),
192
206
  onAnimationEnd: props.onAnimationEnd,
193
207
  className: cls(["".concat(cssClasses.DIALOG, "-content"), props.contentClassName, {
194
208
  ["".concat(cssClasses.DIALOG, "-content-fullScreen")]: props.isFullScreen
@@ -199,10 +213,12 @@ export default class ModalContent extends BaseComponent {
199
213
  };
200
214
 
201
215
  this.state = {
202
- dialogMouseDown: false
216
+ dialogMouseDown: false,
217
+ prevFocusElement: getActiveElement()
203
218
  };
204
219
  this.foundation = new ModalContentFoundation(this.adapter);
205
220
  this.dialogId = "dialog-".concat(uuid++);
221
+ this.modalDialogRef = /*#__PURE__*/React.createRef();
206
222
  }
207
223
 
208
224
  get adapter() {
@@ -239,12 +255,37 @@ export default class ModalContent extends BaseComponent {
239
255
  document.removeEventListener('keydown', _bindInstanceProperty(_context3 = this.foundation.handleKeyDown).call(_context3, this.foundation));
240
256
  }
241
257
  },
242
- getMouseState: () => this.state.dialogMouseDown
258
+ getMouseState: () => this.state.dialogMouseDown,
259
+ modalDialogFocus: () => {
260
+ let activeElementInDialog;
261
+
262
+ if (this.modalDialogRef) {
263
+ const activeElement = getActiveElement();
264
+ activeElementInDialog = this.modalDialogRef.current.contains(activeElement);
265
+ }
266
+
267
+ if (!activeElementInDialog) {
268
+ this.modalDialogRef && this.modalDialogRef.current.focus();
269
+ }
270
+ },
271
+ modalDialogBlur: () => {
272
+ this.modalDialogRef && this.modalDialogRef.current.blur();
273
+ },
274
+ prevFocusElementReFocus: () => {
275
+ const {
276
+ prevFocusElement
277
+ } = this.state;
278
+
279
+ const focus = _get(prevFocusElement, 'focus');
280
+
281
+ _isFunction(focus) && prevFocusElement.focus();
282
+ }
243
283
  });
244
284
  }
245
285
 
246
286
  componentDidMount() {
247
287
  this.foundation.handleKeyDownEventListenerMount();
288
+ this.foundation.modalDialogFocus();
248
289
  }
249
290
 
250
291
  componentWillUnmount() {
@@ -272,7 +313,7 @@ export default class ModalContent extends BaseComponent {
272
313
  const elem = /*#__PURE__*/React.createElement("div", {
273
314
  className: classList
274
315
  }, this.getMaskElement(), /*#__PURE__*/React.createElement("div", {
275
- role: "modal",
316
+ role: "none",
276
317
  tabIndex: -1,
277
318
  className: "".concat(cssClasses.DIALOG, "-wrap"),
278
319
  onClick: maskClosable ? this.onMaskClick : null,
@@ -1,7 +1,7 @@
1
1
  import BaseComponent, { BaseProps } from '../_base/baseComponent';
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
- import { ItemProps, SelectedItemProps, ItemAdapter } from '@douyinfe/semi-foundation/lib/es/navigation/itemFoundation';
4
+ import ItemFoundation, { ItemProps, SelectedItemProps, ItemAdapter } from '@douyinfe/semi-foundation/lib/es/navigation/itemFoundation';
5
5
  export interface NavItemProps extends ItemProps, BaseProps {
6
6
  children?: React.ReactNode;
7
7
  disabled?: boolean;
@@ -59,12 +59,14 @@ export default class NavItem extends BaseComponent<NavItemProps, NavItemState> {
59
59
  onMouseLeave: (...args: any[]) => void;
60
60
  disabled: boolean;
61
61
  };
62
+ foundation: ItemFoundation;
62
63
  constructor(props: NavItemProps);
63
64
  _invokeContextFunc(funcName: string, ...args: any[]): any;
64
65
  get adapter(): ItemAdapter<NavItemProps, NavItemState>;
65
66
  renderIcon(icon: React.ReactNode, pos: string, isToggleIcon?: boolean): JSX.Element;
66
67
  setItemRef: (ref: HTMLLIElement) => void;
67
68
  wrapTooltip: (node: React.ReactNode) => JSX.Element;
68
- handleClick: (e: React.MouseEvent) => any;
69
+ handleClick: (e: React.MouseEvent) => void;
70
+ handleKeyPress: (e: React.KeyboardEvent) => void;
69
71
  render(): {} | React.ReactElement<any, string | React.JSXElementConstructor<any>>;
70
72
  }
@@ -45,6 +45,8 @@ export default class NavItem extends BaseComponent {
45
45
 
46
46
  this.handleClick = e => this.foundation.handleClick(e);
47
47
 
48
+ this.handleKeyPress = e => this.foundation.handleKeyPress(e);
49
+
48
50
  this.state = {
49
51
  tooltipShow: false
50
52
  };
@@ -103,12 +105,17 @@ export default class NavItem extends BaseComponent {
103
105
  var _context;
104
106
 
105
107
  return Boolean(this.context && this.context.selectedKeys && _includesInstanceProperty(_context = this.context.selectedKeys).call(_context, this.props.itemKey));
108
+ },
109
+ getIsOpen: () => {
110
+ var _context2;
111
+
112
+ return Boolean(this.context && this.context.openKeys && _includesInstanceProperty(_context2 = this.context.openKeys).call(_context2, this.props.itemKey));
106
113
  }
107
114
  });
108
115
  }
109
116
 
110
117
  renderIcon(icon, pos) {
111
- var _context2;
118
+ var _context3;
112
119
 
113
120
  let isToggleIcon = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
114
121
 
@@ -127,7 +134,7 @@ export default class NavItem extends BaseComponent {
127
134
  }
128
135
 
129
136
  const className = cls("".concat(clsPrefix, "-icon"), {
130
- [_concatInstanceProperty(_context2 = "".concat(clsPrefix, "-icon-toggle-")).call(_context2, this.context.toggleIconPosition)]: isToggleIcon,
137
+ [_concatInstanceProperty(_context3 = "".concat(clsPrefix, "-icon-toggle-")).call(_context3, this.context.toggleIconPosition)]: isToggleIcon,
131
138
  ["".concat(clsPrefix, "-icon-info")]: !isToggleIcon
132
139
  });
133
140
  return /*#__PURE__*/React.createElement("i", {
@@ -215,14 +222,27 @@ export default class NavItem extends BaseComponent {
215
222
  ["".concat(clsPrefix, "-collapsed")]: isCollapsed,
216
223
  ["".concat(clsPrefix, "-disabled")]: disabled
217
224
  });
218
- itemDom = /*#__PURE__*/React.createElement("li", {
225
+ const ariaProps = {
226
+ 'aria-disabled': disabled
227
+ };
228
+
229
+ if (isSubNav) {
230
+ const isOpen = this.adapter.getIsOpen();
231
+ ariaProps['aria-expanded'] = isOpen;
232
+ }
233
+
234
+ itemDom = /*#__PURE__*/React.createElement("li", _Object$assign({
235
+ role: "menuitem",
236
+ tabIndex: -1
237
+ }, ariaProps, {
219
238
  style: style,
220
239
  ref: this.setItemRef,
221
240
  className: popoverItemCls,
222
241
  onClick: this.handleClick,
223
242
  onMouseEnter: onMouseEnter,
224
- onMouseLeave: onMouseLeave
225
- }, itemChildren);
243
+ onMouseLeave: onMouseLeave,
244
+ onKeyPress: this.handleKeyPress
245
+ }), itemChildren);
226
246
  } // Display Tooltip when disabled and SubNav
227
247
 
228
248
 
@@ -2,7 +2,7 @@ import BaseComponent, { BaseProps } from '../_base/baseComponent';
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import '@douyinfe/semi-foundation/lib/es/navigation/navigation.css';
5
- import { SubNavAdapter } from '@douyinfe/semi-foundation/lib/es/navigation/subNavFoundation';
5
+ import SubNavFoundation, { SubNavAdapter } from '@douyinfe/semi-foundation/lib/es/navigation/subNavFoundation';
6
6
  export interface ToggleIcon {
7
7
  open?: string;
8
8
  closed?: string;
@@ -88,13 +88,15 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
88
88
  };
89
89
  titleRef: React.RefObject<HTMLDivElement>;
90
90
  itemRef: React.RefObject<HTMLLIElement>;
91
+ foundation: SubNavFoundation;
91
92
  constructor(props: SubNavProps);
92
93
  setItemRef: (ref: HTMLLIElement | React.RefObject<HTMLLIElement>) => void;
93
94
  setTitleRef: (ref: HTMLDivElement | React.RefObject<HTMLDivElement>) => void;
94
95
  _invokeContextFunc(funcName: string, ...args: any[]): any;
95
96
  get adapter(): SubNavAdapter<SubNavProps, SubNavState>;
96
97
  handleClick: (e: React.MouseEvent) => void;
97
- handleDropdownVisible: (visible: boolean) => any;
98
+ handleKeyPress: (e: React.KeyboardEvent) => void;
99
+ handleDropdownVisible: (visible: boolean) => void;
98
100
  renderIcon(icon: React.ReactNode, pos: string, withTransition?: boolean, isToggleIcon?: boolean, key?: number | string): JSX.Element;
99
101
  renderTitleDiv(): JSX.Element;
100
102
  renderSubUl(): JSX.Element;
@@ -49,6 +49,10 @@ export default class SubNav extends BaseComponent {
49
49
  this.foundation.handleClick(e && e.nativeEvent, this.titleRef && this.titleRef.current);
50
50
  };
51
51
 
52
+ this.handleKeyPress = e => {
53
+ this.foundation.handleKeyPress(e && e.nativeEvent, this.titleRef && this.titleRef.current);
54
+ };
55
+
52
56
  this.handleDropdownVisible = visible => this.foundation.handleDropdownVisibleChange(visible);
53
57
 
54
58
  this.state = {
@@ -203,9 +207,12 @@ export default class SubNav extends BaseComponent {
203
207
  }
204
208
 
205
209
  const titleDiv = /*#__PURE__*/React.createElement("div", {
210
+ role: "menuitem",
211
+ tabIndex: -1,
206
212
  ref: this.setTitleRef,
207
213
  className: titleCls,
208
- onClick: this.handleClick
214
+ onClick: this.handleClick,
215
+ onKeyPress: this.handleKeyPress
209
216
  }, /*#__PURE__*/React.createElement("div", {
210
217
  className: "".concat(prefixCls, "-item-inner")
211
218
  }, placeholderIcons, this.context.toggleIconPosition === strings.TOGGLE_ICON_LEFT && this.renderIcon(toggleIconType, strings.ICON_POS_RIGHT, withTransition, true, 'key-toggle-position-left'), icon || indent || isInSubNav && mode !== strings.MODE_HORIZONTAL ? this.renderIcon(icon, strings.ICON_POS_LEFT, undefined, undefined, 'key-inSubNav-position-left') : null, /*#__PURE__*/React.createElement("span", {
@@ -338,6 +338,8 @@ class Nav extends BaseComponent {
338
338
  style: bodyStyle,
339
339
  className: "".concat(prefixCls, "-list-wrapper")
340
340
  }, /*#__PURE__*/React.createElement("ul", {
341
+ role: "menu",
342
+ "aria-orientation": mode,
341
343
  className: "".concat(prefixCls, "-list")
342
344
  }, this.adapter.getCache('itemElems'), children))), footers))));
343
345
  }
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { NoticeAdapter, NoticeState, NoticeProps } from '@douyinfe/semi-foundation/lib/es/notification/notificationFoundation';
3
+ import { NoticeAdapter, NoticeProps, NoticeState } from '@douyinfe/semi-foundation/lib/es/notification/notificationFoundation';
4
4
  import BaseComponent from '../_base/baseComponent';
5
5
  export interface NoticeReactProps extends NoticeProps {
6
6
  style?: React.CSSProperties;
@@ -22,12 +22,13 @@ import React from 'react';
22
22
  import cls from 'classnames';
23
23
  import PropTypes from 'prop-types';
24
24
  import ConfigContext from '../configProvider/context';
25
- import { numbers, cssClasses, strings } from '@douyinfe/semi-foundation/lib/es/notification/constants';
25
+ import { cssClasses, numbers, strings } from '@douyinfe/semi-foundation/lib/es/notification/constants';
26
26
  import NotificationFoundation from '@douyinfe/semi-foundation/lib/es/notification/notificationFoundation';
27
27
  import Button from '../iconButton';
28
28
  import BaseComponent from '../_base/baseComponent';
29
29
  import { isSemiIcon } from '../_utils';
30
- import { IconAlertTriangle, IconInfoCircle, IconTickCircle, IconAlertCircle, IconClose } from '@douyinfe/semi-icons';
30
+ import { IconAlertCircle, IconAlertTriangle, IconClose, IconInfoCircle, IconTickCircle } from '@douyinfe/semi-icons';
31
+ import { getUuidShort } from '@douyinfe/semi-foundation/lib/es/utils/uuid';
31
32
  const prefixCls = cssClasses.NOTICE;
32
33
  const {
33
34
  duration
@@ -154,28 +155,36 @@ class Notice extends BaseComponent {
154
155
  [_concatInstanceProperty(_context3 = "".concat(prefixCls, "-")).call(_context3, theme)]: theme === 'light',
155
156
  ["".concat(prefixCls, "-rtl")]: direction === 'rtl'
156
157
  });
157
- return /*#__PURE__*/React.createElement("div", {
158
- className: wrapper,
159
- style: style,
160
- onMouseEnter: this.clearCloseTimer,
161
- onMouseLeave: this.startCloseTimer,
162
- onClick: this.notifyClick
163
- }, /*#__PURE__*/React.createElement("div", null, this.renderTypeIcon()), /*#__PURE__*/React.createElement("div", {
164
- className: "".concat(prefixCls, "-inner")
165
- }, /*#__PURE__*/React.createElement("div", {
166
- className: "".concat(prefixCls, "-content-wrapper")
167
- }, title ? /*#__PURE__*/React.createElement("div", {
168
- className: "".concat(prefixCls, "-title")
169
- }, title) : '', content ? /*#__PURE__*/React.createElement("div", {
170
- className: "".concat(prefixCls, "-content")
171
- }, content) : ''), showClose && /*#__PURE__*/React.createElement(Button, {
172
- className: "".concat(prefixCls, "-icon-close"),
173
- type: "tertiary",
174
- icon: /*#__PURE__*/React.createElement(IconClose, null),
175
- theme: "borderless",
176
- size: "small",
177
- onClick: this.close
178
- })));
158
+ const titleID = getUuidShort({});
159
+ return (
160
+ /*#__PURE__*/
161
+ // eslint-disable-next-line jsx-a11y/no-static-element-interactions
162
+ React.createElement("div", {
163
+ className: wrapper,
164
+ style: style,
165
+ onMouseEnter: this.clearCloseTimer,
166
+ onMouseLeave: this.startCloseTimer,
167
+ onClick: this.notifyClick,
168
+ "aria-labelledby": titleID,
169
+ role: 'alert'
170
+ }, /*#__PURE__*/React.createElement("div", null, this.renderTypeIcon()), /*#__PURE__*/React.createElement("div", {
171
+ className: "".concat(prefixCls, "-inner")
172
+ }, /*#__PURE__*/React.createElement("div", {
173
+ className: "".concat(prefixCls, "-content-wrapper")
174
+ }, title ? /*#__PURE__*/React.createElement("div", {
175
+ id: titleID,
176
+ className: "".concat(prefixCls, "-title")
177
+ }, title) : '', content ? /*#__PURE__*/React.createElement("div", {
178
+ className: "".concat(prefixCls, "-content")
179
+ }, content) : ''), showClose && /*#__PURE__*/React.createElement(Button, {
180
+ className: "".concat(prefixCls, "-icon-close"),
181
+ type: "tertiary",
182
+ icon: /*#__PURE__*/React.createElement(IconClose, null),
183
+ theme: "borderless",
184
+ size: "small",
185
+ onClick: this.close
186
+ })))
187
+ );
179
188
  }
180
189
 
181
190
  }
@@ -6,6 +6,8 @@ import _concatInstanceProperty from "@babel/runtime-corejs3/core-js-stable/insta
6
6
  import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
7
7
 
8
8
  /* eslint-disable max-len */
9
+
10
+ /* eslint-disable jsx-a11y/no-noninteractive-element-to-interactive-role */
9
11
  import React from 'react';
10
12
  import classNames from 'classnames';
11
13
  import PropTypes from 'prop-types';
@@ -148,9 +150,11 @@ export default class Pagination extends BaseComponent {
148
150
  ["".concat(prefixCls, "-item-disabled")]: prevDisabled
149
151
  });
150
152
  return /*#__PURE__*/React.createElement("li", {
153
+ role: "button",
154
+ "aria-disabled": prevDisabled ? true : false,
155
+ "aria-label": "Previous",
151
156
  onClick: e => !prevDisabled && this.foundation.goPrev(e),
152
- className: preClassName,
153
- "tab-index": 0
157
+ className: preClassName
154
158
  }, prevText || /*#__PURE__*/React.createElement(IconChevronLeft, {
155
159
  size: "large"
156
160
  }));
@@ -169,9 +173,11 @@ export default class Pagination extends BaseComponent {
169
173
  ["".concat(prefixCls, "-next")]: true
170
174
  });
171
175
  return /*#__PURE__*/React.createElement("li", {
176
+ role: "button",
177
+ "aria-disabled": nextDisabled ? true : false,
178
+ "aria-label": "Next",
172
179
  onClick: e => !nextDisabled && this.foundation.goNext(e),
173
- className: nextClassName,
174
- "tab-index": 0
180
+ className: nextClassName
175
181
  }, nextText || /*#__PURE__*/React.createElement(IconChevronRight, {
176
182
  size: "large"
177
183
  }));
@@ -207,6 +213,7 @@ export default class Pagination extends BaseComponent {
207
213
  return /*#__PURE__*/React.createElement("div", {
208
214
  className: switchCls
209
215
  }, /*#__PURE__*/React.createElement(Select, {
216
+ "aria-label": "Page size selector",
210
217
  onChange: newPageSize => this.foundation.changePageSize(newPageSize),
211
218
  value: pageSize,
212
219
  key: pageSizeText,
@@ -272,7 +279,8 @@ export default class Pagination extends BaseComponent {
272
279
  key: _concatInstanceProperty(_context3 = "".concat(page)).call(_context3, i),
273
280
  onClick: () => this.foundation.goPage(page, i),
274
281
  className: pageListClassName,
275
- "tab-index": 0
282
+ "aria-label": page === '...' ? 'More' : "Page ".concat(page),
283
+ "aria-current": currentPage === page ? "page" : false
276
284
  }, page);
277
285
 
278
286
  if (page === '...') {
@@ -311,10 +319,12 @@ export default class Pagination extends BaseComponent {
311
319
  } = item;
312
320
  const page = restList[index];
313
321
  return /*#__PURE__*/React.createElement("div", {
322
+ role: "listitem",
314
323
  key: _concatInstanceProperty(_context5 = "".concat(page)).call(_context5, index),
315
324
  className: className,
316
325
  onClick: () => this.foundation.goPage(page, index),
317
- style: style
326
+ style: style,
327
+ "aria-label": "".concat(page)
318
328
  }, page);
319
329
  };
320
330