@douyinfe/semi-ui 2.2.2 → 2.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/_base/_story/a11y.jsx +6 -6
  2. package/_utils/hooks/usePrevFocus.ts +16 -0
  3. package/_utils/index.ts +4 -0
  4. package/anchor/_story/anchor.stories.js +1 -1
  5. package/anchor/index.tsx +5 -2
  6. package/anchor/link.tsx +29 -4
  7. package/autoComplete/index.tsx +28 -1
  8. package/avatar/_story/avatar.stories.js +4 -4
  9. package/avatar/avatarGroup.tsx +1 -1
  10. package/avatar/index.tsx +10 -4
  11. package/banner/index.tsx +2 -1
  12. package/breadcrumb/_story/breadcrumb.stories.js +22 -8
  13. package/breadcrumb/index.tsx +8 -1
  14. package/breadcrumb/item.tsx +1 -1
  15. package/button/Button.tsx +4 -0
  16. package/button/__test__/button.test.js +1 -1
  17. package/button/_story/button.stories.js +10 -10
  18. package/button/buttonGroup.tsx +4 -2
  19. package/button/splitButtonGroup.tsx +5 -2
  20. package/card/_story/card.stories.js +8 -1
  21. package/card/_story/card.stories.tsx +3 -0
  22. package/card/index.tsx +5 -2
  23. package/cascader/index.tsx +33 -5
  24. package/checkbox/_story/checkbox.stories.js +21 -14
  25. package/checkbox/checkbox.tsx +40 -5
  26. package/checkbox/checkboxGroup.tsx +30 -5
  27. package/checkbox/checkboxInner.tsx +25 -2
  28. package/collapse/index.tsx +2 -2
  29. package/collapse/item.tsx +15 -8
  30. package/collapsible/index.tsx +4 -2
  31. package/configProvider/_story/configProvider.stories.tsx +27 -0
  32. package/datePicker/datePicker.tsx +19 -0
  33. package/dist/css/semi.css +8 -3
  34. package/dist/css/semi.min.css +1 -1
  35. package/dist/umd/semi-ui.js +2470 -1242
  36. package/dist/umd/semi-ui.js.map +1 -1
  37. package/dist/umd/semi-ui.min.js +1 -1
  38. package/dist/umd/semi-ui.min.js.map +1 -1
  39. package/dropdown/dropdownItem.tsx +1 -1
  40. package/dropdown/dropdownMenu.tsx +1 -1
  41. package/empty/index.tsx +5 -5
  42. package/form/_story/FormApi/formApiDemo.jsx +3 -2
  43. package/form/_story/Validate/validateDemo.jsx +1 -1
  44. package/form/_story/demo.jsx +12 -3
  45. package/form/_story/form.stories.js +0 -7
  46. package/form/baseForm.tsx +2 -0
  47. package/form/errorMessage.tsx +13 -2
  48. package/form/hoc/withField.tsx +37 -8
  49. package/form/index.tsx +0 -2
  50. package/form/interface.ts +2 -0
  51. package/form/label.tsx +4 -2
  52. package/input/index.tsx +49 -4
  53. package/input/inputGroup.tsx +9 -4
  54. package/input/textarea.tsx +25 -6
  55. package/inputNumber/index.tsx +28 -1
  56. package/layout/Sider.tsx +6 -2
  57. package/layout/index.tsx +4 -3
  58. package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
  59. package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
  60. package/lib/cjs/_utils/index.d.ts +1 -0
  61. package/lib/cjs/_utils/index.js +6 -1
  62. package/lib/cjs/anchor/index.d.ts +2 -0
  63. package/lib/cjs/anchor/index.js +6 -1
  64. package/lib/cjs/anchor/link.d.ts +4 -1
  65. package/lib/cjs/anchor/link.js +39 -5
  66. package/lib/cjs/autoComplete/index.d.ts +17 -0
  67. package/lib/cjs/autoComplete/index.js +21 -2
  68. package/lib/cjs/avatar/avatarGroup.js +2 -1
  69. package/lib/cjs/avatar/index.d.ts +4 -3
  70. package/lib/cjs/avatar/index.js +20 -11
  71. package/lib/cjs/banner/index.js +4 -2
  72. package/lib/cjs/breadcrumb/index.d.ts +3 -0
  73. package/lib/cjs/breadcrumb/index.js +10 -4
  74. package/lib/cjs/breadcrumb/item.js +2 -2
  75. package/lib/cjs/button/Button.d.ts +2 -0
  76. package/lib/cjs/button/Button.js +4 -2
  77. package/lib/cjs/button/buttonGroup.d.ts +3 -0
  78. package/lib/cjs/button/buttonGroup.js +8 -4
  79. package/lib/cjs/button/index.d.ts +1 -0
  80. package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
  81. package/lib/cjs/button/splitButtonGroup.js +5 -2
  82. package/lib/cjs/card/index.d.ts +3 -0
  83. package/lib/cjs/card/index.js +3 -1
  84. package/lib/cjs/cascader/index.d.ts +14 -0
  85. package/lib/cjs/cascader/index.js +35 -7
  86. package/lib/cjs/checkbox/checkbox.d.ts +21 -1
  87. package/lib/cjs/checkbox/checkbox.js +51 -17
  88. package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
  89. package/lib/cjs/checkbox/checkboxGroup.js +16 -3
  90. package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
  91. package/lib/cjs/checkbox/checkboxInner.js +20 -3
  92. package/lib/cjs/collapse/index.js +2 -1
  93. package/lib/cjs/collapse/item.d.ts +2 -1
  94. package/lib/cjs/collapse/item.js +17 -3
  95. package/lib/cjs/collapsible/index.d.ts +1 -0
  96. package/lib/cjs/collapsible/index.js +4 -2
  97. package/lib/cjs/datePicker/datePicker.d.ts +12 -0
  98. package/lib/cjs/datePicker/datePicker.js +14 -1
  99. package/lib/cjs/dropdown/dropdownItem.js +3 -1
  100. package/lib/cjs/dropdown/dropdownMenu.js +4 -1
  101. package/lib/cjs/empty/index.js +2 -1
  102. package/lib/cjs/form/baseForm.d.ts +9 -0
  103. package/lib/cjs/form/baseForm.js +3 -1
  104. package/lib/cjs/form/errorMessage.d.ts +4 -0
  105. package/lib/cjs/form/errorMessage.js +21 -3
  106. package/lib/cjs/form/field.d.ts +7 -0
  107. package/lib/cjs/form/hoc/withField.js +49 -16
  108. package/lib/cjs/form/index.d.ts +0 -1
  109. package/lib/cjs/form/interface.d.ts +2 -0
  110. package/lib/cjs/form/label.d.ts +2 -0
  111. package/lib/cjs/form/label.js +5 -2
  112. package/lib/cjs/input/index.d.ts +16 -0
  113. package/lib/cjs/input/index.js +51 -15
  114. package/lib/cjs/input/inputGroup.d.ts +2 -1
  115. package/lib/cjs/input/inputGroup.js +11 -1
  116. package/lib/cjs/input/textarea.js +12 -1
  117. package/lib/cjs/inputNumber/index.d.ts +8 -0
  118. package/lib/cjs/inputNumber/index.js +32 -2
  119. package/lib/cjs/layout/Sider.d.ts +4 -0
  120. package/lib/cjs/layout/Sider.js +4 -1
  121. package/lib/cjs/layout/index.js +2 -0
  122. package/lib/cjs/list/item.js +0 -1
  123. package/lib/cjs/modal/Modal.js +2 -0
  124. package/lib/cjs/modal/ModalContent.d.ts +3 -1
  125. package/lib/cjs/modal/ModalContent.js +47 -5
  126. package/lib/cjs/navigation/Item.d.ts +4 -2
  127. package/lib/cjs/navigation/Item.js +25 -5
  128. package/lib/cjs/navigation/SubNav.d.ts +4 -2
  129. package/lib/cjs/navigation/SubNav.js +8 -1
  130. package/lib/cjs/navigation/index.js +2 -0
  131. package/lib/cjs/notification/notice.d.ts +1 -1
  132. package/lib/cjs/notification/notice.js +32 -22
  133. package/lib/cjs/pagination/index.js +16 -6
  134. package/lib/cjs/popover/index.js +7 -3
  135. package/lib/cjs/progress/index.d.ts +8 -0
  136. package/lib/cjs/progress/index.js +42 -9
  137. package/lib/cjs/radio/radio.d.ts +6 -1
  138. package/lib/cjs/radio/radio.js +17 -5
  139. package/lib/cjs/radio/radioGroup.d.ts +16 -1
  140. package/lib/cjs/radio/radioGroup.js +18 -3
  141. package/lib/cjs/radio/radioInner.d.ts +6 -1
  142. package/lib/cjs/radio/radioInner.js +11 -3
  143. package/lib/cjs/rating/index.d.ts +14 -0
  144. package/lib/cjs/rating/index.js +14 -3
  145. package/lib/cjs/rating/item.d.ts +2 -0
  146. package/lib/cjs/rating/item.js +6 -1
  147. package/lib/cjs/select/index.d.ts +16 -0
  148. package/lib/cjs/select/index.js +65 -19
  149. package/lib/cjs/select/option.js +28 -22
  150. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  151. package/lib/cjs/sideSheet/SideSheetContent.js +12 -5
  152. package/lib/cjs/sideSheet/index.d.ts +1 -0
  153. package/lib/cjs/sideSheet/index.js +2 -1
  154. package/lib/cjs/slider/index.d.ts +2 -1
  155. package/lib/cjs/slider/index.js +64 -17
  156. package/lib/cjs/spin/icon.js +2 -4
  157. package/lib/cjs/steps/basicStep.d.ts +3 -0
  158. package/lib/cjs/steps/basicStep.js +23 -25
  159. package/lib/cjs/steps/basicSteps.d.ts +1 -0
  160. package/lib/cjs/steps/basicSteps.js +2 -1
  161. package/lib/cjs/steps/fillStep.d.ts +3 -0
  162. package/lib/cjs/steps/fillStep.js +19 -4
  163. package/lib/cjs/steps/fillSteps.d.ts +1 -0
  164. package/lib/cjs/steps/fillSteps.js +2 -1
  165. package/lib/cjs/steps/navStep.d.ts +3 -0
  166. package/lib/cjs/steps/navStep.js +22 -25
  167. package/lib/cjs/steps/navSteps.d.ts +1 -0
  168. package/lib/cjs/steps/navSteps.js +2 -1
  169. package/lib/cjs/switch/index.d.ts +12 -0
  170. package/lib/cjs/switch/index.js +19 -4
  171. package/lib/cjs/table/Body/BaseRow.js +35 -3
  172. package/lib/cjs/table/Body/index.js +9 -1
  173. package/lib/cjs/table/ColumnFilter.js +4 -0
  174. package/lib/cjs/table/ColumnSelection.d.ts +3 -0
  175. package/lib/cjs/table/ColumnSelection.js +6 -2
  176. package/lib/cjs/table/ColumnSorter.js +19 -3
  177. package/lib/cjs/table/CustomExpandIcon.js +7 -1
  178. package/lib/cjs/table/Table.d.ts +2 -0
  179. package/lib/cjs/table/Table.js +31 -15
  180. package/lib/cjs/table/TableCell.d.ts +2 -0
  181. package/lib/cjs/table/TableCell.js +6 -2
  182. package/lib/cjs/table/TableHeaderRow.js +8 -2
  183. package/lib/cjs/tabs/TabBar.js +11 -3
  184. package/lib/cjs/tabs/TabPane.js +3 -1
  185. package/lib/cjs/tabs/index.js +0 -1
  186. package/lib/cjs/tagInput/index.d.ts +4 -1
  187. package/lib/cjs/tagInput/index.js +29 -3
  188. package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
  189. package/lib/cjs/timePicker/TimePicker.js +9 -1
  190. package/lib/cjs/timePicker/index.d.ts +6 -0
  191. package/lib/cjs/timeline/index.d.ts +1 -1
  192. package/lib/cjs/timeline/index.js +1 -0
  193. package/lib/cjs/timeline/item.js +4 -2
  194. package/lib/cjs/toast/toast.js +2 -0
  195. package/lib/cjs/tooltip/TriangleArrow.js +1 -0
  196. package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
  197. package/lib/cjs/tooltip/index.d.ts +16 -12
  198. package/lib/cjs/tooltip/index.js +55 -39
  199. package/lib/cjs/transfer/index.js +32 -14
  200. package/lib/cjs/tree/index.d.ts +1 -0
  201. package/lib/cjs/tree/index.js +15 -6
  202. package/lib/cjs/tree/treeNode.d.ts +12 -4
  203. package/lib/cjs/tree/treeNode.js +44 -4
  204. package/lib/cjs/treeSelect/index.d.ts +16 -0
  205. package/lib/cjs/treeSelect/index.js +60 -12
  206. package/lib/cjs/typography/base.js +18 -7
  207. package/lib/cjs/typography/copyable.js +6 -1
  208. package/lib/cjs/upload/fileCard.js +23 -4
  209. package/lib/cjs/upload/index.js +19 -4
  210. package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
  211. package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
  212. package/lib/es/_utils/index.d.ts +1 -0
  213. package/lib/es/_utils/index.js +4 -1
  214. package/lib/es/anchor/index.d.ts +2 -0
  215. package/lib/es/anchor/index.js +6 -1
  216. package/lib/es/anchor/link.d.ts +4 -1
  217. package/lib/es/anchor/link.js +38 -5
  218. package/lib/es/autoComplete/index.d.ts +17 -0
  219. package/lib/es/autoComplete/index.js +21 -2
  220. package/lib/es/avatar/avatarGroup.js +2 -1
  221. package/lib/es/avatar/index.d.ts +4 -3
  222. package/lib/es/avatar/index.js +20 -11
  223. package/lib/es/banner/index.js +4 -2
  224. package/lib/es/breadcrumb/index.d.ts +3 -0
  225. package/lib/es/breadcrumb/index.js +10 -4
  226. package/lib/es/breadcrumb/item.js +2 -2
  227. package/lib/es/button/Button.d.ts +2 -0
  228. package/lib/es/button/Button.js +4 -2
  229. package/lib/es/button/buttonGroup.d.ts +3 -0
  230. package/lib/es/button/buttonGroup.js +8 -4
  231. package/lib/es/button/index.d.ts +1 -0
  232. package/lib/es/button/splitButtonGroup.d.ts +3 -0
  233. package/lib/es/button/splitButtonGroup.js +5 -2
  234. package/lib/es/card/index.d.ts +3 -0
  235. package/lib/es/card/index.js +3 -1
  236. package/lib/es/cascader/index.d.ts +14 -0
  237. package/lib/es/cascader/index.js +35 -7
  238. package/lib/es/checkbox/checkbox.d.ts +21 -1
  239. package/lib/es/checkbox/checkbox.js +50 -17
  240. package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
  241. package/lib/es/checkbox/checkboxGroup.js +18 -5
  242. package/lib/es/checkbox/checkboxInner.d.ts +15 -0
  243. package/lib/es/checkbox/checkboxInner.js +20 -3
  244. package/lib/es/collapse/index.js +2 -1
  245. package/lib/es/collapse/item.d.ts +2 -1
  246. package/lib/es/collapse/item.js +16 -3
  247. package/lib/es/collapsible/index.d.ts +1 -0
  248. package/lib/es/collapsible/index.js +4 -2
  249. package/lib/es/datePicker/datePicker.d.ts +12 -0
  250. package/lib/es/datePicker/datePicker.js +14 -1
  251. package/lib/es/dropdown/dropdownItem.js +3 -1
  252. package/lib/es/dropdown/dropdownMenu.js +4 -1
  253. package/lib/es/empty/index.js +2 -1
  254. package/lib/es/form/baseForm.d.ts +9 -0
  255. package/lib/es/form/baseForm.js +3 -1
  256. package/lib/es/form/errorMessage.d.ts +4 -0
  257. package/lib/es/form/errorMessage.js +21 -3
  258. package/lib/es/form/field.d.ts +7 -0
  259. package/lib/es/form/hoc/withField.js +48 -15
  260. package/lib/es/form/index.d.ts +0 -1
  261. package/lib/es/form/index.js +0 -1
  262. package/lib/es/form/interface.d.ts +2 -0
  263. package/lib/es/form/label.d.ts +2 -0
  264. package/lib/es/form/label.js +5 -2
  265. package/lib/es/input/index.d.ts +16 -0
  266. package/lib/es/input/index.js +51 -15
  267. package/lib/es/input/inputGroup.d.ts +2 -1
  268. package/lib/es/input/inputGroup.js +11 -1
  269. package/lib/es/input/textarea.js +12 -1
  270. package/lib/es/inputNumber/index.d.ts +8 -0
  271. package/lib/es/inputNumber/index.js +33 -2
  272. package/lib/es/layout/Sider.d.ts +4 -0
  273. package/lib/es/layout/Sider.js +4 -1
  274. package/lib/es/layout/index.js +2 -0
  275. package/lib/es/list/item.js +0 -1
  276. package/lib/es/modal/Modal.js +2 -0
  277. package/lib/es/modal/ModalContent.d.ts +3 -1
  278. package/lib/es/modal/ModalContent.js +46 -5
  279. package/lib/es/navigation/Item.d.ts +4 -2
  280. package/lib/es/navigation/Item.js +25 -5
  281. package/lib/es/navigation/SubNav.d.ts +4 -2
  282. package/lib/es/navigation/SubNav.js +8 -1
  283. package/lib/es/navigation/index.js +2 -0
  284. package/lib/es/notification/notice.d.ts +1 -1
  285. package/lib/es/notification/notice.js +33 -24
  286. package/lib/es/pagination/index.js +16 -6
  287. package/lib/es/popover/index.js +7 -3
  288. package/lib/es/progress/index.d.ts +8 -0
  289. package/lib/es/progress/index.js +42 -9
  290. package/lib/es/radio/radio.d.ts +6 -1
  291. package/lib/es/radio/radio.js +16 -5
  292. package/lib/es/radio/radioGroup.d.ts +16 -1
  293. package/lib/es/radio/radioGroup.js +18 -3
  294. package/lib/es/radio/radioInner.d.ts +6 -1
  295. package/lib/es/radio/radioInner.js +11 -3
  296. package/lib/es/rating/index.d.ts +14 -0
  297. package/lib/es/rating/index.js +14 -3
  298. package/lib/es/rating/item.d.ts +2 -0
  299. package/lib/es/rating/item.js +6 -1
  300. package/lib/es/select/index.d.ts +16 -0
  301. package/lib/es/select/index.js +63 -17
  302. package/lib/es/select/option.js +28 -22
  303. package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
  304. package/lib/es/sideSheet/SideSheetContent.js +12 -5
  305. package/lib/es/sideSheet/index.d.ts +1 -0
  306. package/lib/es/sideSheet/index.js +2 -1
  307. package/lib/es/slider/index.d.ts +2 -1
  308. package/lib/es/slider/index.js +63 -16
  309. package/lib/es/spin/icon.js +2 -4
  310. package/lib/es/steps/basicStep.d.ts +3 -0
  311. package/lib/es/steps/basicStep.js +23 -23
  312. package/lib/es/steps/basicSteps.d.ts +1 -0
  313. package/lib/es/steps/basicSteps.js +2 -1
  314. package/lib/es/steps/fillStep.d.ts +3 -0
  315. package/lib/es/steps/fillStep.js +19 -4
  316. package/lib/es/steps/fillSteps.d.ts +1 -0
  317. package/lib/es/steps/fillSteps.js +2 -1
  318. package/lib/es/steps/navStep.d.ts +3 -0
  319. package/lib/es/steps/navStep.js +22 -23
  320. package/lib/es/steps/navSteps.d.ts +1 -0
  321. package/lib/es/steps/navSteps.js +2 -1
  322. package/lib/es/switch/index.d.ts +12 -0
  323. package/lib/es/switch/index.js +19 -4
  324. package/lib/es/table/Body/BaseRow.js +35 -3
  325. package/lib/es/table/Body/index.js +9 -2
  326. package/lib/es/table/ColumnFilter.js +4 -0
  327. package/lib/es/table/ColumnSelection.d.ts +3 -0
  328. package/lib/es/table/ColumnSelection.js +6 -2
  329. package/lib/es/table/ColumnSorter.js +17 -3
  330. package/lib/es/table/CustomExpandIcon.js +6 -1
  331. package/lib/es/table/Table.d.ts +2 -0
  332. package/lib/es/table/Table.js +31 -15
  333. package/lib/es/table/TableCell.d.ts +2 -0
  334. package/lib/es/table/TableCell.js +6 -2
  335. package/lib/es/table/TableHeaderRow.js +8 -2
  336. package/lib/es/tabs/TabBar.js +11 -3
  337. package/lib/es/tabs/TabPane.js +3 -1
  338. package/lib/es/tabs/index.js +0 -1
  339. package/lib/es/tagInput/index.d.ts +4 -1
  340. package/lib/es/tagInput/index.js +29 -3
  341. package/lib/es/timePicker/TimePicker.d.ts +12 -0
  342. package/lib/es/timePicker/TimePicker.js +9 -1
  343. package/lib/es/timePicker/index.d.ts +6 -0
  344. package/lib/es/timeline/index.d.ts +1 -1
  345. package/lib/es/timeline/index.js +1 -0
  346. package/lib/es/timeline/item.js +4 -2
  347. package/lib/es/toast/toast.js +2 -0
  348. package/lib/es/tooltip/TriangleArrow.js +1 -0
  349. package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
  350. package/lib/es/tooltip/index.d.ts +16 -12
  351. package/lib/es/tooltip/index.js +53 -39
  352. package/lib/es/transfer/index.js +32 -14
  353. package/lib/es/tree/index.d.ts +1 -0
  354. package/lib/es/tree/index.js +15 -6
  355. package/lib/es/tree/treeNode.d.ts +12 -4
  356. package/lib/es/tree/treeNode.js +44 -4
  357. package/lib/es/treeSelect/index.d.ts +16 -0
  358. package/lib/es/treeSelect/index.js +57 -10
  359. package/lib/es/typography/base.js +17 -7
  360. package/lib/es/typography/copyable.js +5 -1
  361. package/lib/es/upload/fileCard.js +23 -4
  362. package/lib/es/upload/index.js +19 -4
  363. package/list/item.tsx +0 -1
  364. package/modal/Modal.tsx +2 -0
  365. package/modal/ModalContent.tsx +35 -5
  366. package/navigation/Item.tsx +15 -0
  367. package/navigation/SubNav.tsx +13 -1
  368. package/navigation/index.tsx +1 -1
  369. package/notification/notice.tsx +19 -14
  370. package/package.json +8 -8
  371. package/pagination/index.tsx +9 -5
  372. package/popover/index.tsx +5 -0
  373. package/progress/_story/progress.stories.js +18 -18
  374. package/progress/index.tsx +58 -20
  375. package/radio/radio.tsx +12 -2
  376. package/radio/radioGroup.tsx +29 -3
  377. package/radio/radioInner.tsx +10 -1
  378. package/rating/index.tsx +19 -2
  379. package/rating/item.tsx +6 -0
  380. package/select/__test__/select.test.js +45 -0
  381. package/select/_story/select.stories.js +29 -0
  382. package/select/index.tsx +52 -4
  383. package/select/option.tsx +3 -0
  384. package/sideSheet/SideSheetContent.tsx +13 -9
  385. package/sideSheet/index.tsx +3 -2
  386. package/slider/__test__/slider.test.js +9 -0
  387. package/slider/_story/slider.stories.js +1 -1
  388. package/slider/index.tsx +44 -7
  389. package/spin/icon.tsx +3 -3
  390. package/steps/basicStep.tsx +15 -4
  391. package/steps/basicSteps.tsx +3 -2
  392. package/steps/fillStep.tsx +27 -12
  393. package/steps/fillSteps.tsx +2 -0
  394. package/steps/navStep.tsx +15 -4
  395. package/steps/navSteps.tsx +3 -2
  396. package/switch/_story/switch.stories.js +20 -19
  397. package/switch/_story/switch.stories.tsx +13 -13
  398. package/switch/index.tsx +23 -5
  399. package/table/Body/BaseRow.tsx +25 -1
  400. package/table/Body/index.tsx +7 -2
  401. package/table/ColumnFilter.tsx +7 -1
  402. package/table/ColumnSelection.tsx +4 -1
  403. package/table/ColumnSorter.tsx +18 -1
  404. package/table/CustomExpandIcon.tsx +5 -0
  405. package/table/Table.tsx +26 -13
  406. package/table/TableCell.tsx +11 -1
  407. package/table/TableHeaderRow.tsx +16 -2
  408. package/table/__test__/table.test.js +46 -0
  409. package/tabs/TabBar.tsx +8 -5
  410. package/tabs/TabPane.tsx +3 -1
  411. package/tabs/index.tsx +0 -1
  412. package/tagInput/__test__/tagInput.test.js +46 -0
  413. package/tagInput/_story/tagInput.stories.js +2 -2
  414. package/tagInput/index.tsx +31 -8
  415. package/timePicker/TimePicker.tsx +14 -1
  416. package/timeline/_story/timeline.stories.js +1 -1
  417. package/timeline/index.tsx +2 -2
  418. package/timeline/item.tsx +2 -1
  419. package/toast/toast.tsx +2 -0
  420. package/tooltip/TriangleArrow.tsx +1 -1
  421. package/tooltip/TriangleArrowVertical.tsx +1 -1
  422. package/tooltip/_story/tooltip.stories.js +562 -514
  423. package/tooltip/index.tsx +50 -33
  424. package/transfer/index.tsx +29 -25
  425. package/tree/_story/tree.stories.js +3 -3
  426. package/tree/index.tsx +10 -2
  427. package/tree/treeNode.tsx +46 -10
  428. package/treeSelect/__test__/treeMultiple.test.js +5 -0
  429. package/treeSelect/_story/treeSelect.stories.js +12 -0
  430. package/treeSelect/index.tsx +58 -7
  431. package/typography/base.tsx +7 -1
  432. package/typography/copyable.tsx +10 -1
  433. package/upload/fileCard.tsx +13 -15
  434. package/upload/index.tsx +10 -6
@@ -49,7 +49,9 @@ class CheckboxInner extends _react.PureComponent {
49
49
  disabled,
50
50
  prefixCls,
51
51
  name,
52
- isPureCardType
52
+ isPureCardType,
53
+ addonId,
54
+ extraId
53
55
  } = this.props;
54
56
  const prefix = prefixCls || _constants.checkboxClasses.PREFIX;
55
57
  const wrapper = (0, _classnames.default)({
@@ -64,10 +66,18 @@ class CheckboxInner extends _react.PureComponent {
64
66
  return /*#__PURE__*/_react.default.createElement("span", {
65
67
  className: wrapper
66
68
  }, /*#__PURE__*/_react.default.createElement("input", {
69
+ type: "checkbox",
70
+ "aria-label": this.props['aria-label'],
71
+ "aria-disabled": disabled,
72
+ "aria-checked": checked,
73
+ "aria-labelledby": addonId,
74
+ "aria-describedby": extraId || this.props['aria-describedby'],
75
+ "aria-invalid": this.props['aria-invalid'],
76
+ "aria-errormessage": this.props['aria-errormessage'],
77
+ "aria-required": this.props['aria-required'],
67
78
  ref: ref => {
68
79
  this.inputEntity = ref;
69
80
  },
70
- type: "checkbox",
71
81
  className: _constants.checkboxClasses.INPUT,
72
82
  onChange: _noop2.default,
73
83
  checked: checked,
@@ -82,13 +92,20 @@ class CheckboxInner extends _react.PureComponent {
82
92
 
83
93
  CheckboxInner.contextType = _context.Context;
84
94
  CheckboxInner.propTypes = {
95
+ 'aria-describedby': _propTypes.default.string,
96
+ 'aria-errormessage': _propTypes.default.string,
97
+ 'aria-invalid': _propTypes.default.bool,
98
+ 'aria-labelledby': _propTypes.default.string,
99
+ 'aria-required': _propTypes.default.bool,
85
100
  checked: _propTypes.default.bool,
86
101
  disabled: _propTypes.default.bool,
87
102
  onChange: _propTypes.default.func,
88
103
  children: _propTypes.default.node,
89
104
  grouped: _propTypes.default.bool,
90
105
  value: _propTypes.default.any,
91
- isPureCardType: _propTypes.default.bool
106
+ isPureCardType: _propTypes.default.bool,
107
+ addonId: _propTypes.default.string,
108
+ extraId: _propTypes.default.string
92
109
  };
93
110
  CheckboxInner.defaultProps = {
94
111
  onChange: _noop2.default
@@ -126,7 +126,8 @@ class Collapse extends _baseComponent.default {
126
126
  } = this.state;
127
127
  return /*#__PURE__*/_react.default.createElement("div", {
128
128
  className: clsPrefix,
129
- style: style
129
+ style: style,
130
+ "aria-label": "Collapse"
130
131
  }, /*#__PURE__*/_react.default.createElement(_collapseContext.default.Provider, {
131
132
  value: {
132
133
  activeSet,
@@ -1,4 +1,4 @@
1
- import React, { PureComponent, ReactNode, CSSProperties } from 'react';
1
+ import React, { CSSProperties, PureComponent, ReactNode } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { CollapseContextType } from './collapse-context';
4
4
  export interface CollapsePanelProps {
@@ -18,6 +18,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
18
18
  className: PropTypes.Requireable<string>;
19
19
  reCalcKey: PropTypes.Requireable<string | number>;
20
20
  };
21
+ private ariaID;
21
22
  renderHeader(active: boolean, expandIconEnable?: boolean): JSX.Element;
22
23
  render(): JSX.Element;
23
24
  }
@@ -34,6 +34,8 @@ var _collapseContext = _interopRequireDefault(require("./collapse-context"));
34
34
 
35
35
  var _semiIcons = require("@douyinfe/semi-icons");
36
36
 
37
+ var _uuid = require("@douyinfe/semi-foundation/lib/cjs/utils/uuid");
38
+
37
39
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
38
40
 
39
41
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -50,6 +52,11 @@ var __rest = void 0 && (void 0).__rest || function (s, e) {
50
52
  };
51
53
 
52
54
  class CollapsePanel extends _react.PureComponent {
55
+ constructor() {
56
+ super(...arguments);
57
+ this.ariaID = (0, _uuid.getUuidShort)({});
58
+ }
59
+
53
60
  renderHeader(active) {
54
61
  let expandIconEnable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
55
62
  const {
@@ -73,6 +80,7 @@ class CollapsePanel extends _react.PureComponent {
73
80
  }
74
81
 
75
82
  const icon = /*#__PURE__*/_react.default.createElement("span", {
83
+ "aria-hidden": 'true',
76
84
  className: (0, _classnames.default)(["".concat(_constants.cssClasses.PREFIX, "-header-icon"), {
77
85
  ["".concat(_constants.cssClasses.PREFIX, "-header-iconDisabled")]: !expandIconEnable
78
86
  }])
@@ -83,7 +91,9 @@ class CollapsePanel extends _react.PureComponent {
83
91
  if (typeof header === 'string') {
84
92
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, iconPosLeft ? icon : null, /*#__PURE__*/_react.default.createElement("span", null, header), /*#__PURE__*/_react.default.createElement("span", {
85
93
  className: "".concat(_constants.cssClasses.PREFIX, "-header-right")
86
- }, /*#__PURE__*/_react.default.createElement("span", null, extra), iconPosLeft ? null : icon));
94
+ }, /*#__PURE__*/_react.default.createElement("span", {
95
+ "aria-label": 'Extra of collapse header'
96
+ }, extra), iconPosLeft ? null : icon));
87
97
  }
88
98
 
89
99
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, iconPosLeft ? icon : null, header, iconPosLeft ? null : icon);
@@ -118,13 +128,14 @@ class CollapsePanel extends _react.PureComponent {
118
128
  ["".concat(_constants.cssClasses.PREFIX, "-content")]: true
119
129
  });
120
130
  return /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
121
- role: "Collapse-panel",
131
+ "aria-label": 'Collapse panel',
122
132
  className: itemCls
123
133
  }, restProps), /*#__PURE__*/_react.default.createElement("div", {
124
134
  role: "button",
125
135
  tabIndex: 0,
126
136
  className: headerCls,
127
137
  "aria-expanded": active ? 'true' : 'false',
138
+ "aria-owns": this.ariaID,
128
139
  onClick: e => onClick(itemKey, e)
129
140
  }, this.renderHeader(active, children !== undefined)), children && /*#__PURE__*/_react.default.createElement(_collapsible.default, {
130
141
  isOpen: active,
@@ -132,7 +143,10 @@ class CollapsePanel extends _react.PureComponent {
132
143
  motion: motion,
133
144
  reCalcKey: reCalcKey
134
145
  }, /*#__PURE__*/_react.default.createElement("div", {
135
- className: contentCls
146
+ className: contentCls,
147
+ "aria-label": 'Collapse content',
148
+ "aria-hidden": !active,
149
+ id: this.ariaID
136
150
  }, /*#__PURE__*/_react.default.createElement("div", {
137
151
  className: "".concat(_constants.cssClasses.PREFIX, "-content-wrapper")
138
152
  }, children))));
@@ -11,6 +11,7 @@ export interface CollapsibleProps {
11
11
  style?: React.CSSProperties;
12
12
  collapseHeight?: number;
13
13
  reCalcKey?: number | string;
14
+ id?: string;
14
15
  }
15
16
  declare const Collapsible: {
16
17
  (props: CollapsibleProps): JSX.Element;
@@ -45,7 +45,8 @@ const Collapsible = props => {
45
45
  collapseHeight,
46
46
  style,
47
47
  className,
48
- reCalcKey
48
+ reCalcKey,
49
+ id
49
50
  } = props;
50
51
  const ref = (0, _react.useRef)(null);
51
52
  const [maxHeight, setMaxHeight] = (0, _react.useState)(0);
@@ -113,7 +114,8 @@ const Collapsible = props => {
113
114
  ref: setHeight,
114
115
  style: {
115
116
  overflow: 'hidden'
116
- }
117
+ },
118
+ id: id
117
119
  }, children));
118
120
  };
119
121
 
@@ -10,9 +10,15 @@ import { Locale } from '../locale/interface';
10
10
  import { RangeType } from '@douyinfe/semi-foundation/lib/cjs/datePicker/inputFoundation';
11
11
  import { TimePickerProps } from '../timePicker/TimePicker';
12
12
  export interface DatePickerProps extends DatePickerFoundationProps {
13
+ 'aria-describedby'?: React.AriaAttributes['aria-describedby'];
14
+ 'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
15
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
16
+ 'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
17
+ 'aria-required'?: React.AriaAttributes['aria-required'];
13
18
  timePickerOpts?: TimePickerProps;
14
19
  bottomSlot?: React.ReactNode;
15
20
  insetLabel?: React.ReactNode;
21
+ insetLabelId?: string;
16
22
  prefix?: React.ReactNode;
17
23
  topSlot?: React.ReactNode;
18
24
  renderDate?: (dayNumber?: number, fullDate?: string) => React.ReactNode;
@@ -29,6 +35,11 @@ export declare type DatePickerState = DatePickerFoundationState;
29
35
  export default class DatePicker extends BaseComponent<DatePickerProps, DatePickerState> {
30
36
  static contextType: React.Context<import("../configProvider/context").ContextValue>;
31
37
  static propTypes: {
38
+ 'aria-describedby': PropTypes.Requireable<string>;
39
+ 'aria-errormessage': PropTypes.Requireable<string>;
40
+ 'aria-invalid': PropTypes.Requireable<boolean>;
41
+ 'aria-labelledby': PropTypes.Requireable<string>;
42
+ 'aria-required': PropTypes.Requireable<boolean>;
32
43
  type: PropTypes.Requireable<"dateTime" | "date" | "month" | "dateRange" | "year" | "dateTimeRange">;
33
44
  size: PropTypes.Requireable<"default" | "small" | "large">;
34
45
  density: PropTypes.Requireable<"default" | "compact">;
@@ -58,6 +69,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
58
69
  prefixCls: PropTypes.Requireable<string>;
59
70
  prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
60
71
  insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
72
+ insetLabelId: PropTypes.Requireable<string>;
61
73
  zIndex: PropTypes.Requireable<number>;
62
74
  position: PropTypes.Requireable<"top" | "topLeft" | "topRight" | "left" | "leftTop" | "leftBottom" | "right" | "rightTop" | "rightBottom" | "bottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
63
75
  getPopupContainer: PropTypes.Requireable<(...args: any[]) => any>;
@@ -541,6 +541,7 @@ class DatePicker extends _baseComponent.default {
541
541
  disabled,
542
542
  showClear,
543
543
  insetLabel,
544
+ insetLabelId,
544
545
  placeholder,
545
546
  validateStatus,
546
547
  inputStyle,
@@ -581,6 +582,7 @@ class DatePicker extends _baseComponent.default {
581
582
  inputStyle,
582
583
  showClear,
583
584
  insetLabel,
585
+ insetLabelId,
584
586
  type,
585
587
  format,
586
588
  multiple,
@@ -623,7 +625,12 @@ class DatePicker extends _baseComponent.default {
623
625
  className: (0, _classnames.default)(className, {
624
626
  [prefixCls]: true
625
627
  }),
626
- ref: this.setTriggerRef
628
+ ref: this.setTriggerRef,
629
+ 'aria-invalid': this.props['aria-invalid'],
630
+ 'aria-errormessage': this.props['aria-errormessage'],
631
+ 'aria-labelledby': this.props['aria-labelledby'],
632
+ 'aria-describedby': this.props['aria-describedby'],
633
+ 'aria-required': this.props['aria-required']
627
634
  };
628
635
  const inner = this.renderInner();
629
636
  const wrappedInner = this.wrapPopover(inner);
@@ -635,6 +642,11 @@ class DatePicker extends _baseComponent.default {
635
642
  exports.default = DatePicker;
636
643
  DatePicker.contextType = _context5.default;
637
644
  DatePicker.propTypes = {
645
+ 'aria-describedby': _propTypes.default.string,
646
+ 'aria-errormessage': _propTypes.default.string,
647
+ 'aria-invalid': _propTypes.default.bool,
648
+ 'aria-labelledby': _propTypes.default.string,
649
+ 'aria-required': _propTypes.default.bool,
638
650
  type: _propTypes.default.oneOf(_constants.strings.TYPE_SET),
639
651
  size: _propTypes.default.oneOf(_constants.strings.SIZE_SET),
640
652
  density: _propTypes.default.oneOf(_constants.strings.DENSITY_SET),
@@ -664,6 +676,7 @@ DatePicker.propTypes = {
664
676
  prefixCls: _propTypes.default.string,
665
677
  prefix: _propTypes.default.node,
666
678
  insetLabel: _propTypes.default.node,
679
+ insetLabelId: _propTypes.default.string,
667
680
  zIndex: _propTypes.default.number,
668
681
  position: _propTypes.default.oneOf(_constants2.strings.POSITION_SET),
669
682
  getPopupContainer: _propTypes.default.func,
@@ -96,7 +96,9 @@ class DropdownItem extends _baseComponent.default {
96
96
  }, icon);
97
97
  }
98
98
 
99
- return /*#__PURE__*/_react.default.createElement("li", (0, _assign.default)({}, events, {
99
+ return /*#__PURE__*/_react.default.createElement("li", (0, _assign.default)({
100
+ role: "menuitem"
101
+ }, events, {
100
102
  ref: ref => forwardRef(ref),
101
103
  className: itemclass,
102
104
  style: style
@@ -49,7 +49,10 @@ class DropdownMenu extends _baseComponent.default {
49
49
  } = _a,
50
50
  rest = __rest(_a, ["children", "className", "style"]);
51
51
 
52
- return /*#__PURE__*/_react.default.createElement("ul", (0, _assign.default)({}, rest, {
52
+ return /*#__PURE__*/_react.default.createElement("ul", (0, _assign.default)({
53
+ role: "menu",
54
+ "aria-orientation": "vertical"
55
+ }, rest, {
53
56
  className: (0, _classnames.default)("".concat(prefixCls, "-menu"), className),
54
57
  style: style
55
58
  }), children);
@@ -119,7 +119,8 @@ class Empty extends _baseComponent.default {
119
119
  };
120
120
  return /*#__PURE__*/_react.default.createElement("div", {
121
121
  className: wrapperCls,
122
- style: style
122
+ style: style,
123
+ "aria-label": "empty placeholder image"
123
124
  }, /*#__PURE__*/_react.default.createElement("div", {
124
125
  className: "".concat(prefixCls, "-image"),
125
126
  style: imageStyle
@@ -13,6 +13,7 @@ interface BaseFormState {
13
13
  }
14
14
  declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
15
15
  static propTypes: {
16
+ 'aria-label': PropTypes.Requireable<string>;
16
17
  onSubmit: PropTypes.Requireable<(...args: any[]) => any>;
17
18
  onSubmitFail: PropTypes.Requireable<(...args: any[]) => any>;
18
19
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
@@ -36,6 +37,7 @@ declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
36
37
  disabled: PropTypes.Requireable<boolean>;
37
38
  showValidateIcon: PropTypes.Requireable<boolean>;
38
39
  extraTextPosition: PropTypes.Requireable<string>;
40
+ id: PropTypes.Requireable<string>;
39
41
  };
40
42
  static defaultProps: {
41
43
  onChange: (...args: any[]) => void;
@@ -53,8 +55,14 @@ declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
53
55
  static TextArea: React.ComponentType<import("utility-types").Subtract<Omit<import("../input").TextAreaProps, "forwardRef"> & React.RefAttributes<HTMLTextAreaElement>, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps>;
54
56
  static InputNumber: React.ComponentType<import("utility-types").Subtract<import("../inputNumber").InputNumberProps & React.RefAttributes<HTMLInputElement>, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps>;
55
57
  static Select: React.ComponentType<import("utility-types").Subtract<{
58
+ 'aria-describedby'?: string;
59
+ 'aria-errormessage'?: string;
60
+ 'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling";
61
+ 'aria-labelledby'?: string;
62
+ 'aria-required'?: boolean | "true" | "false";
56
63
  id?: string;
57
64
  autoFocus?: boolean;
65
+ autoClearSearchValue?: boolean;
58
66
  arrowIcon?: React.ReactNode;
59
67
  defaultValue?: string | number | any[] | Record<string, any>;
60
68
  value?: string | number | any[] | Record<string, any>;
@@ -90,6 +98,7 @@ declare class Form extends BaseComponent<BaseFormProps, BaseFormState> {
90
98
  suffix?: React.ReactNode;
91
99
  prefix?: React.ReactNode;
92
100
  insetLabel?: React.ReactNode;
101
+ insetLabelId?: string;
93
102
  inputProps?: import("utility-types").Subtract<import("../input").InputProps, {
94
103
  value?: React.ReactText;
95
104
  onFocus?: (e: React.FocusEvent<HTMLInputElement, Element>) => void;
@@ -259,6 +259,7 @@ class Form extends _baseComponent.default {
259
259
  }
260
260
 
261
261
  Form.propTypes = {
262
+ 'aria-label': _propTypes.default.string,
262
263
  onSubmit: _propTypes.default.func,
263
264
  onSubmitFail: _propTypes.default.func,
264
265
 
@@ -284,7 +285,8 @@ Form.propTypes = {
284
285
  autoScrollToError: _propTypes.default.oneOfType([_propTypes.default.bool, _propTypes.default.object]),
285
286
  disabled: _propTypes.default.bool,
286
287
  showValidateIcon: _propTypes.default.bool,
287
- extraTextPosition: _propTypes.default.oneOf(_constants.strings.EXTRA_POS)
288
+ extraTextPosition: _propTypes.default.oneOf(_constants.strings.EXTRA_POS),
289
+ id: _propTypes.default.string
288
290
  };
289
291
  Form.defaultProps = {
290
292
  onChange: _noop2.default,
@@ -9,6 +9,8 @@ export interface ErrorMessageProps {
9
9
  validateStatus?: string;
10
10
  helpText?: React.ReactNode;
11
11
  isInInputGroup?: boolean;
12
+ errorMessageId?: string;
13
+ helpTextId?: string;
12
14
  }
13
15
  export default class ErrorMessage extends PureComponent<ErrorMessageProps> {
14
16
  static propTypes: {
@@ -19,6 +21,8 @@ export default class ErrorMessage extends PureComponent<ErrorMessageProps> {
19
21
  showValidateIcon: PropTypes.Requireable<boolean>;
20
22
  helpText: PropTypes.Requireable<PropTypes.ReactNodeLike>;
21
23
  isInInputGroup: PropTypes.Requireable<boolean>;
24
+ errorMessageId: PropTypes.Requireable<string>;
25
+ helpTextId: PropTypes.Requireable<string>;
22
26
  };
23
27
  generatorText(error: ReactFieldError): JSX.Element;
24
28
  render(): JSX.Element;
@@ -37,11 +37,26 @@ const prefix = _constants.cssClasses.PREFIX;
37
37
 
38
38
  class ErrorMessage extends _react.PureComponent {
39
39
  generatorText(error) {
40
+ const {
41
+ helpTextId,
42
+ errorMessageId
43
+ } = this.props;
44
+ const propsError = this.props.error;
45
+ let id = errorMessageId;
46
+
47
+ if (!propsError) {
48
+ id = helpTextId;
49
+ }
50
+
40
51
  if (typeof error === 'string') {
41
- return /*#__PURE__*/_react.default.createElement("span", null, error);
52
+ return /*#__PURE__*/_react.default.createElement("span", {
53
+ id: id
54
+ }, error);
42
55
  } else if ((0, _isArray.default)(error)) {
43
56
  const err = (0, _filter.default)(error).call(error, e => e);
44
- return err.length ? /*#__PURE__*/_react.default.createElement("span", null, err.join(', ')) : null;
57
+ return err.length ? /*#__PURE__*/_react.default.createElement("span", {
58
+ id: id
59
+ }, err.join(', ')) : null;
45
60
  } else if ( /*#__PURE__*/_react.default.isValidElement(error)) {
46
61
  return error;
47
62
  }
@@ -104,5 +119,8 @@ ErrorMessage.propTypes = {
104
119
  validateStatus: _propTypes.default.string,
105
120
  showValidateIcon: _propTypes.default.bool,
106
121
  helpText: _propTypes.default.node,
107
- isInInputGroup: _propTypes.default.bool
122
+ isInInputGroup: _propTypes.default.bool,
123
+ // internal props
124
+ errorMessageId: _propTypes.default.string,
125
+ helpTextId: _propTypes.default.string
108
126
  };
@@ -3,8 +3,14 @@ declare const FormInput: import("react").ComponentType<import("utility-types").S
3
3
  declare const FormInputNumber: import("react").ComponentType<import("utility-types").Subtract<import("../inputNumber/index").InputNumberProps & import("react").RefAttributes<HTMLInputElement>, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps>;
4
4
  declare const FormTextArea: import("react").ComponentType<import("utility-types").Subtract<Omit<import("../input/textarea").TextAreaProps, "forwardRef"> & import("react").RefAttributes<HTMLTextAreaElement>, import("./interface").CommonexcludeType> & import("./interface").CommonFieldProps>;
5
5
  declare const FormSelect: import("react").ComponentType<import("utility-types").Subtract<{
6
+ 'aria-describedby'?: string;
7
+ 'aria-errormessage'?: string;
8
+ 'aria-invalid'?: boolean | "true" | "false" | "grammar" | "spelling";
9
+ 'aria-labelledby'?: string;
10
+ 'aria-required'?: boolean | "true" | "false";
6
11
  id?: string;
7
12
  autoFocus?: boolean;
13
+ autoClearSearchValue?: boolean;
8
14
  arrowIcon?: import("react").ReactNode;
9
15
  defaultValue?: string | number | any[] | Record<string, any>;
10
16
  value?: string | number | any[] | Record<string, any>;
@@ -40,6 +46,7 @@ declare const FormSelect: import("react").ComponentType<import("utility-types").
40
46
  suffix?: import("react").ReactNode;
41
47
  prefix?: import("react").ReactNode;
42
48
  insetLabel?: import("react").ReactNode;
49
+ insetLabelId?: string;
43
50
  inputProps?: import("utility-types").Subtract<import("../input/index").InputProps, {
44
51
  value?: import("react").ReactText;
45
52
  onFocus?: (e: import("react").FocusEvent<HTMLInputElement, Element>) => void;
@@ -97,6 +97,7 @@ function withField(Component, opts) {
97
97
  extraText,
98
98
  extraTextPosition,
99
99
  pure,
100
+ id,
100
101
  rest
101
102
  } = (0, _utils.mergeProps)(props);
102
103
  let {
@@ -429,25 +430,61 @@ function withField(Component, opts) {
429
430
  let mergeLabelAlign = labelAlign || formProps.labelAlign;
430
431
  let mergeLabelCol = labelCol || formProps.labelCol;
431
432
  let mergeWrapperCol = wrapperCol || formProps.wrapperCol;
432
- let mergeExtraPos = extraTextPosition || formProps.extraTextPosition || 'bottom';
433
+ let mergeExtraPos = extraTextPosition || formProps.extraTextPosition || 'bottom'; // id attribute to improve a11y
434
+
435
+ const a11yId = id ? id : field;
436
+ const labelId = "".concat(a11yId, "-label");
437
+ const helpTextId = "".concat(a11yId, "-helpText");
438
+ const extraTextId = "".concat(a11yId, "-extraText");
439
+ const errorMessageId = "".concat(a11yId, "-errormessage");
433
440
 
434
441
  let FieldComponent = (() => {
435
- var _context, _context3;
442
+ var _context3, _context5;
436
443
 
437
444
  // prefer to use validateStatus which pass by user throught props
438
445
  let blockStatus = validateStatus ? validateStatus : status;
446
+ const extraCls = (0, _classnames.default)("".concat(prefix, "-field-extra"), {
447
+ ["".concat(prefix, "-field-extra-string")]: typeof extraText === 'string',
448
+ ["".concat(prefix, "-field-extra-middle")]: mergeExtraPos === 'middle',
449
+ ["".concat(prefix, "-field-extra-botttom")]: mergeExtraPos === 'bottom'
450
+ });
451
+ const extraContent = extraText ? /*#__PURE__*/_react.default.createElement("div", {
452
+ className: extraCls,
453
+ id: extraTextId
454
+ }, extraText) : null;
439
455
  let newProps = (0, _assign.default)((0, _assign.default)({
456
+ id: a11yId,
440
457
  disabled: formProps.disabled
441
458
  }, rest), {
442
459
  ref,
443
460
  onBlur: handleBlur,
444
461
  [options.onKeyChangeFnName]: handleChange,
445
462
  [options.valueKey]: value,
446
- validateStatus: blockStatus
463
+ validateStatus: blockStatus,
464
+ 'aria-required': required,
465
+ 'aria-labelledby': labelId
447
466
  });
467
+
468
+ if (helpText) {
469
+ var _context;
470
+
471
+ newProps['aria-describedby'] = extraText ? (0, _concat.default)(_context = "".concat(helpTextId, " ")).call(_context, extraTextId) : helpTextId;
472
+ }
473
+
474
+ if (extraText) {
475
+ var _context2;
476
+
477
+ newProps['aria-describedby'] = helpText ? (0, _concat.default)(_context2 = "".concat(helpTextId, " ")).call(_context2, extraTextId) : extraTextId;
478
+ }
479
+
480
+ if (status === 'error') {
481
+ newProps['aria-errormessage'] = errorMessageId;
482
+ newProps['aria-invalid'] = true;
483
+ }
484
+
448
485
  const fieldCls = (0, _classnames.default)({
449
486
  ["".concat(prefix, "-field")]: true,
450
- [(0, _concat.default)(_context = "".concat(prefix, "-field-")).call(_context, name)]: Boolean(name),
487
+ [(0, _concat.default)(_context3 = "".concat(prefix, "-field-")).call(_context3, name)]: Boolean(name),
451
488
  [fieldClassName]: Boolean(fieldClassName)
452
489
  });
453
490
  const fieldMaincls = (0, _classnames.default)({
@@ -456,9 +493,11 @@ function withField(Component, opts) {
456
493
 
457
494
  if (mergeLabelPos === 'inset' && !noLabel) {
458
495
  newProps.insetLabel = label || field;
496
+ newProps.insetLabelId = labelId;
459
497
 
460
498
  if (typeof label === 'object' && !(0, _reactUtils.isElement)(label)) {
461
499
  newProps.insetLabel = label.text;
500
+ newProps.insetLabelId = labelId;
462
501
  }
463
502
  }
464
503
 
@@ -470,11 +509,11 @@ function withField(Component, opts) {
470
509
  }
471
510
 
472
511
  if (pure) {
473
- var _context2;
512
+ var _context4;
474
513
 
475
514
  let pureCls = (0, _classnames.default)(rest.className, {
476
515
  ["".concat(prefix, "-field-pure")]: true,
477
- [(0, _concat.default)(_context2 = "".concat(prefix, "-field-")).call(_context2, name)]: Boolean(name),
516
+ [(0, _concat.default)(_context4 = "".concat(prefix, "-field-")).call(_context4, name)]: Boolean(name),
478
517
  [fieldClassName]: Boolean(fieldClassName)
479
518
  });
480
519
  newProps.className = pureCls;
@@ -482,7 +521,7 @@ function withField(Component, opts) {
482
521
  }
483
522
 
484
523
  let withCol = mergeLabelCol && mergeWrapperCol;
485
- const labelColCls = mergeLabelAlign ? (0, _concat.default)(_context3 = "".concat(prefix, "-col-")).call(_context3, mergeLabelAlign) : ''; // get label
524
+ const labelColCls = mergeLabelAlign ? (0, _concat.default)(_context5 = "".concat(prefix, "-col-")).call(_context5, mergeLabelAlign) : ''; // get label
486
525
 
487
526
  let labelContent = null;
488
527
 
@@ -490,6 +529,7 @@ function withField(Component, opts) {
490
529
  let needSpread = typeof label === 'object' && !(0, _reactUtils.isElement)(label) ? label : {};
491
530
  labelContent = /*#__PURE__*/_react.default.createElement(_label.default, (0, _assign.default)({
492
531
  text: label || field,
532
+ id: labelId,
493
533
  required: required,
494
534
  name: name || field,
495
535
  width: mergeLabelWidth,
@@ -497,21 +537,14 @@ function withField(Component, opts) {
497
537
  }, needSpread));
498
538
  }
499
539
 
500
- const extraCls = (0, _classnames.default)("".concat(prefix, "-field-extra"), {
501
- ["".concat(prefix, "-field-extra-string")]: typeof extraText === 'string',
502
- ["".concat(prefix, "-field-extra-middle")]: mergeExtraPos === 'middle',
503
- ["".concat(prefix, "-field-extra-botttom")]: mergeExtraPos === 'bottom'
504
- });
505
- const extraContent = extraText ? /*#__PURE__*/_react.default.createElement("div", {
506
- className: extraCls
507
- }, extraText) : null;
508
-
509
540
  const fieldMainContent = /*#__PURE__*/_react.default.createElement("div", {
510
541
  className: fieldMaincls
511
542
  }, mergeExtraPos === 'middle' ? extraContent : null, com, !noErrorMessage ? /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
512
543
  error: error,
513
544
  validateStatus: blockStatus,
514
545
  helpText: helpText,
546
+ helpTextId: helpTextId,
547
+ errorMessageId: errorMessageId,
515
548
  showValidateIcon: formProps.showValidateIcon
516
549
  }) : null, mergeExtraPos === 'bottom' ? extraContent : null);
517
550
 
@@ -11,7 +11,6 @@ import { useFormApi, useFormState, useFieldState, useFieldApi } from './hooks/in
11
11
  import withField from './hoc/withField';
12
12
  import withFormState from './hoc/withFormState';
13
13
  import withFormApi from './hoc/withFormApi';
14
- export * from './interface';
15
14
  export { Form, ArrayField, withField, useFormApi, useFormState, useFieldApi, useFieldState, withFormState, withFormApi };
16
15
  export * from './interface';
17
16
  export { ArrayFieldProps } from './arrayField';
@@ -82,6 +82,7 @@ export interface FormFCChild<K extends Record<string, any> = any> {
82
82
  formApi: FormApi<K>;
83
83
  }
84
84
  export interface BaseFormProps {
85
+ 'aria-label'?: React.AriaAttributes['aria-label'];
85
86
  onSubmit?: (values: Record<string, any>) => void;
86
87
  onSubmitFail?: (errors: Record<string, FieldError>, values: any) => void;
87
88
  onReset?: () => void;
@@ -90,6 +91,7 @@ export interface BaseFormProps {
90
91
  validateFields?: (values: Record<string, any>) => string | Record<string, any>;
91
92
  /** Use this if you want to populate the form with initial values. */
92
93
  initValues?: Record<string, any>;
94
+ id?: string;
93
95
  /** getFormApi will be call once when Form mounted, u can save formApi reference in your component */
94
96
  getFormApi?: (formApi: FormApi) => void;
95
97
  style?: React.CSSProperties;
@@ -1,6 +1,7 @@
1
1
  import React, { PureComponent } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  export interface LabelProps {
4
+ id?: string;
4
5
  /** Whether to display the required * symbol */
5
6
  required?: boolean;
6
7
  /** Content of label */
@@ -24,6 +25,7 @@ export default class Label extends PureComponent<LabelProps> {
24
25
  className: string;
25
26
  };
26
27
  static propTypes: {
28
+ id: PropTypes.Requireable<string>;
27
29
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
28
30
  required: PropTypes.Requireable<boolean>;
29
31
  text: PropTypes.Requireable<PropTypes.ReactNodeLike>;
@@ -40,7 +40,8 @@ class Label extends _react.PureComponent {
40
40
  align,
41
41
  style,
42
42
  className,
43
- extra
43
+ extra,
44
+ id
44
45
  } = this.props;
45
46
  const labelCls = (0, _classnames.default)(className, {
46
47
  ["".concat(prefixCls, "-field-label")]: true,
@@ -64,7 +65,8 @@ class Label extends _react.PureComponent {
64
65
  return /*#__PURE__*/_react.default.createElement("label", {
65
66
  className: labelCls,
66
67
  htmlFor: name,
67
- style: labelStyle
68
+ style: labelStyle,
69
+ id: id
68
70
  }, extra ? contentWithExtra : textContent);
69
71
  }
70
72
 
@@ -78,6 +80,7 @@ Label.defaultProps = {
78
80
  className: ''
79
81
  };
80
82
  Label.propTypes = {
83
+ id: _propTypes.default.string,
81
84
  children: _propTypes.default.node,
82
85
  required: _propTypes.default.bool,
83
86
  text: _propTypes.default.node,