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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/README.md +1 -1
  2. package/components/button/demos/basic.md +1 -0
  3. package/components/button/demos/group.md +11 -0
  4. package/components/button/demos/icon.md +1 -0
  5. package/components/button/index.md +1 -1
  6. package/components/button/index.ts +2 -2
  7. package/components/button/styles.ts +6 -1
  8. package/components/cascader/index.md +18 -0
  9. package/components/cascader/index.spec.ts +56 -0
  10. package/components/cascader/index.ts +35 -12
  11. package/components/cascader/index.vdt +9 -8
  12. package/components/cascader/styles.ts +2 -1
  13. package/components/cascader/useFields.ts +22 -0
  14. package/components/cascader/useFilterable.ts +23 -8
  15. package/components/cascader/useLabel.ts +7 -4
  16. package/components/cascader/useLoad.ts +4 -2
  17. package/components/code/demos/basic.md +1 -1
  18. package/components/colorpicker/index.md +16 -0
  19. package/components/colorpicker/index.ts +4 -0
  20. package/components/colorpicker/index.vdt +3 -2
  21. package/components/copy/demos/basic.md +12 -0
  22. package/components/copy/demos/children.md +37 -0
  23. package/components/copy/index.md +21 -0
  24. package/components/copy/index.spec.ts +21 -0
  25. package/components/copy/index.ts +37 -0
  26. package/components/copy/index.vdt +23 -0
  27. package/components/copy/styles.ts +9 -0
  28. package/components/copy/useCopy.ts +91 -0
  29. package/components/datepicker/demos/basic.md +1 -0
  30. package/components/datepicker/index.md +13 -0
  31. package/components/datepicker/index.spec.ts +2 -2
  32. package/components/datepicker/index.vdt +2 -2
  33. package/components/datepicker/styles.ts +10 -4
  34. package/components/dialog/alert.vdt +10 -6
  35. package/components/dialog/index.spec.ts +6 -6
  36. package/components/dropdown/demos/tooltip.md +1 -1
  37. package/components/dropdown/dropdown.ts +51 -79
  38. package/components/dropdown/index.spec.ts +52 -3
  39. package/components/dropdown/item.ts +18 -7
  40. package/components/dropdown/menu.ts +4 -4
  41. package/components/dropdown/usePosition.ts +12 -1
  42. package/components/editable/index.ts +17 -3
  43. package/components/editable/index.vdt +1 -0
  44. package/components/form/index.spec.ts +1 -1
  45. package/components/form/item.vdt +1 -1
  46. package/components/form/styles.ts +20 -25
  47. package/components/grid/useGutter.ts +7 -6
  48. package/components/input/demos/autoRows.md +44 -0
  49. package/components/input/demos/flat.md +16 -0
  50. package/components/input/demos/password.md +12 -0
  51. package/components/input/demos/textarea.md +2 -2
  52. package/components/input/index.md +2 -0
  53. package/components/input/index.spec.ts +97 -1
  54. package/components/input/index.ts +21 -13
  55. package/components/input/index.vdt +30 -6
  56. package/components/input/styles.ts +33 -2
  57. package/components/input/useAutoRows.ts +65 -0
  58. package/components/input/useAutoWidth.ts +12 -3
  59. package/components/input/useShowPassword.ts +27 -0
  60. package/components/menu/demos/collapse.md +1 -1
  61. package/components/menu/index.spec.ts +9 -1
  62. package/components/menu/item.ts +7 -0
  63. package/components/pagination/demos/flat.md +22 -0
  64. package/components/pagination/index.md +1 -1
  65. package/components/pagination/index.spec.ts +23 -0
  66. package/components/pagination/index.ts +4 -3
  67. package/components/pagination/index.vdt +6 -9
  68. package/components/pagination/styles.ts +2 -2
  69. package/components/popover/content.ts +40 -0
  70. package/components/popover/content.vdt +32 -0
  71. package/components/popover/demos/basic.md +47 -0
  72. package/components/popover/demos/button.md +49 -0
  73. package/components/popover/demos/content.md +36 -0
  74. package/components/popover/demos/text.md +38 -0
  75. package/components/popover/demos/type.md +51 -0
  76. package/components/popover/index.md +54 -0
  77. package/components/popover/index.spec.ts +91 -0
  78. package/components/popover/index.ts +52 -0
  79. package/components/popover/styles.ts +45 -0
  80. package/components/portal.ts +4 -4
  81. package/components/position.ts +5 -1
  82. package/components/progress/demos/children.md +1 -1
  83. package/components/progress/demos/circleSize.md +84 -0
  84. package/components/progress/demos/customColor.md +1 -3
  85. package/components/progress/index.ts +1 -1
  86. package/components/progress/index.vdt +36 -7
  87. package/components/progress/styles.ts +34 -21
  88. package/components/rate/styles.ts +1 -0
  89. package/components/select/base.ts +11 -3
  90. package/components/select/base.vdt +39 -35
  91. package/components/select/demos/basic.md +21 -12
  92. package/components/select/demos/creatable.md +1 -1
  93. package/components/select/demos/draggable.md +55 -0
  94. package/components/select/demos/flat.md +42 -0
  95. package/components/select/demos/nowrap.md +24 -0
  96. package/components/select/demos/size.md +41 -1
  97. package/components/select/index.md +12 -0
  98. package/components/select/index.spec.ts +2 -2
  99. package/components/select/menu.vdt +5 -5
  100. package/components/select/styles.ts +52 -38
  101. package/components/select/useDraggble.ts +12 -0
  102. package/components/select/useNowrap.ts +24 -0
  103. package/components/slider/index.spec.ts +32 -1
  104. package/components/slider/index.ts +2 -2
  105. package/components/slider/index.vdt +34 -16
  106. package/components/slider/styles.ts +21 -13
  107. package/components/slider/useValue.ts +15 -3
  108. package/components/spinner/index.md +1 -1
  109. package/components/spinner/index.ts +0 -9
  110. package/components/spinner/index.vdt +7 -4
  111. package/components/spinner/useChange.ts +2 -2
  112. package/components/spinner/useValue.ts +9 -1
  113. package/components/split/index.vdt +13 -3
  114. package/components/split/memo.ts +29 -0
  115. package/components/steps/demos/vertical.md +79 -0
  116. package/components/steps/index.md +1 -0
  117. package/components/steps/index.spec.ts +1 -1
  118. package/components/steps/index.ts +3 -1
  119. package/components/steps/index.vdt +4 -3
  120. package/components/steps/step.vdt +1 -1
  121. package/components/steps/styles.ts +154 -25
  122. package/components/switch/demos/onOff.md +2 -2
  123. package/components/switch/index.spec.ts +15 -10
  124. package/components/table/cell.ts +4 -5
  125. package/components/table/demos/hideHeader.md +33 -0
  126. package/components/table/demos/pagination.md +53 -0
  127. package/components/table/index.md +22 -0
  128. package/components/table/index.spec.ts +73 -1
  129. package/components/table/row.ts +3 -3
  130. package/components/table/styles.ts +5 -0
  131. package/components/table/table.ts +29 -4
  132. package/components/table/table.vdt +21 -3
  133. package/components/table/useChecked.ts +21 -6
  134. package/components/table/useDisableRow.ts +3 -2
  135. package/components/table/useDraggable.ts +12 -8
  136. package/components/table/useGroup.ts +2 -0
  137. package/components/table/useMerge.ts +6 -3
  138. package/components/table/usePagination.ts +71 -0
  139. package/components/table/useRestRowStatus.ts +4 -1
  140. package/components/table/useStickyScrollbar.ts +2 -2
  141. package/components/table/useTree.ts +4 -3
  142. package/components/table/useWidth.ts +2 -2
  143. package/components/tabs/demos/beforeChange.md +2 -2
  144. package/components/tabs/demos/card.md +2 -11
  145. package/components/tabs/demos/closable.md +7 -6
  146. package/components/tabs/demos/scroll.md +104 -0
  147. package/components/tabs/demos/vertical.md +1 -9
  148. package/components/tabs/index.md +1 -1
  149. package/components/tabs/index.spec.ts +36 -0
  150. package/components/tabs/index.ts +11 -12
  151. package/components/tabs/index.vdt +6 -7
  152. package/components/tabs/styles.ts +113 -144
  153. package/components/tabs/useScroll.ts +101 -42
  154. package/components/tag/base.ts +1 -1
  155. package/components/tag/demos/draggable.md +49 -0
  156. package/components/tag/demos/tags.md +72 -0
  157. package/components/tag/index.md +11 -0
  158. package/components/tag/index.spec.ts +70 -2
  159. package/components/tag/index.ts +2 -0
  160. package/components/tag/styles.ts +53 -4
  161. package/components/tag/tags.ts +54 -0
  162. package/components/tag/tags.vdt +49 -0
  163. package/components/tag/useChildren.ts +42 -0
  164. package/components/tag/useDraggable.ts +97 -0
  165. package/components/tag/useNowrap.ts +117 -0
  166. package/components/timepicker/index.md +13 -0
  167. package/components/timepicker/index.spec.ts +1 -1
  168. package/components/tooltip/content.ts +21 -7
  169. package/components/tooltip/content.vdt +14 -8
  170. package/components/tooltip/demos/trigger.md +1 -1
  171. package/components/tooltip/index.md +3 -6
  172. package/components/tooltip/index.spec.ts +69 -40
  173. package/components/tooltip/styles.ts +3 -3
  174. package/components/tooltip/tooltip.ts +7 -1
  175. package/components/treeSelect/index.md +11 -0
  176. package/components/upload/index.spec.ts +4 -4
  177. package/components/upload/index.vdt +1 -1
  178. package/components/upload/styles.ts +0 -2
  179. package/components/utils.ts +25 -4
  180. package/components/virtual.ts +98 -0
  181. package/es/components/button/index.d.ts +1 -1
  182. package/es/components/button/index.js +1 -1
  183. package/es/components/button/styles.js +1 -1
  184. package/es/components/cascader/index.d.ts +22 -11
  185. package/es/components/cascader/index.js +9 -12
  186. package/es/components/cascader/index.spec.js +81 -0
  187. package/es/components/cascader/index.vdt.js +10 -8
  188. package/es/components/cascader/styles.js +1 -1
  189. package/es/components/cascader/useFields.d.ts +2 -0
  190. package/es/components/cascader/useFields.js +18 -0
  191. package/es/components/cascader/useFilterable.d.ts +2 -1
  192. package/es/components/cascader/useFilterable.js +17 -6
  193. package/es/components/cascader/useLabel.d.ts +2 -1
  194. package/es/components/cascader/useLabel.js +4 -4
  195. package/es/components/cascader/useLoad.d.ts +2 -1
  196. package/es/components/cascader/useLoad.js +9 -7
  197. package/es/components/colorpicker/index.d.ts +2 -0
  198. package/es/components/colorpicker/index.js +7 -2
  199. package/es/components/colorpicker/index.vdt.js +3 -6
  200. package/es/components/copy/index.d.ts +17 -0
  201. package/es/components/copy/index.js +43 -0
  202. package/es/components/copy/index.spec.d.ts +1 -0
  203. package/es/components/copy/index.spec.js +52 -0
  204. package/es/components/copy/index.vdt.js +45 -0
  205. package/es/components/copy/styles.d.ts +2 -0
  206. package/es/components/copy/styles.js +14 -0
  207. package/es/components/copy/useCopy.d.ts +4 -0
  208. package/es/components/copy/useCopy.js +90 -0
  209. package/es/components/datepicker/index.spec.js +1 -1
  210. package/es/components/datepicker/index.vdt.js +1 -1
  211. package/es/components/datepicker/styles.js +1 -1
  212. package/es/components/diagram/shapes/callout.d.ts +1 -1
  213. package/es/components/diagram/shapes/circle.d.ts +1 -1
  214. package/es/components/diagram/shapes/document.d.ts +1 -1
  215. package/es/components/diagram/shapes/ellipse.d.ts +1 -1
  216. package/es/components/diagram/shapes/hexagon.d.ts +1 -1
  217. package/es/components/diagram/shapes/image.d.ts +1 -1
  218. package/es/components/diagram/shapes/parallelogram.d.ts +1 -1
  219. package/es/components/diagram/shapes/rectangle.d.ts +1 -1
  220. package/es/components/diagram/shapes/square.d.ts +1 -1
  221. package/es/components/diagram/shapes/text.d.ts +1 -1
  222. package/es/components/dialog/alert.vdt.js +6 -5
  223. package/es/components/dialog/index.spec.js +6 -6
  224. package/es/components/dropdown/dropdown.d.ts +6 -6
  225. package/es/components/dropdown/dropdown.js +58 -75
  226. package/es/components/dropdown/index.spec.js +96 -17
  227. package/es/components/dropdown/item.d.ts +1 -1
  228. package/es/components/dropdown/item.js +19 -7
  229. package/es/components/dropdown/menu.js +1 -1
  230. package/es/components/dropdown/usePosition.js +11 -2
  231. package/es/components/editable/index.d.ts +1 -0
  232. package/es/components/editable/index.js +20 -6
  233. package/es/components/editable/index.vdt.js +2 -1
  234. package/es/components/form/index.spec.js +4 -2
  235. package/es/components/form/item.vdt.js +2 -1
  236. package/es/components/form/styles.js +4 -4
  237. package/es/components/grid/useGutter.js +8 -8
  238. package/es/components/input/index.d.ts +11 -2
  239. package/es/components/input/index.js +13 -13
  240. package/es/components/input/index.spec.js +169 -1
  241. package/es/components/input/index.vdt.js +28 -7
  242. package/es/components/input/styles.js +20 -3
  243. package/es/components/input/useAutoRows.d.ts +2 -0
  244. package/es/components/input/useAutoRows.js +79 -0
  245. package/es/components/input/useAutoWidth.js +13 -3
  246. package/es/components/input/useShowPassword.d.ts +7 -0
  247. package/es/components/input/useShowPassword.js +31 -0
  248. package/es/components/menu/index.spec.js +26 -15
  249. package/es/components/menu/item.d.ts +2 -0
  250. package/es/components/menu/item.js +5 -0
  251. package/es/components/pagination/index.d.ts +1 -1
  252. package/es/components/pagination/index.js +3 -2
  253. package/es/components/pagination/index.spec.js +49 -0
  254. package/es/components/pagination/index.vdt.js +8 -10
  255. package/es/components/pagination/styles.js +1 -1
  256. package/es/components/popover/content.d.ts +19 -0
  257. package/es/components/popover/content.js +31 -0
  258. package/es/components/popover/content.vdt.js +68 -0
  259. package/es/components/popover/index.d.ts +16 -0
  260. package/es/components/popover/index.js +44 -0
  261. package/es/components/popover/index.spec.d.ts +1 -0
  262. package/es/components/popover/index.spec.js +195 -0
  263. package/es/components/popover/styles.d.ts +1 -0
  264. package/es/components/popover/styles.js +22 -0
  265. package/es/components/portal.d.ts +6 -2
  266. package/es/components/portal.js +4 -3
  267. package/es/components/position.js +2 -1
  268. package/es/components/progress/index.js +1 -1
  269. package/es/components/progress/index.vdt.js +46 -8
  270. package/es/components/progress/styles.js +19 -13
  271. package/es/components/rate/styles.js +1 -1
  272. package/es/components/select/base.d.ts +7 -3
  273. package/es/components/select/base.js +9 -3
  274. package/es/components/select/base.vdt.js +46 -35
  275. package/es/components/select/index.spec.js +2 -2
  276. package/es/components/select/menu.vdt.js +1 -1
  277. package/es/components/select/styles.js +11 -5
  278. package/es/components/select/useDraggble.d.ts +2 -0
  279. package/es/components/select/useDraggble.js +11 -0
  280. package/es/components/select/useNowrap.d.ts +3 -0
  281. package/es/components/select/useNowrap.js +19 -0
  282. package/es/components/slider/index.spec.js +48 -9
  283. package/es/components/slider/index.vdt.js +23 -12
  284. package/es/components/slider/styles.js +23 -14
  285. package/es/components/slider/useValue.d.ts +3 -1
  286. package/es/components/slider/useValue.js +12 -0
  287. package/es/components/spinner/index.d.ts +0 -1
  288. package/es/components/spinner/index.js +1 -19
  289. package/es/components/spinner/index.vdt.js +9 -4
  290. package/es/components/spinner/useChange.d.ts +1 -1
  291. package/es/components/spinner/useChange.js +2 -2
  292. package/es/components/spinner/useValue.d.ts +1 -0
  293. package/es/components/spinner/useValue.js +16 -1
  294. package/es/components/split/index.vdt.js +32 -20
  295. package/es/components/split/memo.d.ts +9 -0
  296. package/es/components/split/memo.js +26 -0
  297. package/es/components/steps/index.d.ts +1 -0
  298. package/es/components/steps/index.js +2 -1
  299. package/es/components/steps/index.spec.js +1 -1
  300. package/es/components/steps/index.vdt.js +7 -4
  301. package/es/components/steps/step.vdt.js +0 -1
  302. package/es/components/steps/styles.d.ts +1 -0
  303. package/es/components/steps/styles.js +45 -16
  304. package/es/components/switch/index.spec.js +82 -65
  305. package/es/components/table/cell.js +1 -6
  306. package/es/components/table/index.spec.js +130 -19
  307. package/es/components/table/row.d.ts +1 -1
  308. package/es/components/table/row.js +2 -1
  309. package/es/components/table/styles.js +1 -1
  310. package/es/components/table/table.d.ts +15 -0
  311. package/es/components/table/table.js +16 -7
  312. package/es/components/table/table.vdt.js +20 -6
  313. package/es/components/table/useChecked.d.ts +3 -2
  314. package/es/components/table/useChecked.js +23 -12
  315. package/es/components/table/useDisableRow.d.ts +2 -1
  316. package/es/components/table/useDisableRow.js +4 -4
  317. package/es/components/table/useDraggable.d.ts +3 -2
  318. package/es/components/table/useDraggable.js +11 -15
  319. package/es/components/table/useGroup.js +3 -0
  320. package/es/components/table/useMerge.d.ts +2 -1
  321. package/es/components/table/useMerge.js +5 -4
  322. package/es/components/table/usePagination.d.ts +8 -0
  323. package/es/components/table/usePagination.js +81 -0
  324. package/es/components/table/useStickyScrollbar.js +2 -2
  325. package/es/components/table/useTree.d.ts +2 -1
  326. package/es/components/table/useTree.js +3 -4
  327. package/es/components/table/useWidth.js +2 -2
  328. package/es/components/tabs/index.d.ts +1 -1
  329. package/es/components/tabs/index.js +1 -1
  330. package/es/components/tabs/index.spec.js +67 -0
  331. package/es/components/tabs/index.vdt.js +4 -4
  332. package/es/components/tabs/styles.js +32 -34
  333. package/es/components/tabs/useScroll.d.ts +1 -1
  334. package/es/components/tabs/useScroll.js +75 -48
  335. package/es/components/tag/base.d.ts +1 -0
  336. package/es/components/tag/base.js +1 -1
  337. package/es/components/tag/index.d.ts +1 -0
  338. package/es/components/tag/index.js +2 -1
  339. package/es/components/tag/index.spec.js +147 -4
  340. package/es/components/tag/styles.d.ts +67 -0
  341. package/es/components/tag/styles.js +33 -8
  342. package/es/components/tag/tags.d.ts +27 -0
  343. package/es/components/tag/tags.js +51 -0
  344. package/es/components/tag/tags.vdt.js +79 -0
  345. package/es/components/tag/useChildren.d.ts +2 -0
  346. package/es/components/tag/useChildren.js +39 -0
  347. package/es/components/tag/useDraggable.d.ts +3 -0
  348. package/es/components/tag/useDraggable.js +89 -0
  349. package/es/components/tag/useNowrap.d.ts +7 -0
  350. package/es/components/tag/useNowrap.js +115 -0
  351. package/es/components/timepicker/index.spec.js +1 -1
  352. package/es/components/tooltip/content.d.ts +3 -2
  353. package/es/components/tooltip/content.js +18 -1
  354. package/es/components/tooltip/content.vdt.js +22 -10
  355. package/es/components/tooltip/index.spec.js +147 -92
  356. package/es/components/tooltip/styles.d.ts +23 -0
  357. package/es/components/tooltip/styles.js +2 -2
  358. package/es/components/tooltip/tooltip.d.ts +1 -1
  359. package/es/components/tooltip/tooltip.js +11 -11
  360. package/es/components/upload/index.spec.js +5 -6
  361. package/es/components/upload/index.vdt.js +3 -1
  362. package/es/components/utils.d.ts +2 -0
  363. package/es/components/utils.js +24 -3
  364. package/es/components/virtual.d.ts +8 -0
  365. package/es/components/virtual.js +126 -0
  366. package/es/hooks/useResizeObserver.d.ts +1 -1
  367. package/es/hooks/useResizeObserver.js +19 -6
  368. package/es/i18n/en-US.d.ts +4 -1
  369. package/es/i18n/en-US.js +6 -2
  370. package/es/index.d.ts +5 -3
  371. package/es/index.js +5 -3
  372. package/es/packages/kpc-react/__tests__/components/cascader.spec.d.ts +1 -0
  373. package/es/packages/kpc-react/__tests__/components/cascader.spec.js +79 -0
  374. package/es/packages/kpc-react/__tests__/components/drawer.spec.js +74 -6
  375. package/es/site/data/components/button/demos/basic/react.js +3 -1
  376. package/es/site/data/components/button/demos/group/react.js +26 -0
  377. package/es/site/data/components/button/demos/icon/react.js +6 -0
  378. package/es/site/data/components/copy/demos/basic/react.js +23 -0
  379. package/es/site/data/components/copy/demos/children/react.js +44 -0
  380. package/es/site/data/components/copy/index.d.ts +57 -0
  381. package/es/site/data/components/copy/index.js +42 -0
  382. package/es/site/data/components/datepicker/demos/basic/react.js +8 -0
  383. package/es/site/data/components/dropdown/demos/tooltip/react.js +2 -1
  384. package/es/site/data/components/input/demos/autoRows/index.d.ts +9 -0
  385. package/es/site/data/components/input/demos/autoRows/index.js +24 -0
  386. package/es/site/data/components/input/demos/autoRows/react.d.ts +8 -0
  387. package/es/site/data/components/input/demos/autoRows/react.js +62 -0
  388. package/es/site/data/components/input/demos/flat/index.d.ts +5 -0
  389. package/es/site/data/components/input/demos/flat/index.js +17 -0
  390. package/es/site/data/components/input/demos/flat/react.d.ts +4 -0
  391. package/es/site/data/components/input/demos/flat/react.js +29 -0
  392. package/es/site/data/components/input/demos/password/index.d.ts +5 -0
  393. package/es/site/data/components/input/demos/password/index.js +17 -0
  394. package/es/site/data/components/input/demos/password/react.d.ts +5 -0
  395. package/es/site/data/components/input/demos/password/react.js +41 -0
  396. package/es/site/data/components/input/demos/textarea/react.js +4 -2
  397. package/es/site/data/components/menu/demos/collapse/index.js +1 -1
  398. package/es/site/data/components/menu/demos/collapse/react.js +1 -1
  399. package/es/site/data/components/pagination/demos/flat/index.d.ts +6 -0
  400. package/es/site/data/components/pagination/demos/flat/index.js +18 -0
  401. package/es/site/data/components/pagination/demos/flat/react.d.ts +5 -0
  402. package/es/site/data/components/pagination/demos/{noBoard → flat}/react.js +12 -8
  403. package/es/site/data/components/popover/demos/basic/react.d.ts +8 -0
  404. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/react.js +14 -9
  405. package/es/site/data/components/popover/demos/button/index.d.ts +8 -0
  406. package/es/site/data/components/popover/demos/button/index.js +42 -0
  407. package/es/site/data/components/popover/demos/button/react.d.ts +8 -0
  408. package/es/site/data/components/popover/demos/button/react.js +73 -0
  409. package/es/site/data/components/popover/demos/content/index.d.ts +7 -0
  410. package/es/site/data/components/popover/demos/content/index.js +28 -0
  411. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/content}/react.d.ts +0 -1
  412. package/es/site/data/components/popover/demos/content/react.js +43 -0
  413. package/es/site/data/components/popover/demos/text/index.d.ts +7 -0
  414. package/es/site/data/components/popover/demos/text/index.js +28 -0
  415. package/es/site/data/components/popover/demos/text/react.d.ts +6 -0
  416. package/es/site/data/components/popover/demos/text/react.js +36 -0
  417. package/es/site/data/components/popover/demos/type/index.d.ts +11 -0
  418. package/es/site/data/components/popover/demos/type/index.js +34 -0
  419. package/es/site/data/components/popover/demos/type/react.d.ts +11 -0
  420. package/es/site/data/components/popover/demos/type/react.js +58 -0
  421. package/es/site/data/components/popover/index.d.ts +57 -0
  422. package/es/site/data/components/popover/index.js +42 -0
  423. package/es/site/data/components/progress/demos/children/react.js +4 -4
  424. package/es/site/data/components/progress/demos/circleSize/index.d.ts +14 -0
  425. package/es/site/data/components/progress/demos/circleSize/index.js +43 -0
  426. package/es/site/data/components/progress/demos/circleSize/react.d.ts +14 -0
  427. package/es/site/data/components/progress/demos/circleSize/react.js +98 -0
  428. package/es/site/data/components/progress/demos/customColor/react.js +4 -4
  429. package/es/site/data/components/select/demos/basic/react.js +19 -7
  430. package/es/site/data/components/select/demos/creatable/react.js +2 -1
  431. package/es/site/data/components/select/demos/draggable/index.d.ts +10 -0
  432. package/es/site/data/components/select/demos/draggable/index.js +24 -0
  433. package/es/site/data/components/select/demos/draggable/react.d.ts +10 -0
  434. package/es/site/data/components/select/demos/draggable/react.js +85 -0
  435. package/es/site/data/components/select/demos/flat/index.d.ts +5 -0
  436. package/es/site/data/components/select/demos/flat/index.js +17 -0
  437. package/es/site/data/components/select/demos/flat/react.d.ts +4 -0
  438. package/es/site/data/components/select/demos/flat/react.js +73 -0
  439. package/es/site/data/components/select/demos/inline/index.d.ts +5 -0
  440. package/es/site/data/components/select/demos/inline/index.js +17 -0
  441. package/es/site/data/components/select/demos/inline/react.d.ts +4 -0
  442. package/es/site/data/components/select/demos/nowrap/index.d.ts +5 -0
  443. package/es/site/data/components/select/demos/nowrap/index.js +17 -0
  444. package/es/site/data/components/select/demos/nowrap/react.d.ts +4 -0
  445. package/es/site/data/components/select/demos/nowrap/react.js +41 -0
  446. package/es/site/data/components/select/demos/size/index.d.ts +1 -0
  447. package/es/site/data/components/select/demos/size/index.js +2 -1
  448. package/es/site/data/components/select/demos/size/react.d.ts +1 -0
  449. package/es/site/data/components/select/demos/size/react.js +93 -1
  450. package/es/site/data/components/steps/demos/vertical/index.d.ts +14 -0
  451. package/es/site/data/components/steps/demos/vertical/index.js +40 -0
  452. package/es/site/data/components/steps/demos/vertical/react.d.ts +14 -0
  453. package/es/site/data/components/steps/demos/vertical/react.js +124 -0
  454. package/es/site/data/components/switch/demos/onOff/react.js +1 -3
  455. package/es/site/data/components/table/demos/hideHeader/index.d.ts +12 -0
  456. package/es/site/data/components/table/demos/hideHeader/index.js +30 -0
  457. package/es/site/data/components/table/demos/hideHeader/react.d.ts +11 -0
  458. package/es/site/data/components/table/demos/hideHeader/react.js +60 -0
  459. package/es/site/data/components/table/demos/pagination/index.d.ts +12 -0
  460. package/es/site/data/components/table/demos/pagination/index.js +35 -0
  461. package/es/site/data/components/table/demos/pagination/react.d.ts +16 -0
  462. package/es/site/data/components/table/demos/pagination/react.js +65 -0
  463. package/es/site/data/components/tabs/demos/card/react.js +1 -15
  464. package/es/site/data/components/tabs/demos/closable/index.js +1 -1
  465. package/es/site/data/components/tabs/demos/closable/react.js +9 -3
  466. package/es/site/data/components/tabs/demos/scroll/index.d.ts +18 -0
  467. package/es/site/data/components/tabs/demos/scroll/index.js +87 -0
  468. package/es/site/data/components/tabs/demos/scroll/react.d.ts +18 -0
  469. package/es/site/data/components/tabs/demos/scroll/react.js +166 -0
  470. package/es/site/data/components/tabs/demos/vertical/react.js +1 -16
  471. package/es/site/data/components/tag/demos/draggable/index.d.ts +11 -0
  472. package/es/site/data/components/tag/demos/draggable/index.js +24 -0
  473. package/es/site/data/components/tag/demos/draggable/react.d.ts +11 -0
  474. package/es/site/data/components/tag/demos/draggable/react.js +62 -0
  475. package/es/site/data/components/tag/demos/tags/index.d.ts +12 -0
  476. package/es/site/data/components/tag/demos/tags/index.js +39 -0
  477. package/es/site/data/components/tag/demos/tags/react.d.ts +12 -0
  478. package/es/site/data/components/tag/demos/tags/react.js +83 -0
  479. package/es/site/src/pages/document/index.js +2 -3
  480. package/es/styles/fonts/iconfont.js +1 -1
  481. package/es/styles/fonts/ionicons.js +3 -3
  482. package/es/styles/global.js +1 -1
  483. package/hooks/useResizeObserver.ts +19 -7
  484. package/i18n/en-US.ts +6 -1
  485. package/index.ts +5 -3
  486. package/package.json +9 -5
  487. package/styles/fonts/iconfont.ts +1 -1
  488. package/styles/fonts/ionicons.ts +2 -3
  489. package/styles/global.ts +3 -3
  490. package/components/pagination/demos/noBoard.md +0 -22
  491. package/components/table/useResizeObserver.ts +0 -22
  492. package/components/tooltip/demos/confirm.md +0 -41
  493. package/es/components/table/useResizeObserver.d.ts +0 -2
  494. package/es/components/table/useResizeObserver.js +0 -20
  495. /package/components/select/demos/{noBorder.md → inline.md} +0 -0
  496. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.d.ts +0 -0
  497. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.js +0 -0
  498. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/react.d.ts +0 -0
  499. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.d.ts +0 -0
  500. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.js +0 -0
  501. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/react.d.ts +0 -0
  502. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.d.ts +0 -0
  503. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.js +0 -0
  504. /package/es/site/data/components/select/demos/{noBorder → inline}/react.js +0 -0
package/README.md CHANGED
@@ -96,7 +96,7 @@ Welcome to join us by QQ. Group Number: 529739732
96
96
 
97
97
  ## Develop
98
98
 
99
- > Require `node@10` and `npm@6.9` or above.
99
+ > Require `node@10 ~ node@14` and `npm@6.9` or above.
100
100
 
101
101
  ```shell
102
102
  git clone https://github.com/ksc-fe/kpc.git
@@ -17,6 +17,7 @@ import {Button} from 'kpc';
17
17
  <Button type="success">success</Button>
18
18
  <Button type="none">none</Button>
19
19
  <Button type="link">link</Button>
20
+ <Button type="flat">flat</Button>
20
21
  </div>
21
22
  ```
22
23
 
@@ -20,6 +20,11 @@ import {Button, ButtonGroup} from 'kpc';
20
20
  <Button type="danger">关机</Button>
21
21
  <Button type="danger">重启</Button>
22
22
  </ButtonGroup>
23
+ <ButtonGroup>
24
+ <Button type="flat">开机</Button>
25
+ <Button type="flat">关机</Button>
26
+ <Button type="flat">重启</Button>
27
+ </ButtonGroup>
23
28
  <ButtonGroup>
24
29
  <Button type="primary">
25
30
  <i class="k-icon ion-ios-arrow-left"></i>上一页
@@ -43,6 +48,12 @@ import {Button, ButtonGroup} from 'kpc';
43
48
  <Button value="guangzhou">广州</Button>
44
49
  <Button value="shenzhen">深圳</Button>
45
50
  </ButtonGroup>
51
+ <ButtonGroup checkType="radio" v-model="city">
52
+ <Button type="flat" value="beijing">北京</Button>
53
+ <Button type="flat" value="shanghai">上海</Button>
54
+ <Button type="flat" value="guangzhou">广州</Button>
55
+ <Button type="flat" value="shenzhen">深圳</Button>
56
+ </ButtonGroup>
46
57
  <p>多选按钮组</p>
47
58
  <ButtonGroup checkType="checkbox" v-model="cities">
48
59
  <Button value="beijing" size="small">北京</Button>
@@ -14,6 +14,7 @@ import {Button, Icon} from 'kpc';
14
14
  <Button icon><Icon class="ion-ios-search" /></Button>
15
15
  <Button icon circle><Icon class="ion-ios-search" /></Button>
16
16
  <Button icon circle type="none"><Icon class="ion-ios-search" /></Button>
17
+ <Button icon circle type="flat"><Icon class="ion-ios-search" /></Button>
17
18
  <Button type="danger" size="large" icon circle><Icon class="ion-ios-search" size="large" /></Button>
18
19
  <Button type="primary"><Icon class="ion-ios-search" size="small" />搜索</Button>
19
20
  <Button circle type='primary'><Icon class="ion-ios-search" size="small" />搜索</Button>
@@ -11,7 +11,7 @@ sidebar: doc
11
11
 
12
12
  | 属性 | 说明 | 类型 | 默认值 |
13
13
  | --- | --- | --- | --- |
14
- | type | 按钮类型 | `"default"` &#124; `"primary"` &#124; `"warning"` &#124; `"danger"` &#124; `"success"` &#124; `"none"` &#124; `"secondary" `&#124; `"link"`| `"default"` |
14
+ | type | 按钮类型 | `"default"` &#124; `"primary"` &#124; `"warning"` &#124; `"danger"` &#124; `"success"` &#124; `"none"` &#124; `"secondary" `&#124; `"link"` &#124; `"flat"` | `"default"` |
15
15
  | size | 按钮尺寸 | `"default"` &#124; `"small"` &#124; `"mini"` | `"default"` |
16
16
  | icon | 是否为图标按钮(宽高相等)| `boolean` | `false` |
17
17
  | circle | 是否为圆角按钮 | `boolean` | `false` |
@@ -21,7 +21,7 @@ interface ButtonHTMLAttributes {
21
21
  }
22
22
 
23
23
  export interface ButtonProps extends ButtonHTMLAttributes {
24
- type?: Colors | 'none' | 'secondary' | 'link'
24
+ type?: Colors | 'none' | 'secondary' | 'link' | 'flat'
25
25
  size?: Sizes,
26
26
  icon?: boolean
27
27
  circle?: boolean
@@ -42,7 +42,7 @@ export interface ButtonEvents {
42
42
  }
43
43
 
44
44
  const typeDefs: Required<TypeDefs<Omit<ButtonProps, keyof ButtonHTMLAttributes>>> = {
45
- type: ['default', 'primary', 'warning', 'danger', 'success', 'none', 'secondary', 'link'],
45
+ type: ['default', 'primary', 'warning', 'danger', 'success', 'none', 'secondary', 'link', 'flat'],
46
46
  size: ['large', 'default', 'small', 'mini'],
47
47
  icon: Boolean,
48
48
  circle: Boolean,
@@ -245,7 +245,8 @@ export function makeButtonStyles({iconSide}: {iconSide?: string}) {
245
245
  }
246
246
 
247
247
  &.k-none,
248
- &.k-link {
248
+ &.k-link,
249
+ &.k-flat {
249
250
  background: transparent;
250
251
  &, &:hover {
251
252
  border: none;
@@ -258,6 +259,10 @@ export function makeButtonStyles({iconSide}: {iconSide?: string}) {
258
259
  background: ${button.none.hoverBgColor};
259
260
  }
260
261
 
262
+ &.k-flat {
263
+ background: ${button.none.hoverBgColor};
264
+ }
265
+
261
266
  ${sizes.map(size => {
262
267
  const styles = button[size];
263
268
 
@@ -30,6 +30,8 @@ sidebar: doc
30
30
  | loadData | 如果`data`中的`children`属性值为空数组`[]`,则可以使用该属性定义动态加载逻辑,组件会将当前选中的数据项作为参数传入 | `(data: CascaderData<V>) => any` | `undefined` |
31
31
  | filter | 如果可搜索,你可以传入`filter`改变搜索逻辑,组件会将搜索关键词和数据项作为参数传入 | `(keywords: string, data: CascaderData<V>) => boolean` | `(keywords: string, data: CascaderData<V>) => data.label.includes(keywords)` |
32
32
  | show | 是否展示菜单项 | `boolean` | `false` |
33
+ | fields | 指定`value` `label` `children` `disabled`字段名 | `CascaderFields<CascaderData<any>>` | `{ value: 'value', label: 'label', children: 'children', disabled: 'disabled' }` |
34
+ | position | 菜单弹出的位置,默认与触发器左侧对齐向下偏移`8px`的地方 | `Position` &#124; `"left"` &#124; `"bottom"` &#124; `"right"` &#124; `"top"` | `{my: 'left top+8', 'left bottom'}` |
33
35
 
34
36
  ```ts
35
37
  export type CascaderData<V> = {
@@ -40,6 +42,22 @@ export type CascaderData<V> = {
40
42
  children?: CascaderData<V>[]
41
43
  }
42
44
 
45
+ export type CascaderFields<Data> = {
46
+ value?: keyof Data,
47
+ label?: keyof Data,
48
+ children?: keyof Data,
49
+ disabled?: keyof Data,
50
+ }
51
+
52
+ type Position = {
53
+ my?: string | [string, string]
54
+ at?: string | [string, string]
55
+ collision?: Collision | [Collision, Collision]
56
+ collisionDirection?: ['left'] | ['top'] | ['left', 'top']
57
+ }
58
+
59
+ type Collision = 'fit' | 'flip' | 'flipfit' | 'none'
60
+
43
61
  export type Container = string | ((parentDom: Element, anchor: Node | null) => Element)
44
62
  ```
45
63
 
@@ -205,4 +205,60 @@ describe('Cascader', () => {
205
205
  expect(instance.get('value')).to.eql(['hunan', 'haidian']);
206
206
  expect(element.textContent).to.eql('湖南 / 海淀区');
207
207
  });
208
+
209
+ it('specify fields', async () => {
210
+ class Demo extends Component {
211
+ static template = `
212
+ const {Cascader} = this;
213
+ <Cascader data={this.get('data')}
214
+ v-model="value"
215
+ fields={{value: 'v', label: 'l', children: 'c'}}
216
+ />
217
+ `;
218
+ static defaults() {
219
+ return {
220
+ value: [],
221
+ data: [
222
+ {
223
+ v: 'beijing',
224
+ l: '北京',
225
+ c: [
226
+ {
227
+ v: 'haidian',
228
+ l: '海淀区'
229
+ },
230
+ ]
231
+ },
232
+ {
233
+ v: 'hunan',
234
+ l: '湖南',
235
+ c: [
236
+ {
237
+ v: 'haidian',
238
+ l: '海淀区'
239
+ },
240
+ ]
241
+ },
242
+ ]
243
+ }
244
+ }
245
+ private Cascader = Cascader;
246
+ }
247
+
248
+ const [instance, element] = mount(Demo);
249
+ const select = element;
250
+ select.click();
251
+ await wait();
252
+ const dropdown1 = getElement('.k-cascader-menu')!;
253
+ const [item1] = dropdown1.querySelectorAll<HTMLElement>(':scope > .k-dropdown-item');
254
+ item1.click();
255
+ await wait();
256
+ expect(dropdown1.innerHTML).to.matchSnapshot();
257
+ const dropdown2 = getElement('.k-cascader-menu')!;
258
+ const [item11,] = dropdown2.querySelectorAll<HTMLElement>(':scope > .k-dropdown-item');
259
+ item11.click();
260
+ await wait();
261
+ expect(element.innerHTML).to.matchSnapshot();
262
+ expect(instance.get('value')).to.eql(['beijing', 'haidian']);
263
+ });
208
264
  });
@@ -7,22 +7,39 @@ import {useValue} from './useValue';
7
7
  import {useLabel} from './useLabel';
8
8
  import {useLoad} from './useLoad';
9
9
  import {useFilterable} from './useFilterable';
10
+ import { useFields } from './useFields';
10
11
 
11
- export interface CascaderProps<V = any, Multipe extends boolean = boolean> extends BaseSelectProps<V[], Multipe> {
12
- data?: CascaderData<V>[]
12
+ export interface CascaderProps<
13
+ V = any,
14
+ Multipe extends boolean = boolean,
15
+ Data extends BaseCascaderData = CascaderData<V>
16
+ > extends BaseSelectProps<V[], Multipe> {
17
+ data?: Data[],
13
18
  trigger?: 'click' | 'hover'
14
19
  changeOnSelect?: boolean
15
20
  format?: (labels: string[]) => string
16
- loadData?: (data: CascaderData<V>) => any
17
- filter?: (keywords: string, data: CascaderData<V>) => boolean,
21
+ loadData?: (data: Data) => any
22
+ filter?: (keywords: string, data: Data) => boolean,
23
+ fields?: CascaderFields<Data>,
24
+ }
25
+
26
+ export type CascaderFields<Data> = {
27
+ value?: keyof Data,
28
+ label?: keyof Data,
29
+ children?: keyof Data,
30
+ disabled?: keyof Data,
18
31
  }
19
32
 
20
- export type CascaderData<V> = {
33
+ export interface BaseCascaderData {
34
+ loaded?: boolean
35
+ [key: string]: any
36
+ }
37
+
38
+ export interface CascaderData<V> extends BaseCascaderData {
21
39
  value: V
22
40
  label: string
23
- disabled?: boolean
24
- loaded?: boolean
25
41
  children?: CascaderData<V>[]
42
+ disabled?: boolean
26
43
  }
27
44
 
28
45
  export interface CascaderEvents extends BaseSelectEvents { }
@@ -37,6 +54,7 @@ const typeDefs: Required<TypeDefs<CascaderProps>> = {
37
54
  format: Function,
38
55
  loadData: Function,
39
56
  filter: Function,
57
+ fields: Object,
40
58
  };
41
59
 
42
60
  const defaults = (): Partial<CascaderProps> => ({
@@ -44,21 +62,26 @@ const defaults = (): Partial<CascaderProps> => ({
44
62
  data: [],
45
63
  trigger: 'click',
46
64
  format: (labels: string[]) => labels.join(' / '),
47
- filter: (keywords: string, data: CascaderData<any>) => data.label.includes(keywords),
48
65
  });
49
66
 
50
67
  export class Cascader<
51
68
  V = any,
52
69
  Multipe extends boolean = false,
53
- > extends BaseSelect<CascaderProps<V, Multipe>, CascaderEvents, CascaderBlocks<V>> {
70
+ Data extends BaseCascaderData = CascaderData<V>
71
+ > extends BaseSelect<CascaderProps<V, Multipe, Data>, CascaderEvents, CascaderBlocks<V>> {
54
72
  static template = template;
55
73
  static typeDefs = typeDefs;
56
74
  static defaults = defaults;
57
75
 
76
+ private fields = useFields();
58
77
  private value = useValue();
59
- private label = useLabel();
60
- private load = useLoad();
61
- private filterable = useFilterable(this.input.keywords, this.value.setValue);
78
+ private label = useLabel(this.fields);
79
+ private load = useLoad(this.fields);
80
+ private filterable = useFilterable(
81
+ this.input.keywords,
82
+ this.value.setValue,
83
+ this.fields
84
+ );
62
85
  private positionObj = {my: 'left top', at: 'right top', collisionDirection: ['left']};
63
86
 
64
87
  protected getPlaceholder() {
@@ -3,12 +3,13 @@ import {Icon} from '../icon';
3
3
  import {_$} from '../../i18n';
4
4
  import {makeMenuStyles, makeFilterMenuStyles} from './styles';
5
5
 
6
- const {data, trigger, filterable} = this.get();
6
+ const {data, trigger, filterable, fields} = this.get();
7
7
  const baseMenuStyles = makeMenuStyles();
8
8
  const classNameObj = {
9
9
  'k-cascader-menu': true,
10
10
  [baseMenuStyles]: true,
11
11
  };
12
+ const getField = this.fields;
12
13
 
13
14
  const {values, isShowed, isSelected, onSelect, toggleShowedValue} = this.value;
14
15
  const Options = (data, level, loaded, parentSelected) => {
@@ -21,15 +22,15 @@ const Options = (data, level, loaded, parentSelected) => {
21
22
  }
22
23
 
23
24
  return data.map((item, index) => {
24
- const value = item.value;
25
+ const value = getField(item, 'value');
25
26
  const showed = isShowed(value, level);
26
27
  const selected = parentSelected && isSelected(value, level);
27
- const children = item.children;
28
+ const children = getField(item, 'children');
28
29
 
29
30
  const Item = () => {
30
31
  return (
31
32
  <DropdownItem
32
- disabled={item.disabled}
33
+ disabled={getField(item, 'disabled')}
33
34
  class={{
34
35
  'k-cascader-option': true,
35
36
  'k-active': showed,
@@ -37,7 +38,7 @@ const Options = (data, level, loaded, parentSelected) => {
37
38
  }}
38
39
  ev-select={onSelect.bind(null, value, level)}
39
40
  >
40
- {item.label}
41
+ {getField(item, 'label')}
41
42
  <Icon v-if={children}
42
43
  class="k-cascader-arrow ion-ios-arrow-right"
43
44
  />
@@ -50,10 +51,10 @@ const Options = (data, level, loaded, parentSelected) => {
50
51
  <Dropdown
51
52
  position={this.positionObj}
52
53
  of="parent"
53
- disabled={item.disabled}
54
+ disabled={getField(item, 'disabled')}
54
55
  trigger={trigger}
55
56
  value={showed}
56
- ev-$changed:value={toggleShowedValue.bind(null, value, level)}
57
+ ev-$change:value={toggleShowedValue.bind(null, value, level)}
57
58
  ev-show={this.load.bind(null, item)}
58
59
  >
59
60
  {Item()}
@@ -94,7 +95,7 @@ const {filter, keywords: {value: keywords}, selectByFilter} = this.filterable;
94
95
  >
95
96
  {(() => {
96
97
  // highlight keywords
97
- const label = $value.map(item => item.label).join(' / ');
98
+ const label = $value.map(item => getField(item, 'label')).join(' / ');
98
99
  const labels = label.split(keywords);
99
100
  const length = labels.length;
100
101
  return labels.map((item, index) => {
@@ -33,7 +33,8 @@ setDefault(() => {
33
33
  export function makeMenuStyles() {
34
34
  return css`
35
35
  min-width: ${cascader.width} !important;
36
- min-height: ${cascader.height};
36
+ height: ${cascader.height};
37
+ overflow: auto;
37
38
  .k-cascader-arrow {
38
39
  float: right;
39
40
  height: 100%;
@@ -0,0 +1,22 @@
1
+ import {useInstance} from 'intact';
2
+ import type {Cascader, CascaderData, BaseCascaderData, CascaderFields} from './';
3
+
4
+ export function useFields() {
5
+ const instance = useInstance() as Cascader;
6
+
7
+ return function getField<
8
+ Data extends BaseCascaderData = CascaderData<unknown>,
9
+ Key extends keyof Data = keyof Data
10
+ >(data: Data, key: Key): Data[Key] {
11
+ const {fields} = instance.get();
12
+
13
+ if (fields) {
14
+ const field = fields[key as keyof CascaderFields<Data>] as Key;
15
+ if (field) {
16
+ return data[field];
17
+ }
18
+ }
19
+
20
+ return data[key];
21
+ }
22
+ }
@@ -1,26 +1,41 @@
1
1
  import {useInstance} from 'intact';
2
- import type {Cascader, CascaderData} from './';
2
+ import type {Cascader, CascaderData, BaseCascaderData} from './';
3
3
  import {State} from '../../hooks/useState';
4
- import type {Value} from './useValue'
4
+ import type {Value} from './useValue';
5
+ import type {useFields} from './useFields';
5
6
 
6
7
  export function useFilterable(
7
8
  keywords: State<string>,
8
9
  setValue: (value: Value) => void,
10
+ getField: ReturnType<typeof useFields>
9
11
  ) {
10
12
  const instance = useInstance() as Cascader;
11
13
 
12
14
  function filter() {
13
- const {data, filter} = instance.get();
14
15
  const ret: CascaderData<any>[][] = [];
15
16
 
16
- const loop = (data: CascaderData<any>[], prefix: CascaderData<any>[] = [], valid = false, disabled = false) => {
17
+ let {data, filter} = instance.get();
18
+ if (!filter) {
19
+ filter = (keywords: string, data: CascaderData<any>) => {
20
+ return getField(data, 'label').includes(keywords);
21
+ }
22
+ }
23
+
24
+ const loop = (
25
+ data: CascaderData<any>[],
26
+ prefix: CascaderData<any>[] = [],
27
+ valid = false,
28
+ disabled = false
29
+ ) => {
17
30
  data.forEach(item => {
18
31
  const _valid = valid || filter!(keywords.value, item);
19
- const _disabled = disabled || item.disabled;
32
+ const _disabled = disabled || getField(item, 'disabled');
20
33
  const _prefix = prefix.slice(0);
21
34
  _prefix.push(item);
22
- if (item.children) {
23
- loop(item.children, _prefix, _valid, _disabled);
35
+
36
+ const children = getField(item, 'children');
37
+ if (children) {
38
+ loop(children, _prefix, _valid, _disabled);
24
39
  } else if (_valid) {
25
40
  (_prefix as any).disabled = _disabled;
26
41
  ret.push(_prefix);
@@ -33,7 +48,7 @@ export function useFilterable(
33
48
  }
34
49
 
35
50
  function selectByFilter(data: CascaderData<any>[]) {
36
- const value = data.map(item => item.value);
51
+ const value = data.map(item => getField(item, 'value'));
37
52
  setValue(value);
38
53
  }
39
54
 
@@ -3,11 +3,14 @@ import type {Cascader, CascaderData} from './';
3
3
  import {useState, watchState} from '../../hooks/useState';
4
4
  import {isNullOrUndefined} from 'intact-shared';
5
5
  import {useBaseLabel} from '../select/useBaseLabel';
6
+ import type {useFields} from './useFields';
6
7
 
7
8
  // treat value as string
8
9
  type CascaderStringData = CascaderData<string>
9
10
 
10
- export function useLabel() {
11
+ export function useLabel(
12
+ getField: ReturnType<typeof useFields>
13
+ ) {
11
14
  const instance = useInstance() as Cascader;
12
15
 
13
16
  function findLabel(data: CascaderStringData[], value: string[]) {
@@ -19,10 +22,10 @@ export function useLabel() {
19
22
 
20
23
  for (let i = 0; i < data.length; i++) {
21
24
  const item = data[i];
22
- if (item.value === value[level]) {
23
- labels.push(item.label);
25
+ if (getField(item, 'value') === value[level]) {
26
+ labels.push(getField(item, 'label'));
24
27
 
25
- const children = item.children;
28
+ const children = getField(item, 'children');
26
29
  if (children) {
27
30
  loop(children, level + 1);
28
31
  }
@@ -1,14 +1,16 @@
1
1
  import {useInstance} from 'intact';
2
2
  import type {Cascader, CascaderData} from './';
3
+ import type {useFields} from './useFields';
3
4
 
4
- export function useLoad() {
5
+ export function useLoad(getField: ReturnType<typeof useFields>) {
5
6
  const instance = useInstance() as Cascader;
6
7
 
7
8
  async function loadData(item: CascaderData<any>) {
8
9
  const {loadData} = instance.get();
9
10
  if (!loadData) return;
10
11
 
11
- if (item.children && !item.children.length && !item.loaded) {
12
+ const children = getField(item, 'children');
13
+ if (children && !children.length && !item.loaded) {
12
14
  await loadData(item);
13
15
  item.loaded = true;
14
16
  instance.forceUpdate();
@@ -12,7 +12,7 @@ order: 0
12
12
  > `import {Code} from '@king-design/react';`
13
13
 
14
14
  组件可以通过`v-model`双向绑定编辑的代码,通过`height`指定组件的高度(需要带单位),默认`100%`;通过
15
- `language`可以指定编程语言,默认为`javasript`
15
+ `language`可以指定编程语言,默认为`javascript`
16
16
 
17
17
  > `Code`组件基于[Monaco Editor@0.26](https://github.com/Microsoft/monaco-editor),使用该组件之前,你需要
18
18
  > 安装[monaco-editor-webpack-plugin@4](https://github.com/Microsoft/monaco-editor-webpack-plugin)插件,
@@ -14,3 +14,19 @@ sidebar: doc
14
14
  | size | 组件尺寸 | `"large"` &#124; `"default"` &#124; `"small"` &#124; `"mini"` | `"default"` |
15
15
  | disabled | 是否禁用 | `boolean` | `false` |
16
16
  | show | 是否展示颜色选择面板 | `boolean` | `false` |
17
+ | container | 指定弹出菜单追加的位置,默认:`Dialog`类型的组件会追加到`Dialog`中,其他会追加到`body`中。你可以传入函数返回一个DOM用来作为插入的容器,或者传入字符串用来给`querySelector`进行查询 | `Container` | `undefined` |
18
+ | position | 菜单弹出的位置,默认与触发器左侧对齐向下偏移`8px`的地方 | `Position` &#124; `"left"` &#124; `"bottom"` &#124; `"right"` &#124; `"top"` | `{my: 'left top+8', 'left bottom', collison: 'fit'}` |
19
+
20
+ ```ts
21
+ type Position = {
22
+ my?: string | [string, string]
23
+ at?: string | [string, string]
24
+ collision?: Collision | [Collision, Collision]
25
+ collisionDirection?: ['left'] | ['top'] | ['left', 'top']
26
+ }
27
+
28
+ type Collision = 'fit' | 'flip' | 'flipfit' | 'none'
29
+
30
+ export type Container = string | ((parentDom: Element, anchor: Node | null) => Element)
31
+ ```
32
+
@@ -2,6 +2,7 @@ import {Component, TypeDefs} from 'intact';
2
2
  import template from './index.vdt';
3
3
  import {sizes, Sizes} from '../../styles/utils';
4
4
  import {Container} from '../portal';
5
+ import {Dropdown, DropdownProps} from '../dropdown';
5
6
 
6
7
  export interface ColorpickerProps {
7
8
  value: string
@@ -10,6 +11,7 @@ export interface ColorpickerProps {
10
11
  disabled?: boolean
11
12
  container?: Container
12
13
  show?: boolean
14
+ position?: DropdownProps['position']
13
15
  }
14
16
 
15
17
  export interface ColorpickerEvents { }
@@ -24,6 +26,7 @@ const typeDefs: Required<TypeDefs<ColorpickerProps>> = {
24
26
  disabled: Boolean,
25
27
  container: [Function, String],
26
28
  show: Boolean,
29
+ position: Dropdown.typeDefs.position,
27
30
  };
28
31
 
29
32
  const defaults = (): Partial<ColorpickerProps> => ({
@@ -33,6 +36,7 @@ const defaults = (): Partial<ColorpickerProps> => ({
33
36
  '#B8E986', '#000000', '#4A4A4A', '#9B9B9B', '#FFFFFF'
34
37
  ],
35
38
  size: 'default',
39
+ position: {collision: 'fit'},
36
40
  });
37
41
 
38
42
  export class Colorpicker extends Component<ColorpickerProps, ColorpickerEvents> {
@@ -6,7 +6,8 @@ import {Dropdown, DropdownMenu} from '../dropdown';
6
6
 
7
7
  const {
8
8
  className, transition, presets,
9
- value, size, disabled, container
9
+ value, size, disabled, container,
10
+ position,
10
11
  } = this.get();
11
12
 
12
13
  const classNameObj = {
@@ -19,7 +20,7 @@ const classNameObj = {
19
20
 
20
21
  <div class={classNameObj} {...getRestProps(this)}>
21
22
  <Dropdown
22
- position={{my: 'left top+8', at: 'left bottom', collision: 'flip'}}
23
+ position={position}
23
24
  trigger="click"
24
25
  disabled={disabled}
25
26
  container={container}
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: 基本用法
3
+ order: 0
4
+ ---
5
+
6
+ 组件接收任意合法的字符串当做`text`值
7
+
8
+ ```vdt
9
+ import {Copy} from 'kpc';
10
+
11
+ <Copy text="Hello King Desgin!" />
12
+ ```
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: 自定义复制按钮
3
+ order: 1
4
+ ---
5
+
6
+ 传入一个唯一的子元素当作`children`,则点击该子元素即可复制相应内容
7
+
8
+ > `Copy`组件不会产生任何额外的元素
9
+
10
+ ```vdt
11
+ import {Copy, Button, Icon} from 'kpc';
12
+
13
+ <div>
14
+ <Copy text="Hello King Desgin!">
15
+ Copy
16
+ </Copy>
17
+ <Copy text="Hello King Desgin!">
18
+ <Button>Copy</Button>
19
+ </Copy>
20
+ <Copy text="Hello King Desgin!">
21
+ <Button type="link" size="mini">Copy</Button>
22
+ </Copy>
23
+ <Copy text="Hello King Desgin!">
24
+ <Icon class="ion-ios-copy" size="large" hoverable />
25
+ </Copy>
26
+ <Copy text="Hello King Desgin!">
27
+ <Button icon circle>
28
+ <Icon class="ion-ios-copy-outline" />
29
+ </Button>
30
+ </Copy>
31
+ </div>
32
+ ```
33
+
34
+ ```styl
35
+ .k-copy
36
+ margin-right 18px
37
+ ```
@@ -0,0 +1,21 @@
1
+ ---
2
+ title: 复制
3
+ category: 组件
4
+ order: 99
5
+ sidebar: doc
6
+ ---
7
+
8
+ # 属性
9
+
10
+ | 属性 | 说明 | 类型 | 默认值 |
11
+ | --- | --- | --- | --- |
12
+ | text | 复制文案值 | `string` | `undefined` |
13
+ | showMessage | 复制成功/失败时,是否展示Message | `boolean` | `true` |
14
+
15
+ # 事件
16
+
17
+ | 事件名 | 说明 | 参数 |
18
+ | --- | --- | --- |
19
+ | success | 复制成功时触发 | `(value: string) => void` |
20
+ | error | 复制失败时触发 | `() => void` |
21
+