@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
@@ -19,12 +19,16 @@ const classNameObj = {
19
19
  <b:header />
20
20
  <b:body>
21
21
  <div class="k-dialog-tip-icon">
22
- <Icon class={iconClassName || {
23
- "ion-ios-checkmark": type === 'success',
24
- "ion-ios-information": type === 'warning',
25
- "ion-ios-close": type === 'error',
26
- "ion-ios-help": type === 'confirm',
27
- }} v-if={!hideIcon && !icon} />
22
+ <Icon
23
+ v-if={!hideIcon && !icon}
24
+ class={iconClassName || {
25
+ "k-icon-success-fill": type === 'success',
26
+ "k-icon-warning-fill": type === 'warning',
27
+ "k-icon-error-fill": type === 'error',
28
+ "k-icon-question-fill": type === 'confirm',
29
+ }}
30
+ color={type === 'error' ? 'danger' : type === 'confirm' ? 'primary' : type}
31
+ />
28
32
  {icon}
29
33
  </div>
30
34
  <div class="k-alert-dialog-wrapper">
@@ -87,7 +87,7 @@ describe('Dialog', () => {
87
87
  }
88
88
 
89
89
  const [instance] = mount(Demo);
90
- expect(getElement('.k-dialog-footer')!.innerText).to.eql('dialog footer 确定取消');
90
+ expect(getElement('.k-dialog-footer')!.innerText).to.eql('dialog footer 取消确定');
91
91
  });
92
92
 
93
93
  it('basic test', async () => {
@@ -114,7 +114,7 @@ describe('Dialog', () => {
114
114
  dispatchEvent(document, 'keydown', {keyCode: 27});
115
115
  expect(instance.get('show')).be.false;
116
116
  await wait(500);
117
- expect(document.body.getAttribute('style')).to.be.null;
117
+ expect(!!document.body.getAttribute('style')).to.be.false;
118
118
  });
119
119
 
120
120
  it('methods test', async () => {
@@ -156,7 +156,7 @@ describe('Dialog', () => {
156
156
  unmount();
157
157
  }
158
158
  await wait(500);
159
- expect(document.body.getAttribute('style')).to.be.null;
159
+ expect(!!document.body.getAttribute('style')).to.be.false;
160
160
  });
161
161
 
162
162
  it('async close', async () => {
@@ -193,7 +193,7 @@ describe('Dialog', () => {
193
193
  Dialog.success({content: 'test'}).then(cb);
194
194
  await wait();
195
195
  let dialog = expectDialog();
196
- dialog.querySelector<HTMLElement>('.k-btn')!.click();
196
+ dialog.querySelector<HTMLElement>('.k-dialog-ok')!.click();
197
197
  await wait();
198
198
  expect(cb.callCount).to.eql(1);
199
199
 
@@ -209,7 +209,7 @@ describe('Dialog', () => {
209
209
  Dialog.error({title: 'error', content: 'test'});
210
210
  await wait();
211
211
  dialog = expectDialog();
212
- dialog.querySelector<HTMLElement>('.k-btn')!.click();
212
+ dialog.querySelector<HTMLElement>('.k-dialog-ok')!.click();
213
213
 
214
214
  const cb2 = sinon.spy();
215
215
  Dialog.confirm({content: 'test', closable: false}).then(() => {}, cb2);
@@ -218,7 +218,7 @@ describe('Dialog', () => {
218
218
  overlay.click();
219
219
  await wait();
220
220
  expect(cb2.callCount).to.eql(0);
221
- getElement('.k-dialog')!.querySelector<HTMLElement>('.k-btn')!.click();
221
+ getElement('.k-dialog')!.querySelector<HTMLElement>('.k-dialog-ok')!.click();
222
222
  });
223
223
 
224
224
  it('should double check for closing dialog', async () => {
@@ -23,7 +23,7 @@ const defaults = {
23
23
  border: `1px solid #e2e5e8`,
24
24
  closeTop: '9px',
25
25
  closeRight: '-9px',
26
- closeIconFontSize: '16px',
26
+ closeIconFontSize: '22px',
27
27
  },
28
28
 
29
29
  // body
@@ -16,7 +16,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon} from 'kpc';
16
16
  <div>
17
17
  <Dropdown>
18
18
  <Button type="primary">
19
- hover <Icon class="ion-ios-arrow-down" />
19
+ hover <Icon class="k-icon-down" />
20
20
  </Button>
21
21
  <DropdownMenu>
22
22
  <DropdownItem>item 1</DropdownItem>
@@ -10,7 +10,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Checkbox, Button, Icon} from 'kpc'
10
10
 
11
11
  <div>
12
12
  <Dropdown>
13
- <Button>More<Icon class="ion-ios-arrow-right" /></Button>
13
+ <Button>More<Icon class="k-icon-right" /></Button>
14
14
  <DropdownMenu class="checkbox-menu">
15
15
  <DropdownItem hideOnSelect={false}>
16
16
  <Checkbox v-model="checked"
@@ -13,7 +13,7 @@ import {Icon} from 'kpc';
13
13
  <div>
14
14
  <Dropdown disabled>
15
15
  <Button type="primary">
16
- disabled <Icon class="ion-ios-arrow-down" />
16
+ disabled <Icon class="k-icon-down" />
17
17
  </Button>
18
18
  <DropdownMenu>
19
19
  <DropdownItem>item 1</DropdownItem>
@@ -24,7 +24,7 @@ import {Icon} from 'kpc';
24
24
 
25
25
  <Dropdown>
26
26
  <Button type="primary">
27
- disabled item <Icon class="ion-ios-arrow-down" />
27
+ disabled item <Icon class="k-icon-down" />
28
28
  </Button>
29
29
  <DropdownMenu>
30
30
  <DropdownItem>item 1</DropdownItem>
@@ -12,7 +12,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon} from 'kpc';
12
12
  <div>
13
13
  <Dropdown trigger="click">
14
14
  <Button type="primary">
15
- click <Icon class="ion-ios-arrow-down" />
15
+ click <Icon class="k-icon-down" />
16
16
  </Button>
17
17
  <DropdownMenu class="dropdown-demo">
18
18
  <DropdownItem>item 1</DropdownItem>
@@ -21,13 +21,13 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon} from 'kpc';
21
21
  <Dropdown position={{my: 'left top', at: 'right top'}} class="dropdown-demo">
22
22
  <DropdownItem>
23
23
  <span>hover</span>
24
- <i class="ion-ios-arrow-right"></i>
24
+ <Icon class="k-icon-right" />
25
25
  </DropdownItem>
26
26
  <DropdownMenu class="dropdown-demo">
27
27
  <Dropdown position={{my: 'left top', at: 'right top'}}>
28
28
  <DropdownItem>
29
29
  <span>hover</span>
30
- <i class="ion-ios-arrow-right"></i>
30
+ <Icon class="k-icon-right" />
31
31
  </DropdownItem>
32
32
  <DropdownMenu class="dropdown-demo">
33
33
  <DropdownItem>item 1</DropdownItem>
@@ -40,13 +40,13 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon} from 'kpc';
40
40
  <Dropdown trigger="click" position={{my: 'left top', at: 'right top'}}>
41
41
  <DropdownItem>
42
42
  <span>click</span>
43
- <i class="ion-ios-arrow-right"></i>
43
+ <Icon class="k-icon-right" />
44
44
  </DropdownItem>
45
45
  <DropdownMenu class="dropdown-demo">
46
46
  <Dropdown trigger="click" position={{my: 'left top', at: 'right top'}}>
47
47
  <DropdownItem>
48
48
  <span>click</span>
49
- <i class="ion-ios-arrow-right"></i>
49
+ <Icon class="k-icon-right" />
50
50
  </DropdownItem>
51
51
  <DropdownMenu class="dropdown-demo">
52
52
  <DropdownItem>item 1</DropdownItem>
@@ -64,7 +64,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon} from 'kpc';
64
64
 
65
65
  ```styl
66
66
  /.dropdown-demo.k-dropdown-menu
67
- .ion-ios-arrow-right
67
+ .k-icon
68
68
  float right
69
69
  height 32px
70
70
  &:before
@@ -12,7 +12,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon} from 'kpc';
12
12
  <div>
13
13
  <Dropdown position={{my: 'left top', at: 'left bottom+5'}}>
14
14
  <Button type="primary">
15
- left <Icon class="ion-ios-arrow-down" />
15
+ left <Icon class="k-icon-down" />
16
16
  </Button>
17
17
  <DropdownMenu>
18
18
  <DropdownItem>item 1</DropdownItem>
@@ -23,7 +23,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon} from 'kpc';
23
23
 
24
24
  <Dropdown position={{my: 'right top', at: 'right bottom+5'}}>
25
25
  <Button type="primary">
26
- right <Icon class="ion-ios-arrow-down" />
26
+ right <Icon class="k-icon-down" />
27
27
  </Button>
28
28
  <DropdownMenu>
29
29
  <DropdownItem>item 1</DropdownItem>
@@ -34,7 +34,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon} from 'kpc';
34
34
 
35
35
  <Dropdown position="top">
36
36
  <Button type="primary">
37
- top center <Icon class="ion-ios-arrow-down" />
37
+ top center <Icon class="k-icon-down" />
38
38
  </Button>
39
39
  <DropdownMenu>
40
40
  <DropdownItem>item 1</DropdownItem>
@@ -19,7 +19,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Tooltip} from 'kpc';
19
19
  <Tooltip content="disabled">
20
20
  <DropdownItem disabled>item 3</DropdownItem>
21
21
  </Tooltip>
22
- <Dropdown position={{my: 'left top', at: 'right top'}}>
22
+ <Dropdown position={{my: 'left top', at: 'right top'}} trigger="click">
23
23
  <Tooltip content="This is a nested Dropdown.">
24
24
  <DropdownItem>item 4</DropdownItem>
25
25
  </Tooltip>
@@ -14,7 +14,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon, Input} from 'kpc';
14
14
  <div>
15
15
  <Dropdown>
16
16
  <Button type="primary">
17
- hover <Icon class="ion-ios-arrow-down" />
17
+ hover <Icon class="k-icon-down" />
18
18
  </Button>
19
19
  <DropdownMenu>
20
20
  <DropdownItem>item 1</DropdownItem>
@@ -25,7 +25,7 @@ import {Dropdown, DropdownMenu, DropdownItem, Button, Icon, Input} from 'kpc';
25
25
 
26
26
  <Dropdown trigger="click">
27
27
  <Button type="primary">
28
- click <Icon class="ion-ios-arrow-down" />
28
+ click <Icon class="k-icon-down" />
29
29
  </Button>
30
30
  <DropdownMenu>
31
31
  <DropdownItem>item 1</DropdownItem>
@@ -11,7 +11,7 @@ import {
11
11
  createVNode,
12
12
  nextTick,
13
13
  } from 'intact';
14
- import {bind, isTextChildren} from '../utils';
14
+ import {bind, isTextChildren, getRestProps} from '../utils';
15
15
  import {EMPTY_OBJ, isFunction, noop} from 'intact-shared';
16
16
  import {Options, position, Feedback} from '../position';
17
17
  import {cx} from '@emotion/css';
@@ -21,6 +21,7 @@ import {Portal, PortalProps} from '../portal';
21
21
  import {useShowHideEvents} from '../../hooks/useShowHideEvents';
22
22
  import {usePosition, FeedbackCallback} from './usePosition';
23
23
  import type {Events} from '../types';
24
+ import { Virtual } from '../virtual';
24
25
 
25
26
  export type Position = Options
26
27
  export type PositionShorthand = 'left' | 'bottom' | 'right' | 'top'
@@ -35,6 +36,7 @@ export interface DropdownProps {
35
36
  disabled?: boolean
36
37
  value?: boolean
37
38
  position?: Position | 'left' | 'bottom' | 'right' | 'top'
39
+ collison?: Position['collision']
38
40
  of?: 'self' | 'parent' | Event
39
41
  container?: PortalProps['container']
40
42
  }
@@ -45,6 +47,8 @@ export interface DropdownEvents {
45
47
  hide: []
46
48
  mouseenter: [MouseEvent]
47
49
  mouseleave: [MouseEvent]
50
+ click: [MouseEvent]
51
+ contextmenu: [MouseEvent]
48
52
  positioned: [Feedback]
49
53
  }
50
54
 
@@ -58,11 +62,11 @@ const typeDefs: Required<TypeDefs<DropdownProps>> = {
58
62
  // Event is undefined in NodeJs
59
63
  of: ['self', 'parent', typeof Event === 'undefined' ? undefined : Event],
60
64
  container: [String, Function],
65
+ collison: ['none', 'fit', 'flip', 'flipfit', Array],
61
66
  };
62
67
 
63
68
  const defaults = (): Partial<DropdownProps> => ({
64
69
  trigger: 'hover',
65
- position: {},
66
70
  of: 'self',
67
71
  });
68
72
 
@@ -72,6 +76,8 @@ const events: Events<DropdownEvents> = {
72
76
  hide: true,
73
77
  mouseenter: true,
74
78
  mouseleave: true,
79
+ click: true,
80
+ contextmenu: true,
75
81
  positioned: true,
76
82
  };
77
83
 
@@ -105,31 +111,18 @@ export class Dropdown<
105
111
  }
106
112
 
107
113
  const [trigger, menu] = children as DropdownChildren;
108
- const triggerType = this.get('trigger');
109
- const props = this.initEventCallbacks(triggerType);
110
-
111
- const clonedTrigger = isTextChildren(trigger) ?
112
- createVNode('span', null, trigger) :
113
- directClone(trigger);
114
- const triggerProps = this.triggerProps = this.normalizeTriggerProps(trigger.props || EMPTY_OBJ);
115
- // add a className for opening status
116
- let className = trigger.className || triggerProps.className;
114
+ const props = this.initEventCallbacks();
115
+ let {className, value, container} = this.get();
117
116
  className = cx({
118
- [className]: className,
119
- 'k-dropdown-open': this.get('value'),
117
+ 'k-dropdown-open': value,
118
+ [className!]: !!className,
120
119
  });
121
-
122
- clonedTrigger.props = {...triggerProps, ...props, className};
123
- clonedTrigger.className = className;
124
-
120
+
125
121
  this.menuVNode = menu;
126
122
 
127
123
  return [
128
- clonedTrigger,
129
- // wrap the root dropdown menu to Portal to render into body
130
- this.alwaysPortal || !this.rootDropdown ?
131
- h(Portal, {children: menu, container: this.get('container')}) :
132
- menu
124
+ h(Virtual, {...props, ...getRestProps(this), className}, trigger),
125
+ h(Portal, {children: menu, container})
133
126
  ];
134
127
  };
135
128
 
@@ -139,10 +132,7 @@ export class Dropdown<
139
132
  public showedDropdown: Dropdown | null = null;
140
133
  public positionHook = usePosition();
141
134
 
142
- protected alwaysPortal = false;
143
-
144
- private timer: number | undefined = undefined;
145
- private triggerProps: any = null;
135
+ protected timer: number | undefined = undefined;
146
136
 
147
137
  init() {
148
138
  provide(DROPDOWN, this);
@@ -173,6 +163,12 @@ export class Dropdown<
173
163
  clearTimeout(this.timer);
174
164
  this.set('value', true);
175
165
 
166
+ // should show parent dropdown
167
+ const parentDropdown = this.dropdown;
168
+ if (parentDropdown) {
169
+ parentDropdown.show();
170
+ }
171
+
176
172
  if (shouldFocus) {
177
173
  nextTick(() => {
178
174
  this.focusFirst();
@@ -184,9 +180,15 @@ export class Dropdown<
184
180
  if (this.get('disabled')) return;
185
181
  if (!this.get('value')) return;
186
182
 
183
+ const showedDropdown = this.showedDropdown;
184
+ if (showedDropdown) {
185
+ showedDropdown.hide(immediately);
186
+ }
187
+
187
188
  if (immediately) {
188
189
  this.set('value', false);
189
190
  } else {
191
+ clearTimeout(this.timer);
190
192
  this.timer = window.setTimeout(() => {
191
193
  this.set('value', false);
192
194
  }, 200);
@@ -204,29 +206,27 @@ export class Dropdown<
204
206
 
205
207
  @bind
206
208
  private onEnter(e: MouseEvent) {
207
- this.callOriginalCallback(e.type === 'click' ? 'ev-click' : 'ev-mouseenter', e);
208
-
209
209
  this.show();
210
+ this.trigger(e.type as 'mouseenter', e);
210
211
  }
211
212
 
212
213
  @bind
213
214
  private onContextMenu(e: MouseEvent) {
214
- this.callOriginalCallback('ev-contextmenu', e);
215
-
216
215
  e.preventDefault();
217
216
  this.set('of', e);
218
217
  this.show();
218
+ this.trigger('contextmenu', e);
219
219
  }
220
220
 
221
221
  @bind
222
222
  private onLeave(e: MouseEvent) {
223
- this.callOriginalCallback('ev-mouseleave', e);
224
-
225
223
  this.hide();
224
+ this.trigger(e.type as 'mouseleave', e);
226
225
  }
227
226
 
228
- private initEventCallbacks(trigger: DropdownProps['trigger']) {
229
- const props: Record<string, Function> = {};
227
+ private initEventCallbacks() {
228
+ const trigger = this.get('trigger');
229
+ const props: Record<string, Function | string> = {};
230
230
 
231
231
  switch (trigger) {
232
232
  case 'focus':
@@ -247,56 +247,15 @@ export class Dropdown<
247
247
 
248
248
  return props;
249
249
  }
250
-
251
- private callOriginalCallback(name: string, e: MouseEvent) {
252
- const callback = this.triggerProps[name];
253
- const callbackOnDropdown = this.get<Function>(name);
254
- if (isFunction(callback)) callback(e);
255
- if (isFunction(callbackOnDropdown)) callbackOnDropdown(e);
256
- }
257
-
258
- private normalizeTriggerProps(props: any) {
259
- // if use kpc in react or vue, normalize props by Wrapper.props.vnode;
260
- const vnode = props.vnode;
261
- if (!vnode) return props;
262
-
263
- // maybe we render the intact component in react slot property, in this case
264
- // the $isReact is false. so use the vnode $$typeof field as gauge
265
- if (vnode.$$typeof || (this as any).$isVueNext) {
266
- const _props = vnode.props;
267
- if (!_props) return props;
268
-
269
- return {
270
- vnode,
271
- 'ev-click': _props.onClick,
272
- 'ev-mouseenter': _props.onMouseEnter,
273
- 'ev-mouseleave': _props.onMouseLeave,
274
- 'ev-contextmenu': _props.onContextMenu,
275
- className: _props.className || _props.class /* vue-next */,
276
- };
277
- } else if ((this as any).$isVue) {
278
- const data = vnode.data;
279
- const on = data && data.on || EMPTY_OBJ;
280
- const ret: Record<string, any> = {vnode};
281
- ['click', 'mouseenter', 'mouseleave', 'contextmenu'].forEach(event => {
282
- const method = on[event];
283
- if (method) {
284
- ret[`ev-${event}`] = method;
285
- }
286
- });
287
- return ret;
288
- }
289
-
290
- return props;
291
- }
292
250
  }
293
251
 
294
252
  function useDocumentClickForDropdown(dropdown: Dropdown) {
295
253
  const elementRef = () => findDomFromVNode(dropdown.menuVNode!, true) as Element;
296
254
  const [addDocumentClick, removeDocumentClick] = useDocumentClick(elementRef, (e) => {
297
- // case 1: if click an trigger and the trigger type is hover, ignore it
298
- // case 2: if right click on trigger and the trigger type is contextmenu, ignore it
299
- // case 3: if click on trigger and the trigger type is focus, do nothing
255
+ // case 1: if click a trigger and its trigger type is hover, ignore it
256
+ // case 2: if right click on a trigger and its trigger type is contextmenu, ignore it
257
+ // case 3: if click on a trigger and its trigger type is focus, do nothing
258
+ // case 3: if click on sub-dropdown, we should also show the parent dropdown, so ignore it
300
259
  const trigger = dropdown.get('trigger');
301
260
  if (trigger === 'focus') return;
302
261
 
@@ -310,6 +269,8 @@ function useDocumentClickForDropdown(dropdown: Dropdown) {
310
269
  }
311
270
  }
312
271
 
272
+ if (isSubDropdownElement(e.target as Element, dropdown)) return;
273
+
313
274
  dropdown.hide(true);
314
275
  }, true);
315
276
 
@@ -317,6 +278,17 @@ function useDocumentClickForDropdown(dropdown: Dropdown) {
317
278
  dropdown.on('hide', removeDocumentClick);
318
279
  }
319
280
 
281
+ function isSubDropdownElement(elem: Element, dropdown: Dropdown): boolean {
282
+ const showedDropdown = dropdown.showedDropdown;
283
+ if (!showedDropdown) return false;
284
+
285
+ const subMenuElement = findDomFromVNode(showedDropdown.menuVNode!, true) as Element;
286
+ if (containsOrEqual(subMenuElement, elem)) {
287
+ return true;
288
+ }
289
+ return isSubDropdownElement(elem, showedDropdown);
290
+ }
291
+
320
292
  function useHideLastMenuOnShow(dropdown: Dropdown) {
321
293
  const parentDropdown = dropdown.dropdown;
322
294
  dropdown.on('show', () => {
@@ -4,6 +4,7 @@ import {Dropdown, DropdownMenu, DropdownItem} from '../dropdown';
4
4
  import BasicDemo from '~/components/dropdown/demos/basic';
5
5
  import NestedDemo from '~/components/dropdown/demos/nested';
6
6
  import ContextMenuDemo from '~/components/dropdown/demos/contextmenu';
7
+ import TooltipDemo from '~/components/dropdown/demos/tooltip';
7
8
 
8
9
  describe('Dropdown', () => {
9
10
  afterEach((done) => {
@@ -72,7 +73,8 @@ describe('Dropdown', () => {
72
73
  expect(dropdown.parentNode).to.exist;
73
74
  });
74
75
 
75
- it('nested dropdown', async () => {
76
+ it('nested dropdown', async function() {
77
+ this.timeout(0);
76
78
  const [instance, element] = mount(NestedDemo);
77
79
 
78
80
  (element.firstElementChild as HTMLElement).click();
@@ -89,6 +91,20 @@ describe('Dropdown', () => {
89
91
  await wait(500);
90
92
  const hoverSubDropdown = getElement('.k-dropdown-menu')!;
91
93
  expect(hoverSubDropdown.innerHTML).to.matchSnapshot();
94
+
95
+ const [hoverItem1] = hoverSubDropdown.querySelectorAll<HTMLElement>('.k-dropdown-item');
96
+ dispatchEvent(hoverItem, 'mouseleave');
97
+ dispatchEvent(hoverItem1, 'mouseenter');
98
+ await wait(500);
99
+ const hoverSubDropdown1 = getElement('.k-dropdown-menu')!;
100
+ expect(hoverSubDropdown1.textContent).to.eql('item 1item 2');
101
+
102
+ const [hoverItem2] = hoverSubDropdown1.querySelectorAll<HTMLElement>('.k-dropdown-item');
103
+ dispatchEvent(hoverItem1, 'mouseleave');
104
+ dispatchEvent(hoverItem2, 'mouseenter');
105
+ await wait(1000);
106
+ const hoverSubDropdown2 = getElement('.k-dropdown-menu')!;
107
+ expect(hoverSubDropdown2 === hoverSubDropdown1).to.be.true;
92
108
  });
93
109
 
94
110
  it('hide on click document', async () => {
@@ -281,13 +297,13 @@ describe('Dropdown', () => {
281
297
  expect(parent.scrollTop).to.eql(item.offsetHeight * 2 - 40);
282
298
  });
283
299
 
284
- it('trigger: focus', async() => {
300
+ it('focus trigger type', async () => {
285
301
  class Demo extends Component {
286
302
  static template = `
287
303
  const {Dropdown, DropdownMenu, DropdownItem} = this;
288
304
  <div>
289
305
  <Dropdown trigger="focus">
290
- <input ref="trigger" />
306
+ <input ref="trigger" ev-focusin={this.onFocus} />
291
307
  <DropdownMenu>
292
308
  <DropdownItem>test1</DropdownItem>
293
309
  <DropdownItem>test2</DropdownItem>
@@ -298,12 +314,14 @@ describe('Dropdown', () => {
298
314
  private Dropdown = Dropdown;
299
315
  private DropdownItem = DropdownItem;
300
316
  private DropdownMenu = DropdownMenu;
317
+ public onFocus = sinon.spy((e: MouseEvent) => console.log(e));
301
318
  }
302
319
  const [instance] = mount(Demo);
303
320
 
304
321
  dispatchEvent(instance.refs.trigger, 'focusin');
305
322
  await wait(500);
306
323
  expect(getElement('.k-dropdown-menu')).to.be.exist;
324
+ expect(instance.onFocus.callCount).to.eql(1);
307
325
 
308
326
  // clicking anywhere should not hide menu
309
327
  dispatchEvent(document, 'click');
@@ -314,4 +332,35 @@ describe('Dropdown', () => {
314
332
  await wait(700);
315
333
  expect(getElement('.k-dropdown-menu')).to.not.be.exist;
316
334
  });
335
+
336
+ it('wrap by tooltip', async () => {
337
+ const [instance, element] = mount(TooltipDemo);
338
+
339
+ dispatchEvent(element.firstChild as HTMLElement, 'mouseenter');
340
+ await wait();
341
+ const dropdown = getElement('.k-dropdown-menu')!;
342
+ const [item1, item2, item3, item4] = dropdown.querySelectorAll('.k-dropdown-item');
343
+
344
+ dispatchEvent(item1, 'mouseenter');
345
+ await wait();
346
+ expect(getElement('.k-tooltip-content')!.textContent).to.eql('item 1')
347
+
348
+ dispatchEvent(item1, 'mouseleave');
349
+ dispatchEvent(item3, 'mouseenter');
350
+ await wait();
351
+ expect(getElement('.k-tooltip-content')!.textContent).to.eql('disabled')
352
+
353
+ dispatchEvent(item3, 'mouseleave');
354
+ dispatchEvent(item4, 'mouseenter');
355
+ await wait();
356
+ expect(getElement('.k-tooltip-content')!.textContent).to.eql('This is a nested Dropdown.');
357
+
358
+ dispatchEvent(item4, 'click');
359
+ await wait();
360
+ expect(getElement('.k-dropdown-menu')!.textContent).to.eql('item 1item 2');
361
+
362
+ dispatchEvent(item4, 'mouseleave');
363
+ await wait(800);
364
+ expect(getElement('.k-dropdown-menu')).to.not.be.exist;
365
+ });
317
366
  });
@@ -5,6 +5,7 @@ import {useItemKeyboard, MenuKeyboardMethods} from './useKeyboard';
5
5
  import {Dropdown, DROPDOWN} from './dropdown';
6
6
  import {DropdownMenu, DROPDOWN_MENU} from './menu';
7
7
  import {IgnoreClickEvent} from '../../hooks/useDocumentClick';
8
+ import { Dropdown as ExportDropdown, DropdownMenu as ExportDropdownMenu } from '.';
8
9
 
9
10
  export interface DropdownItemProps {
10
11
  disabled?: boolean
@@ -52,21 +53,31 @@ export class DropdownItem extends Component<DropdownItemProps, DropdownItemEvent
52
53
  select() {
53
54
  if (this.parentDropdown) return;
54
55
 
56
+ // trigger select event firstly for Cascader update values
57
+ this.trigger('select');
58
+
55
59
  if (this.get('hideOnSelect')) {
56
60
  // hide all dropdowns
57
61
  let dropdown = this.dropdown;
58
62
  do { dropdown!.hide(true); }
59
63
  while (dropdown = dropdown!.dropdown);
60
64
  }
61
-
62
- this.trigger('select');
63
65
  }
64
66
 
65
67
  hasSubMenu() {
66
- // TODO: wrapped by Tooltip
67
- const parent = this.$senior;
68
- if (parent instanceof Dropdown) {
69
- return parent
68
+ // wrapped by Dropdown rather than DropdownMenu
69
+ let parent = this.$senior;
70
+ while (parent) {
71
+ // Tooltip extends Dropdown, it's also a instance of Dropdown
72
+ // so use constructor to detect
73
+ // if (parent instanceof DropdownMenu) {
74
+ if (parent.constructor === ExportDropdownMenu) {
75
+ return;
76
+ }
77
+ if (parent.constructor === ExportDropdown) {
78
+ return parent;
79
+ }
80
+ parent = parent.$senior;
70
81
  }
71
82
  }
72
83
 
@@ -104,4 +115,4 @@ function useKeyboardForDropdownItem(instance: DropdownItem) {
104
115
  instance.select();
105
116
  },
106
117
  });
107
- }
118
+ }