@douyinfe/semi-ui 2.2.0 → 2.3.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 (439) 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/__test__/datePicker.test.js +108 -0
  34. package/datePicker/_story/datePicker.stories.js +146 -2
  35. package/datePicker/datePicker.tsx +24 -0
  36. package/datePicker/monthsGrid.tsx +2 -1
  37. package/dist/css/semi.css +34 -7
  38. package/dist/css/semi.min.css +1 -1
  39. package/dist/umd/semi-ui.js +2768 -1501
  40. package/dist/umd/semi-ui.js.map +1 -1
  41. package/dist/umd/semi-ui.min.js +1 -1
  42. package/dist/umd/semi-ui.min.js.map +1 -1
  43. package/dropdown/dropdownItem.tsx +1 -1
  44. package/dropdown/dropdownMenu.tsx +1 -1
  45. package/empty/index.tsx +4 -4
  46. package/form/_story/FormApi/formApiDemo.jsx +3 -2
  47. package/form/_story/Validate/validateDemo.jsx +1 -1
  48. package/form/_story/demo.jsx +12 -3
  49. package/form/_story/form.stories.js +0 -7
  50. package/form/baseForm.tsx +2 -0
  51. package/form/errorMessage.tsx +13 -2
  52. package/form/hoc/withField.tsx +37 -8
  53. package/form/index.tsx +0 -2
  54. package/form/interface.ts +2 -0
  55. package/form/label.tsx +4 -2
  56. package/input/index.tsx +49 -4
  57. package/input/inputGroup.tsx +9 -4
  58. package/input/textarea.tsx +25 -6
  59. package/inputNumber/_story/inputNumber.stories.js +12 -0
  60. package/inputNumber/index.tsx +33 -2
  61. package/layout/Sider.tsx +6 -2
  62. package/layout/index.tsx +4 -3
  63. package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
  64. package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
  65. package/lib/cjs/_utils/index.d.ts +1 -0
  66. package/lib/cjs/_utils/index.js +6 -1
  67. package/lib/cjs/anchor/index.d.ts +2 -0
  68. package/lib/cjs/anchor/index.js +6 -1
  69. package/lib/cjs/anchor/link.d.ts +4 -1
  70. package/lib/cjs/anchor/link.js +39 -5
  71. package/lib/cjs/autoComplete/index.d.ts +17 -0
  72. package/lib/cjs/autoComplete/index.js +21 -2
  73. package/lib/cjs/avatar/index.d.ts +4 -3
  74. package/lib/cjs/avatar/index.js +15 -11
  75. package/lib/cjs/banner/index.js +4 -2
  76. package/lib/cjs/breadcrumb/index.d.ts +3 -0
  77. package/lib/cjs/breadcrumb/index.js +10 -4
  78. package/lib/cjs/breadcrumb/item.js +2 -2
  79. package/lib/cjs/button/Button.d.ts +2 -0
  80. package/lib/cjs/button/Button.js +4 -2
  81. package/lib/cjs/button/buttonGroup.d.ts +3 -0
  82. package/lib/cjs/button/buttonGroup.js +8 -4
  83. package/lib/cjs/button/index.d.ts +1 -0
  84. package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
  85. package/lib/cjs/button/splitButtonGroup.js +5 -2
  86. package/lib/cjs/card/index.d.ts +3 -0
  87. package/lib/cjs/card/index.js +3 -1
  88. package/lib/cjs/cascader/index.d.ts +14 -0
  89. package/lib/cjs/cascader/index.js +35 -7
  90. package/lib/cjs/checkbox/checkbox.d.ts +21 -1
  91. package/lib/cjs/checkbox/checkbox.js +51 -17
  92. package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
  93. package/lib/cjs/checkbox/checkboxGroup.js +16 -3
  94. package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
  95. package/lib/cjs/checkbox/checkboxInner.js +20 -3
  96. package/lib/cjs/collapse/item.d.ts +2 -1
  97. package/lib/cjs/collapse/item.js +12 -2
  98. package/lib/cjs/collapsible/index.d.ts +1 -0
  99. package/lib/cjs/collapsible/index.js +4 -2
  100. package/lib/cjs/datePicker/datePicker.d.ts +12 -0
  101. package/lib/cjs/datePicker/datePicker.js +22 -3
  102. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -0
  103. package/lib/cjs/datePicker/monthsGrid.js +2 -1
  104. package/lib/cjs/dropdown/dropdownItem.js +3 -1
  105. package/lib/cjs/dropdown/dropdownMenu.js +4 -1
  106. package/lib/cjs/form/baseForm.d.ts +9 -0
  107. package/lib/cjs/form/baseForm.js +3 -1
  108. package/lib/cjs/form/errorMessage.d.ts +4 -0
  109. package/lib/cjs/form/errorMessage.js +21 -3
  110. package/lib/cjs/form/field.d.ts +7 -0
  111. package/lib/cjs/form/hoc/withField.js +49 -16
  112. package/lib/cjs/form/index.d.ts +0 -1
  113. package/lib/cjs/form/interface.d.ts +2 -0
  114. package/lib/cjs/form/label.d.ts +2 -0
  115. package/lib/cjs/form/label.js +5 -2
  116. package/lib/cjs/input/index.d.ts +16 -0
  117. package/lib/cjs/input/index.js +51 -15
  118. package/lib/cjs/input/inputGroup.d.ts +2 -1
  119. package/lib/cjs/input/inputGroup.js +11 -1
  120. package/lib/cjs/input/textarea.js +12 -1
  121. package/lib/cjs/inputNumber/index.d.ts +21 -12
  122. package/lib/cjs/inputNumber/index.js +37 -3
  123. package/lib/cjs/layout/Sider.d.ts +4 -0
  124. package/lib/cjs/layout/Sider.js +4 -1
  125. package/lib/cjs/layout/index.js +2 -0
  126. package/lib/cjs/list/item.js +0 -1
  127. package/lib/cjs/modal/Modal.js +2 -0
  128. package/lib/cjs/modal/ModalContent.d.ts +3 -1
  129. package/lib/cjs/modal/ModalContent.js +47 -5
  130. package/lib/cjs/navigation/Item.d.ts +4 -2
  131. package/lib/cjs/navigation/Item.js +25 -5
  132. package/lib/cjs/navigation/SubNav.d.ts +4 -2
  133. package/lib/cjs/navigation/SubNav.js +8 -1
  134. package/lib/cjs/navigation/index.js +2 -0
  135. package/lib/cjs/notification/notice.d.ts +1 -1
  136. package/lib/cjs/notification/notice.js +32 -22
  137. package/lib/cjs/pagination/index.js +16 -6
  138. package/lib/cjs/popover/index.js +7 -3
  139. package/lib/cjs/progress/index.d.ts +8 -0
  140. package/lib/cjs/progress/index.js +42 -9
  141. package/lib/cjs/radio/radio.d.ts +6 -1
  142. package/lib/cjs/radio/radio.js +17 -5
  143. package/lib/cjs/radio/radioGroup.d.ts +16 -1
  144. package/lib/cjs/radio/radioGroup.js +18 -3
  145. package/lib/cjs/radio/radioInner.d.ts +6 -1
  146. package/lib/cjs/radio/radioInner.js +11 -3
  147. package/lib/cjs/rating/index.d.ts +14 -0
  148. package/lib/cjs/rating/index.js +14 -3
  149. package/lib/cjs/rating/item.d.ts +2 -0
  150. package/lib/cjs/rating/item.js +6 -1
  151. package/lib/cjs/select/index.d.ts +16 -0
  152. package/lib/cjs/select/index.js +65 -19
  153. package/lib/cjs/select/option.js +28 -22
  154. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  155. package/lib/cjs/sideSheet/SideSheetContent.js +4 -1
  156. package/lib/cjs/sideSheet/index.d.ts +1 -0
  157. package/lib/cjs/sideSheet/index.js +2 -1
  158. package/lib/cjs/slider/index.d.ts +2 -1
  159. package/lib/cjs/slider/index.js +64 -17
  160. package/lib/cjs/spin/icon.js +3 -4
  161. package/lib/cjs/steps/basicStep.d.ts +3 -0
  162. package/lib/cjs/steps/basicStep.js +23 -25
  163. package/lib/cjs/steps/basicSteps.d.ts +1 -0
  164. package/lib/cjs/steps/basicSteps.js +2 -1
  165. package/lib/cjs/steps/fillStep.d.ts +3 -0
  166. package/lib/cjs/steps/fillStep.js +19 -4
  167. package/lib/cjs/steps/fillSteps.d.ts +1 -0
  168. package/lib/cjs/steps/fillSteps.js +2 -1
  169. package/lib/cjs/steps/navStep.d.ts +3 -0
  170. package/lib/cjs/steps/navStep.js +22 -25
  171. package/lib/cjs/steps/navSteps.d.ts +1 -0
  172. package/lib/cjs/steps/navSteps.js +2 -1
  173. package/lib/cjs/switch/index.d.ts +12 -0
  174. package/lib/cjs/switch/index.js +19 -4
  175. package/lib/cjs/table/Body/BaseRow.js +35 -3
  176. package/lib/cjs/table/Body/index.js +9 -1
  177. package/lib/cjs/table/ColumnFilter.js +4 -0
  178. package/lib/cjs/table/ColumnSelection.d.ts +3 -0
  179. package/lib/cjs/table/ColumnSelection.js +6 -2
  180. package/lib/cjs/table/ColumnSorter.js +19 -3
  181. package/lib/cjs/table/CustomExpandIcon.js +7 -1
  182. package/lib/cjs/table/Table.d.ts +2 -0
  183. package/lib/cjs/table/Table.js +31 -15
  184. package/lib/cjs/table/TableCell.d.ts +2 -0
  185. package/lib/cjs/table/TableCell.js +6 -2
  186. package/lib/cjs/table/TableHeaderRow.js +8 -2
  187. package/lib/cjs/tabs/TabBar.js +11 -3
  188. package/lib/cjs/tabs/TabPane.js +3 -1
  189. package/lib/cjs/tabs/index.js +0 -1
  190. package/lib/cjs/tagInput/index.d.ts +4 -1
  191. package/lib/cjs/tagInput/index.js +29 -3
  192. package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
  193. package/lib/cjs/timePicker/TimePicker.js +9 -1
  194. package/lib/cjs/timePicker/index.d.ts +6 -0
  195. package/lib/cjs/timeline/index.d.ts +1 -1
  196. package/lib/cjs/timeline/index.js +1 -0
  197. package/lib/cjs/timeline/item.js +4 -2
  198. package/lib/cjs/toast/toast.js +2 -0
  199. package/lib/cjs/tooltip/TriangleArrow.js +1 -0
  200. package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
  201. package/lib/cjs/tooltip/index.d.ts +16 -12
  202. package/lib/cjs/tooltip/index.js +55 -39
  203. package/lib/cjs/transfer/index.d.ts +1 -1
  204. package/lib/cjs/transfer/index.js +35 -17
  205. package/lib/cjs/tree/index.d.ts +1 -0
  206. package/lib/cjs/tree/index.js +15 -6
  207. package/lib/cjs/tree/treeNode.d.ts +12 -4
  208. package/lib/cjs/tree/treeNode.js +44 -4
  209. package/lib/cjs/treeSelect/index.d.ts +16 -0
  210. package/lib/cjs/treeSelect/index.js +60 -12
  211. package/lib/cjs/typography/base.js +18 -7
  212. package/lib/cjs/typography/copyable.js +6 -1
  213. package/lib/cjs/upload/fileCard.js +26 -7
  214. package/lib/cjs/upload/index.js +19 -4
  215. package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
  216. package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
  217. package/lib/es/_utils/index.d.ts +1 -0
  218. package/lib/es/_utils/index.js +4 -1
  219. package/lib/es/anchor/index.d.ts +2 -0
  220. package/lib/es/anchor/index.js +6 -1
  221. package/lib/es/anchor/link.d.ts +4 -1
  222. package/lib/es/anchor/link.js +38 -5
  223. package/lib/es/autoComplete/index.d.ts +17 -0
  224. package/lib/es/autoComplete/index.js +21 -2
  225. package/lib/es/avatar/index.d.ts +4 -3
  226. package/lib/es/avatar/index.js +15 -11
  227. package/lib/es/banner/index.js +4 -2
  228. package/lib/es/breadcrumb/index.d.ts +3 -0
  229. package/lib/es/breadcrumb/index.js +10 -4
  230. package/lib/es/breadcrumb/item.js +2 -2
  231. package/lib/es/button/Button.d.ts +2 -0
  232. package/lib/es/button/Button.js +4 -2
  233. package/lib/es/button/buttonGroup.d.ts +3 -0
  234. package/lib/es/button/buttonGroup.js +8 -4
  235. package/lib/es/button/index.d.ts +1 -0
  236. package/lib/es/button/splitButtonGroup.d.ts +3 -0
  237. package/lib/es/button/splitButtonGroup.js +5 -2
  238. package/lib/es/card/index.d.ts +3 -0
  239. package/lib/es/card/index.js +3 -1
  240. package/lib/es/cascader/index.d.ts +14 -0
  241. package/lib/es/cascader/index.js +35 -7
  242. package/lib/es/checkbox/checkbox.d.ts +21 -1
  243. package/lib/es/checkbox/checkbox.js +50 -17
  244. package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
  245. package/lib/es/checkbox/checkboxGroup.js +18 -5
  246. package/lib/es/checkbox/checkboxInner.d.ts +15 -0
  247. package/lib/es/checkbox/checkboxInner.js +20 -3
  248. package/lib/es/collapse/item.d.ts +2 -1
  249. package/lib/es/collapse/item.js +11 -2
  250. package/lib/es/collapsible/index.d.ts +1 -0
  251. package/lib/es/collapsible/index.js +4 -2
  252. package/lib/es/datePicker/datePicker.d.ts +12 -0
  253. package/lib/es/datePicker/datePicker.js +22 -3
  254. package/lib/es/datePicker/monthsGrid.d.ts +1 -0
  255. package/lib/es/datePicker/monthsGrid.js +2 -1
  256. package/lib/es/dropdown/dropdownItem.js +3 -1
  257. package/lib/es/dropdown/dropdownMenu.js +4 -1
  258. package/lib/es/form/baseForm.d.ts +9 -0
  259. package/lib/es/form/baseForm.js +3 -1
  260. package/lib/es/form/errorMessage.d.ts +4 -0
  261. package/lib/es/form/errorMessage.js +21 -3
  262. package/lib/es/form/field.d.ts +7 -0
  263. package/lib/es/form/hoc/withField.js +48 -15
  264. package/lib/es/form/index.d.ts +0 -1
  265. package/lib/es/form/index.js +0 -1
  266. package/lib/es/form/interface.d.ts +2 -0
  267. package/lib/es/form/label.d.ts +2 -0
  268. package/lib/es/form/label.js +5 -2
  269. package/lib/es/input/index.d.ts +16 -0
  270. package/lib/es/input/index.js +51 -15
  271. package/lib/es/input/inputGroup.d.ts +2 -1
  272. package/lib/es/input/inputGroup.js +11 -1
  273. package/lib/es/input/textarea.js +12 -1
  274. package/lib/es/inputNumber/index.d.ts +21 -12
  275. package/lib/es/inputNumber/index.js +38 -3
  276. package/lib/es/layout/Sider.d.ts +4 -0
  277. package/lib/es/layout/Sider.js +4 -1
  278. package/lib/es/layout/index.js +2 -0
  279. package/lib/es/list/item.js +0 -1
  280. package/lib/es/modal/Modal.js +2 -0
  281. package/lib/es/modal/ModalContent.d.ts +3 -1
  282. package/lib/es/modal/ModalContent.js +46 -5
  283. package/lib/es/navigation/Item.d.ts +4 -2
  284. package/lib/es/navigation/Item.js +25 -5
  285. package/lib/es/navigation/SubNav.d.ts +4 -2
  286. package/lib/es/navigation/SubNav.js +8 -1
  287. package/lib/es/navigation/index.js +2 -0
  288. package/lib/es/notification/notice.d.ts +1 -1
  289. package/lib/es/notification/notice.js +33 -24
  290. package/lib/es/pagination/index.js +16 -6
  291. package/lib/es/popover/index.js +7 -3
  292. package/lib/es/progress/index.d.ts +8 -0
  293. package/lib/es/progress/index.js +42 -9
  294. package/lib/es/radio/radio.d.ts +6 -1
  295. package/lib/es/radio/radio.js +16 -5
  296. package/lib/es/radio/radioGroup.d.ts +16 -1
  297. package/lib/es/radio/radioGroup.js +18 -3
  298. package/lib/es/radio/radioInner.d.ts +6 -1
  299. package/lib/es/radio/radioInner.js +11 -3
  300. package/lib/es/rating/index.d.ts +14 -0
  301. package/lib/es/rating/index.js +14 -3
  302. package/lib/es/rating/item.d.ts +2 -0
  303. package/lib/es/rating/item.js +6 -1
  304. package/lib/es/select/index.d.ts +16 -0
  305. package/lib/es/select/index.js +63 -17
  306. package/lib/es/select/option.js +28 -22
  307. package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
  308. package/lib/es/sideSheet/SideSheetContent.js +4 -1
  309. package/lib/es/sideSheet/index.d.ts +1 -0
  310. package/lib/es/sideSheet/index.js +2 -1
  311. package/lib/es/slider/index.d.ts +2 -1
  312. package/lib/es/slider/index.js +63 -16
  313. package/lib/es/spin/icon.js +3 -4
  314. package/lib/es/steps/basicStep.d.ts +3 -0
  315. package/lib/es/steps/basicStep.js +23 -23
  316. package/lib/es/steps/basicSteps.d.ts +1 -0
  317. package/lib/es/steps/basicSteps.js +2 -1
  318. package/lib/es/steps/fillStep.d.ts +3 -0
  319. package/lib/es/steps/fillStep.js +19 -4
  320. package/lib/es/steps/fillSteps.d.ts +1 -0
  321. package/lib/es/steps/fillSteps.js +2 -1
  322. package/lib/es/steps/navStep.d.ts +3 -0
  323. package/lib/es/steps/navStep.js +22 -23
  324. package/lib/es/steps/navSteps.d.ts +1 -0
  325. package/lib/es/steps/navSteps.js +2 -1
  326. package/lib/es/switch/index.d.ts +12 -0
  327. package/lib/es/switch/index.js +19 -4
  328. package/lib/es/table/Body/BaseRow.js +35 -3
  329. package/lib/es/table/Body/index.js +9 -2
  330. package/lib/es/table/ColumnFilter.js +4 -0
  331. package/lib/es/table/ColumnSelection.d.ts +3 -0
  332. package/lib/es/table/ColumnSelection.js +6 -2
  333. package/lib/es/table/ColumnSorter.js +17 -3
  334. package/lib/es/table/CustomExpandIcon.js +6 -1
  335. package/lib/es/table/Table.d.ts +2 -0
  336. package/lib/es/table/Table.js +31 -15
  337. package/lib/es/table/TableCell.d.ts +2 -0
  338. package/lib/es/table/TableCell.js +6 -2
  339. package/lib/es/table/TableHeaderRow.js +8 -2
  340. package/lib/es/tabs/TabBar.js +11 -3
  341. package/lib/es/tabs/TabPane.js +3 -1
  342. package/lib/es/tabs/index.js +0 -1
  343. package/lib/es/tagInput/index.d.ts +4 -1
  344. package/lib/es/tagInput/index.js +29 -3
  345. package/lib/es/timePicker/TimePicker.d.ts +12 -0
  346. package/lib/es/timePicker/TimePicker.js +9 -1
  347. package/lib/es/timePicker/index.d.ts +6 -0
  348. package/lib/es/timeline/index.d.ts +1 -1
  349. package/lib/es/timeline/index.js +1 -0
  350. package/lib/es/timeline/item.js +4 -2
  351. package/lib/es/toast/toast.js +2 -0
  352. package/lib/es/tooltip/TriangleArrow.js +1 -0
  353. package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
  354. package/lib/es/tooltip/index.d.ts +16 -12
  355. package/lib/es/tooltip/index.js +53 -39
  356. package/lib/es/transfer/index.d.ts +1 -1
  357. package/lib/es/transfer/index.js +35 -17
  358. package/lib/es/tree/index.d.ts +1 -0
  359. package/lib/es/tree/index.js +15 -6
  360. package/lib/es/tree/treeNode.d.ts +12 -4
  361. package/lib/es/tree/treeNode.js +44 -4
  362. package/lib/es/treeSelect/index.d.ts +16 -0
  363. package/lib/es/treeSelect/index.js +57 -10
  364. package/lib/es/typography/base.js +17 -7
  365. package/lib/es/typography/copyable.js +5 -1
  366. package/lib/es/upload/fileCard.js +26 -7
  367. package/lib/es/upload/index.js +19 -4
  368. package/list/item.tsx +0 -1
  369. package/modal/Modal.tsx +2 -0
  370. package/modal/ModalContent.tsx +35 -5
  371. package/navigation/Item.tsx +15 -0
  372. package/navigation/SubNav.tsx +13 -1
  373. package/navigation/index.tsx +1 -1
  374. package/notification/notice.tsx +19 -14
  375. package/package.json +8 -8
  376. package/pagination/index.tsx +9 -5
  377. package/popover/index.tsx +5 -0
  378. package/progress/_story/progress.stories.js +18 -18
  379. package/progress/index.tsx +58 -20
  380. package/radio/radio.tsx +12 -2
  381. package/radio/radioGroup.tsx +29 -3
  382. package/radio/radioInner.tsx +10 -1
  383. package/rating/index.tsx +19 -2
  384. package/rating/item.tsx +6 -0
  385. package/select/__test__/select.test.js +45 -0
  386. package/select/_story/select.stories.js +29 -0
  387. package/select/index.tsx +52 -4
  388. package/select/option.tsx +3 -0
  389. package/sideSheet/SideSheetContent.tsx +6 -4
  390. package/sideSheet/index.tsx +3 -2
  391. package/slider/__test__/slider.test.js +9 -0
  392. package/slider/_story/slider.stories.js +1 -1
  393. package/slider/index.tsx +44 -7
  394. package/spin/icon.tsx +4 -3
  395. package/steps/basicStep.tsx +15 -4
  396. package/steps/basicSteps.tsx +3 -2
  397. package/steps/fillStep.tsx +27 -12
  398. package/steps/fillSteps.tsx +2 -0
  399. package/steps/navStep.tsx +15 -4
  400. package/steps/navSteps.tsx +3 -2
  401. package/switch/_story/switch.stories.js +20 -19
  402. package/switch/_story/switch.stories.tsx +13 -13
  403. package/switch/index.tsx +23 -5
  404. package/table/Body/BaseRow.tsx +25 -1
  405. package/table/Body/index.tsx +7 -2
  406. package/table/ColumnFilter.tsx +7 -1
  407. package/table/ColumnSelection.tsx +4 -1
  408. package/table/ColumnSorter.tsx +18 -1
  409. package/table/CustomExpandIcon.tsx +5 -0
  410. package/table/Table.tsx +26 -13
  411. package/table/TableCell.tsx +11 -1
  412. package/table/TableHeaderRow.tsx +16 -2
  413. package/table/__test__/table.test.js +46 -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 +14 -1
  421. package/timeline/_story/timeline.stories.js +1 -1
  422. package/timeline/index.tsx +2 -2
  423. package/timeline/item.tsx +2 -1
  424. package/toast/toast.tsx +2 -0
  425. package/tooltip/TriangleArrow.tsx +1 -1
  426. package/tooltip/TriangleArrowVertical.tsx +1 -1
  427. package/tooltip/_story/tooltip.stories.js +562 -514
  428. package/tooltip/index.tsx +51 -33
  429. package/transfer/index.tsx +32 -28
  430. package/tree/_story/tree.stories.js +3 -3
  431. package/tree/index.tsx +10 -2
  432. package/tree/treeNode.tsx +46 -10
  433. package/treeSelect/__test__/treeMultiple.test.js +5 -0
  434. package/treeSelect/_story/treeSelect.stories.js +12 -0
  435. package/treeSelect/index.tsx +58 -7
  436. package/typography/base.tsx +7 -1
  437. package/typography/copyable.tsx +10 -1
  438. package/upload/fileCard.tsx +14 -16
  439. package/upload/index.tsx +10 -6
@@ -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
 
@@ -54,9 +54,10 @@ class Popover extends React.PureComponent {
54
54
  arrowStyle = {},
55
55
  arrowBounding,
56
56
  position,
57
- style
57
+ style,
58
+ trigger
58
59
  } = _a,
59
- attr = __rest(_a, ["children", "prefixCls", "showArrow", "arrowStyle", "arrowBounding", "position", "style"]);
60
+ attr = __rest(_a, ["children", "prefixCls", "showArrow", "arrowStyle", "arrowBounding", "position", "style", "trigger"]);
60
61
 
61
62
  let {
62
63
  spacing
@@ -74,14 +75,17 @@ class Popover extends React.PureComponent {
74
75
  spacing = showArrow ? numbers.SPACING_WITH_ARROW : numbers.SPACING;
75
76
  }
76
77
 
78
+ const role = trigger === 'click' || trigger === 'custom' ? 'dialog' : 'tooltip';
77
79
  return /*#__PURE__*/React.createElement(Tooltip, _Object$assign({}, attr, {
80
+ trigger: trigger,
78
81
  position: position,
79
82
  style: style,
80
83
  content: popContent,
81
84
  prefixCls: prefixCls,
82
85
  spacing: spacing,
83
86
  showArrow: arrow,
84
- arrowBounding: arrowBounding
87
+ arrowBounding: arrowBounding,
88
+ role: role
85
89
  }), children);
86
90
  }
87
91
 
@@ -4,9 +4,13 @@ import '@douyinfe/semi-foundation/lib/es/progress/progress.css';
4
4
  import { Animation } from '@douyinfe/semi-animation';
5
5
  import { Motion } from '../_base/base';
6
6
  export interface ProgressProps {
7
+ 'aria-label'?: string | undefined;
8
+ 'aria-labelledby'?: string | undefined;
9
+ 'aria-valuetext'?: string | undefined;
7
10
  className?: string;
8
11
  direction?: 'horizontal' | 'vertical';
9
12
  format?: (percent: number) => React.ReactNode;
13
+ id?: string;
10
14
  motion?: Motion;
11
15
  orbitStroke?: string;
12
16
  percent?: number;
@@ -24,9 +28,13 @@ export interface ProgressState {
24
28
  }
25
29
  declare class Progress extends Component<ProgressProps, ProgressState> {
26
30
  static propTypes: {
31
+ 'aria-label': PropTypes.Requireable<string>;
32
+ 'aria-labelledby': PropTypes.Requireable<string>;
33
+ 'aria-valuetext': PropTypes.Requireable<string>;
27
34
  className: PropTypes.Requireable<string>;
28
35
  direction: PropTypes.Requireable<string>;
29
36
  format: PropTypes.Requireable<PropTypes.ReactNodeLike>;
37
+ id: PropTypes.Requireable<string>;
30
38
  motion: PropTypes.Requireable<boolean | object>;
31
39
  orbitStroke: PropTypes.Requireable<string>;
32
40
  percent: PropTypes.Requireable<number>;
@@ -95,8 +95,12 @@ class Progress extends Component {
95
95
  stroke,
96
96
  showInfo,
97
97
  percent,
98
- orbitStroke
98
+ orbitStroke,
99
+ id
99
100
  } = this.props;
101
+ const ariaLabel = this.props['aria-label'];
102
+ const ariaLabelledBy = this.props['aria-labelledby'];
103
+ const ariaValueText = this.props['aria-valuetext'];
100
104
  const {
101
105
  percentNumber
102
106
  } = this.state;
@@ -127,13 +131,22 @@ class Progress extends Component {
127
131
 
128
132
  const text = format(percNumber);
129
133
  return /*#__PURE__*/React.createElement("div", {
134
+ id: id,
130
135
  className: classNames.wrapper,
131
- style: style
136
+ style: style,
137
+ role: 'progressbar',
138
+ "aria-valuemin": 0,
139
+ "aria-valuemax": 100,
140
+ "aria-valuenow": percNumber,
141
+ "aria-labelledby": ariaLabelledBy,
142
+ "aria-label": ariaLabel,
143
+ "aria-valuetext": ariaValueText
132
144
  }, /*#__PURE__*/React.createElement("svg", {
133
145
  key: size,
134
146
  className: classNames.svg,
135
147
  height: width,
136
- width: width
148
+ width: width,
149
+ "aria-hidden": true
137
150
  }, /*#__PURE__*/React.createElement("circle", {
138
151
  strokeDashoffset: 0,
139
152
  strokeWidth: strokeWidth,
@@ -143,7 +156,8 @@ class Progress extends Component {
143
156
  stroke: orbitStroke,
144
157
  r: radius,
145
158
  cx: cx,
146
- cy: cy
159
+ cy: cy,
160
+ "aria-hidden": true
147
161
  }), /*#__PURE__*/React.createElement("circle", {
148
162
  className: classNames.circle,
149
163
  strokeDashoffset: strokeDashoffset,
@@ -154,7 +168,8 @@ class Progress extends Component {
154
168
  stroke: stroke,
155
169
  r: radius,
156
170
  cx: cx,
157
- cy: cy
171
+ cy: cy,
172
+ "aria-hidden": true
158
173
  })), showInfo && size !== 'small' ? /*#__PURE__*/React.createElement("span", {
159
174
  className: "".concat(prefixCls, "-circle-text")
160
175
  }, text) : null);
@@ -184,8 +199,12 @@ class Progress extends Component {
184
199
  showInfo,
185
200
  size,
186
201
  percent,
187
- orbitStroke
202
+ orbitStroke,
203
+ id
188
204
  } = this.props;
205
+ const ariaLabel = this.props['aria-label'];
206
+ const ariaLabelledBy = this.props['aria-labelledby'];
207
+ const ariaValueText = this.props['aria-valuetext'];
189
208
  const {
190
209
  percentNumber
191
210
  } = this.state;
@@ -212,16 +231,26 @@ class Progress extends Component {
212
231
 
213
232
  const text = format(percNumber);
214
233
  return /*#__PURE__*/React.createElement("div", {
234
+ id: id,
215
235
  className: progressWrapperCls,
216
- style: style
236
+ style: style,
237
+ role: 'progressbar',
238
+ "aria-valuemin": 0,
239
+ "aria-valuemax": 100,
240
+ "aria-valuenow": perc,
241
+ "aria-labelledby": ariaLabelledBy,
242
+ "aria-label": ariaLabel,
243
+ "aria-valuetext": ariaValueText
217
244
  }, /*#__PURE__*/React.createElement("div", {
218
245
  className: progressTrackCls,
219
246
  style: orbitStroke ? {
220
247
  backgroundColor: orbitStroke
221
- } : {}
248
+ } : {},
249
+ "aria-hidden": true
222
250
  }, /*#__PURE__*/React.createElement("div", {
223
251
  className: innerCls,
224
- style: innerStyle
252
+ style: innerStyle,
253
+ "aria-hidden": true
225
254
  })), showInfo ? /*#__PURE__*/React.createElement("div", {
226
255
  className: "".concat(prefixCls, "-line-text")
227
256
  }, text) : null);
@@ -242,9 +271,13 @@ class Progress extends Component {
242
271
  }
243
272
 
244
273
  Progress.propTypes = {
274
+ 'aria-label': PropTypes.string,
275
+ 'aria-labelledby': PropTypes.string,
276
+ 'aria-valuetext': PropTypes.string,
245
277
  className: PropTypes.string,
246
278
  direction: PropTypes.oneOf(strings.directions),
247
279
  format: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),
280
+ id: PropTypes.string,
248
281
  motion: PropTypes.oneOfType([PropTypes.bool, PropTypes.func, PropTypes.object]),
249
282
  orbitStroke: PropTypes.string,
250
283
  percent: PropTypes.number,
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { RadioAdapter } from '@douyinfe/semi-foundation/lib/es/radio/radioFoundation';
3
+ import RadioFoundation, { RadioAdapter } from '@douyinfe/semi-foundation/lib/es/radio/radioFoundation';
4
4
  import { RadioChangeEvent } from '@douyinfe/semi-foundation/lib/es/radio/radioInnerFoundation';
5
5
  import { strings } from '@douyinfe/semi-foundation/lib/es/radio/constants';
6
6
  import '@douyinfe/semi-foundation/lib/es/radio/radio.css';
@@ -27,6 +27,7 @@ export declare type RadioProps = {
27
27
  addonStyle?: React.CSSProperties;
28
28
  addonClassName?: string;
29
29
  type?: RadioType;
30
+ 'aria-label'?: React.AriaAttributes['aria-label'];
30
31
  };
31
32
  export interface RadioState {
32
33
  hover?: boolean;
@@ -52,10 +53,14 @@ declare class Radio extends BaseComponent<RadioProps, RadioState> {
52
53
  addonStyle: PropTypes.Requireable<object>;
53
54
  addonClassName: PropTypes.Requireable<string>;
54
55
  type: PropTypes.Requireable<"default" | "button" | "card" | "pureCard">;
56
+ 'aria-label': PropTypes.Requireable<string>;
55
57
  };
56
58
  static defaultProps: Partial<RadioProps>;
57
59
  radioEntity: RadioInner;
58
60
  context: RadioContextValue;
61
+ foundation: RadioFoundation;
62
+ addonId: string;
63
+ extraId: string;
59
64
  constructor(props: RadioProps);
60
65
  get adapter(): RadioAdapter;
61
66
  isInGroup(): {
@@ -8,6 +8,7 @@ import PropTypes from 'prop-types';
8
8
  import cls from 'classnames';
9
9
  import RadioFoundation from '@douyinfe/semi-foundation/lib/es/radio/radioFoundation';
10
10
  import { strings, radioClasses as css } from '@douyinfe/semi-foundation/lib/es/radio/constants';
11
+ import { getUuidShort } from '@douyinfe/semi-foundation/lib/es/utils/uuid';
11
12
  import '@douyinfe/semi-foundation/lib/es/radio/radio.css';
12
13
  import BaseComponent from '../_base/baseComponent';
13
14
  import RadioInner from './radioInner';
@@ -47,6 +48,12 @@ class Radio extends BaseComponent {
47
48
  };
48
49
  this.foundation = new RadioFoundation(this.adapter);
49
50
  this.radioEntity = null;
51
+ this.addonId = getUuidShort({
52
+ prefix: 'addon'
53
+ });
54
+ this.extraId = getUuidShort({
55
+ prefix: 'extra'
56
+ });
50
57
  }
51
58
 
52
59
  get adapter() {
@@ -143,9 +150,11 @@ class Radio extends BaseComponent {
143
150
 
144
151
  const renderContent = () => /*#__PURE__*/React.createElement(React.Fragment, null, children ? /*#__PURE__*/React.createElement("span", {
145
152
  className: addonCls,
146
- style: addonStyle
153
+ style: addonStyle,
154
+ id: this.addonId
147
155
  }, children) : null, extra && !isButtonRadio ? /*#__PURE__*/React.createElement("div", {
148
- className: "".concat(prefix, "-extra")
156
+ className: "".concat(prefix, "-extra"),
157
+ id: this.extraId
149
158
  }, extra) : null);
150
159
 
151
160
  return /*#__PURE__*/React.createElement("label", {
@@ -161,7 +170,9 @@ class Radio extends BaseComponent {
161
170
  onChange: this.onChange,
162
171
  ref: ref => {
163
172
  this.radioEntity = ref;
164
- }
173
+ },
174
+ addonId: children && this.addonId,
175
+ extraId: extra && this.extraId
165
176
  })), isCardRadioGroup ? /*#__PURE__*/React.createElement("div", {
166
177
  className: "".concat(prefix, "-isCardRadioGroup_content")
167
178
  }, renderContent()) : renderContent());
@@ -187,8 +198,8 @@ Radio.propTypes = {
187
198
  extra: PropTypes.node,
188
199
  addonStyle: PropTypes.object,
189
200
  addonClassName: PropTypes.string,
190
- type: PropTypes.oneOf([strings.TYPE_DEFAULT, strings.TYPE_BUTTON, strings.TYPE_CARD, strings.TYPE_PURECARD]) // Button style type
191
-
201
+ type: PropTypes.oneOf([strings.TYPE_DEFAULT, strings.TYPE_BUTTON, strings.TYPE_CARD, strings.TYPE_PURECARD]),
202
+ 'aria-label': PropTypes.string
192
203
  };
193
204
  Radio.defaultProps = {
194
205
  autoFocus: false,
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { strings } from '@douyinfe/semi-foundation/lib/es/radio/constants';
4
- import { RadioGroupAdapter } from '@douyinfe/semi-foundation/lib/es/radio/radioGroupFoundation';
4
+ import RadioGroupFoundation, { RadioGroupAdapter } from '@douyinfe/semi-foundation/lib/es/radio/radioGroupFoundation';
5
5
  import { RadioChangeEvent } from '@douyinfe/semi-foundation/lib/es/radio/radioInnerFoundation';
6
6
  import BaseComponent from '../_base/baseComponent';
7
7
  import { ArrayElement } from '../_base/base';
@@ -30,6 +30,13 @@ export declare type RadioGroupProps = {
30
30
  type?: RadioType;
31
31
  buttonSize?: RadioGroupButtonSize;
32
32
  prefixCls?: string;
33
+ 'aria-label'?: React.AriaAttributes['aria-label'];
34
+ 'aria-describedby'?: React.AriaAttributes['aria-describedby'];
35
+ 'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
36
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
37
+ 'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
38
+ 'aria-required'?: React.AriaAttributes['aria-required'];
39
+ id?: string;
33
40
  };
34
41
  export interface RadioGroupState {
35
42
  value?: any;
@@ -50,8 +57,16 @@ declare class RadioGroup extends BaseComponent<RadioGroupProps, RadioGroupState>
50
57
  style: PropTypes.Requireable<object>;
51
58
  direction: PropTypes.Requireable<"horizontal" | "vertical">;
52
59
  mode: PropTypes.Requireable<"" | "advanced">;
60
+ 'aria-label': PropTypes.Requireable<string>;
61
+ 'aria-describedby': PropTypes.Requireable<string>;
62
+ 'aria-errormessage': PropTypes.Requireable<string>;
63
+ 'aria-invalid': PropTypes.Requireable<boolean>;
64
+ 'aria-labelledby': PropTypes.Requireable<string>;
65
+ 'aria-required': PropTypes.Requireable<boolean>;
66
+ id: PropTypes.Requireable<string>;
53
67
  };
54
68
  static defaultProps: Partial<RadioGroupProps>;
69
+ foundation: RadioGroupFoundation;
55
70
  constructor(props: RadioGroupProps);
56
71
  componentDidMount(): void;
57
72
  componentDidUpdate(prevProps: RadioGroupProps): void;
@@ -68,7 +68,8 @@ class RadioGroup extends BaseComponent {
68
68
  style,
69
69
  direction,
70
70
  type,
71
- buttonSize
71
+ buttonSize,
72
+ id
72
73
  } = this.props;
73
74
  const isButtonRadio = type === strings.TYPE_BUTTON;
74
75
  const isPureCardRadio = type === strings.TYPE_PURECARD;
@@ -117,7 +118,14 @@ class RadioGroup extends BaseComponent {
117
118
 
118
119
  return /*#__PURE__*/React.createElement("div", {
119
120
  className: prefixClsDisplay,
120
- style: style
121
+ style: style,
122
+ id: id,
123
+ "aria-label": this.props['aria-label'],
124
+ "aria-invalid": this.props['aria-invalid'],
125
+ "aria-errormessage": this.props['aria-errormessage'],
126
+ "aria-labelledby": this.props['aria-labelledby'],
127
+ "aria-describedby": this.props['aria-describedby'],
128
+ "aria-required": this.props['aria-required']
121
129
  }, /*#__PURE__*/React.createElement(Context.Provider, {
122
130
  value: {
123
131
  radioGroup: {
@@ -152,7 +160,14 @@ RadioGroup.propTypes = {
152
160
  className: PropTypes.string,
153
161
  style: PropTypes.object,
154
162
  direction: PropTypes.oneOf(strings.DIRECTION_SET),
155
- mode: PropTypes.oneOf(strings.MODE)
163
+ mode: PropTypes.oneOf(strings.MODE),
164
+ 'aria-label': PropTypes.string,
165
+ 'aria-describedby': PropTypes.string,
166
+ 'aria-errormessage': PropTypes.string,
167
+ 'aria-invalid': PropTypes.bool,
168
+ 'aria-labelledby': PropTypes.string,
169
+ 'aria-required': PropTypes.bool,
170
+ id: PropTypes.string
156
171
  };
157
172
  RadioGroup.defaultProps = {
158
173
  disabled: false,
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { RadioChangeEvent, RadioInnerAdapter } from '@douyinfe/semi-foundation/lib/es/radio/radioInnerFoundation';
3
+ import RadioInnerFoundation, { RadioChangeEvent, RadioInnerAdapter } from '@douyinfe/semi-foundation/lib/es/radio/radioInnerFoundation';
4
4
  import BaseComponent, { BaseProps } from '../_base/baseComponent';
5
5
  export declare type RadioInnerMode = 'advanced' | '';
6
6
  export interface RadioInnerProps extends BaseProps {
@@ -14,6 +14,9 @@ export interface RadioInnerProps extends BaseProps {
14
14
  prefixCls?: string;
15
15
  ref?: React.MutableRefObject<RadioInner> | ((instance: RadioInner) => void);
16
16
  isPureCardRadioGroup?: boolean;
17
+ addonId?: string;
18
+ extraId?: string;
19
+ 'aria-label'?: React.AriaAttributes['aria-label'];
17
20
  }
18
21
  interface RadioInnerState {
19
22
  checked?: boolean;
@@ -26,12 +29,14 @@ declare class RadioInner extends BaseComponent<RadioInnerProps, RadioInnerState>
26
29
  isButtonRadio: PropTypes.Requireable<boolean>;
27
30
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
28
31
  mode: PropTypes.Requireable<string>;
32
+ 'aria-label': PropTypes.Requireable<string>;
29
33
  };
30
34
  static defaultProps: {
31
35
  onChange: (...args: any[]) => void;
32
36
  isButtonRadio: boolean;
33
37
  };
34
38
  inputEntity: HTMLInputElement;
39
+ foundation: RadioInnerFoundation;
35
40
  constructor(props: RadioInnerProps);
36
41
  get adapter(): RadioInnerAdapter;
37
42
  componentDidMount(): void;