@king-design/intact 2.1.1 → 3.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (468) hide show
  1. package/README.md +1 -1
  2. package/components/button/demos/basic.md +1 -0
  3. package/components/button/demos/group.md +11 -0
  4. package/components/button/demos/icon.md +1 -0
  5. package/components/button/index.md +1 -1
  6. package/components/button/index.ts +2 -2
  7. package/components/button/styles.ts +10 -2
  8. package/components/card/styles.ts +3 -2
  9. package/components/checkbox/styles.ts +31 -6
  10. package/components/collapse/styles.ts +4 -1
  11. package/components/copy/demos/basic.md +12 -0
  12. package/components/copy/demos/children.md +37 -0
  13. package/components/copy/index.md +21 -0
  14. package/components/copy/index.spec.ts +21 -0
  15. package/components/copy/index.ts +37 -0
  16. package/components/copy/index.vdt +23 -0
  17. package/components/copy/styles.ts +9 -0
  18. package/components/copy/useCopy.ts +91 -0
  19. package/components/datepicker/demos/basic.md +1 -0
  20. package/components/datepicker/index.md +2 -0
  21. package/components/datepicker/index.spec.ts +2 -2
  22. package/components/datepicker/index.vdt +2 -2
  23. package/components/datepicker/styles.ts +13 -5
  24. package/components/dialog/alert.vdt +10 -6
  25. package/components/dialog/base.vdt +4 -5
  26. package/components/dialog/index.spec.ts +4 -4
  27. package/components/dialog/styles.ts +18 -13
  28. package/components/drawer/styles.ts +20 -10
  29. package/components/dropdown/demos/tooltip.md +1 -1
  30. package/components/dropdown/index.spec.ts +1 -1
  31. package/components/dropdown/styles.ts +1 -1
  32. package/components/form/index.spec.ts +1 -1
  33. package/components/form/item.vdt +1 -1
  34. package/components/form/styles.ts +21 -26
  35. package/components/grid/useGutter.ts +7 -6
  36. package/components/icon/demos/disabled.md +21 -0
  37. package/components/icon/demos/icons.md +87 -116
  38. package/components/icon/index.md +1 -0
  39. package/components/icon/index.ts +2 -0
  40. package/components/icon/index.vdt +6 -2
  41. package/components/icon/styles.ts +8 -1
  42. package/components/input/demos/flat.md +16 -0
  43. package/components/input/index.md +1 -0
  44. package/components/input/index.ts +4 -10
  45. package/components/input/index.vdt +2 -1
  46. package/components/input/styles.ts +29 -21
  47. package/components/message/demos/basic.md +1 -1
  48. package/components/message/demos/duration.md +3 -3
  49. package/components/message/index.md +1 -1
  50. package/components/message/message.ts +2 -2
  51. package/components/message/message.vdt +6 -6
  52. package/components/message/styles.ts +10 -19
  53. package/components/pagination/demos/flat.md +22 -0
  54. package/components/pagination/index.md +1 -1
  55. package/components/pagination/index.spec.ts +1 -1
  56. package/components/pagination/index.ts +2 -2
  57. package/components/pagination/index.vdt +15 -18
  58. package/components/pagination/styles.ts +13 -9
  59. package/components/popover/content.ts +40 -0
  60. package/components/popover/content.vdt +32 -0
  61. package/components/popover/demos/basic.md +47 -0
  62. package/components/popover/demos/button.md +49 -0
  63. package/components/popover/demos/content.md +36 -0
  64. package/components/popover/demos/text.md +38 -0
  65. package/components/popover/demos/type.md +51 -0
  66. package/components/popover/index.md +54 -0
  67. package/components/popover/index.spec.ts +91 -0
  68. package/components/popover/index.ts +52 -0
  69. package/components/popover/styles.ts +45 -0
  70. package/components/progress/demos/children.md +1 -1
  71. package/components/progress/demos/circleSize.md +84 -0
  72. package/components/progress/demos/customColor.md +1 -3
  73. package/components/progress/index.ts +1 -1
  74. package/components/progress/index.vdt +36 -7
  75. package/components/progress/styles.ts +34 -21
  76. package/components/radio/styles.ts +28 -9
  77. package/components/rate/styles.ts +1 -0
  78. package/components/select/base.ts +8 -2
  79. package/components/select/base.vdt +40 -39
  80. package/components/select/demos/basic.md +21 -12
  81. package/components/select/demos/creatable.md +1 -1
  82. package/components/select/demos/draggable.md +55 -0
  83. package/components/select/demos/flat.md +42 -0
  84. package/components/select/demos/nowrap.md +24 -0
  85. package/components/select/demos/size.md +41 -1
  86. package/components/select/index.md +2 -0
  87. package/components/select/index.spec.ts +2 -2
  88. package/components/select/menu.vdt +5 -5
  89. package/components/select/styles.ts +55 -64
  90. package/components/select/useDraggble.ts +12 -0
  91. package/components/select/useNowrap.ts +24 -0
  92. package/components/slider/index.spec.ts +32 -1
  93. package/components/slider/index.ts +2 -2
  94. package/components/slider/index.vdt +34 -16
  95. package/components/slider/styles.ts +21 -13
  96. package/components/slider/useValue.ts +15 -3
  97. package/components/spinner/index.md +1 -1
  98. package/components/spinner/index.ts +0 -9
  99. package/components/spinner/index.vdt +13 -8
  100. package/components/spinner/styles.ts +36 -36
  101. package/components/spinner/useChange.ts +2 -2
  102. package/components/spinner/useValue.ts +9 -1
  103. package/components/split/index.vdt +13 -3
  104. package/components/split/memo.ts +29 -0
  105. package/components/steps/demos/basic.md +2 -1
  106. package/components/steps/demos/clickable.md +6 -0
  107. package/components/steps/demos/error.md +25 -5
  108. package/components/steps/demos/line.md +7 -6
  109. package/components/steps/demos/simple.md +0 -6
  110. package/components/steps/demos/vertical.md +79 -0
  111. package/components/steps/index.md +2 -1
  112. package/components/steps/index.spec.ts +1 -1
  113. package/components/steps/index.ts +7 -5
  114. package/components/steps/index.vdt +5 -3
  115. package/components/steps/step.vdt +16 -13
  116. package/components/steps/styles.ts +422 -255
  117. package/components/switch/demos/basic.md +1 -2
  118. package/components/switch/demos/disabled.md +20 -0
  119. package/components/switch/demos/onOff.md +5 -0
  120. package/components/switch/index.spec.ts +15 -10
  121. package/components/switch/styles.ts +29 -37
  122. package/components/table/styles.ts +11 -6
  123. package/components/table/useDraggable.ts +4 -3
  124. package/components/table/useStickyScrollbar.ts +2 -2
  125. package/components/table/useWidth.ts +2 -2
  126. package/components/tabs/demos/basic.md +0 -1
  127. package/components/tabs/demos/beforeChange.md +2 -2
  128. package/components/tabs/demos/card.md +2 -11
  129. package/components/tabs/demos/closable.md +7 -6
  130. package/components/tabs/demos/scroll.md +104 -0
  131. package/components/tabs/demos/vertical.md +1 -9
  132. package/components/tabs/index.md +1 -1
  133. package/components/tabs/index.spec.ts +36 -0
  134. package/components/tabs/index.ts +11 -12
  135. package/components/tabs/index.vdt +8 -9
  136. package/components/tabs/styles.ts +205 -186
  137. package/components/tabs/useScroll.ts +101 -42
  138. package/components/tag/base.ts +2 -2
  139. package/components/tag/demos/border.md +2 -2
  140. package/components/tag/demos/draggable.md +49 -0
  141. package/components/tag/demos/tags.md +72 -0
  142. package/components/tag/index.md +12 -1
  143. package/components/tag/index.spec.ts +70 -2
  144. package/components/tag/index.ts +2 -0
  145. package/components/tag/styles.ts +59 -9
  146. package/components/tag/tags.ts +54 -0
  147. package/components/tag/tags.vdt +49 -0
  148. package/components/tag/useChildren.ts +42 -0
  149. package/components/tag/useDraggable.ts +97 -0
  150. package/components/tag/useNowrap.ts +117 -0
  151. package/components/timepicker/index.md +2 -0
  152. package/components/timepicker/index.spec.ts +1 -1
  153. package/components/tip/index.vdt +1 -3
  154. package/components/tip/styles.ts +8 -2
  155. package/components/tooltip/content.ts +6 -6
  156. package/components/tooltip/content.vdt +8 -7
  157. package/components/tooltip/index.md +3 -6
  158. package/components/tooltip/index.spec.ts +6 -36
  159. package/components/tooltip/styles.ts +10 -8
  160. package/components/transfer/index.vdt +3 -2
  161. package/components/transfer/styles.ts +1 -0
  162. package/components/transfer/useCheck.ts +9 -2
  163. package/components/treeSelect/index.md +2 -0
  164. package/components/upload/demos/manually.md +12 -13
  165. package/components/upload/index.spec.ts +4 -4
  166. package/components/upload/index.vdt +40 -34
  167. package/components/upload/styles.ts +58 -64
  168. package/components/utils.ts +25 -4
  169. package/es/components/button/index.d.ts +1 -1
  170. package/es/components/button/index.js +1 -1
  171. package/es/components/button/styles.js +3 -3
  172. package/es/components/card/styles.js +10 -2
  173. package/es/components/checkbox/styles.js +21 -10
  174. package/es/components/collapse/styles.js +6 -1
  175. package/es/components/copy/index.d.ts +17 -0
  176. package/es/components/copy/index.js +43 -0
  177. package/es/components/copy/index.spec.d.ts +1 -0
  178. package/es/components/copy/index.spec.js +52 -0
  179. package/es/components/copy/index.vdt.js +45 -0
  180. package/es/components/copy/styles.d.ts +2 -0
  181. package/es/components/copy/styles.js +14 -0
  182. package/es/components/copy/useCopy.d.ts +4 -0
  183. package/es/components/copy/useCopy.js +90 -0
  184. package/es/components/datepicker/index.spec.js +1 -1
  185. package/es/components/datepicker/index.vdt.js +1 -1
  186. package/es/components/datepicker/styles.d.ts +1 -1
  187. package/es/components/datepicker/styles.js +5 -2
  188. package/es/components/diagram/shapes/callout.d.ts +1 -1
  189. package/es/components/diagram/shapes/circle.d.ts +1 -1
  190. package/es/components/diagram/shapes/document.d.ts +1 -1
  191. package/es/components/diagram/shapes/ellipse.d.ts +1 -1
  192. package/es/components/diagram/shapes/hexagon.d.ts +1 -1
  193. package/es/components/diagram/shapes/image.d.ts +1 -1
  194. package/es/components/diagram/shapes/parallelogram.d.ts +1 -1
  195. package/es/components/diagram/shapes/rectangle.d.ts +1 -1
  196. package/es/components/diagram/shapes/square.d.ts +1 -1
  197. package/es/components/diagram/shapes/text.d.ts +1 -1
  198. package/es/components/dialog/alert.vdt.js +6 -5
  199. package/es/components/dialog/base.vdt.js +5 -6
  200. package/es/components/dialog/index.spec.js +4 -4
  201. package/es/components/dialog/styles.js +16 -14
  202. package/es/components/drawer/styles.js +20 -5
  203. package/es/components/dropdown/styles.js +1 -1
  204. package/es/components/form/index.spec.js +4 -2
  205. package/es/components/form/item.vdt.js +2 -1
  206. package/es/components/form/styles.js +5 -5
  207. package/es/components/grid/useGutter.js +8 -8
  208. package/es/components/icon/index.d.ts +1 -0
  209. package/es/components/icon/index.js +2 -1
  210. package/es/components/icon/index.vdt.js +4 -2
  211. package/es/components/icon/styles.js +10 -2
  212. package/es/components/input/index.d.ts +1 -0
  213. package/es/components/input/index.js +4 -11
  214. package/es/components/input/index.vdt.js +4 -2
  215. package/es/components/input/styles.js +13 -11
  216. package/es/components/message/message.js +1 -1
  217. package/es/components/message/message.vdt.js +7 -6
  218. package/es/components/message/styles.js +8 -8
  219. package/es/components/pagination/index.d.ts +1 -1
  220. package/es/components/pagination/index.js +1 -1
  221. package/es/components/pagination/index.spec.js +4 -2
  222. package/es/components/pagination/index.vdt.js +16 -18
  223. package/es/components/pagination/styles.js +12 -3
  224. package/es/components/popover/content.d.ts +19 -0
  225. package/es/components/popover/content.js +31 -0
  226. package/es/components/popover/content.vdt.js +68 -0
  227. package/es/components/popover/index.d.ts +16 -0
  228. package/es/components/popover/index.js +44 -0
  229. package/es/components/popover/index.spec.d.ts +1 -0
  230. package/es/components/popover/index.spec.js +195 -0
  231. package/es/components/popover/styles.d.ts +1 -0
  232. package/es/components/popover/styles.js +22 -0
  233. package/es/components/progress/index.js +1 -1
  234. package/es/components/progress/index.vdt.js +46 -8
  235. package/es/components/progress/styles.js +19 -13
  236. package/es/components/radio/styles.js +16 -6
  237. package/es/components/rate/styles.js +1 -1
  238. package/es/components/select/base.d.ts +5 -2
  239. package/es/components/select/base.js +7 -3
  240. package/es/components/select/base.vdt.js +46 -38
  241. package/es/components/select/index.spec.js +2 -2
  242. package/es/components/select/menu.vdt.js +1 -1
  243. package/es/components/select/styles.js +14 -28
  244. package/es/components/select/useDraggble.d.ts +2 -0
  245. package/es/components/select/useDraggble.js +11 -0
  246. package/es/components/select/useNowrap.d.ts +3 -0
  247. package/es/components/select/useNowrap.js +19 -0
  248. package/es/components/slider/index.spec.js +48 -9
  249. package/es/components/slider/index.vdt.js +23 -12
  250. package/es/components/slider/styles.js +23 -14
  251. package/es/components/slider/useValue.d.ts +3 -1
  252. package/es/components/slider/useValue.js +12 -0
  253. package/es/components/spinner/index.d.ts +0 -1
  254. package/es/components/spinner/index.js +1 -19
  255. package/es/components/spinner/index.vdt.js +15 -8
  256. package/es/components/spinner/styles.js +33 -5
  257. package/es/components/spinner/useChange.d.ts +1 -1
  258. package/es/components/spinner/useChange.js +2 -2
  259. package/es/components/spinner/useValue.d.ts +1 -0
  260. package/es/components/spinner/useValue.js +16 -1
  261. package/es/components/split/index.vdt.js +32 -20
  262. package/es/components/split/memo.d.ts +9 -0
  263. package/es/components/split/memo.js +26 -0
  264. package/es/components/steps/index.d.ts +3 -2
  265. package/es/components/steps/index.js +4 -3
  266. package/es/components/steps/index.spec.js +1 -1
  267. package/es/components/steps/index.vdt.js +8 -4
  268. package/es/components/steps/step.vdt.js +17 -9
  269. package/es/components/steps/styles.d.ts +2 -1
  270. package/es/components/steps/styles.js +106 -72
  271. package/es/components/switch/index.spec.js +82 -65
  272. package/es/components/switch/styles.js +20 -34
  273. package/es/components/table/styles.js +9 -4
  274. package/es/components/table/useDraggable.js +3 -10
  275. package/es/components/table/useStickyScrollbar.js +2 -2
  276. package/es/components/table/useWidth.js +2 -2
  277. package/es/components/tabs/index.d.ts +1 -1
  278. package/es/components/tabs/index.js +1 -1
  279. package/es/components/tabs/index.spec.js +67 -0
  280. package/es/components/tabs/index.vdt.js +5 -5
  281. package/es/components/tabs/styles.js +73 -29
  282. package/es/components/tabs/useScroll.d.ts +1 -1
  283. package/es/components/tabs/useScroll.js +75 -48
  284. package/es/components/tag/base.d.ts +1 -0
  285. package/es/components/tag/base.js +2 -2
  286. package/es/components/tag/index.d.ts +1 -0
  287. package/es/components/tag/index.js +2 -1
  288. package/es/components/tag/index.spec.js +147 -4
  289. package/es/components/tag/styles.d.ts +67 -0
  290. package/es/components/tag/styles.js +42 -12
  291. package/es/components/tag/tags.d.ts +27 -0
  292. package/es/components/tag/tags.js +51 -0
  293. package/es/components/tag/tags.vdt.js +79 -0
  294. package/es/components/tag/useChildren.d.ts +2 -0
  295. package/es/components/tag/useChildren.js +39 -0
  296. package/es/components/tag/useDraggable.d.ts +3 -0
  297. package/es/components/tag/useDraggable.js +89 -0
  298. package/es/components/tag/useNowrap.d.ts +7 -0
  299. package/es/components/tag/useNowrap.js +115 -0
  300. package/es/components/timepicker/index.spec.js +1 -1
  301. package/es/components/tip/index.vdt.js +1 -3
  302. package/es/components/tip/styles.js +4 -3
  303. package/es/components/tooltip/content.d.ts +2 -2
  304. package/es/components/tooltip/content.vdt.js +23 -13
  305. package/es/components/tooltip/index.spec.js +56 -108
  306. package/es/components/tooltip/styles.d.ts +1 -0
  307. package/es/components/tooltip/styles.js +13 -8
  308. package/es/components/transfer/index.vdt.js +3 -1
  309. package/es/components/transfer/styles.js +1 -1
  310. package/es/components/transfer/useCheck.d.ts +1 -0
  311. package/es/components/transfer/useCheck.js +8 -1
  312. package/es/components/upload/index.spec.js +5 -6
  313. package/es/components/upload/index.vdt.js +24 -21
  314. package/es/components/upload/styles.js +22 -30
  315. package/es/components/utils.d.ts +2 -0
  316. package/es/components/utils.js +24 -3
  317. package/es/hooks/useResizeObserver.d.ts +1 -1
  318. package/es/hooks/useResizeObserver.js +19 -6
  319. package/es/i18n/en-US.d.ts +6 -2
  320. package/es/i18n/en-US.js +8 -3
  321. package/es/index.d.ts +4 -2
  322. package/es/index.js +4 -2
  323. package/es/packages/kpc-react/__tests__/components/drawer.spec.js +74 -6
  324. package/es/site/data/components/button/demos/basic/react.js +3 -1
  325. package/es/site/data/components/button/demos/group/react.js +26 -0
  326. package/es/site/data/components/button/demos/icon/react.js +6 -0
  327. package/es/site/data/components/copy/demos/basic/react.js +23 -0
  328. package/es/site/data/components/copy/demos/children/react.js +44 -0
  329. package/es/site/data/components/copy/index.d.ts +57 -0
  330. package/es/site/data/components/copy/index.js +42 -0
  331. package/es/site/data/components/datepicker/demos/basic/react.js +8 -0
  332. package/es/site/data/components/dropdown/demos/tooltip/react.js +2 -1
  333. package/es/site/data/components/icon/demos/disabled/index.d.ts +6 -0
  334. package/es/site/data/components/icon/demos/disabled/index.js +18 -0
  335. package/es/site/data/components/icon/demos/disabled/react.d.ts +5 -0
  336. package/es/site/data/components/icon/demos/disabled/react.js +33 -0
  337. package/es/site/data/components/icon/demos/icons/index.js +1 -1
  338. package/es/site/data/components/icon/demos/icons/react.js +1 -1
  339. package/es/site/data/components/input/demos/flat/index.d.ts +5 -0
  340. package/es/site/data/components/input/demos/flat/index.js +17 -0
  341. package/es/site/data/components/input/demos/flat/react.d.ts +4 -0
  342. package/es/site/data/components/input/demos/flat/react.js +29 -0
  343. package/es/site/data/components/message/demos/duration/index.js +2 -2
  344. package/es/site/data/components/message/demos/duration/react.js +2 -2
  345. package/es/site/data/components/pagination/demos/flat/index.d.ts +6 -0
  346. package/es/site/data/components/pagination/demos/flat/index.js +18 -0
  347. package/es/site/data/components/pagination/demos/flat/react.d.ts +5 -0
  348. package/es/site/data/components/pagination/demos/{noBoard → flat}/react.js +12 -8
  349. package/es/site/data/components/popover/demos/basic/react.d.ts +8 -0
  350. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/react.js +14 -9
  351. package/es/site/data/components/popover/demos/button/index.d.ts +8 -0
  352. package/es/site/data/components/popover/demos/button/index.js +42 -0
  353. package/es/site/data/components/popover/demos/button/react.d.ts +8 -0
  354. package/es/site/data/components/popover/demos/button/react.js +73 -0
  355. package/es/site/data/components/popover/demos/content/index.d.ts +7 -0
  356. package/es/site/data/components/popover/demos/content/index.js +28 -0
  357. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/content}/react.d.ts +0 -1
  358. package/es/site/data/components/popover/demos/content/react.js +43 -0
  359. package/es/site/data/components/popover/demos/text/index.d.ts +7 -0
  360. package/es/site/data/components/popover/demos/text/index.js +28 -0
  361. package/es/site/data/components/popover/demos/text/react.d.ts +6 -0
  362. package/es/site/data/components/popover/demos/text/react.js +36 -0
  363. package/es/site/data/components/popover/demos/type/index.d.ts +11 -0
  364. package/es/site/data/components/popover/demos/type/index.js +34 -0
  365. package/es/site/data/components/popover/demos/type/react.d.ts +11 -0
  366. package/es/site/data/components/popover/demos/type/react.js +58 -0
  367. package/es/site/data/components/popover/index.d.ts +57 -0
  368. package/es/site/data/components/popover/index.js +42 -0
  369. package/es/site/data/components/progress/demos/children/react.js +4 -4
  370. package/es/site/data/components/progress/demos/circleSize/index.d.ts +14 -0
  371. package/es/site/data/components/progress/demos/circleSize/index.js +43 -0
  372. package/es/site/data/components/progress/demos/circleSize/react.d.ts +14 -0
  373. package/es/site/data/components/progress/demos/circleSize/react.js +98 -0
  374. package/es/site/data/components/progress/demos/customColor/react.js +4 -4
  375. package/es/site/data/components/select/demos/basic/react.js +19 -7
  376. package/es/site/data/components/select/demos/creatable/react.js +2 -1
  377. package/es/site/data/components/select/demos/draggable/index.d.ts +10 -0
  378. package/es/site/data/components/select/demos/draggable/index.js +24 -0
  379. package/es/site/data/components/select/demos/draggable/react.d.ts +10 -0
  380. package/es/site/data/components/select/demos/draggable/react.js +85 -0
  381. package/es/site/data/components/select/demos/flat/index.d.ts +5 -0
  382. package/es/site/data/components/select/demos/flat/index.js +17 -0
  383. package/es/site/data/components/select/demos/flat/react.d.ts +4 -0
  384. package/es/site/data/components/select/demos/flat/react.js +73 -0
  385. package/es/site/data/components/select/demos/inline/index.d.ts +5 -0
  386. package/es/site/data/components/select/demos/inline/index.js +17 -0
  387. package/es/site/data/components/select/demos/inline/react.d.ts +4 -0
  388. package/es/site/data/components/select/demos/nowrap/index.d.ts +5 -0
  389. package/es/site/data/components/select/demos/nowrap/index.js +17 -0
  390. package/es/site/data/components/select/demos/nowrap/react.d.ts +4 -0
  391. package/es/site/data/components/select/demos/nowrap/react.js +41 -0
  392. package/es/site/data/components/select/demos/size/index.d.ts +1 -0
  393. package/es/site/data/components/select/demos/size/index.js +2 -1
  394. package/es/site/data/components/select/demos/size/react.d.ts +1 -0
  395. package/es/site/data/components/select/demos/size/react.js +93 -1
  396. package/es/site/data/components/steps/demos/basic/react.js +1 -1
  397. package/es/site/data/components/steps/demos/clickable/react.js +15 -0
  398. package/es/site/data/components/steps/demos/error/react.js +22 -2
  399. package/es/site/data/components/steps/demos/line/react.js +15 -11
  400. package/es/site/data/components/steps/demos/simple/react.js +1 -11
  401. package/es/site/data/components/steps/demos/vertical/index.d.ts +14 -0
  402. package/es/site/data/components/steps/demos/vertical/index.js +40 -0
  403. package/es/site/data/components/steps/demos/vertical/react.d.ts +14 -0
  404. package/es/site/data/components/steps/demos/vertical/react.js +124 -0
  405. package/es/site/data/components/switch/demos/basic/react.js +0 -2
  406. package/es/site/data/components/switch/demos/disabled/index.d.ts +6 -0
  407. package/es/site/data/components/switch/demos/disabled/index.js +18 -0
  408. package/es/site/data/components/switch/demos/disabled/react.d.ts +5 -0
  409. package/es/site/data/components/switch/demos/disabled/react.js +27 -0
  410. package/es/site/data/components/switch/demos/onOff/react.js +11 -0
  411. package/es/site/data/components/tabs/demos/card/react.js +1 -15
  412. package/es/site/data/components/tabs/demos/closable/index.js +1 -1
  413. package/es/site/data/components/tabs/demos/closable/react.js +9 -3
  414. package/es/site/data/components/tabs/demos/scroll/index.d.ts +18 -0
  415. package/es/site/data/components/tabs/demos/scroll/index.js +87 -0
  416. package/es/site/data/components/tabs/demos/scroll/react.d.ts +18 -0
  417. package/es/site/data/components/tabs/demos/scroll/react.js +166 -0
  418. package/es/site/data/components/tabs/demos/vertical/react.js +1 -16
  419. package/es/site/data/components/tag/demos/border/index.js +1 -1
  420. package/es/site/data/components/tag/demos/border/react.js +1 -1
  421. package/es/site/data/components/tag/demos/draggable/index.d.ts +11 -0
  422. package/es/site/data/components/tag/demos/draggable/index.js +24 -0
  423. package/es/site/data/components/tag/demos/draggable/react.d.ts +11 -0
  424. package/es/site/data/components/tag/demos/draggable/react.js +62 -0
  425. package/es/site/data/components/tag/demos/tags/index.d.ts +12 -0
  426. package/es/site/data/components/tag/demos/tags/index.js +39 -0
  427. package/es/site/data/components/tag/demos/tags/react.d.ts +12 -0
  428. package/es/site/data/components/tag/demos/tags/react.js +83 -0
  429. package/es/site/data/components/upload/demos/manually/react.js +5 -7
  430. package/es/site/src/pages/document/styles.js +1 -1
  431. package/es/styles/fonts/iconfont.eot +0 -0
  432. package/es/styles/fonts/iconfont.js +2 -2
  433. package/es/styles/fonts/iconfont.svg +189 -369
  434. package/es/styles/fonts/iconfont.ttf +0 -0
  435. package/es/styles/fonts/iconfont.woff +0 -0
  436. package/es/styles/fonts/ionicons.js +2 -2
  437. package/es/styles/global.js +1 -1
  438. package/es/styles/theme.d.ts +10 -2
  439. package/es/styles/theme.js +23 -21
  440. package/hooks/useResizeObserver.ts +19 -7
  441. package/i18n/en-US.ts +8 -2
  442. package/index.ts +4 -2
  443. package/package.json +5 -1
  444. package/styles/fonts/iconfont.css +172 -289
  445. package/styles/fonts/iconfont.eot +0 -0
  446. package/styles/fonts/iconfont.svg +189 -369
  447. package/styles/fonts/iconfont.ts +256 -370
  448. package/styles/fonts/iconfont.ttf +0 -0
  449. package/styles/fonts/iconfont.woff +0 -0
  450. package/styles/fonts/iconfont.woff2 +0 -0
  451. package/styles/fonts/ionicons.ts +2 -2
  452. package/styles/global.ts +3 -3
  453. package/styles/theme.ts +23 -19
  454. package/components/pagination/demos/noBoard.md +0 -22
  455. package/components/table/useResizeObserver.ts +0 -22
  456. package/components/tooltip/demos/confirm.md +0 -41
  457. package/es/components/table/useResizeObserver.d.ts +0 -2
  458. package/es/components/table/useResizeObserver.js +0 -20
  459. /package/components/select/demos/{noBorder.md → inline.md} +0 -0
  460. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.d.ts +0 -0
  461. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.js +0 -0
  462. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/react.d.ts +0 -0
  463. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.d.ts +0 -0
  464. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.js +0 -0
  465. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/react.d.ts +0 -0
  466. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.d.ts +0 -0
  467. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.js +0 -0
  468. /package/es/site/data/components/select/demos/{noBorder → inline}/react.js +0 -0
@@ -1,4 +1,10 @@
1
- import {useInstance, createRef, onMounted, onUpdated, onUnmounted} from 'intact';
1
+ import {
2
+ useInstance,
3
+ createRef,
4
+ onMounted,
5
+ onUpdated,
6
+ onUnmounted,
7
+ } from 'intact';
2
8
  import {useState} from '../../hooks/useState';
3
9
  import type {Tabs} from './';
4
10
  import {useResizeObserver} from '../../hooks/useResizeObserver';
@@ -8,7 +14,7 @@ export function useScroll() {
8
14
  const scrollRef = createRef<HTMLElement>();
9
15
  const wrapperRef = createRef<HTMLElement>();
10
16
  const isScroll = useState<boolean>(false);
11
- const left = useState<number>(0);
17
+ const offset = useState<number>(0);
12
18
  const enablePrev = useState<boolean>(false);
13
19
  const enableNext = useState<boolean>(false);
14
20
 
@@ -18,77 +24,130 @@ export function useScroll() {
18
24
 
19
25
  instance.watch('value', scrollActiveToView, {presented: true});
20
26
 
21
- function refresh() {
27
+ function getLength() {
22
28
  const {vertical} = instance.get();
23
- if (vertical) return;
24
29
 
25
- const scrollWidth = scrollRef.value!.offsetWidth;
26
- const wrapperWidth = wrapperRef.value!.offsetWidth;
30
+ if (vertical) {
31
+ return {
32
+ scrollLength: scrollRef.value!.offsetHeight,
33
+ wrapperLength: wrapperRef.value!.offsetHeight,
34
+ };
35
+ }
36
+
37
+ return {
38
+ scrollLength: scrollRef.value!.offsetWidth,
39
+ wrapperLength: wrapperRef.value!.offsetWidth,
40
+ };
41
+ }
42
+
43
+ function refresh() {
44
+ const {scrollLength, wrapperLength} = getLength();
27
45
 
28
- isScroll.set(scrollWidth < wrapperWidth);
29
- updateTransition(left.value, scrollWidth, wrapperWidth);
46
+ isScroll.set(scrollLength < wrapperLength);
47
+ updateTransition(offset.value, scrollLength, wrapperLength);
30
48
  }
31
49
 
32
50
  function updateTransition(
33
- _left = left.value,
34
- scrollWidth = scrollRef.value!.offsetWidth,
35
- wrapperWidth = wrapperRef.value!.offsetWidth,
51
+ _offset: number,
52
+ scrollLength: number,
53
+ wrapperLength: number
36
54
  ) {
37
55
  let prev = true;
38
56
  let next = true;
39
- if (_left >= 0) {
40
- _left = 0;
57
+ if (_offset >= 0) {
58
+ _offset = 0;
41
59
  prev = false;
42
- } else if (_left <= scrollWidth - wrapperWidth) {
43
- _left = scrollWidth - wrapperWidth;
60
+ } else if (_offset <= scrollLength - wrapperLength) {
61
+ _offset = scrollLength - wrapperLength;
44
62
  next = false;
45
63
  }
46
64
 
47
- left.set(_left);
65
+ offset.set(_offset);
48
66
  enablePrev.set(prev);
49
67
  enableNext.set(next);
50
68
  }
51
69
 
52
70
  function prev() {
53
- const scrollWidth = scrollRef.value!.offsetWidth;
54
- updateTransition(left.value + scrollWidth);
71
+ const {scrollLength, wrapperLength} = getLength();
72
+
73
+ updateTransition(
74
+ offset.value + scrollLength,
75
+ scrollLength,
76
+ wrapperLength
77
+ );
55
78
  }
56
79
 
57
80
  function next() {
58
- const scrollWidth = scrollRef.value!.offsetWidth;
59
- updateTransition(left.value - scrollWidth);
81
+ const {scrollLength, wrapperLength} = getLength();
82
+
83
+ updateTransition(
84
+ offset.value - scrollLength,
85
+ scrollLength,
86
+ wrapperLength
87
+ );
60
88
  }
61
89
 
62
90
  function scrollActiveToView() {
63
91
  const {vertical} = instance.get();
64
- if (vertical) return;
65
92
 
66
- const activeTab = scrollRef.value!.querySelector('.k-tab.k-active') as HTMLElement;
93
+ const activeTab = scrollRef.value!.querySelector(
94
+ '.k-tab.k-active'
95
+ ) as HTMLElement;
67
96
  if (activeTab) {
68
- let _left = left.value;
97
+ let _offset = offset.value;
69
98
  // don't use getBoundingClientRect, it has transform and will return digital number
70
- const activeRect = {
71
- left: activeTab.offsetLeft,
72
- width: activeTab.offsetWidth
73
- };
74
- const scrollRect = {
75
- width: scrollRef.value!.offsetWidth
76
- };
77
- const wrapperRect = {
78
- left: wrapperRef.value!.offsetLeft,
79
- width: wrapperRef.value!.offsetWidth
80
- };
81
- const x = activeRect.left - wrapperRect.left;
82
- if (_left + x <= 0) {
83
- _left = -x;
84
- } else if (x + activeRect.width + _left > scrollRect.width) {
85
- _left = -x - activeRect.width + scrollRect.width;
99
+ let activeRect: {offset: number; length: number};
100
+ let scrollRect: {length: number};
101
+ let wrapperRect: {offset: number; length: number};
102
+
103
+ if (vertical) {
104
+ activeRect = {
105
+ offset: activeTab.offsetTop,
106
+ length: activeTab.offsetHeight,
107
+ };
108
+ scrollRect = {
109
+ length: scrollRef.value!.offsetHeight,
110
+ };
111
+ wrapperRect = {
112
+ offset: wrapperRef.value!.offsetTop,
113
+ length: wrapperRef.value!.offsetHeight,
114
+ };
115
+ } else {
116
+ activeRect = {
117
+ offset: activeTab.offsetLeft,
118
+ length: activeTab.offsetWidth,
119
+ };
120
+ scrollRect = {
121
+ length: scrollRef.value!.offsetWidth,
122
+ };
123
+ wrapperRect = {
124
+ offset: wrapperRef.value!.offsetLeft,
125
+ length: wrapperRef.value!.offsetWidth,
126
+ };
127
+ }
128
+ const offsetDelta = activeRect.offset - wrapperRect.offset;
129
+ if (_offset + offsetDelta <= 0) {
130
+ _offset = -offsetDelta;
131
+ } else if (
132
+ offsetDelta + activeRect.length + _offset >
133
+ scrollRect.length
134
+ ) {
135
+ _offset = -offsetDelta - activeRect.length + scrollRect.length;
86
136
  }
87
- left.set(_left);
137
+ offset.set(_offset);
88
138
  } else {
89
- left.set(0);
139
+ offset.set(0);
90
140
  }
91
141
  }
92
142
 
93
- return {isScroll, left, enablePrev, enableNext, prev, next, scrollRef, wrapperRef};
143
+ return {
144
+ isScroll,
145
+ offset,
146
+ enablePrev,
147
+ enableNext,
148
+ prev,
149
+ next,
150
+ scrollRef,
151
+ wrapperRef,
152
+ };
94
153
  }
@@ -19,7 +19,7 @@ export interface TagEvents {
19
19
 
20
20
  export interface TagBlocks { }
21
21
 
22
- const typeDefs: Required<TypeDefs<TagProps>> = {
22
+ export const typeDefs: Required<TypeDefs<TagProps>> = {
23
23
  type: ['default', 'primary', 'danger', 'success', 'warning'],
24
24
  closable: Boolean,
25
25
  closed: Boolean,
@@ -31,7 +31,7 @@ const typeDefs: Required<TypeDefs<TagProps>> = {
31
31
  const defaults = (): Partial<TagProps> => ({
32
32
  type: 'default',
33
33
  size: 'default',
34
- border: 'solid',
34
+ border: 'none',
35
35
  });
36
36
 
37
37
  const events: Events<TagEvents> = {
@@ -3,7 +3,7 @@ title: 边框
3
3
  order: 3
4
4
  ---
5
5
 
6
- 通过`border`可以定义边框样式: `solid`(默认) `dashed` `none`
6
+ 通过`border`可以定义边框样式: `solid` `dashed` `none`(默认)
7
7
 
8
8
  ```vdt
9
9
  import {Tag} from 'kpc';
@@ -40,7 +40,7 @@ export default class extends Component {
40
40
  static defaults() {
41
41
  return {
42
42
  types: ['default', 'primary', 'success', 'warning', 'danger'],
43
- borders: ['dashed', 'none'],
43
+ borders: ['solid', 'dashed', 'none'],
44
44
  } as Props;
45
45
  }
46
46
  }
@@ -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"` |
@@ -14,7 +16,16 @@ sidebar: doc
14
16
  | closed | 是否已关闭 | `boolean` | `false` |
15
17
  | disabled | 是否展示禁用状态 | `boolean` | `false` |
16
18
  | size | 组件尺寸 | `"large"` &#124; `"default"` &#124; `"small"` &#124; `"mini"` | `"default"` |
17
- | border | 定义边框样式 | `"solid"` &#124; `"dashed"` &#124; `"none"` | `"solid"` |
19
+ | border | 定义边框样式 | `"solid"` &#124; `"dashed"` &#124; `"none"` | `"none"` |
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` |
18
29
 
19
30
  # 事件
20
31
 
@@ -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<
@@ -14,14 +14,20 @@ const types = ['primary', 'warning', 'danger', 'success', 'disabled'] as const;
14
14
 
15
15
  const defaults = deepDefaults(
16
16
  {
17
- get borderColor() { return theme.color.border },
17
+ get border() { return `1px solid ${theme.color.border}` },
18
18
  get borderRadius() { return theme.borderRadius },
19
19
  get fontSize() { return theme.default.fontSize },
20
20
  padding: `0 8px`,
21
21
  height: '20px',
22
+ get bgColor() { return theme.color.bg },
22
23
  close: {
23
24
  fontSize: '20px',
24
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',
25
31
  },
26
32
  disabled: {
27
33
  get color() { return theme.color.disabled },
@@ -29,24 +35,28 @@ const defaults = deepDefaults(
29
35
  get bgColor() { return theme.color.disabledBg },
30
36
  },
31
37
  large: {
32
- padding: `0px 16px`,
33
- height: '32px',
38
+ padding: `0px 8px`,
39
+ height: '24px',
40
+ get fontSize() { return theme.large.fontSize },
34
41
  close: {
35
- fontSize: '24px',
36
- gap: '12px',
42
+ fontSize: '22px',
43
+ gap: '6px',
37
44
  }
38
45
  },
39
46
  small: {
40
47
  padding: `0 4px`,
41
- height: '18px',
48
+ height: '16px',
49
+ get fontSize() { return theme.small.fontSize },
42
50
  close: {
43
51
  fontSize: '18px',
44
52
  gap: '4px'
45
53
  }
46
54
  },
47
55
  mini: {
48
- padding: `0 1px`,
56
+ padding: `0 2px`,
49
57
  height: '14px',
58
+ // get fontSize() { return theme.mini.fontSize },
59
+ fontSize: '11px',
50
60
  close: {
51
61
  fontSize: '16px',
52
62
  gap: '2px'
@@ -54,6 +64,10 @@ const defaults = deepDefaults(
54
64
  },
55
65
  none: {
56
66
  get bgColor() { return theme.color.bg },
67
+ },
68
+
69
+ tags: {
70
+ gap: '8px',
57
71
  }
58
72
  },
59
73
  types.reduce((memo, type) => {
@@ -71,19 +85,21 @@ setDefault(() => {
71
85
  tag = deepDefaults(theme, {tag: defaults}).tag;
72
86
  });
73
87
 
88
+ export { tag };
89
+
74
90
  export function makeStyles() {
75
91
  return css`
76
92
  display: inline-flex;
77
93
  align-items: center;
78
94
  padding: ${tag.padding};
79
- border: 1px solid ${tag.borderColor};
95
+ border: ${tag.border};
80
96
  border-radius: ${tag.borderRadius};
81
97
  font-size: ${tag.fontSize};
82
98
  height: ${tag.height};
83
-
84
99
  .k-tag-close {
85
100
  font-size: ${tag.close.fontSize};
86
101
  margin-left: ${tag.close.gap};
102
+ width: ${tag.close.width};
87
103
  }
88
104
 
89
105
  &.k-none {
@@ -109,6 +125,7 @@ export function makeStyles() {
109
125
  &.k-${s} {
110
126
  padding: ${styles.padding};
111
127
  height: ${styles.height};
128
+ font-size: ${styles.fontSize};
112
129
  .k-tag-close {
113
130
  font-size: ${styles.close.fontSize};
114
131
  margin-left: ${styles.close.gap};
@@ -121,5 +138,38 @@ export function makeStyles() {
121
138
  &.k-dashed {
122
139
  border-style: dashed;
123
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
+ }
159
+ .k-tag {
160
+ white-space: nowrap;
161
+ overflow: hidden;
162
+ text-overflow: ellipsis;
163
+ flex-shrink: 0;
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
+ }
124
174
  `;
125
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
+ }