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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (434) hide show
  1. package/_base/_story/a11y.jsx +6 -6
  2. package/_utils/hooks/usePrevFocus.ts +16 -0
  3. package/_utils/index.ts +4 -0
  4. package/anchor/_story/anchor.stories.js +1 -1
  5. package/anchor/index.tsx +5 -2
  6. package/anchor/link.tsx +29 -4
  7. package/autoComplete/index.tsx +28 -1
  8. package/avatar/_story/avatar.stories.js +4 -4
  9. package/avatar/avatarGroup.tsx +1 -1
  10. package/avatar/index.tsx +10 -4
  11. package/banner/index.tsx +2 -1
  12. package/breadcrumb/_story/breadcrumb.stories.js +22 -8
  13. package/breadcrumb/index.tsx +8 -1
  14. package/breadcrumb/item.tsx +1 -1
  15. package/button/Button.tsx +4 -0
  16. package/button/__test__/button.test.js +1 -1
  17. package/button/_story/button.stories.js +10 -10
  18. package/button/buttonGroup.tsx +4 -2
  19. package/button/splitButtonGroup.tsx +5 -2
  20. package/card/_story/card.stories.js +8 -1
  21. package/card/_story/card.stories.tsx +3 -0
  22. package/card/index.tsx +5 -2
  23. package/cascader/index.tsx +33 -5
  24. package/checkbox/_story/checkbox.stories.js +21 -14
  25. package/checkbox/checkbox.tsx +40 -5
  26. package/checkbox/checkboxGroup.tsx +30 -5
  27. package/checkbox/checkboxInner.tsx +25 -2
  28. package/collapse/index.tsx +2 -2
  29. package/collapse/item.tsx +15 -8
  30. package/collapsible/index.tsx +4 -2
  31. package/configProvider/_story/configProvider.stories.tsx +27 -0
  32. package/datePicker/datePicker.tsx +19 -0
  33. package/dist/css/semi.css +8 -3
  34. package/dist/css/semi.min.css +1 -1
  35. package/dist/umd/semi-ui.js +2470 -1242
  36. package/dist/umd/semi-ui.js.map +1 -1
  37. package/dist/umd/semi-ui.min.js +1 -1
  38. package/dist/umd/semi-ui.min.js.map +1 -1
  39. package/dropdown/dropdownItem.tsx +1 -1
  40. package/dropdown/dropdownMenu.tsx +1 -1
  41. package/empty/index.tsx +5 -5
  42. package/form/_story/FormApi/formApiDemo.jsx +3 -2
  43. package/form/_story/Validate/validateDemo.jsx +1 -1
  44. package/form/_story/demo.jsx +12 -3
  45. package/form/_story/form.stories.js +0 -7
  46. package/form/baseForm.tsx +2 -0
  47. package/form/errorMessage.tsx +13 -2
  48. package/form/hoc/withField.tsx +37 -8
  49. package/form/index.tsx +0 -2
  50. package/form/interface.ts +2 -0
  51. package/form/label.tsx +4 -2
  52. package/input/index.tsx +49 -4
  53. package/input/inputGroup.tsx +9 -4
  54. package/input/textarea.tsx +25 -6
  55. package/inputNumber/index.tsx +28 -1
  56. package/layout/Sider.tsx +6 -2
  57. package/layout/index.tsx +4 -3
  58. package/lib/cjs/_utils/hooks/usePrevFocus.d.ts +2 -0
  59. package/lib/cjs/_utils/hooks/usePrevFocus.js +30 -0
  60. package/lib/cjs/_utils/index.d.ts +1 -0
  61. package/lib/cjs/_utils/index.js +6 -1
  62. package/lib/cjs/anchor/index.d.ts +2 -0
  63. package/lib/cjs/anchor/index.js +6 -1
  64. package/lib/cjs/anchor/link.d.ts +4 -1
  65. package/lib/cjs/anchor/link.js +39 -5
  66. package/lib/cjs/autoComplete/index.d.ts +17 -0
  67. package/lib/cjs/autoComplete/index.js +21 -2
  68. package/lib/cjs/avatar/avatarGroup.js +2 -1
  69. package/lib/cjs/avatar/index.d.ts +4 -3
  70. package/lib/cjs/avatar/index.js +20 -11
  71. package/lib/cjs/banner/index.js +4 -2
  72. package/lib/cjs/breadcrumb/index.d.ts +3 -0
  73. package/lib/cjs/breadcrumb/index.js +10 -4
  74. package/lib/cjs/breadcrumb/item.js +2 -2
  75. package/lib/cjs/button/Button.d.ts +2 -0
  76. package/lib/cjs/button/Button.js +4 -2
  77. package/lib/cjs/button/buttonGroup.d.ts +3 -0
  78. package/lib/cjs/button/buttonGroup.js +8 -4
  79. package/lib/cjs/button/index.d.ts +1 -0
  80. package/lib/cjs/button/splitButtonGroup.d.ts +3 -0
  81. package/lib/cjs/button/splitButtonGroup.js +5 -2
  82. package/lib/cjs/card/index.d.ts +3 -0
  83. package/lib/cjs/card/index.js +3 -1
  84. package/lib/cjs/cascader/index.d.ts +14 -0
  85. package/lib/cjs/cascader/index.js +35 -7
  86. package/lib/cjs/checkbox/checkbox.d.ts +21 -1
  87. package/lib/cjs/checkbox/checkbox.js +51 -17
  88. package/lib/cjs/checkbox/checkboxGroup.d.ts +13 -1
  89. package/lib/cjs/checkbox/checkboxGroup.js +16 -3
  90. package/lib/cjs/checkbox/checkboxInner.d.ts +15 -0
  91. package/lib/cjs/checkbox/checkboxInner.js +20 -3
  92. package/lib/cjs/collapse/index.js +2 -1
  93. package/lib/cjs/collapse/item.d.ts +2 -1
  94. package/lib/cjs/collapse/item.js +17 -3
  95. package/lib/cjs/collapsible/index.d.ts +1 -0
  96. package/lib/cjs/collapsible/index.js +4 -2
  97. package/lib/cjs/datePicker/datePicker.d.ts +12 -0
  98. package/lib/cjs/datePicker/datePicker.js +14 -1
  99. package/lib/cjs/dropdown/dropdownItem.js +3 -1
  100. package/lib/cjs/dropdown/dropdownMenu.js +4 -1
  101. package/lib/cjs/empty/index.js +2 -1
  102. package/lib/cjs/form/baseForm.d.ts +9 -0
  103. package/lib/cjs/form/baseForm.js +3 -1
  104. package/lib/cjs/form/errorMessage.d.ts +4 -0
  105. package/lib/cjs/form/errorMessage.js +21 -3
  106. package/lib/cjs/form/field.d.ts +7 -0
  107. package/lib/cjs/form/hoc/withField.js +49 -16
  108. package/lib/cjs/form/index.d.ts +0 -1
  109. package/lib/cjs/form/interface.d.ts +2 -0
  110. package/lib/cjs/form/label.d.ts +2 -0
  111. package/lib/cjs/form/label.js +5 -2
  112. package/lib/cjs/input/index.d.ts +16 -0
  113. package/lib/cjs/input/index.js +51 -15
  114. package/lib/cjs/input/inputGroup.d.ts +2 -1
  115. package/lib/cjs/input/inputGroup.js +11 -1
  116. package/lib/cjs/input/textarea.js +12 -1
  117. package/lib/cjs/inputNumber/index.d.ts +8 -0
  118. package/lib/cjs/inputNumber/index.js +32 -2
  119. package/lib/cjs/layout/Sider.d.ts +4 -0
  120. package/lib/cjs/layout/Sider.js +4 -1
  121. package/lib/cjs/layout/index.js +2 -0
  122. package/lib/cjs/list/item.js +0 -1
  123. package/lib/cjs/modal/Modal.js +2 -0
  124. package/lib/cjs/modal/ModalContent.d.ts +3 -1
  125. package/lib/cjs/modal/ModalContent.js +47 -5
  126. package/lib/cjs/navigation/Item.d.ts +4 -2
  127. package/lib/cjs/navigation/Item.js +25 -5
  128. package/lib/cjs/navigation/SubNav.d.ts +4 -2
  129. package/lib/cjs/navigation/SubNav.js +8 -1
  130. package/lib/cjs/navigation/index.js +2 -0
  131. package/lib/cjs/notification/notice.d.ts +1 -1
  132. package/lib/cjs/notification/notice.js +32 -22
  133. package/lib/cjs/pagination/index.js +16 -6
  134. package/lib/cjs/popover/index.js +7 -3
  135. package/lib/cjs/progress/index.d.ts +8 -0
  136. package/lib/cjs/progress/index.js +42 -9
  137. package/lib/cjs/radio/radio.d.ts +6 -1
  138. package/lib/cjs/radio/radio.js +17 -5
  139. package/lib/cjs/radio/radioGroup.d.ts +16 -1
  140. package/lib/cjs/radio/radioGroup.js +18 -3
  141. package/lib/cjs/radio/radioInner.d.ts +6 -1
  142. package/lib/cjs/radio/radioInner.js +11 -3
  143. package/lib/cjs/rating/index.d.ts +14 -0
  144. package/lib/cjs/rating/index.js +14 -3
  145. package/lib/cjs/rating/item.d.ts +2 -0
  146. package/lib/cjs/rating/item.js +6 -1
  147. package/lib/cjs/select/index.d.ts +16 -0
  148. package/lib/cjs/select/index.js +65 -19
  149. package/lib/cjs/select/option.js +28 -22
  150. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  151. package/lib/cjs/sideSheet/SideSheetContent.js +12 -5
  152. package/lib/cjs/sideSheet/index.d.ts +1 -0
  153. package/lib/cjs/sideSheet/index.js +2 -1
  154. package/lib/cjs/slider/index.d.ts +2 -1
  155. package/lib/cjs/slider/index.js +64 -17
  156. package/lib/cjs/spin/icon.js +2 -4
  157. package/lib/cjs/steps/basicStep.d.ts +3 -0
  158. package/lib/cjs/steps/basicStep.js +23 -25
  159. package/lib/cjs/steps/basicSteps.d.ts +1 -0
  160. package/lib/cjs/steps/basicSteps.js +2 -1
  161. package/lib/cjs/steps/fillStep.d.ts +3 -0
  162. package/lib/cjs/steps/fillStep.js +19 -4
  163. package/lib/cjs/steps/fillSteps.d.ts +1 -0
  164. package/lib/cjs/steps/fillSteps.js +2 -1
  165. package/lib/cjs/steps/navStep.d.ts +3 -0
  166. package/lib/cjs/steps/navStep.js +22 -25
  167. package/lib/cjs/steps/navSteps.d.ts +1 -0
  168. package/lib/cjs/steps/navSteps.js +2 -1
  169. package/lib/cjs/switch/index.d.ts +12 -0
  170. package/lib/cjs/switch/index.js +19 -4
  171. package/lib/cjs/table/Body/BaseRow.js +35 -3
  172. package/lib/cjs/table/Body/index.js +9 -1
  173. package/lib/cjs/table/ColumnFilter.js +4 -0
  174. package/lib/cjs/table/ColumnSelection.d.ts +3 -0
  175. package/lib/cjs/table/ColumnSelection.js +6 -2
  176. package/lib/cjs/table/ColumnSorter.js +19 -3
  177. package/lib/cjs/table/CustomExpandIcon.js +7 -1
  178. package/lib/cjs/table/Table.d.ts +2 -0
  179. package/lib/cjs/table/Table.js +31 -15
  180. package/lib/cjs/table/TableCell.d.ts +2 -0
  181. package/lib/cjs/table/TableCell.js +6 -2
  182. package/lib/cjs/table/TableHeaderRow.js +8 -2
  183. package/lib/cjs/tabs/TabBar.js +11 -3
  184. package/lib/cjs/tabs/TabPane.js +3 -1
  185. package/lib/cjs/tabs/index.js +0 -1
  186. package/lib/cjs/tagInput/index.d.ts +4 -1
  187. package/lib/cjs/tagInput/index.js +29 -3
  188. package/lib/cjs/timePicker/TimePicker.d.ts +12 -0
  189. package/lib/cjs/timePicker/TimePicker.js +9 -1
  190. package/lib/cjs/timePicker/index.d.ts +6 -0
  191. package/lib/cjs/timeline/index.d.ts +1 -1
  192. package/lib/cjs/timeline/index.js +1 -0
  193. package/lib/cjs/timeline/item.js +4 -2
  194. package/lib/cjs/toast/toast.js +2 -0
  195. package/lib/cjs/tooltip/TriangleArrow.js +1 -0
  196. package/lib/cjs/tooltip/TriangleArrowVertical.js +1 -0
  197. package/lib/cjs/tooltip/index.d.ts +16 -12
  198. package/lib/cjs/tooltip/index.js +55 -39
  199. package/lib/cjs/transfer/index.js +32 -14
  200. package/lib/cjs/tree/index.d.ts +1 -0
  201. package/lib/cjs/tree/index.js +15 -6
  202. package/lib/cjs/tree/treeNode.d.ts +12 -4
  203. package/lib/cjs/tree/treeNode.js +44 -4
  204. package/lib/cjs/treeSelect/index.d.ts +16 -0
  205. package/lib/cjs/treeSelect/index.js +60 -12
  206. package/lib/cjs/typography/base.js +18 -7
  207. package/lib/cjs/typography/copyable.js +6 -1
  208. package/lib/cjs/upload/fileCard.js +23 -4
  209. package/lib/cjs/upload/index.js +19 -4
  210. package/lib/es/_utils/hooks/usePrevFocus.d.ts +2 -0
  211. package/lib/es/_utils/hooks/usePrevFocus.js +15 -0
  212. package/lib/es/_utils/index.d.ts +1 -0
  213. package/lib/es/_utils/index.js +4 -1
  214. package/lib/es/anchor/index.d.ts +2 -0
  215. package/lib/es/anchor/index.js +6 -1
  216. package/lib/es/anchor/link.d.ts +4 -1
  217. package/lib/es/anchor/link.js +38 -5
  218. package/lib/es/autoComplete/index.d.ts +17 -0
  219. package/lib/es/autoComplete/index.js +21 -2
  220. package/lib/es/avatar/avatarGroup.js +2 -1
  221. package/lib/es/avatar/index.d.ts +4 -3
  222. package/lib/es/avatar/index.js +20 -11
  223. package/lib/es/banner/index.js +4 -2
  224. package/lib/es/breadcrumb/index.d.ts +3 -0
  225. package/lib/es/breadcrumb/index.js +10 -4
  226. package/lib/es/breadcrumb/item.js +2 -2
  227. package/lib/es/button/Button.d.ts +2 -0
  228. package/lib/es/button/Button.js +4 -2
  229. package/lib/es/button/buttonGroup.d.ts +3 -0
  230. package/lib/es/button/buttonGroup.js +8 -4
  231. package/lib/es/button/index.d.ts +1 -0
  232. package/lib/es/button/splitButtonGroup.d.ts +3 -0
  233. package/lib/es/button/splitButtonGroup.js +5 -2
  234. package/lib/es/card/index.d.ts +3 -0
  235. package/lib/es/card/index.js +3 -1
  236. package/lib/es/cascader/index.d.ts +14 -0
  237. package/lib/es/cascader/index.js +35 -7
  238. package/lib/es/checkbox/checkbox.d.ts +21 -1
  239. package/lib/es/checkbox/checkbox.js +50 -17
  240. package/lib/es/checkbox/checkboxGroup.d.ts +13 -1
  241. package/lib/es/checkbox/checkboxGroup.js +18 -5
  242. package/lib/es/checkbox/checkboxInner.d.ts +15 -0
  243. package/lib/es/checkbox/checkboxInner.js +20 -3
  244. package/lib/es/collapse/index.js +2 -1
  245. package/lib/es/collapse/item.d.ts +2 -1
  246. package/lib/es/collapse/item.js +16 -3
  247. package/lib/es/collapsible/index.d.ts +1 -0
  248. package/lib/es/collapsible/index.js +4 -2
  249. package/lib/es/datePicker/datePicker.d.ts +12 -0
  250. package/lib/es/datePicker/datePicker.js +14 -1
  251. package/lib/es/dropdown/dropdownItem.js +3 -1
  252. package/lib/es/dropdown/dropdownMenu.js +4 -1
  253. package/lib/es/empty/index.js +2 -1
  254. package/lib/es/form/baseForm.d.ts +9 -0
  255. package/lib/es/form/baseForm.js +3 -1
  256. package/lib/es/form/errorMessage.d.ts +4 -0
  257. package/lib/es/form/errorMessage.js +21 -3
  258. package/lib/es/form/field.d.ts +7 -0
  259. package/lib/es/form/hoc/withField.js +48 -15
  260. package/lib/es/form/index.d.ts +0 -1
  261. package/lib/es/form/index.js +0 -1
  262. package/lib/es/form/interface.d.ts +2 -0
  263. package/lib/es/form/label.d.ts +2 -0
  264. package/lib/es/form/label.js +5 -2
  265. package/lib/es/input/index.d.ts +16 -0
  266. package/lib/es/input/index.js +51 -15
  267. package/lib/es/input/inputGroup.d.ts +2 -1
  268. package/lib/es/input/inputGroup.js +11 -1
  269. package/lib/es/input/textarea.js +12 -1
  270. package/lib/es/inputNumber/index.d.ts +8 -0
  271. package/lib/es/inputNumber/index.js +33 -2
  272. package/lib/es/layout/Sider.d.ts +4 -0
  273. package/lib/es/layout/Sider.js +4 -1
  274. package/lib/es/layout/index.js +2 -0
  275. package/lib/es/list/item.js +0 -1
  276. package/lib/es/modal/Modal.js +2 -0
  277. package/lib/es/modal/ModalContent.d.ts +3 -1
  278. package/lib/es/modal/ModalContent.js +46 -5
  279. package/lib/es/navigation/Item.d.ts +4 -2
  280. package/lib/es/navigation/Item.js +25 -5
  281. package/lib/es/navigation/SubNav.d.ts +4 -2
  282. package/lib/es/navigation/SubNav.js +8 -1
  283. package/lib/es/navigation/index.js +2 -0
  284. package/lib/es/notification/notice.d.ts +1 -1
  285. package/lib/es/notification/notice.js +33 -24
  286. package/lib/es/pagination/index.js +16 -6
  287. package/lib/es/popover/index.js +7 -3
  288. package/lib/es/progress/index.d.ts +8 -0
  289. package/lib/es/progress/index.js +42 -9
  290. package/lib/es/radio/radio.d.ts +6 -1
  291. package/lib/es/radio/radio.js +16 -5
  292. package/lib/es/radio/radioGroup.d.ts +16 -1
  293. package/lib/es/radio/radioGroup.js +18 -3
  294. package/lib/es/radio/radioInner.d.ts +6 -1
  295. package/lib/es/radio/radioInner.js +11 -3
  296. package/lib/es/rating/index.d.ts +14 -0
  297. package/lib/es/rating/index.js +14 -3
  298. package/lib/es/rating/item.d.ts +2 -0
  299. package/lib/es/rating/item.js +6 -1
  300. package/lib/es/select/index.d.ts +16 -0
  301. package/lib/es/select/index.js +63 -17
  302. package/lib/es/select/option.js +28 -22
  303. package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
  304. package/lib/es/sideSheet/SideSheetContent.js +12 -5
  305. package/lib/es/sideSheet/index.d.ts +1 -0
  306. package/lib/es/sideSheet/index.js +2 -1
  307. package/lib/es/slider/index.d.ts +2 -1
  308. package/lib/es/slider/index.js +63 -16
  309. package/lib/es/spin/icon.js +2 -4
  310. package/lib/es/steps/basicStep.d.ts +3 -0
  311. package/lib/es/steps/basicStep.js +23 -23
  312. package/lib/es/steps/basicSteps.d.ts +1 -0
  313. package/lib/es/steps/basicSteps.js +2 -1
  314. package/lib/es/steps/fillStep.d.ts +3 -0
  315. package/lib/es/steps/fillStep.js +19 -4
  316. package/lib/es/steps/fillSteps.d.ts +1 -0
  317. package/lib/es/steps/fillSteps.js +2 -1
  318. package/lib/es/steps/navStep.d.ts +3 -0
  319. package/lib/es/steps/navStep.js +22 -23
  320. package/lib/es/steps/navSteps.d.ts +1 -0
  321. package/lib/es/steps/navSteps.js +2 -1
  322. package/lib/es/switch/index.d.ts +12 -0
  323. package/lib/es/switch/index.js +19 -4
  324. package/lib/es/table/Body/BaseRow.js +35 -3
  325. package/lib/es/table/Body/index.js +9 -2
  326. package/lib/es/table/ColumnFilter.js +4 -0
  327. package/lib/es/table/ColumnSelection.d.ts +3 -0
  328. package/lib/es/table/ColumnSelection.js +6 -2
  329. package/lib/es/table/ColumnSorter.js +17 -3
  330. package/lib/es/table/CustomExpandIcon.js +6 -1
  331. package/lib/es/table/Table.d.ts +2 -0
  332. package/lib/es/table/Table.js +31 -15
  333. package/lib/es/table/TableCell.d.ts +2 -0
  334. package/lib/es/table/TableCell.js +6 -2
  335. package/lib/es/table/TableHeaderRow.js +8 -2
  336. package/lib/es/tabs/TabBar.js +11 -3
  337. package/lib/es/tabs/TabPane.js +3 -1
  338. package/lib/es/tabs/index.js +0 -1
  339. package/lib/es/tagInput/index.d.ts +4 -1
  340. package/lib/es/tagInput/index.js +29 -3
  341. package/lib/es/timePicker/TimePicker.d.ts +12 -0
  342. package/lib/es/timePicker/TimePicker.js +9 -1
  343. package/lib/es/timePicker/index.d.ts +6 -0
  344. package/lib/es/timeline/index.d.ts +1 -1
  345. package/lib/es/timeline/index.js +1 -0
  346. package/lib/es/timeline/item.js +4 -2
  347. package/lib/es/toast/toast.js +2 -0
  348. package/lib/es/tooltip/TriangleArrow.js +1 -0
  349. package/lib/es/tooltip/TriangleArrowVertical.js +1 -0
  350. package/lib/es/tooltip/index.d.ts +16 -12
  351. package/lib/es/tooltip/index.js +53 -39
  352. package/lib/es/transfer/index.js +32 -14
  353. package/lib/es/tree/index.d.ts +1 -0
  354. package/lib/es/tree/index.js +15 -6
  355. package/lib/es/tree/treeNode.d.ts +12 -4
  356. package/lib/es/tree/treeNode.js +44 -4
  357. package/lib/es/treeSelect/index.d.ts +16 -0
  358. package/lib/es/treeSelect/index.js +57 -10
  359. package/lib/es/typography/base.js +17 -7
  360. package/lib/es/typography/copyable.js +5 -1
  361. package/lib/es/upload/fileCard.js +23 -4
  362. package/lib/es/upload/index.js +19 -4
  363. package/list/item.tsx +0 -1
  364. package/modal/Modal.tsx +2 -0
  365. package/modal/ModalContent.tsx +35 -5
  366. package/navigation/Item.tsx +15 -0
  367. package/navigation/SubNav.tsx +13 -1
  368. package/navigation/index.tsx +1 -1
  369. package/notification/notice.tsx +19 -14
  370. package/package.json +8 -8
  371. package/pagination/index.tsx +9 -5
  372. package/popover/index.tsx +5 -0
  373. package/progress/_story/progress.stories.js +18 -18
  374. package/progress/index.tsx +58 -20
  375. package/radio/radio.tsx +12 -2
  376. package/radio/radioGroup.tsx +29 -3
  377. package/radio/radioInner.tsx +10 -1
  378. package/rating/index.tsx +19 -2
  379. package/rating/item.tsx +6 -0
  380. package/select/__test__/select.test.js +45 -0
  381. package/select/_story/select.stories.js +29 -0
  382. package/select/index.tsx +52 -4
  383. package/select/option.tsx +3 -0
  384. package/sideSheet/SideSheetContent.tsx +13 -9
  385. package/sideSheet/index.tsx +3 -2
  386. package/slider/__test__/slider.test.js +9 -0
  387. package/slider/_story/slider.stories.js +1 -1
  388. package/slider/index.tsx +44 -7
  389. package/spin/icon.tsx +3 -3
  390. package/steps/basicStep.tsx +15 -4
  391. package/steps/basicSteps.tsx +3 -2
  392. package/steps/fillStep.tsx +27 -12
  393. package/steps/fillSteps.tsx +2 -0
  394. package/steps/navStep.tsx +15 -4
  395. package/steps/navSteps.tsx +3 -2
  396. package/switch/_story/switch.stories.js +20 -19
  397. package/switch/_story/switch.stories.tsx +13 -13
  398. package/switch/index.tsx +23 -5
  399. package/table/Body/BaseRow.tsx +25 -1
  400. package/table/Body/index.tsx +7 -2
  401. package/table/ColumnFilter.tsx +7 -1
  402. package/table/ColumnSelection.tsx +4 -1
  403. package/table/ColumnSorter.tsx +18 -1
  404. package/table/CustomExpandIcon.tsx +5 -0
  405. package/table/Table.tsx +26 -13
  406. package/table/TableCell.tsx +11 -1
  407. package/table/TableHeaderRow.tsx +16 -2
  408. package/table/__test__/table.test.js +46 -0
  409. package/tabs/TabBar.tsx +8 -5
  410. package/tabs/TabPane.tsx +3 -1
  411. package/tabs/index.tsx +0 -1
  412. package/tagInput/__test__/tagInput.test.js +46 -0
  413. package/tagInput/_story/tagInput.stories.js +2 -2
  414. package/tagInput/index.tsx +31 -8
  415. package/timePicker/TimePicker.tsx +14 -1
  416. package/timeline/_story/timeline.stories.js +1 -1
  417. package/timeline/index.tsx +2 -2
  418. package/timeline/item.tsx +2 -1
  419. package/toast/toast.tsx +2 -0
  420. package/tooltip/TriangleArrow.tsx +1 -1
  421. package/tooltip/TriangleArrowVertical.tsx +1 -1
  422. package/tooltip/_story/tooltip.stories.js +562 -514
  423. package/tooltip/index.tsx +50 -33
  424. package/transfer/index.tsx +29 -25
  425. package/tree/_story/tree.stories.js +3 -3
  426. package/tree/index.tsx +10 -2
  427. package/tree/treeNode.tsx +46 -10
  428. package/treeSelect/__test__/treeMultiple.test.js +5 -0
  429. package/treeSelect/_story/treeSelect.stories.js +12 -0
  430. package/treeSelect/index.tsx +58 -7
  431. package/typography/base.tsx +7 -1
  432. package/typography/copyable.tsx +10 -1
  433. package/upload/fileCard.tsx +13 -15
  434. package/upload/index.tsx +10 -6
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import classnames from 'classnames';
5
5
  import { checkboxGroupClasses as css, strings } from '@douyinfe/semi-foundation/checkbox/constants';
6
- import CheckboxGroupFoudation, { CheckboxGroupAdapter } from '@douyinfe/semi-foundation/checkbox/checkboxGroupFoundation';
6
+ import CheckboxGroupFoundation, { CheckboxGroupAdapter } from '@douyinfe/semi-foundation/checkbox/checkboxGroupFoundation';
7
7
  import BaseComponent from '../_base/baseComponent';
8
8
  import { Context } from './context';
9
9
  import { isEqual } from 'lodash';
@@ -13,6 +13,11 @@ export type CheckboxDirection = 'horizontal' | 'vertical';
13
13
  export type CheckboxType = 'default' | 'card' | 'pureCard';
14
14
 
15
15
  export type CheckboxGroupProps = {
16
+ 'aria-describedby'?: React.AriaAttributes['aria-describedby'];
17
+ 'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
18
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
19
+ 'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
20
+ 'aria-required'?: React.AriaAttributes['aria-required'];
16
21
  defaultValue?: any[];
17
22
  disabled?: boolean;
18
23
  name?: string;
@@ -26,6 +31,7 @@ export type CheckboxGroupProps = {
26
31
  className?: string;
27
32
  type?: CheckboxType;
28
33
  id?: string;
34
+ 'aria-label'?: React.AriaAttributes['aria-label'];
29
35
  };
30
36
 
31
37
  export type CheckboxGroupState = {
@@ -34,6 +40,11 @@ export type CheckboxGroupState = {
34
40
  class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState> {
35
41
 
36
42
  static propTypes = {
43
+ 'aria-describedby': PropTypes.string,
44
+ 'aria-errormessage': PropTypes.string,
45
+ 'aria-invalid': PropTypes.bool,
46
+ 'aria-labelledby': PropTypes.string,
47
+ 'aria-required': PropTypes.bool,
37
48
  defaultValue: PropTypes.array,
38
49
  disabled: PropTypes.bool,
39
50
  name: PropTypes.string,
@@ -69,12 +80,13 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
69
80
  };
70
81
  }
71
82
 
83
+ foundation: CheckboxGroupFoundation;
72
84
  constructor(props: CheckboxGroupProps) {
73
85
  super(props);
74
86
  this.state = {
75
87
  value: props.value || props.defaultValue,
76
88
  };
77
- this.foundation = new CheckboxGroupFoudation(this.adapter);
89
+ this.foundation = new CheckboxGroupFoundation(this.adapter);
78
90
  this.onChange = this.onChange.bind(this);
79
91
  }
80
92
 
@@ -97,7 +109,7 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
97
109
  }
98
110
 
99
111
  render() {
100
- const { children, options, prefixCls, direction, className, id, style, type } = this.props;
112
+ const { children, options, prefixCls, direction, className, id, style, type, disabled } = this.props;
101
113
 
102
114
  const isPureCardType = type === strings.TYPE_PURECARD;
103
115
  const isCardType = type === strings.TYPE_CARD || isPureCardType;
@@ -119,6 +131,7 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
119
131
  if (typeof option === 'string') {
120
132
  return (
121
133
  <Checkbox
134
+ role="listitem"
122
135
  key={index}
123
136
  disabled={this.props.disabled}
124
137
  value={option}
@@ -130,6 +143,7 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
130
143
  } else {
131
144
  return (
132
145
  <Checkbox
146
+ role="listitem"
133
147
  key={index}
134
148
  disabled={option.disabled || this.props.disabled}
135
149
  value={option.value}
@@ -145,11 +159,22 @@ class CheckboxGroup extends BaseComponent<CheckboxGroupProps, CheckboxGroupState
145
159
  }
146
160
  });
147
161
  } else if (children) {
148
- inner = (React.Children.toArray(children) as React.ReactElement[]).map((itm, index) => React.cloneElement(itm, { key: index }));
162
+ inner = (React.Children.toArray(children) as React.ReactElement[]).map((itm, index) => React.cloneElement(itm, { key: index, role: 'listitem' }));
149
163
  }
150
164
 
151
165
  return (
152
- <div className={prefixClsDisplay} style={style} id={id}>
166
+ <div
167
+ id={id}
168
+ role="list"
169
+ aria-label={this.props['aria-label']}
170
+ className={prefixClsDisplay}
171
+ style={style}
172
+ aria-labelledby={this.props['aria-labelledby']}
173
+ aria-describedby={this.props['aria-describedby']}
174
+ // aria-errormessage={this.props['aria-errormessage']}
175
+ // aria-invalid={this.props['aria-invalid']}
176
+ // aria-required={this.props['aria-required']}
177
+ >
153
178
  <Context.Provider
154
179
  value={{
155
180
  checkboxGroup: {
@@ -8,6 +8,11 @@ import { Context } from './context';
8
8
  import { IconCheckboxTick, IconCheckboxIndeterminate } from '@douyinfe/semi-icons';
9
9
 
10
10
  export interface CheckboxInnerProps {
11
+ 'aria-describedby'?: React.AriaAttributes['aria-describedby'];
12
+ 'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
13
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
14
+ 'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
15
+ 'aria-required'?: React.AriaAttributes['aria-required'];
11
16
  indeterminate?: boolean;
12
17
  checked?: boolean;
13
18
  disabled?: boolean;
@@ -15,12 +20,20 @@ export interface CheckboxInnerProps {
15
20
  name?: string;
16
21
  isPureCardType?: boolean;
17
22
  ref?: React.MutableRefObject<CheckboxInner> | ((ref: CheckboxInner) => void);
23
+ addonId?: string;
24
+ extraId?: string;
25
+ 'aria-label'?: React.AriaAttributes['aria-label'];
18
26
  }
19
27
 
20
28
  class CheckboxInner extends PureComponent<CheckboxInnerProps> {
21
29
  static contextType = Context;
22
30
 
23
31
  static propTypes = {
32
+ 'aria-describedby': PropTypes.string,
33
+ 'aria-errormessage': PropTypes.string,
34
+ 'aria-invalid': PropTypes.bool,
35
+ 'aria-labelledby': PropTypes.string,
36
+ 'aria-required': PropTypes.bool,
24
37
  checked: PropTypes.bool,
25
38
  disabled: PropTypes.bool,
26
39
  onChange: PropTypes.func,
@@ -28,6 +41,8 @@ class CheckboxInner extends PureComponent<CheckboxInnerProps> {
28
41
  grouped: PropTypes.bool,
29
42
  value: PropTypes.any,
30
43
  isPureCardType: PropTypes.bool,
44
+ addonId: PropTypes.string,
45
+ extraId: PropTypes.string,
31
46
  };
32
47
 
33
48
  static defaultProps = {
@@ -44,7 +59,7 @@ class CheckboxInner extends PureComponent<CheckboxInnerProps> {
44
59
  }
45
60
 
46
61
  render() {
47
- const { indeterminate, checked, disabled, prefixCls, name, isPureCardType } = this.props;
62
+ const { indeterminate, checked, disabled, prefixCls, name, isPureCardType, addonId, extraId } = this.props;
48
63
  const prefix = prefixCls || css.PREFIX;
49
64
 
50
65
  const wrapper = classnames(
@@ -69,10 +84,18 @@ class CheckboxInner extends PureComponent<CheckboxInnerProps> {
69
84
  return (
70
85
  <span className={wrapper}>
71
86
  <input
87
+ type="checkbox"
88
+ aria-label={this.props['aria-label']}
89
+ aria-disabled={disabled}
90
+ aria-checked={checked}
91
+ aria-labelledby={addonId}
92
+ aria-describedby={extraId || this.props['aria-describedby']}
93
+ aria-invalid={this.props['aria-invalid']}
94
+ aria-errormessage={this.props['aria-errormessage']}
95
+ aria-required={this.props['aria-required']}
72
96
  ref={ref => {
73
97
  this.inputEntity = ref;
74
98
  }}
75
- type="checkbox"
76
99
  className={css.INPUT}
77
100
  onChange={noop}
78
101
  checked={checked}
@@ -97,7 +97,7 @@ class Collapse extends BaseComponent<CollapseReactProps, CollapseState> {
97
97
  const clsPrefix = cls(cssClasses.PREFIX, className);
98
98
  const { activeSet } = this.state;
99
99
  return (
100
- <div className={clsPrefix} style={style}>
100
+ <div className={clsPrefix} style={style} aria-label={`Collapse`}>
101
101
  <CollapseContext.Provider
102
102
  value={{
103
103
  activeSet,
@@ -116,4 +116,4 @@ class Collapse extends BaseComponent<CollapseReactProps, CollapseState> {
116
116
  }
117
117
  }
118
118
 
119
- export default Collapse;
119
+ export default Collapse;
package/collapse/item.tsx CHANGED
@@ -1,12 +1,13 @@
1
- import React, { PureComponent, ReactNode, CSSProperties } from 'react';
1
+ import React, { CSSProperties, PureComponent, ReactNode } from 'react';
2
2
  import cls from 'classnames';
3
3
  import PropTypes from 'prop-types';
4
4
  import { cssClasses } from '@douyinfe/semi-foundation/collapse/constants';
5
5
  import Collapsible from '../collapsible';
6
6
  import CollapseContext, { CollapseContextType } from './collapse-context';
7
7
  import { IconChevronDown, IconChevronUp } from '@douyinfe/semi-icons';
8
+ import { getUuidShort } from '@douyinfe/semi-foundation/utils/uuid';
8
9
 
9
- export interface CollapsePanelProps{
10
+ export interface CollapsePanelProps {
10
11
  itemKey: string;
11
12
  extra?: ReactNode;
12
13
  header?: ReactNode;
@@ -32,6 +33,8 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
32
33
  ]),
33
34
  };
34
35
 
36
+ private ariaID = getUuidShort({});
37
+
35
38
  renderHeader(active: boolean, expandIconEnable = true) {
36
39
  const {
37
40
  header,
@@ -43,13 +46,13 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
43
46
  } = this.context;
44
47
  const { expandIconPosition } = this.context;
45
48
  if (typeof expandIcon === 'undefined') {
46
- expandIcon = (<IconChevronDown />);
49
+ expandIcon = (<IconChevronDown/>);
47
50
  }
48
51
  if (typeof collapseIcon === 'undefined') {
49
- collapseIcon = (<IconChevronUp />);
52
+ collapseIcon = (<IconChevronUp/>);
50
53
  }
51
54
  const icon = (
52
- <span className={cls([`${cssClasses.PREFIX}-header-icon`,
55
+ <span aria-hidden='true' className={cls([`${cssClasses.PREFIX}-header-icon`,
53
56
  { [`${cssClasses.PREFIX}-header-iconDisabled`]: !expandIconEnable }])}>
54
57
  {/* eslint-disable-next-line no-nested-ternary */}
55
58
  {expandIconEnable ? (active ? collapseIcon : expandIcon) : expandIcon}
@@ -62,7 +65,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
62
65
  {iconPosLeft ? icon : null}
63
66
  <span>{header}</span>
64
67
  <span className={`${cssClasses.PREFIX}-header-right`}>
65
- <span>{extra}</span>
68
+ <span aria-label={'Extra of collapse header'}>{extra}</span>
66
69
  {iconPosLeft ? null : icon}
67
70
  </span>
68
71
  </>
@@ -105,7 +108,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
105
108
  });
106
109
  return (
107
110
  <div
108
- role="Collapse-panel"
111
+ aria-label={'Collapse panel'}
109
112
  className={itemCls}
110
113
  {...restProps}
111
114
  >
@@ -114,6 +117,7 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
114
117
  tabIndex={0}
115
118
  className={headerCls}
116
119
  aria-expanded={active ? 'true' : 'false'}
120
+ aria-owns={this.ariaID}
117
121
  onClick={e => onClick(itemKey, e)}
118
122
  >
119
123
  {this.renderHeader(active, children !== undefined)}
@@ -125,6 +129,9 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
125
129
  reCalcKey={reCalcKey}>
126
130
  <div
127
131
  className={contentCls}
132
+ aria-label={'Collapse content'}
133
+ aria-hidden={!active}
134
+ id={this.ariaID}
128
135
  >
129
136
  <div className={`${cssClasses.PREFIX}-content-wrapper`}>
130
137
  {children}
@@ -136,4 +143,4 @@ export default class CollapsePanel extends PureComponent<CollapsePanelProps> {
136
143
  </div>
137
144
  );
138
145
  }
139
- }
146
+ }
@@ -19,6 +19,7 @@ export interface CollapsibleProps {
19
19
  style?: React.CSSProperties;
20
20
  collapseHeight?: number;
21
21
  reCalcKey?: number | string;
22
+ id?:string,
22
23
  }
23
24
 
24
25
 
@@ -32,7 +33,8 @@ const Collapsible = (props: CollapsibleProps) => {
32
33
  collapseHeight,
33
34
  style,
34
35
  className,
35
- reCalcKey
36
+ reCalcKey,
37
+ id
36
38
  } = props;
37
39
 
38
40
  const ref = useRef(null);
@@ -90,7 +92,7 @@ const Collapsible = (props: CollapsibleProps) => {
90
92
  const wrapperCls = cls(`${cssClasses.PREFIX}-wrapper`, className);
91
93
  return (
92
94
  <div style={wrapperstyle} className={wrapperCls} ref={ref}>
93
- <div ref={setHeight} style={{overflow:'hidden'}}>{children}</div>
95
+ <div ref={setHeight} style={{ overflow: 'hidden' }} id={id}>{children}</div>
94
96
  </div>
95
97
  );
96
98
  };
@@ -0,0 +1,27 @@
1
+ import React, { useState } from 'react';
2
+ import { ButtonGroup, Button, ConfigProvider } from '@douyinfe/semi-ui';
3
+
4
+ export default function RTLWrapper({ children, onDirectionChange }: { children: React.ReactNode; onDirectionChange?: (direction: 'ltr' | 'rtl') => void }) {
5
+ const [direction, setDirection] = useState();
6
+ const handleDirectionChange = dir => {
7
+ setDirection(dir);
8
+
9
+ if (typeof onDirectionChange === 'function') {
10
+ onDirectionChange(dir);
11
+ }
12
+ };
13
+
14
+ return (
15
+ <>
16
+ <div style={{ marginBottom: 20 }}>
17
+ <ButtonGroup>
18
+ <Button onClick={() => handleDirectionChange('ltr')}>LTR</Button>
19
+ <Button onClick={() => handleDirectionChange('rtl')}>RTL</Button>
20
+ </ButtonGroup>
21
+ </div>
22
+ <ConfigProvider direction={direction}>
23
+ {children}
24
+ </ConfigProvider>
25
+ </>
26
+ );
27
+ }
@@ -21,9 +21,15 @@ import { RangeType } from '@douyinfe/semi-foundation/datePicker/inputFoundation'
21
21
  import { TimePickerProps } from '../timePicker/TimePicker';
22
22
 
23
23
  export interface DatePickerProps extends DatePickerFoundationProps {
24
+ 'aria-describedby'?: React.AriaAttributes['aria-describedby'];
25
+ 'aria-errormessage'?: React.AriaAttributes['aria-errormessage'];
26
+ 'aria-invalid'?: React.AriaAttributes['aria-invalid'];
27
+ 'aria-labelledby'?: React.AriaAttributes['aria-labelledby'];
28
+ 'aria-required'?: React.AriaAttributes['aria-required'];
24
29
  timePickerOpts?: TimePickerProps;
25
30
  bottomSlot?: React.ReactNode;
26
31
  insetLabel?: React.ReactNode;
32
+ insetLabelId?: string;
27
33
  prefix?: React.ReactNode;
28
34
  topSlot?: React.ReactNode;
29
35
  renderDate?: (dayNumber?: number, fullDate?: string) => React.ReactNode;
@@ -42,6 +48,11 @@ export type DatePickerState = DatePickerFoundationState;
42
48
  export default class DatePicker extends BaseComponent<DatePickerProps, DatePickerState> {
43
49
  static contextType = ConfigContext;
44
50
  static propTypes = {
51
+ 'aria-describedby': PropTypes.string,
52
+ 'aria-errormessage': PropTypes.string,
53
+ 'aria-invalid': PropTypes.bool,
54
+ 'aria-labelledby': PropTypes.string,
55
+ 'aria-required': PropTypes.bool,
45
56
  type: PropTypes.oneOf(strings.TYPE_SET),
46
57
  size: PropTypes.oneOf(strings.SIZE_SET),
47
58
  density: PropTypes.oneOf(strings.DENSITY_SET),
@@ -76,6 +87,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
76
87
  prefixCls: PropTypes.string,
77
88
  prefix: PropTypes.node,
78
89
  insetLabel: PropTypes.node,
90
+ insetLabelId: PropTypes.string,
79
91
  zIndex: PropTypes.number,
80
92
  position: PropTypes.oneOf(popoverStrings.POSITION_SET),
81
93
  getPopupContainer: PropTypes.func,
@@ -452,6 +464,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
452
464
  disabled,
453
465
  showClear,
454
466
  insetLabel,
467
+ insetLabelId,
455
468
  placeholder,
456
469
  validateStatus,
457
470
  inputStyle,
@@ -488,6 +501,7 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
488
501
  inputStyle,
489
502
  showClear,
490
503
  insetLabel,
504
+ insetLabelId,
491
505
  type,
492
506
  format,
493
507
  multiple,
@@ -642,6 +656,11 @@ export default class DatePicker extends BaseComponent<DatePickerProps, DatePicke
642
656
  style,
643
657
  className: classnames(className, { [prefixCls]: true }),
644
658
  ref: this.setTriggerRef,
659
+ 'aria-invalid': this.props['aria-invalid'],
660
+ 'aria-errormessage': this.props['aria-errormessage'],
661
+ 'aria-labelledby': this.props['aria-labelledby'],
662
+ 'aria-describedby': this.props['aria-describedby'],
663
+ 'aria-required': this.props['aria-required'],
645
664
  };
646
665
 
647
666
  const inner = this.renderInner();
package/dist/css/semi.css CHANGED
@@ -13919,7 +13919,13 @@ body[theme-mode=dark], body .semi-always-dark {
13919
13919
  }
13920
13920
  .semi-radio .semi-radio-inner-buttonRadio,
13921
13921
  .semi-radio .semi-radio-inner-pureCardRadio {
13922
- display: none;
13922
+ position: absolute;
13923
+ top: 0;
13924
+ left: 0;
13925
+ width: 100%;
13926
+ height: 100%;
13927
+ z-index: -1;
13928
+ opacity: 0;
13923
13929
  }
13924
13930
  .semi-radio-disabled, .semi-radio-disabled:hover {
13925
13931
  cursor: not-allowed;
@@ -15059,6 +15065,7 @@ body[theme-mode=dark], body .semi-always-dark {
15059
15065
  }
15060
15066
  .semi-slider-handle-clicked {
15061
15067
  border: solid 1px var(--semi-color-focus-border);
15068
+ cursor: grabbing;
15062
15069
  }
15063
15070
  .semi-slider-track {
15064
15071
  height: 4px;
@@ -18246,8 +18253,6 @@ body[theme-mode=dark], body .semi-always-dark {
18246
18253
  background-color: inherit;
18247
18254
  }
18248
18255
  .semi-transfer-item .semi-transfer-item-close-icon {
18249
- width: 12px;
18250
- height: 12px;
18251
18256
  font-size: 12px;
18252
18257
  cursor: pointer;
18253
18258
  visibility: hidden;