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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/README.md +1 -1
  2. package/components/button/demos/basic.md +2 -1
  3. package/components/button/demos/disabled.md +2 -1
  4. package/components/button/demos/group.md +13 -2
  5. package/components/button/demos/icon.md +7 -6
  6. package/components/button/demos/loading.md +4 -4
  7. package/components/button/demos/size.md +4 -4
  8. package/components/button/index.md +1 -1
  9. package/components/button/index.ts +2 -2
  10. package/components/button/styles.ts +24 -13
  11. package/components/carousel/index.vdt +2 -2
  12. package/components/cascader/index.md +18 -0
  13. package/components/cascader/index.spec.ts +56 -0
  14. package/components/cascader/index.ts +35 -12
  15. package/components/cascader/index.vdt +10 -9
  16. package/components/cascader/styles.ts +2 -1
  17. package/components/cascader/useFields.ts +22 -0
  18. package/components/cascader/useFilterable.ts +23 -8
  19. package/components/cascader/useLabel.ts +7 -4
  20. package/components/cascader/useLoad.ts +4 -2
  21. package/components/checkbox/demos/basic.md +1 -1
  22. package/components/checkbox/demos/group.md +1 -1
  23. package/components/checkbox/demos/indeterminate.md +1 -1
  24. package/components/checkbox/demos/value.md +1 -1
  25. package/components/code/demos/basic.md +1 -1
  26. package/components/collapse/item.vdt +1 -1
  27. package/components/colorpicker/index.md +16 -0
  28. package/components/colorpicker/index.ts +4 -0
  29. package/components/colorpicker/index.vdt +3 -2
  30. package/components/copy/demos/basic.md +12 -0
  31. package/components/copy/demos/children.md +37 -0
  32. package/components/copy/index.md +21 -0
  33. package/components/copy/index.spec.ts +21 -0
  34. package/components/copy/index.ts +37 -0
  35. package/components/copy/index.vdt +23 -0
  36. package/components/copy/styles.ts +9 -0
  37. package/components/copy/useCopy.ts +91 -0
  38. package/components/datepicker/calendar.vdt +6 -6
  39. package/components/datepicker/demos/basic.md +1 -0
  40. package/components/datepicker/demos/datetime.md +5 -4
  41. package/components/datepicker/index.md +13 -0
  42. package/components/datepicker/index.spec.ts +13 -3
  43. package/components/datepicker/index.vdt +2 -2
  44. package/components/datepicker/styles.ts +13 -2
  45. package/components/datepicker/useValue.ts +35 -10
  46. package/components/dialog/alert.vdt +10 -6
  47. package/components/dialog/index.spec.ts +6 -6
  48. package/components/dialog/styles.ts +1 -1
  49. package/components/dropdown/demos/basic.md +1 -1
  50. package/components/dropdown/demos/checkbox.md +1 -1
  51. package/components/dropdown/demos/disabled.md +2 -2
  52. package/components/dropdown/demos/nested.md +6 -6
  53. package/components/dropdown/demos/position.md +3 -3
  54. package/components/dropdown/demos/tooltip.md +1 -1
  55. package/components/dropdown/demos/trigger.md +2 -2
  56. package/components/dropdown/dropdown.ts +51 -79
  57. package/components/dropdown/index.spec.ts +52 -3
  58. package/components/dropdown/item.ts +18 -7
  59. package/components/dropdown/menu.ts +4 -4
  60. package/components/dropdown/usePosition.ts +12 -1
  61. package/components/editable/index.ts +17 -3
  62. package/components/editable/index.vdt +1 -0
  63. package/components/form/demos/basic.md +2 -2
  64. package/components/form/demos/custom.md +2 -4
  65. package/components/form/index.spec.ts +1 -1
  66. package/components/form/item.vdt +1 -1
  67. package/components/form/styles.ts +22 -27
  68. package/components/grid/useGutter.ts +7 -6
  69. package/components/icon/demos/icons.md +130 -97
  70. package/components/icon/styles.ts +6 -2
  71. package/components/input/demos/autoRows.md +44 -0
  72. package/components/input/demos/blocks.md +7 -2
  73. package/components/input/demos/clearable.md +2 -2
  74. package/components/input/demos/flat.md +16 -0
  75. package/components/input/demos/password.md +12 -0
  76. package/components/input/demos/showCount.md +18 -0
  77. package/components/input/demos/size.md +6 -4
  78. package/components/input/demos/textarea.md +2 -2
  79. package/components/input/index.md +3 -0
  80. package/components/input/index.spec.ts +97 -1
  81. package/components/input/index.ts +26 -13
  82. package/components/input/index.vdt +48 -16
  83. package/components/input/search.vdt +2 -5
  84. package/components/input/styles.ts +111 -76
  85. package/components/input/useAutoRows.ts +65 -0
  86. package/components/input/useAutoWidth.ts +12 -3
  87. package/components/input/useFocus.ts +17 -0
  88. package/components/input/useShowPassword.ts +27 -0
  89. package/components/menu/demos/collapse.md +1 -1
  90. package/components/menu/index.spec.ts +9 -1
  91. package/components/menu/item.ts +7 -0
  92. package/components/menu/item.vdt +1 -1
  93. package/components/pagination/demos/flat.md +22 -0
  94. package/components/pagination/index.md +1 -1
  95. package/components/pagination/index.spec.ts +23 -0
  96. package/components/pagination/index.ts +4 -3
  97. package/components/pagination/index.vdt +8 -11
  98. package/components/pagination/styles.ts +2 -2
  99. package/components/popover/content.ts +40 -0
  100. package/components/popover/content.vdt +32 -0
  101. package/components/popover/demos/basic.md +47 -0
  102. package/components/popover/demos/button.md +49 -0
  103. package/components/popover/demos/content.md +36 -0
  104. package/components/popover/demos/text.md +38 -0
  105. package/components/popover/demos/type.md +51 -0
  106. package/components/popover/index.md +54 -0
  107. package/components/popover/index.spec.ts +91 -0
  108. package/components/popover/index.ts +52 -0
  109. package/components/popover/styles.ts +45 -0
  110. package/components/portal.ts +4 -4
  111. package/components/position.ts +5 -1
  112. package/components/progress/demos/children.md +1 -1
  113. package/components/progress/demos/circleSize.md +84 -0
  114. package/components/progress/demos/customColor.md +1 -3
  115. package/components/progress/index.ts +1 -1
  116. package/components/progress/index.vdt +36 -7
  117. package/components/progress/styles.ts +34 -21
  118. package/components/radio/demos/basic.md +1 -1
  119. package/components/radio/demos/group.md +1 -1
  120. package/components/radio/demos/value.md +1 -1
  121. package/components/rate/styles.ts +1 -0
  122. package/components/select/base.ts +11 -3
  123. package/components/select/base.vdt +56 -50
  124. package/components/select/demos/basic.md +21 -12
  125. package/components/select/demos/creatable.md +1 -1
  126. package/components/select/demos/customMenu.md +2 -2
  127. package/components/select/demos/draggable.md +55 -0
  128. package/components/select/demos/flat.md +42 -0
  129. package/components/select/demos/nowrap.md +24 -0
  130. package/components/select/demos/size.md +41 -1
  131. package/components/select/index.md +12 -0
  132. package/components/select/index.spec.ts +6 -3
  133. package/components/select/menu.vdt +7 -7
  134. package/components/select/option.vdt +1 -0
  135. package/components/select/styles.ts +57 -39
  136. package/components/select/useDraggble.ts +12 -0
  137. package/components/slider/index.spec.ts +32 -1
  138. package/components/slider/index.ts +2 -2
  139. package/components/slider/index.vdt +34 -16
  140. package/components/slider/styles.ts +21 -13
  141. package/components/slider/useValue.ts +15 -3
  142. package/components/spinner/index.md +1 -1
  143. package/components/spinner/index.ts +0 -9
  144. package/components/spinner/index.vdt +11 -8
  145. package/components/spinner/styles.ts +9 -6
  146. package/components/spinner/useChange.ts +2 -2
  147. package/components/spinner/useValue.ts +9 -1
  148. package/components/split/index.vdt +13 -3
  149. package/components/split/memo.ts +29 -0
  150. package/components/steps/demos/vertical.md +79 -0
  151. package/components/steps/index.md +1 -0
  152. package/components/steps/index.spec.ts +1 -1
  153. package/components/steps/index.ts +3 -1
  154. package/components/steps/index.vdt +4 -3
  155. package/components/steps/step.vdt +3 -3
  156. package/components/steps/styles.ts +159 -26
  157. package/components/switch/demos/onOff.md +2 -2
  158. package/components/switch/index.spec.ts +15 -10
  159. package/components/table/cell.ts +4 -5
  160. package/components/table/cell.vdt +1 -1
  161. package/components/table/column.vdt +27 -16
  162. package/components/table/demos/group.md +4 -3
  163. package/components/table/demos/hideHeader.md +33 -0
  164. package/components/table/demos/pagination.md +53 -0
  165. package/components/table/demos/title.md +3 -5
  166. package/components/table/index.md +22 -0
  167. package/components/table/index.spec.ts +91 -2
  168. package/components/table/row.ts +3 -3
  169. package/components/table/styles.ts +26 -28
  170. package/components/table/table.ts +29 -4
  171. package/components/table/table.vdt +21 -3
  172. package/components/table/useChecked.ts +21 -6
  173. package/components/table/useDisableRow.ts +3 -2
  174. package/components/table/useDraggable.ts +12 -8
  175. package/components/table/useGroup.ts +43 -23
  176. package/components/table/useMerge.ts +6 -3
  177. package/components/table/usePagination.ts +71 -0
  178. package/components/table/useRestRowStatus.ts +4 -1
  179. package/components/table/useStickyScrollbar.ts +2 -2
  180. package/components/table/useTree.ts +4 -3
  181. package/components/table/useWidth.ts +2 -2
  182. package/components/tabs/demos/beforeChange.md +2 -2
  183. package/components/tabs/demos/card.md +2 -11
  184. package/components/tabs/demos/closable.md +7 -6
  185. package/components/tabs/demos/scroll.md +104 -0
  186. package/components/tabs/demos/vertical.md +1 -9
  187. package/components/tabs/index.md +1 -1
  188. package/components/tabs/index.spec.ts +36 -0
  189. package/components/tabs/index.ts +11 -12
  190. package/components/tabs/index.vdt +7 -7
  191. package/components/tabs/styles.ts +113 -144
  192. package/components/tabs/useScroll.ts +101 -42
  193. package/components/tag/base.ts +1 -1
  194. package/components/tag/demos/draggable.md +49 -0
  195. package/components/tag/demos/tags.md +72 -0
  196. package/components/tag/index.md +42 -0
  197. package/components/tag/index.spec.ts +70 -2
  198. package/components/tag/index.ts +2 -0
  199. package/components/tag/styles.ts +53 -4
  200. package/components/tag/tags.ts +54 -0
  201. package/components/tag/tags.vdt +50 -0
  202. package/components/tag/useChildren.ts +42 -0
  203. package/components/tag/useDraggable.ts +97 -0
  204. package/components/tag/useNowrap.ts +117 -0
  205. package/components/timepicker/index.md +13 -0
  206. package/components/timepicker/index.spec.ts +1 -1
  207. package/components/tooltip/content.ts +21 -7
  208. package/components/tooltip/content.vdt +14 -8
  209. package/components/tooltip/demos/trigger.md +1 -1
  210. package/components/tooltip/index.md +3 -6
  211. package/components/tooltip/index.spec.ts +69 -40
  212. package/components/tooltip/styles.ts +3 -3
  213. package/components/tooltip/tooltip.ts +7 -1
  214. package/components/transfer/index.vdt +4 -3
  215. package/components/treeSelect/index.md +11 -0
  216. package/components/types.ts +1 -0
  217. package/components/upload/index.spec.ts +4 -4
  218. package/components/upload/index.vdt +5 -5
  219. package/components/upload/styles.ts +0 -2
  220. package/components/utils.ts +25 -4
  221. package/components/virtual.ts +98 -0
  222. package/es/components/button/index.d.ts +1 -1
  223. package/es/components/button/index.js +1 -1
  224. package/es/components/button/styles.d.ts +1 -1
  225. package/es/components/button/styles.js +3 -5
  226. package/es/components/carousel/index.vdt.js +2 -2
  227. package/es/components/cascader/index.d.ts +22 -11
  228. package/es/components/cascader/index.js +9 -12
  229. package/es/components/cascader/index.spec.js +81 -0
  230. package/es/components/cascader/index.vdt.js +11 -9
  231. package/es/components/cascader/styles.js +1 -1
  232. package/es/components/cascader/useFields.d.ts +2 -0
  233. package/es/components/cascader/useFields.js +18 -0
  234. package/es/components/cascader/useFilterable.d.ts +2 -1
  235. package/es/components/cascader/useFilterable.js +17 -6
  236. package/es/components/cascader/useLabel.d.ts +2 -1
  237. package/es/components/cascader/useLabel.js +4 -4
  238. package/es/components/cascader/useLoad.d.ts +2 -1
  239. package/es/components/cascader/useLoad.js +9 -7
  240. package/es/components/collapse/item.vdt.js +1 -1
  241. package/es/components/colorpicker/index.d.ts +2 -0
  242. package/es/components/colorpicker/index.js +7 -2
  243. package/es/components/colorpicker/index.vdt.js +3 -6
  244. package/es/components/copy/index.d.ts +17 -0
  245. package/es/components/copy/index.js +43 -0
  246. package/es/components/copy/index.spec.d.ts +1 -0
  247. package/es/components/copy/index.spec.js +52 -0
  248. package/es/components/copy/index.vdt.js +45 -0
  249. package/es/components/copy/styles.d.ts +2 -0
  250. package/es/components/copy/styles.js +14 -0
  251. package/es/components/copy/useCopy.d.ts +4 -0
  252. package/es/components/copy/useCopy.js +90 -0
  253. package/es/components/datepicker/calendar.vdt.js +6 -6
  254. package/es/components/datepicker/index.spec.js +171 -153
  255. package/es/components/datepicker/index.vdt.js +1 -1
  256. package/es/components/datepicker/styles.js +1 -1
  257. package/es/components/datepicker/useValue.d.ts +3 -3
  258. package/es/components/datepicker/useValue.js +38 -9
  259. package/es/components/diagram/shapes/callout.d.ts +1 -1
  260. package/es/components/diagram/shapes/circle.d.ts +1 -1
  261. package/es/components/diagram/shapes/document.d.ts +1 -1
  262. package/es/components/diagram/shapes/ellipse.d.ts +1 -1
  263. package/es/components/diagram/shapes/hexagon.d.ts +1 -1
  264. package/es/components/diagram/shapes/image.d.ts +1 -1
  265. package/es/components/diagram/shapes/parallelogram.d.ts +1 -1
  266. package/es/components/diagram/shapes/rectangle.d.ts +1 -1
  267. package/es/components/diagram/shapes/square.d.ts +1 -1
  268. package/es/components/diagram/shapes/text.d.ts +1 -1
  269. package/es/components/dialog/alert.vdt.js +6 -5
  270. package/es/components/dialog/index.spec.js +6 -6
  271. package/es/components/dialog/styles.js +1 -1
  272. package/es/components/dropdown/dropdown.d.ts +6 -6
  273. package/es/components/dropdown/dropdown.js +58 -75
  274. package/es/components/dropdown/index.spec.js +96 -17
  275. package/es/components/dropdown/item.d.ts +1 -1
  276. package/es/components/dropdown/item.js +19 -7
  277. package/es/components/dropdown/menu.js +1 -1
  278. package/es/components/dropdown/usePosition.js +11 -2
  279. package/es/components/editable/index.d.ts +1 -0
  280. package/es/components/editable/index.js +20 -6
  281. package/es/components/editable/index.vdt.js +2 -1
  282. package/es/components/form/index.spec.js +4 -2
  283. package/es/components/form/item.vdt.js +2 -1
  284. package/es/components/form/styles.js +4 -4
  285. package/es/components/grid/useGutter.js +8 -8
  286. package/es/components/icon/styles.js +1 -1
  287. package/es/components/input/index.d.ts +13 -2
  288. package/es/components/input/index.js +16 -13
  289. package/es/components/input/index.spec.js +169 -1
  290. package/es/components/input/index.vdt.js +44 -12
  291. package/es/components/input/search.vdt.js +2 -4
  292. package/es/components/input/styles.js +30 -6
  293. package/es/components/input/useAutoRows.d.ts +2 -0
  294. package/es/components/input/useAutoRows.js +79 -0
  295. package/es/components/input/useAutoWidth.js +13 -3
  296. package/es/components/input/useFocus.d.ts +4 -0
  297. package/es/components/input/useFocus.js +21 -0
  298. package/es/components/input/useShowPassword.d.ts +7 -0
  299. package/es/components/input/useShowPassword.js +31 -0
  300. package/es/components/menu/index.spec.js +26 -15
  301. package/es/components/menu/item.d.ts +2 -0
  302. package/es/components/menu/item.js +5 -0
  303. package/es/components/menu/item.vdt.js +4 -1
  304. package/es/components/pagination/index.d.ts +1 -1
  305. package/es/components/pagination/index.js +3 -2
  306. package/es/components/pagination/index.spec.js +49 -0
  307. package/es/components/pagination/index.vdt.js +10 -12
  308. package/es/components/pagination/styles.js +1 -1
  309. package/es/components/popover/content.d.ts +19 -0
  310. package/es/components/popover/content.js +31 -0
  311. package/es/components/popover/content.vdt.js +68 -0
  312. package/es/components/popover/index.d.ts +16 -0
  313. package/es/components/popover/index.js +44 -0
  314. package/es/components/popover/index.spec.d.ts +1 -0
  315. package/es/components/popover/index.spec.js +195 -0
  316. package/es/components/popover/styles.d.ts +1 -0
  317. package/es/components/popover/styles.js +22 -0
  318. package/es/components/portal.d.ts +6 -2
  319. package/es/components/portal.js +4 -3
  320. package/es/components/position.js +2 -1
  321. package/es/components/progress/index.js +1 -1
  322. package/es/components/progress/index.vdt.js +46 -8
  323. package/es/components/progress/styles.js +19 -13
  324. package/es/components/rate/styles.js +1 -1
  325. package/es/components/select/base.d.ts +7 -3
  326. package/es/components/select/base.js +9 -3
  327. package/es/components/select/base.vdt.js +75 -47
  328. package/es/components/select/index.spec.js +25 -13
  329. package/es/components/select/menu.vdt.js +6 -6
  330. package/es/components/select/option.vdt.js +2 -1
  331. package/es/components/select/styles.js +11 -5
  332. package/es/components/select/useDraggble.d.ts +2 -0
  333. package/es/components/select/useDraggble.js +11 -0
  334. package/es/components/slider/index.spec.js +48 -9
  335. package/es/components/slider/index.vdt.js +23 -12
  336. package/es/components/slider/styles.js +23 -14
  337. package/es/components/slider/useValue.d.ts +3 -1
  338. package/es/components/slider/useValue.js +12 -0
  339. package/es/components/spinner/index.d.ts +0 -1
  340. package/es/components/spinner/index.js +1 -19
  341. package/es/components/spinner/index.vdt.js +13 -8
  342. package/es/components/spinner/styles.js +2 -2
  343. package/es/components/spinner/useChange.d.ts +1 -1
  344. package/es/components/spinner/useChange.js +2 -2
  345. package/es/components/spinner/useValue.d.ts +1 -0
  346. package/es/components/spinner/useValue.js +16 -1
  347. package/es/components/split/index.vdt.js +32 -20
  348. package/es/components/split/memo.d.ts +9 -0
  349. package/es/components/split/memo.js +26 -0
  350. package/es/components/steps/index.d.ts +1 -0
  351. package/es/components/steps/index.js +2 -1
  352. package/es/components/steps/index.spec.js +1 -1
  353. package/es/components/steps/index.vdt.js +7 -4
  354. package/es/components/steps/step.vdt.js +2 -3
  355. package/es/components/steps/styles.d.ts +1 -0
  356. package/es/components/steps/styles.js +50 -17
  357. package/es/components/switch/index.spec.js +82 -65
  358. package/es/components/table/cell.js +1 -6
  359. package/es/components/table/cell.vdt.js +1 -1
  360. package/es/components/table/column.vdt.js +40 -24
  361. package/es/components/table/index.spec.js +162 -20
  362. package/es/components/table/row.d.ts +1 -1
  363. package/es/components/table/row.js +2 -1
  364. package/es/components/table/styles.js +16 -9
  365. package/es/components/table/table.d.ts +15 -0
  366. package/es/components/table/table.js +16 -7
  367. package/es/components/table/table.vdt.js +20 -6
  368. package/es/components/table/useChecked.d.ts +3 -2
  369. package/es/components/table/useChecked.js +23 -12
  370. package/es/components/table/useDisableRow.d.ts +2 -1
  371. package/es/components/table/useDisableRow.js +4 -4
  372. package/es/components/table/useDraggable.d.ts +3 -2
  373. package/es/components/table/useDraggable.js +11 -15
  374. package/es/components/table/useGroup.d.ts +9 -3
  375. package/es/components/table/useGroup.js +48 -37
  376. package/es/components/table/useMerge.d.ts +2 -1
  377. package/es/components/table/useMerge.js +5 -4
  378. package/es/components/table/usePagination.d.ts +8 -0
  379. package/es/components/table/usePagination.js +81 -0
  380. package/es/components/table/useStickyScrollbar.js +2 -2
  381. package/es/components/table/useTree.d.ts +2 -1
  382. package/es/components/table/useTree.js +3 -4
  383. package/es/components/table/useWidth.js +2 -2
  384. package/es/components/tabs/index.d.ts +1 -1
  385. package/es/components/tabs/index.js +1 -1
  386. package/es/components/tabs/index.spec.js +67 -0
  387. package/es/components/tabs/index.vdt.js +9 -4
  388. package/es/components/tabs/styles.js +32 -34
  389. package/es/components/tabs/useScroll.d.ts +1 -1
  390. package/es/components/tabs/useScroll.js +75 -48
  391. package/es/components/tag/base.d.ts +1 -0
  392. package/es/components/tag/base.js +1 -1
  393. package/es/components/tag/index.d.ts +1 -0
  394. package/es/components/tag/index.js +2 -1
  395. package/es/components/tag/index.spec.js +147 -4
  396. package/es/components/tag/styles.d.ts +67 -0
  397. package/es/components/tag/styles.js +33 -8
  398. package/es/components/tag/tags.d.ts +27 -0
  399. package/es/components/tag/tags.js +51 -0
  400. package/es/components/tag/tags.vdt.js +91 -0
  401. package/es/components/tag/useChildren.d.ts +2 -0
  402. package/es/components/tag/useChildren.js +39 -0
  403. package/es/components/tag/useDraggable.d.ts +3 -0
  404. package/es/components/tag/useDraggable.js +89 -0
  405. package/es/components/tag/useNowrap.d.ts +7 -0
  406. package/es/components/tag/useNowrap.js +115 -0
  407. package/es/components/timepicker/index.spec.js +1 -1
  408. package/es/components/tooltip/content.d.ts +3 -2
  409. package/es/components/tooltip/content.js +18 -1
  410. package/es/components/tooltip/content.vdt.js +22 -10
  411. package/es/components/tooltip/index.spec.js +147 -92
  412. package/es/components/tooltip/styles.d.ts +23 -0
  413. package/es/components/tooltip/styles.js +2 -2
  414. package/es/components/tooltip/tooltip.d.ts +1 -1
  415. package/es/components/tooltip/tooltip.js +11 -11
  416. package/es/components/transfer/index.vdt.js +14 -3
  417. package/es/components/types.d.ts +1 -0
  418. package/es/components/upload/index.spec.js +5 -6
  419. package/es/components/upload/index.vdt.js +7 -5
  420. package/es/components/utils.d.ts +2 -0
  421. package/es/components/utils.js +24 -3
  422. package/es/components/virtual.d.ts +8 -0
  423. package/es/components/virtual.js +126 -0
  424. package/es/hooks/useResizeObserver.d.ts +1 -1
  425. package/es/hooks/useResizeObserver.js +19 -6
  426. package/es/i18n/en-US.d.ts +4 -1
  427. package/es/i18n/en-US.js +6 -2
  428. package/es/index.d.ts +5 -3
  429. package/es/index.js +5 -3
  430. package/es/packages/kpc-react/__tests__/components/cascader.spec.d.ts +1 -0
  431. package/es/packages/kpc-react/__tests__/components/cascader.spec.js +79 -0
  432. package/es/packages/kpc-react/__tests__/components/drawer.spec.js +74 -6
  433. package/es/site/data/components/button/demos/basic/react.js +3 -1
  434. package/es/site/data/components/button/demos/disabled/react.js +5 -2
  435. package/es/site/data/components/button/demos/group/react.js +28 -2
  436. package/es/site/data/components/button/demos/icon/react.js +12 -6
  437. package/es/site/data/components/button/demos/loading/react.js +4 -4
  438. package/es/site/data/components/button/demos/size/react.js +4 -4
  439. package/es/site/data/components/copy/demos/basic/react.js +23 -0
  440. package/es/site/data/components/copy/demos/children/react.js +44 -0
  441. package/es/site/data/components/copy/index.d.ts +57 -0
  442. package/es/site/data/components/copy/index.js +42 -0
  443. package/es/site/data/components/datepicker/demos/basic/react.js +8 -0
  444. package/es/site/data/components/datepicker/demos/datetime/index.d.ts +1 -0
  445. package/es/site/data/components/datepicker/demos/datetime/index.js +1 -0
  446. package/es/site/data/components/dropdown/demos/basic/react.js +1 -1
  447. package/es/site/data/components/dropdown/demos/checkbox/react.js +1 -1
  448. package/es/site/data/components/dropdown/demos/disabled/react.js +2 -2
  449. package/es/site/data/components/dropdown/demos/nested/react.js +9 -9
  450. package/es/site/data/components/dropdown/demos/position/react.js +3 -3
  451. package/es/site/data/components/dropdown/demos/tooltip/react.js +2 -1
  452. package/es/site/data/components/dropdown/demos/trigger/react.js +2 -2
  453. package/es/site/data/components/form/demos/basic/react.js +1 -1
  454. package/es/site/data/components/icon/demos/icons/index.d.ts +8 -4
  455. package/es/site/data/components/icon/demos/icons/index.js +35 -1
  456. package/es/site/data/components/icon/demos/icons/react.d.ts +9 -4
  457. package/es/site/data/components/icon/demos/icons/react.js +51 -9
  458. package/es/site/data/components/input/demos/autoRows/index.d.ts +9 -0
  459. package/es/site/data/components/input/demos/autoRows/index.js +24 -0
  460. package/es/site/data/components/input/demos/autoRows/react.d.ts +8 -0
  461. package/es/site/data/components/input/demos/autoRows/react.js +62 -0
  462. package/es/site/data/components/input/demos/blocks/react.js +7 -7
  463. package/es/site/data/components/input/demos/clearable/react.js +2 -2
  464. package/es/site/data/components/input/demos/flat/index.d.ts +5 -0
  465. package/es/site/data/components/input/demos/flat/index.js +17 -0
  466. package/es/site/data/components/input/demos/flat/react.d.ts +4 -0
  467. package/es/site/data/components/input/demos/flat/react.js +29 -0
  468. package/es/site/data/components/input/demos/password/index.d.ts +5 -0
  469. package/es/site/data/components/input/demos/password/index.js +17 -0
  470. package/es/site/data/components/input/demos/password/react.d.ts +5 -0
  471. package/es/site/data/components/input/demos/password/react.js +41 -0
  472. package/es/site/data/components/input/demos/showCount/index.d.ts +5 -0
  473. package/es/site/data/components/input/demos/showCount/index.js +17 -0
  474. package/es/site/data/components/input/demos/showCount/react.d.ts +4 -0
  475. package/es/site/data/components/input/demos/showCount/react.js +33 -0
  476. package/es/site/data/components/input/demos/size/react.js +8 -8
  477. package/es/site/data/components/input/demos/textarea/react.js +4 -2
  478. package/es/site/data/components/menu/demos/collapse/index.js +1 -1
  479. package/es/site/data/components/menu/demos/collapse/react.js +1 -1
  480. package/es/site/data/components/pagination/demos/flat/index.d.ts +6 -0
  481. package/es/site/data/components/pagination/demos/flat/index.js +18 -0
  482. package/es/site/data/components/pagination/demos/flat/react.d.ts +5 -0
  483. package/es/site/data/components/pagination/demos/{noBoard → flat}/react.js +12 -8
  484. package/es/site/data/components/popover/demos/basic/react.d.ts +8 -0
  485. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/react.js +14 -9
  486. package/es/site/data/components/popover/demos/button/index.d.ts +8 -0
  487. package/es/site/data/components/popover/demos/button/index.js +42 -0
  488. package/es/site/data/components/popover/demos/button/react.d.ts +8 -0
  489. package/es/site/data/components/popover/demos/button/react.js +73 -0
  490. package/es/site/data/components/popover/demos/content/index.d.ts +7 -0
  491. package/es/site/data/components/popover/demos/content/index.js +28 -0
  492. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/content}/react.d.ts +0 -1
  493. package/es/site/data/components/popover/demos/content/react.js +43 -0
  494. package/es/site/data/components/popover/demos/text/index.d.ts +7 -0
  495. package/es/site/data/components/popover/demos/text/index.js +28 -0
  496. package/es/site/data/components/popover/demos/text/react.d.ts +6 -0
  497. package/es/site/data/components/popover/demos/text/react.js +36 -0
  498. package/es/site/data/components/popover/demos/type/index.d.ts +11 -0
  499. package/es/site/data/components/popover/demos/type/index.js +34 -0
  500. package/es/site/data/components/popover/demos/type/react.d.ts +11 -0
  501. package/es/site/data/components/popover/demos/type/react.js +58 -0
  502. package/es/site/data/components/popover/index.d.ts +57 -0
  503. package/es/site/data/components/popover/index.js +42 -0
  504. package/es/site/data/components/progress/demos/children/react.js +4 -4
  505. package/es/site/data/components/progress/demos/circleSize/index.d.ts +14 -0
  506. package/es/site/data/components/progress/demos/circleSize/index.js +43 -0
  507. package/es/site/data/components/progress/demos/circleSize/react.d.ts +14 -0
  508. package/es/site/data/components/progress/demos/circleSize/react.js +98 -0
  509. package/es/site/data/components/progress/demos/customColor/react.js +4 -4
  510. package/es/site/data/components/select/demos/basic/react.js +19 -7
  511. package/es/site/data/components/select/demos/creatable/react.js +2 -1
  512. package/es/site/data/components/select/demos/customMenu/react.js +5 -5
  513. package/es/site/data/components/select/demos/draggable/index.d.ts +10 -0
  514. package/es/site/data/components/select/demos/draggable/index.js +24 -0
  515. package/es/site/data/components/select/demos/draggable/react.d.ts +10 -0
  516. package/es/site/data/components/select/demos/draggable/react.js +85 -0
  517. package/es/site/data/components/select/demos/flat/index.d.ts +5 -0
  518. package/es/site/data/components/select/demos/flat/index.js +17 -0
  519. package/es/site/data/components/select/demos/flat/react.d.ts +4 -0
  520. package/es/site/data/components/select/demos/flat/react.js +73 -0
  521. package/es/site/data/components/select/demos/inline/index.d.ts +5 -0
  522. package/es/site/data/components/select/demos/inline/index.js +17 -0
  523. package/es/site/data/components/select/demos/inline/react.d.ts +4 -0
  524. package/es/site/data/components/select/demos/nowrap/index.d.ts +5 -0
  525. package/es/site/data/components/select/demos/nowrap/index.js +17 -0
  526. package/es/site/data/components/select/demos/nowrap/react.d.ts +4 -0
  527. package/es/site/data/components/select/demos/nowrap/react.js +41 -0
  528. package/es/site/data/components/select/demos/size/index.d.ts +1 -0
  529. package/es/site/data/components/select/demos/size/index.js +2 -1
  530. package/es/site/data/components/select/demos/size/react.d.ts +1 -0
  531. package/es/site/data/components/select/demos/size/react.js +93 -1
  532. package/es/site/data/components/steps/demos/vertical/index.d.ts +14 -0
  533. package/es/site/data/components/steps/demos/vertical/index.js +40 -0
  534. package/es/site/data/components/steps/demos/vertical/react.d.ts +14 -0
  535. package/es/site/data/components/steps/demos/vertical/react.js +124 -0
  536. package/es/site/data/components/switch/demos/onOff/react.js +1 -3
  537. package/es/site/data/components/table/demos/hideHeader/index.d.ts +12 -0
  538. package/es/site/data/components/table/demos/hideHeader/index.js +30 -0
  539. package/es/site/data/components/table/demos/hideHeader/react.d.ts +11 -0
  540. package/es/site/data/components/table/demos/hideHeader/react.js +60 -0
  541. package/es/site/data/components/table/demos/pagination/index.d.ts +12 -0
  542. package/es/site/data/components/table/demos/pagination/index.js +35 -0
  543. package/es/site/data/components/table/demos/pagination/react.d.ts +16 -0
  544. package/es/site/data/components/table/demos/pagination/react.js +65 -0
  545. package/es/site/data/components/table/demos/title/react.js +4 -4
  546. package/es/site/data/components/tabs/demos/card/react.js +1 -15
  547. package/es/site/data/components/tabs/demos/closable/index.js +1 -1
  548. package/es/site/data/components/tabs/demos/closable/react.js +9 -3
  549. package/es/site/data/components/tabs/demos/scroll/index.d.ts +18 -0
  550. package/es/site/data/components/tabs/demos/scroll/index.js +87 -0
  551. package/es/site/data/components/tabs/demos/scroll/react.d.ts +18 -0
  552. package/es/site/data/components/tabs/demos/scroll/react.js +166 -0
  553. package/es/site/data/components/tabs/demos/vertical/react.js +1 -16
  554. package/es/site/data/components/tag/demos/draggable/index.d.ts +11 -0
  555. package/es/site/data/components/tag/demos/draggable/index.js +24 -0
  556. package/es/site/data/components/tag/demos/draggable/react.d.ts +11 -0
  557. package/es/site/data/components/tag/demos/draggable/react.js +62 -0
  558. package/es/site/data/components/tag/demos/tags/index.d.ts +12 -0
  559. package/es/site/data/components/tag/demos/tags/index.js +39 -0
  560. package/es/site/data/components/tag/demos/tags/react.d.ts +12 -0
  561. package/es/site/data/components/tag/demos/tags/react.js +83 -0
  562. package/es/site/src/pages/document/index.js +2 -3
  563. package/es/site/src/pages/styles.js +1 -1
  564. package/es/site/src/router/index.js +1 -1
  565. package/es/styles/fonts/iconfont.eot +0 -0
  566. package/es/styles/fonts/iconfont.js +2 -2
  567. package/es/styles/fonts/iconfont.svg +35 -35
  568. package/es/styles/fonts/iconfont.ttf +0 -0
  569. package/es/styles/fonts/iconfont.woff +0 -0
  570. package/es/styles/fonts/ionicons.js +3 -3
  571. package/es/styles/global.js +1 -1
  572. package/hooks/useResizeObserver.ts +19 -7
  573. package/i18n/en-US.ts +6 -1
  574. package/index.ts +5 -3
  575. package/package.json +9 -5
  576. package/styles/fonts/demo.css +277 -108
  577. package/styles/fonts/demo_index.html +2169 -0
  578. package/styles/fonts/iconfont.css +52 -50
  579. package/styles/fonts/iconfont.eot +0 -0
  580. package/styles/fonts/iconfont.js +1 -0
  581. package/styles/fonts/iconfont.json +611 -0
  582. package/styles/fonts/iconfont.svg +35 -35
  583. package/styles/fonts/iconfont.ts +124 -125
  584. package/styles/fonts/iconfont.ttf +0 -0
  585. package/styles/fonts/iconfont.woff +0 -0
  586. package/styles/fonts/iconfont.woff2 +0 -0
  587. package/styles/fonts/ionicons.ts +2 -3
  588. package/styles/global.ts +7 -7
  589. package/components/pagination/demos/noBoard.md +0 -22
  590. package/components/table/useResizeObserver.ts +0 -22
  591. package/components/tooltip/demos/confirm.md +0 -41
  592. package/es/components/table/useResizeObserver.d.ts +0 -2
  593. package/es/components/table/useResizeObserver.js +0 -20
  594. /package/components/select/demos/{noBorder.md → inline.md} +0 -0
  595. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.d.ts +0 -0
  596. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.js +0 -0
  597. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/react.d.ts +0 -0
  598. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.d.ts +0 -0
  599. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.js +0 -0
  600. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/react.d.ts +0 -0
  601. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.d.ts +0 -0
  602. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.js +0 -0
  603. /package/es/site/data/components/select/demos/{noBorder → inline}/react.js +0 -0
@@ -0,0 +1,117 @@
1
+ import {
2
+ NonNullableRefObject,
3
+ VNodeComponentClass,
4
+ VNode,
5
+ useInstance,
6
+ createRef,
7
+ findDomFromVNode,
8
+ onBeforeMount,
9
+ nextTick,
10
+ } from 'intact';
11
+ import type { Tags } from './tags';
12
+ import { useState, State, watchState } from '../../hooks/useState';
13
+ import { tag as tagStyles } from './styles';
14
+ import { getLeft, getRight } from '../../styles/utils';
15
+ import { useReceive } from '../../hooks/useReceive';
16
+ import { useResizeObserver } from '../../hooks/useResizeObserver';
17
+
18
+ export function useNowrap(originVNodes: State<VNode[]>) {
19
+ const instance = useInstance() as Tags;
20
+ const containerRef = createRef<HTMLDivElement>();
21
+ const children = useState<VNode[]>([]);
22
+ const hiddenChildren = useState<VNode[]>([]);
23
+ const estimateMoreElementWidth = useEstimateMoreElementWidth();
24
+ const offsetMap = useChildrenOffset(originVNodes);
25
+
26
+ watchState(originVNodes, (v) => {
27
+ children.set(v);
28
+ nextTick(refresh);
29
+ });
30
+
31
+ // instance.watch('children', refresh, { presented: true })
32
+ useResizeObserver(containerRef, refresh);
33
+
34
+ function refresh() {
35
+ if (!instance.get('nowrap') || instance.$unmounted) return;
36
+
37
+ const container = containerRef.value!;
38
+ const containerWidth = container.offsetWidth;
39
+ const vNodes: VNode[] = [];
40
+ const _originVNodes = originVNodes.value;
41
+ const length = _originVNodes.length;
42
+
43
+ if (_originVNodes.length > 1) {
44
+ _originVNodes.forEach((vNode, index) => {
45
+ const offset = offsetMap.get(vNode)!;
46
+ // estimate the "more" element's with for performance
47
+ const width = estimateMoreElementWidth(length - index - 1);
48
+
49
+ if (offset + width <= containerWidth) {
50
+ vNodes.push(vNode);
51
+ }
52
+ });
53
+ } else {
54
+ vNodes.push(..._originVNodes);
55
+ }
56
+
57
+ /**
58
+ * refresh function will be called in ResizeObserver,
59
+ * state changed will cause container's width to change,
60
+ * and a error will throw (ResizeObserver loop completed with undelivered notifications)
61
+ * so we call setState in requestAnimationFrame
62
+ */
63
+ requestAnimationFrame(() => {
64
+ hiddenChildren.set(_originVNodes.slice(vNodes.length))
65
+ children.set(vNodes);
66
+ });
67
+ }
68
+
69
+ return { containerRef, children, hiddenChildren }
70
+ }
71
+
72
+ function useChildrenOffset(vNodes: State<VNode[]>) {
73
+ const instance = useInstance() as Tags;
74
+ const map: Map<VNode, number> = new Map();
75
+
76
+ // instance.watch('children', updateMap, { presented: true })
77
+ watchState(vNodes, () => nextTick(updateMap));
78
+
79
+ function updateMap() {
80
+ map.clear();
81
+
82
+ if (!instance.get('nowrap')) return;
83
+
84
+ vNodes.value.forEach((vNode) => {
85
+ const dom = findDomFromVNode(vNode, true);
86
+ if (!dom || dom.nodeType !== 1) return;
87
+
88
+ const { offsetLeft, offsetWidth } = dom as HTMLElement;
89
+
90
+ map.set(vNode, offsetLeft + offsetWidth);
91
+ });
92
+ }
93
+
94
+ return map;
95
+ }
96
+
97
+ function useEstimateMoreElementWidth() {
98
+ const instance = useInstance() as Tags;
99
+ const widthPerChar = 7.2;
100
+ let cacheWidth = 0;
101
+
102
+ onBeforeMount(cache);
103
+ useReceive<Tags>(['size', 'border'], cache, true);
104
+
105
+ function cache() {
106
+ const { size, border } = instance.get();
107
+
108
+ cacheWidth = parseInt(tagStyles.tags.gap) + widthPerChar /* the "+" mark */;
109
+ if (border !== 'none') {
110
+ cacheWidth += 2;
111
+ }
112
+ const padding = size === 'default' ? tagStyles.padding : tagStyles[size!].padding;
113
+ cacheWidth += parseInt(getLeft(padding)) + parseInt(getRight(padding));
114
+ }
115
+
116
+ return (count: number) => Math.round(count.toString().length * widthPerChar + cacheWidth);
117
+ }
@@ -29,12 +29,25 @@ sidebar: doc
29
29
  | min | 最小可选时间 | `Value` | `undefind` |
30
30
  | disabledDate | 该属性值是一个函数,用于定义那些日期被禁止选择,函数参数为日期字符串,返回`true`则表示禁用该日期 | `(v: Dayjs) => boolean` | `undefined` |
31
31
  | step | 固定时间点的步长 | `string` | `undefined` |
32
+ | position | 菜单弹出的位置,默认与触发器左侧对齐向下偏移`8px`的地方 | `Position` &#124; `"left"` &#124; `"bottom"` &#124; `"right"` &#124; `"top"` | `{my: 'left top+8', 'left bottom'}` |
33
+ | flat | 是否展示扁平样式 | `boolean` | `false` |
34
+ | draggable | 多选值是否支持拖动排序 | `boolean` | `false` |
32
35
 
33
36
  ```ts
34
37
  import {Dayjs} from 'dayjs';
35
38
  import {VNode} from 'intact';
36
39
 
37
40
  export type Value = string | Date | number | Dayjs;
41
+
42
+ type Position = {
43
+ my?: string | [string, string]
44
+ at?: string | [string, string]
45
+ collision?: Collision | [Collision, Collision]
46
+ collisionDirection?: ['left'] | ['top'] | ['left', 'top']
47
+ }
48
+
49
+ type Collision = 'fit' | 'flip' | 'flipfit' | 'none'
50
+
38
51
  export type Container = string | ((parentDom: Element, anchor: Node | null) => Element)
39
52
  ```
40
53
 
@@ -59,7 +59,7 @@ describe('Timepicker', () => {
59
59
  await wait();
60
60
  expect(instance.get('timeArray')).to.eql(['01:00:00', '02:00:00']);
61
61
  // remove one value
62
- const [, close] = picker2.querySelectorAll<HTMLElement>('.k-select-close');
62
+ const [, close] = picker2.querySelectorAll<HTMLElement>('.k-tag-close');
63
63
  close.click();
64
64
  await wait();
65
65
  expect(instance.get('timeArray')).to.eql(['01:00:00']);
@@ -9,6 +9,7 @@ import template from './content.vdt';
9
9
  import {bind} from '../utils';
10
10
  import {Tooltip} from './tooltip';
11
11
  import {useArrow} from './useArrow';
12
+ import { tooltip as tooltipTheme } from './styles';
12
13
 
13
14
  export interface TooltipContentProps extends DropdownMenuProps { }
14
15
  export interface TooltipContentEvents extends DropdownMenuEvents { }
@@ -16,14 +17,14 @@ export interface TooltipContentBlocks extends DropdownMenuBlocks {
16
17
  buttons: null
17
18
  }
18
19
 
19
- export class TooltipContent extends DropdownMenu<
20
- TooltipContentProps,
21
- TooltipContentEvents,
22
- TooltipContentBlocks
23
- > {
20
+ export class TooltipContent<
21
+ T extends TooltipContentProps = TooltipContentProps,
22
+ E extends TooltipContentEvents = TooltipContentEvents,
23
+ B extends TooltipContentBlocks = TooltipContentBlocks,
24
+ > extends DropdownMenu<T, E, B> {
24
25
  static template = template;
25
26
 
26
- private isEmptyChildren: boolean = true;
27
+ protected isEmptyChildren: boolean = true;
27
28
  private arrow = useArrow();
28
29
 
29
30
  init() {
@@ -35,10 +36,23 @@ export class TooltipContent extends DropdownMenu<
35
36
  }
36
37
 
37
38
  @bind
38
- private onEnter() {
39
+ private onEnter(elem: HTMLElement) {
40
+ // fix the width, https://github.com/ksc-fe/kpc/issues/873
41
+ const maxWidth = parseInt(tooltipTheme.maxWidth);
42
+ const width = elem.offsetWidth;
43
+ if (width === maxWidth) {
44
+ elem.style.width = `${width}px`;
45
+ }
39
46
  this.dropdown!.position();
40
47
  }
41
48
 
49
+ @bind
50
+ private onAfterLeave(elem: HTMLElement) {
51
+ // remove the position after leave, https://github.com/ksc-fe/kpc/issues/873
52
+ const style = elem.style;
53
+ style.left = style.top = style.width = '';
54
+ }
55
+
42
56
  @bind
43
57
  protected onMouseEnter(e: MouseEvent) {
44
58
  const dropdown = this.dropdown as Tooltip;
@@ -18,15 +18,27 @@ const classNameObj = {
18
18
  [`k-${size}`]: size !== 'default',
19
19
  [className]: className,
20
20
  [makeStyles()]: true,
21
+ [$props.className]: $props.className,
21
22
  };
22
23
 
23
24
  <t:super
24
25
  value={!!value && !this.isEmptyChildren}
25
- transition={{name: 'k-fade', onEnter: this.onEnter}}
26
+ transition={{
27
+ name: 'k-fade',
28
+ onEnter: this.onEnter,
29
+ onAfterLeave: this.onAfterLeave,
30
+ onLeaveCancelled: this.onAfterLeave,
31
+ }}
26
32
  class={classNameObj}
27
33
  >
28
34
  <b:children>
29
- {children}
35
+ <b:body>{children}</b:body>
36
+ <div class="k-tooltip-footer" v-if={confirm} key="tooltip-footer">
37
+ <b:footer>
38
+ <Button ev-click={this.cancel} size="small">{cancelText}</Button>
39
+ <Button type="primary" ev-click={this.ok} size="small">{okText}</Button>
40
+ </b:footer>
41
+ </div>
30
42
  <i v-if={showArrow}
31
43
  key="tooltip-arrow"
32
44
  class={{
@@ -35,11 +47,5 @@ const classNameObj = {
35
47
  }}
36
48
  ref={arrowRef}
37
49
  ></i>
38
- <div class="k-tooltip-buttons" v-if={confirm} key="tooltip-buttons">
39
- <b:buttons>
40
- <Button ev-click={this.cancel} size="small">{cancelText}</Button>
41
- <Button type="primary" ev-click={this.ok} size="small">{okText}</Button>
42
- </b:buttons>
43
- </div>
44
50
  </b:children>
45
51
  </t:super>
@@ -4,7 +4,7 @@ order: 2
4
4
  ---
5
5
 
6
6
  使用`trigger`指定触发方式,`click`点击触发,`hover`悬浮触发,`foucs`聚焦触发,默认为`hover`,在悬浮触发情况下,
7
- 鼠标离开触发器,弹层就会消失,如果我们需要鼠标能离开触发器并悬浮在弹层上,需要添加`canHover`属性
7
+ 鼠标离开触发器,弹层就会消失,如果我们需要鼠标能离开触发器并悬浮在弹层上,需要添加`hoverable`属性
8
8
 
9
9
  ```vdt
10
10
  import {Tooltip, ButtonGroup, Button, Input} from 'kpc';
@@ -10,26 +10,23 @@ sidebar: doc
10
10
  | 属性 | 说明 | 类型 | 默认值 |
11
11
  | --- | --- | --- | --- |
12
12
  | trigger | 触发方式,`hover`为悬停触发,`click`为点击触发 | `"hover"` &#124; `"click"` &#124; `"focus"` | `"hover"` |
13
- | disabled | 是否禁用整个菜单 | `boolean` | `false` |
13
+ | disabled | 是否禁用提示 | `boolean` | `false` |
14
14
  | value | 是否将弹出菜单展示出来,可通过`v-model`双向绑定 | `boolean` | `false` |
15
15
  | position | 菜单弹出的位置,默认在触发器正上方向上偏移`10px`的地方 | `Position` &#124; `"left"` &#124; `"bottom"` &#124; `"right"` &#124; `"top"` | `{my: 'center bottom-10', at: 'center top', collision: 'flipfit'}` |
16
16
  | of | 弹出菜单的位置是相对当前触发元素,还是触发元素所在的菜单元素,这在嵌套菜单中可能会用到,可以使所有子菜单保持统一的对齐方式,例如:级联选择(Cascader)组件 | `"self"` &#124; `"parent"` &#124; `Event` | `"self"` |
17
- | container | 指定弹出菜单追加的位置,默认:`Dialog`类型的组件会追加到`Dialog`中,其他会追加到`body`中。你可以传入函数返回一个DOM用来作为插入的容器,或者传入字符串用来给`querySelector`进行查询 | `Container` | `undefined` |
17
+ | container | 指定弹出菜单追加的位置,默认:`Dialog`类型的组件会追加到`Dialog`中,其他会追加到`body`中。你可以传入函数返回一个 DOM 用来作为插入的容器,或者传入字符串用来给`querySelector`进行查询 | `Container` | `undefined` |
18
18
  | showArrow | 弹层是否展示箭头 | `boolean` | `true` |
19
19
  | theme | 指定主题 | `"dark"` &#124; `"light"` | `"dark"` |
20
20
  | hoverable | 对于悬浮触发`hover`的方式,提示内容弹层是否在鼠标悬浮时仍然展示,默认鼠标离开触发元素弹层就会关闭 | `boolean` | `false` |
21
21
  | always | 是否一直保持当前展示/隐藏状态 | `boolean` | `false` |
22
22
  | size | 弹层尺寸 | `"default"` &#124; `"small"` | `"default"` |
23
- | confirm | 带“确认”和“取消”按钮的确认弹层 | `boolean` | `false` |
24
- | onText | `confirm`模式下的“确认”按钮文案 | `string` | `"确认"` |
25
- | cancelText | `confirm`模式下的“取消”按钮文案 | `string` | `"取消"` |
26
23
  | content | 指定提示的内容,当然你也可以用`content`扩展点指定 | `string` &#124; `VNode` | `undefined` |
27
24
 
28
25
  ```ts
29
26
  type Position = {
30
27
  my?: string | [string, string]
31
28
  at?: string | [string, string]
32
- collision?: Collision | [Collision, Collision]
29
+ collision?: Collision | [Collision, Collision]
33
30
  collisionDirection?: ['left'] | ['top'] | ['left', 'top']
34
31
  }
35
32
 
@@ -3,11 +3,11 @@ import BasicDemo from '~/components/tooltip/demos/basic';
3
3
  import PositionDemo from '~/components/tooltip/demos/position';
4
4
  import TriggerDemo from '~/components/tooltip/demos/trigger';
5
5
  import ContentDemo from '~/components/tooltip/demos/content';
6
- import ConfirmDemo from '~/components/tooltip/demos/confirm';
7
6
  import AlwaysDemo from '~/components/tooltip/demos/always';
8
7
  import {Tooltip} from './';
9
- import {Radio} from '../radio';
8
+ import {Dialog} from '../dialog';
10
9
  import {mount, unmount, dispatchEvent, getElement, wait} from '../../test/utils';
10
+ import { tooltip as tooltipTheme } from './styles';
11
11
 
12
12
  describe('Tooltip', () => {
13
13
  afterEach((done) => {
@@ -57,7 +57,7 @@ describe('Tooltip', () => {
57
57
  expect(a >= b - 1 && a <= b + 1).to.be.true;
58
58
  };
59
59
 
60
-
60
+
61
61
  instance.set('position', 'left');
62
62
  await wait();
63
63
  contains('k-right');
@@ -136,7 +136,7 @@ describe('Tooltip', () => {
136
136
  await wait(500);
137
137
  const content1 = getElement('.k-tooltip-content');
138
138
 
139
- // should not hide when move mouse from button to tooltip content
139
+ // should not hide when move mouse from button to tooltip content
140
140
  expect(content1).eql(content);
141
141
 
142
142
  dispatchEvent(canHover, 'mouseleave');
@@ -155,35 +155,6 @@ describe('Tooltip', () => {
155
155
  expect(content.querySelector<HTMLElement>('.k-slider')!.outerHTML).to.matchSnapshot();
156
156
  });
157
157
 
158
- it('should handle confirm tooltip corectly', async () => {
159
- const [instance, element] = mount(ConfirmDemo);
160
-
161
- const cancelCb = sinon.spy();
162
- const okCb = sinon.spy();
163
-
164
- instance.refs.__test.on('cancel', cancelCb);
165
- instance.refs.__test.on('ok', okCb);
166
-
167
- dispatchEvent(element.children[0], 'click');
168
- await wait();
169
- let content = getElement('.k-tooltip-content')!;
170
- expect((content.querySelector('.k-tooltip-buttons') as HTMLElement).outerHTML).to.matchSnapshot();
171
-
172
- (content.querySelector('.k-btn') as HTMLElement).click();
173
- await wait(500);
174
- expect(content.style.display).eql('none');
175
-
176
- dispatchEvent(element.firstElementChild!, 'click');
177
- await wait();
178
- content = getElement('.k-tooltip-content')!;
179
- const [, btn] = Array.from<HTMLElement>(content.querySelectorAll('.k-btn'));
180
- btn.click();
181
-
182
- await wait(500);
183
- expect(content.style.display).eql('none');
184
- expect(cancelCb.callCount).eql(1);
185
- expect(okCb.callCount).eql(1);
186
- });
187
158
 
188
159
  it('should always show tooltip', async () => {
189
160
  const [, element] = mount(AlwaysDemo);
@@ -229,7 +200,7 @@ describe('Tooltip', () => {
229
200
 
230
201
  // const app = new Vue({
231
202
  // render: h => h(
232
- // 'Test',
203
+ // 'Test',
233
204
  // {ref: 'test'}),
234
205
  // components: {Test},
235
206
  // }).$mount(container);
@@ -264,7 +235,7 @@ describe('Tooltip', () => {
264
235
  // </div>
265
236
  // `,
266
237
  // components: {
267
- // Tooltip: Tooltip as any,
238
+ // Tooltip: Tooltip as any,
268
239
  // Radio: Radio as any,
269
240
  // },
270
241
  // data: {
@@ -330,16 +301,19 @@ describe('Tooltip', () => {
330
301
  static defaults = () => ({show: false});
331
302
  Tooltip = Tooltip;
332
303
  mounted() {
333
- const element = findDomFromVNode(this.$lastInput!, true) as Element;
334
- const windowHeight = window.innerHeight || document.documentElement.clientHeight;
335
- (element.parentNode as HTMLElement).style.height = `${windowHeight * 2}px`;
304
+ const element = findDomFromVNode(this.$lastInput!, true) as HTMLElement;
305
+ const style = element.style;
306
+ style.position = 'fixed';
307
+ style.top = '-200px';
308
+ // const windowHeight = window.innerHeight || document.documentElement.clientHeight;
309
+ // (element.parentNode as HTMLElement).style.height = `${windowHeight * 2}px`;
336
310
  }
337
311
  }
338
312
 
339
313
  const [i] = mount(Demo);
340
314
 
341
- await wait(500);
342
- window.scrollTo(0, 10000);
315
+ // await wait(500);
316
+ // window.scrollTo(0, 10000);
343
317
 
344
318
  i.set('show', true);
345
319
 
@@ -349,4 +323,59 @@ describe('Tooltip', () => {
349
323
  console.log(JSON.stringify(content.getBoundingClientRect()));
350
324
  expect(content.getBoundingClientRect().top < 0).to.be.true;
351
325
  });
326
+
327
+ it('should add className', async () => {
328
+ class Demo extends Component {
329
+ static template = `
330
+ const Tooltip = this.Tooltip;
331
+ <div>
332
+ <Tooltip content="hello" class="a">
333
+ <div ref="test" class="b">test</div>
334
+ </Tooltip>
335
+ </div>
336
+ `;
337
+ Tooltip = Tooltip;
338
+ }
339
+
340
+ const [instance, element] = mount(Demo);
341
+ const trigger = instance.refs.test;
342
+ expect(trigger.className).to.eql('b a');
343
+
344
+ dispatchEvent(trigger, 'mouseenter');
345
+ await wait();
346
+ const dropdown = getElement('.k-tooltip-content')!;
347
+ expect(dropdown.classList.contains('a')).to.be.true;
348
+ });
349
+
350
+ it('should fix the width in small container', async () => {
351
+ class Demo extends Component {
352
+ static template = `
353
+ const {Tooltip, Dialog} = this;
354
+ <div style="text-align: right; position: relative; width: 350px;">
355
+ <Tooltip content="这是一段很长的描述文字,这是一段很长的描述文字,这是一段很长的描述文字" container={dom => dom}>
356
+ <span class="trigger">test</span>
357
+ </Tooltip>
358
+ </div>
359
+ `
360
+ private Tooltip = Tooltip;
361
+ private Dialog = Dialog;
362
+ }
363
+
364
+ const [instance, element] = mount(Demo);
365
+ const trigger = element.querySelector<HTMLDivElement>('.trigger')!;
366
+ const expecedWidth = parseInt(tooltipTheme.maxWidth);
367
+
368
+ dispatchEvent(trigger, 'mouseenter');
369
+ await wait();
370
+ const content = getElement('.k-tooltip-content')!;
371
+ const width = content.offsetWidth;
372
+ expect(width).to.eql(expecedWidth);
373
+
374
+ dispatchEvent(trigger, 'mouseleave');
375
+ await wait();
376
+ dispatchEvent(trigger, 'mouseenter');
377
+ await wait();
378
+ const newWidth = content.offsetWidth;
379
+ expect(newWidth).to.eql(width);
380
+ });
352
381
  });
@@ -32,7 +32,7 @@ const defaults = {
32
32
  smallPadding: '4px',
33
33
  };
34
34
 
35
- let tooltip: typeof defaults;
35
+ export let tooltip: typeof defaults;
36
36
  setDefault(() => {
37
37
  tooltip = deepDefaults(theme, {tooltip: defaults}).tooltip;
38
38
  });
@@ -161,9 +161,9 @@ export default function makeStyles() {
161
161
  })}
162
162
 
163
163
  // confirm
164
- .k-tooltip-buttons {
164
+ .k-tooltip-footer {
165
165
  padding-top: ${tooltip.confirm.gaps};
166
- .k-btn:last-of-type {
166
+ .k-btn:not(:first-of-type) {
167
167
  margin-left: ${tooltip.confirm.gaps};
168
168
  }
169
169
  }
@@ -49,6 +49,7 @@ const defaults = (): Partial<TooltipProps> => ({
49
49
  showArrow: true,
50
50
  theme: 'dark',
51
51
  position: {my: 'center bottom-10', at: 'center top', collision: 'flipfit'},
52
+ collison: 'flipfit',
52
53
  hoverable: false,
53
54
  always: false,
54
55
  confirm: false,
@@ -72,7 +73,12 @@ export class Tooltip<
72
73
  static defaults = defaults;
73
74
  static events = events;
74
75
 
75
- protected alwaysPortal = true;
76
+ show(shouldFocus: boolean = false) {
77
+ if (this.get('disabled')) return;
78
+
79
+ clearTimeout(this.timer);
80
+ this.set('value', true);
81
+ }
76
82
 
77
83
  hide(immediately: boolean) {
78
84
  if (this.get('always')) return;
@@ -5,6 +5,7 @@ import {Input} from '../input';
5
5
  import {Checkbox} from '../checkbox';
6
6
  import {Button} from '../button';
7
7
  import {Tree} from '../tree';
8
+ import {Icon} from '../icon';
8
9
 
9
10
  const {
10
11
  data, className, keyName, labelName,
@@ -45,7 +46,7 @@ const Panel = (model) => {
45
46
  size="small"
46
47
  >
47
48
  <b:prefix>
48
- <i class="ion-ios-search"></i>
49
+ <Icon class="k-icon-search" size="small" />
49
50
  </b:prefix>
50
51
  </Input>
51
52
  </b:filter>
@@ -83,7 +84,7 @@ const Panel = (model) => {
83
84
  type="primary"
84
85
  size="large"
85
86
  >
86
- <i class="k-transfer-icon ion-ios-arrow-left" />
87
+ <Icon class="k-transfer-icon k-icon-left" />
87
88
  </Button>
88
89
  <Button circle icon
89
90
  disabled={!enableAdd()}
@@ -91,7 +92,7 @@ const Panel = (model) => {
91
92
  type="primary"
92
93
  size="large"
93
94
  >
94
- <i class="k-transfer-icon ion-ios-arrow-right" />
95
+ <Icon class="k-transfer-icon k-icon-right" />
95
96
  </Button>
96
97
  </div>
97
98
  {Panel('right')}
@@ -33,6 +33,9 @@ sidebar: doc
33
33
  | checkbox | 是否展示复选框 | `boolean` | `false` |
34
34
  | filter | 当支持筛选时,可以自定义筛选规则 | `(keywords: string, data: TreeDataItem<K>) => boolean` | `undefined` |
35
35
  | show | 是否展示菜单项 | `boolean` | `false` |
36
+ | position | 菜单弹出的位置,默认与触发器左侧对齐向下偏移`8px`的地方 | `Position` &#124; `"left"` &#124; `"bottom"` &#124; `"right"` &#124; `"top"` | `{my: 'left top+8', 'left bottom'}` |
37
+ | flat | 是否展示扁平样式 | `boolean` | `false` |
38
+ | draggable | 多选值是否支持拖动排序 | `boolean` | `false` |
36
39
 
37
40
  ```ts
38
41
  import {Key, Children} from 'intact';
@@ -47,6 +50,14 @@ export type TreeDataItem<K extends Key> = {
47
50
  children?: TreeDataItem<K>[]
48
51
  }
49
52
 
53
+ type Position = {
54
+ my?: string | [string, string]
55
+ at?: string | [string, string]
56
+ collision?: Collision | [Collision, Collision]
57
+ collisionDirection?: ['left'] | ['top'] | ['left', 'top']
58
+ }
59
+
60
+ type Collision = 'fit' | 'flip' | 'flipfit' | 'none'
50
61
  ```
51
62
 
52
63
  # 扩展点
@@ -8,6 +8,7 @@ export interface CommonInputHTMLAttributes {
8
8
  form?: string
9
9
  name?: string
10
10
  required?: boolean
11
+ maxlength?: string | number
11
12
  // value?: string
12
13
  }
13
14
 
@@ -69,7 +69,7 @@ describe('Upload', () => {
69
69
  remove.click();
70
70
  await wait();
71
71
  let dialog = getElement('.k-dialog')!;
72
- const [, cancel] = dialog.querySelectorAll('.k-dialog-footer .k-btn');
72
+ const cancel = dialog.querySelector('.k-dialog-footer .k-dialog-cancel');
73
73
  (cancel as HTMLDivElement).click();
74
74
  await wait(500);
75
75
  expect(element.innerHTML).to.matchSnapshot();
@@ -77,7 +77,7 @@ describe('Upload', () => {
77
77
  remove.click();
78
78
  await wait();
79
79
  dialog = getElement('.k-dialog')!;
80
- const [ok] = dialog.querySelectorAll('.k-dialog-footer .k-btn');
80
+ const ok = dialog.querySelector('.k-dialog-footer .k-dialog-ok');
81
81
  (ok as HTMLDivElement).click();
82
82
  await wait(500);
83
83
  expect(element.innerHTML).to.matchSnapshot();
@@ -132,7 +132,7 @@ describe('Upload', () => {
132
132
  await wait(1000);
133
133
  expect(element.innerHTML.replace(/blob:[^"]*/g, '')).to.matchSnapshot();
134
134
 
135
- const view = element.querySelector('.k-upload-overlap') as HTMLElement;
135
+ const view = element.querySelector('.k-upload-zoom') as HTMLElement;
136
136
  view.click();
137
137
  await wait();
138
138
  const dialog = getElement('.k-dialog')!;
@@ -157,7 +157,7 @@ describe('Upload', () => {
157
157
  this.timeout(0);
158
158
  const [instance, element] = mount(ManuallyDemo);
159
159
 
160
- const upload = instance.$lastInput!.children as Upload;
160
+ const upload = instance.refs.instance as Upload;
161
161
  upload.on('success', async () => {
162
162
  await wait(500);
163
163
  expect(element.innerHTML).to.matchSnapshot();
@@ -43,12 +43,12 @@ const handle = (
43
43
  {_$('点击上传')}
44
44
  </Button>
45
45
  <div class="k-upload-area" v-else>
46
- <Icon class="k-icon-add-big" />
46
+ <Icon class="k-icon-add-bold" />
47
47
  <div innerHTML={_$('将文件拖到此处,或<a>点击上传</a>')}></div>
48
48
  </div>
49
49
  </template>
50
50
  <div v-else class="k-upload-picture-card k-upload-add">
51
- <Icon class="k-icon-add-big" size="large" />
51
+ <Icon class="k-icon-add-bold" size="large" />
52
52
  <div>{_$('上传图片')}</div>
53
53
  </div>
54
54
  </b:content>
@@ -101,7 +101,7 @@ const {show, close, image, isShow} = this.showImage;
101
101
  <div class="k-upload-overlap k-upload-icons" v-else>
102
102
  <Icon class="k-upload-zoom ion-ios-eye-outline" size="large"
103
103
  hoverable
104
- ev-click={linkEvent($value, show)}
104
+ ev-click={() => show($value)}
105
105
  />
106
106
  {closeBtn($value, $key)}
107
107
  </div>
@@ -129,10 +129,10 @@ const {show, close, image, isShow} = this.showImage;
129
129
  <div class="k-upload-name c-ellipsis">
130
130
  <Icon class="k-upload-file-icon ion-document" />
131
131
  <span class="k-upload-file-name">{$value.name}</span>
132
- <Icon class="k-upload-status-icon ion-ios-checkmark-outline"
132
+ <Icon class="k-upload-status-icon k-icon-success-fill"
133
133
  v-if={$value.status === UploadFileStatus.Done}
134
134
  />
135
- <Icon class="k-upload-status-icon ion-ios-close-outline"
135
+ <Icon class="k-upload-status-icon k-icon-error-fill"
136
136
  v-else-if={$value.status === UploadFileStatus.Error}
137
137
  />
138
138
  </div>
@@ -225,8 +225,6 @@ export function makeStyles() {
225
225
  }
226
226
  .k-upload-add {
227
227
  border: ${upload.gallery.add.border};
228
- // font-size: ${upload.gallery.add.fontSize};
229
- // line-height: calc(${upload.gallery.height} - 2px);
230
228
  cursor: pointer;
231
229
  &:hover {
232
230
  border-color: ${upload.gallery.add.hoverBorderColor};