@king-design/intact 3.0.0-beta.0 → 3.0.0-beta.2

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 (603) hide show
  1. package/README.md +1 -1
  2. package/components/button/demos/basic.md +2 -1
  3. package/components/button/demos/disabled.md +2 -1
  4. package/components/button/demos/group.md +13 -2
  5. package/components/button/demos/icon.md +7 -6
  6. package/components/button/demos/loading.md +4 -4
  7. package/components/button/demos/size.md +4 -4
  8. package/components/button/index.md +1 -1
  9. package/components/button/index.ts +2 -2
  10. package/components/button/styles.ts +24 -13
  11. package/components/carousel/index.vdt +2 -2
  12. package/components/cascader/index.md +18 -0
  13. package/components/cascader/index.spec.ts +56 -0
  14. package/components/cascader/index.ts +35 -12
  15. package/components/cascader/index.vdt +10 -9
  16. package/components/cascader/styles.ts +2 -1
  17. package/components/cascader/useFields.ts +22 -0
  18. package/components/cascader/useFilterable.ts +23 -8
  19. package/components/cascader/useLabel.ts +7 -4
  20. package/components/cascader/useLoad.ts +4 -2
  21. package/components/checkbox/demos/basic.md +1 -1
  22. package/components/checkbox/demos/group.md +1 -1
  23. package/components/checkbox/demos/indeterminate.md +1 -1
  24. package/components/checkbox/demos/value.md +1 -1
  25. package/components/code/demos/basic.md +1 -1
  26. package/components/collapse/item.vdt +1 -1
  27. package/components/colorpicker/index.md +16 -0
  28. package/components/colorpicker/index.ts +4 -0
  29. package/components/colorpicker/index.vdt +3 -2
  30. package/components/copy/demos/basic.md +12 -0
  31. package/components/copy/demos/children.md +37 -0
  32. package/components/copy/index.md +21 -0
  33. package/components/copy/index.spec.ts +21 -0
  34. package/components/copy/index.ts +37 -0
  35. package/components/copy/index.vdt +23 -0
  36. package/components/copy/styles.ts +9 -0
  37. package/components/copy/useCopy.ts +91 -0
  38. package/components/datepicker/calendar.vdt +6 -6
  39. package/components/datepicker/demos/basic.md +1 -0
  40. package/components/datepicker/demos/datetime.md +5 -4
  41. package/components/datepicker/index.md +13 -0
  42. package/components/datepicker/index.spec.ts +13 -3
  43. package/components/datepicker/index.vdt +2 -2
  44. package/components/datepicker/styles.ts +13 -2
  45. package/components/datepicker/useValue.ts +35 -10
  46. package/components/dialog/alert.vdt +10 -6
  47. package/components/dialog/index.spec.ts +6 -6
  48. package/components/dialog/styles.ts +1 -1
  49. package/components/dropdown/demos/basic.md +1 -1
  50. package/components/dropdown/demos/checkbox.md +1 -1
  51. package/components/dropdown/demos/disabled.md +2 -2
  52. package/components/dropdown/demos/nested.md +6 -6
  53. package/components/dropdown/demos/position.md +3 -3
  54. package/components/dropdown/demos/tooltip.md +1 -1
  55. package/components/dropdown/demos/trigger.md +2 -2
  56. package/components/dropdown/dropdown.ts +51 -79
  57. package/components/dropdown/index.spec.ts +52 -3
  58. package/components/dropdown/item.ts +18 -7
  59. package/components/dropdown/menu.ts +4 -4
  60. package/components/dropdown/usePosition.ts +12 -1
  61. package/components/editable/index.ts +17 -3
  62. package/components/editable/index.vdt +1 -0
  63. package/components/form/demos/basic.md +2 -2
  64. package/components/form/demos/custom.md +2 -4
  65. package/components/form/index.spec.ts +1 -1
  66. package/components/form/item.vdt +1 -1
  67. package/components/form/styles.ts +22 -27
  68. package/components/grid/useGutter.ts +7 -6
  69. package/components/icon/demos/icons.md +130 -97
  70. package/components/icon/styles.ts +6 -2
  71. package/components/input/demos/autoRows.md +44 -0
  72. package/components/input/demos/blocks.md +7 -2
  73. package/components/input/demos/clearable.md +2 -2
  74. package/components/input/demos/flat.md +16 -0
  75. package/components/input/demos/password.md +12 -0
  76. package/components/input/demos/showCount.md +18 -0
  77. package/components/input/demos/size.md +6 -4
  78. package/components/input/demos/textarea.md +2 -2
  79. package/components/input/index.md +3 -0
  80. package/components/input/index.spec.ts +97 -1
  81. package/components/input/index.ts +26 -13
  82. package/components/input/index.vdt +48 -16
  83. package/components/input/search.vdt +2 -5
  84. package/components/input/styles.ts +111 -76
  85. package/components/input/useAutoRows.ts +65 -0
  86. package/components/input/useAutoWidth.ts +12 -3
  87. package/components/input/useFocus.ts +17 -0
  88. package/components/input/useShowPassword.ts +27 -0
  89. package/components/menu/demos/collapse.md +1 -1
  90. package/components/menu/index.spec.ts +9 -1
  91. package/components/menu/item.ts +7 -0
  92. package/components/menu/item.vdt +1 -1
  93. package/components/pagination/demos/flat.md +22 -0
  94. package/components/pagination/index.md +1 -1
  95. package/components/pagination/index.spec.ts +23 -0
  96. package/components/pagination/index.ts +4 -3
  97. package/components/pagination/index.vdt +8 -11
  98. package/components/pagination/styles.ts +2 -2
  99. package/components/popover/content.ts +40 -0
  100. package/components/popover/content.vdt +32 -0
  101. package/components/popover/demos/basic.md +47 -0
  102. package/components/popover/demos/button.md +49 -0
  103. package/components/popover/demos/content.md +36 -0
  104. package/components/popover/demos/text.md +38 -0
  105. package/components/popover/demos/type.md +51 -0
  106. package/components/popover/index.md +54 -0
  107. package/components/popover/index.spec.ts +91 -0
  108. package/components/popover/index.ts +52 -0
  109. package/components/popover/styles.ts +45 -0
  110. package/components/portal.ts +4 -4
  111. package/components/position.ts +5 -1
  112. package/components/progress/demos/children.md +1 -1
  113. package/components/progress/demos/circleSize.md +84 -0
  114. package/components/progress/demos/customColor.md +1 -3
  115. package/components/progress/index.ts +1 -1
  116. package/components/progress/index.vdt +36 -7
  117. package/components/progress/styles.ts +34 -21
  118. package/components/radio/demos/basic.md +1 -1
  119. package/components/radio/demos/group.md +1 -1
  120. package/components/radio/demos/value.md +1 -1
  121. package/components/rate/styles.ts +1 -0
  122. package/components/select/base.ts +11 -3
  123. package/components/select/base.vdt +56 -50
  124. package/components/select/demos/basic.md +21 -12
  125. package/components/select/demos/creatable.md +1 -1
  126. package/components/select/demos/customMenu.md +2 -2
  127. package/components/select/demos/draggable.md +55 -0
  128. package/components/select/demos/flat.md +42 -0
  129. package/components/select/demos/nowrap.md +24 -0
  130. package/components/select/demos/size.md +41 -1
  131. package/components/select/index.md +12 -0
  132. package/components/select/index.spec.ts +6 -3
  133. package/components/select/menu.vdt +7 -7
  134. package/components/select/option.vdt +1 -0
  135. package/components/select/styles.ts +57 -39
  136. package/components/select/useDraggble.ts +12 -0
  137. package/components/slider/index.spec.ts +32 -1
  138. package/components/slider/index.ts +2 -2
  139. package/components/slider/index.vdt +34 -16
  140. package/components/slider/styles.ts +21 -13
  141. package/components/slider/useValue.ts +15 -3
  142. package/components/spinner/index.md +1 -1
  143. package/components/spinner/index.ts +0 -9
  144. package/components/spinner/index.vdt +11 -8
  145. package/components/spinner/styles.ts +9 -6
  146. package/components/spinner/useChange.ts +2 -2
  147. package/components/spinner/useValue.ts +9 -1
  148. package/components/split/index.vdt +13 -3
  149. package/components/split/memo.ts +29 -0
  150. package/components/steps/demos/vertical.md +79 -0
  151. package/components/steps/index.md +1 -0
  152. package/components/steps/index.spec.ts +1 -1
  153. package/components/steps/index.ts +3 -1
  154. package/components/steps/index.vdt +4 -3
  155. package/components/steps/step.vdt +3 -3
  156. package/components/steps/styles.ts +159 -26
  157. package/components/switch/demos/onOff.md +2 -2
  158. package/components/switch/index.spec.ts +15 -10
  159. package/components/table/cell.ts +4 -5
  160. package/components/table/cell.vdt +1 -1
  161. package/components/table/column.vdt +27 -16
  162. package/components/table/demos/group.md +4 -3
  163. package/components/table/demos/hideHeader.md +33 -0
  164. package/components/table/demos/pagination.md +53 -0
  165. package/components/table/demos/title.md +3 -5
  166. package/components/table/index.md +22 -0
  167. package/components/table/index.spec.ts +91 -2
  168. package/components/table/row.ts +3 -3
  169. package/components/table/styles.ts +26 -28
  170. package/components/table/table.ts +29 -4
  171. package/components/table/table.vdt +21 -3
  172. package/components/table/useChecked.ts +21 -6
  173. package/components/table/useDisableRow.ts +3 -2
  174. package/components/table/useDraggable.ts +12 -8
  175. package/components/table/useGroup.ts +43 -23
  176. package/components/table/useMerge.ts +6 -3
  177. package/components/table/usePagination.ts +71 -0
  178. package/components/table/useRestRowStatus.ts +4 -1
  179. package/components/table/useStickyScrollbar.ts +2 -2
  180. package/components/table/useTree.ts +4 -3
  181. package/components/table/useWidth.ts +2 -2
  182. package/components/tabs/demos/beforeChange.md +2 -2
  183. package/components/tabs/demos/card.md +2 -11
  184. package/components/tabs/demos/closable.md +7 -6
  185. package/components/tabs/demos/scroll.md +104 -0
  186. package/components/tabs/demos/vertical.md +1 -9
  187. package/components/tabs/index.md +1 -1
  188. package/components/tabs/index.spec.ts +36 -0
  189. package/components/tabs/index.ts +11 -12
  190. package/components/tabs/index.vdt +7 -7
  191. package/components/tabs/styles.ts +113 -144
  192. package/components/tabs/useScroll.ts +101 -42
  193. package/components/tag/base.ts +1 -1
  194. package/components/tag/demos/draggable.md +49 -0
  195. package/components/tag/demos/tags.md +72 -0
  196. package/components/tag/index.md +42 -0
  197. package/components/tag/index.spec.ts +70 -2
  198. package/components/tag/index.ts +2 -0
  199. package/components/tag/styles.ts +53 -4
  200. package/components/tag/tags.ts +54 -0
  201. package/components/tag/tags.vdt +50 -0
  202. package/components/tag/useChildren.ts +42 -0
  203. package/components/tag/useDraggable.ts +97 -0
  204. package/components/tag/useNowrap.ts +117 -0
  205. package/components/timepicker/index.md +13 -0
  206. package/components/timepicker/index.spec.ts +1 -1
  207. package/components/tooltip/content.ts +21 -7
  208. package/components/tooltip/content.vdt +14 -8
  209. package/components/tooltip/demos/trigger.md +1 -1
  210. package/components/tooltip/index.md +3 -6
  211. package/components/tooltip/index.spec.ts +69 -40
  212. package/components/tooltip/styles.ts +3 -3
  213. package/components/tooltip/tooltip.ts +7 -1
  214. package/components/transfer/index.vdt +4 -3
  215. package/components/treeSelect/index.md +11 -0
  216. package/components/types.ts +1 -0
  217. package/components/upload/index.spec.ts +4 -4
  218. package/components/upload/index.vdt +5 -5
  219. package/components/upload/styles.ts +0 -2
  220. package/components/utils.ts +25 -4
  221. package/components/virtual.ts +98 -0
  222. package/es/components/button/index.d.ts +1 -1
  223. package/es/components/button/index.js +1 -1
  224. package/es/components/button/styles.d.ts +1 -1
  225. package/es/components/button/styles.js +3 -5
  226. package/es/components/carousel/index.vdt.js +2 -2
  227. package/es/components/cascader/index.d.ts +22 -11
  228. package/es/components/cascader/index.js +9 -12
  229. package/es/components/cascader/index.spec.js +81 -0
  230. package/es/components/cascader/index.vdt.js +11 -9
  231. package/es/components/cascader/styles.js +1 -1
  232. package/es/components/cascader/useFields.d.ts +2 -0
  233. package/es/components/cascader/useFields.js +18 -0
  234. package/es/components/cascader/useFilterable.d.ts +2 -1
  235. package/es/components/cascader/useFilterable.js +17 -6
  236. package/es/components/cascader/useLabel.d.ts +2 -1
  237. package/es/components/cascader/useLabel.js +4 -4
  238. package/es/components/cascader/useLoad.d.ts +2 -1
  239. package/es/components/cascader/useLoad.js +9 -7
  240. package/es/components/collapse/item.vdt.js +1 -1
  241. package/es/components/colorpicker/index.d.ts +2 -0
  242. package/es/components/colorpicker/index.js +7 -2
  243. package/es/components/colorpicker/index.vdt.js +3 -6
  244. package/es/components/copy/index.d.ts +17 -0
  245. package/es/components/copy/index.js +43 -0
  246. package/es/components/copy/index.spec.d.ts +1 -0
  247. package/es/components/copy/index.spec.js +52 -0
  248. package/es/components/copy/index.vdt.js +45 -0
  249. package/es/components/copy/styles.d.ts +2 -0
  250. package/es/components/copy/styles.js +14 -0
  251. package/es/components/copy/useCopy.d.ts +4 -0
  252. package/es/components/copy/useCopy.js +90 -0
  253. package/es/components/datepicker/calendar.vdt.js +6 -6
  254. package/es/components/datepicker/index.spec.js +171 -153
  255. package/es/components/datepicker/index.vdt.js +1 -1
  256. package/es/components/datepicker/styles.js +1 -1
  257. package/es/components/datepicker/useValue.d.ts +3 -3
  258. package/es/components/datepicker/useValue.js +38 -9
  259. package/es/components/diagram/shapes/callout.d.ts +1 -1
  260. package/es/components/diagram/shapes/circle.d.ts +1 -1
  261. package/es/components/diagram/shapes/document.d.ts +1 -1
  262. package/es/components/diagram/shapes/ellipse.d.ts +1 -1
  263. package/es/components/diagram/shapes/hexagon.d.ts +1 -1
  264. package/es/components/diagram/shapes/image.d.ts +1 -1
  265. package/es/components/diagram/shapes/parallelogram.d.ts +1 -1
  266. package/es/components/diagram/shapes/rectangle.d.ts +1 -1
  267. package/es/components/diagram/shapes/square.d.ts +1 -1
  268. package/es/components/diagram/shapes/text.d.ts +1 -1
  269. package/es/components/dialog/alert.vdt.js +6 -5
  270. package/es/components/dialog/index.spec.js +6 -6
  271. package/es/components/dialog/styles.js +1 -1
  272. package/es/components/dropdown/dropdown.d.ts +6 -6
  273. package/es/components/dropdown/dropdown.js +58 -75
  274. package/es/components/dropdown/index.spec.js +96 -17
  275. package/es/components/dropdown/item.d.ts +1 -1
  276. package/es/components/dropdown/item.js +19 -7
  277. package/es/components/dropdown/menu.js +1 -1
  278. package/es/components/dropdown/usePosition.js +11 -2
  279. package/es/components/editable/index.d.ts +1 -0
  280. package/es/components/editable/index.js +20 -6
  281. package/es/components/editable/index.vdt.js +2 -1
  282. package/es/components/form/index.spec.js +4 -2
  283. package/es/components/form/item.vdt.js +2 -1
  284. package/es/components/form/styles.js +4 -4
  285. package/es/components/grid/useGutter.js +8 -8
  286. package/es/components/icon/styles.js +1 -1
  287. package/es/components/input/index.d.ts +13 -2
  288. package/es/components/input/index.js +16 -13
  289. package/es/components/input/index.spec.js +169 -1
  290. package/es/components/input/index.vdt.js +44 -12
  291. package/es/components/input/search.vdt.js +2 -4
  292. package/es/components/input/styles.js +30 -6
  293. package/es/components/input/useAutoRows.d.ts +2 -0
  294. package/es/components/input/useAutoRows.js +79 -0
  295. package/es/components/input/useAutoWidth.js +13 -3
  296. package/es/components/input/useFocus.d.ts +4 -0
  297. package/es/components/input/useFocus.js +21 -0
  298. package/es/components/input/useShowPassword.d.ts +7 -0
  299. package/es/components/input/useShowPassword.js +31 -0
  300. package/es/components/menu/index.spec.js +26 -15
  301. package/es/components/menu/item.d.ts +2 -0
  302. package/es/components/menu/item.js +5 -0
  303. package/es/components/menu/item.vdt.js +4 -1
  304. package/es/components/pagination/index.d.ts +1 -1
  305. package/es/components/pagination/index.js +3 -2
  306. package/es/components/pagination/index.spec.js +49 -0
  307. package/es/components/pagination/index.vdt.js +10 -12
  308. package/es/components/pagination/styles.js +1 -1
  309. package/es/components/popover/content.d.ts +19 -0
  310. package/es/components/popover/content.js +31 -0
  311. package/es/components/popover/content.vdt.js +68 -0
  312. package/es/components/popover/index.d.ts +16 -0
  313. package/es/components/popover/index.js +44 -0
  314. package/es/components/popover/index.spec.d.ts +1 -0
  315. package/es/components/popover/index.spec.js +195 -0
  316. package/es/components/popover/styles.d.ts +1 -0
  317. package/es/components/popover/styles.js +22 -0
  318. package/es/components/portal.d.ts +6 -2
  319. package/es/components/portal.js +4 -3
  320. package/es/components/position.js +2 -1
  321. package/es/components/progress/index.js +1 -1
  322. package/es/components/progress/index.vdt.js +46 -8
  323. package/es/components/progress/styles.js +19 -13
  324. package/es/components/rate/styles.js +1 -1
  325. package/es/components/select/base.d.ts +7 -3
  326. package/es/components/select/base.js +9 -3
  327. package/es/components/select/base.vdt.js +75 -47
  328. package/es/components/select/index.spec.js +25 -13
  329. package/es/components/select/menu.vdt.js +6 -6
  330. package/es/components/select/option.vdt.js +2 -1
  331. package/es/components/select/styles.js +11 -5
  332. package/es/components/select/useDraggble.d.ts +2 -0
  333. package/es/components/select/useDraggble.js +11 -0
  334. package/es/components/slider/index.spec.js +48 -9
  335. package/es/components/slider/index.vdt.js +23 -12
  336. package/es/components/slider/styles.js +23 -14
  337. package/es/components/slider/useValue.d.ts +3 -1
  338. package/es/components/slider/useValue.js +12 -0
  339. package/es/components/spinner/index.d.ts +0 -1
  340. package/es/components/spinner/index.js +1 -19
  341. package/es/components/spinner/index.vdt.js +13 -8
  342. package/es/components/spinner/styles.js +2 -2
  343. package/es/components/spinner/useChange.d.ts +1 -1
  344. package/es/components/spinner/useChange.js +2 -2
  345. package/es/components/spinner/useValue.d.ts +1 -0
  346. package/es/components/spinner/useValue.js +16 -1
  347. package/es/components/split/index.vdt.js +32 -20
  348. package/es/components/split/memo.d.ts +9 -0
  349. package/es/components/split/memo.js +26 -0
  350. package/es/components/steps/index.d.ts +1 -0
  351. package/es/components/steps/index.js +2 -1
  352. package/es/components/steps/index.spec.js +1 -1
  353. package/es/components/steps/index.vdt.js +7 -4
  354. package/es/components/steps/step.vdt.js +2 -3
  355. package/es/components/steps/styles.d.ts +1 -0
  356. package/es/components/steps/styles.js +50 -17
  357. package/es/components/switch/index.spec.js +82 -65
  358. package/es/components/table/cell.js +1 -6
  359. package/es/components/table/cell.vdt.js +1 -1
  360. package/es/components/table/column.vdt.js +40 -24
  361. package/es/components/table/index.spec.js +162 -20
  362. package/es/components/table/row.d.ts +1 -1
  363. package/es/components/table/row.js +2 -1
  364. package/es/components/table/styles.js +16 -9
  365. package/es/components/table/table.d.ts +15 -0
  366. package/es/components/table/table.js +16 -7
  367. package/es/components/table/table.vdt.js +20 -6
  368. package/es/components/table/useChecked.d.ts +3 -2
  369. package/es/components/table/useChecked.js +23 -12
  370. package/es/components/table/useDisableRow.d.ts +2 -1
  371. package/es/components/table/useDisableRow.js +4 -4
  372. package/es/components/table/useDraggable.d.ts +3 -2
  373. package/es/components/table/useDraggable.js +11 -15
  374. package/es/components/table/useGroup.d.ts +9 -3
  375. package/es/components/table/useGroup.js +48 -37
  376. package/es/components/table/useMerge.d.ts +2 -1
  377. package/es/components/table/useMerge.js +5 -4
  378. package/es/components/table/usePagination.d.ts +8 -0
  379. package/es/components/table/usePagination.js +81 -0
  380. package/es/components/table/useStickyScrollbar.js +2 -2
  381. package/es/components/table/useTree.d.ts +2 -1
  382. package/es/components/table/useTree.js +3 -4
  383. package/es/components/table/useWidth.js +2 -2
  384. package/es/components/tabs/index.d.ts +1 -1
  385. package/es/components/tabs/index.js +1 -1
  386. package/es/components/tabs/index.spec.js +67 -0
  387. package/es/components/tabs/index.vdt.js +9 -4
  388. package/es/components/tabs/styles.js +32 -34
  389. package/es/components/tabs/useScroll.d.ts +1 -1
  390. package/es/components/tabs/useScroll.js +75 -48
  391. package/es/components/tag/base.d.ts +1 -0
  392. package/es/components/tag/base.js +1 -1
  393. package/es/components/tag/index.d.ts +1 -0
  394. package/es/components/tag/index.js +2 -1
  395. package/es/components/tag/index.spec.js +147 -4
  396. package/es/components/tag/styles.d.ts +67 -0
  397. package/es/components/tag/styles.js +33 -8
  398. package/es/components/tag/tags.d.ts +27 -0
  399. package/es/components/tag/tags.js +51 -0
  400. package/es/components/tag/tags.vdt.js +91 -0
  401. package/es/components/tag/useChildren.d.ts +2 -0
  402. package/es/components/tag/useChildren.js +39 -0
  403. package/es/components/tag/useDraggable.d.ts +3 -0
  404. package/es/components/tag/useDraggable.js +89 -0
  405. package/es/components/tag/useNowrap.d.ts +7 -0
  406. package/es/components/tag/useNowrap.js +115 -0
  407. package/es/components/timepicker/index.spec.js +1 -1
  408. package/es/components/tooltip/content.d.ts +3 -2
  409. package/es/components/tooltip/content.js +18 -1
  410. package/es/components/tooltip/content.vdt.js +22 -10
  411. package/es/components/tooltip/index.spec.js +147 -92
  412. package/es/components/tooltip/styles.d.ts +23 -0
  413. package/es/components/tooltip/styles.js +2 -2
  414. package/es/components/tooltip/tooltip.d.ts +1 -1
  415. package/es/components/tooltip/tooltip.js +11 -11
  416. package/es/components/transfer/index.vdt.js +14 -3
  417. package/es/components/types.d.ts +1 -0
  418. package/es/components/upload/index.spec.js +5 -6
  419. package/es/components/upload/index.vdt.js +7 -5
  420. package/es/components/utils.d.ts +2 -0
  421. package/es/components/utils.js +24 -3
  422. package/es/components/virtual.d.ts +8 -0
  423. package/es/components/virtual.js +126 -0
  424. package/es/hooks/useResizeObserver.d.ts +1 -1
  425. package/es/hooks/useResizeObserver.js +19 -6
  426. package/es/i18n/en-US.d.ts +4 -1
  427. package/es/i18n/en-US.js +6 -2
  428. package/es/index.d.ts +5 -3
  429. package/es/index.js +5 -3
  430. package/es/packages/kpc-react/__tests__/components/cascader.spec.d.ts +1 -0
  431. package/es/packages/kpc-react/__tests__/components/cascader.spec.js +79 -0
  432. package/es/packages/kpc-react/__tests__/components/drawer.spec.js +74 -6
  433. package/es/site/data/components/button/demos/basic/react.js +3 -1
  434. package/es/site/data/components/button/demos/disabled/react.js +5 -2
  435. package/es/site/data/components/button/demos/group/react.js +28 -2
  436. package/es/site/data/components/button/demos/icon/react.js +12 -6
  437. package/es/site/data/components/button/demos/loading/react.js +4 -4
  438. package/es/site/data/components/button/demos/size/react.js +4 -4
  439. package/es/site/data/components/copy/demos/basic/react.js +23 -0
  440. package/es/site/data/components/copy/demos/children/react.js +44 -0
  441. package/es/site/data/components/copy/index.d.ts +57 -0
  442. package/es/site/data/components/copy/index.js +42 -0
  443. package/es/site/data/components/datepicker/demos/basic/react.js +8 -0
  444. package/es/site/data/components/datepicker/demos/datetime/index.d.ts +1 -0
  445. package/es/site/data/components/datepicker/demos/datetime/index.js +1 -0
  446. package/es/site/data/components/dropdown/demos/basic/react.js +1 -1
  447. package/es/site/data/components/dropdown/demos/checkbox/react.js +1 -1
  448. package/es/site/data/components/dropdown/demos/disabled/react.js +2 -2
  449. package/es/site/data/components/dropdown/demos/nested/react.js +9 -9
  450. package/es/site/data/components/dropdown/demos/position/react.js +3 -3
  451. package/es/site/data/components/dropdown/demos/tooltip/react.js +2 -1
  452. package/es/site/data/components/dropdown/demos/trigger/react.js +2 -2
  453. package/es/site/data/components/form/demos/basic/react.js +1 -1
  454. package/es/site/data/components/icon/demos/icons/index.d.ts +8 -4
  455. package/es/site/data/components/icon/demos/icons/index.js +35 -1
  456. package/es/site/data/components/icon/demos/icons/react.d.ts +9 -4
  457. package/es/site/data/components/icon/demos/icons/react.js +51 -9
  458. package/es/site/data/components/input/demos/autoRows/index.d.ts +9 -0
  459. package/es/site/data/components/input/demos/autoRows/index.js +24 -0
  460. package/es/site/data/components/input/demos/autoRows/react.d.ts +8 -0
  461. package/es/site/data/components/input/demos/autoRows/react.js +62 -0
  462. package/es/site/data/components/input/demos/blocks/react.js +7 -7
  463. package/es/site/data/components/input/demos/clearable/react.js +2 -2
  464. package/es/site/data/components/input/demos/flat/index.d.ts +5 -0
  465. package/es/site/data/components/input/demos/flat/index.js +17 -0
  466. package/es/site/data/components/input/demos/flat/react.d.ts +4 -0
  467. package/es/site/data/components/input/demos/flat/react.js +29 -0
  468. package/es/site/data/components/input/demos/password/index.d.ts +5 -0
  469. package/es/site/data/components/input/demos/password/index.js +17 -0
  470. package/es/site/data/components/input/demos/password/react.d.ts +5 -0
  471. package/es/site/data/components/input/demos/password/react.js +41 -0
  472. package/es/site/data/components/input/demos/showCount/index.d.ts +5 -0
  473. package/es/site/data/components/input/demos/showCount/index.js +17 -0
  474. package/es/site/data/components/input/demos/showCount/react.d.ts +4 -0
  475. package/es/site/data/components/input/demos/showCount/react.js +33 -0
  476. package/es/site/data/components/input/demos/size/react.js +8 -8
  477. package/es/site/data/components/input/demos/textarea/react.js +4 -2
  478. package/es/site/data/components/menu/demos/collapse/index.js +1 -1
  479. package/es/site/data/components/menu/demos/collapse/react.js +1 -1
  480. package/es/site/data/components/pagination/demos/flat/index.d.ts +6 -0
  481. package/es/site/data/components/pagination/demos/flat/index.js +18 -0
  482. package/es/site/data/components/pagination/demos/flat/react.d.ts +5 -0
  483. package/es/site/data/components/pagination/demos/{noBoard → flat}/react.js +12 -8
  484. package/es/site/data/components/popover/demos/basic/react.d.ts +8 -0
  485. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/react.js +14 -9
  486. package/es/site/data/components/popover/demos/button/index.d.ts +8 -0
  487. package/es/site/data/components/popover/demos/button/index.js +42 -0
  488. package/es/site/data/components/popover/demos/button/react.d.ts +8 -0
  489. package/es/site/data/components/popover/demos/button/react.js +73 -0
  490. package/es/site/data/components/popover/demos/content/index.d.ts +7 -0
  491. package/es/site/data/components/popover/demos/content/index.js +28 -0
  492. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/content}/react.d.ts +0 -1
  493. package/es/site/data/components/popover/demos/content/react.js +43 -0
  494. package/es/site/data/components/popover/demos/text/index.d.ts +7 -0
  495. package/es/site/data/components/popover/demos/text/index.js +28 -0
  496. package/es/site/data/components/popover/demos/text/react.d.ts +6 -0
  497. package/es/site/data/components/popover/demos/text/react.js +36 -0
  498. package/es/site/data/components/popover/demos/type/index.d.ts +11 -0
  499. package/es/site/data/components/popover/demos/type/index.js +34 -0
  500. package/es/site/data/components/popover/demos/type/react.d.ts +11 -0
  501. package/es/site/data/components/popover/demos/type/react.js +58 -0
  502. package/es/site/data/components/popover/index.d.ts +57 -0
  503. package/es/site/data/components/popover/index.js +42 -0
  504. package/es/site/data/components/progress/demos/children/react.js +4 -4
  505. package/es/site/data/components/progress/demos/circleSize/index.d.ts +14 -0
  506. package/es/site/data/components/progress/demos/circleSize/index.js +43 -0
  507. package/es/site/data/components/progress/demos/circleSize/react.d.ts +14 -0
  508. package/es/site/data/components/progress/demos/circleSize/react.js +98 -0
  509. package/es/site/data/components/progress/demos/customColor/react.js +4 -4
  510. package/es/site/data/components/select/demos/basic/react.js +19 -7
  511. package/es/site/data/components/select/demos/creatable/react.js +2 -1
  512. package/es/site/data/components/select/demos/customMenu/react.js +5 -5
  513. package/es/site/data/components/select/demos/draggable/index.d.ts +10 -0
  514. package/es/site/data/components/select/demos/draggable/index.js +24 -0
  515. package/es/site/data/components/select/demos/draggable/react.d.ts +10 -0
  516. package/es/site/data/components/select/demos/draggable/react.js +85 -0
  517. package/es/site/data/components/select/demos/flat/index.d.ts +5 -0
  518. package/es/site/data/components/select/demos/flat/index.js +17 -0
  519. package/es/site/data/components/select/demos/flat/react.d.ts +4 -0
  520. package/es/site/data/components/select/demos/flat/react.js +73 -0
  521. package/es/site/data/components/select/demos/inline/index.d.ts +5 -0
  522. package/es/site/data/components/select/demos/inline/index.js +17 -0
  523. package/es/site/data/components/select/demos/inline/react.d.ts +4 -0
  524. package/es/site/data/components/select/demos/nowrap/index.d.ts +5 -0
  525. package/es/site/data/components/select/demos/nowrap/index.js +17 -0
  526. package/es/site/data/components/select/demos/nowrap/react.d.ts +4 -0
  527. package/es/site/data/components/select/demos/nowrap/react.js +41 -0
  528. package/es/site/data/components/select/demos/size/index.d.ts +1 -0
  529. package/es/site/data/components/select/demos/size/index.js +2 -1
  530. package/es/site/data/components/select/demos/size/react.d.ts +1 -0
  531. package/es/site/data/components/select/demos/size/react.js +93 -1
  532. package/es/site/data/components/steps/demos/vertical/index.d.ts +14 -0
  533. package/es/site/data/components/steps/demos/vertical/index.js +40 -0
  534. package/es/site/data/components/steps/demos/vertical/react.d.ts +14 -0
  535. package/es/site/data/components/steps/demos/vertical/react.js +124 -0
  536. package/es/site/data/components/switch/demos/onOff/react.js +1 -3
  537. package/es/site/data/components/table/demos/hideHeader/index.d.ts +12 -0
  538. package/es/site/data/components/table/demos/hideHeader/index.js +30 -0
  539. package/es/site/data/components/table/demos/hideHeader/react.d.ts +11 -0
  540. package/es/site/data/components/table/demos/hideHeader/react.js +60 -0
  541. package/es/site/data/components/table/demos/pagination/index.d.ts +12 -0
  542. package/es/site/data/components/table/demos/pagination/index.js +35 -0
  543. package/es/site/data/components/table/demos/pagination/react.d.ts +16 -0
  544. package/es/site/data/components/table/demos/pagination/react.js +65 -0
  545. package/es/site/data/components/table/demos/title/react.js +4 -4
  546. package/es/site/data/components/tabs/demos/card/react.js +1 -15
  547. package/es/site/data/components/tabs/demos/closable/index.js +1 -1
  548. package/es/site/data/components/tabs/demos/closable/react.js +9 -3
  549. package/es/site/data/components/tabs/demos/scroll/index.d.ts +18 -0
  550. package/es/site/data/components/tabs/demos/scroll/index.js +87 -0
  551. package/es/site/data/components/tabs/demos/scroll/react.d.ts +18 -0
  552. package/es/site/data/components/tabs/demos/scroll/react.js +166 -0
  553. package/es/site/data/components/tabs/demos/vertical/react.js +1 -16
  554. package/es/site/data/components/tag/demos/draggable/index.d.ts +11 -0
  555. package/es/site/data/components/tag/demos/draggable/index.js +24 -0
  556. package/es/site/data/components/tag/demos/draggable/react.d.ts +11 -0
  557. package/es/site/data/components/tag/demos/draggable/react.js +62 -0
  558. package/es/site/data/components/tag/demos/tags/index.d.ts +12 -0
  559. package/es/site/data/components/tag/demos/tags/index.js +39 -0
  560. package/es/site/data/components/tag/demos/tags/react.d.ts +12 -0
  561. package/es/site/data/components/tag/demos/tags/react.js +83 -0
  562. package/es/site/src/pages/document/index.js +2 -3
  563. package/es/site/src/pages/styles.js +1 -1
  564. package/es/site/src/router/index.js +1 -1
  565. package/es/styles/fonts/iconfont.eot +0 -0
  566. package/es/styles/fonts/iconfont.js +2 -2
  567. package/es/styles/fonts/iconfont.svg +35 -35
  568. package/es/styles/fonts/iconfont.ttf +0 -0
  569. package/es/styles/fonts/iconfont.woff +0 -0
  570. package/es/styles/fonts/ionicons.js +3 -3
  571. package/es/styles/global.js +1 -1
  572. package/hooks/useResizeObserver.ts +19 -7
  573. package/i18n/en-US.ts +6 -1
  574. package/index.ts +5 -3
  575. package/package.json +9 -5
  576. package/styles/fonts/demo.css +277 -108
  577. package/styles/fonts/demo_index.html +2169 -0
  578. package/styles/fonts/iconfont.css +52 -50
  579. package/styles/fonts/iconfont.eot +0 -0
  580. package/styles/fonts/iconfont.js +1 -0
  581. package/styles/fonts/iconfont.json +611 -0
  582. package/styles/fonts/iconfont.svg +35 -35
  583. package/styles/fonts/iconfont.ts +124 -125
  584. package/styles/fonts/iconfont.ttf +0 -0
  585. package/styles/fonts/iconfont.woff +0 -0
  586. package/styles/fonts/iconfont.woff2 +0 -0
  587. package/styles/fonts/ionicons.ts +2 -3
  588. package/styles/global.ts +7 -7
  589. package/components/pagination/demos/noBoard.md +0 -22
  590. package/components/table/useResizeObserver.ts +0 -22
  591. package/components/tooltip/demos/confirm.md +0 -41
  592. package/es/components/table/useResizeObserver.d.ts +0 -2
  593. package/es/components/table/useResizeObserver.js +0 -20
  594. /package/components/select/demos/{noBorder.md → inline.md} +0 -0
  595. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.d.ts +0 -0
  596. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.js +0 -0
  597. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/react.d.ts +0 -0
  598. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.d.ts +0 -0
  599. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.js +0 -0
  600. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/react.d.ts +0 -0
  601. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.d.ts +0 -0
  602. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.js +0 -0
  603. /package/es/site/data/components/select/demos/{noBorder → inline}/react.js +0 -0
@@ -6,7 +6,7 @@ order: 2
6
6
  给表格定义复杂的表头内容,只需要通过`TableColumn` `title`扩展点传入自定义内容即可
7
7
 
8
8
  ```vdt
9
- import {Table, TableColumn, Tooltip} from 'kpc';
9
+ import {Table, TableColumn, Tooltip, Icon} from 'kpc';
10
10
 
11
11
  <Table data={this.get('data')}>
12
12
  <TableColumn key="a"
@@ -14,9 +14,9 @@ import {Table, TableColumn, Tooltip} from 'kpc';
14
14
  sortable
15
15
  >
16
16
  <b:title>
17
- <span title="自定义表头内容" class="middle title">自定义表头内容</span>
17
+ <span title="自定义表头内容" class="title">自定义表头内容</span>
18
18
  <Tooltip content="tooltip content">
19
- <i class="ion-ios-help-outline middle"></i>
19
+ <Icon class="k-icon-question" />
20
20
  </Tooltip>
21
21
  </b:title>
22
22
  </TableColumn>
@@ -26,8 +26,6 @@ import {Table, TableColumn, Tooltip} from 'kpc';
26
26
 
27
27
  ```styl
28
28
  .k-table
29
- .middle
30
- vertical-align middle
31
29
  .title
32
30
  margin-right 8px
33
31
  ```
@@ -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` &#124; `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
  });
@@ -214,12 +230,36 @@ describe('Table', () => {
214
230
  const [item1, item2] = dropdown2.querySelectorAll<HTMLElement>('.k-checkbox');
215
231
  item1.click();
216
232
  await wait();
217
- expect(instance.get('multipleGroup')).to.eql({status: ['active']});
233
+ expect(instance.get('multipleGroup')).to.eql({status: []});
218
234
  expect(table2.innerHTML).to.matchSnapshot();
219
235
  item2.click();
220
236
  await wait();
237
+ expect(instance.get('multipleGroup')).to.eql({status: []});
238
+
239
+ // click confirm
240
+ const [reset, confirm] = dropdown2.querySelectorAll<HTMLElement>('.k-table-group-footer .k-btn');
241
+ confirm.click();
242
+ await wait();
221
243
  expect(instance.get('multipleGroup')).to.eql({status: ['active', 'stopped']});
222
244
  expect(table2.innerHTML).to.matchSnapshot();
245
+
246
+ // click reset
247
+ dispatchEvent(icon2, 'click');
248
+ await wait();
249
+ expect(dropdown2.innerHTML).to.matchSnapshot();
250
+ reset.click();
251
+ await wait();
252
+ expect(dropdown2.innerHTML).to.matchSnapshot();
253
+ confirm.click();
254
+ await wait();
255
+ expect(instance.get('multipleGroup')).to.eql({status: []});
256
+
257
+ // update group
258
+ instance.set('statusGroup', [{label: 'label', value: 'value'}]);
259
+ dispatchEvent(icon, 'click');
260
+ await wait(500);
261
+ const newDropdown= getElement('.k-table-group-dropdown')!;
262
+ expect(newDropdown.innerHTML).to.matchSnapshot();
223
263
  });
224
264
 
225
265
  it('fix columns', async () => {
@@ -559,4 +599,53 @@ describe('Table', () => {
559
599
  await wait();
560
600
  expect(update.callCount).to.eql(1);
561
601
  });
602
+
603
+ it('pagination', async () => {
604
+ const [instance, element] = mount(PaginationDemo);
605
+ const table = instance.refs.table as Table;
606
+ const pagination = table.pagination.paginationRef;
607
+ const spy = sinon.spy();
608
+
609
+ table.on('changePage', spy);
610
+
611
+ // check all
612
+ table.checkAll();
613
+ expect(table.getCheckedData()).to.have.length(10);
614
+
615
+ // next page
616
+ table.set('pagination', { value: 2 });
617
+ (table as any).trigger('$receive:pagination');
618
+ await wait();
619
+ expect(table.getCheckedData()).to.have.length(0);
620
+
621
+ // check all again
622
+ table.checkAll();
623
+ expect(table.getCheckedData()).to.have.length(10);
624
+
625
+ // change limit
626
+ table.set('pagination', { value: 1, limit: 20 });
627
+ (table as any).trigger('$receive:pagination');
628
+ await wait();
629
+ expect(table.getCheckedData()).to.have.length(10);
630
+
631
+ // check all again
632
+ table.checkAll();
633
+ expect(table.getCheckedData()).to.have.length(20);
634
+
635
+ // change limit from pagination
636
+ pagination.value!.set('limit', 10);
637
+ await wait();
638
+ expect(table.getCheckedData()).to.have.length(10);
639
+ // FIXME: Pagination component should no trigger change event multiple times
640
+ // when we set value and limit at the same time
641
+ expect(spy.callCount).to.eql(4);
642
+ expect(spy.lastCall.lastArg).to.eql({value: 1, limit: 10});
643
+
644
+ // change page from pagination
645
+ await wait();
646
+ pagination.value!.changePage(2);
647
+ expect(table.getCheckedData()).to.have.length(0);
648
+ expect(spy.callCount).to.eql(5);
649
+ expect(spy.lastCall.lastArg).to.eql({value: 2, limit: 10});
650
+ });
562
651
  });
@@ -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
@@ -17,6 +17,7 @@ const defaults = {
17
17
  // head
18
18
  thead: {
19
19
  get bgColor() { return theme.color.bg },
20
+ get color() { return theme.color.lightBlack },
20
21
  padding: `0 5px 0 12px`,
21
22
  fontSize: `12px`,
22
23
  fontWeight: `bold`,
@@ -37,10 +38,9 @@ const defaults = {
37
38
 
38
39
  // group
39
40
  group: {
40
- width: `14px`,
41
- gap: `10px`,
42
- color: `#a6a6a6`,
41
+ gap: `8px`,
43
42
  menuMaxHeight: '200px',
43
+ menuMinWidth: '200px',
44
44
  get activeColor() { return theme.color.primary },
45
45
  headerPadding: `8px`,
46
46
  get headerBorder() { return `1px solid ${theme.color.bg}` },
@@ -49,9 +49,9 @@ const defaults = {
49
49
  // sort
50
50
  sort: {
51
51
  iconHeight: `7px`,
52
- gap: `10px`,
53
- color: `#d0d5d9`,
54
- disabledColor: `#ddd`,
52
+ gap: `8px`,
53
+ // color: `#d0d5d9`,
54
+ get enabledColor() { return theme.color.primary },
55
55
  },
56
56
 
57
57
  expandBgColor: '#fdfcff',
@@ -133,10 +133,11 @@ export function makeStyles() {
133
133
  display: inline-flex;
134
134
  align-items: center;
135
135
  max-width: 100%;
136
- color: ${theme.color.lightBlack};
136
+ color: ${table.thead.color};
137
137
  }
138
138
  .k-table-title-text {
139
139
  flex: 1;
140
+ display: inline-flex;
140
141
  }
141
142
 
142
143
  // tbody
@@ -241,23 +242,7 @@ export function makeStyles() {
241
242
 
242
243
  // group
243
244
  .k-table-group {
244
- width: ${table.group.width} !important;
245
- height: ${table.group.width} !important;
246
245
  margin-left: ${table.group.gap};
247
- position: relative;
248
- color: ${table.group.color};
249
- &:hover {
250
- color: ${theme.color.primary};
251
- }
252
- .k-icon {
253
- // position: absolute;
254
- // top: -1px;
255
- // left: 2px;
256
- transition: transform ${table.transition};
257
- }
258
- &.k-dropdown-open .k-icon {
259
- transform: rotate(180deg);
260
- }
261
246
  }
262
247
 
263
248
  // force checkbox / radio vertical align middle
@@ -278,12 +263,11 @@ export function makeStyles() {
278
263
  display: block;
279
264
  height: ${table.sort.iconHeight};
280
265
  line-height: ${table.sort.iconHeight};
281
- margin-left: ${table.sort.gap};
282
- color: ${table.sort.color};
266
+ margin: 0 0 1px ${table.sort.gap};
283
267
  }
284
- &.k-asc .k-icon.k-desc,
285
- &.k-desc .k-icon.k-asc {
286
- color: ${table.sort.disabledColor};
268
+ &.k-desc .k-icon.k-desc,
269
+ &.k-asc .k-icon.k-asc {
270
+ color: ${table.sort.enabledColor};
287
271
  }
288
272
  }
289
273
 
@@ -368,12 +352,18 @@ export function makeStyles() {
368
352
  }
369
353
  `;
370
354
  })}
355
+
356
+ // pagination
357
+ > .k-pagination {
358
+ margin: 16px 0;
359
+ }
371
360
  `;
372
361
  }
373
362
 
374
363
  export function makeGroupMenuStyles() {
375
364
  return css`
376
365
  max-height: ${table.group.menuMaxHeight};
366
+ min-width: ${table.group.menuMinWidth} !important;
377
367
  overflow: auto;
378
368
  .k-dropdown-item.k-active {
379
369
  color: ${table.group.activeColor};
@@ -382,5 +372,13 @@ export function makeGroupMenuStyles() {
382
372
  padding: ${table.group.headerPadding};
383
373
  border-bottom: ${table.group.headerBorder};
384
374
  }
375
+ .k-table-group-footer {
376
+ text-align: right;
377
+ border-top: ${table.group.headerBorder};
378
+ padding: 8px;
379
+ .k-btn {
380
+ margin-left: 8px;
381
+ }
382
+ }
385
383
  `
386
384
  }
@@ -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'),