@king-design/intact 3.0.0-beta.0 → 3.0.0-beta.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 (504) hide show
  1. package/README.md +1 -1
  2. package/components/button/demos/basic.md +1 -0
  3. package/components/button/demos/group.md +11 -0
  4. package/components/button/demos/icon.md +1 -0
  5. package/components/button/index.md +1 -1
  6. package/components/button/index.ts +2 -2
  7. package/components/button/styles.ts +6 -1
  8. package/components/cascader/index.md +18 -0
  9. package/components/cascader/index.spec.ts +56 -0
  10. package/components/cascader/index.ts +35 -12
  11. package/components/cascader/index.vdt +9 -8
  12. package/components/cascader/styles.ts +2 -1
  13. package/components/cascader/useFields.ts +22 -0
  14. package/components/cascader/useFilterable.ts +23 -8
  15. package/components/cascader/useLabel.ts +7 -4
  16. package/components/cascader/useLoad.ts +4 -2
  17. package/components/code/demos/basic.md +1 -1
  18. package/components/colorpicker/index.md +16 -0
  19. package/components/colorpicker/index.ts +4 -0
  20. package/components/colorpicker/index.vdt +3 -2
  21. package/components/copy/demos/basic.md +12 -0
  22. package/components/copy/demos/children.md +37 -0
  23. package/components/copy/index.md +21 -0
  24. package/components/copy/index.spec.ts +21 -0
  25. package/components/copy/index.ts +37 -0
  26. package/components/copy/index.vdt +23 -0
  27. package/components/copy/styles.ts +9 -0
  28. package/components/copy/useCopy.ts +91 -0
  29. package/components/datepicker/demos/basic.md +1 -0
  30. package/components/datepicker/index.md +13 -0
  31. package/components/datepicker/index.spec.ts +2 -2
  32. package/components/datepicker/index.vdt +2 -2
  33. package/components/datepicker/styles.ts +10 -4
  34. package/components/dialog/alert.vdt +10 -6
  35. package/components/dialog/index.spec.ts +6 -6
  36. package/components/dropdown/demos/tooltip.md +1 -1
  37. package/components/dropdown/dropdown.ts +51 -79
  38. package/components/dropdown/index.spec.ts +52 -3
  39. package/components/dropdown/item.ts +18 -7
  40. package/components/dropdown/menu.ts +4 -4
  41. package/components/dropdown/usePosition.ts +12 -1
  42. package/components/editable/index.ts +17 -3
  43. package/components/editable/index.vdt +1 -0
  44. package/components/form/index.spec.ts +1 -1
  45. package/components/form/item.vdt +1 -1
  46. package/components/form/styles.ts +20 -25
  47. package/components/grid/useGutter.ts +7 -6
  48. package/components/input/demos/autoRows.md +44 -0
  49. package/components/input/demos/flat.md +16 -0
  50. package/components/input/demos/password.md +12 -0
  51. package/components/input/demos/textarea.md +2 -2
  52. package/components/input/index.md +2 -0
  53. package/components/input/index.spec.ts +97 -1
  54. package/components/input/index.ts +21 -13
  55. package/components/input/index.vdt +30 -6
  56. package/components/input/styles.ts +33 -2
  57. package/components/input/useAutoRows.ts +65 -0
  58. package/components/input/useAutoWidth.ts +12 -3
  59. package/components/input/useShowPassword.ts +27 -0
  60. package/components/menu/demos/collapse.md +1 -1
  61. package/components/menu/index.spec.ts +9 -1
  62. package/components/menu/item.ts +7 -0
  63. package/components/pagination/demos/flat.md +22 -0
  64. package/components/pagination/index.md +1 -1
  65. package/components/pagination/index.spec.ts +23 -0
  66. package/components/pagination/index.ts +4 -3
  67. package/components/pagination/index.vdt +6 -9
  68. package/components/pagination/styles.ts +2 -2
  69. package/components/popover/content.ts +40 -0
  70. package/components/popover/content.vdt +32 -0
  71. package/components/popover/demos/basic.md +47 -0
  72. package/components/popover/demos/button.md +49 -0
  73. package/components/popover/demos/content.md +36 -0
  74. package/components/popover/demos/text.md +38 -0
  75. package/components/popover/demos/type.md +51 -0
  76. package/components/popover/index.md +54 -0
  77. package/components/popover/index.spec.ts +91 -0
  78. package/components/popover/index.ts +52 -0
  79. package/components/popover/styles.ts +45 -0
  80. package/components/portal.ts +4 -4
  81. package/components/position.ts +5 -1
  82. package/components/progress/demos/children.md +1 -1
  83. package/components/progress/demos/circleSize.md +84 -0
  84. package/components/progress/demos/customColor.md +1 -3
  85. package/components/progress/index.ts +1 -1
  86. package/components/progress/index.vdt +36 -7
  87. package/components/progress/styles.ts +34 -21
  88. package/components/rate/styles.ts +1 -0
  89. package/components/select/base.ts +11 -3
  90. package/components/select/base.vdt +39 -35
  91. package/components/select/demos/basic.md +21 -12
  92. package/components/select/demos/creatable.md +1 -1
  93. package/components/select/demos/draggable.md +55 -0
  94. package/components/select/demos/flat.md +42 -0
  95. package/components/select/demos/nowrap.md +24 -0
  96. package/components/select/demos/size.md +41 -1
  97. package/components/select/index.md +12 -0
  98. package/components/select/index.spec.ts +2 -2
  99. package/components/select/menu.vdt +5 -5
  100. package/components/select/styles.ts +52 -38
  101. package/components/select/useDraggble.ts +12 -0
  102. package/components/select/useNowrap.ts +24 -0
  103. package/components/slider/index.spec.ts +32 -1
  104. package/components/slider/index.ts +2 -2
  105. package/components/slider/index.vdt +34 -16
  106. package/components/slider/styles.ts +21 -13
  107. package/components/slider/useValue.ts +15 -3
  108. package/components/spinner/index.md +1 -1
  109. package/components/spinner/index.ts +0 -9
  110. package/components/spinner/index.vdt +7 -4
  111. package/components/spinner/useChange.ts +2 -2
  112. package/components/spinner/useValue.ts +9 -1
  113. package/components/split/index.vdt +13 -3
  114. package/components/split/memo.ts +29 -0
  115. package/components/steps/demos/vertical.md +79 -0
  116. package/components/steps/index.md +1 -0
  117. package/components/steps/index.spec.ts +1 -1
  118. package/components/steps/index.ts +3 -1
  119. package/components/steps/index.vdt +4 -3
  120. package/components/steps/step.vdt +1 -1
  121. package/components/steps/styles.ts +154 -25
  122. package/components/switch/demos/onOff.md +2 -2
  123. package/components/switch/index.spec.ts +15 -10
  124. package/components/table/cell.ts +4 -5
  125. package/components/table/demos/hideHeader.md +33 -0
  126. package/components/table/demos/pagination.md +53 -0
  127. package/components/table/index.md +22 -0
  128. package/components/table/index.spec.ts +73 -1
  129. package/components/table/row.ts +3 -3
  130. package/components/table/styles.ts +5 -0
  131. package/components/table/table.ts +29 -4
  132. package/components/table/table.vdt +21 -3
  133. package/components/table/useChecked.ts +21 -6
  134. package/components/table/useDisableRow.ts +3 -2
  135. package/components/table/useDraggable.ts +12 -8
  136. package/components/table/useGroup.ts +2 -0
  137. package/components/table/useMerge.ts +6 -3
  138. package/components/table/usePagination.ts +71 -0
  139. package/components/table/useRestRowStatus.ts +4 -1
  140. package/components/table/useStickyScrollbar.ts +2 -2
  141. package/components/table/useTree.ts +4 -3
  142. package/components/table/useWidth.ts +2 -2
  143. package/components/tabs/demos/beforeChange.md +2 -2
  144. package/components/tabs/demos/card.md +2 -11
  145. package/components/tabs/demos/closable.md +7 -6
  146. package/components/tabs/demos/scroll.md +104 -0
  147. package/components/tabs/demos/vertical.md +1 -9
  148. package/components/tabs/index.md +1 -1
  149. package/components/tabs/index.spec.ts +36 -0
  150. package/components/tabs/index.ts +11 -12
  151. package/components/tabs/index.vdt +6 -7
  152. package/components/tabs/styles.ts +113 -144
  153. package/components/tabs/useScroll.ts +101 -42
  154. package/components/tag/base.ts +1 -1
  155. package/components/tag/demos/draggable.md +49 -0
  156. package/components/tag/demos/tags.md +72 -0
  157. package/components/tag/index.md +11 -0
  158. package/components/tag/index.spec.ts +70 -2
  159. package/components/tag/index.ts +2 -0
  160. package/components/tag/styles.ts +53 -4
  161. package/components/tag/tags.ts +54 -0
  162. package/components/tag/tags.vdt +49 -0
  163. package/components/tag/useChildren.ts +42 -0
  164. package/components/tag/useDraggable.ts +97 -0
  165. package/components/tag/useNowrap.ts +117 -0
  166. package/components/timepicker/index.md +13 -0
  167. package/components/timepicker/index.spec.ts +1 -1
  168. package/components/tooltip/content.ts +21 -7
  169. package/components/tooltip/content.vdt +14 -8
  170. package/components/tooltip/demos/trigger.md +1 -1
  171. package/components/tooltip/index.md +3 -6
  172. package/components/tooltip/index.spec.ts +69 -40
  173. package/components/tooltip/styles.ts +3 -3
  174. package/components/tooltip/tooltip.ts +7 -1
  175. package/components/treeSelect/index.md +11 -0
  176. package/components/upload/index.spec.ts +4 -4
  177. package/components/upload/index.vdt +1 -1
  178. package/components/upload/styles.ts +0 -2
  179. package/components/utils.ts +25 -4
  180. package/components/virtual.ts +98 -0
  181. package/es/components/button/index.d.ts +1 -1
  182. package/es/components/button/index.js +1 -1
  183. package/es/components/button/styles.js +1 -1
  184. package/es/components/cascader/index.d.ts +22 -11
  185. package/es/components/cascader/index.js +9 -12
  186. package/es/components/cascader/index.spec.js +81 -0
  187. package/es/components/cascader/index.vdt.js +10 -8
  188. package/es/components/cascader/styles.js +1 -1
  189. package/es/components/cascader/useFields.d.ts +2 -0
  190. package/es/components/cascader/useFields.js +18 -0
  191. package/es/components/cascader/useFilterable.d.ts +2 -1
  192. package/es/components/cascader/useFilterable.js +17 -6
  193. package/es/components/cascader/useLabel.d.ts +2 -1
  194. package/es/components/cascader/useLabel.js +4 -4
  195. package/es/components/cascader/useLoad.d.ts +2 -1
  196. package/es/components/cascader/useLoad.js +9 -7
  197. package/es/components/colorpicker/index.d.ts +2 -0
  198. package/es/components/colorpicker/index.js +7 -2
  199. package/es/components/colorpicker/index.vdt.js +3 -6
  200. package/es/components/copy/index.d.ts +17 -0
  201. package/es/components/copy/index.js +43 -0
  202. package/es/components/copy/index.spec.d.ts +1 -0
  203. package/es/components/copy/index.spec.js +52 -0
  204. package/es/components/copy/index.vdt.js +45 -0
  205. package/es/components/copy/styles.d.ts +2 -0
  206. package/es/components/copy/styles.js +14 -0
  207. package/es/components/copy/useCopy.d.ts +4 -0
  208. package/es/components/copy/useCopy.js +90 -0
  209. package/es/components/datepicker/index.spec.js +1 -1
  210. package/es/components/datepicker/index.vdt.js +1 -1
  211. package/es/components/datepicker/styles.js +1 -1
  212. package/es/components/diagram/shapes/callout.d.ts +1 -1
  213. package/es/components/diagram/shapes/circle.d.ts +1 -1
  214. package/es/components/diagram/shapes/document.d.ts +1 -1
  215. package/es/components/diagram/shapes/ellipse.d.ts +1 -1
  216. package/es/components/diagram/shapes/hexagon.d.ts +1 -1
  217. package/es/components/diagram/shapes/image.d.ts +1 -1
  218. package/es/components/diagram/shapes/parallelogram.d.ts +1 -1
  219. package/es/components/diagram/shapes/rectangle.d.ts +1 -1
  220. package/es/components/diagram/shapes/square.d.ts +1 -1
  221. package/es/components/diagram/shapes/text.d.ts +1 -1
  222. package/es/components/dialog/alert.vdt.js +6 -5
  223. package/es/components/dialog/index.spec.js +6 -6
  224. package/es/components/dropdown/dropdown.d.ts +6 -6
  225. package/es/components/dropdown/dropdown.js +58 -75
  226. package/es/components/dropdown/index.spec.js +96 -17
  227. package/es/components/dropdown/item.d.ts +1 -1
  228. package/es/components/dropdown/item.js +19 -7
  229. package/es/components/dropdown/menu.js +1 -1
  230. package/es/components/dropdown/usePosition.js +11 -2
  231. package/es/components/editable/index.d.ts +1 -0
  232. package/es/components/editable/index.js +20 -6
  233. package/es/components/editable/index.vdt.js +2 -1
  234. package/es/components/form/index.spec.js +4 -2
  235. package/es/components/form/item.vdt.js +2 -1
  236. package/es/components/form/styles.js +4 -4
  237. package/es/components/grid/useGutter.js +8 -8
  238. package/es/components/input/index.d.ts +11 -2
  239. package/es/components/input/index.js +13 -13
  240. package/es/components/input/index.spec.js +169 -1
  241. package/es/components/input/index.vdt.js +28 -7
  242. package/es/components/input/styles.js +20 -3
  243. package/es/components/input/useAutoRows.d.ts +2 -0
  244. package/es/components/input/useAutoRows.js +79 -0
  245. package/es/components/input/useAutoWidth.js +13 -3
  246. package/es/components/input/useShowPassword.d.ts +7 -0
  247. package/es/components/input/useShowPassword.js +31 -0
  248. package/es/components/menu/index.spec.js +26 -15
  249. package/es/components/menu/item.d.ts +2 -0
  250. package/es/components/menu/item.js +5 -0
  251. package/es/components/pagination/index.d.ts +1 -1
  252. package/es/components/pagination/index.js +3 -2
  253. package/es/components/pagination/index.spec.js +49 -0
  254. package/es/components/pagination/index.vdt.js +8 -10
  255. package/es/components/pagination/styles.js +1 -1
  256. package/es/components/popover/content.d.ts +19 -0
  257. package/es/components/popover/content.js +31 -0
  258. package/es/components/popover/content.vdt.js +68 -0
  259. package/es/components/popover/index.d.ts +16 -0
  260. package/es/components/popover/index.js +44 -0
  261. package/es/components/popover/index.spec.d.ts +1 -0
  262. package/es/components/popover/index.spec.js +195 -0
  263. package/es/components/popover/styles.d.ts +1 -0
  264. package/es/components/popover/styles.js +22 -0
  265. package/es/components/portal.d.ts +6 -2
  266. package/es/components/portal.js +4 -3
  267. package/es/components/position.js +2 -1
  268. package/es/components/progress/index.js +1 -1
  269. package/es/components/progress/index.vdt.js +46 -8
  270. package/es/components/progress/styles.js +19 -13
  271. package/es/components/rate/styles.js +1 -1
  272. package/es/components/select/base.d.ts +7 -3
  273. package/es/components/select/base.js +9 -3
  274. package/es/components/select/base.vdt.js +46 -35
  275. package/es/components/select/index.spec.js +2 -2
  276. package/es/components/select/menu.vdt.js +1 -1
  277. package/es/components/select/styles.js +11 -5
  278. package/es/components/select/useDraggble.d.ts +2 -0
  279. package/es/components/select/useDraggble.js +11 -0
  280. package/es/components/select/useNowrap.d.ts +3 -0
  281. package/es/components/select/useNowrap.js +19 -0
  282. package/es/components/slider/index.spec.js +48 -9
  283. package/es/components/slider/index.vdt.js +23 -12
  284. package/es/components/slider/styles.js +23 -14
  285. package/es/components/slider/useValue.d.ts +3 -1
  286. package/es/components/slider/useValue.js +12 -0
  287. package/es/components/spinner/index.d.ts +0 -1
  288. package/es/components/spinner/index.js +1 -19
  289. package/es/components/spinner/index.vdt.js +9 -4
  290. package/es/components/spinner/useChange.d.ts +1 -1
  291. package/es/components/spinner/useChange.js +2 -2
  292. package/es/components/spinner/useValue.d.ts +1 -0
  293. package/es/components/spinner/useValue.js +16 -1
  294. package/es/components/split/index.vdt.js +32 -20
  295. package/es/components/split/memo.d.ts +9 -0
  296. package/es/components/split/memo.js +26 -0
  297. package/es/components/steps/index.d.ts +1 -0
  298. package/es/components/steps/index.js +2 -1
  299. package/es/components/steps/index.spec.js +1 -1
  300. package/es/components/steps/index.vdt.js +7 -4
  301. package/es/components/steps/step.vdt.js +0 -1
  302. package/es/components/steps/styles.d.ts +1 -0
  303. package/es/components/steps/styles.js +45 -16
  304. package/es/components/switch/index.spec.js +82 -65
  305. package/es/components/table/cell.js +1 -6
  306. package/es/components/table/index.spec.js +130 -19
  307. package/es/components/table/row.d.ts +1 -1
  308. package/es/components/table/row.js +2 -1
  309. package/es/components/table/styles.js +1 -1
  310. package/es/components/table/table.d.ts +15 -0
  311. package/es/components/table/table.js +16 -7
  312. package/es/components/table/table.vdt.js +20 -6
  313. package/es/components/table/useChecked.d.ts +3 -2
  314. package/es/components/table/useChecked.js +23 -12
  315. package/es/components/table/useDisableRow.d.ts +2 -1
  316. package/es/components/table/useDisableRow.js +4 -4
  317. package/es/components/table/useDraggable.d.ts +3 -2
  318. package/es/components/table/useDraggable.js +11 -15
  319. package/es/components/table/useGroup.js +3 -0
  320. package/es/components/table/useMerge.d.ts +2 -1
  321. package/es/components/table/useMerge.js +5 -4
  322. package/es/components/table/usePagination.d.ts +8 -0
  323. package/es/components/table/usePagination.js +81 -0
  324. package/es/components/table/useStickyScrollbar.js +2 -2
  325. package/es/components/table/useTree.d.ts +2 -1
  326. package/es/components/table/useTree.js +3 -4
  327. package/es/components/table/useWidth.js +2 -2
  328. package/es/components/tabs/index.d.ts +1 -1
  329. package/es/components/tabs/index.js +1 -1
  330. package/es/components/tabs/index.spec.js +67 -0
  331. package/es/components/tabs/index.vdt.js +4 -4
  332. package/es/components/tabs/styles.js +32 -34
  333. package/es/components/tabs/useScroll.d.ts +1 -1
  334. package/es/components/tabs/useScroll.js +75 -48
  335. package/es/components/tag/base.d.ts +1 -0
  336. package/es/components/tag/base.js +1 -1
  337. package/es/components/tag/index.d.ts +1 -0
  338. package/es/components/tag/index.js +2 -1
  339. package/es/components/tag/index.spec.js +147 -4
  340. package/es/components/tag/styles.d.ts +67 -0
  341. package/es/components/tag/styles.js +33 -8
  342. package/es/components/tag/tags.d.ts +27 -0
  343. package/es/components/tag/tags.js +51 -0
  344. package/es/components/tag/tags.vdt.js +79 -0
  345. package/es/components/tag/useChildren.d.ts +2 -0
  346. package/es/components/tag/useChildren.js +39 -0
  347. package/es/components/tag/useDraggable.d.ts +3 -0
  348. package/es/components/tag/useDraggable.js +89 -0
  349. package/es/components/tag/useNowrap.d.ts +7 -0
  350. package/es/components/tag/useNowrap.js +115 -0
  351. package/es/components/timepicker/index.spec.js +1 -1
  352. package/es/components/tooltip/content.d.ts +3 -2
  353. package/es/components/tooltip/content.js +18 -1
  354. package/es/components/tooltip/content.vdt.js +22 -10
  355. package/es/components/tooltip/index.spec.js +147 -92
  356. package/es/components/tooltip/styles.d.ts +23 -0
  357. package/es/components/tooltip/styles.js +2 -2
  358. package/es/components/tooltip/tooltip.d.ts +1 -1
  359. package/es/components/tooltip/tooltip.js +11 -11
  360. package/es/components/upload/index.spec.js +5 -6
  361. package/es/components/upload/index.vdt.js +3 -1
  362. package/es/components/utils.d.ts +2 -0
  363. package/es/components/utils.js +24 -3
  364. package/es/components/virtual.d.ts +8 -0
  365. package/es/components/virtual.js +126 -0
  366. package/es/hooks/useResizeObserver.d.ts +1 -1
  367. package/es/hooks/useResizeObserver.js +19 -6
  368. package/es/i18n/en-US.d.ts +4 -1
  369. package/es/i18n/en-US.js +6 -2
  370. package/es/index.d.ts +5 -3
  371. package/es/index.js +5 -3
  372. package/es/packages/kpc-react/__tests__/components/cascader.spec.d.ts +1 -0
  373. package/es/packages/kpc-react/__tests__/components/cascader.spec.js +79 -0
  374. package/es/packages/kpc-react/__tests__/components/drawer.spec.js +74 -6
  375. package/es/site/data/components/button/demos/basic/react.js +3 -1
  376. package/es/site/data/components/button/demos/group/react.js +26 -0
  377. package/es/site/data/components/button/demos/icon/react.js +6 -0
  378. package/es/site/data/components/copy/demos/basic/react.js +23 -0
  379. package/es/site/data/components/copy/demos/children/react.js +44 -0
  380. package/es/site/data/components/copy/index.d.ts +57 -0
  381. package/es/site/data/components/copy/index.js +42 -0
  382. package/es/site/data/components/datepicker/demos/basic/react.js +8 -0
  383. package/es/site/data/components/dropdown/demos/tooltip/react.js +2 -1
  384. package/es/site/data/components/input/demos/autoRows/index.d.ts +9 -0
  385. package/es/site/data/components/input/demos/autoRows/index.js +24 -0
  386. package/es/site/data/components/input/demos/autoRows/react.d.ts +8 -0
  387. package/es/site/data/components/input/demos/autoRows/react.js +62 -0
  388. package/es/site/data/components/input/demos/flat/index.d.ts +5 -0
  389. package/es/site/data/components/input/demos/flat/index.js +17 -0
  390. package/es/site/data/components/input/demos/flat/react.d.ts +4 -0
  391. package/es/site/data/components/input/demos/flat/react.js +29 -0
  392. package/es/site/data/components/input/demos/password/index.d.ts +5 -0
  393. package/es/site/data/components/input/demos/password/index.js +17 -0
  394. package/es/site/data/components/input/demos/password/react.d.ts +5 -0
  395. package/es/site/data/components/input/demos/password/react.js +41 -0
  396. package/es/site/data/components/input/demos/textarea/react.js +4 -2
  397. package/es/site/data/components/menu/demos/collapse/index.js +1 -1
  398. package/es/site/data/components/menu/demos/collapse/react.js +1 -1
  399. package/es/site/data/components/pagination/demos/flat/index.d.ts +6 -0
  400. package/es/site/data/components/pagination/demos/flat/index.js +18 -0
  401. package/es/site/data/components/pagination/demos/flat/react.d.ts +5 -0
  402. package/es/site/data/components/pagination/demos/{noBoard → flat}/react.js +12 -8
  403. package/es/site/data/components/popover/demos/basic/react.d.ts +8 -0
  404. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/react.js +14 -9
  405. package/es/site/data/components/popover/demos/button/index.d.ts +8 -0
  406. package/es/site/data/components/popover/demos/button/index.js +42 -0
  407. package/es/site/data/components/popover/demos/button/react.d.ts +8 -0
  408. package/es/site/data/components/popover/demos/button/react.js +73 -0
  409. package/es/site/data/components/popover/demos/content/index.d.ts +7 -0
  410. package/es/site/data/components/popover/demos/content/index.js +28 -0
  411. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/content}/react.d.ts +0 -1
  412. package/es/site/data/components/popover/demos/content/react.js +43 -0
  413. package/es/site/data/components/popover/demos/text/index.d.ts +7 -0
  414. package/es/site/data/components/popover/demos/text/index.js +28 -0
  415. package/es/site/data/components/popover/demos/text/react.d.ts +6 -0
  416. package/es/site/data/components/popover/demos/text/react.js +36 -0
  417. package/es/site/data/components/popover/demos/type/index.d.ts +11 -0
  418. package/es/site/data/components/popover/demos/type/index.js +34 -0
  419. package/es/site/data/components/popover/demos/type/react.d.ts +11 -0
  420. package/es/site/data/components/popover/demos/type/react.js +58 -0
  421. package/es/site/data/components/popover/index.d.ts +57 -0
  422. package/es/site/data/components/popover/index.js +42 -0
  423. package/es/site/data/components/progress/demos/children/react.js +4 -4
  424. package/es/site/data/components/progress/demos/circleSize/index.d.ts +14 -0
  425. package/es/site/data/components/progress/demos/circleSize/index.js +43 -0
  426. package/es/site/data/components/progress/demos/circleSize/react.d.ts +14 -0
  427. package/es/site/data/components/progress/demos/circleSize/react.js +98 -0
  428. package/es/site/data/components/progress/demos/customColor/react.js +4 -4
  429. package/es/site/data/components/select/demos/basic/react.js +19 -7
  430. package/es/site/data/components/select/demos/creatable/react.js +2 -1
  431. package/es/site/data/components/select/demos/draggable/index.d.ts +10 -0
  432. package/es/site/data/components/select/demos/draggable/index.js +24 -0
  433. package/es/site/data/components/select/demos/draggable/react.d.ts +10 -0
  434. package/es/site/data/components/select/demos/draggable/react.js +85 -0
  435. package/es/site/data/components/select/demos/flat/index.d.ts +5 -0
  436. package/es/site/data/components/select/demos/flat/index.js +17 -0
  437. package/es/site/data/components/select/demos/flat/react.d.ts +4 -0
  438. package/es/site/data/components/select/demos/flat/react.js +73 -0
  439. package/es/site/data/components/select/demos/inline/index.d.ts +5 -0
  440. package/es/site/data/components/select/demos/inline/index.js +17 -0
  441. package/es/site/data/components/select/demos/inline/react.d.ts +4 -0
  442. package/es/site/data/components/select/demos/nowrap/index.d.ts +5 -0
  443. package/es/site/data/components/select/demos/nowrap/index.js +17 -0
  444. package/es/site/data/components/select/demos/nowrap/react.d.ts +4 -0
  445. package/es/site/data/components/select/demos/nowrap/react.js +41 -0
  446. package/es/site/data/components/select/demos/size/index.d.ts +1 -0
  447. package/es/site/data/components/select/demos/size/index.js +2 -1
  448. package/es/site/data/components/select/demos/size/react.d.ts +1 -0
  449. package/es/site/data/components/select/demos/size/react.js +93 -1
  450. package/es/site/data/components/steps/demos/vertical/index.d.ts +14 -0
  451. package/es/site/data/components/steps/demos/vertical/index.js +40 -0
  452. package/es/site/data/components/steps/demos/vertical/react.d.ts +14 -0
  453. package/es/site/data/components/steps/demos/vertical/react.js +124 -0
  454. package/es/site/data/components/switch/demos/onOff/react.js +1 -3
  455. package/es/site/data/components/table/demos/hideHeader/index.d.ts +12 -0
  456. package/es/site/data/components/table/demos/hideHeader/index.js +30 -0
  457. package/es/site/data/components/table/demos/hideHeader/react.d.ts +11 -0
  458. package/es/site/data/components/table/demos/hideHeader/react.js +60 -0
  459. package/es/site/data/components/table/demos/pagination/index.d.ts +12 -0
  460. package/es/site/data/components/table/demos/pagination/index.js +35 -0
  461. package/es/site/data/components/table/demos/pagination/react.d.ts +16 -0
  462. package/es/site/data/components/table/demos/pagination/react.js +65 -0
  463. package/es/site/data/components/tabs/demos/card/react.js +1 -15
  464. package/es/site/data/components/tabs/demos/closable/index.js +1 -1
  465. package/es/site/data/components/tabs/demos/closable/react.js +9 -3
  466. package/es/site/data/components/tabs/demos/scroll/index.d.ts +18 -0
  467. package/es/site/data/components/tabs/demos/scroll/index.js +87 -0
  468. package/es/site/data/components/tabs/demos/scroll/react.d.ts +18 -0
  469. package/es/site/data/components/tabs/demos/scroll/react.js +166 -0
  470. package/es/site/data/components/tabs/demos/vertical/react.js +1 -16
  471. package/es/site/data/components/tag/demos/draggable/index.d.ts +11 -0
  472. package/es/site/data/components/tag/demos/draggable/index.js +24 -0
  473. package/es/site/data/components/tag/demos/draggable/react.d.ts +11 -0
  474. package/es/site/data/components/tag/demos/draggable/react.js +62 -0
  475. package/es/site/data/components/tag/demos/tags/index.d.ts +12 -0
  476. package/es/site/data/components/tag/demos/tags/index.js +39 -0
  477. package/es/site/data/components/tag/demos/tags/react.d.ts +12 -0
  478. package/es/site/data/components/tag/demos/tags/react.js +83 -0
  479. package/es/site/src/pages/document/index.js +2 -3
  480. package/es/styles/fonts/iconfont.js +1 -1
  481. package/es/styles/fonts/ionicons.js +3 -3
  482. package/es/styles/global.js +1 -1
  483. package/hooks/useResizeObserver.ts +19 -7
  484. package/i18n/en-US.ts +6 -1
  485. package/index.ts +5 -3
  486. package/package.json +9 -5
  487. package/styles/fonts/iconfont.ts +1 -1
  488. package/styles/fonts/ionicons.ts +2 -3
  489. package/styles/global.ts +3 -3
  490. package/components/pagination/demos/noBoard.md +0 -22
  491. package/components/table/useResizeObserver.ts +0 -22
  492. package/components/tooltip/demos/confirm.md +0 -41
  493. package/es/components/table/useResizeObserver.d.ts +0 -2
  494. package/es/components/table/useResizeObserver.js +0 -20
  495. /package/components/select/demos/{noBorder.md → inline.md} +0 -0
  496. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.d.ts +0 -0
  497. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.js +0 -0
  498. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/react.d.ts +0 -0
  499. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.d.ts +0 -0
  500. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.js +0 -0
  501. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/react.d.ts +0 -0
  502. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.d.ts +0 -0
  503. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.js +0 -0
  504. /package/es/site/data/components/select/demos/{noBorder → inline}/react.js +0 -0
@@ -43,6 +43,8 @@ sidebar: doc
43
43
  | widthStoreKey | 如果要保存表格拖动后的列宽信息,可以通过该属性设置保存到`localStorage`中的`key` | `string` | `undefined` |
44
44
  | draggable | 表格行是否可拖动 | `boolean` | `false` |
45
45
  | animation | 是否开启动效,默认开启。可以通过`true` `false`全部设置,或者通过数组单独设置行和列的动效 | `boolean` &#124 `[boolean, boolean]` | `true` |
46
+ | hideHeader | 是否隐藏表头 | `boolean` | `false` |
47
+ | pagination | 是否支持分页 | `boolean` | `PaginationProps` | `false` |
46
48
 
47
49
  ```ts
48
50
  import {Props} from 'intact';
@@ -74,6 +76,22 @@ type Position = {
74
76
  type Collision = 'left' | 'top' | 'none'
75
77
 
76
78
  export type Container = string | ((parentDom: Element, anchor: Node | null) => Element)
79
+
80
+ export interface PaginationProps {
81
+ size?: Sizes,
82
+ counts?: number | string,
83
+ total?: number,
84
+ value?: number,
85
+ limit?: number,
86
+ limits?: number[],
87
+ noBorder?: boolean,
88
+ simple?: boolean,
89
+ showTotal?: boolean,
90
+ showGoto?: boolean,
91
+ showLimits?: boolean,
92
+ disableBtn?: (page: number, limit: number) => boolean,
93
+ disablePage?: (page: number, limit: number) => boolean,
94
+ }
77
95
  ```
78
96
 
79
97
  ## TableColumn
@@ -145,3 +163,7 @@ export type TableColumnGroupItem = {
145
163
  | clickRow | 点击某行触发 | `(data: T, index: number, key: TableRowKey) => void` |
146
164
  | dragstart | 行拖动开始 | `(data: {key: TableRowKey, from: number}) => void` |
147
165
  | dragend | 行拖动结束 | `(data: {key: TableRowKey, from: number, to: number}) => void` |
166
+ | checkRow | 手动选中某行触发 | `(data: T, index: number, key: TableRowKey) => void` |
167
+ | uncheckRow | 手动取消选中某行触发 | `(data: T, index: number, key: TableRowKey) => void` |
168
+ | checkAll | 手动全选触发 | `() => void` |
169
+ | uncheckAll | 手动取消全选触发 | `() => void` |
@@ -20,6 +20,7 @@ import MergeCellDemo from '~/components/table/demos/mergeCell';
20
20
  import {Dropdown, DropdownMenu, DropdownItem} from '../dropdown';
21
21
  import {Icon} from '../icon';
22
22
  import {useChecked, AllCheckedStatus} from './useChecked';
23
+ import PaginationDemo from '~/components/table/demos/pagination';
23
24
 
24
25
  describe('Table', () => {
25
26
  afterEach(() => {
@@ -36,34 +37,49 @@ describe('Table', () => {
36
37
  const spy = sinon.spy((v: number[]) => console.log(v));
37
38
  table.on('$change:checkedKeys', spy);
38
39
 
40
+ const spyCheckRow = sinon.spy((data: any, index: number, key: string) => console.log('checkRow', data, index, key));
41
+ table.on('checkRow', spyCheckRow);
42
+ const spyUncheckRow = sinon.spy((data: any, index: number, key: string) => console.log('uncheckRow', data, index, key));
43
+ table.on('uncheckRow', spyUncheckRow);
44
+ const spyCheckAll = sinon.spy(() => console.log('checkAll'));
45
+ table.on('checkAll', spyCheckAll);
46
+ const spyUncheckAll = sinon.spy(() => console.log('uncheckAll'));
47
+ table.on('uncheckAll', spyUncheckAll);
48
+
39
49
  // click row
40
50
  const [tr1, tr2] = element.querySelectorAll<HTMLElement>('tbody tr');
41
51
  tr1.click();
42
52
  await wait();
43
53
  expect(table.get('checkedKeys')).to.eql([0]);
54
+ expect(spyCheckRow.callCount).to.eql(1);
44
55
  tr2.click();
45
56
  await wait();
46
57
  expect(table.get('checkedKeys')).to.eql([0, 1]);
47
58
  expect(checked.getAllCheckedStatus()).eql(AllCheckedStatus.All);
59
+ expect(spyCheckRow.callCount).to.eql(2);
60
+ expect(spyCheckAll.callCount).to.eq(0);
48
61
 
49
62
  tr1.click();
50
63
  await wait();
51
64
  expect(table.get('checkedKeys')).to.eql([1]);
52
65
  expect(checked.getAllCheckedStatus()).eql(AllCheckedStatus.Indeterminate);
66
+ expect(spyUncheckRow.callCount).to.eql(1);
53
67
 
54
68
  const all = element.querySelector('.k-checkbox') as HTMLElement;
55
69
  all.click();
56
70
  await wait();
57
71
  expect(checked.getAllCheckedStatus()).eql(AllCheckedStatus.All);
72
+ expect(spyCheckAll.callCount).to.eql(1);
58
73
  all.click();
59
74
  await wait();
60
75
  expect(checked.getAllCheckedStatus()).eql(AllCheckedStatus.None);
61
76
  expect(table.get('checkedKeys')).to.eql([]);
77
+ expect(spyUncheckAll.callCount).to.eql(1);
62
78
 
63
79
  expect(spy.callCount).to.eql(5);
64
80
  // clear data of table should only trigger $change:checked event once, #407
65
81
  all.click();
66
- table.set('data', []);
82
+ instance.set<{data: any[]}>('data', []);
67
83
  await wait();
68
84
  expect(spy.callCount).to.eql(7);
69
85
  });
@@ -220,6 +236,13 @@ describe('Table', () => {
220
236
  await wait();
221
237
  expect(instance.get('multipleGroup')).to.eql({status: ['active', 'stopped']});
222
238
  expect(table2.innerHTML).to.matchSnapshot();
239
+
240
+ // update group
241
+ instance.set('statusGroup', [{label: 'label', value: 'value'}]);
242
+ dispatchEvent(icon, 'click');
243
+ await wait(500);
244
+ const newDropdown= getElement('.k-table-group-dropdown')!;
245
+ expect(newDropdown.innerHTML).to.matchSnapshot();
223
246
  });
224
247
 
225
248
  it('fix columns', async () => {
@@ -559,4 +582,53 @@ describe('Table', () => {
559
582
  await wait();
560
583
  expect(update.callCount).to.eql(1);
561
584
  });
585
+
586
+ it('pagination', async () => {
587
+ const [instance, element] = mount(PaginationDemo);
588
+ const table = instance.refs.table as Table;
589
+ const pagination = table.pagination.paginationRef;
590
+ const spy = sinon.spy();
591
+
592
+ table.on('changePage', spy);
593
+
594
+ // check all
595
+ table.checkAll();
596
+ expect(table.getCheckedData()).to.have.length(10);
597
+
598
+ // next page
599
+ table.set('pagination', { value: 2 });
600
+ (table as any).trigger('$receive:pagination');
601
+ await wait();
602
+ expect(table.getCheckedData()).to.have.length(0);
603
+
604
+ // check all again
605
+ table.checkAll();
606
+ expect(table.getCheckedData()).to.have.length(10);
607
+
608
+ // change limit
609
+ table.set('pagination', { value: 1, limit: 20 });
610
+ (table as any).trigger('$receive:pagination');
611
+ await wait();
612
+ expect(table.getCheckedData()).to.have.length(10);
613
+
614
+ // check all again
615
+ table.checkAll();
616
+ expect(table.getCheckedData()).to.have.length(20);
617
+
618
+ // change limit from pagination
619
+ pagination.value!.set('limit', 10);
620
+ await wait();
621
+ expect(table.getCheckedData()).to.have.length(10);
622
+ // FIXME: Pagination component should no trigger change event multiple times
623
+ // when we set value and limit at the same time
624
+ expect(spy.callCount).to.eql(4);
625
+ expect(spy.lastCall.lastArg).to.eql({value: 1, limit: 10});
626
+
627
+ // change page from pagination
628
+ await wait();
629
+ pagination.value!.changePage(2);
630
+ expect(table.getCheckedData()).to.have.length(0);
631
+ expect(spy.callCount).to.eql(5);
632
+ expect(spy.lastCall.lastArg).to.eql({value: 2, limit: 10});
633
+ });
562
634
  });
@@ -25,7 +25,7 @@ export interface TableRowProps {
25
25
  index: number
26
26
  disabled: boolean
27
27
  allDisabled: boolean
28
- onChangeChecked: (index: number, checked: boolean) => void
28
+ onChangeChecked: (index: number, checked: boolean, key: TableRowKey) => void
29
29
  grid: TableGrid
30
30
  selected: boolean
31
31
  // hidden: boolean
@@ -91,8 +91,8 @@ export class TableRow extends Component<TableRowProps> {
91
91
 
92
92
  @bind
93
93
  onChangeChecked(v: boolean) {
94
- const {index, onChangeChecked} = this.get();
95
- onChangeChecked(index, v);
94
+ const {index, key, onChangeChecked} = this.get();
95
+ onChangeChecked(index, v, key);
96
96
  }
97
97
 
98
98
  @bind
@@ -368,6 +368,11 @@ export function makeStyles() {
368
368
  }
369
369
  `;
370
370
  })}
371
+
372
+ // pagination
373
+ > .k-pagination {
374
+ margin: 16px 0;
375
+ }
371
376
  `;
372
377
  }
373
378
 
@@ -20,6 +20,8 @@ import {useStickyScrollbar} from './useStickyScrollbar';
20
20
  import {useWidth} from './useWidth';
21
21
  import {useScroll} from './useScroll';
22
22
  import type {Events} from '../types';
23
+ import type {PaginationProps, PaginationChangeData} from '../pagination';
24
+ import { usePagination } from './usePagination';
23
25
 
24
26
  export interface TableProps<
25
27
  T = any,
@@ -60,12 +62,19 @@ export interface TableProps<
60
62
  widthStoreKey?: string
61
63
  draggable?: boolean
62
64
  animation?: boolean | [boolean, boolean]
65
+ hideHeader?: boolean
66
+ pagination?: boolean | PaginationProps
63
67
  }
64
68
 
65
69
  export interface TableEvents<T = any, K extends TableRowKey = number> {
66
70
  clickRow: [T, number, K]
67
71
  dragstart: [{key: K, from: number}]
68
72
  dragend: [{key: K, from: number, to: number}]
73
+ checkRow: [T, number, K]
74
+ uncheckRow: [T, number, K]
75
+ checkAll: []
76
+ uncheckAll: []
77
+ changePage: [PaginationChangeData]
69
78
  }
70
79
 
71
80
  export interface TableBlocks<T = unknown> {
@@ -118,6 +127,8 @@ const typeDefs: Required<TypeDefs<TableProps<unknown>>> = {
118
127
  widthStoreKey: String,
119
128
  draggable: Boolean,
120
129
  animation: [Boolean, Array],
130
+ hideHeader: Boolean,
131
+ pagination: [Boolean, Object],
121
132
  };
122
133
 
123
134
  const defaults = (): Partial<TableProps> => ({
@@ -135,6 +146,11 @@ const events: Events<TableEvents> = {
135
146
  clickRow: true,
136
147
  dragstart: true,
137
148
  dragend: true,
149
+ checkRow: true,
150
+ uncheckRow: true,
151
+ checkAll: true,
152
+ uncheckAll: true,
153
+ changePage: true,
138
154
  };
139
155
 
140
156
  export class Table<
@@ -149,7 +165,9 @@ export class Table<
149
165
  static defaults = defaults;
150
166
  static events = events;
151
167
 
152
- private tree = useTree();
168
+ // use public for unit test to get paginationRef
169
+ public pagination = usePagination();
170
+ private tree = useTree(this.pagination.data);
153
171
  private columns = useColumns();
154
172
  private scroll = useScroll();
155
173
  private stickyHeader = useStickyHeader(this.scroll.callbacks);
@@ -169,20 +187,27 @@ export class Table<
169
187
  this.scroll,
170
188
  this.width.widthMap,
171
189
  );
172
- private disableRow = useDisableRow(this.tree.loopData);
173
- private merge = useMerge(this.columns.getCols);
190
+ private disableRow = useDisableRow(
191
+ this.tree.loopData,
192
+ this.pagination.data,
193
+ );
194
+ private merge = useMerge(
195
+ this.columns.getCols,
196
+ this.pagination.data,
197
+ );
174
198
  private checked = useChecked(
175
199
  this.disableRow.getEnableKeys,
176
200
  this.disableRow.getAllKeys,
177
201
  this.disableRow.isDisabledKey,
178
202
  this.merge.getGrid,
179
203
  this.tree.loopData,
204
+ this.pagination.data,
180
205
  );
181
206
  private sortable = useSortable();
182
207
  private expandable = useExpandable();
183
208
  private selected = useSelected();
184
209
  private resetRowStatus = useRestRowStatus(this.disableRow.getAllKeys);
185
- private draggable = useDraggable();
210
+ private draggable = useDraggable(this.pagination.data);
186
211
  private stickyScrollbar = useStickyScrollbar(
187
212
  this.stickyHeader.elementRef,
188
213
  this.scroll,
@@ -1,6 +1,6 @@
1
1
  import {eachChildren} from '../utils';
2
2
  import {makeStyles} from './styles';
3
- import {isStringOrNumber, isNull} from 'intact-shared';
3
+ import {isStringOrNumber, isNull, isObject, EMPTY_OBJ} from 'intact-shared';
4
4
  import {getClassAndStyleForFixed} from './useFixedColumns';
5
5
  import {Affix} from '../affix';
6
6
  import {TableRow} from './row';
@@ -16,6 +16,7 @@ import {Tooltip} from '../tooltip';
16
16
  import {AllCheckedStatus} from './useChecked';
17
17
  import {context as ResizableContext} from './useResizable';
18
18
  import {context as FixedColumnsContext} from './useFixedColumns';
19
+ import {Pagination} from '../pagination';
19
20
 
20
21
  const {
21
22
  data, children, className, fixHeader,
@@ -23,7 +24,8 @@ const {
23
24
  rowClassName, group, sort, loading,
24
25
  merge, childrenKey, indent, tooltipPosition,
25
26
  tooltipContainer, showIndeterminate, resizable,
26
- draggable, animation: _animation,
27
+ draggable, animation: _animation, hideHeader,
28
+ pagination,
27
29
  } = this.get();
28
30
  const animation = !Array.isArray(_animation) ? [_animation, _animation] : _animation;
29
31
  const {columns, cols, maxRows, maxCols} = this.columns.getData();
@@ -64,7 +66,7 @@ const hasFixedLeft = getHasFixedLeft();
64
66
  const {getAllCheckedStatus, toggleCheckedAll, getAllStatus, onChangeChecked} = this.checked;
65
67
  const allCheckedStatus = getAllCheckedStatus();
66
68
  const offsetMap = getOffsetMap();
67
- const thead = (
69
+ const thead = hideHeader ? null : (
68
70
  <TableContext.Provider value={checkType}>
69
71
  <GroupContext.Provider value={{group, onChange: this.onChangeGroup}}>
70
72
  <SortableContext.Provider value={{sort, onChange: this.sortable.onChange}}>
@@ -213,6 +215,13 @@ const {
213
215
  onScroll: onScrollbarScroll,
214
216
  tableActualWidth,
215
217
  } = this.stickyScrollbar;
218
+ const {
219
+ value: pageValue,
220
+ limit: pageLimit,
221
+ onChange: onPageChange,
222
+ paginationRef,
223
+ } = this.pagination;
224
+
216
225
  <div class={classNameObj} ref={elementRef}>
217
226
  <div class="k-table-wrapper" style={style} ref={scrollRef}>
218
227
  <Affix v-if={!isNull(stickHeader.value)}
@@ -231,6 +240,15 @@ const {
231
240
  <template>{tbody}</template>
232
241
  </table>
233
242
  </div>
243
+ <Pagination v-if={pagination}
244
+ ref={paginationRef}
245
+ total={data ? data.length : 0}
246
+ size="small"
247
+ {...(isObject(pagination) ? pagination : EMPTY_OBJ)}
248
+ value={pageValue.value}
249
+ limit={pageLimit.value}
250
+ ev-change={onPageChange}
251
+ />
234
252
  <Transition name="k-fade">
235
253
  <Spin v-if={loading} overlay size="small" class="k-table-spin" />
236
254
  </Transition>
@@ -1,5 +1,5 @@
1
1
  import {createRef, useInstance, onMounted, onBeforeUnmount} from 'intact';
2
- import {useState} from '../../hooks/useState';
2
+ import {useState, State, watchState} from '../../hooks/useState';
3
3
  import type {Table, TableRowKey, TableCheckType} from './';
4
4
  import {toggleArray} from '../utils';
5
5
  import {useReceive} from '../../hooks/useReceive';
@@ -25,6 +25,7 @@ export function useChecked(
25
25
  isDisabledKey: (key: TableRowKey) => boolean,
26
26
  getGrid: () => TableGrid,
27
27
  loopData: ReturnType<typeof useTree>['loopData'],
28
+ data: State<any[] | undefined>,
28
29
  ) {
29
30
  const instance = useInstance() as Table<any, TableRowKey, TableCheckType>;
30
31
  let allStatus: RowStatus[] = [];
@@ -36,8 +37,13 @@ export function useChecked(
36
37
  function toggleChecked(key: TableRowKey, rowIndex: number) {
37
38
  if (instance.get('checkType') === 'checkbox') {
38
39
  instance.set('checkedKeys', toggleArray(instance.get('checkedKeys'), key));
40
+
41
+ // trigger check event for checkbox,
42
+ // radio check event trigger in onChangeChecked function
43
+ triggerEvent(isChecked(key), key, rowIndex);
39
44
  } else {
40
45
  if (isChecked(key)) return;
46
+
41
47
  const grid = getGrid();
42
48
  const gridRow = grid[rowIndex];
43
49
  if (gridRow) {
@@ -46,7 +52,7 @@ export function useChecked(
46
52
  rowIndex--;
47
53
  }
48
54
  }
49
- onChangeChecked(rowIndex, true);
55
+ onChangeChecked(rowIndex, true, key);
50
56
  }
51
57
  }
52
58
 
@@ -66,6 +72,7 @@ export function useChecked(
66
72
 
67
73
  function toggleCheckedAll(v: boolean) {
68
74
  instance.set('checkedKeys', getCheckedAllOrUncheckedAllKeys(v));
75
+ instance.trigger(v ? 'checkAll' : 'uncheckAll');
69
76
  }
70
77
 
71
78
  /**
@@ -93,9 +100,9 @@ export function useChecked(
93
100
  function updateAllCheckedStatus() {
94
101
  allStatus = [];
95
102
 
96
- const {data, rowKey, checkType, merge} = instance.get();
103
+ const {rowKey, checkType, merge} = instance.get();
97
104
 
98
- if (!data || !data.length) return;
105
+ if (!data.value || !data.value.length) return;
99
106
 
100
107
  const allKeys = getAllKeys();
101
108
  allKeys.forEach((key) => {
@@ -152,7 +159,7 @@ export function useChecked(
152
159
  }
153
160
  }
154
161
 
155
- function onChangeChecked(rowIndex: number, v: boolean) {
162
+ function onChangeChecked(rowIndex: number, v: boolean, key: TableRowKey) {
156
163
  // should check or uncheck all grouped rows
157
164
  const checkType = instance.get('checkType');
158
165
  const checkedKeys = (instance.get('checkedKeys') || []).slice();
@@ -190,16 +197,24 @@ export function useChecked(
190
197
  }
191
198
 
192
199
  instance.set('checkedKeys', checkedKeys);
200
+
201
+ // onChangeChecked will be called in clickRow and check in Row component
202
+ triggerEvent(v, key, rowIndex);
193
203
  }
194
204
 
195
205
  function getAllStatus() {
196
206
  return allStatus;
197
207
  }
198
208
 
209
+ function triggerEvent(isChecked: boolean, key: TableRowKey, rowIndex: number) {
210
+ instance.trigger(isChecked ? 'checkRow' : 'uncheckRow', data.value![rowIndex], rowIndex, key);
211
+ }
212
+
199
213
  instance.on('$receive:children', updateAllCheckedStatus);
200
214
  instance.on('$change:checkedKeys', updateAllCheckedStatus);
201
215
  // for draggable
202
- instance.on('$change:data', updateAllCheckedStatus);
216
+ watchState(data, updateAllCheckedStatus);
217
+ // instance.on('$change:data', updateAllCheckedStatus);
203
218
 
204
219
  instance.on('clickRow', (data: any, index: number, key: TableRowKey) => {
205
220
  if (instance.get('rowCheckable') && instance.get('checkType') !== 'none') {
@@ -1,9 +1,11 @@
1
1
  import {useInstance} from 'intact';
2
2
  import type {Table, TableRowKey, TableCheckType} from './table';
3
3
  import type {useTree} from './useTree';
4
+ import { State, watchState } from '../../hooks/useState';
4
5
 
5
6
  export function useDisableRow(
6
7
  loopData: ReturnType<typeof useTree>['loopData'],
8
+ data: State<any[] | undefined>,
7
9
  ) {
8
10
  const instance = useInstance() as Table<any, TableRowKey>;
9
11
  let enabledKeys: TableRowKey[] = [];
@@ -47,8 +49,7 @@ export function useDisableRow(
47
49
  }
48
50
 
49
51
  instance.on('$receive:children', setDisabledKeys);
50
- // for draggable
51
- instance.on('$change:data', setDisabledKeys);
52
+ watchState(data, setDisabledKeys);
52
53
 
53
54
  return {isDisabled, getEnableKeys, isDisabledKey, getAllKeys};
54
55
  }
@@ -1,9 +1,10 @@
1
1
  import {useInstance, nextTick} from 'intact';
2
2
  import type {Table, TableRowKey} from './table';
3
- import {useState} from '../../hooks/useState';
3
+ import {useState, State} from '../../hooks/useState';
4
4
  import type {TableRow} from './row';
5
+ import {swap} from '../utils';
5
6
 
6
- export function useDraggable() {
7
+ export function useDraggable(data: State<unknown[] | undefined>) {
7
8
  const instance = useInstance() as Table<any, TableRowKey>;
8
9
  const draggingKey = useState<TableRowKey | null>(null);
9
10
 
@@ -17,7 +18,7 @@ export function useDraggable() {
17
18
  const key = tableRow.get('key');
18
19
  draggingKey.set(key);
19
20
 
20
- originData = instance.get('data')!;
21
+ originData = data.value!;
21
22
 
22
23
  instance.trigger('dragstart', {
23
24
  key,
@@ -29,24 +30,27 @@ export function useDraggable() {
29
30
  e.preventDefault();
30
31
  e.stopPropagation();
31
32
 
33
+ if (draggingKey.value === null) return;
34
+
32
35
  const newIndex = tableRow.get('index');
33
36
  if (newIndex === draggingIndex) return;
34
37
 
35
38
  // swap data
36
- const data = instance.get('data')!.slice();
37
- const item = data.splice(draggingIndex, 1)[0];
38
- data.splice(newIndex, 0, item);
39
+ const newData = swap(data.value!, draggingIndex, newIndex);
39
40
 
40
41
  draggingIndex = newIndex;
41
42
 
42
- instance.set('data', data);
43
+ data.set(newData);
43
44
  }
44
45
 
45
46
  function onRowDragEnd(e: MouseEvent, tableRow: TableRow) {
46
47
  e.preventDefault();
47
- instance.set('data', originData);
48
+ // revert to origin data, then set to new data to trigger animation
49
+ const newData = data.value;
50
+ data.set(originData);
48
51
 
49
52
  nextTick(() => {
53
+ data.set(newData);
50
54
  draggingKey.set(null);
51
55
  instance.trigger('dragend', {
52
56
  key: tableRow.get('key'),
@@ -17,6 +17,8 @@ export function useGroup() {
17
17
  const keywords = useState<string>('');
18
18
  const filteredGroup = useState<TableColumnGroupItem[] | undefined>(instance.get('group'));
19
19
 
20
+ instance.on('$receive:group', (group) => filteredGroup.set(group));
21
+
20
22
  function onSelect(value: any, groupValue: any, onChange: ContextValue['onChange']) {
21
23
  const {multiple, key} = instance.get();
22
24
 
@@ -1,6 +1,7 @@
1
1
  import {useInstance, Props} from 'intact';
2
2
  import type {Table, TableRowKey, TableCheckType} from './table';
3
3
  import type {TableColumnProps} from './column';
4
+ import { State, watchState } from '../../hooks/useState';
4
5
 
5
6
  export type TableMerge<T = any, CheckType = 'checkbox'> = (
6
7
  row: T,
@@ -23,6 +24,7 @@ export type TableGrid = TableGridItem[][];
23
24
 
24
25
  export function useMerge(
25
26
  getCols: () => Props<TableColumnProps>[],
27
+ data: State<unknown[] | undefined>,
26
28
  ) {
27
29
  const instance = useInstance() as Table<any, TableRowKey, TableCheckType>;
28
30
  let grid: TableGrid = [];
@@ -30,11 +32,11 @@ export function useMerge(
30
32
  function handleSpans() {
31
33
  grid = [];
32
34
 
33
- const {merge, data, checkType} = instance.get();
34
- if (!data || !data.length || !merge) return;
35
+ const {merge, checkType} = instance.get();
36
+ if (!data.value || !data.value.length || !merge) return;
35
37
 
36
38
  const cols = getCols();
37
- data.forEach((data, rowIndex) => {
39
+ data.value.forEach((data, rowIndex) => {
38
40
  const currentRow: TableGridItem[] = [];
39
41
  grid.push(currentRow);
40
42
 
@@ -99,6 +101,7 @@ export function useMerge(
99
101
  }
100
102
 
101
103
  instance.on('$receive:children', handleSpans);
104
+ watchState(data, handleSpans);
102
105
 
103
106
  return {getGrid};
104
107
  }
@@ -0,0 +1,71 @@
1
+ import {useInstance, createRef} from 'intact';
2
+ import type {Table, TableRowKey, TableCheckType} from './table';
3
+ import {useState} from '../../hooks/useState';
4
+ import {Pagination, PaginationChangeData} from '../pagination';
5
+ import {isObject} from 'intact-shared';
6
+ import { useReceive } from '../../hooks/useReceive';
7
+
8
+ const defaultPagination = Pagination.defaults();
9
+
10
+ export function usePagination() {
11
+ const instance = useInstance() as Table<any, TableRowKey, TableCheckType>
12
+ const data = useState<any[] | undefined>(instance.get('data'));
13
+ const value = useState<number>(defaultPagination.value!);
14
+ const limit = useState<number>(defaultPagination.limit!);
15
+ const paginationRef = createRef<Pagination>(); // for unit test
16
+
17
+ useReceive<Table>(['data', 'pagination'], () => {
18
+ handleData();
19
+ });
20
+
21
+ function handleData() {
22
+ let { data: _data, pagination } = instance.get();
23
+
24
+ if (!_data) {
25
+ data.set(undefined);
26
+ return;
27
+ }
28
+
29
+ if (!pagination) {
30
+ data.set(_data);
31
+ return;
32
+ }
33
+
34
+ if (isObject(pagination)) {
35
+ if (pagination.value) {
36
+ value.set(pagination.value);
37
+ }
38
+ if (pagination.limit) {
39
+ limit.set(pagination.limit);
40
+ }
41
+ }
42
+
43
+ updateDataByPage();
44
+ }
45
+
46
+ function updateDataByPage() {
47
+ const { data: _data } = instance.get();
48
+ const index = (value.value - 1) * limit.value;
49
+ data.set(_data!.slice(index, index + limit.value));
50
+ }
51
+
52
+ function onChange(data: PaginationChangeData) {
53
+ const { pagination } = instance.get();
54
+
55
+ value.set(data.value);
56
+ limit.set(data.limit);
57
+ updateDataByPage();
58
+
59
+ if (isObject(pagination)) {
60
+ instance.set('pagination', {
61
+ ...pagination,
62
+ value: value.value,
63
+ limit: limit.value,
64
+ });
65
+ }
66
+
67
+ instance.trigger('changePage', data);
68
+ }
69
+
70
+ return { data, value, limit, onChange, paginationRef };
71
+ }
@@ -29,7 +29,10 @@ export function useRestRowStatus(
29
29
  }
30
30
  }
31
31
 
32
- function omit(type: 'checkedKeys' | 'selectedKeys' | 'spreadKeys' | 'expandedKeys', keys: TableRowKey[]) {
32
+ function omit(
33
+ type: 'checkedKeys' | 'selectedKeys' | 'spreadKeys' | 'expandedKeys',
34
+ keys: TableRowKey[]
35
+ ) {
33
36
  let originKeys = instance.get(type);
34
37
  if (!originKeys) return;
35
38
 
@@ -5,7 +5,7 @@ import type {Table} from './';
5
5
  import {isStringOrNumber, isNull} from 'intact-shared';
6
6
  import {debounce} from '../utils';
7
7
  import type {useScroll} from './useScroll';
8
- import {useResizeObserver} from './useResizeObserver';
8
+ import {useResizeObserver} from '../../hooks/useResizeObserver';
9
9
 
10
10
  export function useStickyScrollbar(
11
11
  elementRef: RefObject<HTMLElement>,
@@ -23,7 +23,7 @@ export function useStickyScrollbar(
23
23
  stick.set(v === true ? 0 : isStringOrNumber(v) ? +v : null);
24
24
  });
25
25
 
26
- useResizeObserver(scrollRef, setTableActualWidth);
26
+ useResizeObserver(scrollRef, setTableActualWidth, true);
27
27
 
28
28
  onMounted(() => {
29
29
  setTableActualWidth();