@douyinfe/semi-ui 2.2.0-beta.1 → 2.3.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/_base/_story/a11y.jsx +6 -6
  2. package/_utils/hooks/usePrevFocus.ts +16 -0
  3. package/_utils/index.ts +4 -0
  4. package/anchor/_story/anchor.stories.js +1 -1
  5. package/anchor/index.tsx +5 -2
  6. package/anchor/link.tsx +29 -4
  7. package/autoComplete/index.tsx +28 -1
  8. package/avatar/_story/avatar.stories.js +4 -4
  9. package/avatar/avatarGroup.tsx +1 -1
  10. package/avatar/index.tsx +10 -4
  11. package/banner/index.tsx +2 -1
  12. package/breadcrumb/_story/breadcrumb.stories.js +22 -8
  13. package/breadcrumb/index.tsx +8 -1
  14. package/breadcrumb/item.tsx +1 -1
  15. package/button/Button.tsx +4 -0
  16. package/button/__test__/button.test.js +1 -1
  17. package/button/_story/button.stories.js +10 -10
  18. package/button/buttonGroup.tsx +4 -2
  19. package/button/splitButtonGroup.tsx +5 -2
  20. package/card/_story/card.stories.js +8 -1
  21. package/card/_story/card.stories.tsx +3 -0
  22. package/card/index.tsx +5 -2
  23. package/cascader/index.tsx +33 -5
  24. package/checkbox/_story/checkbox.stories.js +21 -14
  25. package/checkbox/checkbox.tsx +40 -5
  26. package/checkbox/checkboxGroup.tsx +30 -5
  27. package/checkbox/checkboxInner.tsx +25 -2
  28. package/collapse/index.tsx +2 -2
  29. package/collapse/item.tsx +15 -8
  30. package/collapsible/index.tsx +4 -2
  31. package/configProvider/_story/configProvider.stories.tsx +27 -0
  32. package/datePicker/__test__/datePicker.test.js +108 -0
  33. package/datePicker/_story/datePicker.stories.js +146 -2
  34. package/datePicker/datePicker.tsx +24 -0
  35. package/datePicker/monthsGrid.tsx +2 -1
  36. package/dist/css/semi.css +34 -7
  37. package/dist/css/semi.min.css +1 -1
  38. package/dist/umd/semi-ui.js +2785 -1508
  39. package/dist/umd/semi-ui.js.map +1 -1
  40. package/dist/umd/semi-ui.min.js +1 -1
  41. package/dist/umd/semi-ui.min.js.map +1 -1
  42. package/dropdown/dropdownItem.tsx +1 -1
  43. package/dropdown/dropdownMenu.tsx +1 -1
  44. package/empty/index.tsx +5 -5
  45. package/form/_story/FormApi/formApiDemo.jsx +3 -2
  46. package/form/_story/Validate/validateDemo.jsx +1 -1
  47. package/form/_story/demo.jsx +12 -3
  48. package/form/_story/form.stories.js +0 -7
  49. package/form/baseForm.tsx +2 -0
  50. package/form/errorMessage.tsx +13 -2
  51. package/form/hoc/withField.tsx +37 -8
  52. package/form/index.tsx +0 -2
  53. package/form/interface.ts +2 -0
  54. package/form/label.tsx +4 -2
  55. package/input/index.tsx +49 -4
  56. package/input/inputGroup.tsx +9 -4
  57. package/input/textarea.tsx +25 -6
  58. package/inputNumber/_story/inputNumber.stories.js +12 -0
  59. package/inputNumber/index.tsx +33 -2
  60. package/layout/Sider.tsx +6 -2
  61. package/layout/index.tsx +4 -3
  62. package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
  63. package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
  64. package/lib/cjs/_utils/index.d.ts +1 -0
  65. package/lib/cjs/_utils/index.js +6 -1
  66. package/lib/cjs/anchor/index.d.ts +2 -0
  67. package/lib/cjs/anchor/index.js +6 -1
  68. package/lib/cjs/anchor/link.d.ts +4 -1
  69. package/lib/cjs/anchor/link.js +39 -5
  70. package/lib/cjs/autoComplete/index.d.ts +17 -0
  71. package/lib/cjs/autoComplete/index.js +21 -2
  72. package/lib/cjs/avatar/avatarGroup.js +2 -1
  73. package/lib/cjs/avatar/index.d.ts +4 -3
  74. package/lib/cjs/avatar/index.js +20 -11
  75. package/lib/cjs/banner/index.js +4 -2
  76. package/lib/cjs/breadcrumb/index.d.ts +3 -0
  77. package/lib/cjs/breadcrumb/index.js +10 -4
  78. package/lib/cjs/breadcrumb/item.js +2 -2
  79. package/lib/cjs/button/Button.d.ts +2 -0
  80. package/lib/cjs/button/Button.js +4 -2
  81. package/lib/cjs/button/buttonGroup.d.ts +3 -0
  82. package/lib/cjs/button/buttonGroup.js +8 -4
  83. package/lib/cjs/button/index.d.ts +1 -0
  84. package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
  85. package/lib/cjs/button/splitButtonGroup.js +5 -2
  86. package/lib/cjs/card/index.d.ts +3 -0
  87. package/lib/cjs/card/index.js +3 -1
  88. package/lib/cjs/cascader/index.d.ts +14 -0
  89. package/lib/cjs/cascader/index.js +35 -7
  90. package/lib/cjs/checkbox/checkbox.d.ts +21 -1
  91. package/lib/cjs/checkbox/checkbox.js +51 -17
  92. package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
  93. package/lib/cjs/checkbox/checkboxGroup.js +16 -3
  94. package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
  95. package/lib/cjs/checkbox/checkboxInner.js +20 -3
  96. package/lib/cjs/collapse/index.js +2 -1
  97. package/lib/cjs/collapse/item.d.ts +2 -1
  98. package/lib/cjs/collapse/item.js +17 -3
  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 +22 -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/empty/index.js +2 -1
  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 +37 -3
  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/item.js +0 -1
  129. package/lib/cjs/modal/Modal.js +2 -0
  130. package/lib/cjs/modal/ModalContent.d.ts +3 -1
  131. package/lib/cjs/modal/ModalContent.js +47 -5
  132. package/lib/cjs/navigation/Item.d.ts +4 -2
  133. package/lib/cjs/navigation/Item.js +25 -5
  134. package/lib/cjs/navigation/SubNav.d.ts +4 -2
  135. package/lib/cjs/navigation/SubNav.js +8 -1
  136. package/lib/cjs/navigation/index.js +2 -0
  137. package/lib/cjs/notification/notice.d.ts +1 -1
  138. package/lib/cjs/notification/notice.js +32 -22
  139. package/lib/cjs/pagination/index.js +16 -6
  140. package/lib/cjs/popover/index.js +7 -3
  141. package/lib/cjs/progress/index.d.ts +8 -0
  142. package/lib/cjs/progress/index.js +42 -9
  143. package/lib/cjs/radio/radio.d.ts +6 -1
  144. package/lib/cjs/radio/radio.js +17 -5
  145. package/lib/cjs/radio/radioGroup.d.ts +16 -1
  146. package/lib/cjs/radio/radioGroup.js +18 -3
  147. package/lib/cjs/radio/radioInner.d.ts +6 -1
  148. package/lib/cjs/radio/radioInner.js +11 -3
  149. package/lib/cjs/rating/index.d.ts +14 -0
  150. package/lib/cjs/rating/index.js +14 -3
  151. package/lib/cjs/rating/item.d.ts +2 -0
  152. package/lib/cjs/rating/item.js +6 -1
  153. package/lib/cjs/select/index.d.ts +16 -0
  154. package/lib/cjs/select/index.js +65 -19
  155. package/lib/cjs/select/option.js +28 -22
  156. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  157. package/lib/cjs/sideSheet/SideSheetContent.js +12 -5
  158. package/lib/cjs/sideSheet/index.d.ts +1 -0
  159. package/lib/cjs/sideSheet/index.js +2 -1
  160. package/lib/cjs/slider/index.d.ts +2 -1
  161. package/lib/cjs/slider/index.js +64 -17
  162. package/lib/cjs/spin/icon.js +2 -4
  163. package/lib/cjs/steps/basicStep.d.ts +3 -0
  164. package/lib/cjs/steps/basicStep.js +23 -25
  165. package/lib/cjs/steps/basicSteps.d.ts +1 -0
  166. package/lib/cjs/steps/basicSteps.js +2 -1
  167. package/lib/cjs/steps/fillStep.d.ts +3 -0
  168. package/lib/cjs/steps/fillStep.js +19 -4
  169. package/lib/cjs/steps/fillSteps.d.ts +1 -0
  170. package/lib/cjs/steps/fillSteps.js +2 -1
  171. package/lib/cjs/steps/navStep.d.ts +3 -0
  172. package/lib/cjs/steps/navStep.js +22 -25
  173. package/lib/cjs/steps/navSteps.d.ts +1 -0
  174. package/lib/cjs/steps/navSteps.js +2 -1
  175. package/lib/cjs/switch/index.d.ts +12 -0
  176. package/lib/cjs/switch/index.js +19 -4
  177. package/lib/cjs/table/Body/BaseRow.js +35 -3
  178. package/lib/cjs/table/Body/index.js +9 -1
  179. package/lib/cjs/table/ColumnFilter.js +4 -0
  180. package/lib/cjs/table/ColumnSelection.d.ts +3 -0
  181. package/lib/cjs/table/ColumnSelection.js +6 -2
  182. package/lib/cjs/table/ColumnSorter.js +19 -3
  183. package/lib/cjs/table/CustomExpandIcon.js +7 -1
  184. package/lib/cjs/table/Table.d.ts +2 -0
  185. package/lib/cjs/table/Table.js +31 -15
  186. package/lib/cjs/table/TableCell.d.ts +2 -0
  187. package/lib/cjs/table/TableCell.js +6 -2
  188. package/lib/cjs/table/TableHeaderRow.js +8 -2
  189. package/lib/cjs/tabs/TabBar.js +11 -3
  190. package/lib/cjs/tabs/TabPane.js +3 -1
  191. package/lib/cjs/tabs/index.js +3 -8
  192. package/lib/cjs/tagInput/index.d.ts +4 -1
  193. package/lib/cjs/tagInput/index.js +29 -3
  194. package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
  195. package/lib/cjs/timePicker/TimePicker.js +9 -1
  196. package/lib/cjs/timePicker/index.d.ts +6 -0
  197. package/lib/cjs/timeline/index.d.ts +1 -1
  198. package/lib/cjs/timeline/index.js +1 -0
  199. package/lib/cjs/timeline/item.js +4 -2
  200. package/lib/cjs/toast/toast.js +2 -0
  201. package/lib/cjs/tooltip/TriangleArrow.js +1 -0
  202. package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
  203. package/lib/cjs/tooltip/index.d.ts +16 -12
  204. package/lib/cjs/tooltip/index.js +55 -39
  205. package/lib/cjs/transfer/index.d.ts +1 -1
  206. package/lib/cjs/transfer/index.js +35 -17
  207. package/lib/cjs/tree/index.d.ts +1 -0
  208. package/lib/cjs/tree/index.js +15 -6
  209. package/lib/cjs/tree/treeNode.d.ts +12 -4
  210. package/lib/cjs/tree/treeNode.js +44 -4
  211. package/lib/cjs/treeSelect/index.d.ts +16 -0
  212. package/lib/cjs/treeSelect/index.js +60 -12
  213. package/lib/cjs/typography/base.js +18 -7
  214. package/lib/cjs/typography/copyable.js +6 -1
  215. package/lib/cjs/upload/fileCard.js +23 -4
  216. package/lib/cjs/upload/index.js +19 -4
  217. package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
  218. package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
  219. package/lib/es/_utils/index.d.ts +1 -0
  220. package/lib/es/_utils/index.js +4 -1
  221. package/lib/es/anchor/index.d.ts +2 -0
  222. package/lib/es/anchor/index.js +6 -1
  223. package/lib/es/anchor/link.d.ts +4 -1
  224. package/lib/es/anchor/link.js +38 -5
  225. package/lib/es/autoComplete/index.d.ts +17 -0
  226. package/lib/es/autoComplete/index.js +21 -2
  227. package/lib/es/avatar/avatarGroup.js +2 -1
  228. package/lib/es/avatar/index.d.ts +4 -3
  229. package/lib/es/avatar/index.js +20 -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/index.js +2 -1
  252. package/lib/es/collapse/item.d.ts +2 -1
  253. package/lib/es/collapse/item.js +16 -3
  254. package/lib/es/collapsible/index.d.ts +1 -0
  255. package/lib/es/collapsible/index.js +4 -2
  256. package/lib/es/datePicker/datePicker.d.ts +12 -0
  257. package/lib/es/datePicker/datePicker.js +22 -3
  258. package/lib/es/datePicker/monthsGrid.d.ts +1 -0
  259. package/lib/es/datePicker/monthsGrid.js +2 -1
  260. package/lib/es/dropdown/dropdownItem.js +3 -1
  261. package/lib/es/dropdown/dropdownMenu.js +4 -1
  262. package/lib/es/empty/index.js +2 -1
  263. package/lib/es/form/baseForm.d.ts +9 -0
  264. package/lib/es/form/baseForm.js +3 -1
  265. package/lib/es/form/errorMessage.d.ts +4 -0
  266. package/lib/es/form/errorMessage.js +21 -3
  267. package/lib/es/form/field.d.ts +7 -0
  268. package/lib/es/form/hoc/withField.js +48 -15
  269. package/lib/es/form/index.d.ts +0 -1
  270. package/lib/es/form/index.js +0 -1
  271. package/lib/es/form/interface.d.ts +2 -0
  272. package/lib/es/form/label.d.ts +2 -0
  273. package/lib/es/form/label.js +5 -2
  274. package/lib/es/input/index.d.ts +16 -0
  275. package/lib/es/input/index.js +51 -15
  276. package/lib/es/input/inputGroup.d.ts +2 -1
  277. package/lib/es/input/inputGroup.js +11 -1
  278. package/lib/es/input/textarea.js +12 -1
  279. package/lib/es/inputNumber/index.d.ts +21 -12
  280. package/lib/es/inputNumber/index.js +38 -3
  281. package/lib/es/layout/Sider.d.ts +4 -0
  282. package/lib/es/layout/Sider.js +4 -1
  283. package/lib/es/layout/index.js +2 -0
  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 +12 -5
  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 +2 -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 +1 -6
  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 +23 -4
  372. package/lib/es/upload/index.js +19 -4
  373. package/list/item.tsx +0 -1
  374. package/modal/Modal.tsx +2 -0
  375. package/modal/ModalContent.tsx +35 -5
  376. package/navigation/Item.tsx +15 -0
  377. package/navigation/SubNav.tsx +13 -1
  378. package/navigation/index.tsx +1 -1
  379. package/notification/notice.tsx +19 -14
  380. package/package.json +8 -8
  381. package/pagination/index.tsx +9 -5
  382. package/popover/index.tsx +5 -0
  383. package/progress/_story/progress.stories.js +18 -18
  384. package/progress/index.tsx +58 -20
  385. package/radio/radio.tsx +12 -2
  386. package/radio/radioGroup.tsx +29 -3
  387. package/radio/radioInner.tsx +10 -1
  388. package/rating/index.tsx +19 -2
  389. package/rating/item.tsx +6 -0
  390. package/select/__test__/select.test.js +45 -0
  391. package/select/_story/select.stories.js +29 -0
  392. package/select/index.tsx +52 -4
  393. package/select/option.tsx +3 -0
  394. package/sideSheet/SideSheetContent.tsx +13 -9
  395. package/sideSheet/index.tsx +3 -2
  396. package/slider/__test__/slider.test.js +9 -0
  397. package/slider/_story/slider.stories.js +1 -1
  398. package/slider/index.tsx +44 -7
  399. package/spin/icon.tsx +3 -3
  400. package/steps/basicStep.tsx +15 -4
  401. package/steps/basicSteps.tsx +3 -2
  402. package/steps/fillStep.tsx +27 -12
  403. package/steps/fillSteps.tsx +2 -0
  404. package/steps/navStep.tsx +15 -4
  405. package/steps/navSteps.tsx +3 -2
  406. package/switch/_story/switch.stories.js +20 -19
  407. package/switch/_story/switch.stories.tsx +13 -13
  408. package/switch/index.tsx +23 -5
  409. package/table/Body/BaseRow.tsx +25 -1
  410. package/table/Body/index.tsx +7 -2
  411. package/table/ColumnFilter.tsx +7 -1
  412. package/table/ColumnSelection.tsx +4 -1
  413. package/table/ColumnSorter.tsx +18 -1
  414. package/table/CustomExpandIcon.tsx +5 -0
  415. package/table/Table.tsx +26 -13
  416. package/table/TableCell.tsx +11 -1
  417. package/table/TableHeaderRow.tsx +16 -2
  418. package/table/__test__/table.test.js +46 -0
  419. package/tabs/TabBar.tsx +8 -5
  420. package/tabs/TabPane.tsx +3 -1
  421. package/tabs/index.tsx +1 -2
  422. package/tagInput/__test__/tagInput.test.js +46 -0
  423. package/tagInput/_story/tagInput.stories.js +2 -2
  424. package/tagInput/index.tsx +31 -8
  425. package/timePicker/TimePicker.tsx +14 -1
  426. package/timeline/_story/timeline.stories.js +1 -1
  427. package/timeline/index.tsx +2 -2
  428. package/timeline/item.tsx +2 -1
  429. package/toast/toast.tsx +2 -0
  430. package/tooltip/TriangleArrow.tsx +1 -1
  431. package/tooltip/TriangleArrowVertical.tsx +1 -1
  432. package/tooltip/_story/tooltip.stories.js +562 -514
  433. package/tooltip/index.tsx +50 -33
  434. package/transfer/index.tsx +32 -28
  435. package/tree/_story/tree.stories.js +3 -3
  436. package/tree/index.tsx +10 -2
  437. package/tree/treeNode.tsx +46 -10
  438. package/treeSelect/__test__/treeMultiple.test.js +5 -0
  439. package/treeSelect/_story/treeSelect.stories.js +12 -0
  440. package/treeSelect/index.tsx +58 -7
  441. package/typography/base.tsx +7 -1
  442. package/typography/copyable.tsx +10 -1
  443. package/upload/fileCard.tsx +13 -15
  444. package/upload/index.tsx +10 -6
@@ -1,17 +1,25 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { CheckboxAdapter, BasicCheckboxEvent, BasicTargetObject, BaseCheckboxProps } from '@douyinfe/semi-foundation/lib/es/checkbox/checkboxFoundation';
3
+ import CheckboxFoundation, { CheckboxAdapter, BasicCheckboxEvent, BasicTargetObject, BaseCheckboxProps } from '@douyinfe/semi-foundation/lib/es/checkbox/checkboxFoundation';
4
4
  import CheckboxInner from './checkboxInner';
5
5
  import BaseComponent from '../_base/baseComponent';
6
6
  import '@douyinfe/semi-foundation/lib/es/checkbox/checkbox.css';
7
7
  export declare type CheckboxEvent = BasicCheckboxEvent;
8
8
  export declare type TargetObject = BasicTargetObject;
9
9
  export interface CheckboxProps extends BaseCheckboxProps {
10
+ 'aria-describedby'?: React.AriaAttributes['aria-describedby'];
11
+ 'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
12
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
13
+ 'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
14
+ 'aria-required'?: React.AriaAttributes['aria-required'];
10
15
  onChange?: (e: CheckboxEvent) => any;
11
16
  style?: React.CSSProperties;
12
17
  onMouseEnter?: React.MouseEventHandler<HTMLSpanElement>;
13
18
  onMouseLeave?: React.MouseEventHandler<HTMLSpanElement>;
14
19
  extra?: React.ReactNode;
20
+ 'aria-label'?: React.AriaAttributes['aria-label'];
21
+ role?: React.HTMLAttributes<HTMLSpanElement>['role'];
22
+ tabIndex?: number;
15
23
  }
16
24
  interface CheckboxState {
17
25
  checked: boolean;
@@ -28,6 +36,11 @@ declare class Checkbox extends BaseComponent<CheckboxProps, CheckboxState> {
28
36
  };
29
37
  }>;
30
38
  static propTypes: {
39
+ 'aria-describedby': PropTypes.Requireable<string>;
40
+ 'aria-errormessage': PropTypes.Requireable<string>;
41
+ 'aria-invalid': PropTypes.Requireable<boolean>;
42
+ 'aria-labelledby': PropTypes.Requireable<string>;
43
+ 'aria-required': PropTypes.Requireable<boolean>;
31
44
  checked: PropTypes.Requireable<boolean>;
32
45
  defaultChecked: PropTypes.Requireable<boolean>;
33
46
  disabled: PropTypes.Requireable<boolean>;
@@ -40,6 +53,9 @@ declare class Checkbox extends BaseComponent<CheckboxProps, CheckboxState> {
40
53
  onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>;
41
54
  onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>;
42
55
  extra: PropTypes.Requireable<PropTypes.ReactNodeLike>;
56
+ index: PropTypes.Requireable<number>;
57
+ 'aria-label': PropTypes.Requireable<string>;
58
+ tabIndex: PropTypes.Requireable<number>;
43
59
  };
44
60
  static defaultProps: {
45
61
  defaultChecked: boolean;
@@ -50,12 +66,16 @@ declare class Checkbox extends BaseComponent<CheckboxProps, CheckboxState> {
50
66
  };
51
67
  checkboxEntity: CheckboxInner;
52
68
  get adapter(): CheckboxAdapter<CheckboxProps, CheckboxState>;
69
+ foundation: CheckboxFoundation;
70
+ addonId: string;
71
+ extraId: string;
53
72
  constructor(props: CheckboxProps);
54
73
  componentDidUpdate(prevProps: CheckboxProps): void;
55
74
  isInGroup(): any;
56
75
  focus(): void;
57
76
  blur(): void;
58
77
  handleChange: React.MouseEventHandler<HTMLSpanElement>;
78
+ handleEnterPress: (e: React.KeyboardEvent<HTMLSpanElement>) => void;
59
79
  render(): JSX.Element;
60
80
  }
61
81
  export default Checkbox;
@@ -14,6 +14,7 @@ import CheckboxInner from './checkboxInner';
14
14
  import BaseComponent from '../_base/baseComponent';
15
15
  import '@douyinfe/semi-foundation/lib/es/checkbox/checkbox.css';
16
16
  import { Context } from './context';
17
+ import { getUuidShort } from '@douyinfe/semi-foundation/lib/es/utils/uuid';
17
18
 
18
19
  class Checkbox extends BaseComponent {
19
20
  constructor(props) {
@@ -21,11 +22,19 @@ class Checkbox extends BaseComponent {
21
22
 
22
23
  this.handleChange = e => this.foundation.handleChange(e);
23
24
 
25
+ this.handleEnterPress = e => this.foundation.handleEnterPress(e);
26
+
24
27
  const checked = false;
25
28
  this.state = {
26
29
  checked: props.checked || props.defaultChecked || checked
27
30
  };
28
31
  this.checkboxEntity = null;
32
+ this.addonId = getUuidShort({
33
+ prefix: 'addon'
34
+ });
35
+ this.extraId = getUuidShort({
36
+ prefix: 'extra'
37
+ });
29
38
  this.foundation = new CheckboxFoundation(this.adapter);
30
39
  }
31
40
 
@@ -85,6 +94,8 @@ class Checkbox extends BaseComponent {
85
94
  onMouseLeave,
86
95
  extra,
87
96
  value,
97
+ role,
98
+ tabIndex,
88
99
  id
89
100
  } = this.props;
90
101
  const {
@@ -94,8 +105,9 @@ class Checkbox extends BaseComponent {
94
105
  checked,
95
106
  disabled
96
107
  };
108
+ const inGroup = this.isInGroup();
97
109
 
98
- if (this.isInGroup()) {
110
+ if (inGroup) {
99
111
  if (this.context.checkboxGroup.value) {
100
112
  var _context;
101
113
 
@@ -132,34 +144,52 @@ class Checkbox extends BaseComponent {
132
144
  const extraCls = classnames("".concat(prefix, "-extra"), {
133
145
  ["".concat(prefix, "-cardType_extra_noChildren")]: props.isCardType && !children
134
146
  });
135
- const name = this.isInGroup() && this.context.checkboxGroup.name;
147
+ const name = inGroup && this.context.checkboxGroup.name;
136
148
 
137
149
  const renderContent = () => /*#__PURE__*/React.createElement(React.Fragment, null, children ? /*#__PURE__*/React.createElement("span", {
150
+ id: this.addonId,
138
151
  className: "".concat(prefix, "-addon")
139
152
  }, children) : null, extra ? /*#__PURE__*/React.createElement("div", {
153
+ id: this.extraId,
140
154
  className: extraCls
141
155
  }, extra) : null);
142
156
 
143
- return /*#__PURE__*/React.createElement("span", {
144
- style: style,
145
- className: wrapper,
146
- id: id,
147
- onMouseEnter: onMouseEnter,
148
- onMouseLeave: onMouseLeave,
149
- onClick: this.handleChange
150
- }, /*#__PURE__*/React.createElement(CheckboxInner, _Object$assign({}, this.props, props, {
151
- name: name,
152
- isPureCardType: props.isPureCardType,
153
- ref: ref => {
154
- this.checkboxEntity = ref;
155
- }
156
- })), props.isCardType ? /*#__PURE__*/React.createElement("div", null, renderContent()) : renderContent());
157
+ return (
158
+ /*#__PURE__*/
159
+ // label is better than span, however span is here which is to solve gitlab issue #364
160
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
161
+ React.createElement("span", {
162
+ role: role,
163
+ tabIndex: tabIndex,
164
+ style: style,
165
+ className: wrapper,
166
+ id: id,
167
+ onMouseEnter: onMouseEnter,
168
+ onMouseLeave: onMouseLeave,
169
+ onClick: this.handleChange,
170
+ onKeyPress: this.handleEnterPress,
171
+ "aria-labelledby": this.props['aria-labelledby']
172
+ }, /*#__PURE__*/React.createElement(CheckboxInner, _Object$assign({}, this.props, props, {
173
+ addonId: children && this.addonId,
174
+ extraId: extra && this.extraId,
175
+ name: name,
176
+ isPureCardType: props.isPureCardType,
177
+ ref: ref => {
178
+ this.checkboxEntity = ref;
179
+ }
180
+ })), props.isCardType ? /*#__PURE__*/React.createElement("div", null, renderContent()) : renderContent())
181
+ );
157
182
  }
158
183
 
159
184
  }
160
185
 
161
186
  Checkbox.contextType = Context;
162
187
  Checkbox.propTypes = {
188
+ 'aria-describedby': PropTypes.string,
189
+ 'aria-errormessage': PropTypes.string,
190
+ 'aria-invalid': PropTypes.bool,
191
+ 'aria-labelledby': PropTypes.string,
192
+ 'aria-required': PropTypes.bool,
163
193
  // Specifies whether it is currently selected
164
194
  checked: PropTypes.bool,
165
195
  // Initial check
@@ -176,7 +206,10 @@ Checkbox.propTypes = {
176
206
  prefixCls: PropTypes.string,
177
207
  onMouseEnter: PropTypes.func,
178
208
  onMouseLeave: PropTypes.func,
179
- extra: PropTypes.node
209
+ extra: PropTypes.node,
210
+ index: PropTypes.number,
211
+ 'aria-label': PropTypes.string,
212
+ tabIndex: PropTypes.number
180
213
  };
181
214
  Checkbox.defaultProps = {
182
215
  defaultChecked: false,
@@ -1,11 +1,16 @@
1
1
  import React from 'react';
2
2
  import PropTypes from 'prop-types';
3
- import { CheckboxGroupAdapter } from '@douyinfe/semi-foundation/lib/es/checkbox/checkboxGroupFoundation';
3
+ import CheckboxGroupFoundation, { CheckboxGroupAdapter } from '@douyinfe/semi-foundation/lib/es/checkbox/checkboxGroupFoundation';
4
4
  import BaseComponent from '../_base/baseComponent';
5
5
  import { CheckboxEvent } from './checkbox';
6
6
  export declare type CheckboxDirection = 'horizontal' | 'vertical';
7
7
  export declare type CheckboxType = 'default' | 'card' | 'pureCard';
8
8
  export declare type CheckboxGroupProps = {
9
+ 'aria-describedby'?: React.AriaAttributes['aria-describedby'];
10
+ 'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
11
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
12
+ 'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
13
+ 'aria-required'?: React.AriaAttributes['aria-required'];
9
14
  defaultValue?: any[];
10
15
  disabled?: boolean;
11
16
  name?: string;
@@ -19,12 +24,18 @@ export declare type CheckboxGroupProps = {
19
24
  className?: string;
20
25
  type?: CheckboxType;
21
26
  id?: string;
27
+ 'aria-label'?: React.AriaAttributes['aria-label'];
22
28
  };
23
29
  export declare type CheckboxGroupState = {
24
30
  value?: any[];
25
31
  };
26
32
  declare class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState> {
27
33
  static propTypes: {
34
+ 'aria-describedby': PropTypes.Requireable<string>;
35
+ 'aria-errormessage': PropTypes.Requireable<string>;
36
+ 'aria-invalid': PropTypes.Requireable<boolean>;
37
+ 'aria-labelledby': PropTypes.Requireable<string>;
38
+ 'aria-required': PropTypes.Requireable<boolean>;
28
39
  defaultValue: PropTypes.Requireable<any[]>;
29
40
  disabled: PropTypes.Requireable<boolean>;
30
41
  name: PropTypes.Requireable<string>;
@@ -40,6 +51,7 @@ declare class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGr
40
51
  };
41
52
  static defaultProps: Partial<CheckboxGroupProps>;
42
53
  get adapter(): CheckboxGroupAdapter;
54
+ foundation: CheckboxGroupFoundation;
43
55
  constructor(props: CheckboxGroupProps);
44
56
  componentDidMount(): void;
45
57
  componentDidUpdate(prevProps: CheckboxGroupProps): void;
@@ -10,7 +10,7 @@ import React from 'react';
10
10
  import PropTypes from 'prop-types';
11
11
  import classnames from 'classnames';
12
12
  import { checkboxGroupClasses as css, strings } from '@douyinfe/semi-foundation/lib/es/checkbox/constants';
13
- import CheckboxGroupFoudation from '@douyinfe/semi-foundation/lib/es/checkbox/checkboxGroupFoundation';
13
+ import CheckboxGroupFoundation from '@douyinfe/semi-foundation/lib/es/checkbox/checkboxGroupFoundation';
14
14
  import BaseComponent from '../_base/baseComponent';
15
15
  import { Context } from './context';
16
16
  import Checkbox from './checkbox';
@@ -23,7 +23,7 @@ class CheckboxGroup extends BaseComponent {
23
23
  this.state = {
24
24
  value: props.value || props.defaultValue
25
25
  };
26
- this.foundation = new CheckboxGroupFoudation(this.adapter);
26
+ this.foundation = new CheckboxGroupFoundation(this.adapter);
27
27
  this.onChange = _bindInstanceProperty(_context = this.onChange).call(_context, this);
28
28
  }
29
29
 
@@ -69,7 +69,8 @@ class CheckboxGroup extends BaseComponent {
69
69
  className,
70
70
  id,
71
71
  style,
72
- type
72
+ type,
73
+ disabled
73
74
  } = this.props;
74
75
  const isPureCardType = type === strings.TYPE_PURECARD;
75
76
  const isCardType = type === strings.TYPE_CARD || isPureCardType;
@@ -91,6 +92,7 @@ class CheckboxGroup extends BaseComponent {
91
92
  inner = _mapInstanceProperty(_context5 = options || []).call(_context5, (option, index) => {
92
93
  if (typeof option === 'string') {
93
94
  return /*#__PURE__*/React.createElement(Checkbox, {
95
+ role: "listitem",
94
96
  key: index,
95
97
  disabled: this.props.disabled,
96
98
  value: option,
@@ -98,6 +100,7 @@ class CheckboxGroup extends BaseComponent {
98
100
  }, option);
99
101
  } else {
100
102
  return /*#__PURE__*/React.createElement(Checkbox, {
103
+ role: "listitem",
101
104
  key: index,
102
105
  disabled: option.disabled || this.props.disabled,
103
106
  value: option.value,
@@ -113,14 +116,19 @@ class CheckboxGroup extends BaseComponent {
113
116
  var _context6;
114
117
 
115
118
  inner = _mapInstanceProperty(_context6 = React.Children.toArray(children)).call(_context6, (itm, index) => /*#__PURE__*/React.cloneElement(itm, {
116
- key: index
119
+ key: index,
120
+ role: 'listitem'
117
121
  }));
118
122
  }
119
123
 
120
124
  return /*#__PURE__*/React.createElement("div", {
125
+ id: id,
126
+ role: "list",
127
+ "aria-label": this.props['aria-label'],
121
128
  className: prefixClsDisplay,
122
129
  style: style,
123
- id: id
130
+ "aria-labelledby": this.props['aria-labelledby'],
131
+ "aria-describedby": this.props['aria-describedby']
124
132
  }, /*#__PURE__*/React.createElement(Context.Provider, {
125
133
  value: {
126
134
  checkboxGroup: {
@@ -138,6 +146,11 @@ class CheckboxGroup extends BaseComponent {
138
146
  }
139
147
 
140
148
  CheckboxGroup.propTypes = {
149
+ 'aria-describedby': PropTypes.string,
150
+ 'aria-errormessage': PropTypes.string,
151
+ 'aria-invalid': PropTypes.bool,
152
+ 'aria-labelledby': PropTypes.string,
153
+ 'aria-required': PropTypes.bool,
141
154
  defaultValue: PropTypes.array,
142
155
  disabled: PropTypes.bool,
143
156
  name: PropTypes.string,
@@ -1,6 +1,11 @@
1
1
  import React, { PureComponent } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  export interface CheckboxInnerProps {
4
+ 'aria-describedby'?: React.AriaAttributes['aria-describedby'];
5
+ 'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
6
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
7
+ 'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
8
+ 'aria-required'?: React.AriaAttributes['aria-required'];
4
9
  indeterminate?: boolean;
5
10
  checked?: boolean;
6
11
  disabled?: boolean;
@@ -8,6 +13,9 @@ export interface CheckboxInnerProps {
8
13
  name?: string;
9
14
  isPureCardType?: boolean;
10
15
  ref?: React.MutableRefObject<CheckboxInner> | ((ref: CheckboxInner) => void);
16
+ addonId?: string;
17
+ extraId?: string;
18
+ 'aria-label'?: React.AriaAttributes['aria-label'];
11
19
  }
12
20
  declare class CheckboxInner extends PureComponent<CheckboxInnerProps> {
13
21
  static contextType: React.Context<{
@@ -21,6 +29,11 @@ declare class CheckboxInner extends PureComponent<CheckboxInnerProps> {
21
29
  };
22
30
  }>;
23
31
  static propTypes: {
32
+ 'aria-describedby': PropTypes.Requireable<string>;
33
+ 'aria-errormessage': PropTypes.Requireable<string>;
34
+ 'aria-invalid': PropTypes.Requireable<boolean>;
35
+ 'aria-labelledby': PropTypes.Requireable<string>;
36
+ 'aria-required': PropTypes.Requireable<boolean>;
24
37
  checked: PropTypes.Requireable<boolean>;
25
38
  disabled: PropTypes.Requireable<boolean>;
26
39
  onChange: PropTypes.Requireable<(...args: any[]) => any>;
@@ -28,6 +41,8 @@ declare class CheckboxInner extends PureComponent<CheckboxInnerProps> {
28
41
  grouped: PropTypes.Requireable<boolean>;
29
42
  value: PropTypes.Requireable<any>;
30
43
  isPureCardType: PropTypes.Requireable<boolean>;
44
+ addonId: PropTypes.Requireable<string>;
45
+ extraId: PropTypes.Requireable<string>;
31
46
  };
32
47
  static defaultProps: {
33
48
  onChange: (...args: any[]) => void;
@@ -24,7 +24,9 @@ class CheckboxInner extends PureComponent {
24
24
  disabled,
25
25
  prefixCls,
26
26
  name,
27
- isPureCardType
27
+ isPureCardType,
28
+ addonId,
29
+ extraId
28
30
  } = this.props;
29
31
  const prefix = prefixCls || css.PREFIX;
30
32
  const wrapper = classnames({
@@ -39,10 +41,18 @@ class CheckboxInner extends PureComponent {
39
41
  return /*#__PURE__*/React.createElement("span", {
40
42
  className: wrapper
41
43
  }, /*#__PURE__*/React.createElement("input", {
44
+ type: "checkbox",
45
+ "aria-label": this.props['aria-label'],
46
+ "aria-disabled": disabled,
47
+ "aria-checked": checked,
48
+ "aria-labelledby": addonId,
49
+ "aria-describedby": extraId || this.props['aria-describedby'],
50
+ "aria-invalid": this.props['aria-invalid'],
51
+ "aria-errormessage": this.props['aria-errormessage'],
52
+ "aria-required": this.props['aria-required'],
42
53
  ref: ref => {
43
54
  this.inputEntity = ref;
44
55
  },
45
- type: "checkbox",
46
56
  className: css.INPUT,
47
57
  onChange: _noop,
48
58
  checked: checked,
@@ -57,13 +67,20 @@ class CheckboxInner extends PureComponent {
57
67
 
58
68
  CheckboxInner.contextType = Context;
59
69
  CheckboxInner.propTypes = {
70
+ 'aria-describedby': PropTypes.string,
71
+ 'aria-errormessage': PropTypes.string,
72
+ 'aria-invalid': PropTypes.bool,
73
+ 'aria-labelledby': PropTypes.string,
74
+ 'aria-required': PropTypes.bool,
60
75
  checked: PropTypes.bool,
61
76
  disabled: PropTypes.bool,
62
77
  onChange: PropTypes.func,
63
78
  children: PropTypes.node,
64
79
  grouped: PropTypes.bool,
65
80
  value: PropTypes.any,
66
- isPureCardType: PropTypes.bool
81
+ isPureCardType: PropTypes.bool,
82
+ addonId: PropTypes.string,
83
+ extraId: PropTypes.string
67
84
  };
68
85
  CheckboxInner.defaultProps = {
69
86
  onChange: _noop
@@ -99,7 +99,8 @@ class Collapse extends BaseComponent {
99
99
  } = this.state;
100
100
  return /*#__PURE__*/React.createElement("div", {
101
101
  className: clsPrefix,
102
- style: style
102
+ style: style,
103
+ "aria-label": "Collapse"
103
104
  }, /*#__PURE__*/React.createElement(CollapseContext.Provider, {
104
105
  value: {
105
106
  activeSet,
@@ -1,4 +1,4 @@
1
- import React, { PureComponent, ReactNode, CSSProperties } from 'react';
1
+ import React, { CSSProperties, PureComponent, ReactNode } from 'react';
2
2
  import PropTypes from 'prop-types';
3
3
  import { CollapseContextType } from './collapse-context';
4
4
  export interface CollapsePanelProps {
@@ -18,6 +18,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
18
18
  className: PropTypes.Requireable<string>;
19
19
  reCalcKey: PropTypes.Requireable<string | number>;
20
20
  };
21
+ private ariaID;
21
22
  renderHeader(active: boolean, expandIconEnable?: boolean): JSX.Element;
22
23
  render(): JSX.Element;
23
24
  }
@@ -20,7 +20,13 @@ import { cssClasses } from '@douyinfe/semi-foundation/lib/es/collapse/constants'
20
20
  import Collapsible from '../collapsible';
21
21
  import CollapseContext from './collapse-context';
22
22
  import { IconChevronDown, IconChevronUp } from '@douyinfe/semi-icons';
23
+ import { getUuidShort } from '@douyinfe/semi-foundation/lib/es/utils/uuid';
23
24
  export default class CollapsePanel extends PureComponent {
25
+ constructor() {
26
+ super(...arguments);
27
+ this.ariaID = getUuidShort({});
28
+ }
29
+
24
30
  renderHeader(active) {
25
31
  let expandIconEnable = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
26
32
  const {
@@ -44,6 +50,7 @@ export default class CollapsePanel extends PureComponent {
44
50
  }
45
51
 
46
52
  const icon = /*#__PURE__*/React.createElement("span", {
53
+ "aria-hidden": 'true',
47
54
  className: cls(["".concat(cssClasses.PREFIX, "-header-icon"), {
48
55
  ["".concat(cssClasses.PREFIX, "-header-iconDisabled")]: !expandIconEnable
49
56
  }])
@@ -53,7 +60,9 @@ export default class CollapsePanel extends PureComponent {
53
60
  if (typeof header === 'string') {
54
61
  return /*#__PURE__*/React.createElement(React.Fragment, null, iconPosLeft ? icon : null, /*#__PURE__*/React.createElement("span", null, header), /*#__PURE__*/React.createElement("span", {
55
62
  className: "".concat(cssClasses.PREFIX, "-header-right")
56
- }, /*#__PURE__*/React.createElement("span", null, extra), iconPosLeft ? null : icon));
63
+ }, /*#__PURE__*/React.createElement("span", {
64
+ "aria-label": 'Extra of collapse header'
65
+ }, extra), iconPosLeft ? null : icon));
57
66
  }
58
67
 
59
68
  return /*#__PURE__*/React.createElement(React.Fragment, null, iconPosLeft ? icon : null, header, iconPosLeft ? null : icon);
@@ -88,13 +97,14 @@ export default class CollapsePanel extends PureComponent {
88
97
  ["".concat(cssClasses.PREFIX, "-content")]: true
89
98
  });
90
99
  return /*#__PURE__*/React.createElement("div", _Object$assign({
91
- role: "Collapse-panel",
100
+ "aria-label": 'Collapse panel',
92
101
  className: itemCls
93
102
  }, restProps), /*#__PURE__*/React.createElement("div", {
94
103
  role: "button",
95
104
  tabIndex: 0,
96
105
  className: headerCls,
97
106
  "aria-expanded": active ? 'true' : 'false',
107
+ "aria-owns": this.ariaID,
98
108
  onClick: e => onClick(itemKey, e)
99
109
  }, this.renderHeader(active, children !== undefined)), children && /*#__PURE__*/React.createElement(Collapsible, {
100
110
  isOpen: active,
@@ -102,7 +112,10 @@ export default class CollapsePanel extends PureComponent {
102
112
  motion: motion,
103
113
  reCalcKey: reCalcKey
104
114
  }, /*#__PURE__*/React.createElement("div", {
105
- className: contentCls
115
+ className: contentCls,
116
+ "aria-label": 'Collapse content',
117
+ "aria-hidden": !active,
118
+ id: this.ariaID
106
119
  }, /*#__PURE__*/React.createElement("div", {
107
120
  className: "".concat(cssClasses.PREFIX, "-content-wrapper")
108
121
  }, children))));
@@ -11,6 +11,7 @@ export interface CollapsibleProps {
11
11
  style?: React.CSSProperties;
12
12
  collapseHeight?: number;
13
13
  reCalcKey?: number | string;
14
+ id?: string;
14
15
  }
15
16
  declare const Collapsible: {
16
17
  (props: CollapsibleProps): JSX.Element;
@@ -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>;
@@ -241,6 +241,10 @@ export default class DatePicker extends BaseComponent {
241
241
  }
242
242
 
243
243
  this.clickOutSideHandler = e => {
244
+ if (this.adapter.needConfirm()) {
245
+ return;
246
+ }
247
+
244
248
  const triggerEl = this.triggerElRef && this.triggerElRef.current;
245
249
  const panelEl = this.panelRef && this.panelRef.current;
246
250
  const isInTrigger = triggerEl && triggerEl.contains(e.target);
@@ -429,7 +433,8 @@ export default class DatePicker extends BaseComponent {
429
433
  density,
430
434
  syncSwitchMonth,
431
435
  onPanelChange,
432
- timeZone
436
+ timeZone,
437
+ triggerRender
433
438
  } = this.props;
434
439
  const {
435
440
  value,
@@ -476,7 +481,8 @@ export default class DatePicker extends BaseComponent {
476
481
  syncSwitchMonth: syncSwitchMonth,
477
482
  onPanelChange: onPanelChange,
478
483
  timeZone: timeZone,
479
- focusRecordsRef: this.focusRecordsRef
484
+ focusRecordsRef: this.focusRecordsRef,
485
+ triggerRender: triggerRender
480
486
  });
481
487
  }
482
488
 
@@ -502,6 +508,7 @@ export default class DatePicker extends BaseComponent {
502
508
  disabled,
503
509
  showClear,
504
510
  insetLabel,
511
+ insetLabelId,
505
512
  placeholder,
506
513
  validateStatus,
507
514
  inputStyle,
@@ -542,6 +549,7 @@ export default class DatePicker extends BaseComponent {
542
549
  inputStyle,
543
550
  showClear,
544
551
  insetLabel,
552
+ insetLabelId,
545
553
  type,
546
554
  format,
547
555
  multiple,
@@ -585,7 +593,12 @@ export default class DatePicker extends BaseComponent {
585
593
  className: classnames(className, {
586
594
  [prefixCls]: true
587
595
  }),
588
- 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']
589
602
  };
590
603
  const inner = this.renderInner();
591
604
  const wrappedInner = this.wrapPopover(inner);
@@ -595,6 +608,11 @@ export default class DatePicker extends BaseComponent {
595
608
  }
596
609
  DatePicker.contextType = ConfigContext;
597
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,
598
616
  type: PropTypes.oneOf(strings.TYPE_SET),
599
617
  size: PropTypes.oneOf(strings.SIZE_SET),
600
618
  density: PropTypes.oneOf(strings.DENSITY_SET),
@@ -624,6 +642,7 @@ DatePicker.propTypes = {
624
642
  prefixCls: PropTypes.string,
625
643
  prefix: PropTypes.node,
626
644
  insetLabel: PropTypes.node,
645
+ insetLabelId: PropTypes.string,
627
646
  zIndex: PropTypes.number,
628
647
  position: PropTypes.oneOf(popoverStrings.POSITION_SET),
629
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',