@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
@@ -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
@@ -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
  }])
@@ -118,13 +126,13 @@ class CollapsePanel extends _react.PureComponent {
118
126
  ["".concat(_constants.cssClasses.PREFIX, "-content")]: true
119
127
  });
120
128
  return /*#__PURE__*/_react.default.createElement("div", (0, _assign.default)({
121
- role: "Collapse-panel",
122
129
  className: itemCls
123
130
  }, restProps), /*#__PURE__*/_react.default.createElement("div", {
124
131
  role: "button",
125
132
  tabIndex: 0,
126
133
  className: headerCls,
127
134
  "aria-expanded": active ? 'true' : 'false',
135
+ "aria-owns": this.ariaID,
128
136
  onClick: e => onClick(itemKey, e)
129
137
  }, this.renderHeader(active, children !== undefined)), children && /*#__PURE__*/_react.default.createElement(_collapsible.default, {
130
138
  isOpen: active,
@@ -132,7 +140,9 @@ class CollapsePanel extends _react.PureComponent {
132
140
  motion: motion,
133
141
  reCalcKey: reCalcKey
134
142
  }, /*#__PURE__*/_react.default.createElement("div", {
135
- className: contentCls
143
+ className: contentCls,
144
+ "aria-hidden": !active,
145
+ id: this.ariaID
136
146
  }, /*#__PURE__*/_react.default.createElement("div", {
137
147
  className: "".concat(_constants.cssClasses.PREFIX, "-content-wrapper")
138
148
  }, 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>;
@@ -278,6 +278,10 @@ class DatePicker extends _baseComponent.default {
278
278
  }
279
279
 
280
280
  this.clickOutSideHandler = e => {
281
+ if (this.adapter.needConfirm()) {
282
+ return;
283
+ }
284
+
281
285
  const triggerEl = this.triggerElRef && this.triggerElRef.current;
282
286
  const panelEl = this.panelRef && this.panelRef.current;
283
287
  const isInTrigger = triggerEl && triggerEl.contains(e.target);
@@ -462,7 +466,8 @@ class DatePicker extends _baseComponent.default {
462
466
  density,
463
467
  syncSwitchMonth,
464
468
  onPanelChange,
465
- timeZone
469
+ timeZone,
470
+ triggerRender
466
471
  } = this.props;
467
472
  const {
468
473
  value,
@@ -509,7 +514,8 @@ class DatePicker extends _baseComponent.default {
509
514
  syncSwitchMonth: syncSwitchMonth,
510
515
  onPanelChange: onPanelChange,
511
516
  timeZone: timeZone,
512
- focusRecordsRef: this.focusRecordsRef
517
+ focusRecordsRef: this.focusRecordsRef,
518
+ triggerRender: triggerRender
513
519
  });
514
520
  }
515
521
 
@@ -535,6 +541,7 @@ class DatePicker extends _baseComponent.default {
535
541
  disabled,
536
542
  showClear,
537
543
  insetLabel,
544
+ insetLabelId,
538
545
  placeholder,
539
546
  validateStatus,
540
547
  inputStyle,
@@ -575,6 +582,7 @@ class DatePicker extends _baseComponent.default {
575
582
  inputStyle,
576
583
  showClear,
577
584
  insetLabel,
585
+ insetLabelId,
578
586
  type,
579
587
  format,
580
588
  multiple,
@@ -617,7 +625,12 @@ class DatePicker extends _baseComponent.default {
617
625
  className: (0, _classnames.default)(className, {
618
626
  [prefixCls]: true
619
627
  }),
620
- 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']
621
634
  };
622
635
  const inner = this.renderInner();
623
636
  const wrappedInner = this.wrapPopover(inner);
@@ -629,6 +642,11 @@ class DatePicker extends _baseComponent.default {
629
642
  exports.default = DatePicker;
630
643
  DatePicker.contextType = _context5.default;
631
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,
632
650
  type: _propTypes.default.oneOf(_constants.strings.TYPE_SET),
633
651
  size: _propTypes.default.oneOf(_constants.strings.SIZE_SET),
634
652
  density: _propTypes.default.oneOf(_constants.strings.DENSITY_SET),
@@ -658,6 +676,7 @@ DatePicker.propTypes = {
658
676
  prefixCls: _propTypes.default.string,
659
677
  prefix: _propTypes.default.node,
660
678
  insetLabel: _propTypes.default.node,
679
+ insetLabelId: _propTypes.default.string,
661
680
  zIndex: _propTypes.default.number,
662
681
  position: _propTypes.default.oneOf(_constants2.strings.POSITION_SET),
663
682
  getPopupContainer: _propTypes.default.func,
@@ -49,6 +49,7 @@ export default class MonthsGrid extends BaseComponent<MonthsGridProps, MonthsGri
49
49
  syncSwitchMonth: PropTypes.Requireable<boolean>;
50
50
  onPanelChange: PropTypes.Requireable<(...args: any[]) => any>;
51
51
  focusRecordsRef: PropTypes.Requireable<object>;
52
+ triggerRender: PropTypes.Requireable<(...args: any[]) => any>;
52
53
  };
53
54
  static defaultProps: {
54
55
  type: string;
@@ -695,7 +695,8 @@ MonthsGrid.propTypes = {
695
695
  syncSwitchMonth: _propTypes.default.bool,
696
696
  // Callback function for panel date switching
697
697
  onPanelChange: _propTypes.default.func,
698
- focusRecordsRef: _propTypes.default.object
698
+ focusRecordsRef: _propTypes.default.object,
699
+ triggerRender: _propTypes.default.func
699
700
  };
700
701
  MonthsGrid.defaultProps = {
701
702
  type: 'date',
@@ -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);
@@ -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>;