@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
@@ -0,0 +1,49 @@
1
+ ---
2
+ title: 标签可拖动
3
+ order: 5
4
+ ---
5
+
6
+ ```vdt
7
+ import {Tags, Tag, Tooltip} from 'kpc';
8
+
9
+ <div>
10
+ <Tags draggable>
11
+ <Tag v-for={this.get('tags1')}
12
+ key={$value}
13
+ type={$value}
14
+ >{$value}</Tag>
15
+ <Tooltip content="test" key="test">
16
+ <Tag>with tooltip</Tag>
17
+ </Tooltip>
18
+ </Tags>
19
+ <br />
20
+ <Tags draggable nowrap style="width: 300px;">
21
+ <Tag v-for={this.get('tags2')}
22
+ key={$value}
23
+ type={$value}
24
+ >{$value}</Tag>
25
+ <Tooltip content="test" key="test">
26
+ <Tag>with tooltip</Tag>
27
+ </Tooltip>
28
+ </Tags>
29
+ </div>
30
+ ```
31
+
32
+ ```ts
33
+ import {TagProps} from 'kpc';
34
+
35
+ interface Props {
36
+ tags1: Required<TagProps>['type'][]
37
+ tags2: Required<TagProps>['type'][]
38
+ }
39
+
40
+ export default class extends Component<Props> {
41
+ static template = template;
42
+ static defaults() {
43
+ return {
44
+ tags1: ['default', 'primary', 'success', 'warning', 'danger'],
45
+ tags2: ['default', 'primary', 'success', 'warning', 'danger'],
46
+ } as Props;
47
+ }
48
+ }
49
+ ```
@@ -0,0 +1,72 @@
1
+ ---
2
+ title: 标签组
3
+ order: 4
4
+ ---
5
+
6
+ 使用`Tags`包裹`Tag`可以展示标签组,给`Tags`指定`nowrap`可以让标签自适应仅展示成一行,超出的部分会隐藏,
7
+ 同时会展示隐藏的数量
8
+
9
+ ```vdt
10
+ import {Tags, Tag, Split, Tooltip} from 'kpc';
11
+
12
+ <Split style="width: 600px; background: #e1e1e1;">
13
+ <b:first>
14
+ <Tags>
15
+ <Tag v-for={this.get('tags1')}
16
+ key={$value}
17
+ type={$value}
18
+ closable
19
+ ev-close={(e) => this.remove('tags1', $value, e)}
20
+ >{$value}</Tag>
21
+ </Tags>
22
+ </b:first>
23
+ <b:last>
24
+ <Tags nowrap>
25
+ <Tag v-for={this.get('tags2')}
26
+ key={$value}
27
+ type={$value}
28
+ closable
29
+ ev-close={(e) => this.remove('tags2', $value, e)}
30
+ >{$value}</Tag>
31
+ <Tooltip content="test" key="test">
32
+ <Tag>with tooltip</Tag>
33
+ </Tooltip>
34
+ </Tags>
35
+ </b:last>
36
+ </Split>
37
+ ```
38
+
39
+ ```ts
40
+ import {TagProps} from 'kpc';
41
+
42
+ interface Props {
43
+ tags1: Required<TagProps>['type'][]
44
+ tags2: Required<TagProps>['type'][]
45
+ }
46
+
47
+ export default class extends Component<Props> {
48
+ static template = template;
49
+ static defaults() {
50
+ return {
51
+ tags1: ['default', 'primary', 'success', 'warning', 'danger'],
52
+ tags2: ['default', 'primary', 'success', 'warning', 'danger'],
53
+ } as Props;
54
+ }
55
+
56
+ remove(name: keyof Props, type: Required<TagProps>['type'], e: MouseEvent) {
57
+ e.preventDefault();
58
+
59
+ const tags = this.get(name).filter((tag) => tag !== type);
60
+ this.set(name, tags);
61
+ }
62
+ }
63
+ ```
64
+
65
+ ```react-methods
66
+ remove(name: keyof Props, type: Required<TagProps>['type'], e: MouseEvent) {
67
+ e.preventDefault();
68
+
69
+ const tags = this.state[name].filter((tag) => tag !== type);
70
+ this.setState({[name as 'tags1']: tags});
71
+ }
72
+ ```
@@ -7,6 +7,8 @@ sidebar: doc
7
7
 
8
8
  # 属性
9
9
 
10
+ ## Tag
11
+
10
12
  | 属性 | 说明 | 类型 | 默认值 |
11
13
  | --- | --- | --- | --- |
12
14
  | type | 组件类型 | `"default"` &#124; `"primary"` &#124; `"success"` &#124; `"warning"` &#124; `"danger"` | `"default"` |
@@ -16,8 +18,48 @@ sidebar: doc
16
18
  | size | 组件尺寸 | `"large"` &#124; `"default"` &#124; `"small"` &#124; `"mini"` | `"default"` |
17
19
  | border | 定义边框样式 | `"solid"` &#124; `"dashed"` &#124; `"none"` | `"none"` |
18
20
 
21
+ ## Tags
22
+
23
+ | 属性 | 说明 | 类型 | 默认值 |
24
+ | --- | --- | --- | --- |
25
+ | size | 定义“更多”标签尺寸 | `"large"` &#124; `"default"` &#124; `"small"` &#124; `"mini"` | `"default"` |
26
+ | border | 定义“更多”标签边框样式 | `"solid"` &#124; `"dashed"` &#124; `"none"` | `"none"` |
27
+ | nowrap | 是否单行展示标签组,超出的部分会隐藏,仅展示隐藏数量 | `boolean` | `flase` |
28
+ | draggable | 标签是否支持拖动排序 | `boolean` | `false` |
29
+
30
+ # 扩展点
31
+
32
+ ## Tags
33
+
34
+ | 名称 | 说明 | 参数 |
35
+ | --- | --- | --- |
36
+ | append | 追加到后面的元素,不参与到`Tags`对`Tag`的管理中 | - |
37
+
38
+
19
39
  # 事件
20
40
 
41
+ ## Tag
42
+
21
43
  | 事件名 | 说明 | 参数 |
22
44
  | --- | --- | --- |
23
45
  | close | 标签关闭事件 | `(e: MouseEvent) => void` |
46
+
47
+ ## Tags
48
+
49
+ | 事件名 | 说明 | 参数 |
50
+ | --- | --- | --- |
51
+ | dragstart | 拖动开始 | `(v: TagsDragStartParam) => void` |
52
+ | dragend | 拖动结束 | `(v: TagsDragEndParam) => void` |
53
+
54
+ ```ts
55
+ type Key = string | number
56
+
57
+ export type TagsDragStartParam = {
58
+ key: Key
59
+ from: number
60
+ }
61
+
62
+ export type TagsDragEndParam = TagsDragStartParam & {
63
+ to: number
64
+ }
65
+ ```
@@ -1,8 +1,10 @@
1
1
  import ClosableDemo from '~/components/tag/demos/closable';
2
- import {mount, unmount, wait} from '../../test/utils';
2
+ import {mount, unmount, wait, dispatchEvent, getElement} from '../../test/utils';
3
+ import TagsDemo from '~/components/tag/demos/tags';
4
+ import DraggableDemo from '~/components/tag/demos/draggable';
3
5
 
4
6
  describe('Tag', () => {
5
- afterEach(() => unmount());
7
+ // afterEach(() => unmount());
6
8
 
7
9
  it('should not close tag if we has prevented default', async () => {
8
10
  const [instance, element] = mount(ClosableDemo);
@@ -18,4 +20,70 @@ describe('Tag', () => {
18
20
  await wait(500);
19
21
  expect(element.innerHTML).to.matchSnapshot();
20
22
  });
23
+
24
+ it('should hide tags that overflow', async () => {
25
+ const [instance, element] = mount(TagsDemo);
26
+
27
+ const lastPanel = element.querySelector<HTMLDivElement>('.k-split-last')!;
28
+
29
+ await wait(0);
30
+ expect(lastPanel.innerHTML).to.matchSnapshot();
31
+
32
+ // show tooltip
33
+ let more = lastPanel.querySelector<HTMLDivElement>('.k-tags-more')!;
34
+ dispatchEvent(more, 'mouseenter');
35
+ await wait();
36
+ let tooltip = getElement('.k-tags-tooltip')!;
37
+ expect(tooltip.querySelectorAll('.k-tag').length).to.eql(3);
38
+
39
+ // remove one tag
40
+ dispatchEvent(lastPanel.querySelector<HTMLElement>('.k-tag-close')!, 'click');
41
+ await wait(0);
42
+ expect(lastPanel.innerHTML).to.matchSnapshot();
43
+
44
+ // resize
45
+ const tags = lastPanel.querySelector<HTMLDivElement>('.k-tags')!;
46
+ tags.style.width = '200px';
47
+ await wait(200);
48
+ expect(lastPanel.innerHTML).to.matchSnapshot();
49
+
50
+ // show tooltip again (the "more" element will be removed and created again)
51
+ more = lastPanel.querySelector<HTMLDivElement>('.k-tags-more')!;
52
+ dispatchEvent(more, 'mouseenter');
53
+ await wait();
54
+ tooltip = getElement('.k-tags-tooltip')!;
55
+ expect(tooltip.querySelectorAll('.k-tag').length).to.eql(3);
56
+ });
57
+
58
+ it('should support drag tags', async () => {
59
+ const [instance, element] = mount(DraggableDemo);
60
+
61
+ async function test(from: HTMLElement, to: HTMLElement) {
62
+ dispatchEvent(from, 'dragstart');
63
+ await wait();
64
+ dispatchEvent(to, 'dragover');
65
+ await wait(500);
66
+ expect(element.innerHTML).to.matchSnapshot();
67
+ dispatchEvent(from, 'dragend');
68
+ await wait();
69
+ expect(element.innerHTML).to.matchSnapshot();
70
+ }
71
+ const [tag1, tag2, , , , tag6] = element.querySelectorAll<HTMLElement>('.k-tag');
72
+ await test(tag1, tag2);
73
+ await test(tag1, tag6);
74
+
75
+ // with more tooltip
76
+ const [tag11, tag22, , , more] = element.querySelectorAll<HTMLElement>('.k-tags:last-of-type .k-tag');
77
+ await test(tag11, tag22);
78
+ await wait(0);
79
+ dispatchEvent(more, 'mouseenter');
80
+ await wait();
81
+ const dropdown = getElement('.k-tags-tooltip')!;
82
+ const [tag55, tag66] = dropdown.querySelectorAll<HTMLElement>('.k-tag');
83
+ await test(tag55, tag11);
84
+ expect(dropdown.innerText).to.eql('warning\nwith tooltip');
85
+
86
+ // should not drag to other tags
87
+ await test(tag11, tag2);
88
+ });
21
89
  });
@@ -1,5 +1,7 @@
1
1
  import {TagProps, TagEvents, TagBlocks, Tag as BaseTag} from './base';
2
2
 
3
+ export * from './tags';
4
+
3
5
  export type {TagProps, TagEvents, TagBlocks}
4
6
 
5
7
  // export declare class _Tag extends BaseTag<
@@ -23,6 +23,11 @@ const defaults = deepDefaults(
23
23
  close: {
24
24
  fontSize: '20px',
25
25
  gap: '8px',
26
+ /**
27
+ * fix the width to calculate the width for nowrap tags,
28
+ * otherwise the width will be decided by font font-icons loaded
29
+ */
30
+ width: '7px',
26
31
  },
27
32
  disabled: {
28
33
  get color() { return theme.color.disabled },
@@ -32,24 +37,28 @@ const defaults = deepDefaults(
32
37
  large: {
33
38
  padding: `0px 8px`,
34
39
  height: '24px',
40
+ get fontSize() { return theme.large.fontSize },
35
41
  close: {
36
- fontSize: '20px',
37
- gap: '12px',
42
+ fontSize: '22px',
43
+ gap: '6px',
38
44
  }
39
45
  },
40
46
  small: {
41
47
  padding: `0 4px`,
42
48
  height: '16px',
49
+ get fontSize() { return theme.small.fontSize },
43
50
  close: {
44
- fontSize: '12px',
51
+ fontSize: '18px',
45
52
  gap: '4px'
46
53
  }
47
54
  },
48
55
  mini: {
49
56
  padding: `0 2px`,
50
57
  height: '14px',
58
+ // get fontSize() { return theme.mini.fontSize },
59
+ fontSize: '11px',
51
60
  close: {
52
- fontSize: '12px',
61
+ fontSize: '16px',
53
62
  gap: '2px'
54
63
  }
55
64
  },
@@ -57,6 +66,9 @@ const defaults = deepDefaults(
57
66
  get bgColor() { return theme.color.bg },
58
67
  },
59
68
 
69
+ tags: {
70
+ gap: '8px',
71
+ }
60
72
  },
61
73
  types.reduce((memo, type) => {
62
74
  if (type === 'disabled') return memo;
@@ -73,6 +85,8 @@ setDefault(() => {
73
85
  tag = deepDefaults(theme, {tag: defaults}).tag;
74
86
  });
75
87
 
88
+ export { tag };
89
+
76
90
  export function makeStyles() {
77
91
  return css`
78
92
  display: inline-flex;
@@ -85,6 +99,7 @@ export function makeStyles() {
85
99
  .k-tag-close {
86
100
  font-size: ${tag.close.fontSize};
87
101
  margin-left: ${tag.close.gap};
102
+ width: ${tag.close.width};
88
103
  }
89
104
 
90
105
  &.k-none {
@@ -110,6 +125,7 @@ export function makeStyles() {
110
125
  &.k-${s} {
111
126
  padding: ${styles.padding};
112
127
  height: ${styles.height};
128
+ font-size: ${styles.fontSize};
113
129
  .k-tag-close {
114
130
  font-size: ${styles.close.fontSize};
115
131
  margin-left: ${styles.close.gap};
@@ -122,5 +138,38 @@ export function makeStyles() {
122
138
  &.k-dashed {
123
139
  border-style: dashed;
124
140
  }
141
+
142
+ // draggable
143
+ &.k-dragging {
144
+ opacity: 0;
145
+ }
146
+ `;
147
+ }
148
+
149
+ export function makeTagsStyles() {
150
+ return css`
151
+ display: flex;
152
+ flex-wrap: wrap;
153
+ gap: ${defaults.tags.gap};
154
+ position: relative;
155
+ overflow: hidden;
156
+ &.k-nowrap {
157
+ flex-wrap: nowrap;
158
+ .k-tag {
159
+ white-space: nowrap;
160
+ overflow: hidden;
161
+ text-overflow: ellipsis;
162
+ flex-shrink: 0;
163
+ }
164
+ }
165
+ .k-tags-more {
166
+ cursor: default;
167
+ font-family: monospace;
168
+ }
169
+
170
+ // draggable
171
+ .k-tag.k-draggable {
172
+ cursor: move;
173
+ }
125
174
  `;
126
175
  }
@@ -0,0 +1,54 @@
1
+ import { Component, TypeDefs, Key } from 'intact';
2
+ import template from './tags.vdt';
3
+ import { useNowrap } from './useNowrap';
4
+ import { TagProps, typeDefs as tagTypeDefs } from './base';
5
+ import { useChildren } from './useChildren';
6
+ import { useDraggable } from './useDraggable';
7
+ import type {Events} from '../types';
8
+
9
+ export interface TagsProps extends Pick<TagProps, 'size' | 'border'> {
10
+ nowrap?: boolean
11
+ draggable?: boolean
12
+ }
13
+
14
+ export type TagsDragStartParam = {
15
+ key: Key
16
+ from: number
17
+ }
18
+
19
+ export type TagsDragEndParam = TagsDragStartParam & {
20
+ to: number
21
+ }
22
+
23
+ export interface TagsEvents {
24
+ dragstart: [TagsDragStartParam]
25
+ dragend: [TagsDragEndParam]
26
+ }
27
+
28
+ const typeDefs: Required<TypeDefs<TagsProps>> = {
29
+ nowrap: Boolean,
30
+ draggable: Boolean,
31
+ size: tagTypeDefs.size,
32
+ border: tagTypeDefs.border,
33
+ };
34
+
35
+ const defaults = (): Partial<TagsProps> => ({
36
+ size: 'default',
37
+ border: 'none',
38
+ });
39
+
40
+ const events: Events<TagsEvents> = {
41
+ dragstart: true,
42
+ dragend: true,
43
+ };
44
+
45
+ export class Tags extends Component<TagsProps, TagsEvents> {
46
+ static template = template;
47
+ static typeDefs = typeDefs;
48
+ static defaults = defaults;
49
+ static events = events;
50
+
51
+ private children = useChildren();
52
+ private draggable = useDraggable(this.children);
53
+ private nowrap = useNowrap(this.draggable);
54
+ }
@@ -0,0 +1,50 @@
1
+ import { TransitionGroup } from 'intact';
2
+ import { getRestProps } from '../utils';
3
+ import { makeTagsStyles } from './styles';
4
+ import { Tag } from './';
5
+ import { Tooltip } from '../tooltip';
6
+ import { Tags } from './tags';
7
+ import { Virtual } from '../virtual';
8
+
9
+ const { className, nowrap, size, border, draggable } = this.get();
10
+
11
+ const classNameObj = {
12
+ 'k-tags': true,
13
+ 'k-nowrap': nowrap,
14
+ 'k-draggable': draggable,
15
+ [makeTagsStyles()]: true,
16
+ [className]: className,
17
+ }
18
+
19
+ const { containerRef, children, hiddenChildren } = this.nowrap;
20
+ const vNodes = children.value;
21
+
22
+ /**
23
+ * We should always render Tooltip in nowrap mode, otherwise it will be removed while we close one tag.
24
+ * Because we will render all tags to calculate the width
25
+ */
26
+ <div class={classNameObj} {...getRestProps(this)} ref={containerRef}>
27
+ <TransitionGroup name="k-fade" v-if={!nowrap}>
28
+ {vNodes}
29
+ </TransitionGroup>
30
+ <template v-else>{vNodes}</template>
31
+ <Tooltip
32
+ v-if={nowrap}
33
+ key="$tooltip"
34
+ hoverable
35
+ theme="light"
36
+ class="k-tags-tooltip"
37
+ >
38
+ <Tag key="$more"
39
+ class={{"k-tags-more": true, 'c-hidden': !hiddenChildren.value.length}}
40
+ size={size}
41
+ border={border}
42
+ >
43
+ +{hiddenChildren.value.length}
44
+ </Tag>
45
+ <b:content>
46
+ <div class={classNameObj}>{hiddenChildren.value}</div>
47
+ </b:content>
48
+ </Tooltip>
49
+ <b:append />
50
+ </div>
@@ -0,0 +1,42 @@
1
+ import { VNode, useInstance } from 'intact';
2
+ import type { Tags } from './tags';
3
+ import { eachChildren, findChildren, isComponentVNode, ValidVNode } from '../utils';
4
+ import { isStringOrNumber } from 'intact-shared';
5
+ import { useState } from '../../hooks/useState';
6
+ import { Tag } from './';
7
+ import { Dropdown } from '../dropdown';
8
+ import { Tooltip } from '../tooltip';
9
+
10
+ export function useChildren() {
11
+ const instance = useInstance() as Tags;
12
+ const children = useState<VNode[]>([]);
13
+
14
+ instance.watch('children', (v) => {
15
+ const vNodes: VNode[] = [];
16
+ eachChildren(v, (vNode) => {
17
+ if (isTagOrContainsTag(vNode)) {
18
+ vNodes.push(vNode);
19
+ }
20
+ })
21
+ children.set(vNodes);
22
+ });
23
+
24
+ return children;
25
+ }
26
+
27
+ function isTagOrContainsTag(vNode: ValidVNode): vNode is VNode {
28
+ if (isStringOrNumber(vNode)) return false;
29
+
30
+ if (isComponentVNode(vNode, Tag)) {
31
+ return true;
32
+ }
33
+
34
+ if (isComponentVNode(vNode, Dropdown) || isComponentVNode(vNode, Tooltip)) {
35
+ return !!findChildren(vNode.props?.children, (vNode) => {
36
+ return isTagOrContainsTag(vNode);
37
+ });
38
+ }
39
+
40
+ return false;
41
+ }
42
+
@@ -0,0 +1,97 @@
1
+ import {
2
+ VNode,
3
+ useInstance,
4
+ findDomFromVNode,
5
+ createVNode as h,
6
+ Key,
7
+ } from 'intact';
8
+ import type { Tags } from './tags';
9
+ import { nextFrame, debounce, swap } from '../utils';
10
+ import { useState, watchState, State } from '../../hooks/useState';
11
+ import { Virtual } from '../virtual';
12
+ import { cx } from '@emotion/css';
13
+
14
+ export function useDraggable(originVNodes: State<VNode[]>) {
15
+ const instance = useInstance() as Tags;
16
+ const children = useState<VNode[]>([]);
17
+ const draggingKey = useState<Key | null>(null);
18
+
19
+ let draggingIndex: number = -1;
20
+ let originIndex: number = -1;
21
+ let lastOverIndex: number = -1; /* let the dragover event only trigger once when tags changed order */
22
+
23
+ watchState(originVNodes, render);
24
+ watchState(draggingKey, render);
25
+
26
+ function render() {
27
+ const { draggable } = instance.get();
28
+ children.set(!draggable ? originVNodes.value : originVNodes.value.map((vNode, index) => {
29
+ const key = vNode.key!;
30
+ return h(Virtual, {
31
+ 'ev-dragstart': () => onStart(key, index),
32
+ 'ev-dragover': (e: MouseEvent) => onOver(e, key, index),
33
+ 'ev-dragend': (e: MouseEvent) => onEnd(e),
34
+ key,
35
+ draggable,
36
+ className: cx({
37
+ 'k-dragging': key === draggingKey.value,
38
+ 'k-draggable': draggable,
39
+ })
40
+ }, vNode);
41
+ }));
42
+
43
+ }
44
+
45
+ function onStart(key: Key, index: number) {
46
+ draggingIndex = originIndex = index;
47
+ nextFrame(() => {
48
+ draggingKey.set(key);
49
+ });
50
+
51
+ instance.trigger('dragstart', {
52
+ key,
53
+ from: index,
54
+ });
55
+ }
56
+
57
+ function onOver(e: MouseEvent, key: Key, index: number) {
58
+ e.preventDefault();
59
+ e.stopPropagation();
60
+
61
+ // Dragging the tag of another tags drag to this tags should be ignored
62
+ if (draggingIndex === -1) return;
63
+
64
+ if (lastOverIndex === index) return;
65
+ lastOverIndex = index;
66
+
67
+ if (index === draggingIndex) return;
68
+
69
+ // if the tag has move transition, you cannot drag over it before transition ended.
70
+ const dom = findDomFromVNode(children.value[index], true) as HTMLElement;
71
+ if (dom.classList.contains('k-fade-move')) return;
72
+
73
+ const vNodes = swap(originVNodes.value, draggingIndex, index);
74
+
75
+ lastOverIndex = draggingIndex;
76
+ draggingIndex = index;
77
+
78
+ originVNodes.set(vNodes);
79
+ }
80
+
81
+ function onEnd(e: MouseEvent) {
82
+ e.preventDefault();
83
+
84
+ instance.trigger('dragend', {
85
+ key: draggingKey.value!,
86
+ from: originIndex,
87
+ to: draggingIndex,
88
+ });
89
+
90
+ draggingKey.set(null);
91
+ lastOverIndex = -1;
92
+ draggingIndex = -1;
93
+ originIndex = -1;
94
+ }
95
+
96
+ return children;
97
+ }