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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/_base/_story/a11y.jsx +6 -6
  2. package/_base/_story/a11y.scss +0 -1
  3. package/_base/_story/index.scss +2 -5
  4. package/_utils/hooks/usePrevFocus.ts +16 -0
  5. package/_utils/index.ts +4 -0
  6. package/anchor/_story/anchor.stories.js +1 -1
  7. package/anchor/index.tsx +5 -2
  8. package/anchor/link.tsx +29 -4
  9. package/autoComplete/index.tsx +28 -1
  10. package/avatar/_story/avatar.stories.js +4 -4
  11. package/avatar/index.tsx +6 -4
  12. package/banner/index.tsx +2 -1
  13. package/breadcrumb/_story/breadcrumb.stories.js +22 -8
  14. package/breadcrumb/index.tsx +8 -1
  15. package/breadcrumb/item.tsx +1 -1
  16. package/button/Button.tsx +4 -0
  17. package/button/__test__/button.test.js +1 -1
  18. package/button/_story/button.stories.js +10 -10
  19. package/button/buttonGroup.tsx +4 -2
  20. package/button/splitButtonGroup.tsx +5 -2
  21. package/card/_story/card.stories.js +8 -1
  22. package/card/_story/card.stories.tsx +3 -0
  23. package/card/index.tsx +5 -2
  24. package/cascader/index.tsx +33 -5
  25. package/checkbox/_story/checkbox.stories.js +19 -12
  26. package/checkbox/checkbox.tsx +40 -5
  27. package/checkbox/checkboxGroup.tsx +30 -5
  28. package/checkbox/checkboxInner.tsx +25 -2
  29. package/collapse/index.tsx +1 -1
  30. package/collapse/item.tsx +12 -7
  31. package/collapsible/index.tsx +4 -2
  32. package/configProvider/_story/configProvider.stories.tsx +27 -0
  33. package/datePicker/datePicker.tsx +19 -0
  34. package/dist/css/semi.css +23 -12
  35. package/dist/css/semi.min.css +1 -1
  36. package/dist/umd/semi-ui.js +2502 -1249
  37. package/dist/umd/semi-ui.js.map +1 -1
  38. package/dist/umd/semi-ui.min.js +1 -1
  39. package/dist/umd/semi-ui.min.js.map +1 -1
  40. package/dropdown/dropdownItem.tsx +1 -1
  41. package/dropdown/dropdownMenu.tsx +1 -1
  42. package/dropdown/index.tsx +11 -3
  43. package/empty/index.tsx +4 -4
  44. package/form/_story/FormApi/formApiDemo.jsx +3 -2
  45. package/form/_story/Validate/validateDemo.jsx +1 -1
  46. package/form/_story/demo.jsx +12 -3
  47. package/form/_story/form.stories.js +0 -7
  48. package/form/baseForm.tsx +2 -0
  49. package/form/errorMessage.tsx +13 -2
  50. package/form/hoc/withField.tsx +37 -8
  51. package/form/index.tsx +0 -2
  52. package/form/interface.ts +2 -0
  53. package/form/label.tsx +4 -2
  54. package/input/index.tsx +49 -4
  55. package/input/inputGroup.tsx +9 -4
  56. package/input/textarea.tsx +30 -9
  57. package/inputNumber/__test__/inputNumber.test.js +36 -8
  58. package/inputNumber/index.tsx +30 -2
  59. package/layout/Sider.tsx +6 -2
  60. package/layout/index.tsx +4 -3
  61. package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
  62. package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
  63. package/lib/cjs/_utils/index.d.ts +1 -0
  64. package/lib/cjs/_utils/index.js +6 -1
  65. package/lib/cjs/anchor/index.d.ts +2 -0
  66. package/lib/cjs/anchor/index.js +6 -1
  67. package/lib/cjs/anchor/link.d.ts +4 -1
  68. package/lib/cjs/anchor/link.js +39 -5
  69. package/lib/cjs/autoComplete/index.d.ts +17 -0
  70. package/lib/cjs/autoComplete/index.js +21 -2
  71. package/lib/cjs/avatar/index.d.ts +4 -3
  72. package/lib/cjs/avatar/index.js +15 -11
  73. package/lib/cjs/banner/index.js +4 -2
  74. package/lib/cjs/breadcrumb/index.d.ts +3 -0
  75. package/lib/cjs/breadcrumb/index.js +10 -4
  76. package/lib/cjs/breadcrumb/item.js +2 -2
  77. package/lib/cjs/button/Button.d.ts +2 -0
  78. package/lib/cjs/button/Button.js +4 -2
  79. package/lib/cjs/button/buttonGroup.d.ts +3 -0
  80. package/lib/cjs/button/buttonGroup.js +8 -4
  81. package/lib/cjs/button/index.d.ts +1 -0
  82. package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
  83. package/lib/cjs/button/splitButtonGroup.js +5 -2
  84. package/lib/cjs/card/index.d.ts +3 -0
  85. package/lib/cjs/card/index.js +3 -1
  86. package/lib/cjs/cascader/index.d.ts +14 -0
  87. package/lib/cjs/cascader/index.js +35 -7
  88. package/lib/cjs/checkbox/checkbox.d.ts +21 -1
  89. package/lib/cjs/checkbox/checkbox.js +51 -17
  90. package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
  91. package/lib/cjs/checkbox/checkboxGroup.js +16 -3
  92. package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
  93. package/lib/cjs/checkbox/checkboxInner.js +20 -3
  94. package/lib/cjs/collapse/item.d.ts +2 -1
  95. package/lib/cjs/collapse/item.js +12 -2
  96. package/lib/cjs/collapsible/index.d.ts +1 -0
  97. package/lib/cjs/collapsible/index.js +4 -2
  98. package/lib/cjs/datePicker/datePicker.d.ts +12 -0
  99. package/lib/cjs/datePicker/datePicker.js +14 -1
  100. package/lib/cjs/dropdown/dropdownItem.js +3 -1
  101. package/lib/cjs/dropdown/dropdownMenu.js +4 -1
  102. package/lib/cjs/dropdown/index.d.ts +10 -3
  103. package/lib/cjs/form/baseForm.d.ts +9 -0
  104. package/lib/cjs/form/baseForm.js +3 -1
  105. package/lib/cjs/form/errorMessage.d.ts +4 -0
  106. package/lib/cjs/form/errorMessage.js +21 -3
  107. package/lib/cjs/form/field.d.ts +7 -0
  108. package/lib/cjs/form/hoc/withField.js +49 -16
  109. package/lib/cjs/form/index.d.ts +0 -1
  110. package/lib/cjs/form/interface.d.ts +2 -0
  111. package/lib/cjs/form/label.d.ts +2 -0
  112. package/lib/cjs/form/label.js +5 -2
  113. package/lib/cjs/input/index.d.ts +16 -0
  114. package/lib/cjs/input/index.js +51 -15
  115. package/lib/cjs/input/inputGroup.d.ts +2 -1
  116. package/lib/cjs/input/inputGroup.js +11 -1
  117. package/lib/cjs/input/textarea.js +16 -3
  118. package/lib/cjs/inputNumber/index.d.ts +8 -0
  119. package/lib/cjs/inputNumber/index.js +35 -4
  120. package/lib/cjs/layout/Sider.d.ts +4 -0
  121. package/lib/cjs/layout/Sider.js +4 -1
  122. package/lib/cjs/layout/index.js +2 -0
  123. package/lib/cjs/list/index.d.ts +4 -4
  124. package/lib/cjs/list/item.js +0 -1
  125. package/lib/cjs/modal/Modal.js +2 -0
  126. package/lib/cjs/modal/ModalContent.d.ts +3 -1
  127. package/lib/cjs/modal/ModalContent.js +47 -5
  128. package/lib/cjs/navigation/Item.d.ts +4 -2
  129. package/lib/cjs/navigation/Item.js +25 -5
  130. package/lib/cjs/navigation/SubNav.d.ts +4 -2
  131. package/lib/cjs/navigation/SubNav.js +8 -1
  132. package/lib/cjs/navigation/index.js +2 -0
  133. package/lib/cjs/notification/notice.d.ts +1 -1
  134. package/lib/cjs/notification/notice.js +32 -22
  135. package/lib/cjs/pagination/index.js +16 -6
  136. package/lib/cjs/popover/index.js +7 -3
  137. package/lib/cjs/progress/index.d.ts +8 -0
  138. package/lib/cjs/progress/index.js +42 -9
  139. package/lib/cjs/radio/radio.d.ts +6 -1
  140. package/lib/cjs/radio/radio.js +17 -5
  141. package/lib/cjs/radio/radioGroup.d.ts +16 -1
  142. package/lib/cjs/radio/radioGroup.js +18 -3
  143. package/lib/cjs/radio/radioInner.d.ts +6 -1
  144. package/lib/cjs/radio/radioInner.js +11 -3
  145. package/lib/cjs/rating/index.d.ts +14 -0
  146. package/lib/cjs/rating/index.js +14 -3
  147. package/lib/cjs/rating/item.d.ts +2 -0
  148. package/lib/cjs/rating/item.js +6 -1
  149. package/lib/cjs/select/index.d.ts +16 -0
  150. package/lib/cjs/select/index.js +65 -19
  151. package/lib/cjs/select/option.js +28 -22
  152. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  153. package/lib/cjs/sideSheet/SideSheetContent.js +4 -1
  154. package/lib/cjs/sideSheet/index.d.ts +1 -0
  155. package/lib/cjs/sideSheet/index.js +2 -1
  156. package/lib/cjs/slider/index.d.ts +2 -1
  157. package/lib/cjs/slider/index.js +64 -17
  158. package/lib/cjs/spin/icon.js +3 -4
  159. package/lib/cjs/steps/basicStep.d.ts +3 -0
  160. package/lib/cjs/steps/basicStep.js +23 -25
  161. package/lib/cjs/steps/basicSteps.d.ts +1 -0
  162. package/lib/cjs/steps/basicSteps.js +2 -1
  163. package/lib/cjs/steps/fillStep.d.ts +3 -0
  164. package/lib/cjs/steps/fillStep.js +19 -4
  165. package/lib/cjs/steps/fillSteps.d.ts +1 -0
  166. package/lib/cjs/steps/fillSteps.js +2 -1
  167. package/lib/cjs/steps/navStep.d.ts +3 -0
  168. package/lib/cjs/steps/navStep.js +22 -25
  169. package/lib/cjs/steps/navSteps.d.ts +1 -0
  170. package/lib/cjs/steps/navSteps.js +2 -1
  171. package/lib/cjs/switch/index.d.ts +12 -0
  172. package/lib/cjs/switch/index.js +19 -4
  173. package/lib/cjs/table/Body/BaseRow.js +35 -3
  174. package/lib/cjs/table/Body/index.js +9 -1
  175. package/lib/cjs/table/ColumnFilter.js +4 -0
  176. package/lib/cjs/table/ColumnSelection.d.ts +3 -0
  177. package/lib/cjs/table/ColumnSelection.js +6 -2
  178. package/lib/cjs/table/ColumnSorter.js +19 -3
  179. package/lib/cjs/table/CustomExpandIcon.js +7 -1
  180. package/lib/cjs/table/Table.d.ts +2 -0
  181. package/lib/cjs/table/Table.js +35 -15
  182. package/lib/cjs/table/TableCell.d.ts +2 -0
  183. package/lib/cjs/table/TableCell.js +6 -2
  184. package/lib/cjs/table/TableHeaderRow.js +8 -2
  185. package/lib/cjs/tabs/TabBar.js +11 -3
  186. package/lib/cjs/tabs/TabPane.js +3 -1
  187. package/lib/cjs/tabs/index.js +0 -1
  188. package/lib/cjs/tagInput/index.d.ts +4 -1
  189. package/lib/cjs/tagInput/index.js +29 -3
  190. package/lib/cjs/timePicker/TimePicker.d.ts +14 -0
  191. package/lib/cjs/timePicker/TimePicker.js +11 -4
  192. package/lib/cjs/timePicker/index.d.ts +7 -0
  193. package/lib/cjs/timeline/index.d.ts +1 -1
  194. package/lib/cjs/timeline/index.js +1 -0
  195. package/lib/cjs/timeline/item.js +4 -2
  196. package/lib/cjs/toast/toast.js +2 -0
  197. package/lib/cjs/tooltip/TriangleArrow.js +1 -0
  198. package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
  199. package/lib/cjs/tooltip/index.d.ts +16 -12
  200. package/lib/cjs/tooltip/index.js +55 -39
  201. package/lib/cjs/transfer/index.js +32 -14
  202. package/lib/cjs/tree/index.d.ts +1 -0
  203. package/lib/cjs/tree/index.js +15 -6
  204. package/lib/cjs/tree/treeNode.d.ts +12 -4
  205. package/lib/cjs/tree/treeNode.js +54 -5
  206. package/lib/cjs/treeSelect/index.d.ts +16 -0
  207. package/lib/cjs/treeSelect/index.js +60 -12
  208. package/lib/cjs/typography/base.js +18 -7
  209. package/lib/cjs/typography/copyable.js +6 -1
  210. package/lib/cjs/upload/fileCard.js +26 -7
  211. package/lib/cjs/upload/index.js +19 -4
  212. package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
  213. package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
  214. package/lib/es/_utils/index.d.ts +1 -0
  215. package/lib/es/_utils/index.js +4 -1
  216. package/lib/es/anchor/index.d.ts +2 -0
  217. package/lib/es/anchor/index.js +6 -1
  218. package/lib/es/anchor/link.d.ts +4 -1
  219. package/lib/es/anchor/link.js +38 -5
  220. package/lib/es/autoComplete/index.d.ts +17 -0
  221. package/lib/es/autoComplete/index.js +21 -2
  222. package/lib/es/avatar/index.d.ts +4 -3
  223. package/lib/es/avatar/index.js +15 -11
  224. package/lib/es/banner/index.js +4 -2
  225. package/lib/es/breadcrumb/index.d.ts +3 -0
  226. package/lib/es/breadcrumb/index.js +10 -4
  227. package/lib/es/breadcrumb/item.js +2 -2
  228. package/lib/es/button/Button.d.ts +2 -0
  229. package/lib/es/button/Button.js +4 -2
  230. package/lib/es/button/buttonGroup.d.ts +3 -0
  231. package/lib/es/button/buttonGroup.js +8 -4
  232. package/lib/es/button/index.d.ts +1 -0
  233. package/lib/es/button/splitButtonGroup.d.ts +3 -0
  234. package/lib/es/button/splitButtonGroup.js +5 -2
  235. package/lib/es/card/index.d.ts +3 -0
  236. package/lib/es/card/index.js +3 -1
  237. package/lib/es/cascader/index.d.ts +14 -0
  238. package/lib/es/cascader/index.js +35 -7
  239. package/lib/es/checkbox/checkbox.d.ts +21 -1
  240. package/lib/es/checkbox/checkbox.js +50 -17
  241. package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
  242. package/lib/es/checkbox/checkboxGroup.js +18 -5
  243. package/lib/es/checkbox/checkboxInner.d.ts +15 -0
  244. package/lib/es/checkbox/checkboxInner.js +20 -3
  245. package/lib/es/collapse/item.d.ts +2 -1
  246. package/lib/es/collapse/item.js +11 -2
  247. package/lib/es/collapsible/index.d.ts +1 -0
  248. package/lib/es/collapsible/index.js +4 -2
  249. package/lib/es/datePicker/datePicker.d.ts +12 -0
  250. package/lib/es/datePicker/datePicker.js +14 -1
  251. package/lib/es/dropdown/dropdownItem.js +3 -1
  252. package/lib/es/dropdown/dropdownMenu.js +4 -1
  253. package/lib/es/dropdown/index.d.ts +10 -3
  254. package/lib/es/form/baseForm.d.ts +9 -0
  255. package/lib/es/form/baseForm.js +3 -1
  256. package/lib/es/form/errorMessage.d.ts +4 -0
  257. package/lib/es/form/errorMessage.js +21 -3
  258. package/lib/es/form/field.d.ts +7 -0
  259. package/lib/es/form/hoc/withField.js +48 -15
  260. package/lib/es/form/index.d.ts +0 -1
  261. package/lib/es/form/index.js +0 -1
  262. package/lib/es/form/interface.d.ts +2 -0
  263. package/lib/es/form/label.d.ts +2 -0
  264. package/lib/es/form/label.js +5 -2
  265. package/lib/es/input/index.d.ts +16 -0
  266. package/lib/es/input/index.js +51 -15
  267. package/lib/es/input/inputGroup.d.ts +2 -1
  268. package/lib/es/input/inputGroup.js +11 -1
  269. package/lib/es/input/textarea.js +16 -3
  270. package/lib/es/inputNumber/index.d.ts +8 -0
  271. package/lib/es/inputNumber/index.js +36 -4
  272. package/lib/es/layout/Sider.d.ts +4 -0
  273. package/lib/es/layout/Sider.js +4 -1
  274. package/lib/es/layout/index.js +2 -0
  275. package/lib/es/list/index.d.ts +4 -4
  276. package/lib/es/list/item.js +0 -1
  277. package/lib/es/modal/Modal.js +2 -0
  278. package/lib/es/modal/ModalContent.d.ts +3 -1
  279. package/lib/es/modal/ModalContent.js +46 -5
  280. package/lib/es/navigation/Item.d.ts +4 -2
  281. package/lib/es/navigation/Item.js +25 -5
  282. package/lib/es/navigation/SubNav.d.ts +4 -2
  283. package/lib/es/navigation/SubNav.js +8 -1
  284. package/lib/es/navigation/index.js +2 -0
  285. package/lib/es/notification/notice.d.ts +1 -1
  286. package/lib/es/notification/notice.js +33 -24
  287. package/lib/es/pagination/index.js +16 -6
  288. package/lib/es/popover/index.js +7 -3
  289. package/lib/es/progress/index.d.ts +8 -0
  290. package/lib/es/progress/index.js +42 -9
  291. package/lib/es/radio/radio.d.ts +6 -1
  292. package/lib/es/radio/radio.js +16 -5
  293. package/lib/es/radio/radioGroup.d.ts +16 -1
  294. package/lib/es/radio/radioGroup.js +18 -3
  295. package/lib/es/radio/radioInner.d.ts +6 -1
  296. package/lib/es/radio/radioInner.js +11 -3
  297. package/lib/es/rating/index.d.ts +14 -0
  298. package/lib/es/rating/index.js +14 -3
  299. package/lib/es/rating/item.d.ts +2 -0
  300. package/lib/es/rating/item.js +6 -1
  301. package/lib/es/select/index.d.ts +16 -0
  302. package/lib/es/select/index.js +63 -17
  303. package/lib/es/select/option.js +28 -22
  304. package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
  305. package/lib/es/sideSheet/SideSheetContent.js +4 -1
  306. package/lib/es/sideSheet/index.d.ts +1 -0
  307. package/lib/es/sideSheet/index.js +2 -1
  308. package/lib/es/slider/index.d.ts +2 -1
  309. package/lib/es/slider/index.js +63 -16
  310. package/lib/es/spin/icon.js +3 -4
  311. package/lib/es/steps/basicStep.d.ts +3 -0
  312. package/lib/es/steps/basicStep.js +23 -23
  313. package/lib/es/steps/basicSteps.d.ts +1 -0
  314. package/lib/es/steps/basicSteps.js +2 -1
  315. package/lib/es/steps/fillStep.d.ts +3 -0
  316. package/lib/es/steps/fillStep.js +19 -4
  317. package/lib/es/steps/fillSteps.d.ts +1 -0
  318. package/lib/es/steps/fillSteps.js +2 -1
  319. package/lib/es/steps/navStep.d.ts +3 -0
  320. package/lib/es/steps/navStep.js +22 -23
  321. package/lib/es/steps/navSteps.d.ts +1 -0
  322. package/lib/es/steps/navSteps.js +2 -1
  323. package/lib/es/switch/index.d.ts +12 -0
  324. package/lib/es/switch/index.js +19 -4
  325. package/lib/es/table/Body/BaseRow.js +35 -3
  326. package/lib/es/table/Body/index.js +9 -2
  327. package/lib/es/table/ColumnFilter.js +4 -0
  328. package/lib/es/table/ColumnSelection.d.ts +3 -0
  329. package/lib/es/table/ColumnSelection.js +6 -2
  330. package/lib/es/table/ColumnSorter.js +17 -3
  331. package/lib/es/table/CustomExpandIcon.js +6 -1
  332. package/lib/es/table/Table.d.ts +2 -0
  333. package/lib/es/table/Table.js +35 -15
  334. package/lib/es/table/TableCell.d.ts +2 -0
  335. package/lib/es/table/TableCell.js +6 -2
  336. package/lib/es/table/TableHeaderRow.js +8 -2
  337. package/lib/es/tabs/TabBar.js +11 -3
  338. package/lib/es/tabs/TabPane.js +3 -1
  339. package/lib/es/tabs/index.js +0 -1
  340. package/lib/es/tagInput/index.d.ts +4 -1
  341. package/lib/es/tagInput/index.js +29 -3
  342. package/lib/es/timePicker/TimePicker.d.ts +14 -0
  343. package/lib/es/timePicker/TimePicker.js +11 -4
  344. package/lib/es/timePicker/index.d.ts +7 -0
  345. package/lib/es/timeline/index.d.ts +1 -1
  346. package/lib/es/timeline/index.js +1 -0
  347. package/lib/es/timeline/item.js +4 -2
  348. package/lib/es/toast/toast.js +2 -0
  349. package/lib/es/tooltip/TriangleArrow.js +1 -0
  350. package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
  351. package/lib/es/tooltip/index.d.ts +16 -12
  352. package/lib/es/tooltip/index.js +53 -39
  353. package/lib/es/transfer/index.js +32 -14
  354. package/lib/es/tree/index.d.ts +1 -0
  355. package/lib/es/tree/index.js +15 -6
  356. package/lib/es/tree/treeNode.d.ts +12 -4
  357. package/lib/es/tree/treeNode.js +53 -5
  358. package/lib/es/treeSelect/index.d.ts +16 -0
  359. package/lib/es/treeSelect/index.js +57 -10
  360. package/lib/es/typography/base.js +17 -7
  361. package/lib/es/typography/copyable.js +5 -1
  362. package/lib/es/upload/fileCard.js +26 -7
  363. package/lib/es/upload/index.js +19 -4
  364. package/list/index.tsx +5 -5
  365. package/list/item.tsx +0 -1
  366. package/modal/Modal.tsx +2 -0
  367. package/modal/ModalContent.tsx +35 -5
  368. package/navigation/Item.tsx +15 -0
  369. package/navigation/SubNav.tsx +13 -1
  370. package/navigation/index.tsx +1 -1
  371. package/notification/notice.tsx +19 -14
  372. package/package.json +8 -8
  373. package/pagination/index.tsx +9 -5
  374. package/popover/index.tsx +5 -0
  375. package/progress/_story/progress.stories.js +18 -18
  376. package/progress/index.tsx +58 -20
  377. package/radio/radio.tsx +12 -2
  378. package/radio/radioGroup.tsx +29 -3
  379. package/radio/radioInner.tsx +10 -1
  380. package/rating/index.tsx +19 -2
  381. package/rating/item.tsx +6 -0
  382. package/select/__test__/select.test.js +45 -0
  383. package/select/_story/select.stories.js +29 -0
  384. package/select/index.tsx +57 -4
  385. package/select/option.tsx +3 -0
  386. package/sideSheet/SideSheetContent.tsx +6 -4
  387. package/sideSheet/index.tsx +3 -2
  388. package/slider/__test__/slider.test.js +9 -0
  389. package/slider/_story/slider.stories.js +1 -1
  390. package/slider/index.tsx +44 -7
  391. package/spin/icon.tsx +4 -3
  392. package/steps/basicStep.tsx +15 -4
  393. package/steps/basicSteps.tsx +3 -2
  394. package/steps/fillStep.tsx +27 -12
  395. package/steps/fillSteps.tsx +2 -0
  396. package/steps/navStep.tsx +15 -4
  397. package/steps/navSteps.tsx +3 -2
  398. package/switch/_story/switch.stories.js +20 -19
  399. package/switch/_story/switch.stories.tsx +13 -13
  400. package/switch/index.tsx +23 -5
  401. package/table/Body/BaseRow.tsx +25 -1
  402. package/table/Body/index.tsx +7 -2
  403. package/table/ColumnFilter.tsx +7 -1
  404. package/table/ColumnSelection.tsx +4 -1
  405. package/table/ColumnSorter.tsx +18 -1
  406. package/table/CustomExpandIcon.tsx +5 -0
  407. package/table/Table.tsx +30 -14
  408. package/table/TableCell.tsx +11 -1
  409. package/table/TableHeaderRow.tsx +16 -2
  410. package/table/__test__/table.test.js +46 -0
  411. package/table/_story/table.stories.js +2 -0
  412. package/table/_story/v2/FixedColumnsChange/index.jsx +104 -0
  413. package/table/_story/v2/FixedZIndex/index.jsx +87 -0
  414. package/tabs/TabBar.tsx +8 -5
  415. package/tabs/TabPane.tsx +3 -1
  416. package/tabs/index.tsx +0 -1
  417. package/tagInput/__test__/tagInput.test.js +46 -0
  418. package/tagInput/_story/tagInput.stories.js +2 -2
  419. package/tagInput/index.tsx +31 -8
  420. package/timePicker/TimePicker.tsx +17 -2
  421. package/timePicker/__test__/timePicker.test.js +34 -3
  422. package/timePicker/_story/timepicker.stories.js +18 -0
  423. package/timeline/_story/timeline.stories.js +1 -1
  424. package/timeline/index.tsx +2 -2
  425. package/timeline/item.tsx +2 -1
  426. package/toast/toast.tsx +2 -0
  427. package/tooltip/TriangleArrow.tsx +1 -1
  428. package/tooltip/TriangleArrowVertical.tsx +1 -1
  429. package/tooltip/_story/tooltip.stories.js +562 -514
  430. package/tooltip/index.tsx +51 -33
  431. package/transfer/index.tsx +29 -25
  432. package/tree/_story/tree.stories.js +3 -3
  433. package/tree/index.tsx +10 -2
  434. package/tree/treeNode.tsx +54 -11
  435. package/treeSelect/__test__/treeMultiple.test.js +5 -0
  436. package/treeSelect/_story/treeSelect.stories.js +12 -0
  437. package/treeSelect/index.tsx +58 -7
  438. package/typography/base.tsx +7 -1
  439. package/typography/copyable.tsx +10 -1
  440. package/upload/fileCard.tsx +14 -16
  441. package/upload/index.tsx +10 -6
@@ -97,6 +97,7 @@ function withField(Component, opts) {
97
97
  extraText,
98
98
  extraTextPosition,
99
99
  pure,
100
+ id,
100
101
  rest
101
102
  } = (0, _utils.mergeProps)(props);
102
103
  let {
@@ -429,25 +430,61 @@ function withField(Component, opts) {
429
430
  let mergeLabelAlign = labelAlign || formProps.labelAlign;
430
431
  let mergeLabelCol = labelCol || formProps.labelCol;
431
432
  let mergeWrapperCol = wrapperCol || formProps.wrapperCol;
432
- let mergeExtraPos = extraTextPosition || formProps.extraTextPosition || 'bottom';
433
+ let mergeExtraPos = extraTextPosition || formProps.extraTextPosition || 'bottom'; // id attribute to improve a11y
434
+
435
+ const a11yId = id ? id : field;
436
+ const labelId = "".concat(a11yId, "-label");
437
+ const helpTextId = "".concat(a11yId, "-helpText");
438
+ const extraTextId = "".concat(a11yId, "-extraText");
439
+ const errorMessageId = "".concat(a11yId, "-errormessage");
433
440
 
434
441
  let FieldComponent = (() => {
435
- var _context, _context3;
442
+ var _context3, _context5;
436
443
 
437
444
  // prefer to use validateStatus which pass by user throught props
438
445
  let blockStatus = validateStatus ? validateStatus : status;
446
+ const extraCls = (0, _classnames.default)("".concat(prefix, "-field-extra"), {
447
+ ["".concat(prefix, "-field-extra-string")]: typeof extraText === 'string',
448
+ ["".concat(prefix, "-field-extra-middle")]: mergeExtraPos === 'middle',
449
+ ["".concat(prefix, "-field-extra-botttom")]: mergeExtraPos === 'bottom'
450
+ });
451
+ const extraContent = extraText ? /*#__PURE__*/_react.default.createElement("div", {
452
+ className: extraCls,
453
+ id: extraTextId
454
+ }, extraText) : null;
439
455
  let newProps = (0, _assign.default)((0, _assign.default)({
456
+ id: a11yId,
440
457
  disabled: formProps.disabled
441
458
  }, rest), {
442
459
  ref,
443
460
  onBlur: handleBlur,
444
461
  [options.onKeyChangeFnName]: handleChange,
445
462
  [options.valueKey]: value,
446
- validateStatus: blockStatus
463
+ validateStatus: blockStatus,
464
+ 'aria-required': required,
465
+ 'aria-labelledby': labelId
447
466
  });
467
+
468
+ if (helpText) {
469
+ var _context;
470
+
471
+ newProps['aria-describedby'] = extraText ? (0, _concat.default)(_context = "".concat(helpTextId, " ")).call(_context, extraTextId) : helpTextId;
472
+ }
473
+
474
+ if (extraText) {
475
+ var _context2;
476
+
477
+ newProps['aria-describedby'] = helpText ? (0, _concat.default)(_context2 = "".concat(helpTextId, " ")).call(_context2, extraTextId) : extraTextId;
478
+ }
479
+
480
+ if (status === 'error') {
481
+ newProps['aria-errormessage'] = errorMessageId;
482
+ newProps['aria-invalid'] = true;
483
+ }
484
+
448
485
  const fieldCls = (0, _classnames.default)({
449
486
  ["".concat(prefix, "-field")]: true,
450
- [(0, _concat.default)(_context = "".concat(prefix, "-field-")).call(_context, name)]: Boolean(name),
487
+ [(0, _concat.default)(_context3 = "".concat(prefix, "-field-")).call(_context3, name)]: Boolean(name),
451
488
  [fieldClassName]: Boolean(fieldClassName)
452
489
  });
453
490
  const fieldMaincls = (0, _classnames.default)({
@@ -456,9 +493,11 @@ function withField(Component, opts) {
456
493
 
457
494
  if (mergeLabelPos === 'inset' && !noLabel) {
458
495
  newProps.insetLabel = label || field;
496
+ newProps.insetLabelId = labelId;
459
497
 
460
498
  if (typeof label === 'object' && !(0, _reactUtils.isElement)(label)) {
461
499
  newProps.insetLabel = label.text;
500
+ newProps.insetLabelId = labelId;
462
501
  }
463
502
  }
464
503
 
@@ -470,11 +509,11 @@ function withField(Component, opts) {
470
509
  }
471
510
 
472
511
  if (pure) {
473
- var _context2;
512
+ var _context4;
474
513
 
475
514
  let pureCls = (0, _classnames.default)(rest.className, {
476
515
  ["".concat(prefix, "-field-pure")]: true,
477
- [(0, _concat.default)(_context2 = "".concat(prefix, "-field-")).call(_context2, name)]: Boolean(name),
516
+ [(0, _concat.default)(_context4 = "".concat(prefix, "-field-")).call(_context4, name)]: Boolean(name),
478
517
  [fieldClassName]: Boolean(fieldClassName)
479
518
  });
480
519
  newProps.className = pureCls;
@@ -482,7 +521,7 @@ function withField(Component, opts) {
482
521
  }
483
522
 
484
523
  let withCol = mergeLabelCol && mergeWrapperCol;
485
- const labelColCls = mergeLabelAlign ? (0, _concat.default)(_context3 = "".concat(prefix, "-col-")).call(_context3, mergeLabelAlign) : ''; // get label
524
+ const labelColCls = mergeLabelAlign ? (0, _concat.default)(_context5 = "".concat(prefix, "-col-")).call(_context5, mergeLabelAlign) : ''; // get label
486
525
 
487
526
  let labelContent = null;
488
527
 
@@ -490,6 +529,7 @@ function withField(Component, opts) {
490
529
  let needSpread = typeof label === 'object' && !(0, _reactUtils.isElement)(label) ? label : {};
491
530
  labelContent = /*#__PURE__*/_react.default.createElement(_label.default, (0, _assign.default)({
492
531
  text: label || field,
532
+ id: labelId,
493
533
  required: required,
494
534
  name: name || field,
495
535
  width: mergeLabelWidth,
@@ -497,21 +537,14 @@ function withField(Component, opts) {
497
537
  }, needSpread));
498
538
  }
499
539
 
500
- const extraCls = (0, _classnames.default)("".concat(prefix, "-field-extra"), {
501
- ["".concat(prefix, "-field-extra-string")]: typeof extraText === 'string',
502
- ["".concat(prefix, "-field-extra-middle")]: mergeExtraPos === 'middle',
503
- ["".concat(prefix, "-field-extra-botttom")]: mergeExtraPos === 'bottom'
504
- });
505
- const extraContent = extraText ? /*#__PURE__*/_react.default.createElement("div", {
506
- className: extraCls
507
- }, extraText) : null;
508
-
509
540
  const fieldMainContent = /*#__PURE__*/_react.default.createElement("div", {
510
541
  className: fieldMaincls
511
542
  }, mergeExtraPos === 'middle' ? extraContent : null, com, !noErrorMessage ? /*#__PURE__*/_react.default.createElement(_errorMessage.default, {
512
543
  error: error,
513
544
  validateStatus: blockStatus,
514
545
  helpText: helpText,
546
+ helpTextId: helpTextId,
547
+ errorMessageId: errorMessageId,
515
548
  showValidateIcon: formProps.showValidateIcon
516
549
  }) : null, mergeExtraPos === 'bottom' ? extraContent : null);
517
550
 
@@ -11,7 +11,6 @@ import { useFormApi, useFormState, useFieldState, useFieldApi } from './hooks/in
11
11
  import withField from './hoc/withField';
12
12
  import withFormState from './hoc/withFormState';
13
13
  import withFormApi from './hoc/withFormApi';
14
- export * from './interface';
15
14
  export { Form, ArrayField, withField, useFormApi, useFormState, useFieldApi, useFieldState, withFormState, withFormApi };
16
15
  export * from './interface';
17
16
  export { ArrayFieldProps } from './arrayField';
@@ -82,6 +82,7 @@ export interface FormFCChild<K extends Record<string, any> = any> {
82
82
  formApi: FormApi<K>;
83
83
  }
84
84
  export interface BaseFormProps {
85
+ 'aria-label'?: React.AriaAttributes['aria-label'];
85
86
  onSubmit?: (values: Record<string, any>) => void;
86
87
  onSubmitFail?: (errors: Record<string, FieldError>, values: any) => void;
87
88
  onReset?: () => void;
@@ -90,6 +91,7 @@ export interface BaseFormProps {
90
91
  validateFields?: (values: Record<string, any>) => string | Record<string, any>;
91
92
  /** Use this if you want to populate the form with initial values. */
92
93
  initValues?: Record<string, any>;
94
+ id?: string;
93
95
  /** getFormApi will be call once when Form mounted, u can save formApi reference in your component */
94
96
  getFormApi?: (formApi: FormApi) => void;
95
97
  style?: React.CSSProperties;
@@ -1,6 +1,7 @@
1
1
  import React, { PureComponent } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  export interface LabelProps {
4
+ id?: string;
4
5
  /** Whether to display the required * symbol */
5
6
  required?: boolean;
6
7
  /** Content of label */
@@ -24,6 +25,7 @@ export default class Label extends PureComponent<LabelProps> {
24
25
  className: string;
25
26
  };
26
27
  static propTypes: {
28
+ id: PropTypes.Requireable<string>;
27
29
  children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
28
30
  required: PropTypes.Requireable<boolean>;
29
31
  text: PropTypes.Requireable<PropTypes.ReactNodeLike>;
@@ -40,7 +40,8 @@ class Label extends _react.PureComponent {
40
40
  align,
41
41
  style,
42
42
  className,
43
- extra
43
+ extra,
44
+ id
44
45
  } = this.props;
45
46
  const labelCls = (0, _classnames.default)(className, {
46
47
  ["".concat(prefixCls, "-field-label")]: true,
@@ -64,7 +65,8 @@ class Label extends _react.PureComponent {
64
65
  return /*#__PURE__*/_react.default.createElement("label", {
65
66
  className: labelCls,
66
67
  htmlFor: name,
67
- style: labelStyle
68
+ style: labelStyle,
69
+ id: id
68
70
  }, extra ? contentWithExtra : textContent);
69
71
  }
70
72
 
@@ -78,6 +80,7 @@ Label.defaultProps = {
78
80
  className: ''
79
81
  };
80
82
  Label.propTypes = {
83
+ id: _propTypes.default.string,
81
84
  children: _propTypes.default.node,
82
85
  required: _propTypes.default.bool,
83
86
  text: _propTypes.default.node,
@@ -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;
@@ -68,6 +68,10 @@ class Input extends _baseComponent.default {
68
68
  this.foundation.handleClear(e);
69
69
  };
70
70
 
71
+ this.handleClearEnterPress = e => {
72
+ this.foundation.handleClearEnterPress(e);
73
+ };
74
+
71
75
  this.handleClick = e => {
72
76
  this.foundation.handleClick(e);
73
77
  };
@@ -100,6 +104,10 @@ class Input extends _baseComponent.default {
100
104
  this.foundation.handleMouseUp(e);
101
105
  };
102
106
 
107
+ this.handleModeEnterPress = e => {
108
+ this.foundation.handleModeEnterPress(e);
109
+ };
110
+
103
111
  this.handleClickPrefixOrSuffix = e => {
104
112
  this.foundation.handleClickPrefixOrSuffix(e);
105
113
  };
@@ -234,8 +242,12 @@ class Input extends _baseComponent.default {
234
242
 
235
243
  if (allowClear) {
236
244
  return /*#__PURE__*/_react.default.createElement("div", {
245
+ role: "button",
246
+ tabIndex: 0,
247
+ "aria-label": "Clear input value",
237
248
  className: clearCls,
238
- onMouseDown: this.handleClear
249
+ onMouseDown: this.handleClear,
250
+ onKeyPress: this.handleClearEnterPress
239
251
  }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear, null));
240
252
  }
241
253
 
@@ -256,13 +268,18 @@ class Input extends _baseComponent.default {
256
268
  const modeCls = (0, _classnames.default)("".concat(prefixCls, "-modebtn"));
257
269
  const modeIcon = eyeClosed ? /*#__PURE__*/_react.default.createElement(_semiIcons.IconEyeClosedSolid, null) : /*#__PURE__*/_react.default.createElement(_semiIcons.IconEyeOpened, null);
258
270
  const showModeBtn = mode === 'password' && value && !disabled && (isFocus || isHovering);
271
+ const ariaLabel = eyeClosed ? 'Show password' : 'Hidden password';
259
272
 
260
273
  if (showModeBtn) {
261
274
  return /*#__PURE__*/_react.default.createElement("div", {
275
+ role: "button",
276
+ tabIndex: 0,
277
+ "aria-label": ariaLabel,
262
278
  className: modeCls,
263
279
  onClick: this.handleClickEye,
264
280
  onMouseDown: this.handleMouseDown,
265
- onMouseUp: this.handleMouseUp
281
+ onMouseUp: this.handleMouseUp,
282
+ onKeyPress: this.handleModeEnterPress
266
283
  }, modeIcon);
267
284
  }
268
285
 
@@ -272,7 +289,8 @@ class Input extends _baseComponent.default {
272
289
  renderPrefix() {
273
290
  const {
274
291
  prefix,
275
- insetLabel
292
+ insetLabel,
293
+ insetLabelId
276
294
  } = this.props;
277
295
  const labelNode = prefix || insetLabel;
278
296
 
@@ -285,11 +303,13 @@ class Input extends _baseComponent.default {
285
303
  ["".concat(prefixCls, "-inset-label")]: insetLabel,
286
304
  ["".concat(prefixCls, "-prefix-text")]: labelNode && (0, _isString2.default)(labelNode),
287
305
  ["".concat(prefixCls, "-prefix-icon")]: (0, _utils.isSemiIcon)(labelNode)
288
- });
306
+ }); // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
307
+
289
308
  return /*#__PURE__*/_react.default.createElement("div", {
290
309
  className: prefixWrapperCls,
291
310
  onMouseDown: this.handlePreventMouseDown,
292
- onClick: this.handleClickPrefixOrSuffix
311
+ onClick: this.handleClickPrefixOrSuffix,
312
+ id: insetLabelId
293
313
  }, labelNode);
294
314
  }
295
315
 
@@ -321,7 +341,8 @@ class Input extends _baseComponent.default {
321
341
  ["".concat(prefixCls, "-suffix-text")]: suffix && (0, _isString2.default)(suffix),
322
342
  ["".concat(prefixCls, "-suffix-icon")]: (0, _utils.isSemiIcon)(suffix),
323
343
  ["".concat(prefixCls, "-suffix-hidden")]: suffixAllowClear && Boolean(hideSuffix)
324
- });
344
+ }); // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
345
+
325
346
  return /*#__PURE__*/_react.default.createElement("div", {
326
347
  className: suffixWrapperCls,
327
348
  onMouseDown: this.handlePreventMouseDown,
@@ -424,21 +445,35 @@ class Input extends _baseComponent.default {
424
445
  inputProps.minLength = stateMinLength;
425
446
  }
426
447
 
427
- return /*#__PURE__*/_react.default.createElement("div", {
428
- className: wrapperCls,
429
- style: style,
430
- onMouseEnter: e => this.handleMouseOver(e),
431
- onMouseLeave: e => this.handleMouseLeave(e),
432
- onClick: e => this.handleClick(e)
433
- }, this.renderPrepend(), this.renderPrefix(), /*#__PURE__*/_react.default.createElement("input", (0, _assign.default)({}, inputProps, {
434
- ref: ref
435
- })), this.renderClearBtn(), this.renderSuffix(suffixAllowClear), this.renderModeBtn(), this.renderAppend());
448
+ if (validateStatus === 'error') {
449
+ inputProps['aria-invalid'] = "true";
450
+ }
451
+
452
+ return (
453
+ /*#__PURE__*/
454
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
455
+ _react.default.createElement("div", {
456
+ className: wrapperCls,
457
+ style: style,
458
+ onMouseEnter: e => this.handleMouseOver(e),
459
+ onMouseLeave: e => this.handleMouseLeave(e),
460
+ onClick: e => this.handleClick(e)
461
+ }, this.renderPrepend(), this.renderPrefix(), /*#__PURE__*/_react.default.createElement("input", (0, _assign.default)({}, inputProps, {
462
+ ref: ref
463
+ })), this.renderClearBtn(), this.renderSuffix(suffixAllowClear), this.renderModeBtn(), this.renderAppend())
464
+ );
436
465
  }
437
466
 
438
467
  }
439
468
 
440
469
  exports.Input = Input;
441
470
  Input.propTypes = {
471
+ 'aria-label': _propTypes.default.string,
472
+ 'aria-labelledby': _propTypes.default.string,
473
+ 'aria-invalid': _propTypes.default.bool,
474
+ 'aria-errormessage': _propTypes.default.string,
475
+ 'aria-describedby': _propTypes.default.string,
476
+ 'aria-required': _propTypes.default.bool,
442
477
  addonBefore: _propTypes.default.node,
443
478
  addonAfter: _propTypes.default.node,
444
479
  prefix: _propTypes.default.node,
@@ -467,6 +502,7 @@ Input.propTypes = {
467
502
  onKeyPress: _propTypes.default.func,
468
503
  onEnterPress: _propTypes.default.func,
469
504
  insetLabel: _propTypes.default.node,
505
+ insetLabelId: _propTypes.default.string,
470
506
  inputStyle: _propTypes.default.object,
471
507
  getValueLength: _propTypes.default.func
472
508
  };
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import BaseComponent from '../_base/baseComponent';
4
+ import { LabelProps } from '../form/label';
4
5
  import { noop } from '@douyinfe/semi-foundation/lib/cjs/utils/function';
5
6
  export declare type InputSize = 'small' | 'large' | 'default';
6
7
  export interface InputGroupProps {
@@ -10,7 +11,7 @@ export interface InputGroupProps {
10
11
  style?: Record<string, any>;
11
12
  onBlur?: (e: React.FocusEvent<HTMLSpanElement>) => void;
12
13
  onFocus?: (e: React.FocusEvent<HTMLSpanElement>) => void;
13
- label?: Record<string, any>;
14
+ label?: LabelProps;
14
15
  labelPosition?: string;
15
16
  disabled?: boolean;
16
17
  }
@@ -77,9 +77,16 @@ class inputGroup extends _baseComponent.default {
77
77
  [(0, _concat.default)(_context = "".concat(prefixCls, "-")).call(_context, size)]: size !== 'default'
78
78
  }); // const labelCls = cls(label.className, '');
79
79
 
80
+ const defaultName = 'input-group';
80
81
  return /*#__PURE__*/_react.default.createElement("div", {
82
+ role: "group",
83
+ "aria-label": "Input group",
84
+ "aria-disabled": this.props.disabled,
81
85
  className: groupWrapperCls
82
- }, label && label.text ? /*#__PURE__*/_react.default.createElement(_label.default, (0, _assign.default)({}, label)) : null, /*#__PURE__*/_react.default.createElement("span", {
86
+ }, label && label.text ? /*#__PURE__*/_react.default.createElement(_label.default, (0, _assign.default)({
87
+ name: defaultName
88
+ }, label)) : null, /*#__PURE__*/_react.default.createElement("span", {
89
+ id: label && label.name || defaultName,
83
90
  className: groupCls,
84
91
  style: this.props.style,
85
92
  onFocus: this.props.onFocus,
@@ -135,6 +142,9 @@ class inputGroup extends _baseComponent.default {
135
142
  }
136
143
 
137
144
  return /*#__PURE__*/_react.default.createElement("span", {
145
+ role: "group",
146
+ "aria-label": "Input group",
147
+ "aria-disabled": this.props.disabled,
138
148
  className: groupCls,
139
149
  style: style,
140
150
  onFocus: this.props.onFocus,
@@ -63,6 +63,10 @@ class TextArea extends _baseComponent.default {
63
63
  this.foundation.handleClear(e);
64
64
  };
65
65
 
66
+ this.handleClearEnterPress = e => {
67
+ this.foundation.handleClearEnterPress(e);
68
+ };
69
+
66
70
  this.setRef = node => {
67
71
  this.libRef.current = node;
68
72
  const {
@@ -188,8 +192,12 @@ class TextArea extends _baseComponent.default {
188
192
 
189
193
  if (showClear) {
190
194
  return /*#__PURE__*/_react.default.createElement("div", {
195
+ role: "button",
196
+ tabIndex: 0,
197
+ "aria-label": "Clear textarea value",
191
198
  className: clearCls,
192
- onClick: this.handleClear
199
+ onClick: this.handleClear,
200
+ onKeyPress: this.handleClearEnterPress
193
201
  }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconClear, null));
194
202
  }
195
203
 
@@ -215,6 +223,9 @@ class TextArea extends _baseComponent.default {
215
223
  ["".concat(prefixCls, "-textarea-counter-exceed")]: current > total
216
224
  });
217
225
  counter = /*#__PURE__*/_react.default.createElement("div", {
226
+ "aria-label": "Textarea value length counter",
227
+ "aria-valuemax": maxCount,
228
+ "aria-valuenow": current,
218
229
  className: countCls
219
230
  }, current, total ? '/' : null, total);
220
231
  } else {
@@ -256,14 +267,16 @@ class TextArea extends _baseComponent.default {
256
267
  minLength: stateMinLength
257
268
  } = this.state;
258
269
  const wrapperCls = (0, _classnames.default)(className, "".concat(prefixCls, "-textarea-wrapper"), {
259
- ["".concat(prefixCls, "-textarea-wrapper-disabled")]: disabled || readonly,
270
+ ["".concat(prefixCls, "-textarea-wrapper-disabled")]: disabled,
271
+ ["".concat(prefixCls, "-textarea-wrapper-readonly")]: readonly,
260
272
  [(0, _concat.default)(_context = "".concat(prefixCls, "-textarea-wrapper-")).call(_context, validateStatus)]: Boolean(validateStatus),
261
273
  ["".concat(prefixCls, "-textarea-wrapper-focus")]: isFocus // [`${prefixCls}-textarea-wrapper-resize`]: !autosize && resize,
262
274
 
263
275
  }); // const ref = this.props.forwardRef || this.textAreaRef;
264
276
 
265
277
  const itemCls = (0, _classnames.default)("".concat(prefixCls, "-textarea"), {
266
- ["".concat(prefixCls, "-textarea-disabled")]: disabled || readonly,
278
+ ["".concat(prefixCls, "-textarea-disabled")]: disabled,
279
+ ["".concat(prefixCls, "-textarea-readonly")]: readonly,
267
280
  ["".concat(prefixCls, "-textarea-autosize")]: autosize,
268
281
  ["".concat(prefixCls, "-textarea-showClear")]: showClear
269
282
  });
@@ -16,6 +16,7 @@ export interface InputNumberProps extends InputProps {
16
16
  hideButtons?: boolean;
17
17
  innerButtons?: boolean;
18
18
  insetLabel?: React.ReactNode;
19
+ insetLabelId?: string;
19
20
  keepFocus?: boolean;
20
21
  max?: number;
21
22
  min?: number;
@@ -47,6 +48,12 @@ export interface InputNumberState {
47
48
  }
48
49
  declare class InputNumber extends BaseComponent<InputNumberProps, InputNumberState> {
49
50
  static propTypes: {
51
+ 'aria-label': PropTypes.Requireable<string>;
52
+ 'aria-labelledby': PropTypes.Requireable<string>;
53
+ 'aria-invalid': PropTypes.Requireable<boolean>;
54
+ 'aria-errormessage': PropTypes.Requireable<string>;
55
+ 'aria-describedby': PropTypes.Requireable<string>;
56
+ 'aria-required': PropTypes.Requireable<boolean>;
50
57
  autofocus: PropTypes.Requireable<boolean>;
51
58
  className: PropTypes.Requireable<string>;
52
59
  defaultValue: PropTypes.Requireable<string | number>;
@@ -56,6 +63,7 @@ declare class InputNumber extends BaseComponent<InputNumberProps, InputNumberSta
56
63
  hideButtons: PropTypes.Requireable<boolean>;
57
64
  innerButtons: PropTypes.Requireable<boolean>;
58
65
  insetLabel: PropTypes.Requireable<PropTypes.ReactNodeLike>;
66
+ insetLabelId: PropTypes.Requireable<string>;
59
67
  keepFocus: PropTypes.Requireable<boolean>;
60
68
  max: PropTypes.Requireable<number>;
61
69
  min: PropTypes.Requireable<number>;
@@ -140,6 +140,8 @@ class InputNumber extends _baseComponent.default {
140
140
  return /*#__PURE__*/_react.default.createElement("div", {
141
141
  className: suffixChildrenCls
142
142
  }, /*#__PURE__*/_react.default.createElement("span", {
143
+ role: "button",
144
+ tabIndex: -1,
143
145
  className: upClassName,
144
146
  onMouseDown: notAllowedUp ? _noop2.default : this.handleUpClick,
145
147
  onMouseUp: this.handleMouseUp,
@@ -147,6 +149,8 @@ class InputNumber extends _baseComponent.default {
147
149
  }, /*#__PURE__*/_react.default.createElement(_semiIcons.IconChevronUp, {
148
150
  size: "extra-small"
149
151
  })), /*#__PURE__*/_react.default.createElement("span", {
152
+ role: "button",
153
+ tabIndex: -1,
150
154
  className: downClassName,
151
155
  onMouseDown: notAllowedDown ? _noop2.default : this.handleDownClick,
152
156
  onMouseUp: this.handleMouseUp,
@@ -437,17 +441,35 @@ class InputNumber extends _baseComponent.default {
437
441
  innerButtons,
438
442
  style,
439
443
  onNumberChange,
440
- keepFocus
444
+ keepFocus,
445
+ defaultValue
441
446
  } = _a,
442
- rest = __rest(_a, ["disabled", "className", "prefixCls", "min", "max", "step", "shiftStep", "precision", "formatter", "parser", "forwardedRef", "onUpClick", "onDownClick", "pressInterval", "pressTimeout", "suffix", "size", "hideButtons", "innerButtons", "style", "onNumberChange", "keepFocus"]);
447
+ rest = __rest(_a, ["disabled", "className", "prefixCls", "min", "max", "step", "shiftStep", "precision", "formatter", "parser", "forwardedRef", "onUpClick", "onDownClick", "pressInterval", "pressTimeout", "suffix", "size", "hideButtons", "innerButtons", "style", "onNumberChange", "keepFocus", "defaultValue"]);
443
448
 
444
449
  const {
445
- value
450
+ value,
451
+ number
446
452
  } = this.state;
447
453
  const inputNumberCls = (0, _classnames.default)(className, "".concat(prefixCls, "-number"), {
448
454
  [(0, _concat.default)(_context = "".concat(prefixCls, "-number-size-")).call(_context, size)]: size
449
455
  });
450
456
  const buttons = this.renderButtons();
457
+ const ariaProps = {
458
+ 'aria-disabled': disabled,
459
+ step
460
+ };
461
+
462
+ if (number) {
463
+ ariaProps['aria-valuenow'] = number;
464
+ }
465
+
466
+ if (max !== Infinity) {
467
+ ariaProps['aria-valuemax'] = max;
468
+ }
469
+
470
+ if (min !== -Infinity) {
471
+ ariaProps['aria-valuemin'] = min;
472
+ }
451
473
 
452
474
  const input = /*#__PURE__*/_react.default.createElement("div", {
453
475
  className: inputNumberCls,
@@ -455,7 +477,9 @@ class InputNumber extends _baseComponent.default {
455
477
  onMouseMove: e => this.handleInputMouseMove(e),
456
478
  onMouseEnter: e => this.handleInputMouseEnter(e),
457
479
  onMouseLeave: e => this.handleInputMouseLeave(e)
458
- }, /*#__PURE__*/_react.default.createElement(_input.default, (0, _assign.default)({}, rest, {
480
+ }, /*#__PURE__*/_react.default.createElement(_input.default, (0, _assign.default)({
481
+ role: "spinbutton"
482
+ }, ariaProps, rest, {
459
483
  size: size,
460
484
  disabled: disabled,
461
485
  ref: this.setInputRef,
@@ -474,6 +498,12 @@ class InputNumber extends _baseComponent.default {
474
498
 
475
499
  exports.InputNumber = InputNumber;
476
500
  InputNumber.propTypes = {
501
+ 'aria-label': _propTypes.default.string,
502
+ 'aria-labelledby': _propTypes.default.string,
503
+ 'aria-invalid': _propTypes.default.bool,
504
+ 'aria-errormessage': _propTypes.default.string,
505
+ 'aria-describedby': _propTypes.default.string,
506
+ 'aria-required': _propTypes.default.bool,
477
507
  autofocus: _propTypes.default.bool,
478
508
  className: _propTypes.default.string,
479
509
  defaultValue: _propTypes.default.oneOfType([_propTypes.default.number, _propTypes.default.string]),
@@ -483,6 +513,7 @@ InputNumber.propTypes = {
483
513
  hideButtons: _propTypes.default.bool,
484
514
  innerButtons: _propTypes.default.bool,
485
515
  insetLabel: _propTypes.default.node,
516
+ insetLabelId: _propTypes.default.string,
486
517
  keepFocus: _propTypes.default.bool,
487
518
  max: _propTypes.default.number,
488
519
  min: _propTypes.default.number,
@@ -14,6 +14,8 @@ export interface SiderProps {
14
14
  className?: string;
15
15
  breakpoint?: Array<keyof ResponsiveMap>;
16
16
  onBreakpoint?: (screen: keyof ResponsiveMap, match: boolean) => void;
17
+ 'aria-label'?: React.AriaAttributes['aria-label'];
18
+ 'role'?: React.AriaRole;
17
19
  }
18
20
  declare class Sider extends React.PureComponent<SiderProps> {
19
21
  static propTypes: {
@@ -22,6 +24,8 @@ declare class Sider extends React.PureComponent<SiderProps> {
22
24
  className: PropTypes.Requireable<string>;
23
25
  breakpoint: PropTypes.Requireable<string[]>;
24
26
  onBreakpoint: PropTypes.Requireable<(...args: any[]) => any>;
27
+ 'aria-label': PropTypes.Requireable<string>;
28
+ role: PropTypes.Requireable<string>;
25
29
  };
26
30
  static defaultProps: {
27
31
  prefixCls: string;
@@ -137,6 +137,7 @@ class Sider extends _react.default.PureComponent {
137
137
  });
138
138
  return /*#__PURE__*/_react.default.createElement("aside", (0, _assign.default)({
139
139
  className: classString,
140
+ "aria-label": this.props['aria-label'],
140
141
  style: style
141
142
  }, (0, _getDataAttr.default)(others)), /*#__PURE__*/_react.default.createElement("div", {
142
143
  className: "".concat(prefixCls, "-sider-children")
@@ -150,7 +151,9 @@ Sider.propTypes = {
150
151
  style: _propTypes.default.object,
151
152
  className: _propTypes.default.string,
152
153
  breakpoint: _propTypes.default.arrayOf(_propTypes.default.oneOf(bpt)),
153
- onBreakpoint: _propTypes.default.func
154
+ onBreakpoint: _propTypes.default.func,
155
+ 'aria-label': _propTypes.default.string,
156
+ role: _propTypes.default.string
154
157
  };
155
158
  Sider.defaultProps = {
156
159
  prefixCls: _constants.cssClasses.PREFIX