@douyinfe/semi-ui 2.2.1 → 2.3.1

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 (445) 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 +93 -0
  34. package/datePicker/_story/datePicker.stories.js +84 -1
  35. package/datePicker/datePicker.tsx +21 -0
  36. package/datePicker/monthsGrid.tsx +2 -1
  37. package/dist/css/semi.css +8 -3
  38. package/dist/css/semi.min.css +1 -1
  39. package/dist/umd/semi-ui.js +2490 -1255
  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/dropdown/index.tsx +11 -3
  46. package/empty/index.tsx +4 -4
  47. package/form/_story/FormApi/formApiDemo.jsx +3 -2
  48. package/form/_story/Validate/validateDemo.jsx +1 -1
  49. package/form/_story/demo.jsx +12 -3
  50. package/form/_story/form.stories.js +0 -7
  51. package/form/baseForm.tsx +2 -0
  52. package/form/errorMessage.tsx +13 -2
  53. package/form/hoc/withField.tsx +37 -8
  54. package/form/index.tsx +0 -2
  55. package/form/interface.ts +2 -0
  56. package/form/label.tsx +4 -2
  57. package/input/index.tsx +49 -4
  58. package/input/inputGroup.tsx +9 -4
  59. package/input/textarea.tsx +25 -6
  60. package/inputNumber/_story/inputNumber.stories.js +12 -0
  61. package/inputNumber/index.tsx +35 -3
  62. package/layout/Sider.tsx +6 -2
  63. package/layout/index.tsx +4 -3
  64. package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
  65. package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
  66. package/lib/cjs/_utils/index.d.ts +1 -0
  67. package/lib/cjs/_utils/index.js +6 -1
  68. package/lib/cjs/anchor/index.d.ts +2 -0
  69. package/lib/cjs/anchor/index.js +6 -1
  70. package/lib/cjs/anchor/link.d.ts +4 -1
  71. package/lib/cjs/anchor/link.js +39 -5
  72. package/lib/cjs/autoComplete/index.d.ts +17 -0
  73. package/lib/cjs/autoComplete/index.js +21 -2
  74. package/lib/cjs/avatar/index.d.ts +4 -3
  75. package/lib/cjs/avatar/index.js +15 -11
  76. package/lib/cjs/banner/index.js +4 -2
  77. package/lib/cjs/breadcrumb/index.d.ts +3 -0
  78. package/lib/cjs/breadcrumb/index.js +10 -4
  79. package/lib/cjs/breadcrumb/item.js +2 -2
  80. package/lib/cjs/button/Button.d.ts +2 -0
  81. package/lib/cjs/button/Button.js +4 -2
  82. package/lib/cjs/button/buttonGroup.d.ts +3 -0
  83. package/lib/cjs/button/buttonGroup.js +8 -4
  84. package/lib/cjs/button/index.d.ts +1 -0
  85. package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
  86. package/lib/cjs/button/splitButtonGroup.js +5 -2
  87. package/lib/cjs/card/index.d.ts +3 -0
  88. package/lib/cjs/card/index.js +3 -1
  89. package/lib/cjs/cascader/index.d.ts +14 -0
  90. package/lib/cjs/cascader/index.js +35 -7
  91. package/lib/cjs/checkbox/checkbox.d.ts +21 -1
  92. package/lib/cjs/checkbox/checkbox.js +51 -17
  93. package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
  94. package/lib/cjs/checkbox/checkboxGroup.js +16 -3
  95. package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
  96. package/lib/cjs/checkbox/checkboxInner.js +20 -3
  97. package/lib/cjs/collapse/item.d.ts +2 -1
  98. package/lib/cjs/collapse/item.js +12 -2
  99. package/lib/cjs/collapsible/index.d.ts +1 -0
  100. package/lib/cjs/collapsible/index.js +4 -2
  101. package/lib/cjs/datePicker/datePicker.d.ts +12 -0
  102. package/lib/cjs/datePicker/datePicker.js +18 -3
  103. package/lib/cjs/datePicker/monthsGrid.d.ts +1 -0
  104. package/lib/cjs/datePicker/monthsGrid.js +2 -1
  105. package/lib/cjs/dropdown/dropdownItem.js +3 -1
  106. package/lib/cjs/dropdown/dropdownMenu.js +4 -1
  107. package/lib/cjs/dropdown/index.d.ts +10 -3
  108. package/lib/cjs/form/baseForm.d.ts +9 -0
  109. package/lib/cjs/form/baseForm.js +3 -1
  110. package/lib/cjs/form/errorMessage.d.ts +4 -0
  111. package/lib/cjs/form/errorMessage.js +21 -3
  112. package/lib/cjs/form/field.d.ts +7 -0
  113. package/lib/cjs/form/hoc/withField.js +49 -16
  114. package/lib/cjs/form/index.d.ts +0 -1
  115. package/lib/cjs/form/interface.d.ts +2 -0
  116. package/lib/cjs/form/label.d.ts +2 -0
  117. package/lib/cjs/form/label.js +5 -2
  118. package/lib/cjs/input/index.d.ts +16 -0
  119. package/lib/cjs/input/index.js +51 -15
  120. package/lib/cjs/input/inputGroup.d.ts +2 -1
  121. package/lib/cjs/input/inputGroup.js +11 -1
  122. package/lib/cjs/input/textarea.js +12 -1
  123. package/lib/cjs/inputNumber/index.d.ts +21 -12
  124. package/lib/cjs/inputNumber/index.js +40 -5
  125. package/lib/cjs/layout/Sider.d.ts +4 -0
  126. package/lib/cjs/layout/Sider.js +4 -1
  127. package/lib/cjs/layout/index.js +2 -0
  128. package/lib/cjs/list/index.d.ts +4 -4
  129. package/lib/cjs/list/item.js +0 -1
  130. package/lib/cjs/modal/Modal.js +2 -0
  131. package/lib/cjs/modal/ModalContent.d.ts +3 -1
  132. package/lib/cjs/modal/ModalContent.js +47 -5
  133. package/lib/cjs/navigation/Item.d.ts +4 -2
  134. package/lib/cjs/navigation/Item.js +25 -5
  135. package/lib/cjs/navigation/SubNav.d.ts +4 -2
  136. package/lib/cjs/navigation/SubNav.js +8 -1
  137. package/lib/cjs/navigation/index.js +2 -0
  138. package/lib/cjs/notification/notice.d.ts +1 -1
  139. package/lib/cjs/notification/notice.js +32 -22
  140. package/lib/cjs/pagination/index.js +16 -6
  141. package/lib/cjs/popover/index.js +7 -3
  142. package/lib/cjs/progress/index.d.ts +8 -0
  143. package/lib/cjs/progress/index.js +42 -9
  144. package/lib/cjs/radio/radio.d.ts +6 -1
  145. package/lib/cjs/radio/radio.js +17 -5
  146. package/lib/cjs/radio/radioGroup.d.ts +16 -1
  147. package/lib/cjs/radio/radioGroup.js +18 -3
  148. package/lib/cjs/radio/radioInner.d.ts +6 -1
  149. package/lib/cjs/radio/radioInner.js +11 -3
  150. package/lib/cjs/rating/index.d.ts +14 -0
  151. package/lib/cjs/rating/index.js +14 -3
  152. package/lib/cjs/rating/item.d.ts +2 -0
  153. package/lib/cjs/rating/item.js +6 -1
  154. package/lib/cjs/select/index.d.ts +16 -0
  155. package/lib/cjs/select/index.js +65 -19
  156. package/lib/cjs/select/option.js +28 -22
  157. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  158. package/lib/cjs/sideSheet/SideSheetContent.js +4 -1
  159. package/lib/cjs/sideSheet/index.d.ts +1 -0
  160. package/lib/cjs/sideSheet/index.js +2 -1
  161. package/lib/cjs/slider/index.d.ts +2 -1
  162. package/lib/cjs/slider/index.js +64 -17
  163. package/lib/cjs/spin/icon.js +3 -4
  164. package/lib/cjs/steps/basicStep.d.ts +3 -0
  165. package/lib/cjs/steps/basicStep.js +23 -25
  166. package/lib/cjs/steps/basicSteps.d.ts +1 -0
  167. package/lib/cjs/steps/basicSteps.js +2 -1
  168. package/lib/cjs/steps/fillStep.d.ts +3 -0
  169. package/lib/cjs/steps/fillStep.js +19 -4
  170. package/lib/cjs/steps/fillSteps.d.ts +1 -0
  171. package/lib/cjs/steps/fillSteps.js +2 -1
  172. package/lib/cjs/steps/navStep.d.ts +3 -0
  173. package/lib/cjs/steps/navStep.js +22 -25
  174. package/lib/cjs/steps/navSteps.d.ts +1 -0
  175. package/lib/cjs/steps/navSteps.js +2 -1
  176. package/lib/cjs/switch/index.d.ts +12 -0
  177. package/lib/cjs/switch/index.js +19 -4
  178. package/lib/cjs/table/Body/BaseRow.js +35 -3
  179. package/lib/cjs/table/Body/index.js +9 -1
  180. package/lib/cjs/table/ColumnFilter.js +4 -0
  181. package/lib/cjs/table/ColumnSelection.d.ts +3 -0
  182. package/lib/cjs/table/ColumnSelection.js +6 -2
  183. package/lib/cjs/table/ColumnSorter.js +19 -3
  184. package/lib/cjs/table/CustomExpandIcon.js +7 -1
  185. package/lib/cjs/table/Table.d.ts +2 -0
  186. package/lib/cjs/table/Table.js +31 -15
  187. package/lib/cjs/table/TableCell.d.ts +2 -0
  188. package/lib/cjs/table/TableCell.js +6 -2
  189. package/lib/cjs/table/TableHeaderRow.js +8 -2
  190. package/lib/cjs/tabs/TabBar.js +11 -3
  191. package/lib/cjs/tabs/TabPane.js +3 -1
  192. package/lib/cjs/tabs/index.js +0 -1
  193. package/lib/cjs/tagInput/index.d.ts +4 -1
  194. package/lib/cjs/tagInput/index.js +29 -3
  195. package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
  196. package/lib/cjs/timePicker/TimePicker.js +9 -1
  197. package/lib/cjs/timePicker/index.d.ts +6 -0
  198. package/lib/cjs/timeline/index.d.ts +1 -1
  199. package/lib/cjs/timeline/index.js +1 -0
  200. package/lib/cjs/timeline/item.js +4 -2
  201. package/lib/cjs/toast/toast.js +2 -0
  202. package/lib/cjs/tooltip/TriangleArrow.js +1 -0
  203. package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
  204. package/lib/cjs/tooltip/index.d.ts +16 -12
  205. package/lib/cjs/tooltip/index.js +55 -39
  206. package/lib/cjs/transfer/index.d.ts +1 -1
  207. package/lib/cjs/transfer/index.js +35 -17
  208. package/lib/cjs/tree/index.d.ts +1 -0
  209. package/lib/cjs/tree/index.js +15 -6
  210. package/lib/cjs/tree/treeNode.d.ts +12 -4
  211. package/lib/cjs/tree/treeNode.js +44 -4
  212. package/lib/cjs/treeSelect/index.d.ts +16 -0
  213. package/lib/cjs/treeSelect/index.js +60 -12
  214. package/lib/cjs/typography/base.js +18 -7
  215. package/lib/cjs/typography/copyable.js +6 -1
  216. package/lib/cjs/upload/fileCard.js +26 -7
  217. package/lib/cjs/upload/index.js +19 -4
  218. package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
  219. package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
  220. package/lib/es/_utils/index.d.ts +1 -0
  221. package/lib/es/_utils/index.js +4 -1
  222. package/lib/es/anchor/index.d.ts +2 -0
  223. package/lib/es/anchor/index.js +6 -1
  224. package/lib/es/anchor/link.d.ts +4 -1
  225. package/lib/es/anchor/link.js +38 -5
  226. package/lib/es/autoComplete/index.d.ts +17 -0
  227. package/lib/es/autoComplete/index.js +21 -2
  228. package/lib/es/avatar/index.d.ts +4 -3
  229. package/lib/es/avatar/index.js +15 -11
  230. package/lib/es/banner/index.js +4 -2
  231. package/lib/es/breadcrumb/index.d.ts +3 -0
  232. package/lib/es/breadcrumb/index.js +10 -4
  233. package/lib/es/breadcrumb/item.js +2 -2
  234. package/lib/es/button/Button.d.ts +2 -0
  235. package/lib/es/button/Button.js +4 -2
  236. package/lib/es/button/buttonGroup.d.ts +3 -0
  237. package/lib/es/button/buttonGroup.js +8 -4
  238. package/lib/es/button/index.d.ts +1 -0
  239. package/lib/es/button/splitButtonGroup.d.ts +3 -0
  240. package/lib/es/button/splitButtonGroup.js +5 -2
  241. package/lib/es/card/index.d.ts +3 -0
  242. package/lib/es/card/index.js +3 -1
  243. package/lib/es/cascader/index.d.ts +14 -0
  244. package/lib/es/cascader/index.js +35 -7
  245. package/lib/es/checkbox/checkbox.d.ts +21 -1
  246. package/lib/es/checkbox/checkbox.js +50 -17
  247. package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
  248. package/lib/es/checkbox/checkboxGroup.js +18 -5
  249. package/lib/es/checkbox/checkboxInner.d.ts +15 -0
  250. package/lib/es/checkbox/checkboxInner.js +20 -3
  251. package/lib/es/collapse/item.d.ts +2 -1
  252. package/lib/es/collapse/item.js +11 -2
  253. package/lib/es/collapsible/index.d.ts +1 -0
  254. package/lib/es/collapsible/index.js +4 -2
  255. package/lib/es/datePicker/datePicker.d.ts +12 -0
  256. package/lib/es/datePicker/datePicker.js +18 -3
  257. package/lib/es/datePicker/monthsGrid.d.ts +1 -0
  258. package/lib/es/datePicker/monthsGrid.js +2 -1
  259. package/lib/es/dropdown/dropdownItem.js +3 -1
  260. package/lib/es/dropdown/dropdownMenu.js +4 -1
  261. package/lib/es/dropdown/index.d.ts +10 -3
  262. package/lib/es/form/baseForm.d.ts +9 -0
  263. package/lib/es/form/baseForm.js +3 -1
  264. package/lib/es/form/errorMessage.d.ts +4 -0
  265. package/lib/es/form/errorMessage.js +21 -3
  266. package/lib/es/form/field.d.ts +7 -0
  267. package/lib/es/form/hoc/withField.js +48 -15
  268. package/lib/es/form/index.d.ts +0 -1
  269. package/lib/es/form/index.js +0 -1
  270. package/lib/es/form/interface.d.ts +2 -0
  271. package/lib/es/form/label.d.ts +2 -0
  272. package/lib/es/form/label.js +5 -2
  273. package/lib/es/input/index.d.ts +16 -0
  274. package/lib/es/input/index.js +51 -15
  275. package/lib/es/input/inputGroup.d.ts +2 -1
  276. package/lib/es/input/inputGroup.js +11 -1
  277. package/lib/es/input/textarea.js +12 -1
  278. package/lib/es/inputNumber/index.d.ts +21 -12
  279. package/lib/es/inputNumber/index.js +41 -5
  280. package/lib/es/layout/Sider.d.ts +4 -0
  281. package/lib/es/layout/Sider.js +4 -1
  282. package/lib/es/layout/index.js +2 -0
  283. package/lib/es/list/index.d.ts +4 -4
  284. package/lib/es/list/item.js +0 -1
  285. package/lib/es/modal/Modal.js +2 -0
  286. package/lib/es/modal/ModalContent.d.ts +3 -1
  287. package/lib/es/modal/ModalContent.js +46 -5
  288. package/lib/es/navigation/Item.d.ts +4 -2
  289. package/lib/es/navigation/Item.js +25 -5
  290. package/lib/es/navigation/SubNav.d.ts +4 -2
  291. package/lib/es/navigation/SubNav.js +8 -1
  292. package/lib/es/navigation/index.js +2 -0
  293. package/lib/es/notification/notice.d.ts +1 -1
  294. package/lib/es/notification/notice.js +33 -24
  295. package/lib/es/pagination/index.js +16 -6
  296. package/lib/es/popover/index.js +7 -3
  297. package/lib/es/progress/index.d.ts +8 -0
  298. package/lib/es/progress/index.js +42 -9
  299. package/lib/es/radio/radio.d.ts +6 -1
  300. package/lib/es/radio/radio.js +16 -5
  301. package/lib/es/radio/radioGroup.d.ts +16 -1
  302. package/lib/es/radio/radioGroup.js +18 -3
  303. package/lib/es/radio/radioInner.d.ts +6 -1
  304. package/lib/es/radio/radioInner.js +11 -3
  305. package/lib/es/rating/index.d.ts +14 -0
  306. package/lib/es/rating/index.js +14 -3
  307. package/lib/es/rating/item.d.ts +2 -0
  308. package/lib/es/rating/item.js +6 -1
  309. package/lib/es/select/index.d.ts +16 -0
  310. package/lib/es/select/index.js +63 -17
  311. package/lib/es/select/option.js +28 -22
  312. package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
  313. package/lib/es/sideSheet/SideSheetContent.js +4 -1
  314. package/lib/es/sideSheet/index.d.ts +1 -0
  315. package/lib/es/sideSheet/index.js +2 -1
  316. package/lib/es/slider/index.d.ts +2 -1
  317. package/lib/es/slider/index.js +63 -16
  318. package/lib/es/spin/icon.js +3 -4
  319. package/lib/es/steps/basicStep.d.ts +3 -0
  320. package/lib/es/steps/basicStep.js +23 -23
  321. package/lib/es/steps/basicSteps.d.ts +1 -0
  322. package/lib/es/steps/basicSteps.js +2 -1
  323. package/lib/es/steps/fillStep.d.ts +3 -0
  324. package/lib/es/steps/fillStep.js +19 -4
  325. package/lib/es/steps/fillSteps.d.ts +1 -0
  326. package/lib/es/steps/fillSteps.js +2 -1
  327. package/lib/es/steps/navStep.d.ts +3 -0
  328. package/lib/es/steps/navStep.js +22 -23
  329. package/lib/es/steps/navSteps.d.ts +1 -0
  330. package/lib/es/steps/navSteps.js +2 -1
  331. package/lib/es/switch/index.d.ts +12 -0
  332. package/lib/es/switch/index.js +19 -4
  333. package/lib/es/table/Body/BaseRow.js +35 -3
  334. package/lib/es/table/Body/index.js +9 -2
  335. package/lib/es/table/ColumnFilter.js +4 -0
  336. package/lib/es/table/ColumnSelection.d.ts +3 -0
  337. package/lib/es/table/ColumnSelection.js +6 -2
  338. package/lib/es/table/ColumnSorter.js +17 -3
  339. package/lib/es/table/CustomExpandIcon.js +6 -1
  340. package/lib/es/table/Table.d.ts +2 -0
  341. package/lib/es/table/Table.js +31 -15
  342. package/lib/es/table/TableCell.d.ts +2 -0
  343. package/lib/es/table/TableCell.js +6 -2
  344. package/lib/es/table/TableHeaderRow.js +8 -2
  345. package/lib/es/tabs/TabBar.js +11 -3
  346. package/lib/es/tabs/TabPane.js +3 -1
  347. package/lib/es/tabs/index.js +0 -1
  348. package/lib/es/tagInput/index.d.ts +4 -1
  349. package/lib/es/tagInput/index.js +29 -3
  350. package/lib/es/timePicker/TimePicker.d.ts +12 -0
  351. package/lib/es/timePicker/TimePicker.js +9 -1
  352. package/lib/es/timePicker/index.d.ts +6 -0
  353. package/lib/es/timeline/index.d.ts +1 -1
  354. package/lib/es/timeline/index.js +1 -0
  355. package/lib/es/timeline/item.js +4 -2
  356. package/lib/es/toast/toast.js +2 -0
  357. package/lib/es/tooltip/TriangleArrow.js +1 -0
  358. package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
  359. package/lib/es/tooltip/index.d.ts +16 -12
  360. package/lib/es/tooltip/index.js +53 -39
  361. package/lib/es/transfer/index.d.ts +1 -1
  362. package/lib/es/transfer/index.js +35 -17
  363. package/lib/es/tree/index.d.ts +1 -0
  364. package/lib/es/tree/index.js +15 -6
  365. package/lib/es/tree/treeNode.d.ts +12 -4
  366. package/lib/es/tree/treeNode.js +44 -4
  367. package/lib/es/treeSelect/index.d.ts +16 -0
  368. package/lib/es/treeSelect/index.js +57 -10
  369. package/lib/es/typography/base.js +17 -7
  370. package/lib/es/typography/copyable.js +5 -1
  371. package/lib/es/upload/fileCard.js +26 -7
  372. package/lib/es/upload/index.js +19 -4
  373. package/list/index.tsx +5 -5
  374. package/list/item.tsx +0 -1
  375. package/modal/Modal.tsx +2 -0
  376. package/modal/ModalContent.tsx +35 -5
  377. package/navigation/Item.tsx +15 -0
  378. package/navigation/SubNav.tsx +13 -1
  379. package/navigation/index.tsx +1 -1
  380. package/notification/notice.tsx +19 -14
  381. package/package.json +8 -8
  382. package/pagination/index.tsx +9 -5
  383. package/popover/index.tsx +5 -0
  384. package/progress/_story/progress.stories.js +18 -18
  385. package/progress/index.tsx +58 -20
  386. package/radio/radio.tsx +12 -2
  387. package/radio/radioGroup.tsx +29 -3
  388. package/radio/radioInner.tsx +10 -1
  389. package/rating/index.tsx +19 -2
  390. package/rating/item.tsx +6 -0
  391. package/select/__test__/select.test.js +45 -0
  392. package/select/_story/select.stories.js +29 -0
  393. package/select/index.tsx +52 -4
  394. package/select/option.tsx +3 -0
  395. package/sideSheet/SideSheetContent.tsx +6 -4
  396. package/sideSheet/index.tsx +3 -2
  397. package/slider/__test__/slider.test.js +9 -0
  398. package/slider/_story/slider.stories.js +1 -1
  399. package/slider/index.tsx +44 -7
  400. package/spin/icon.tsx +4 -3
  401. package/steps/basicStep.tsx +15 -4
  402. package/steps/basicSteps.tsx +3 -2
  403. package/steps/fillStep.tsx +27 -12
  404. package/steps/fillSteps.tsx +2 -0
  405. package/steps/navStep.tsx +15 -4
  406. package/steps/navSteps.tsx +3 -2
  407. package/switch/_story/switch.stories.js +20 -19
  408. package/switch/_story/switch.stories.tsx +13 -13
  409. package/switch/index.tsx +23 -5
  410. package/table/Body/BaseRow.tsx +25 -1
  411. package/table/Body/index.tsx +7 -2
  412. package/table/ColumnFilter.tsx +7 -1
  413. package/table/ColumnSelection.tsx +4 -1
  414. package/table/ColumnSorter.tsx +18 -1
  415. package/table/CustomExpandIcon.tsx +5 -0
  416. package/table/Table.tsx +26 -13
  417. package/table/TableCell.tsx +11 -1
  418. package/table/TableHeaderRow.tsx +16 -2
  419. package/table/__test__/table.test.js +46 -0
  420. package/tabs/TabBar.tsx +8 -5
  421. package/tabs/TabPane.tsx +3 -1
  422. package/tabs/index.tsx +0 -1
  423. package/tagInput/__test__/tagInput.test.js +46 -0
  424. package/tagInput/_story/tagInput.stories.js +2 -2
  425. package/tagInput/index.tsx +31 -8
  426. package/timePicker/TimePicker.tsx +14 -1
  427. package/timeline/_story/timeline.stories.js +1 -1
  428. package/timeline/index.tsx +2 -2
  429. package/timeline/item.tsx +2 -1
  430. package/toast/toast.tsx +2 -0
  431. package/tooltip/TriangleArrow.tsx +1 -1
  432. package/tooltip/TriangleArrowVertical.tsx +1 -1
  433. package/tooltip/_story/tooltip.stories.js +562 -514
  434. package/tooltip/index.tsx +51 -33
  435. package/transfer/index.tsx +32 -28
  436. package/tree/_story/tree.stories.js +3 -3
  437. package/tree/index.tsx +10 -2
  438. package/tree/treeNode.tsx +46 -10
  439. package/treeSelect/__test__/treeMultiple.test.js +5 -0
  440. package/treeSelect/_story/treeSelect.stories.js +12 -0
  441. package/treeSelect/index.tsx +58 -7
  442. package/typography/base.tsx +7 -1
  443. package/typography/copyable.tsx +10 -1
  444. package/upload/fileCard.tsx +14 -16
  445. package/upload/index.tsx +10 -6
@@ -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;
@@ -18,7 +18,8 @@ const Collapsible = props => {
18
18
  collapseHeight,
19
19
  style,
20
20
  className,
21
- reCalcKey
21
+ reCalcKey,
22
+ id
22
23
  } = props;
23
24
  const ref = useRef(null);
24
25
  const [maxHeight, setMaxHeight] = useState(0);
@@ -87,7 +88,8 @@ const Collapsible = props => {
87
88
  ref: setHeight,
88
89
  style: {
89
90
  overflow: 'hidden'
90
- }
91
+ },
92
+ id: id
91
93
  }, children));
92
94
  };
93
95
 
@@ -10,9 +10,15 @@ import { Locale } from '../locale/interface';
10
10
  import { RangeType } from '@douyinfe/semi-foundation/lib/es/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>;
@@ -433,7 +433,8 @@ export default class DatePicker extends BaseComponent {
433
433
  density,
434
434
  syncSwitchMonth,
435
435
  onPanelChange,
436
- timeZone
436
+ timeZone,
437
+ triggerRender
437
438
  } = this.props;
438
439
  const {
439
440
  value,
@@ -480,7 +481,8 @@ export default class DatePicker extends BaseComponent {
480
481
  syncSwitchMonth: syncSwitchMonth,
481
482
  onPanelChange: onPanelChange,
482
483
  timeZone: timeZone,
483
- focusRecordsRef: this.focusRecordsRef
484
+ focusRecordsRef: this.focusRecordsRef,
485
+ triggerRender: triggerRender
484
486
  });
485
487
  }
486
488
 
@@ -506,6 +508,7 @@ export default class DatePicker extends BaseComponent {
506
508
  disabled,
507
509
  showClear,
508
510
  insetLabel,
511
+ insetLabelId,
509
512
  placeholder,
510
513
  validateStatus,
511
514
  inputStyle,
@@ -546,6 +549,7 @@ export default class DatePicker extends BaseComponent {
546
549
  inputStyle,
547
550
  showClear,
548
551
  insetLabel,
552
+ insetLabelId,
549
553
  type,
550
554
  format,
551
555
  multiple,
@@ -589,7 +593,12 @@ export default class DatePicker extends BaseComponent {
589
593
  className: classnames(className, {
590
594
  [prefixCls]: true
591
595
  }),
592
- ref: this.setTriggerRef
596
+ ref: this.setTriggerRef,
597
+ 'aria-invalid': this.props['aria-invalid'],
598
+ 'aria-errormessage': this.props['aria-errormessage'],
599
+ 'aria-labelledby': this.props['aria-labelledby'],
600
+ 'aria-describedby': this.props['aria-describedby'],
601
+ 'aria-required': this.props['aria-required']
593
602
  };
594
603
  const inner = this.renderInner();
595
604
  const wrappedInner = this.wrapPopover(inner);
@@ -599,6 +608,11 @@ export default class DatePicker extends BaseComponent {
599
608
  }
600
609
  DatePicker.contextType = ConfigContext;
601
610
  DatePicker.propTypes = {
611
+ 'aria-describedby': PropTypes.string,
612
+ 'aria-errormessage': PropTypes.string,
613
+ 'aria-invalid': PropTypes.bool,
614
+ 'aria-labelledby': PropTypes.string,
615
+ 'aria-required': PropTypes.bool,
602
616
  type: PropTypes.oneOf(strings.TYPE_SET),
603
617
  size: PropTypes.oneOf(strings.SIZE_SET),
604
618
  density: PropTypes.oneOf(strings.DENSITY_SET),
@@ -628,6 +642,7 @@ DatePicker.propTypes = {
628
642
  prefixCls: PropTypes.string,
629
643
  prefix: PropTypes.node,
630
644
  insetLabel: PropTypes.node,
645
+ insetLabelId: PropTypes.string,
631
646
  zIndex: PropTypes.number,
632
647
  position: PropTypes.oneOf(popoverStrings.POSITION_SET),
633
648
  getPopupContainer: PropTypes.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;
@@ -664,7 +664,8 @@ MonthsGrid.propTypes = {
664
664
  syncSwitchMonth: PropTypes.bool,
665
665
  // Callback function for panel date switching
666
666
  onPanelChange: PropTypes.func,
667
- focusRecordsRef: PropTypes.object
667
+ focusRecordsRef: PropTypes.object,
668
+ triggerRender: PropTypes.func
668
669
  };
669
670
  MonthsGrid.defaultProps = {
670
671
  type: 'date',
@@ -73,7 +73,9 @@ class DropdownItem extends BaseComponent {
73
73
  }, icon);
74
74
  }
75
75
 
76
- return /*#__PURE__*/React.createElement("li", _Object$assign({}, events, {
76
+ return /*#__PURE__*/React.createElement("li", _Object$assign({
77
+ role: "menuitem"
78
+ }, events, {
77
79
  ref: ref => forwardRef(ref),
78
80
  className: itemclass,
79
81
  style: style
@@ -30,7 +30,10 @@ class DropdownMenu extends BaseComponent {
30
30
  } = _a,
31
31
  rest = __rest(_a, ["children", "className", "style"]);
32
32
 
33
- return /*#__PURE__*/React.createElement("ul", _Object$assign({}, rest, {
33
+ return /*#__PURE__*/React.createElement("ul", _Object$assign({
34
+ role: "menu",
35
+ "aria-orientation": "vertical"
36
+ }, rest, {
34
37
  className: classnames("".concat(prefixCls, "-menu"), className),
35
38
  style: style
36
39
  }), children);
@@ -12,11 +12,18 @@ export { DropdownDividerProps } from './dropdownDivider';
12
12
  export { DropdownItemProps, Type } from './dropdownItem';
13
13
  export { DropdownMenuProps } from './dropdownMenu';
14
14
  export { DropdownTitleProps } from './dropdownTitle';
15
- export interface DropDownMenuItemBasic {
16
- node: 'title' | 'item' | 'divider';
15
+ export interface DropDownMenuItemItem extends DropdownItemProps {
16
+ node: 'item';
17
17
  name?: string;
18
18
  }
19
- export declare type DropDownMenuItem = DropDownMenuItemBasic & DropdownItemProps & DropdownDividerProps & DropdownTitleProps;
19
+ export interface DropDownMenuItemDivider extends DropdownDividerProps {
20
+ node: 'divider';
21
+ }
22
+ export interface DropDownMenuItemTitle extends DropdownTitleProps {
23
+ node: 'title';
24
+ name?: string;
25
+ }
26
+ export declare type DropDownMenuItem = DropDownMenuItemItem | DropDownMenuItemDivider | DropDownMenuItemTitle;
20
27
  export interface DropdownProps extends TooltipProps {
21
28
  render?: React.ReactNode;
22
29
  children?: React.ReactNode;
@@ -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;
@@ -220,6 +220,7 @@ class Form extends BaseComponent {
220
220
  }
221
221
 
222
222
  Form.propTypes = {
223
+ 'aria-label': PropTypes.string,
223
224
  onSubmit: PropTypes.func,
224
225
  onSubmitFail: PropTypes.func,
225
226
 
@@ -245,7 +246,8 @@ Form.propTypes = {
245
246
  autoScrollToError: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
246
247
  disabled: PropTypes.bool,
247
248
  showValidateIcon: PropTypes.bool,
248
- extraTextPosition: PropTypes.oneOf(strings.EXTRA_POS)
249
+ extraTextPosition: PropTypes.oneOf(strings.EXTRA_POS),
250
+ id: PropTypes.string
249
251
  };
250
252
  Form.defaultProps = {
251
253
  onChange: _noop,
@@ -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;
@@ -10,12 +10,27 @@ import { IconAlertTriangle, IconAlertCircle } from '@douyinfe/semi-icons';
10
10
  const prefix = cssClasses.PREFIX;
11
11
  export default class ErrorMessage extends PureComponent {
12
12
  generatorText(error) {
13
+ const {
14
+ helpTextId,
15
+ errorMessageId
16
+ } = this.props;
17
+ const propsError = this.props.error;
18
+ let id = errorMessageId;
19
+
20
+ if (!propsError) {
21
+ id = helpTextId;
22
+ }
23
+
13
24
  if (typeof error === 'string') {
14
- return /*#__PURE__*/React.createElement("span", null, error);
25
+ return /*#__PURE__*/React.createElement("span", {
26
+ id: id
27
+ }, error);
15
28
  } else if (_Array$isArray(error)) {
16
29
  const err = _filterInstanceProperty(error).call(error, e => e);
17
30
 
18
- return err.length ? /*#__PURE__*/React.createElement("span", null, err.join(', ')) : null;
31
+ return err.length ? /*#__PURE__*/React.createElement("span", {
32
+ id: id
33
+ }, err.join(', ')) : null;
19
34
  } else if ( /*#__PURE__*/React.isValidElement(error)) {
20
35
  return error;
21
36
  }
@@ -76,5 +91,8 @@ ErrorMessage.propTypes = {
76
91
  validateStatus: PropTypes.string,
77
92
  showValidateIcon: PropTypes.bool,
78
93
  helpText: PropTypes.node,
79
- isInInputGroup: PropTypes.bool
94
+ isInInputGroup: PropTypes.bool,
95
+ // internal props
96
+ errorMessageId: PropTypes.string,
97
+ helpTextId: PropTypes.string
80
98
  };
@@ -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;
@@ -60,6 +60,7 @@ function withField(Component, opts) {
60
60
  extraText,
61
61
  extraTextPosition,
62
62
  pure,
63
+ id,
63
64
  rest
64
65
  } = mergeProps(props);
65
66
  let {
@@ -396,27 +397,62 @@ function withField(Component, opts) {
396
397
  let mergeLabelAlign = labelAlign || formProps.labelAlign;
397
398
  let mergeLabelCol = labelCol || formProps.labelCol;
398
399
  let mergeWrapperCol = wrapperCol || formProps.wrapperCol;
399
- let mergeExtraPos = extraTextPosition || formProps.extraTextPosition || 'bottom';
400
+ let mergeExtraPos = extraTextPosition || formProps.extraTextPosition || 'bottom'; // id attribute to improve a11y
401
+
402
+ const a11yId = id ? id : field;
403
+ const labelId = "".concat(a11yId, "-label");
404
+ const helpTextId = "".concat(a11yId, "-helpText");
405
+ const extraTextId = "".concat(a11yId, "-extraText");
406
+ const errorMessageId = "".concat(a11yId, "-errormessage");
400
407
 
401
408
  let FieldComponent = (() => {
402
- var _context, _context3;
409
+ var _context3, _context5;
403
410
 
404
411
  // prefer to use validateStatus which pass by user throught props
405
412
  let blockStatus = validateStatus ? validateStatus : status;
413
+ const extraCls = classNames("".concat(prefix, "-field-extra"), {
414
+ ["".concat(prefix, "-field-extra-string")]: typeof extraText === 'string',
415
+ ["".concat(prefix, "-field-extra-middle")]: mergeExtraPos === 'middle',
416
+ ["".concat(prefix, "-field-extra-botttom")]: mergeExtraPos === 'bottom'
417
+ });
418
+ const extraContent = extraText ? /*#__PURE__*/React.createElement("div", {
419
+ className: extraCls,
420
+ id: extraTextId
421
+ }, extraText) : null;
406
422
 
407
423
  let newProps = _Object$assign(_Object$assign({
424
+ id: a11yId,
408
425
  disabled: formProps.disabled
409
426
  }, rest), {
410
427
  ref,
411
428
  onBlur: handleBlur,
412
429
  [options.onKeyChangeFnName]: handleChange,
413
430
  [options.valueKey]: value,
414
- validateStatus: blockStatus
431
+ validateStatus: blockStatus,
432
+ 'aria-required': required,
433
+ 'aria-labelledby': labelId
415
434
  });
416
435
 
436
+ if (helpText) {
437
+ var _context;
438
+
439
+ newProps['aria-describedby'] = extraText ? _concatInstanceProperty(_context = "".concat(helpTextId, " ")).call(_context, extraTextId) : helpTextId;
440
+ }
441
+
442
+ if (extraText) {
443
+ var _context2;
444
+
445
+ newProps['aria-describedby'] = helpText ? _concatInstanceProperty(_context2 = "".concat(helpTextId, " ")).call(_context2, extraTextId) : extraTextId;
446
+ }
447
+
448
+ if (status === 'error') {
449
+ newProps['aria-errormessage'] = errorMessageId;
450
+ newProps['aria-invalid'] = true;
451
+ }
452
+
417
453
  const fieldCls = classNames({
418
454
  ["".concat(prefix, "-field")]: true,
419
- [_concatInstanceProperty(_context = "".concat(prefix, "-field-")).call(_context, name)]: Boolean(name),
455
+ [_concatInstanceProperty(_context3 = "".concat(prefix, "-field-")).call(_context3, name)]: Boolean(name),
420
456
  [fieldClassName]: Boolean(fieldClassName)
421
457
  });
422
458
  const fieldMaincls = classNames({
@@ -425,9 +461,11 @@ function withField(Component, opts) {
425
461
 
426
462
  if (mergeLabelPos === 'inset' && !noLabel) {
427
463
  newProps.insetLabel = label || field;
464
+ newProps.insetLabelId = labelId;
428
465
 
429
466
  if (typeof label === 'object' && !isElement(label)) {
430
467
  newProps.insetLabel = label.text;
468
+ newProps.insetLabelId = labelId;
431
469
  }
432
470
  }
433
471
 
@@ -438,11 +476,11 @@ function withField(Component, opts) {
438
476
  }
439
477
 
440
478
  if (pure) {
441
- var _context2;
479
+ var _context4;
442
480
 
443
481
  let pureCls = classNames(rest.className, {
444
482
  ["".concat(prefix, "-field-pure")]: true,
445
- [_concatInstanceProperty(_context2 = "".concat(prefix, "-field-")).call(_context2, name)]: Boolean(name),
483
+ [_concatInstanceProperty(_context4 = "".concat(prefix, "-field-")).call(_context4, name)]: Boolean(name),
446
484
  [fieldClassName]: Boolean(fieldClassName)
447
485
  });
448
486
  newProps.className = pureCls;
@@ -450,7 +488,7 @@ function withField(Component, opts) {
450
488
  }
451
489
 
452
490
  let withCol = mergeLabelCol && mergeWrapperCol;
453
- const labelColCls = mergeLabelAlign ? _concatInstanceProperty(_context3 = "".concat(prefix, "-col-")).call(_context3, mergeLabelAlign) : ''; // get label
491
+ const labelColCls = mergeLabelAlign ? _concatInstanceProperty(_context5 = "".concat(prefix, "-col-")).call(_context5, mergeLabelAlign) : ''; // get label
454
492
 
455
493
  let labelContent = null;
456
494
 
@@ -458,6 +496,7 @@ function withField(Component, opts) {
458
496
  let needSpread = typeof label === 'object' && !isElement(label) ? label : {};
459
497
  labelContent = /*#__PURE__*/React.createElement(Label, _Object$assign({
460
498
  text: label || field,
499
+ id: labelId,
461
500
  required: required,
462
501
  name: name || field,
463
502
  width: mergeLabelWidth,
@@ -465,20 +504,14 @@ function withField(Component, opts) {
465
504
  }, needSpread));
466
505
  }
467
506
 
468
- const extraCls = classNames("".concat(prefix, "-field-extra"), {
469
- ["".concat(prefix, "-field-extra-string")]: typeof extraText === 'string',
470
- ["".concat(prefix, "-field-extra-middle")]: mergeExtraPos === 'middle',
471
- ["".concat(prefix, "-field-extra-botttom")]: mergeExtraPos === 'bottom'
472
- });
473
- const extraContent = extraText ? /*#__PURE__*/React.createElement("div", {
474
- className: extraCls
475
- }, extraText) : null;
476
507
  const fieldMainContent = /*#__PURE__*/React.createElement("div", {
477
508
  className: fieldMaincls
478
509
  }, mergeExtraPos === 'middle' ? extraContent : null, com, !noErrorMessage ? /*#__PURE__*/React.createElement(ErrorMessage, {
479
510
  error: error,
480
511
  validateStatus: blockStatus,
481
512
  helpText: helpText,
513
+ helpTextId: helpTextId,
514
+ errorMessageId: errorMessageId,
482
515
  showValidateIcon: formProps.showValidateIcon
483
516
  }) : null, mergeExtraPos === 'bottom' ? extraContent : null);
484
517
  const withColContent = /*#__PURE__*/React.createElement(React.Fragment, null, mergeLabelPos === 'top' ? /*#__PURE__*/React.createElement("div", {
@@ -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';
@@ -14,6 +14,5 @@ import { useFormApi, useFormState, useFieldState, useFieldApi } from './hooks/in
14
14
  import withField from './hoc/withField';
15
15
  import withFormState from './hoc/withFormState';
16
16
  import withFormApi from './hoc/withFormApi';
17
- export * from './interface';
18
17
  export { Form, ArrayField, withField, useFormApi, useFormState, useFieldApi, useFieldState, withFormState, withFormApi };
19
18
  export * from './interface';
@@ -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>;
@@ -15,7 +15,8 @@ export default class Label extends PureComponent {
15
15
  align,
16
16
  style,
17
17
  className,
18
- extra
18
+ extra,
19
+ id
19
20
  } = this.props;
20
21
  const labelCls = classNames(className, {
21
22
  ["".concat(prefixCls, "-field-label")]: true,
@@ -36,7 +37,8 @@ export default class Label extends PureComponent {
36
37
  return /*#__PURE__*/React.createElement("label", {
37
38
  className: labelCls,
38
39
  htmlFor: name,
39
- style: labelStyle
40
+ style: labelStyle,
41
+ id: id
40
42
  }, extra ? contentWithExtra : textContent);
41
43
  }
42
44
 
@@ -48,6 +50,7 @@ Label.defaultProps = {
48
50
  className: ''
49
51
  };
50
52
  Label.propTypes = {
53
+ id: PropTypes.string,
51
54
  children: PropTypes.node,
52
55
  required: PropTypes.bool,
53
56
  text: PropTypes.node,
@@ -9,6 +9,12 @@ export declare type InputSize = 'small' | 'large' | 'default';
9
9
  export declare type InputMode = 'password';
10
10
  export declare type ValidateStatus = "default" | "error" | "warning" | "success";
11
11
  export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'onChange' | 'prefix' | 'size' | 'autoFocus' | 'placeholder' | 'onFocus' | 'onBlur'> {
12
+ 'aria-label'?: React.AriaAttributes['aria-label'];
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'];
12
18
  addonBefore?: React.ReactNode;
13
19
  addonAfter?: React.ReactNode;
14
20
  prefix?: React.ReactNode;
@@ -24,6 +30,7 @@ export interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElem
24
30
  hideSuffix?: boolean;
25
31
  placeholder?: React.ReactText;
26
32
  insetLabel?: React.ReactNode;
33
+ insetLabelId?: string;
27
34
  size?: InputSize;
28
35
  className?: string;
29
36
  style?: React.CSSProperties;
@@ -54,6 +61,12 @@ export interface InputState {
54
61
  }
55
62
  declare class Input extends BaseComponent<InputProps, InputState> {
56
63
  static propTypes: {
64
+ 'aria-label': PropTypes.Requireable<string>;
65
+ 'aria-labelledby': PropTypes.Requireable<string>;
66
+ 'aria-invalid': PropTypes.Requireable<boolean>;
67
+ 'aria-errormessage': PropTypes.Requireable<string>;
68
+ 'aria-describedby': PropTypes.Requireable<string>;
69
+ 'aria-required': PropTypes.Requireable<boolean>;
57
70
  addonBefore: PropTypes.Requireable<PropTypes.ReactNodeLike>;
58
71
  addonAfter: PropTypes.Requireable<PropTypes.ReactNodeLike>;
59
72
  prefix: PropTypes.Requireable<PropTypes.ReactNodeLike>;
@@ -82,6 +95,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
82
95
  onKeyPress: PropTypes.Requireable<(...args: any[]) => any>;
83
96
  onEnterPress: PropTypes.Requireable<(...args: any[]) => any>;
84
97
  insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
98
+ insetLabelId: PropTypes.Requireable<string>;
85
99
  inputStyle: PropTypes.Requireable<object>;
86
100
  getValueLength: PropTypes.Requireable<(...args: any[]) => any>;
87
101
  };
@@ -147,6 +161,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
147
161
  static getDerivedStateFromProps(props: InputProps, state: InputState): Partial<InputState>;
148
162
  componentDidUpdate(prevProps: InputProps): void;
149
163
  handleClear: (e: React.MouseEvent<HTMLInputElement>) => void;
164
+ handleClearEnterPress: (e: React.KeyboardEvent<HTMLDivElement>) => void;
150
165
  handleClick: (e: React.MouseEvent<HTMLDivElement>) => void;
151
166
  handleMouseOver: (e: React.MouseEvent<HTMLDivElement>) => void;
152
167
  handleMouseLeave: (e: React.MouseEvent<HTMLDivElement>) => void;
@@ -154,6 +169,7 @@ declare class Input extends BaseComponent<InputProps, InputState> {
154
169
  handleClickEye: (e: React.MouseEvent<HTMLInputElement>) => void;
155
170
  handleMouseDown: (e: React.MouseEvent<HTMLInputElement>) => void;
156
171
  handleMouseUp: (e: React.MouseEvent<HTMLInputElement>) => void;
172
+ handleModeEnterPress: (e: React.KeyboardEvent<HTMLDivElement>) => void;
157
173
  handleClickPrefixOrSuffix: (e: React.MouseEvent<HTMLInputElement>) => void;
158
174
  handlePreventMouseDown: (e: React.MouseEvent<HTMLInputElement>) => void;
159
175
  renderPrepend(): JSX.Element;