@douyinfe/semi-ui 2.9.0-beta.0 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/_base/baseComponent.tsx +2 -1
  2. package/_portal/index.tsx +2 -1
  3. package/anchor/__test__/anchor.test.js +1 -0
  4. package/anchor/_story/anchor.stories.js +23 -1
  5. package/anchor/index.tsx +2 -1
  6. package/anchor/link.tsx +2 -1
  7. package/autoComplete/index.tsx +2 -2
  8. package/avatar/interface.ts +2 -2
  9. package/backtop/index.tsx +1 -0
  10. package/badge/_story/badge.stories.js +34 -2
  11. package/badge/index.tsx +4 -2
  12. package/banner/index.tsx +1 -0
  13. package/breadcrumb/bread-context.tsx +2 -2
  14. package/breadcrumb/index.tsx +2 -2
  15. package/breadcrumb/item.tsx +11 -3
  16. package/button/Button.tsx +2 -1
  17. package/button/buttonGroup.tsx +2 -1
  18. package/calendar/_story/Demo.tsx +3 -3
  19. package/card/cardGroup.tsx +1 -0
  20. package/card/index.tsx +1 -0
  21. package/cascader/_story/cascader.stories.js +17 -2
  22. package/cascader/index.tsx +4 -3
  23. package/cascader/item.tsx +3 -1
  24. package/checkbox/_story/checkbox.stories.js +1 -1
  25. package/checkbox/checkbox.tsx +4 -2
  26. package/checkbox/checkboxGroup.tsx +1 -1
  27. package/checkbox/context.ts +3 -3
  28. package/collapse/index.tsx +1 -0
  29. package/collapse/item.tsx +5 -0
  30. package/collapsible/index.tsx +2 -2
  31. package/configProvider/context.tsx +1 -1
  32. package/datePicker/_story/datePicker.stories.js +37 -0
  33. package/datePicker/datePicker.tsx +2 -1
  34. package/descriptions/index.tsx +2 -1
  35. package/descriptions/item.tsx +4 -1
  36. package/dist/css/semi.css +2 -2
  37. package/dist/css/semi.min.css +1 -1
  38. package/dist/umd/semi-ui.js +7560 -3681
  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/context.ts +6 -1
  43. package/dropdown/dropdownItem.tsx +2 -1
  44. package/dropdown/dropdownTitle.tsx +2 -1
  45. package/dropdown/index.tsx +3 -1
  46. package/empty/index.tsx +1 -1
  47. package/form/arrayField.tsx +1 -0
  48. package/form/baseForm.tsx +3 -2
  49. package/form/group.tsx +2 -0
  50. package/form/hoc/withField.tsx +9 -6
  51. package/form/label.tsx +1 -0
  52. package/form/section.tsx +1 -1
  53. package/form/slot.tsx +2 -0
  54. package/grid/col.tsx +3 -1
  55. package/grid/row.tsx +5 -1
  56. package/input/__test__/input.test.js +12 -3
  57. package/input/__test__/textArea.test.js +53 -0
  58. package/layout/Sider.tsx +3 -1
  59. package/layout/index.tsx +2 -0
  60. package/layout/layout-context.ts +1 -1
  61. package/lib/cjs/_base/baseComponent.d.ts +2 -1
  62. package/lib/cjs/_portal/index.d.ts +3 -1
  63. package/lib/cjs/anchor/index.d.ts +2 -1
  64. package/lib/cjs/anchor/link.d.ts +3 -2
  65. package/lib/cjs/autoComplete/index.d.ts +2 -2
  66. package/lib/cjs/avatar/avatarGroup.d.ts +1 -1
  67. package/lib/cjs/avatar/interface.d.ts +2 -2
  68. package/lib/cjs/backtop/index.d.ts +1 -0
  69. package/lib/cjs/badge/index.d.ts +4 -2
  70. package/lib/cjs/banner/index.d.ts +2 -1
  71. package/lib/cjs/breadcrumb/bread-context.d.ts +2 -2
  72. package/lib/cjs/breadcrumb/index.d.ts +2 -2
  73. package/lib/cjs/breadcrumb/item.d.ts +15 -3
  74. package/lib/cjs/button/Button.d.ts +2 -1
  75. package/lib/cjs/button/buttonGroup.d.ts +1 -0
  76. package/lib/cjs/button/index.d.ts +1 -1
  77. package/lib/cjs/calendar/timeCol.d.ts +1 -1
  78. package/lib/cjs/card/cardGroup.d.ts +1 -0
  79. package/lib/cjs/card/index.d.ts +2 -1
  80. package/lib/cjs/cascader/index.d.ts +5 -3
  81. package/lib/cjs/cascader/index.js +1 -1
  82. package/lib/cjs/cascader/item.d.ts +3 -1
  83. package/lib/cjs/checkbox/checkbox.d.ts +5 -11
  84. package/lib/cjs/checkbox/checkbox.js +1 -1
  85. package/lib/cjs/checkbox/checkboxGroup.d.ts +1 -1
  86. package/lib/cjs/checkbox/checkboxInner.d.ts +1 -10
  87. package/lib/cjs/checkbox/context.d.ts +3 -3
  88. package/lib/cjs/collapse/index.d.ts +1 -0
  89. package/lib/cjs/collapse/item.d.ts +2 -0
  90. package/lib/cjs/collapse/item.js +4 -2
  91. package/lib/cjs/collapsible/index.d.ts +1 -1
  92. package/lib/cjs/configProvider/index.d.ts +1 -1
  93. package/lib/cjs/datePicker/datePicker.d.ts +3 -1
  94. package/lib/cjs/datePicker/insetInput.d.ts +1 -0
  95. package/lib/cjs/descriptions/index.d.ts +4 -3
  96. package/lib/cjs/descriptions/item.d.ts +4 -1
  97. package/lib/cjs/dropdown/context.d.ts +5 -3
  98. package/lib/cjs/dropdown/dropdownItem.d.ts +3 -3
  99. package/lib/cjs/dropdown/dropdownMenu.d.ts +1 -0
  100. package/lib/cjs/dropdown/dropdownTitle.d.ts +3 -3
  101. package/lib/cjs/dropdown/index.d.ts +3 -3
  102. package/lib/cjs/empty/index.d.ts +1 -1
  103. package/lib/cjs/form/arrayField.d.ts +1 -0
  104. package/lib/cjs/form/baseForm.d.ts +2 -2
  105. package/lib/cjs/form/baseForm.js +1 -1
  106. package/lib/cjs/form/errorMessage.d.ts +1 -1
  107. package/lib/cjs/form/group.d.ts +3 -1
  108. package/lib/cjs/form/hoc/withField.js +6 -4
  109. package/lib/cjs/form/label.d.ts +1 -0
  110. package/lib/cjs/form/section.d.ts +1 -1
  111. package/lib/cjs/form/slot.js +2 -0
  112. package/lib/cjs/grid/col.d.ts +3 -3
  113. package/lib/cjs/grid/row.d.ts +4 -3
  114. package/lib/cjs/iconButton/index.d.ts +1 -1
  115. package/lib/cjs/inputNumber/index.d.ts +1 -1
  116. package/lib/cjs/layout/Sider.d.ts +4 -1
  117. package/lib/cjs/layout/index.d.ts +2 -0
  118. package/lib/cjs/list/index.d.ts +1 -0
  119. package/lib/cjs/list/item.d.ts +5 -1
  120. package/lib/cjs/list/item.js +5 -1
  121. package/lib/cjs/modal/Modal.d.ts +1 -0
  122. package/lib/cjs/modal/Modal.js +3 -0
  123. package/lib/cjs/modal/ModalContent.d.ts +7 -2
  124. package/lib/cjs/modal/confirm.d.ts +10 -5
  125. package/lib/cjs/modal/useModal/index.d.ts +1 -0
  126. package/lib/cjs/navigation/Footer.d.ts +3 -5
  127. package/lib/cjs/navigation/Header.d.ts +4 -6
  128. package/lib/cjs/navigation/Item.d.ts +4 -6
  129. package/lib/cjs/navigation/OpenIconTransition.d.ts +2 -1
  130. package/lib/cjs/navigation/SubNav.d.ts +3 -5
  131. package/lib/cjs/navigation/SubNav.js +2 -2
  132. package/lib/cjs/navigation/SubNavTransition.d.ts +1 -1
  133. package/lib/cjs/navigation/index.d.ts +2 -2
  134. package/lib/cjs/navigation/nav-context.d.ts +21 -5
  135. package/lib/cjs/notification/NoticeTransition.d.ts +2 -2
  136. package/lib/cjs/notification/index.d.ts +3 -1
  137. package/lib/cjs/notification/notice.d.ts +3 -1
  138. package/lib/cjs/notification/useNotification/index.d.ts +1 -0
  139. package/lib/cjs/overflowList/intersectionObserver.d.ts +3 -2
  140. package/lib/cjs/pagination/index.d.ts +3 -1
  141. package/lib/cjs/pagination/index.js +15 -11
  142. package/lib/cjs/popconfirm/index.d.ts +4 -2
  143. package/lib/cjs/popover/index.d.ts +4 -2
  144. package/lib/cjs/progress/index.d.ts +1 -1
  145. package/lib/cjs/radio/radio.d.ts +1 -0
  146. package/lib/cjs/radio/radioGroup.d.ts +1 -0
  147. package/lib/cjs/scrollList/scrollItem.js +5 -1
  148. package/lib/cjs/select/index.d.ts +3 -1
  149. package/lib/cjs/select/optionGroup.d.ts +1 -1
  150. package/lib/cjs/sideSheet/SideSheetContent.d.ts +1 -0
  151. package/lib/cjs/sideSheet/SideSheetTransition.d.ts +1 -1
  152. package/lib/cjs/sideSheet/index.d.ts +3 -1
  153. package/lib/cjs/table/Body/BaseRow.d.ts +1 -1
  154. package/lib/cjs/table/Body/ExpandedRow.d.ts +4 -2
  155. package/lib/cjs/table/Body/SectionRow.d.ts +3 -1
  156. package/lib/cjs/table/Column.d.ts +1 -1
  157. package/lib/cjs/table/ColumnShape.d.ts +1 -1
  158. package/lib/cjs/table/CustomExpandIcon.d.ts +1 -1
  159. package/lib/cjs/table/Table.d.ts +10 -8
  160. package/lib/cjs/table/TableCell.d.ts +5 -3
  161. package/lib/cjs/table/TableHeaderRow.d.ts +3 -1
  162. package/lib/cjs/table/index.d.ts +4 -4
  163. package/lib/cjs/table/table-context.d.ts +7 -6
  164. package/lib/cjs/tabs/TabPane.d.ts +3 -1
  165. package/lib/cjs/tabs/TabPane.js +4 -0
  166. package/lib/cjs/tabs/index.js +2 -0
  167. package/lib/cjs/tabs/interface.d.ts +2 -1
  168. package/lib/cjs/tag/group.d.ts +1 -1
  169. package/lib/cjs/timePicker/Combobox.d.ts +1 -0
  170. package/lib/cjs/timeline/index.d.ts +2 -1
  171. package/lib/cjs/timeline/item.d.ts +1 -0
  172. package/lib/cjs/toast/ToastTransition.d.ts +1 -1
  173. package/lib/cjs/toast/index.d.ts +8 -16
  174. package/lib/cjs/toast/toast.d.ts +4 -2
  175. package/lib/cjs/toast/useToast/index.d.ts +1 -0
  176. package/lib/cjs/tooltip/index.d.ts +4 -2
  177. package/lib/cjs/tooltip/index.js +1 -1
  178. package/lib/cjs/transfer/index.d.ts +4 -3
  179. package/lib/cjs/transfer/index.js +5 -2
  180. package/lib/cjs/tree/index.d.ts +13 -11
  181. package/lib/cjs/tree/nodeList.d.ts +1 -1
  182. package/lib/cjs/tree/treeContext.d.ts +10 -10
  183. package/lib/cjs/tree/treeNode.d.ts +11 -9
  184. package/lib/cjs/tree/treeNode.js +2 -0
  185. package/lib/cjs/treeSelect/index.d.ts +7 -5
  186. package/lib/cjs/typography/copyable.d.ts +1 -1
  187. package/lib/cjs/upload/index.d.ts +2 -2
  188. package/lib/es/_base/baseComponent.d.ts +2 -1
  189. package/lib/es/_portal/index.d.ts +3 -1
  190. package/lib/es/anchor/index.d.ts +2 -1
  191. package/lib/es/anchor/link.d.ts +3 -2
  192. package/lib/es/autoComplete/index.d.ts +2 -2
  193. package/lib/es/avatar/avatarGroup.d.ts +1 -1
  194. package/lib/es/avatar/interface.d.ts +2 -2
  195. package/lib/es/backtop/index.d.ts +1 -0
  196. package/lib/es/badge/index.d.ts +4 -2
  197. package/lib/es/banner/index.d.ts +2 -1
  198. package/lib/es/breadcrumb/bread-context.d.ts +2 -2
  199. package/lib/es/breadcrumb/index.d.ts +2 -2
  200. package/lib/es/breadcrumb/item.d.ts +15 -3
  201. package/lib/es/button/Button.d.ts +2 -1
  202. package/lib/es/button/buttonGroup.d.ts +1 -0
  203. package/lib/es/button/index.d.ts +1 -1
  204. package/lib/es/calendar/timeCol.d.ts +1 -1
  205. package/lib/es/card/cardGroup.d.ts +1 -0
  206. package/lib/es/card/index.d.ts +2 -1
  207. package/lib/es/cascader/index.d.ts +5 -3
  208. package/lib/es/cascader/index.js +1 -1
  209. package/lib/es/cascader/item.d.ts +3 -1
  210. package/lib/es/checkbox/checkbox.d.ts +5 -11
  211. package/lib/es/checkbox/checkbox.js +1 -1
  212. package/lib/es/checkbox/checkboxGroup.d.ts +1 -1
  213. package/lib/es/checkbox/checkboxInner.d.ts +1 -10
  214. package/lib/es/checkbox/context.d.ts +3 -3
  215. package/lib/es/collapse/index.d.ts +1 -0
  216. package/lib/es/collapse/item.d.ts +2 -0
  217. package/lib/es/collapse/item.js +4 -2
  218. package/lib/es/collapsible/index.d.ts +1 -1
  219. package/lib/es/configProvider/index.d.ts +1 -1
  220. package/lib/es/datePicker/datePicker.d.ts +3 -1
  221. package/lib/es/datePicker/insetInput.d.ts +1 -0
  222. package/lib/es/descriptions/index.d.ts +4 -3
  223. package/lib/es/descriptions/item.d.ts +4 -1
  224. package/lib/es/dropdown/context.d.ts +5 -3
  225. package/lib/es/dropdown/dropdownItem.d.ts +3 -3
  226. package/lib/es/dropdown/dropdownMenu.d.ts +1 -0
  227. package/lib/es/dropdown/dropdownTitle.d.ts +3 -3
  228. package/lib/es/dropdown/index.d.ts +3 -3
  229. package/lib/es/empty/index.d.ts +1 -1
  230. package/lib/es/form/arrayField.d.ts +1 -0
  231. package/lib/es/form/baseForm.d.ts +2 -2
  232. package/lib/es/form/baseForm.js +1 -1
  233. package/lib/es/form/errorMessage.d.ts +1 -1
  234. package/lib/es/form/group.d.ts +3 -1
  235. package/lib/es/form/hoc/withField.js +6 -4
  236. package/lib/es/form/label.d.ts +1 -0
  237. package/lib/es/form/section.d.ts +1 -1
  238. package/lib/es/form/slot.js +2 -0
  239. package/lib/es/grid/col.d.ts +3 -3
  240. package/lib/es/grid/row.d.ts +4 -3
  241. package/lib/es/iconButton/index.d.ts +1 -1
  242. package/lib/es/inputNumber/index.d.ts +1 -1
  243. package/lib/es/layout/Sider.d.ts +4 -1
  244. package/lib/es/layout/index.d.ts +2 -0
  245. package/lib/es/list/index.d.ts +1 -0
  246. package/lib/es/list/item.d.ts +5 -1
  247. package/lib/es/list/item.js +5 -1
  248. package/lib/es/modal/Modal.d.ts +1 -0
  249. package/lib/es/modal/Modal.js +3 -0
  250. package/lib/es/modal/ModalContent.d.ts +7 -2
  251. package/lib/es/modal/confirm.d.ts +10 -5
  252. package/lib/es/modal/useModal/index.d.ts +1 -0
  253. package/lib/es/navigation/Footer.d.ts +3 -5
  254. package/lib/es/navigation/Header.d.ts +4 -6
  255. package/lib/es/navigation/Item.d.ts +4 -6
  256. package/lib/es/navigation/OpenIconTransition.d.ts +2 -1
  257. package/lib/es/navigation/SubNav.d.ts +3 -5
  258. package/lib/es/navigation/SubNav.js +2 -2
  259. package/lib/es/navigation/SubNavTransition.d.ts +1 -1
  260. package/lib/es/navigation/index.d.ts +2 -2
  261. package/lib/es/navigation/nav-context.d.ts +21 -5
  262. package/lib/es/notification/NoticeTransition.d.ts +2 -2
  263. package/lib/es/notification/index.d.ts +3 -1
  264. package/lib/es/notification/notice.d.ts +3 -1
  265. package/lib/es/notification/useNotification/index.d.ts +1 -0
  266. package/lib/es/overflowList/intersectionObserver.d.ts +3 -2
  267. package/lib/es/pagination/index.d.ts +3 -1
  268. package/lib/es/pagination/index.js +15 -11
  269. package/lib/es/popconfirm/index.d.ts +4 -2
  270. package/lib/es/popover/index.d.ts +4 -2
  271. package/lib/es/progress/index.d.ts +1 -1
  272. package/lib/es/radio/radio.d.ts +1 -0
  273. package/lib/es/radio/radioGroup.d.ts +1 -0
  274. package/lib/es/scrollList/scrollItem.js +5 -1
  275. package/lib/es/select/index.d.ts +3 -1
  276. package/lib/es/select/optionGroup.d.ts +1 -1
  277. package/lib/es/sideSheet/SideSheetContent.d.ts +1 -0
  278. package/lib/es/sideSheet/SideSheetTransition.d.ts +1 -1
  279. package/lib/es/sideSheet/index.d.ts +3 -1
  280. package/lib/es/table/Body/BaseRow.d.ts +1 -1
  281. package/lib/es/table/Body/ExpandedRow.d.ts +4 -2
  282. package/lib/es/table/Body/SectionRow.d.ts +3 -1
  283. package/lib/es/table/Column.d.ts +1 -1
  284. package/lib/es/table/ColumnShape.d.ts +1 -1
  285. package/lib/es/table/CustomExpandIcon.d.ts +1 -1
  286. package/lib/es/table/Table.d.ts +10 -8
  287. package/lib/es/table/TableCell.d.ts +5 -3
  288. package/lib/es/table/TableHeaderRow.d.ts +3 -1
  289. package/lib/es/table/index.d.ts +4 -4
  290. package/lib/es/table/table-context.d.ts +7 -6
  291. package/lib/es/tabs/TabPane.d.ts +3 -1
  292. package/lib/es/tabs/TabPane.js +4 -0
  293. package/lib/es/tabs/index.js +2 -0
  294. package/lib/es/tabs/interface.d.ts +2 -1
  295. package/lib/es/tag/group.d.ts +1 -1
  296. package/lib/es/timePicker/Combobox.d.ts +1 -0
  297. package/lib/es/timeline/index.d.ts +2 -1
  298. package/lib/es/timeline/item.d.ts +1 -0
  299. package/lib/es/toast/ToastTransition.d.ts +1 -1
  300. package/lib/es/toast/index.d.ts +8 -16
  301. package/lib/es/toast/toast.d.ts +4 -2
  302. package/lib/es/toast/useToast/index.d.ts +1 -0
  303. package/lib/es/tooltip/index.d.ts +4 -2
  304. package/lib/es/tooltip/index.js +1 -1
  305. package/lib/es/transfer/index.d.ts +4 -3
  306. package/lib/es/transfer/index.js +6 -2
  307. package/lib/es/tree/index.d.ts +13 -11
  308. package/lib/es/tree/nodeList.d.ts +1 -1
  309. package/lib/es/tree/treeContext.d.ts +10 -10
  310. package/lib/es/tree/treeNode.d.ts +11 -9
  311. package/lib/es/tree/treeNode.js +2 -0
  312. package/lib/es/treeSelect/index.d.ts +7 -5
  313. package/lib/es/typography/copyable.d.ts +1 -1
  314. package/lib/es/upload/index.d.ts +2 -2
  315. package/list/index.tsx +1 -0
  316. package/list/item.tsx +6 -1
  317. package/modal/Modal.tsx +3 -0
  318. package/modal/ModalContent.tsx +9 -3
  319. package/modal/confirm.tsx +1 -1
  320. package/navigation/Footer.tsx +3 -1
  321. package/navigation/Header.tsx +3 -1
  322. package/navigation/Item.tsx +4 -3
  323. package/navigation/OpenIconTransition.tsx +2 -1
  324. package/navigation/SubNav.tsx +4 -3
  325. package/navigation/SubNavTransition.tsx +1 -1
  326. package/navigation/nav-context.ts +22 -1
  327. package/notification/NoticeTransition.tsx +1 -1
  328. package/notification/index.tsx +3 -1
  329. package/notification/notice.tsx +3 -1
  330. package/overflowList/_story/overflowList.stories.js +44 -0
  331. package/overflowList/intersectionObserver.tsx +2 -1
  332. package/package.json +9 -9
  333. package/pagination/index.tsx +4 -1
  334. package/popconfirm/index.tsx +3 -1
  335. package/popover/index.tsx +3 -1
  336. package/radio/radio.tsx +1 -0
  337. package/radio/radioGroup.tsx +1 -0
  338. package/scrollList/_story/SingleWheelList/index.js +72 -0
  339. package/scrollList/_story/scrolllist.stories.js +7 -0
  340. package/scrollList/scrollItem.tsx +4 -1
  341. package/select/index.tsx +2 -1
  342. package/select/utils.tsx +1 -1
  343. package/sideSheet/SideSheetContent.tsx +1 -0
  344. package/sideSheet/SideSheetTransition.tsx +1 -1
  345. package/sideSheet/index.tsx +3 -2
  346. package/table/Body/ExpandedRow.tsx +3 -1
  347. package/table/Body/SectionRow.tsx +3 -1
  348. package/table/Body/index.tsx +3 -2
  349. package/table/Table.tsx +4 -3
  350. package/table/TableCell.tsx +6 -4
  351. package/table/TableHeaderRow.tsx +3 -1
  352. package/table/__test__/table.test.js +1 -0
  353. package/table/table-context.ts +10 -6
  354. package/tabs/TabPane.tsx +4 -0
  355. package/tabs/_story/tabs.stories.js +72 -0
  356. package/tabs/index.tsx +3 -2
  357. package/tabs/interface.ts +2 -1
  358. package/tag/group.tsx +5 -5
  359. package/tagInput/_story/tagInput.stories.js +14 -1
  360. package/timePicker/TimePicker.tsx +2 -2
  361. package/timePicker/_story/timepicker.stories.js +20 -1
  362. package/timeline/index.tsx +1 -0
  363. package/timeline/item.tsx +1 -0
  364. package/toast/ToastTransition.tsx +1 -1
  365. package/toast/toast.tsx +3 -1
  366. package/tooltip/_story/tooltip.stories.js +127 -15
  367. package/tooltip/index.tsx +3 -2
  368. package/transfer/index.tsx +7 -2
  369. package/tree/index.tsx +12 -11
  370. package/tree/treeContext.tsx +10 -10
  371. package/tree/treeNode.tsx +10 -7
  372. package/treeSelect/index.tsx +5 -4
  373. package/typography/__test__/typography.test.js +1 -0
  374. package/upload/__test__/upload.test.js +2 -0
  375. package/upload/_story/upload.stories.js +2 -2
  376. package/upload/index.tsx +1 -1
@@ -16,7 +16,7 @@ import ItemFoundation, {
16
16
  import { cssClasses, strings } from '@douyinfe/semi-foundation/navigation/constants';
17
17
 
18
18
  import Tooltip from '../tooltip';
19
- import NavContext from './nav-context';
19
+ import NavContext, { NavContextType } from './nav-context';
20
20
  import Dropdown from '../dropdown';
21
21
 
22
22
  const clsPrefix = `${cssClasses.PREFIX}-item`;
@@ -81,6 +81,7 @@ export default class NavItem extends BaseComponent<NavItemProps, NavItemState> {
81
81
  };
82
82
 
83
83
  foundation: ItemFoundation;
84
+ context: NavContextType;
84
85
  constructor(props: NavItemProps) {
85
86
  super(props);
86
87
  this.state = {
@@ -112,9 +113,9 @@ export default class NavItem extends BaseComponent<NavItemProps, NavItemState> {
112
113
  notifyMouseLeave: (...args) => this.props.onMouseLeave(...args),
113
114
  getIsCollapsed: () => this.props.isCollapsed || Boolean(this.context && this.context.isCollapsed) || false,
114
115
  getSelected: () =>
115
- Boolean(this.context && this.context.selectedKeys && this.context.selectedKeys.includes(this.props.itemKey)),
116
+ Boolean(this.context && this.context.selectedKeys && this.context.selectedKeys.includes(this.props.itemKey as string)),
116
117
  getIsOpen: () =>
117
- Boolean(this.context && this.context.openKeys && this.context.openKeys.includes(this.props.itemKey)),
118
+ Boolean(this.context && this.context.openKeys && this.context.openKeys.includes(this.props.itemKey as string)),
118
119
  };
119
120
  }
120
121
 
@@ -9,7 +9,8 @@ const formatStyle = function formatStyle({ rotate = 0 }) {
9
9
  };
10
10
 
11
11
  export interface OpenIconTransitionProps {
12
- children?: React.ReactNode;
12
+ children?: React.ReactNode | ((transitionArgus?: any) => React.ReactNode);
13
+ isCollapsed?: boolean;
13
14
  isOpen?: boolean;
14
15
  }
15
16
 
@@ -14,7 +14,7 @@ import { IconChevronDown, IconChevronUp, IconChevronRight } from '@douyinfe/semi
14
14
 
15
15
  import NavItem from './Item';
16
16
  import Dropdown, { DropdownProps } from '../dropdown';
17
- import NavContext from './nav-context';
17
+ import NavContext, { NavContextType } from './nav-context';
18
18
 
19
19
  import { times, get } from 'lodash';
20
20
 
@@ -116,6 +116,7 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
116
116
  titleRef: React.RefObject<HTMLDivElement>;
117
117
  itemRef: React.RefObject<HTMLLIElement>;
118
118
  foundation: SubNavFoundation;
119
+ context: NavContextType;
119
120
  constructor(props: SubNavProps) {
120
121
  super(props);
121
122
  this.state = {
@@ -162,9 +163,9 @@ export default class SubNav extends BaseComponent<SubNavProps, SubNavState> {
162
163
  notifyGlobalOpenChange: (...args) => this._invokeContextFunc('onOpenChange', ...args),
163
164
  notifyGlobalOnSelect: (...args) => this._invokeContextFunc('onSelect', ...args),
164
165
  notifyGlobalOnClick: (...args) => this._invokeContextFunc('onClick', ...args),
165
- getIsSelected: itemKey => Boolean(!isNullOrUndefined(itemKey) && get(this.context, 'selectedKeys', []).includes(itemKey)),
166
+ getIsSelected: itemKey => Boolean(!isNullOrUndefined(itemKey) && get(this.context, 'selectedKeys', []).includes(String(itemKey))),
166
167
  getIsOpen: () =>
167
- Boolean(this.context && this.context.openKeys && this.context.openKeys.includes(this.props.itemKey)),
168
+ Boolean(this.context && this.context.openKeys && this.context.openKeys.includes(String(this.props.itemKey))),
168
169
  };
169
170
  }
170
171
 
@@ -13,7 +13,7 @@ const formatStyle = function formatStyle({ maxHeight, opacity }: { maxHeight: nu
13
13
  };
14
14
 
15
15
  export interface SubNavTransitionProps {
16
- children?: React.ReactNode;
16
+ children?: React.ReactNode | ((transitionProps?: any) => React.ReactNode);
17
17
  isCollapsed?: boolean;
18
18
  maxHeight?: number;
19
19
  motion?: Motion;
@@ -1,6 +1,27 @@
1
1
  import React from 'react';
2
2
 
3
- const NavContext = React.createContext({
3
+ import { NavProps } from './index';
4
+ import { Locale } from '../locale/interface';
5
+ export interface NavContextType {
6
+ isCollapsed?: boolean;
7
+ mode?: NavProps['mode'];
8
+ openKeys?: string[];
9
+ onCollapseChange?: NavProps['onCollapseChange'];
10
+ prefixCls?: string;
11
+ selectedKeys?: string[];
12
+ toggleIconPosition?: string;
13
+ selectedKeysIsControlled?: boolean;
14
+ openKeysIsControlled?: boolean;
15
+ limitIndent?: boolean;
16
+ isInSubNav?: boolean;
17
+ locale?: Locale['Navigation'];
18
+ subNavMotion?: NavProps['subNavMotion'];
19
+ subNavCloseDelay?: NavProps['subNavCloseDelay'];
20
+ subNavOpenDelay?: NavProps['subNavOpenDelay'];
21
+ canUpdateOpenKeys?: boolean;
22
+ }
23
+
24
+ const NavContext = React.createContext<NavContextType>({
4
25
  isCollapsed: false,
5
26
  selectedKeys: [],
6
27
  openKeys: [],
@@ -9,7 +9,7 @@ export type ArgsType<T> = T extends (...args: infer A) => any ? A : never;
9
9
  export interface NoticeTransitionProps{
10
10
  position?: NoticePosition;
11
11
  motion?: Motion<NoticeTransitionProps>;
12
- children?: JSXElementConstructor<any> | React.ReactChildren;
12
+ children?: React.ReactNode | ((TransitionProps?: any) => React.ReactNode);
13
13
  }
14
14
 
15
15
  type NoticeTransitionFormatFuncType = (styles: { translate: string;opacity: string | number }) => any;
@@ -2,7 +2,7 @@ import React, { CSSProperties } from 'react';
2
2
  import ReactDOM from 'react-dom';
3
3
  import cls from 'classnames';
4
4
  import PropTypes from 'prop-types';
5
- import ConfigContext from '../configProvider/context';
5
+ import ConfigContext, { ContextValue } from '../configProvider/context';
6
6
  import NotificationListFoundation, {
7
7
  ConfigProps, NotificationListAdapter,
8
8
  NotificationListProps,
@@ -75,6 +75,8 @@ class NotificationList extends BaseComponent<NotificationListProps, Notification
75
75
  this.foundation = new NotificationListFoundation(this.adapter);
76
76
  }
77
77
 
78
+ context: ContextValue;
79
+
78
80
  get adapter(): NotificationListAdapter {
79
81
  return {
80
82
  ...super.adapter,
@@ -2,7 +2,7 @@
2
2
  import React from 'react';
3
3
  import cls from 'classnames';
4
4
  import PropTypes from 'prop-types';
5
- import ConfigContext from '../configProvider/context';
5
+ import ConfigContext, { ContextValue } from '../configProvider/context';
6
6
  import { cssClasses, numbers, strings } from '@douyinfe/semi-foundation/notification/constants';
7
7
  import NotificationFoundation, {
8
8
  NoticeAdapter,
@@ -82,6 +82,8 @@ class Notice extends BaseComponent<NoticeReactProps, NoticeState> {
82
82
  this.foundation = new NotificationFoundation(this.adapter);
83
83
  }
84
84
 
85
+ context: ContextValue;
86
+
85
87
  componentWillUnmount() {
86
88
  this.foundation.destroy();
87
89
  }
@@ -352,5 +352,49 @@ const LargeData = () => {
352
352
  );
353
353
  };
354
354
 
355
+ export const OverflowListWithSlide = () =>{
356
+ const [width, setWidth] = useState(100);
357
+ const renderOverflow = items => {
358
+ return items.length ? <Tag style={{ flex: '0 0 auto' }}>+{items.length}</Tag> : null;
359
+ };
360
+ const renderItem = (item, ind) => {
361
+ return (
362
+ <Tag color="blue" key={item.key} style={{ marginRight: 8, flex: '0 0 auto' }}>
363
+ {item.icon}
364
+ {item.key}
365
+ </Tag>
366
+ );
367
+ };
368
+
369
+ const items = [
370
+ { icon: <IconAlarm style={{ marginRight: 4 }} />, key: 'alarm' },
371
+ { icon: <IconBookmark style={{ marginRight: 4 }} />, key: 'bookmark' },
372
+ { icon: <IconCamera style={{ marginRight: 4 }} />, key: 'camera' },
373
+ { icon: <IconDuration style={{ marginRight: 4 }} />, key: 'duration' },
374
+ { icon: <IconEdit style={{ marginRight: 4 }} />, key: 'edit' },
375
+ { icon: <IconFolder style={{ marginRight: 4 }} />, key: 'folder' },
376
+ ];
377
+
378
+ return (
379
+ <div>
380
+ <Slider step={1} value={width} onChange={value => setWidth(value)} />
381
+ <br />
382
+ <br />
383
+ <div style={{ width: `${width}%` }}>
384
+ <OverflowList
385
+ items={items}
386
+ // minVisibleItems={3}
387
+ overflowRenderer={renderOverflow}
388
+ visibleItemRenderer={renderItem}
389
+ />
390
+ </div>
391
+ </div>
392
+ );
393
+ }
394
+
395
+ OverflowListWithSlide.story = {
396
+ name: 'overflowList with slide',
397
+ };
398
+
355
399
  // TODO large data will cause memory heap
356
400
  // stories.add('large amount of data', () => <LargeData />);
@@ -5,6 +5,7 @@ import { isEqual, isEmpty } from 'lodash';
5
5
  export interface ReactIntersectionObserverProps {
6
6
  onIntersect?: IntersectionObserverCallback;
7
7
  option?: IntersectionObserverInit;
8
+ children?: React.ReactNode;
8
9
  root?: IntersectionObserverInit['root'];
9
10
  threshold?: IntersectionObserverInit['threshold'];
10
11
  rootMargin?: IntersectionObserverInit['rootMargin'];
@@ -86,7 +87,7 @@ export default class ReactIntersectionObserver extends React.PureComponent<React
86
87
  });
87
88
  }
88
89
 
89
- render(): ReactNode {
90
+ render() {
90
91
  const { children } = this.props;
91
92
  return children;
92
93
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@douyinfe/semi-ui",
3
- "version": "2.9.0-beta.0",
3
+ "version": "2.9.1",
4
4
  "description": "",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es/index.js",
@@ -14,12 +14,12 @@
14
14
  },
15
15
  "dependencies": {
16
16
  "@babel/runtime-corejs3": "^7.15.4",
17
- "@douyinfe/semi-animation": "2.9.0-beta.0",
18
- "@douyinfe/semi-animation-react": "2.9.0-beta.0",
19
- "@douyinfe/semi-foundation": "2.9.0-beta.0",
20
- "@douyinfe/semi-icons": "2.9.0-beta.0",
21
- "@douyinfe/semi-illustrations": "2.9.0-beta.0",
22
- "@douyinfe/semi-theme-default": "2.9.0-beta.0",
17
+ "@douyinfe/semi-animation": "2.9.1",
18
+ "@douyinfe/semi-animation-react": "2.9.1",
19
+ "@douyinfe/semi-foundation": "2.9.1",
20
+ "@douyinfe/semi-icons": "2.9.1",
21
+ "@douyinfe/semi-illustrations": "2.9.1",
22
+ "@douyinfe/semi-theme-default": "2.9.1",
23
23
  "@types/react-window": "^1.8.2",
24
24
  "async-validator": "^3.5.0",
25
25
  "classnames": "^2.2.6",
@@ -69,13 +69,13 @@
69
69
  ],
70
70
  "author": "",
71
71
  "license": "MIT",
72
- "gitHead": "acb1db546e6d3b2a7a40467d83d4b1e1b51e2b21",
72
+ "gitHead": "9593ab23b59b5a18305627ac402cfd4527072f9c",
73
73
  "devDependencies": {
74
74
  "@babel/plugin-proposal-decorators": "^7.15.8",
75
75
  "@babel/plugin-transform-runtime": "^7.15.8",
76
76
  "@babel/preset-env": "^7.15.8",
77
77
  "@babel/preset-react": "^7.14.5",
78
- "@douyinfe/semi-scss-compile": "2.9.0-beta.0",
78
+ "@douyinfe/semi-scss-compile": "2.9.1",
79
79
  "@storybook/addon-knobs": "^6.3.1",
80
80
  "@types/lodash": "^4.14.176",
81
81
  "babel-loader": "^8.2.2",
@@ -17,7 +17,7 @@ import { numbers as popoverNumbers } from '@douyinfe/semi-foundation/popover/con
17
17
  import { IconChevronLeft, IconChevronRight } from '@douyinfe/semi-icons';
18
18
  import warning from '@douyinfe/semi-foundation/utils/warning';
19
19
 
20
- import ConfigContext from '../configProvider/context';
20
+ import ConfigContext, { ContextValue } from '../configProvider/context';
21
21
  import LocaleConsumer from '../locale/localeConsumer';
22
22
  import { Locale } from '../locale/interface';
23
23
  import Select from '../select/index';
@@ -135,6 +135,8 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
135
135
  );
136
136
  }
137
137
 
138
+ context: ContextValue;
139
+
138
140
  get adapter(): PaginationAdapter<PaginationProps, PaginationState> {
139
141
  return {
140
142
  ...super.adapter,
@@ -371,6 +373,7 @@ export default class Pagination extends BaseComponent<PaginationProps, Paginatio
371
373
  const itemHeight = 32;
372
374
  const listHeight = count >= 5 ? itemHeight * 5 : itemHeight * count;
373
375
  return (
376
+ // @ts-ignore skip type check cause react-window not update with @types/react 18
374
377
  <List
375
378
  className={`${prefixCls}-rest-list`}
376
379
  itemData={restList}
@@ -11,7 +11,7 @@ import Popover, { PopoverProps } from '../popover';
11
11
  import { Position, Trigger } from '../tooltip';
12
12
  import Button, { ButtonProps } from '../button';
13
13
  import { Type as ButtonType } from '../button/Button';
14
- import ConfigContext from '../configProvider/context';
14
+ import ConfigContext, { ContextValue } from '../configProvider/context';
15
15
  import LocaleConsumer from '../locale/localeConsumer';
16
16
  import { Locale as LocaleObject } from '../locale/interface';
17
17
  import '@douyinfe/semi-foundation/popconfirm/popconfirm.scss';
@@ -105,6 +105,8 @@ export default class Popconfirm extends BaseComponent<PopconfirmProps, Popconfir
105
105
  this.foundation = new PopconfirmFoundation(this.adapter);
106
106
  }
107
107
 
108
+ context: ContextValue;
109
+
108
110
  static getDerivedStateFromProps(props: PopconfirmProps, state: PopconfirmState) {
109
111
  const willUpdateStates: Partial<PopconfirmState> = {};
110
112
  const { hasOwnProperty } = Object.prototype;
package/popover/index.tsx CHANGED
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import classNames from 'classnames';
3
3
  import PropTypes from 'prop-types';
4
- import ConfigContext from '../configProvider/context';
4
+ import ConfigContext, { ContextValue } from '../configProvider/context';
5
5
  import { cssClasses, strings, numbers } from '@douyinfe/semi-foundation/popover/constants';
6
6
  import Tooltip, { ArrowBounding, Position, TooltipProps, Trigger, RenderContentProps } from '../tooltip/index';
7
7
  import Arrow from './Arrow';
@@ -101,6 +101,8 @@ class Popover extends React.PureComponent<PopoverProps, PopoverState> {
101
101
  guardFocus: true,
102
102
  };
103
103
 
104
+ context: ContextValue;
105
+
104
106
  renderPopCard = ({ initialFocusRef }: { initialFocusRef: RenderContentProps['initialFocusRef'] }) => {
105
107
  const { content, contentClassName, prefixCls } = this.props;
106
108
  const { direction } = this.context;
package/radio/radio.tsx CHANGED
@@ -24,6 +24,7 @@ export type RadioType =
24
24
  export type RadioProps = {
25
25
  autoFocus?: boolean;
26
26
  checked?: boolean;
27
+ children?: React.ReactNode | undefined;
27
28
  defaultChecked?: boolean;
28
29
  value?: string | number;
29
30
  disabled?: boolean;
@@ -30,6 +30,7 @@ export type RadioGroupProps = {
30
30
  value?: string | number;
31
31
  onChange?: (event: RadioChangeEvent) => void;
32
32
  className?: string;
33
+ children?: React.ReactNode | undefined;
33
34
  style?: React.CSSProperties;
34
35
  direction?: ArrayElement<typeof strings.DIRECTION_SET>;
35
36
  mode?: RadioMode;
@@ -0,0 +1,72 @@
1
+ import { ScrollList, ScrollItem, Button } from '@douyinfe/semi-ui';
2
+ import React from 'react';
3
+
4
+ class SingleScrollListDemo extends React.Component {
5
+ constructor(props) {
6
+ super(props);
7
+ this.state = {
8
+ selectIndex3: -2,
9
+ };
10
+
11
+ this.minutes = new Array(60).fill(0).map((itm, index) => {
12
+ return {
13
+ value: index,
14
+ disabled: index % 2 === 1 ? true : false,
15
+ };
16
+ });
17
+ this.onSelectMinute = this.onSelectMinute.bind(this);
18
+ this.handleClose = this.handleClose.bind(this);
19
+ this.renderFooter = this.renderFooter.bind(this);
20
+ }
21
+
22
+
23
+ onSelectMinute(data) {
24
+ console.log('You have choose the minute for: ', data.value);
25
+ this.setState({
26
+ ['selectIndex' + data.type]: data.index,
27
+ });
28
+ }
29
+
30
+ handleClose() {
31
+ console.log('close');
32
+ }
33
+
34
+ renderFooter() {
35
+ return (
36
+ <Button size="small" type="primary" onClick={this.handleClose}>
37
+ Ok
38
+ </Button>
39
+ );
40
+ }
41
+
42
+ render() {
43
+ let list = this.list;
44
+ const scrollStyle = {
45
+ border: 'unset',
46
+ boxShadow: 'unset',
47
+ };
48
+ const commonProps = {
49
+ // mode: 'normal',
50
+ mode: 'wheel',
51
+ cycled: false,
52
+ motion: false,
53
+ };
54
+ return (
55
+ <div>
56
+ <ScrollList style={scrollStyle} header={'单个无限滚动列表'} footer={this.renderFooter()}>
57
+ <ScrollItem
58
+ {...commonProps}
59
+ list={this.minutes}
60
+ type={3}
61
+ selectedIndex={this.state.selectIndex3}
62
+ onSelect={this.onSelectMinute}
63
+ aria-label="分钟"
64
+ cycled
65
+ />
66
+ </ScrollList>
67
+ </div>
68
+ );
69
+ }
70
+ }
71
+
72
+ export default SingleScrollListDemo;
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  import WheelListDemo from './WheelList';
3
3
  import ScrollListDemo from './ScrollList';
4
+ import SingleScrollListDemo from './SingleWheelList';
4
5
 
5
6
 
6
7
  export default {
@@ -24,3 +25,9 @@ export const _WheelListDemo = () => <WheelListDemo />;
24
25
  _WheelListDemo.story = {
25
26
  name: 'wheel list demo',
26
27
  };
28
+
29
+ export const SingleScrollList = () => <SingleScrollListDemo />;
30
+
31
+ SingleScrollList.story = {
32
+ name: 'single scroll list demo',
33
+ };
@@ -178,6 +178,7 @@ export default class ScrollItem<T extends Item> extends BaseComponent<ScrollItem
178
178
 
179
179
  _cacheWrapperNode = (wrapper: Element) => this._cacheNode('wrapper', wrapper);
180
180
 
181
+ /* istanbul ignore next */
181
182
  _isFirst = (node: Element) => {
182
183
  const { list } = this;
183
184
 
@@ -191,6 +192,8 @@ export default class ScrollItem<T extends Item> extends BaseComponent<ScrollItem
191
192
  return false;
192
193
  };
193
194
 
195
+
196
+ /* istanbul ignore next */
194
197
  _isLast = (node: Element) => {
195
198
  const { list } = this;
196
199
 
@@ -326,7 +329,7 @@ export default class ScrollItem<T extends Item> extends BaseComponent<ScrollItem
326
329
  const { wrapper } = this;
327
330
  const wrapperHeight = wrapper.offsetHeight;
328
331
  const itemHeight = this.getItmHeight(node);
329
- const targetTop = node.offsetTop - (wrapperHeight - itemHeight) / 2;
332
+ const targetTop = (node.offsetTop || this.list.children.length * itemHeight / 2 ) - (wrapperHeight - itemHeight) / 2;
330
333
 
331
334
  this.scrollToPos(targetTop, duration);
332
335
  };
package/select/index.tsx CHANGED
@@ -4,7 +4,7 @@ import React, { Fragment, MouseEvent, ReactInstance } from 'react';
4
4
  import ReactDOM from 'react-dom';
5
5
  import cls from 'classnames';
6
6
  import PropTypes from 'prop-types';
7
- import ConfigContext from '../configProvider/context';
7
+ import ConfigContext, { ContextValue } from '../configProvider/context';
8
8
  import SelectFoundation, { SelectAdapter } from '@douyinfe/semi-foundation/select/foundation';
9
9
  import { cssClasses, strings, numbers } from '@douyinfe/semi-foundation/select/constants';
10
10
  import BaseComponent, { ValidateStatus } from '../_base/baseComponent';
@@ -321,6 +321,7 @@ class Select extends BaseComponent<SelectProps, SelectState> {
321
321
  selectOptionListID: string;
322
322
  clickOutsideHandler: (e: MouseEvent) => void;
323
323
  foundation: SelectFoundation;
324
+ context: ContextValue;
324
325
 
325
326
  constructor(props: SelectProps) {
326
327
  super(props);
package/select/utils.tsx CHANGED
@@ -68,7 +68,7 @@ const getOptionsFromGroup = (selectChildren: React.ReactNode) => {
68
68
  }
69
69
  });
70
70
  if (type === 'option') {
71
- optionGroups = [emptyGroup];
71
+ optionGroups = [emptyGroup] as OptionGroupProps[];
72
72
  }
73
73
  return { optionGroups, options };
74
74
  };
@@ -23,6 +23,7 @@ export interface SideSheetContentProps {
23
23
  style: CSSProperties;
24
24
  bodyStyle?: CSSProperties;
25
25
  className: string;
26
+ children?: React.ReactNode | undefined;
26
27
  footer?: React.ReactNode;
27
28
  'aria-label'?: string;
28
29
  }
@@ -4,7 +4,7 @@ import React, { CSSProperties } from 'react';
4
4
  import { Motion } from '../_base/base';
5
5
 
6
6
  export interface SideSheetTransitionProps{
7
- children?: React.ReactChildren | React.JSXElementConstructor<any>;
7
+ children?: React.ReactNode | ((TransitionProps: any) => React.ReactNode);
8
8
  motion?: Motion<SideSheetTransitionProps>;
9
9
  controlled?: boolean;
10
10
  visible?: boolean;
@@ -4,7 +4,7 @@ import BaseComponent from '../_base/baseComponent';
4
4
  import PropTypes from 'prop-types';
5
5
  import Portal from '../_portal';
6
6
  import cls from 'classnames';
7
- import ConfigContext from '../configProvider/context';
7
+ import ConfigContext, { ContextValue } from '../configProvider/context';
8
8
  import { cssClasses, strings } from '@douyinfe/semi-foundation/sideSheet/constants';
9
9
  import SideSheetTransition from './SideSheetTransition';
10
10
  import SideSheetContent from './SideSheetContent';
@@ -32,7 +32,6 @@ export interface SideSheetReactProps extends SideSheetProps {
32
32
  footer?: React.ReactNode;
33
33
  children?: React.ReactNode;
34
34
  onCancel?: (e: React.MouseEvent | React.KeyboardEvent) => void;
35
-
36
35
  }
37
36
 
38
37
  export {
@@ -93,6 +92,8 @@ export default class SideSheet extends BaseComponent<SideSheetReactProps, SideSh
93
92
  this._active = false;
94
93
  }
95
94
 
95
+ context: ContextValue;
96
+
96
97
  get adapter(): SideSheetAdapter {
97
98
  return {
98
99
  ...super.adapter,
@@ -7,7 +7,7 @@ import { get, set, isNull } from 'lodash';
7
7
  import { cssClasses, strings } from '@douyinfe/semi-foundation/table/constants';
8
8
  import { arrayAdd, filterColumns } from '@douyinfe/semi-foundation/table/utils';
9
9
  import Store from '@douyinfe/semi-foundation/utils/Store';
10
- import TableContext from '../table-context';
10
+ import TableContext, { TableContextProps } from '../table-context';
11
11
  import TableRow from './BaseRow';
12
12
  import { amendTableWidth } from '../utils';
13
13
  import { ColumnProps, ExpandIcon, TableComponents, Virtualized, Fixed } from '../interface';
@@ -68,6 +68,8 @@ export default class TableExpandedRow extends PureComponent<TableExpandedRowProp
68
68
  prefixCls: cssClasses.PREFIX,
69
69
  };
70
70
 
71
+ context: TableContextProps;
72
+
71
73
  render() {
72
74
  const {
73
75
  record,
@@ -10,7 +10,7 @@ import Store from '@douyinfe/semi-foundation/utils/Store';
10
10
  import { cssClasses, strings } from '@douyinfe/semi-foundation/table/constants';
11
11
  import { filterColumns } from '@douyinfe/semi-foundation/table/utils';
12
12
  import BaseRow from './BaseRow';
13
- import TableContext from '../table-context';
13
+ import TableContext, { TableContextProps } from '../table-context';
14
14
  import {
15
15
  ColumnProps,
16
16
  RenderGroupSection,
@@ -79,6 +79,8 @@ class SectionRow extends PureComponent<SectionRowProps> {
79
79
  },
80
80
  };
81
81
 
82
+ context: TableContextProps;
83
+
82
84
  onRow = (...args: any[]): OnRowReturnObject => {
83
85
  const { onGroupedRow, clickGroupedRowToExpand, onExpand, groupKey, expanded } = this.props;
84
86
  const rowProps: { onClick?: (e: React.MouseEvent) => void } = {};
@@ -30,7 +30,7 @@ import ExpandedRow from './ExpandedRow';
30
30
  import SectionRow from './SectionRow';
31
31
  import TableHeader from '../TableHeader';
32
32
  import ConfigContext from '../../configProvider/context';
33
- import TableContext from '../table-context';
33
+ import TableContext, { TableContextProps } from '../table-context';
34
34
  import {
35
35
  ExpandedRowRender,
36
36
  Virtualized,
@@ -132,6 +132,7 @@ class Body extends BaseComponent<BodyProps, BodyState> {
132
132
  foundation: BodyFoundation;
133
133
  cellWidths: number[];
134
134
  flattenedColumns: ColumnProps[];
135
+ context: TableContextProps;
135
136
  constructor(props: BodyProps, context: BodyContext) {
136
137
  super(props);
137
138
  this.ref = React.createRef();
@@ -271,7 +272,7 @@ class Body extends BaseComponent<BodyProps, BodyState> {
271
272
 
272
273
  itemKey = (index: number, data: Array<FlattenData | GroupFlattenData>) => get(data, [index, 'key'], index);
273
274
 
274
- handleRowClick = (rowKey: RowKey<any>, e: React.MouseEvent, expand: boolean) => {
275
+ handleRowClick = (rowKey: RowKey<any>, e: React.MouseEvent<HTMLElement>, expand: boolean) => {
275
276
  const { handleRowExpanded } = this.context;
276
277
  handleRowExpanded(!expand, rowKey, e);
277
278
  };
package/table/Table.tsx CHANGED
@@ -353,6 +353,7 @@ class Table<RecordType extends Record<string, any>> extends BaseComponent<Normal
353
353
  scrollPosition!: BodyScrollPosition;
354
354
  position!: BodyScrollPosition;
355
355
  foundation: TableFoundation<RecordType>;
356
+ context: TableContextProps;
356
357
  constructor(props: NormalTableProps<RecordType>, context: TableContextProps) {
357
358
  super(props);
358
359
  this.foundation = new TableFoundation<RecordType>(this.adapter);
@@ -789,7 +790,7 @@ class Table<RecordType extends Record<string, any>> extends BaseComponent<Normal
789
790
  }
790
791
  };
791
792
 
792
- renderSelection = (record: RecordType = {} as RecordType, inHeader = false): React.ReactNode => {
793
+ renderSelection = (record = {} as any, inHeader = false): React.ReactNode => {
793
794
  const { rowSelection, disabledRowKeysSet } = this.state;
794
795
 
795
796
  if (rowSelection && typeof rowSelection === 'object') {
@@ -1005,7 +1006,7 @@ class Table<RecordType extends Record<string, any>> extends BaseComponent<Normal
1005
1006
  );
1006
1007
  };
1007
1008
 
1008
- renderTitle = (props: { title?: ReactNode; prefixCls?: string; dataSource?: any[] } = {}) => {
1009
+ renderTitle = (props: { title?: ReactNode | ((dataSource?: RecordType[]) => ReactNode); prefixCls?: string; dataSource?: any[] } = {}) => {
1009
1010
  let { title } = props;
1010
1011
  const { prefixCls, dataSource } = props;
1011
1012
 
@@ -1038,7 +1039,7 @@ class Table<RecordType extends Record<string, any>> extends BaseComponent<Normal
1038
1039
  );
1039
1040
  };
1040
1041
 
1041
- renderFooter = (props: { footer?: ReactNode; prefixCls?: string; dataSource?: RecordType[] } = {}) => {
1042
+ renderFooter = (props: { footer?: ReactNode | ((dataSource?: RecordType[]) => ReactNode); prefixCls?: string; dataSource?: RecordType[] } = {}) => {
1042
1043
  let { footer } = props;
1043
1044
  const { prefixCls, dataSource } = props;
1044
1045