vxe-pc-ui 3.0.1 → 3.0.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 (367) hide show
  1. package/README.md +23 -25
  2. package/es/calendar/index.js +12 -0
  3. package/es/calendar/src/calendar.js +1227 -0
  4. package/es/calendar/style.css +247 -0
  5. package/es/calendar/style.min.css +1 -0
  6. package/es/checkbox/src/checkbox.js +6 -1
  7. package/es/checkbox/src/group.js +6 -1
  8. package/es/collapse/index.js +12 -0
  9. package/es/collapse/src/collapse-pane.js +39 -0
  10. package/es/collapse/src/collapse.js +39 -0
  11. package/es/collapse/style.css +0 -0
  12. package/es/collapse/style.min.css +0 -0
  13. package/es/collapse-pane/index.js +12 -0
  14. package/es/collapse-pane/style.css +0 -0
  15. package/es/collapse-pane/style.min.css +0 -0
  16. package/es/components.js +27 -27
  17. package/es/date-picker/src/date-picker.js +17 -13
  18. package/es/drawer/src/drawer.js +17 -12
  19. package/es/form/index.js +13 -0
  20. package/es/form/render/index.js +461 -0
  21. package/es/form/src/form-config-item.js +201 -0
  22. package/es/form/src/form-gather.js +87 -0
  23. package/es/form/src/form-item.js +291 -0
  24. package/es/form/src/form.js +762 -0
  25. package/es/form/src/itemInfo.js +43 -0
  26. package/es/form/src/render.js +78 -0
  27. package/es/form/src/util.js +66 -0
  28. package/es/form/style.css +470 -0
  29. package/es/form/style.min.css +1 -0
  30. package/es/form-gather/index.js +12 -0
  31. package/es/form-gather/style.css +0 -0
  32. package/es/form-gather/style.min.css +0 -0
  33. package/es/form-item/index.js +12 -0
  34. package/es/form-item/style.css +0 -0
  35. package/es/form-item/style.min.css +0 -0
  36. package/es/icon/style.css +1 -1
  37. package/es/icon-picker/src/icon-picker.js +5 -1
  38. package/es/image/src/preview.js +1 -2
  39. package/es/input/src/input.js +19 -15
  40. package/es/list/index.js +12 -0
  41. package/es/list/src/list.js +373 -0
  42. package/es/list/style.css +28 -0
  43. package/es/list/style.min.css +1 -0
  44. package/es/loading/src/loading.js +5 -0
  45. package/es/menu/src/menu.js +6 -2
  46. package/es/modal/src/modal.js +7 -4
  47. package/es/number-input/src/number-input.js +11 -7
  48. package/es/pager/style.css +303 -0
  49. package/es/pager/style.min.css +1 -0
  50. package/es/password-input/src/password-input.js +7 -3
  51. package/es/pulldown/src/pulldown.js +6 -2
  52. package/es/radio/src/button.js +6 -2
  53. package/es/radio/src/group.js +6 -2
  54. package/es/radio/src/radio.js +6 -2
  55. package/es/select/src/select.js +16 -1
  56. package/es/select/src/util.js +2 -1
  57. package/es/style.css +1 -1
  58. package/es/style.min.css +1 -1
  59. package/es/switch/src/switch.js +6 -2
  60. package/es/tabs/src/tabs.js +8 -3
  61. package/es/textarea/src/textarea.js +9 -5
  62. package/es/tooltip/src/tooltip.js +6 -1
  63. package/es/tree/index.js +12 -0
  64. package/es/tree/src/tree.js +1216 -0
  65. package/es/tree/style.css +219 -0
  66. package/es/tree/style.min.css +1 -0
  67. package/es/tree-select/index.js +12 -0
  68. package/es/tree-select/src/tree-select.js +685 -0
  69. package/es/tree-select/style.css +129 -0
  70. package/es/tree-select/style.min.css +1 -0
  71. package/es/ui/index.js +1 -1
  72. package/es/ui/src/log.js +1 -1
  73. package/es/ui/src/vn.js +1 -1
  74. package/es/upload/src/upload.js +9 -5
  75. package/es/vxe-calendar/index.js +3 -0
  76. package/es/vxe-calendar/style.css +247 -0
  77. package/es/vxe-calendar/style.min.css +1 -0
  78. package/es/vxe-collapse/index.js +3 -0
  79. package/es/vxe-collapse/style.css +0 -0
  80. package/es/vxe-collapse/style.min.css +0 -0
  81. package/es/vxe-collapse-pane/index.js +3 -0
  82. package/es/vxe-collapse-pane/style.css +0 -0
  83. package/es/vxe-collapse-pane/style.min.css +0 -0
  84. package/es/vxe-form/index.js +3 -0
  85. package/es/vxe-form/style.css +470 -0
  86. package/es/vxe-form/style.min.css +1 -0
  87. package/es/vxe-form-gather/index.js +3 -0
  88. package/es/vxe-form-gather/style.css +0 -0
  89. package/es/vxe-form-gather/style.min.css +0 -0
  90. package/es/vxe-form-item/index.js +3 -0
  91. package/es/vxe-form-item/style.css +0 -0
  92. package/es/vxe-form-item/style.min.css +0 -0
  93. package/es/vxe-list/index.js +3 -0
  94. package/es/vxe-list/style.css +28 -0
  95. package/es/vxe-list/style.min.css +1 -0
  96. package/es/vxe-pager/index.js +3 -0
  97. package/es/vxe-pager/style.css +303 -0
  98. package/es/vxe-pager/style.min.css +1 -0
  99. package/es/vxe-tree/index.js +3 -0
  100. package/es/vxe-tree/style.css +219 -0
  101. package/es/vxe-tree/style.min.css +1 -0
  102. package/es/vxe-tree-select/index.js +3 -0
  103. package/es/vxe-tree-select/style.css +129 -0
  104. package/es/vxe-tree-select/style.min.css +1 -0
  105. package/lib/calendar/index.js +19 -0
  106. package/lib/calendar/index.min.js +1 -0
  107. package/lib/calendar/src/calendar.js +1286 -0
  108. package/lib/calendar/src/calendar.min.js +1 -0
  109. package/lib/calendar/style/index.js +1 -0
  110. package/lib/calendar/style/style.css +247 -0
  111. package/lib/calendar/style/style.min.css +1 -0
  112. package/lib/checkbox/src/checkbox.js +6 -1
  113. package/lib/checkbox/src/checkbox.min.js +1 -1
  114. package/lib/checkbox/src/group.js +6 -1
  115. package/lib/checkbox/src/group.min.js +1 -1
  116. package/lib/collapse/index.js +19 -0
  117. package/lib/collapse/index.min.js +1 -0
  118. package/lib/collapse/src/collapse-pane.js +48 -0
  119. package/lib/collapse/src/collapse-pane.min.js +1 -0
  120. package/lib/collapse/src/collapse.js +48 -0
  121. package/lib/collapse/src/collapse.min.js +1 -0
  122. package/lib/collapse/style/index.js +1 -0
  123. package/lib/collapse/style/style.css +0 -0
  124. package/lib/collapse/style/style.min.css +0 -0
  125. package/lib/collapse-pane/index.js +19 -0
  126. package/lib/collapse-pane/index.min.js +1 -0
  127. package/lib/collapse-pane/style/index.js +1 -0
  128. package/lib/collapse-pane/style/style.css +0 -0
  129. package/lib/collapse-pane/style/style.min.css +0 -0
  130. package/lib/components.js +114 -39
  131. package/lib/components.min.js +1 -1
  132. package/lib/date-picker/src/date-picker.js +17 -13
  133. package/lib/date-picker/src/date-picker.min.js +1 -1
  134. package/lib/drawer/src/drawer.js +17 -12
  135. package/lib/drawer/src/drawer.min.js +1 -1
  136. package/lib/form/index.js +20 -0
  137. package/lib/form/index.min.js +1 -0
  138. package/lib/form/render/index.js +509 -0
  139. package/lib/form/render/index.min.js +1 -0
  140. package/lib/form/src/form-config-item.js +210 -0
  141. package/lib/form/src/form-config-item.min.js +1 -0
  142. package/lib/form/src/form-gather.js +99 -0
  143. package/lib/form/src/form-gather.min.js +1 -0
  144. package/lib/form/src/form-item.js +299 -0
  145. package/lib/form/src/form-item.min.js +1 -0
  146. package/lib/form/src/form.js +856 -0
  147. package/lib/form/src/form.min.js +1 -0
  148. package/lib/form/src/itemInfo.js +60 -0
  149. package/lib/form/src/itemInfo.min.js +1 -0
  150. package/lib/form/src/render.js +94 -0
  151. package/lib/form/src/render.min.js +1 -0
  152. package/lib/form/src/util.js +93 -0
  153. package/lib/form/src/util.min.js +1 -0
  154. package/lib/form/style/index.js +1 -0
  155. package/lib/form/style/style.css +470 -0
  156. package/lib/form/style/style.min.css +1 -0
  157. package/lib/form-gather/index.js +19 -0
  158. package/lib/form-gather/index.min.js +1 -0
  159. package/lib/form-gather/style/index.js +1 -0
  160. package/lib/form-gather/style/style.css +0 -0
  161. package/lib/form-gather/style/style.min.css +0 -0
  162. package/lib/form-item/index.js +19 -0
  163. package/lib/form-item/index.min.js +1 -0
  164. package/lib/form-item/style/index.js +1 -0
  165. package/lib/form-item/style/style.css +0 -0
  166. package/lib/form-item/style/style.min.css +0 -0
  167. package/lib/icon/style/style.css +1 -1
  168. package/lib/icon/style/style.min.css +1 -1
  169. package/lib/icon-picker/src/icon-picker.js +5 -1
  170. package/lib/icon-picker/src/icon-picker.min.js +1 -1
  171. package/lib/image/src/preview.js +1 -2
  172. package/lib/image/src/preview.min.js +1 -1
  173. package/lib/index.umd.js +11284 -5009
  174. package/lib/index.umd.min.js +1 -1
  175. package/lib/input/src/input.js +19 -15
  176. package/lib/input/src/input.min.js +1 -1
  177. package/lib/list/index.js +19 -0
  178. package/lib/list/index.min.js +1 -0
  179. package/lib/list/src/list.js +415 -0
  180. package/lib/list/src/list.min.js +1 -0
  181. package/lib/list/style/index.js +1 -0
  182. package/lib/list/style/style.css +28 -0
  183. package/lib/list/style/style.min.css +1 -0
  184. package/lib/loading/src/loading.js +5 -0
  185. package/lib/loading/src/loading.min.js +1 -1
  186. package/lib/menu/src/menu.js +6 -2
  187. package/lib/menu/src/menu.min.js +1 -1
  188. package/lib/modal/src/modal.js +7 -4
  189. package/lib/modal/src/modal.min.js +1 -1
  190. package/lib/number-input/src/number-input.js +11 -7
  191. package/lib/number-input/src/number-input.min.js +1 -1
  192. package/lib/pager/style/index.js +1 -0
  193. package/lib/pager/style/style.css +303 -0
  194. package/lib/pager/style/style.min.css +1 -0
  195. package/lib/password-input/src/password-input.js +7 -3
  196. package/lib/password-input/src/password-input.min.js +1 -1
  197. package/lib/pulldown/src/pulldown.js +6 -2
  198. package/lib/pulldown/src/pulldown.min.js +1 -1
  199. package/lib/radio/src/button.js +6 -2
  200. package/lib/radio/src/button.min.js +1 -1
  201. package/lib/radio/src/group.js +6 -2
  202. package/lib/radio/src/group.min.js +1 -1
  203. package/lib/radio/src/radio.js +6 -2
  204. package/lib/radio/src/radio.min.js +1 -1
  205. package/lib/select/src/select.js +16 -1
  206. package/lib/select/src/select.min.js +1 -1
  207. package/lib/select/src/util.js +2 -1
  208. package/lib/style.css +1 -1
  209. package/lib/style.min.css +1 -1
  210. package/lib/switch/src/switch.js +6 -2
  211. package/lib/switch/src/switch.min.js +1 -1
  212. package/lib/tabs/src/tabs.js +8 -3
  213. package/lib/tabs/src/tabs.min.js +1 -1
  214. package/lib/textarea/src/textarea.js +9 -5
  215. package/lib/textarea/src/textarea.min.js +1 -1
  216. package/lib/tooltip/src/tooltip.js +6 -1
  217. package/lib/tooltip/src/tooltip.min.js +1 -1
  218. package/lib/tree/index.js +19 -0
  219. package/lib/tree/index.min.js +1 -0
  220. package/lib/tree/src/tree.js +1324 -0
  221. package/lib/tree/src/tree.min.js +1 -0
  222. package/lib/tree/style/index.js +1 -0
  223. package/lib/tree/style/style.css +219 -0
  224. package/lib/tree/style/style.min.css +1 -0
  225. package/lib/tree-select/index.js +19 -0
  226. package/lib/tree-select/index.min.js +1 -0
  227. package/lib/tree-select/src/tree-select.js +695 -0
  228. package/lib/tree-select/src/tree-select.min.js +1 -0
  229. package/lib/tree-select/style/index.js +1 -0
  230. package/lib/tree-select/style/style.css +129 -0
  231. package/lib/tree-select/style/style.min.css +1 -0
  232. package/lib/ui/index.js +1 -1
  233. package/lib/ui/index.min.js +1 -1
  234. package/lib/ui/src/log.js +1 -1
  235. package/lib/ui/src/log.min.js +1 -1
  236. package/lib/ui/src/vn.js +1 -1
  237. package/lib/ui/src/vn.min.js +1 -1
  238. package/lib/upload/src/upload.js +9 -5
  239. package/lib/upload/src/upload.min.js +1 -1
  240. package/lib/vxe-calendar/index.js +23 -0
  241. package/lib/vxe-calendar/index.min.js +1 -0
  242. package/lib/vxe-calendar/style/index.js +1 -0
  243. package/lib/vxe-calendar/style/style.css +247 -0
  244. package/lib/vxe-calendar/style/style.min.css +1 -0
  245. package/lib/vxe-collapse/index.js +23 -0
  246. package/lib/vxe-collapse/index.min.js +1 -0
  247. package/lib/vxe-collapse/style/index.js +1 -0
  248. package/lib/vxe-collapse/style/style.css +0 -0
  249. package/lib/vxe-collapse/style/style.min.css +0 -0
  250. package/lib/vxe-collapse-pane/index.js +23 -0
  251. package/lib/vxe-collapse-pane/index.min.js +1 -0
  252. package/lib/vxe-collapse-pane/style/index.js +1 -0
  253. package/lib/vxe-collapse-pane/style/style.css +0 -0
  254. package/lib/vxe-collapse-pane/style/style.min.css +0 -0
  255. package/lib/vxe-form/index.js +23 -0
  256. package/lib/vxe-form/index.min.js +1 -0
  257. package/lib/vxe-form/style/index.js +1 -0
  258. package/lib/vxe-form/style/style.css +470 -0
  259. package/lib/vxe-form/style/style.min.css +1 -0
  260. package/lib/vxe-form-gather/index.js +23 -0
  261. package/lib/vxe-form-gather/index.min.js +1 -0
  262. package/lib/vxe-form-gather/style/index.js +1 -0
  263. package/lib/vxe-form-gather/style/style.css +0 -0
  264. package/lib/vxe-form-gather/style/style.min.css +0 -0
  265. package/lib/vxe-form-item/index.js +23 -0
  266. package/lib/vxe-form-item/index.min.js +1 -0
  267. package/lib/vxe-form-item/style/index.js +1 -0
  268. package/lib/vxe-form-item/style/style.css +0 -0
  269. package/lib/vxe-form-item/style/style.min.css +0 -0
  270. package/lib/vxe-list/index.js +23 -0
  271. package/lib/vxe-list/index.min.js +1 -0
  272. package/lib/vxe-list/style/index.js +1 -0
  273. package/lib/vxe-list/style/style.css +28 -0
  274. package/lib/vxe-list/style/style.min.css +1 -0
  275. package/lib/vxe-pager/index.js +23 -0
  276. package/lib/vxe-pager/index.min.js +1 -0
  277. package/lib/vxe-pager/style/index.js +1 -0
  278. package/lib/vxe-pager/style/style.css +303 -0
  279. package/lib/vxe-pager/style/style.min.css +1 -0
  280. package/lib/vxe-tree/index.js +23 -0
  281. package/lib/vxe-tree/index.min.js +1 -0
  282. package/lib/vxe-tree/style/index.js +1 -0
  283. package/lib/vxe-tree/style/style.css +219 -0
  284. package/lib/vxe-tree/style/style.min.css +1 -0
  285. package/lib/vxe-tree-select/index.js +23 -0
  286. package/lib/vxe-tree-select/index.min.js +1 -0
  287. package/lib/vxe-tree-select/style/index.js +1 -0
  288. package/lib/vxe-tree-select/style/style.css +129 -0
  289. package/lib/vxe-tree-select/style/style.min.css +1 -0
  290. package/package.json +1 -1
  291. package/packages/calendar/index.ts +16 -0
  292. package/packages/calendar/src/calendar.ts +1281 -0
  293. package/packages/checkbox/src/checkbox.ts +7 -1
  294. package/packages/checkbox/src/group.ts +8 -2
  295. package/packages/collapse/index.ts +16 -0
  296. package/packages/collapse/src/collapse-pane.ts +47 -0
  297. package/packages/collapse/src/collapse.ts +47 -0
  298. package/packages/collapse-pane/index.ts +16 -0
  299. package/packages/components.ts +27 -27
  300. package/packages/date-picker/src/date-picker.ts +18 -13
  301. package/packages/drawer/src/drawer.ts +18 -12
  302. package/packages/form/index.ts +17 -0
  303. package/packages/form/render/index.ts +499 -0
  304. package/packages/form/src/form-config-item.ts +219 -0
  305. package/packages/form/src/form-gather.ts +104 -0
  306. package/packages/form/src/form-item.ts +322 -0
  307. package/packages/form/src/form.ts +809 -0
  308. package/packages/form/src/itemInfo.ts +47 -0
  309. package/packages/form/src/render.ts +98 -0
  310. package/packages/form/src/util.ts +80 -0
  311. package/packages/form-gather/index.ts +16 -0
  312. package/packages/form-item/index.ts +16 -0
  313. package/packages/icon-picker/src/icon-picker.ts +6 -1
  314. package/packages/image/src/preview.ts +1 -2
  315. package/packages/input/src/input.ts +20 -15
  316. package/packages/layout-footer/src/layout-footer.ts +1 -0
  317. package/packages/list/index.ts +16 -0
  318. package/packages/list/src/list.ts +403 -0
  319. package/packages/loading/src/loading.ts +6 -0
  320. package/packages/menu/src/menu.ts +7 -2
  321. package/packages/modal/src/modal.ts +8 -4
  322. package/packages/number-input/src/number-input.ts +12 -7
  323. package/packages/password-input/src/password-input.ts +8 -3
  324. package/packages/pulldown/src/pulldown.ts +7 -2
  325. package/packages/radio/src/button.ts +7 -2
  326. package/packages/radio/src/group.ts +7 -2
  327. package/packages/radio/src/radio.ts +7 -2
  328. package/packages/select/src/select.ts +17 -1
  329. package/packages/select/src/util.ts +4 -3
  330. package/packages/switch/src/switch.ts +7 -2
  331. package/packages/tabs/src/tabs.ts +9 -3
  332. package/packages/textarea/src/textarea.ts +10 -5
  333. package/packages/tooltip/src/tooltip.ts +7 -1
  334. package/packages/tree/index.ts +16 -0
  335. package/packages/tree/src/tree.ts +1292 -0
  336. package/packages/tree-select/index.ts +16 -0
  337. package/packages/tree-select/src/tree-select.ts +743 -0
  338. package/packages/ui/src/vn.ts +1 -1
  339. package/packages/upload/src/upload.ts +10 -5
  340. package/types/components/calendar.d.ts +6 -0
  341. package/types/components/colgroup.d.ts +1 -0
  342. package/types/components/column.d.ts +1 -0
  343. package/types/components/drawer.d.ts +11 -10
  344. package/types/components/form-item.d.ts +1 -1
  345. package/types/components/form.d.ts +8 -1
  346. package/types/components/list.d.ts +1 -0
  347. package/types/components/table.d.ts +43 -4
  348. package/types/components/toolbar.d.ts +5 -0
  349. package/types/components/tree-select.d.ts +4 -0
  350. package/types/ui/index.d.ts +0 -5
  351. package/types/ui/renderer.d.ts +37 -36
  352. package/types/handles/form-design.d.ts +0 -4
  353. package/types/handles/index.d.ts +0 -3
  354. package/types/handles/list-design.d.ts +0 -4
  355. package/types/handles/table.d.ts +0 -4
  356. /package/es/icon/style/{iconfont.1725723159302.ttf → iconfont.1725869586078.ttf} +0 -0
  357. /package/es/icon/style/{iconfont.1725723159302.woff → iconfont.1725869586078.woff} +0 -0
  358. /package/es/icon/style/{iconfont.1725723159302.woff2 → iconfont.1725869586078.woff2} +0 -0
  359. /package/es/{iconfont.1725723159302.ttf → iconfont.1725869586078.ttf} +0 -0
  360. /package/es/{iconfont.1725723159302.woff → iconfont.1725869586078.woff} +0 -0
  361. /package/es/{iconfont.1725723159302.woff2 → iconfont.1725869586078.woff2} +0 -0
  362. /package/lib/icon/style/{iconfont.1725723159302.ttf → iconfont.1725869586078.ttf} +0 -0
  363. /package/lib/icon/style/{iconfont.1725723159302.woff → iconfont.1725869586078.woff} +0 -0
  364. /package/lib/icon/style/{iconfont.1725723159302.woff2 → iconfont.1725869586078.woff2} +0 -0
  365. /package/lib/{iconfont.1725723159302.ttf → iconfont.1725869586078.ttf} +0 -0
  366. /package/lib/{iconfont.1725723159302.woff → iconfont.1725869586078.woff} +0 -0
  367. /package/lib/{iconfont.1725723159302.woff2 → iconfont.1725869586078.woff2} +0 -0
@@ -128,6 +128,11 @@ export default defineVxeComponent({
128
128
  const $xeDrawer = this;
129
129
  $xeDrawer.$emit(type, createEvent(evnt, { $drawer: $xeDrawer }, params));
130
130
  },
131
+ emitModel(value) {
132
+ const $xeDrawer = this;
133
+ $xeDrawer.$emit('modelValue', value);
134
+ $xeDrawer.$emit('input', value);
135
+ },
131
136
  open() {
132
137
  const $xeDrawer = this;
133
138
  return $xeDrawer.openDrawer();
@@ -180,7 +185,7 @@ export default defineVxeComponent({
180
185
  $xeDrawer.dispatchEvent('before-hide', params, null);
181
186
  setTimeout(() => {
182
187
  reactData.visible = false;
183
- $xeDrawer.$emit('input', false);
188
+ $xeDrawer.emitModel(false);
184
189
  $xeDrawer.dispatchEvent('hide', params, null);
185
190
  }, 200);
186
191
  }
@@ -234,7 +239,7 @@ export default defineVxeComponent({
234
239
  }
235
240
  const type = '';
236
241
  const params = { type };
237
- $xeDrawer.$emit('input', true);
242
+ $xeDrawer.emitModel(true);
238
243
  $xeDrawer.dispatchEvent('show', params, null);
239
244
  });
240
245
  }, 10);
@@ -286,14 +291,14 @@ export default defineVxeComponent({
286
291
  return [
287
292
  h('div', {
288
293
  class: 'vxe-drawer--header-title'
289
- }, titleSlot ? getSlotVNs(titleSlot({ $drawer: $xeDrawer })) : (title ? getFuncText(title) : getI18n('vxe.alert.title'))),
294
+ }, titleSlot ? getSlotVNs(titleSlot({ $drawer: $xeDrawer }, h)) : (title ? getFuncText(title) : getI18n('vxe.alert.title'))),
290
295
  h('div', {
291
296
  class: 'vxe-drawer--header-right'
292
297
  }, [
293
298
  cornerSlot
294
299
  ? h('div', {
295
300
  class: 'vxe-drawer--corner-wrapper'
296
- }, getSlotVNs(cornerSlot({ $drawer: $xeDrawer })))
301
+ }, getSlotVNs(cornerSlot({ $drawer: $xeDrawer }, h)))
297
302
  : renderEmptyElement($xeDrawer),
298
303
  showClose
299
304
  ? h('div', {
@@ -324,7 +329,7 @@ export default defineVxeComponent({
324
329
  class: ['vxe-drawer--header', {
325
330
  'is--ellipsis': showTitleOverflow
326
331
  }]
327
- }, headerSlot ? getSlotVNs(headerSlot({ $drawer: $xeDrawer })) : $xeDrawer.renderTitles(h));
332
+ }, headerSlot ? getSlotVNs(headerSlot({ $drawer: $xeDrawer }, h)) : $xeDrawer.renderTitles(h));
328
333
  }
329
334
  return renderEmptyElement($xeDrawer);
330
335
  },
@@ -342,19 +347,19 @@ export default defineVxeComponent({
342
347
  leftSlot
343
348
  ? h('div', {
344
349
  class: 'vxe-drawer--body-left'
345
- }, getSlotVNs(leftSlot({ $drawer: $xeDrawer })))
350
+ }, getSlotVNs(leftSlot({ $drawer: $xeDrawer }, h)))
346
351
  : renderEmptyElement($xeDrawer),
347
352
  h('div', {
348
353
  class: 'vxe-drawer--body-default'
349
354
  }, [
350
355
  h('div', {
351
356
  class: 'vxe-drawer--content'
352
- }, defaultSlot ? getSlotVNs(defaultSlot({ $drawer: $xeDrawer })) : getFuncText(content))
357
+ }, defaultSlot ? getSlotVNs(defaultSlot({ $drawer: $xeDrawer }, h)) : getFuncText(content))
353
358
  ]),
354
359
  rightSlot
355
360
  ? h('div', {
356
361
  class: 'vxe-drawer--body-right'
357
- }, getSlotVNs(rightSlot({ $drawer: $xeDrawer })))
362
+ }, getSlotVNs(rightSlot({ $drawer: $xeDrawer }, h)))
358
363
  : renderEmptyElement($xeDrawer),
359
364
  h(VxeLoadingComponent, {
360
365
  class: 'vxe-drawer--loading',
@@ -402,10 +407,10 @@ export default defineVxeComponent({
402
407
  }, [
403
408
  h('div', {
404
409
  class: 'vxe-drawer--footer-left'
405
- }, lfSlot ? getSlotVNs(lfSlot({ $drawer: $xeDrawer })) : []),
410
+ }, lfSlot ? getSlotVNs(lfSlot({ $drawer: $xeDrawer }, h)) : []),
406
411
  h('div', {
407
412
  class: 'vxe-drawer--footer-right'
408
- }, rfSlot ? getSlotVNs(rfSlot({ $drawer: $xeDrawer })) : btnVNs)
413
+ }, rfSlot ? getSlotVNs(rfSlot({ $drawer: $xeDrawer }, h)) : btnVNs)
409
414
  ]);
410
415
  },
411
416
  renderFooter(h) {
@@ -417,7 +422,7 @@ export default defineVxeComponent({
417
422
  if (props.showFooter) {
418
423
  return h('div', {
419
424
  class: 'vxe-drawer--footer'
420
- }, footerSlot ? getSlotVNs(footerSlot({ $drawer: $xeDrawer })) : [$xeDrawer.renderDefaultFooter(h)]);
425
+ }, footerSlot ? getSlotVNs(footerSlot({ $drawer: $xeDrawer }, h)) : [$xeDrawer.renderDefaultFooter(h)]);
421
426
  }
422
427
  return renderEmptyElement($xeDrawer);
423
428
  },
@@ -460,7 +465,7 @@ export default defineVxeComponent({
460
465
  asideSlot
461
466
  ? h('div', {
462
467
  class: 'vxe-drawer--aside'
463
- }, getSlotVNs(asideSlot({ $drawer: $xeDrawer })))
468
+ }, getSlotVNs(asideSlot({ $drawer: $xeDrawer }, h)))
464
469
  : renderEmptyElement($xeDrawer),
465
470
  h('div', {
466
471
  class: 'vxe-drawer--container'
@@ -0,0 +1,13 @@
1
+ import { VxeUI } from '@vxe-ui/core';
2
+ import VxeFormComponent from './src/form';
3
+ import { dynamicApp } from '../dynamics';
4
+ import './render';
5
+ export const VxeForm = Object.assign(VxeFormComponent, {
6
+ install(app) {
7
+ app.component(VxeFormComponent.name, VxeFormComponent);
8
+ }
9
+ });
10
+ dynamicApp.use(VxeForm);
11
+ VxeUI.component(VxeFormComponent);
12
+ export const Form = VxeForm;
13
+ export default VxeForm;
@@ -0,0 +1,461 @@
1
+ import XEUtils from 'xe-utils';
2
+ import { renderer } from '../../ui';
3
+ import { getOnName, getModelEvent, getChangeEvent } from '../../ui/src/vn';
4
+ import { errLog } from '../../ui/src/log';
5
+ const componentDefaultModelProp = 'value';
6
+ /**
7
+ * 已废弃
8
+ * @deprecated
9
+ */
10
+ function getOldComponentName(name) {
11
+ return `vxe-${name.replace('$', '')}`;
12
+ }
13
+ /**
14
+ * 已废弃
15
+ * @deprecated
16
+ */
17
+ function getOldComponent({ name }) {
18
+ return getOldComponentName(name);
19
+ }
20
+ function getDefaultComponent({ name }) {
21
+ return name;
22
+ }
23
+ function getNativeAttrs(renderOpts) {
24
+ let { name, attrs } = renderOpts;
25
+ if (name === 'input') {
26
+ attrs = Object.assign({ type: 'text' }, attrs);
27
+ }
28
+ return attrs;
29
+ }
30
+ function getComponentFormItemProps(renderOpts, params, value, defaultProps) {
31
+ return XEUtils.assign({}, defaultProps, renderOpts.props, { [componentDefaultModelProp]: value });
32
+ }
33
+ /**
34
+ * 原生事件处理
35
+ * @param renderOpts
36
+ * @param params
37
+ * @param modelFunc
38
+ * @param changeFunc
39
+ */
40
+ function getElementOns(renderOpts, params, modelFunc, changeFunc) {
41
+ const { events } = renderOpts;
42
+ const modelEvent = getModelEvent(renderOpts.name);
43
+ const changeEvent = getChangeEvent(renderOpts.name);
44
+ const isSameEvent = changeEvent === modelEvent;
45
+ const ons = {};
46
+ if (events) {
47
+ XEUtils.objectEach(events, (func, key) => {
48
+ ons[getOnName(key)] = function (...args) {
49
+ func(params, ...args);
50
+ };
51
+ });
52
+ }
53
+ if (modelFunc) {
54
+ ons[getOnName(modelEvent)] = function (targetEvnt) {
55
+ modelFunc(targetEvnt);
56
+ if (isSameEvent && changeFunc) {
57
+ changeFunc(targetEvnt);
58
+ }
59
+ if (events && events[modelEvent]) {
60
+ events[modelEvent](params, targetEvnt);
61
+ }
62
+ };
63
+ }
64
+ if (!isSameEvent && changeFunc) {
65
+ ons[getOnName(changeEvent)] = function (...args) {
66
+ changeFunc(...args);
67
+ if (events && events[changeEvent]) {
68
+ events[changeEvent](params, ...args);
69
+ }
70
+ };
71
+ }
72
+ return ons;
73
+ }
74
+ /**
75
+ * 组件事件处理
76
+ * @param renderOpts
77
+ * @param params
78
+ * @param modelFunc
79
+ * @param changeFunc
80
+ */
81
+ function getComponentOns(renderOpts, params, modelFunc, changeFunc) {
82
+ const { events } = renderOpts;
83
+ const modelEvent = getModelEvent(renderOpts.name);
84
+ const changeEvent = getChangeEvent(renderOpts.name);
85
+ const ons = {};
86
+ XEUtils.objectEach(events, (func, key) => {
87
+ ons[getOnName(key)] = function (...args) {
88
+ if (process.env.NODE_ENV === 'development') {
89
+ if (!XEUtils.isFunction(func)) {
90
+ errLog('vxe.error.errFunc', [func]);
91
+ }
92
+ }
93
+ func(params, ...args);
94
+ };
95
+ });
96
+ if (modelFunc) {
97
+ ons[getOnName(modelEvent)] = function (targetEvnt) {
98
+ modelFunc(targetEvnt);
99
+ if (events && events[modelEvent]) {
100
+ events[modelEvent](params, targetEvnt);
101
+ }
102
+ };
103
+ }
104
+ if (changeFunc) {
105
+ ons[getOnName(changeEvent)] = function (...args) {
106
+ changeFunc(...args);
107
+ if (events && events[changeEvent]) {
108
+ events[changeEvent](params, ...args);
109
+ }
110
+ };
111
+ }
112
+ return ons;
113
+ }
114
+ function getItemOns(renderOpts, params) {
115
+ const { $form, data, field } = params;
116
+ return getComponentOns(renderOpts, params, (value) => {
117
+ // 处理 model 值双向绑定
118
+ XEUtils.set(data, field, value);
119
+ }, () => {
120
+ // 处理 change 事件相关逻辑
121
+ $form.updateStatus(params);
122
+ });
123
+ }
124
+ function getNativeItemOns(renderOpts, params) {
125
+ const { $form, data, field } = params;
126
+ return getElementOns(renderOpts, params, (evnt) => {
127
+ // 处理 model 值双向绑定
128
+ const itemValue = evnt.target.value;
129
+ XEUtils.set(data, field, itemValue);
130
+ }, () => {
131
+ // 处理 change 事件相关逻辑
132
+ $form.updateStatus(params);
133
+ });
134
+ }
135
+ function renderNativeOptgroup(h, renderOpts, params, renderOptionsMethods) {
136
+ const { optionGroups, optionGroupProps = {} } = renderOpts;
137
+ const groupOptions = optionGroupProps.options || 'options';
138
+ const groupLabel = optionGroupProps.label || 'label';
139
+ return optionGroups.map((group, gIndex) => {
140
+ return h('optgroup', {
141
+ key: gIndex,
142
+ attrs: {
143
+ label: group[groupLabel]
144
+ }
145
+ }, renderOptionsMethods(group[groupOptions], renderOpts, params));
146
+ });
147
+ }
148
+ /**
149
+ * 渲染表单-项
150
+ * 用于渲染原生的标签
151
+ */
152
+ function nativeItemRender(h, renderOpts, params) {
153
+ const { data, field } = params;
154
+ const { name } = renderOpts;
155
+ const attrs = getNativeAttrs(renderOpts);
156
+ const itemValue = XEUtils.get(data, field);
157
+ return [
158
+ h(name, {
159
+ class: `vxe-default-${name}`,
160
+ attrs,
161
+ domProps: {
162
+ value: attrs && name === 'input' && (attrs.type === 'submit' || attrs.type === 'reset') ? null : itemValue
163
+ },
164
+ on: getNativeItemOns(renderOpts, params)
165
+ })
166
+ ];
167
+ }
168
+ function defaultItemRender(h, renderOpts, params) {
169
+ const { data, field } = params;
170
+ const itemValue = XEUtils.get(data, field);
171
+ return [
172
+ h(getDefaultComponent(renderOpts), {
173
+ props: getComponentFormItemProps(renderOpts, params, itemValue),
174
+ on: getItemOns(renderOpts, params)
175
+ })
176
+ ];
177
+ }
178
+ /**
179
+ * 已废弃
180
+ * @deprecated
181
+ */
182
+ function oldItemRender(h, renderOpts, params) {
183
+ const { data, field } = params;
184
+ const itemValue = XEUtils.get(data, field);
185
+ return [
186
+ h(getOldComponent(renderOpts), {
187
+ props: getComponentFormItemProps(renderOpts, params, itemValue),
188
+ on: getItemOns(renderOpts, params)
189
+ })
190
+ ];
191
+ }
192
+ /**
193
+ * 已废弃
194
+ * @deprecated
195
+ */
196
+ function oldButtonItemRender(h, renderOpts, params) {
197
+ return [
198
+ h('vxe-button', {
199
+ props: getComponentFormItemProps(renderOpts, params, null),
200
+ on: getComponentOns(renderOpts, params)
201
+ })
202
+ ];
203
+ }
204
+ /**
205
+ * 已废弃
206
+ * @deprecated
207
+ */
208
+ function oldButtonsItemRender(h, renderOpts, params) {
209
+ return renderOpts.children.map((childRenderOpts) => oldButtonItemRender(h, childRenderOpts, params)[0]);
210
+ }
211
+ /**
212
+ * 渲染原生的 select 标签
213
+ */
214
+ function renderNativeFormOptions(h, options, renderOpts, params) {
215
+ const { data, field } = params;
216
+ const { optionProps = {} } = renderOpts;
217
+ const labelProp = optionProps.label || 'label';
218
+ const valueProp = optionProps.value || 'value';
219
+ const disabledProp = optionProps.disabled || 'disabled';
220
+ const cellValue = XEUtils.get(data, field);
221
+ return options.map((item, oIndex) => {
222
+ return h('option', {
223
+ key: oIndex,
224
+ props: {
225
+ value: item[valueProp],
226
+ disabled: item[disabledProp],
227
+ /* eslint-disable eqeqeq */
228
+ selected: item[valueProp] == cellValue
229
+ }
230
+ }, item[labelProp]);
231
+ });
232
+ }
233
+ /**
234
+ * 渲染表单-项
235
+ */
236
+ function defaultFormItemRender(h, renderOpts, params) {
237
+ const { data, field } = params;
238
+ const itemValue = XEUtils.get(data, field);
239
+ return [
240
+ h(getDefaultComponent(renderOpts), {
241
+ props: getComponentFormItemProps(renderOpts, params, itemValue),
242
+ on: getItemOns(renderOpts, params)
243
+ })
244
+ ];
245
+ }
246
+ function formItemRadioAndCheckboxRender(h, renderOpts, params) {
247
+ const { options, optionProps } = renderOpts;
248
+ const { data, field } = params;
249
+ const itemValue = XEUtils.get(data, field);
250
+ return [
251
+ h(getDefaultComponent(renderOpts), {
252
+ props: Object.assign({ options,
253
+ optionProps }, getComponentFormItemProps(renderOpts, params, itemValue)),
254
+ on: getItemOns(renderOpts, params)
255
+ })
256
+ ];
257
+ }
258
+ /**
259
+ * 已废弃
260
+ * @deprecated
261
+ */
262
+ function oldFormItemRadioAndCheckboxRender(h, renderOpts, params) {
263
+ const { name, options, optionProps = {} } = renderOpts;
264
+ const { data, field } = params;
265
+ const labelProp = optionProps.label || 'label';
266
+ const valueProp = optionProps.value || 'value';
267
+ const disabledProp = optionProps.disabled || 'disabled';
268
+ const itemValue = XEUtils.get(data, field);
269
+ const compName = getOldComponentName(name);
270
+ // 如果是分组
271
+ if (options) {
272
+ return [
273
+ h(`${compName}-group`, {
274
+ props: getComponentFormItemProps(renderOpts, params, itemValue),
275
+ on: getItemOns(renderOpts, params),
276
+ scopedSlots: {
277
+ default: () => {
278
+ return options.map((item, index) => {
279
+ return h(compName, {
280
+ key: index,
281
+ props: {
282
+ label: item[valueProp],
283
+ content: item[labelProp],
284
+ disabled: item[disabledProp]
285
+ }
286
+ });
287
+ });
288
+ }
289
+ }
290
+ })
291
+ ];
292
+ }
293
+ return [
294
+ h(compName, {
295
+ props: getComponentFormItemProps(renderOpts, params, itemValue),
296
+ on: getItemOns(renderOpts, params)
297
+ })
298
+ ];
299
+ }
300
+ /**
301
+ * 表单 - 渲染器
302
+ */
303
+ renderer.mixin({
304
+ input: {
305
+ renderItemContent: nativeItemRender
306
+ },
307
+ textarea: {
308
+ renderItemContent: nativeItemRender
309
+ },
310
+ select: {
311
+ renderItemContent(h, renderOpts, params) {
312
+ return [
313
+ h('select', {
314
+ class: 'vxe-default-select',
315
+ attrs: Object.assign({}, getNativeAttrs(renderOpts)),
316
+ on: getNativeItemOns(renderOpts, params)
317
+ }, renderOpts.optionGroups ? renderNativeOptgroup(h, renderOpts, params, renderNativeFormOptions) : renderNativeFormOptions(h, renderOpts.options, renderOpts, params))
318
+ ];
319
+ }
320
+ },
321
+ VxeInput: {
322
+ renderItemContent: defaultItemRender
323
+ },
324
+ VxeNumberInput: {
325
+ renderItemContent: defaultItemRender
326
+ },
327
+ VxePasswordInput: {
328
+ renderItemContent: defaultItemRender
329
+ },
330
+ VxeTextarea: {
331
+ renderItemContent: defaultItemRender
332
+ },
333
+ VxeDatePicker: {
334
+ renderItemContent: defaultItemRender
335
+ },
336
+ VxeButton: {
337
+ renderItemContent: defaultFormItemRender
338
+ },
339
+ VxeButtonGroup: {
340
+ renderItemContent(h, renderOpts, params) {
341
+ const { options } = renderOpts;
342
+ const { data, field } = params;
343
+ const itemValue = XEUtils.get(data, field);
344
+ return [
345
+ h(getDefaultComponent(renderOpts), {
346
+ props: Object.assign({ options }, getComponentFormItemProps(renderOpts, params, itemValue)),
347
+ on: getItemOns(renderOpts, params)
348
+ })
349
+ ];
350
+ }
351
+ },
352
+ VxeSelect: {
353
+ renderItemContent(h, renderOpts, params) {
354
+ const { data, field } = params;
355
+ const { options, optionProps, optionGroups, optionGroupProps } = renderOpts;
356
+ const itemValue = XEUtils.get(data, field);
357
+ return [
358
+ h(getDefaultComponent(renderOpts), {
359
+ props: getComponentFormItemProps(renderOpts, params, itemValue, { options, optionProps, optionGroups, optionGroupProps }),
360
+ on: getItemOns(renderOpts, params)
361
+ })
362
+ ];
363
+ }
364
+ },
365
+ VxeTreeSelect: {
366
+ renderItemContent(h, renderOpts, params) {
367
+ const { data, field } = params;
368
+ const { options, optionProps } = renderOpts;
369
+ const itemValue = XEUtils.get(data, field);
370
+ return [
371
+ h(getDefaultComponent(renderOpts), {
372
+ props: getComponentFormItemProps(renderOpts, params, itemValue, { options, optionProps }),
373
+ on: getItemOns(renderOpts, params)
374
+ })
375
+ ];
376
+ }
377
+ },
378
+ VxeIconPicker: {
379
+ renderItemContent: defaultFormItemRender
380
+ },
381
+ VxeRadio: {
382
+ renderItemContent: defaultFormItemRender
383
+ },
384
+ VxeRadioGroup: {
385
+ renderItemContent: formItemRadioAndCheckboxRender
386
+ },
387
+ VxeCheckbox: {
388
+ renderItemContent: defaultFormItemRender
389
+ },
390
+ VxeCheckboxGroup: {
391
+ renderItemContent: formItemRadioAndCheckboxRender
392
+ },
393
+ VxeSwitch: {
394
+ renderItemContent: defaultItemRender
395
+ },
396
+ VxeImage: {
397
+ renderItemContent(h, renderOpts, params) {
398
+ const { data, field } = params;
399
+ const { props } = renderOpts;
400
+ const itemValue = XEUtils.get(data, field);
401
+ return [
402
+ h(getDefaultComponent(renderOpts), {
403
+ props: Object.assign(Object.assign({}, props), { src: itemValue }),
404
+ on: getItemOns(renderOpts, params)
405
+ })
406
+ ];
407
+ }
408
+ },
409
+ VxeImageGroup: {
410
+ renderItemContent(h, renderOpts, params) {
411
+ const { data, field } = params;
412
+ const { props } = renderOpts;
413
+ const itemValue = XEUtils.get(data, field);
414
+ return [
415
+ h(getDefaultComponent(renderOpts), {
416
+ props: Object.assign(Object.assign({}, props), { urlList: itemValue }),
417
+ on: getItemOns(renderOpts, params)
418
+ })
419
+ ];
420
+ }
421
+ },
422
+ VxeUpload: {
423
+ renderItemContent: defaultItemRender
424
+ },
425
+ // 以下已废弃
426
+ $input: {
427
+ renderItemContent: oldItemRender
428
+ },
429
+ $textarea: {
430
+ renderItemContent: oldItemRender
431
+ },
432
+ $button: {
433
+ renderItemContent: oldButtonItemRender
434
+ },
435
+ $buttons: {
436
+ renderItemContent: oldButtonsItemRender
437
+ },
438
+ $select: {
439
+ renderItemContent(h, renderOpts, params) {
440
+ const { data, field } = params;
441
+ const { options, optionProps, optionGroups, optionGroupProps } = renderOpts;
442
+ const itemValue = XEUtils.get(data, field);
443
+ return [
444
+ h(getOldComponent(renderOpts), {
445
+ props: getComponentFormItemProps(renderOpts, params, itemValue, { options, optionProps, optionGroups, optionGroupProps }),
446
+ on: getItemOns(renderOpts, params)
447
+ })
448
+ ];
449
+ }
450
+ },
451
+ $radio: {
452
+ renderItemContent: oldFormItemRadioAndCheckboxRender
453
+ },
454
+ $checkbox: {
455
+ renderItemContent: oldFormItemRadioAndCheckboxRender
456
+ },
457
+ $switch: {
458
+ renderItemContent: oldItemRender
459
+ }
460
+ // 以上已废弃
461
+ });