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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (504) hide show
  1. package/README.md +1 -1
  2. package/components/button/demos/basic.md +1 -0
  3. package/components/button/demos/group.md +11 -0
  4. package/components/button/demos/icon.md +1 -0
  5. package/components/button/index.md +1 -1
  6. package/components/button/index.ts +2 -2
  7. package/components/button/styles.ts +6 -1
  8. package/components/cascader/index.md +18 -0
  9. package/components/cascader/index.spec.ts +56 -0
  10. package/components/cascader/index.ts +35 -12
  11. package/components/cascader/index.vdt +9 -8
  12. package/components/cascader/styles.ts +2 -1
  13. package/components/cascader/useFields.ts +22 -0
  14. package/components/cascader/useFilterable.ts +23 -8
  15. package/components/cascader/useLabel.ts +7 -4
  16. package/components/cascader/useLoad.ts +4 -2
  17. package/components/code/demos/basic.md +1 -1
  18. package/components/colorpicker/index.md +16 -0
  19. package/components/colorpicker/index.ts +4 -0
  20. package/components/colorpicker/index.vdt +3 -2
  21. package/components/copy/demos/basic.md +12 -0
  22. package/components/copy/demos/children.md +37 -0
  23. package/components/copy/index.md +21 -0
  24. package/components/copy/index.spec.ts +21 -0
  25. package/components/copy/index.ts +37 -0
  26. package/components/copy/index.vdt +23 -0
  27. package/components/copy/styles.ts +9 -0
  28. package/components/copy/useCopy.ts +91 -0
  29. package/components/datepicker/demos/basic.md +1 -0
  30. package/components/datepicker/index.md +13 -0
  31. package/components/datepicker/index.spec.ts +2 -2
  32. package/components/datepicker/index.vdt +2 -2
  33. package/components/datepicker/styles.ts +10 -4
  34. package/components/dialog/alert.vdt +10 -6
  35. package/components/dialog/index.spec.ts +6 -6
  36. package/components/dropdown/demos/tooltip.md +1 -1
  37. package/components/dropdown/dropdown.ts +51 -79
  38. package/components/dropdown/index.spec.ts +52 -3
  39. package/components/dropdown/item.ts +18 -7
  40. package/components/dropdown/menu.ts +4 -4
  41. package/components/dropdown/usePosition.ts +12 -1
  42. package/components/editable/index.ts +17 -3
  43. package/components/editable/index.vdt +1 -0
  44. package/components/form/index.spec.ts +1 -1
  45. package/components/form/item.vdt +1 -1
  46. package/components/form/styles.ts +20 -25
  47. package/components/grid/useGutter.ts +7 -6
  48. package/components/input/demos/autoRows.md +44 -0
  49. package/components/input/demos/flat.md +16 -0
  50. package/components/input/demos/password.md +12 -0
  51. package/components/input/demos/textarea.md +2 -2
  52. package/components/input/index.md +2 -0
  53. package/components/input/index.spec.ts +97 -1
  54. package/components/input/index.ts +21 -13
  55. package/components/input/index.vdt +30 -6
  56. package/components/input/styles.ts +33 -2
  57. package/components/input/useAutoRows.ts +65 -0
  58. package/components/input/useAutoWidth.ts +12 -3
  59. package/components/input/useShowPassword.ts +27 -0
  60. package/components/menu/demos/collapse.md +1 -1
  61. package/components/menu/index.spec.ts +9 -1
  62. package/components/menu/item.ts +7 -0
  63. package/components/pagination/demos/flat.md +22 -0
  64. package/components/pagination/index.md +1 -1
  65. package/components/pagination/index.spec.ts +23 -0
  66. package/components/pagination/index.ts +4 -3
  67. package/components/pagination/index.vdt +6 -9
  68. package/components/pagination/styles.ts +2 -2
  69. package/components/popover/content.ts +40 -0
  70. package/components/popover/content.vdt +32 -0
  71. package/components/popover/demos/basic.md +47 -0
  72. package/components/popover/demos/button.md +49 -0
  73. package/components/popover/demos/content.md +36 -0
  74. package/components/popover/demos/text.md +38 -0
  75. package/components/popover/demos/type.md +51 -0
  76. package/components/popover/index.md +54 -0
  77. package/components/popover/index.spec.ts +91 -0
  78. package/components/popover/index.ts +52 -0
  79. package/components/popover/styles.ts +45 -0
  80. package/components/portal.ts +4 -4
  81. package/components/position.ts +5 -1
  82. package/components/progress/demos/children.md +1 -1
  83. package/components/progress/demos/circleSize.md +84 -0
  84. package/components/progress/demos/customColor.md +1 -3
  85. package/components/progress/index.ts +1 -1
  86. package/components/progress/index.vdt +36 -7
  87. package/components/progress/styles.ts +34 -21
  88. package/components/rate/styles.ts +1 -0
  89. package/components/select/base.ts +11 -3
  90. package/components/select/base.vdt +39 -35
  91. package/components/select/demos/basic.md +21 -12
  92. package/components/select/demos/creatable.md +1 -1
  93. package/components/select/demos/draggable.md +55 -0
  94. package/components/select/demos/flat.md +42 -0
  95. package/components/select/demos/nowrap.md +24 -0
  96. package/components/select/demos/size.md +41 -1
  97. package/components/select/index.md +12 -0
  98. package/components/select/index.spec.ts +2 -2
  99. package/components/select/menu.vdt +5 -5
  100. package/components/select/styles.ts +52 -38
  101. package/components/select/useDraggble.ts +12 -0
  102. package/components/select/useNowrap.ts +24 -0
  103. package/components/slider/index.spec.ts +32 -1
  104. package/components/slider/index.ts +2 -2
  105. package/components/slider/index.vdt +34 -16
  106. package/components/slider/styles.ts +21 -13
  107. package/components/slider/useValue.ts +15 -3
  108. package/components/spinner/index.md +1 -1
  109. package/components/spinner/index.ts +0 -9
  110. package/components/spinner/index.vdt +7 -4
  111. package/components/spinner/useChange.ts +2 -2
  112. package/components/spinner/useValue.ts +9 -1
  113. package/components/split/index.vdt +13 -3
  114. package/components/split/memo.ts +29 -0
  115. package/components/steps/demos/vertical.md +79 -0
  116. package/components/steps/index.md +1 -0
  117. package/components/steps/index.spec.ts +1 -1
  118. package/components/steps/index.ts +3 -1
  119. package/components/steps/index.vdt +4 -3
  120. package/components/steps/step.vdt +1 -1
  121. package/components/steps/styles.ts +154 -25
  122. package/components/switch/demos/onOff.md +2 -2
  123. package/components/switch/index.spec.ts +15 -10
  124. package/components/table/cell.ts +4 -5
  125. package/components/table/demos/hideHeader.md +33 -0
  126. package/components/table/demos/pagination.md +53 -0
  127. package/components/table/index.md +22 -0
  128. package/components/table/index.spec.ts +73 -1
  129. package/components/table/row.ts +3 -3
  130. package/components/table/styles.ts +5 -0
  131. package/components/table/table.ts +29 -4
  132. package/components/table/table.vdt +21 -3
  133. package/components/table/useChecked.ts +21 -6
  134. package/components/table/useDisableRow.ts +3 -2
  135. package/components/table/useDraggable.ts +12 -8
  136. package/components/table/useGroup.ts +2 -0
  137. package/components/table/useMerge.ts +6 -3
  138. package/components/table/usePagination.ts +71 -0
  139. package/components/table/useRestRowStatus.ts +4 -1
  140. package/components/table/useStickyScrollbar.ts +2 -2
  141. package/components/table/useTree.ts +4 -3
  142. package/components/table/useWidth.ts +2 -2
  143. package/components/tabs/demos/beforeChange.md +2 -2
  144. package/components/tabs/demos/card.md +2 -11
  145. package/components/tabs/demos/closable.md +7 -6
  146. package/components/tabs/demos/scroll.md +104 -0
  147. package/components/tabs/demos/vertical.md +1 -9
  148. package/components/tabs/index.md +1 -1
  149. package/components/tabs/index.spec.ts +36 -0
  150. package/components/tabs/index.ts +11 -12
  151. package/components/tabs/index.vdt +6 -7
  152. package/components/tabs/styles.ts +113 -144
  153. package/components/tabs/useScroll.ts +101 -42
  154. package/components/tag/base.ts +1 -1
  155. package/components/tag/demos/draggable.md +49 -0
  156. package/components/tag/demos/tags.md +72 -0
  157. package/components/tag/index.md +11 -0
  158. package/components/tag/index.spec.ts +70 -2
  159. package/components/tag/index.ts +2 -0
  160. package/components/tag/styles.ts +53 -4
  161. package/components/tag/tags.ts +54 -0
  162. package/components/tag/tags.vdt +49 -0
  163. package/components/tag/useChildren.ts +42 -0
  164. package/components/tag/useDraggable.ts +97 -0
  165. package/components/tag/useNowrap.ts +117 -0
  166. package/components/timepicker/index.md +13 -0
  167. package/components/timepicker/index.spec.ts +1 -1
  168. package/components/tooltip/content.ts +21 -7
  169. package/components/tooltip/content.vdt +14 -8
  170. package/components/tooltip/demos/trigger.md +1 -1
  171. package/components/tooltip/index.md +3 -6
  172. package/components/tooltip/index.spec.ts +69 -40
  173. package/components/tooltip/styles.ts +3 -3
  174. package/components/tooltip/tooltip.ts +7 -1
  175. package/components/treeSelect/index.md +11 -0
  176. package/components/upload/index.spec.ts +4 -4
  177. package/components/upload/index.vdt +1 -1
  178. package/components/upload/styles.ts +0 -2
  179. package/components/utils.ts +25 -4
  180. package/components/virtual.ts +98 -0
  181. package/es/components/button/index.d.ts +1 -1
  182. package/es/components/button/index.js +1 -1
  183. package/es/components/button/styles.js +1 -1
  184. package/es/components/cascader/index.d.ts +22 -11
  185. package/es/components/cascader/index.js +9 -12
  186. package/es/components/cascader/index.spec.js +81 -0
  187. package/es/components/cascader/index.vdt.js +10 -8
  188. package/es/components/cascader/styles.js +1 -1
  189. package/es/components/cascader/useFields.d.ts +2 -0
  190. package/es/components/cascader/useFields.js +18 -0
  191. package/es/components/cascader/useFilterable.d.ts +2 -1
  192. package/es/components/cascader/useFilterable.js +17 -6
  193. package/es/components/cascader/useLabel.d.ts +2 -1
  194. package/es/components/cascader/useLabel.js +4 -4
  195. package/es/components/cascader/useLoad.d.ts +2 -1
  196. package/es/components/cascader/useLoad.js +9 -7
  197. package/es/components/colorpicker/index.d.ts +2 -0
  198. package/es/components/colorpicker/index.js +7 -2
  199. package/es/components/colorpicker/index.vdt.js +3 -6
  200. package/es/components/copy/index.d.ts +17 -0
  201. package/es/components/copy/index.js +43 -0
  202. package/es/components/copy/index.spec.d.ts +1 -0
  203. package/es/components/copy/index.spec.js +52 -0
  204. package/es/components/copy/index.vdt.js +45 -0
  205. package/es/components/copy/styles.d.ts +2 -0
  206. package/es/components/copy/styles.js +14 -0
  207. package/es/components/copy/useCopy.d.ts +4 -0
  208. package/es/components/copy/useCopy.js +90 -0
  209. package/es/components/datepicker/index.spec.js +1 -1
  210. package/es/components/datepicker/index.vdt.js +1 -1
  211. package/es/components/datepicker/styles.js +1 -1
  212. package/es/components/diagram/shapes/callout.d.ts +1 -1
  213. package/es/components/diagram/shapes/circle.d.ts +1 -1
  214. package/es/components/diagram/shapes/document.d.ts +1 -1
  215. package/es/components/diagram/shapes/ellipse.d.ts +1 -1
  216. package/es/components/diagram/shapes/hexagon.d.ts +1 -1
  217. package/es/components/diagram/shapes/image.d.ts +1 -1
  218. package/es/components/diagram/shapes/parallelogram.d.ts +1 -1
  219. package/es/components/diagram/shapes/rectangle.d.ts +1 -1
  220. package/es/components/diagram/shapes/square.d.ts +1 -1
  221. package/es/components/diagram/shapes/text.d.ts +1 -1
  222. package/es/components/dialog/alert.vdt.js +6 -5
  223. package/es/components/dialog/index.spec.js +6 -6
  224. package/es/components/dropdown/dropdown.d.ts +6 -6
  225. package/es/components/dropdown/dropdown.js +58 -75
  226. package/es/components/dropdown/index.spec.js +96 -17
  227. package/es/components/dropdown/item.d.ts +1 -1
  228. package/es/components/dropdown/item.js +19 -7
  229. package/es/components/dropdown/menu.js +1 -1
  230. package/es/components/dropdown/usePosition.js +11 -2
  231. package/es/components/editable/index.d.ts +1 -0
  232. package/es/components/editable/index.js +20 -6
  233. package/es/components/editable/index.vdt.js +2 -1
  234. package/es/components/form/index.spec.js +4 -2
  235. package/es/components/form/item.vdt.js +2 -1
  236. package/es/components/form/styles.js +4 -4
  237. package/es/components/grid/useGutter.js +8 -8
  238. package/es/components/input/index.d.ts +11 -2
  239. package/es/components/input/index.js +13 -13
  240. package/es/components/input/index.spec.js +169 -1
  241. package/es/components/input/index.vdt.js +28 -7
  242. package/es/components/input/styles.js +20 -3
  243. package/es/components/input/useAutoRows.d.ts +2 -0
  244. package/es/components/input/useAutoRows.js +79 -0
  245. package/es/components/input/useAutoWidth.js +13 -3
  246. package/es/components/input/useShowPassword.d.ts +7 -0
  247. package/es/components/input/useShowPassword.js +31 -0
  248. package/es/components/menu/index.spec.js +26 -15
  249. package/es/components/menu/item.d.ts +2 -0
  250. package/es/components/menu/item.js +5 -0
  251. package/es/components/pagination/index.d.ts +1 -1
  252. package/es/components/pagination/index.js +3 -2
  253. package/es/components/pagination/index.spec.js +49 -0
  254. package/es/components/pagination/index.vdt.js +8 -10
  255. package/es/components/pagination/styles.js +1 -1
  256. package/es/components/popover/content.d.ts +19 -0
  257. package/es/components/popover/content.js +31 -0
  258. package/es/components/popover/content.vdt.js +68 -0
  259. package/es/components/popover/index.d.ts +16 -0
  260. package/es/components/popover/index.js +44 -0
  261. package/es/components/popover/index.spec.d.ts +1 -0
  262. package/es/components/popover/index.spec.js +195 -0
  263. package/es/components/popover/styles.d.ts +1 -0
  264. package/es/components/popover/styles.js +22 -0
  265. package/es/components/portal.d.ts +6 -2
  266. package/es/components/portal.js +4 -3
  267. package/es/components/position.js +2 -1
  268. package/es/components/progress/index.js +1 -1
  269. package/es/components/progress/index.vdt.js +46 -8
  270. package/es/components/progress/styles.js +19 -13
  271. package/es/components/rate/styles.js +1 -1
  272. package/es/components/select/base.d.ts +7 -3
  273. package/es/components/select/base.js +9 -3
  274. package/es/components/select/base.vdt.js +46 -35
  275. package/es/components/select/index.spec.js +2 -2
  276. package/es/components/select/menu.vdt.js +1 -1
  277. package/es/components/select/styles.js +11 -5
  278. package/es/components/select/useDraggble.d.ts +2 -0
  279. package/es/components/select/useDraggble.js +11 -0
  280. package/es/components/select/useNowrap.d.ts +3 -0
  281. package/es/components/select/useNowrap.js +19 -0
  282. package/es/components/slider/index.spec.js +48 -9
  283. package/es/components/slider/index.vdt.js +23 -12
  284. package/es/components/slider/styles.js +23 -14
  285. package/es/components/slider/useValue.d.ts +3 -1
  286. package/es/components/slider/useValue.js +12 -0
  287. package/es/components/spinner/index.d.ts +0 -1
  288. package/es/components/spinner/index.js +1 -19
  289. package/es/components/spinner/index.vdt.js +9 -4
  290. package/es/components/spinner/useChange.d.ts +1 -1
  291. package/es/components/spinner/useChange.js +2 -2
  292. package/es/components/spinner/useValue.d.ts +1 -0
  293. package/es/components/spinner/useValue.js +16 -1
  294. package/es/components/split/index.vdt.js +32 -20
  295. package/es/components/split/memo.d.ts +9 -0
  296. package/es/components/split/memo.js +26 -0
  297. package/es/components/steps/index.d.ts +1 -0
  298. package/es/components/steps/index.js +2 -1
  299. package/es/components/steps/index.spec.js +1 -1
  300. package/es/components/steps/index.vdt.js +7 -4
  301. package/es/components/steps/step.vdt.js +0 -1
  302. package/es/components/steps/styles.d.ts +1 -0
  303. package/es/components/steps/styles.js +45 -16
  304. package/es/components/switch/index.spec.js +82 -65
  305. package/es/components/table/cell.js +1 -6
  306. package/es/components/table/index.spec.js +130 -19
  307. package/es/components/table/row.d.ts +1 -1
  308. package/es/components/table/row.js +2 -1
  309. package/es/components/table/styles.js +1 -1
  310. package/es/components/table/table.d.ts +15 -0
  311. package/es/components/table/table.js +16 -7
  312. package/es/components/table/table.vdt.js +20 -6
  313. package/es/components/table/useChecked.d.ts +3 -2
  314. package/es/components/table/useChecked.js +23 -12
  315. package/es/components/table/useDisableRow.d.ts +2 -1
  316. package/es/components/table/useDisableRow.js +4 -4
  317. package/es/components/table/useDraggable.d.ts +3 -2
  318. package/es/components/table/useDraggable.js +11 -15
  319. package/es/components/table/useGroup.js +3 -0
  320. package/es/components/table/useMerge.d.ts +2 -1
  321. package/es/components/table/useMerge.js +5 -4
  322. package/es/components/table/usePagination.d.ts +8 -0
  323. package/es/components/table/usePagination.js +81 -0
  324. package/es/components/table/useStickyScrollbar.js +2 -2
  325. package/es/components/table/useTree.d.ts +2 -1
  326. package/es/components/table/useTree.js +3 -4
  327. package/es/components/table/useWidth.js +2 -2
  328. package/es/components/tabs/index.d.ts +1 -1
  329. package/es/components/tabs/index.js +1 -1
  330. package/es/components/tabs/index.spec.js +67 -0
  331. package/es/components/tabs/index.vdt.js +4 -4
  332. package/es/components/tabs/styles.js +32 -34
  333. package/es/components/tabs/useScroll.d.ts +1 -1
  334. package/es/components/tabs/useScroll.js +75 -48
  335. package/es/components/tag/base.d.ts +1 -0
  336. package/es/components/tag/base.js +1 -1
  337. package/es/components/tag/index.d.ts +1 -0
  338. package/es/components/tag/index.js +2 -1
  339. package/es/components/tag/index.spec.js +147 -4
  340. package/es/components/tag/styles.d.ts +67 -0
  341. package/es/components/tag/styles.js +33 -8
  342. package/es/components/tag/tags.d.ts +27 -0
  343. package/es/components/tag/tags.js +51 -0
  344. package/es/components/tag/tags.vdt.js +79 -0
  345. package/es/components/tag/useChildren.d.ts +2 -0
  346. package/es/components/tag/useChildren.js +39 -0
  347. package/es/components/tag/useDraggable.d.ts +3 -0
  348. package/es/components/tag/useDraggable.js +89 -0
  349. package/es/components/tag/useNowrap.d.ts +7 -0
  350. package/es/components/tag/useNowrap.js +115 -0
  351. package/es/components/timepicker/index.spec.js +1 -1
  352. package/es/components/tooltip/content.d.ts +3 -2
  353. package/es/components/tooltip/content.js +18 -1
  354. package/es/components/tooltip/content.vdt.js +22 -10
  355. package/es/components/tooltip/index.spec.js +147 -92
  356. package/es/components/tooltip/styles.d.ts +23 -0
  357. package/es/components/tooltip/styles.js +2 -2
  358. package/es/components/tooltip/tooltip.d.ts +1 -1
  359. package/es/components/tooltip/tooltip.js +11 -11
  360. package/es/components/upload/index.spec.js +5 -6
  361. package/es/components/upload/index.vdt.js +3 -1
  362. package/es/components/utils.d.ts +2 -0
  363. package/es/components/utils.js +24 -3
  364. package/es/components/virtual.d.ts +8 -0
  365. package/es/components/virtual.js +126 -0
  366. package/es/hooks/useResizeObserver.d.ts +1 -1
  367. package/es/hooks/useResizeObserver.js +19 -6
  368. package/es/i18n/en-US.d.ts +4 -1
  369. package/es/i18n/en-US.js +6 -2
  370. package/es/index.d.ts +5 -3
  371. package/es/index.js +5 -3
  372. package/es/packages/kpc-react/__tests__/components/cascader.spec.d.ts +1 -0
  373. package/es/packages/kpc-react/__tests__/components/cascader.spec.js +79 -0
  374. package/es/packages/kpc-react/__tests__/components/drawer.spec.js +74 -6
  375. package/es/site/data/components/button/demos/basic/react.js +3 -1
  376. package/es/site/data/components/button/demos/group/react.js +26 -0
  377. package/es/site/data/components/button/demos/icon/react.js +6 -0
  378. package/es/site/data/components/copy/demos/basic/react.js +23 -0
  379. package/es/site/data/components/copy/demos/children/react.js +44 -0
  380. package/es/site/data/components/copy/index.d.ts +57 -0
  381. package/es/site/data/components/copy/index.js +42 -0
  382. package/es/site/data/components/datepicker/demos/basic/react.js +8 -0
  383. package/es/site/data/components/dropdown/demos/tooltip/react.js +2 -1
  384. package/es/site/data/components/input/demos/autoRows/index.d.ts +9 -0
  385. package/es/site/data/components/input/demos/autoRows/index.js +24 -0
  386. package/es/site/data/components/input/demos/autoRows/react.d.ts +8 -0
  387. package/es/site/data/components/input/demos/autoRows/react.js +62 -0
  388. package/es/site/data/components/input/demos/flat/index.d.ts +5 -0
  389. package/es/site/data/components/input/demos/flat/index.js +17 -0
  390. package/es/site/data/components/input/demos/flat/react.d.ts +4 -0
  391. package/es/site/data/components/input/demos/flat/react.js +29 -0
  392. package/es/site/data/components/input/demos/password/index.d.ts +5 -0
  393. package/es/site/data/components/input/demos/password/index.js +17 -0
  394. package/es/site/data/components/input/demos/password/react.d.ts +5 -0
  395. package/es/site/data/components/input/demos/password/react.js +41 -0
  396. package/es/site/data/components/input/demos/textarea/react.js +4 -2
  397. package/es/site/data/components/menu/demos/collapse/index.js +1 -1
  398. package/es/site/data/components/menu/demos/collapse/react.js +1 -1
  399. package/es/site/data/components/pagination/demos/flat/index.d.ts +6 -0
  400. package/es/site/data/components/pagination/demos/flat/index.js +18 -0
  401. package/es/site/data/components/pagination/demos/flat/react.d.ts +5 -0
  402. package/es/site/data/components/pagination/demos/{noBoard → flat}/react.js +12 -8
  403. package/es/site/data/components/popover/demos/basic/react.d.ts +8 -0
  404. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/react.js +14 -9
  405. package/es/site/data/components/popover/demos/button/index.d.ts +8 -0
  406. package/es/site/data/components/popover/demos/button/index.js +42 -0
  407. package/es/site/data/components/popover/demos/button/react.d.ts +8 -0
  408. package/es/site/data/components/popover/demos/button/react.js +73 -0
  409. package/es/site/data/components/popover/demos/content/index.d.ts +7 -0
  410. package/es/site/data/components/popover/demos/content/index.js +28 -0
  411. package/es/site/data/components/{tooltip/demos/confirm → popover/demos/content}/react.d.ts +0 -1
  412. package/es/site/data/components/popover/demos/content/react.js +43 -0
  413. package/es/site/data/components/popover/demos/text/index.d.ts +7 -0
  414. package/es/site/data/components/popover/demos/text/index.js +28 -0
  415. package/es/site/data/components/popover/demos/text/react.d.ts +6 -0
  416. package/es/site/data/components/popover/demos/text/react.js +36 -0
  417. package/es/site/data/components/popover/demos/type/index.d.ts +11 -0
  418. package/es/site/data/components/popover/demos/type/index.js +34 -0
  419. package/es/site/data/components/popover/demos/type/react.d.ts +11 -0
  420. package/es/site/data/components/popover/demos/type/react.js +58 -0
  421. package/es/site/data/components/popover/index.d.ts +57 -0
  422. package/es/site/data/components/popover/index.js +42 -0
  423. package/es/site/data/components/progress/demos/children/react.js +4 -4
  424. package/es/site/data/components/progress/demos/circleSize/index.d.ts +14 -0
  425. package/es/site/data/components/progress/demos/circleSize/index.js +43 -0
  426. package/es/site/data/components/progress/demos/circleSize/react.d.ts +14 -0
  427. package/es/site/data/components/progress/demos/circleSize/react.js +98 -0
  428. package/es/site/data/components/progress/demos/customColor/react.js +4 -4
  429. package/es/site/data/components/select/demos/basic/react.js +19 -7
  430. package/es/site/data/components/select/demos/creatable/react.js +2 -1
  431. package/es/site/data/components/select/demos/draggable/index.d.ts +10 -0
  432. package/es/site/data/components/select/demos/draggable/index.js +24 -0
  433. package/es/site/data/components/select/demos/draggable/react.d.ts +10 -0
  434. package/es/site/data/components/select/demos/draggable/react.js +85 -0
  435. package/es/site/data/components/select/demos/flat/index.d.ts +5 -0
  436. package/es/site/data/components/select/demos/flat/index.js +17 -0
  437. package/es/site/data/components/select/demos/flat/react.d.ts +4 -0
  438. package/es/site/data/components/select/demos/flat/react.js +73 -0
  439. package/es/site/data/components/select/demos/inline/index.d.ts +5 -0
  440. package/es/site/data/components/select/demos/inline/index.js +17 -0
  441. package/es/site/data/components/select/demos/inline/react.d.ts +4 -0
  442. package/es/site/data/components/select/demos/nowrap/index.d.ts +5 -0
  443. package/es/site/data/components/select/demos/nowrap/index.js +17 -0
  444. package/es/site/data/components/select/demos/nowrap/react.d.ts +4 -0
  445. package/es/site/data/components/select/demos/nowrap/react.js +41 -0
  446. package/es/site/data/components/select/demos/size/index.d.ts +1 -0
  447. package/es/site/data/components/select/demos/size/index.js +2 -1
  448. package/es/site/data/components/select/demos/size/react.d.ts +1 -0
  449. package/es/site/data/components/select/demos/size/react.js +93 -1
  450. package/es/site/data/components/steps/demos/vertical/index.d.ts +14 -0
  451. package/es/site/data/components/steps/demos/vertical/index.js +40 -0
  452. package/es/site/data/components/steps/demos/vertical/react.d.ts +14 -0
  453. package/es/site/data/components/steps/demos/vertical/react.js +124 -0
  454. package/es/site/data/components/switch/demos/onOff/react.js +1 -3
  455. package/es/site/data/components/table/demos/hideHeader/index.d.ts +12 -0
  456. package/es/site/data/components/table/demos/hideHeader/index.js +30 -0
  457. package/es/site/data/components/table/demos/hideHeader/react.d.ts +11 -0
  458. package/es/site/data/components/table/demos/hideHeader/react.js +60 -0
  459. package/es/site/data/components/table/demos/pagination/index.d.ts +12 -0
  460. package/es/site/data/components/table/demos/pagination/index.js +35 -0
  461. package/es/site/data/components/table/demos/pagination/react.d.ts +16 -0
  462. package/es/site/data/components/table/demos/pagination/react.js +65 -0
  463. package/es/site/data/components/tabs/demos/card/react.js +1 -15
  464. package/es/site/data/components/tabs/demos/closable/index.js +1 -1
  465. package/es/site/data/components/tabs/demos/closable/react.js +9 -3
  466. package/es/site/data/components/tabs/demos/scroll/index.d.ts +18 -0
  467. package/es/site/data/components/tabs/demos/scroll/index.js +87 -0
  468. package/es/site/data/components/tabs/demos/scroll/react.d.ts +18 -0
  469. package/es/site/data/components/tabs/demos/scroll/react.js +166 -0
  470. package/es/site/data/components/tabs/demos/vertical/react.js +1 -16
  471. package/es/site/data/components/tag/demos/draggable/index.d.ts +11 -0
  472. package/es/site/data/components/tag/demos/draggable/index.js +24 -0
  473. package/es/site/data/components/tag/demos/draggable/react.d.ts +11 -0
  474. package/es/site/data/components/tag/demos/draggable/react.js +62 -0
  475. package/es/site/data/components/tag/demos/tags/index.d.ts +12 -0
  476. package/es/site/data/components/tag/demos/tags/index.js +39 -0
  477. package/es/site/data/components/tag/demos/tags/react.d.ts +12 -0
  478. package/es/site/data/components/tag/demos/tags/react.js +83 -0
  479. package/es/site/src/pages/document/index.js +2 -3
  480. package/es/styles/fonts/iconfont.js +1 -1
  481. package/es/styles/fonts/ionicons.js +3 -3
  482. package/es/styles/global.js +1 -1
  483. package/hooks/useResizeObserver.ts +19 -7
  484. package/i18n/en-US.ts +6 -1
  485. package/index.ts +5 -3
  486. package/package.json +9 -5
  487. package/styles/fonts/iconfont.ts +1 -1
  488. package/styles/fonts/ionicons.ts +2 -3
  489. package/styles/global.ts +3 -3
  490. package/components/pagination/demos/noBoard.md +0 -22
  491. package/components/table/useResizeObserver.ts +0 -22
  492. package/components/tooltip/demos/confirm.md +0 -41
  493. package/es/components/table/useResizeObserver.d.ts +0 -2
  494. package/es/components/table/useResizeObserver.js +0 -20
  495. /package/components/select/demos/{noBorder.md → inline.md} +0 -0
  496. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.d.ts +0 -0
  497. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/index.js +0 -0
  498. /package/es/site/data/components/{select/demos/noBorder → copy/demos/basic}/react.d.ts +0 -0
  499. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.d.ts +0 -0
  500. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/index.js +0 -0
  501. /package/es/site/data/components/{pagination/demos/noBoard → copy/demos/children}/react.d.ts +0 -0
  502. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.d.ts +0 -0
  503. /package/es/site/data/components/{tooltip/demos/confirm → popover/demos/basic}/index.js +0 -0
  504. /package/es/site/data/components/select/demos/{noBorder → inline}/react.js +0 -0
@@ -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
+ }
@@ -35,8 +35,8 @@ export class DropdownMenu<
35
35
  @bind
36
36
  protected onMouseEnter(e: MouseEvent) {
37
37
  const dropdown = this.dropdown!;
38
- dropdown!.show();
39
- dropdown!.trigger('mouseenter', e);
38
+ dropdown.show();
39
+ dropdown.trigger('mouseenter', e);
40
40
  }
41
41
 
42
42
  @bind
@@ -63,7 +63,7 @@ function useKeyboardForDropdownMenu(dropdown: Dropdown) {
63
63
  const focus = () => focusByIndex(0);
64
64
 
65
65
  // In Cascader the menu may have been replaced by another menu, in this case,
66
- // if the dropdown has showed on mount the menu, add keydown listener
66
+ // if the dropdown has showed while we mounted the menu, add keydown listener
67
67
  if (dropdown.get('value')) {
68
68
  onShow();
69
69
  }
@@ -78,4 +78,4 @@ function useKeyboardForDropdownMenu(dropdown: Dropdown) {
78
78
  });
79
79
 
80
80
  return {lock};
81
- }
81
+ }
@@ -2,6 +2,7 @@ import {useInstance, findDomFromVNode} from 'intact';
2
2
  import type {Dropdown} from './';
3
3
  import {Options, position, Feedback} from '../position';
4
4
  import {noop} from 'intact-shared';
5
+ import {isObject} from 'intact-shared';
5
6
 
6
7
  export type FeedbackCallback = (feedback: Feedback) => void;
7
8
 
@@ -16,7 +17,16 @@ export function usePosition() {
16
17
  });
17
18
 
18
19
  (['of', 'position'] as const).forEach(item => {
19
- instance.watch(item, () => {
20
+ instance.watch(item, (newValue, oldValue) => {
21
+ // return if object is the same
22
+ if (
23
+ isObject(newValue) && isObject(oldValue) &&
24
+ // is not event object
25
+ !(newValue instanceof Event) &&
26
+ JSON.stringify(newValue) === JSON.stringify(oldValue)
27
+ ) {
28
+ return;
29
+ }
20
30
  if (instance.get('value')) {
21
31
  handle(noop);
22
32
  }
@@ -48,6 +58,7 @@ export function usePosition() {
48
58
  position(findDomFromVNode(instance.menuVNode!, true) as HTMLElement, {
49
59
  my: 'left top+8',
50
60
  at: 'left bottom',
61
+ collision: instance.get('collison'),
51
62
  ...pos,
52
63
  of: ofElement,
53
64
  using: _feedback => {
@@ -58,9 +58,23 @@ export class Editable<
58
58
  @bind
59
59
  private edit() {
60
60
  this.set('editing', true);
61
- nextTick(() => {
62
- this.inputRef.value!.select();
63
- });
61
+ /**
62
+ * Intact will update in nextTick, but Vue will call
63
+ * call updated method in nextTick of this nextTick
64
+ * so we should do it after two nextTicks
65
+ * https://github.com/ksc-fe/kpc/issues/847
66
+ *
67
+ * use binding this.select to Input $mounted event instead
68
+ */
69
+ // nextTick(() => {
70
+ // nextTick(() => {
71
+ // this.inputRef.value!.select();
72
+ // });
73
+ // });
74
+ }
75
+
76
+ @bind select() {
77
+ this.inputRef.value!.select();
64
78
  }
65
79
 
66
80
  @bind
@@ -33,6 +33,7 @@ const classNameObj = {
33
33
  ev-keydown={this.onKeydown}
34
34
  ref={this.inputRef}
35
35
  frozenOnInput
36
+ ev-$mounted={this.select}
36
37
  />
37
38
  </div>
38
39
  </div>
@@ -21,7 +21,7 @@ RemoteDemo.prototype.validateUserName = function(value) {
21
21
  };
22
22
 
23
23
  describe('Form', () => {
24
- // afterEach(() => unmount());
24
+ afterEach(() => unmount());
25
25
 
26
26
  it('validate', async () => {
27
27
  const [instance, element] = mount(BasicDemo, null, basicDemoData);
@@ -68,7 +68,7 @@ const {ellipsis, message, errorRef} = this.error;
68
68
  {message.value}
69
69
  </div>
70
70
  <Tooltip hoverable position="bottom">
71
- <Icon class="ion-ios-information-outline k-form-error-more" size="small" />
71
+ <Icon class="ion-ios-information-outline k-form-error-more" size="small" color="inherit" />
72
72
  <b:content>
73
73
  {message.value}
74
74
  </b:content>
@@ -7,9 +7,9 @@ const defaults = {
7
7
  item: {
8
8
  gap: `24px`,
9
9
  labelWidth: `80px`,
10
- get labelLineHeight() { return theme.default.height },
10
+ get labelHeight() { return theme.default.height },
11
11
  labelTextAlign: 'right',
12
- labelGap: '10px',
12
+ labelGap: '16px',
13
13
  get starColor() { return theme.color.danger },
14
14
  starGap: '3px',
15
15
 
@@ -40,29 +40,27 @@ setDefault(() => {
40
40
 
41
41
  export function makeItemStyles() {
42
42
  return css`
43
- display: table;
43
+ display: flex;
44
44
  position: relative;
45
- table-layout: fixed;
46
45
  &:not(:last-of-type) {
47
46
  margin-bottom: ${form.item.gap};
48
47
  }
49
- &.k-fluid {
50
- width: 100%;
48
+ &.k-fluid > .k-form-content {
49
+ flex: 1;
51
50
  }
52
51
  .k-form-label {
53
- display: table-cell;
52
+ display: flex;
53
+ align-items: center;
54
+ justify-content: ${form.item.labelTextAlign === 'right' ? 'end' : 'start'};
54
55
  width: ${form.item.labelWidth};
55
- text-align: ${form.item.labelTextAlign};
56
56
  padding-right: ${form.item.labelGap};
57
- line-height: ${form.item.labelLineHeight};
57
+ max-height: ${form.item.labelHeight};
58
58
  }
59
59
  .k-form-star {
60
60
  color: ${form.item.starColor};
61
61
  margin-right: ${form.item.starGap};
62
62
  }
63
63
  .k-form-content {
64
- display: table-cell;
65
- vertical-align: middle;
66
64
  position: relative;
67
65
  }
68
66
 
@@ -106,17 +104,15 @@ export function makeItemStyles() {
106
104
  }
107
105
 
108
106
  // nested
109
- .k-form-item {
110
- &,
111
- .k-form-content {
112
- display: block;
113
- width: auto;
114
- }
115
- }
107
+ // .k-form-item {
108
+ // &,
109
+ // .k-form-content {
110
+ // width: auto;
111
+ // }
112
+ // }
116
113
 
117
114
  // append
118
115
  .k-form-append {
119
- display: table-cell;
120
116
  padding: ${form.item.appendPadding};
121
117
  vertical-align: middle;
122
118
  }
@@ -128,7 +124,7 @@ export function makeFormStyles() {
128
124
  // layout
129
125
  &.k-inline {
130
126
  .k-form-item {
131
- display: inline-block;
127
+ display: inline-flex;
132
128
  vertical-align: top;
133
129
  margin-right: ${form.item.inlineGap};
134
130
  }
@@ -137,15 +133,14 @@ export function makeFormStyles() {
137
133
  }
138
134
  }
139
135
  &.k-vertical {
140
- .k-form-item,
141
- .k-form-label,
142
- .k-form-content {
143
- display: block;
136
+ .k-form-item {
137
+ flex-direction: column;
144
138
  }
145
139
  .k-form-label {
146
140
  width: auto;
147
141
  text-align: left;
148
- line-height: inherit;
142
+ padding: 0;
143
+ justify-content: start;
149
144
  margin-bottom: ${form.item.verticalLabelGap};
150
145
  }
151
146
  }
@@ -1,15 +1,16 @@
1
1
  import {useInstance} from 'intact';
2
2
  import {createContext} from '../context';
3
3
  import {hasDocumentAvailable, isObject, isNullOrUndefined} from 'intact-shared';
4
- import type * as EnquireJs from 'enquire.js';
4
+ // import type * as EnquireJs from 'enquire.js';
5
+ import enquire from 'enquire.js';
5
6
  import type {Row} from './row';
6
7
  import {useState} from '../../hooks/useState';
7
8
  import {Breakpoint, responsiveMap} from './constants';
8
9
 
9
- let enquire: typeof EnquireJs;
10
- if (hasDocumentAvailable) {
11
- enquire = require('enquire.js');
12
- }
10
+ // let enquire: typeof EnquireJs;
11
+ // if (hasDocumentAvailable) {
12
+ // enquire = require('enquire.js');
13
+ // }
13
14
 
14
15
  export const context = createContext<number>(0);
15
16
 
@@ -24,7 +25,7 @@ export function useGutter() {
24
25
  xs: false,
25
26
  });
26
27
 
27
- if (enquire) {
28
+ if (hasDocumentAvailable) {
28
29
  for (const key in responsiveMap) {
29
30
  enquire.register(responsiveMap[key as Breakpoint], {
30
31
  match() {
@@ -0,0 +1,44 @@
1
+ ---
2
+ title: 文本框自适应高度
3
+ order: 3.1
4
+ ---
5
+
6
+ 当`textarea`组件`rows`属性设置成`'auto'`时,组件的高度将会自适应,此时组件从1行高度开始,根据内容自动调整高度。
7
+ 你也可以通过对象`{min, max}`来设置文本框最小和最大的自动调整行数。
8
+
9
+ > 自适应高度,文本框将禁用鼠标拖拽调整大小
10
+
11
+ ```vdt
12
+ import {Input} from 'kpc';
13
+
14
+ <div>
15
+ <Input
16
+ v-model="value1"
17
+ type="textarea"
18
+ placeholder="please enter"
19
+ fluid
20
+ rows="auto"
21
+ />
22
+ <br />
23
+ <br />
24
+ <Input
25
+ v-model="value2"
26
+ type="textarea"
27
+ placeholder="please enter"
28
+ fluid
29
+ rows={{min: 3, max: 5}}
30
+ />
31
+ </div>
32
+ ```
33
+
34
+ ```ts
35
+ export default class extends Component {
36
+ static template = template;
37
+ static defaults() {
38
+ return {
39
+ value1: '',
40
+ value2: '',
41
+ }
42
+ }
43
+ }
44
+ ```
@@ -0,0 +1,16 @@
1
+ ---
2
+ title: 扁平化样式
3
+ order: 10
4
+ ---
5
+
6
+ 添加`flat`属性,展示扁平化样式
7
+
8
+ ```vdt
9
+ import {Input} from 'kpc';
10
+
11
+ <div>
12
+ <Input placeholder="Please enter" flat />
13
+ <br /><br />
14
+ <Input placeholder="Please enter" flat value="disabled" disabled />
15
+ </div>
16
+ ```
@@ -0,0 +1,12 @@
1
+ ---
2
+ title: 密码框
3
+ order: 9
4
+ ---
5
+
6
+ 当`type="password"`时,添加`showPassword`属性,即可展示带显隐密码按钮的密码框
7
+
8
+ ```vdt
9
+ import {Input} from 'kpc';
10
+
11
+ <Input placeholder="password" type="password" showPassword ref="__demo" />
12
+ ```
@@ -9,9 +9,9 @@ order: 3
9
9
  import {Input} from 'kpc';
10
10
 
11
11
  <div>
12
- <Input type="textarea" placeholder="please enter" />
12
+ <Input type="textarea" placeholder="please enter" fluid />
13
13
  <br />
14
14
  <br />
15
- <Input type="textarea" rows="5" placeholder="please enter" />
15
+ <Input type="textarea" rows="5" placeholder="please enter" fluid />
16
16
  </div>
17
17
  ```
@@ -27,6 +27,8 @@ sidebar: doc
27
27
  | stackClearIcon | 是否将清空按钮覆盖在`suffix`按钮上展示来节省空间 | `boolean` | `false` |
28
28
  | frozenOnInput | 是否在输入的过程中冻结`value`更新到视图 | `boolean` | `false` |
29
29
  | inline | 是否展示内联模式 | `boolean` | `flase` |
30
+ | resize | 指定textarea输入框拖动调整大小的方向,默认只能垂直方向调整 | `"none"` &#124; `"vertical"` &#124; `"horizontal"` &#124; `"both"`' | `"vertical"` |
31
+ | flat | 是否展示扁平样式 | `boolean` | `false` |
30
32
 
31
33
  ## Search
32
34
 
@@ -1,7 +1,12 @@
1
1
  import BasicDemo from '~/components/input/demos/basic';
2
- import {mount, unmount, dispatchEvent, wait} from '../../test/utils';
2
+ import {mount, unmount, dispatchEvent, wait, getElement} from '../../test/utils';
3
3
  import SearchDemo from '~/components/input/demos/search';
4
4
  import FrozenDemo from '~/components/input/demos/frozen';
5
+ import AutoRowsDemo from '~/components/input/demos/autoRows';
6
+ import PasswordDemo from '~/components/input/demos/password';
7
+ import {Input} from './';
8
+ import {Dialog} from '../dialog';
9
+ import { Component } from 'intact';
5
10
 
6
11
  describe('Input', () => {
7
12
  afterEach(() => {unmount()});
@@ -70,4 +75,95 @@ describe('Input', () => {
70
75
  await wait();
71
76
  expect(input2.value).to.eql('#112233');
72
77
  });
78
+
79
+ it('should auto expand or shrink textarea', async () => {
80
+ const [instance, element] = mount(AutoRowsDemo);
81
+ const [textarea1, textarea2] = element.querySelectorAll('textarea');
82
+ // const lineHeight = parseInt(getComputedStyle(textarea1).lineHeight);
83
+
84
+ instance.set<string>('value1', 'a\nb');
85
+ await wait();
86
+ expect(textarea1.style.height).to.eql('50px');
87
+
88
+ instance.set<string>('value1', 'a');
89
+ await wait();
90
+ expect(textarea1.style.height).to.eql('32px');
91
+
92
+ instance.set<string>('value2', 'a');
93
+ await wait();
94
+ expect(textarea2.style.height).to.eql('68px');
95
+
96
+ instance.set<string>('value2', 'a\nb\nc')
97
+ await wait();
98
+ expect(textarea2.style.height).to.eql('68px');
99
+
100
+ instance.set<string>('value2', 'a\nb\nc\nd')
101
+ await wait();
102
+ expect(textarea2.style.height).to.eql('86px');
103
+
104
+ instance.set<string>('value2', 'a\nb\nc\nd\ne\nf\ng\nh')
105
+ await wait();
106
+ expect(textarea2.style.height).to.eql('104px');
107
+ });
108
+
109
+ it('should show or hide password', async () => {
110
+ const [instance, element] = mount(PasswordDemo);
111
+ const input = element.querySelector<HTMLInputElement>('input')!;
112
+ const icon = element.querySelector<HTMLElement>('.k-icon')!;
113
+ const inputInstance = instance.refs.__demo as Input;
114
+
115
+ icon.click();
116
+ await wait();
117
+ expect(input.type).to.eql('text');
118
+ expect(element.innerHTML).to.matchSnapshot();
119
+
120
+ icon.click();
121
+ await wait();
122
+ expect(input.type).to.eql('password');
123
+ expect(element.innerHTML).to.matchSnapshot();
124
+
125
+ // simulate receive type
126
+ inputInstance.$props.type = 'number';
127
+ (inputInstance as any).trigger('$receive:type', 'number');
128
+ await wait();
129
+ expect(input.type).to.eql('number');
130
+ expect(icon.parentElement!.parentElement).to.eql(null);
131
+ expect(element.innerHTML).to.matchSnapshot();
132
+
133
+ // simulate receive showPassword
134
+ inputInstance.$props.type = 'password';
135
+ inputInstance.$props.showPassword = false;
136
+ (inputInstance as any).trigger('$receive:type', 'password');
137
+ (inputInstance as any).trigger('$receive:showPassword', false);
138
+ await wait();
139
+ expect(input.type).to.eql('password');
140
+ expect(element.querySelector<HTMLElement>('.k-icon')).to.eql(null);
141
+ expect(element.innerHTML).to.matchSnapshot();
142
+ });
143
+
144
+ it('should set width when dialog show and input mounted', async () => {
145
+ class Demo extends Component<{show: boolean}> {
146
+ static template = `
147
+ var Dialog = this.Dialog;
148
+ var Input = this.Input;
149
+ <Dialog value={this.get('show')}>
150
+ <Input autoWidth placeholder="test" v-if={this.get('show')} />
151
+ </Dialog>
152
+ `;
153
+ static defaults() {
154
+ return {
155
+ show: false,
156
+ };
157
+ }
158
+ private Dialog = Dialog;
159
+ private Input = Input;
160
+ }
161
+
162
+ const [instance] = mount(Demo);
163
+ instance.set('show', true);
164
+ await wait(50);
165
+ const dialog = getElement('.k-dialog')!;
166
+ const width = parseInt(dialog.querySelector<HTMLInputElement>('.k-input-inner')!.style.width);
167
+ expect(width).to.gt(1);
168
+ });
73
169
  });