vxe-pc-ui 3.0.0 → 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 (626) hide show
  1. package/README.md +23 -25
  2. package/es/button/src/button.js +3 -0
  3. package/es/calendar/index.js +12 -0
  4. package/es/calendar/src/calendar.js +1227 -0
  5. package/es/calendar/style.css +247 -0
  6. package/es/calendar/style.min.css +1 -0
  7. package/es/carousel/index.js +12 -0
  8. package/es/carousel/src/carousel-item.js +100 -0
  9. package/es/carousel/src/carousel.js +418 -0
  10. package/es/carousel/src/util.js +17 -0
  11. package/es/carousel/style.css +185 -0
  12. package/es/carousel/style.min.css +1 -0
  13. package/es/carousel-item/index.js +12 -0
  14. package/es/carousel-item/style.css +0 -0
  15. package/es/carousel-item/style.min.css +0 -0
  16. package/es/checkbox/index.js +12 -0
  17. package/es/checkbox/src/checkbox.js +164 -0
  18. package/es/checkbox/src/group.js +159 -0
  19. package/es/checkbox/style.css +117 -0
  20. package/es/checkbox/style.min.css +1 -0
  21. package/es/checkbox-group/index.js +12 -0
  22. package/es/checkbox-group/style.css +0 -0
  23. package/es/checkbox-group/style.min.css +0 -0
  24. package/es/collapse/index.js +12 -0
  25. package/es/collapse/src/collapse-pane.js +39 -0
  26. package/es/collapse/src/collapse.js +39 -0
  27. package/es/collapse/style.css +0 -0
  28. package/es/collapse/style.min.css +0 -0
  29. package/es/collapse-pane/index.js +12 -0
  30. package/es/collapse-pane/style.css +0 -0
  31. package/es/collapse-pane/style.min.css +0 -0
  32. package/es/components.js +66 -66
  33. package/es/date-picker/src/date-picker.js +20 -13
  34. package/es/drawer/src/drawer.js +17 -12
  35. package/es/form/index.js +13 -0
  36. package/es/form/render/index.js +461 -0
  37. package/es/form/src/form-config-item.js +201 -0
  38. package/es/form/src/form-gather.js +87 -0
  39. package/es/form/src/form-item.js +291 -0
  40. package/es/form/src/form.js +762 -0
  41. package/es/form/src/itemInfo.js +43 -0
  42. package/es/form/src/render.js +78 -0
  43. package/es/form/src/util.js +66 -0
  44. package/es/form/style.css +470 -0
  45. package/es/form/style.min.css +1 -0
  46. package/es/form-gather/index.js +12 -0
  47. package/es/form-gather/style.css +0 -0
  48. package/es/form-gather/style.min.css +0 -0
  49. package/es/form-item/index.js +12 -0
  50. package/es/form-item/style.css +0 -0
  51. package/es/form-item/style.min.css +0 -0
  52. package/es/icon/style.css +1 -1
  53. package/es/icon-picker/index.js +12 -0
  54. package/es/icon-picker/src/icon-picker.js +672 -0
  55. package/es/icon-picker/style.css +207 -0
  56. package/es/icon-picker/style.min.css +1 -0
  57. package/es/image/src/preview.js +1 -2
  58. package/es/input/index.js +12 -0
  59. package/es/input/src/input.js +2896 -0
  60. package/es/input/style.css +941 -0
  61. package/es/input/style.min.css +1 -0
  62. package/es/layout-footer/src/layout-footer.js +2 -1
  63. package/es/layout-header/src/layout-header.js +2 -1
  64. package/es/list/index.js +12 -0
  65. package/es/list/src/list.js +373 -0
  66. package/es/list/style.css +28 -0
  67. package/es/list/style.min.css +1 -0
  68. package/es/loading/src/loading.js +5 -0
  69. package/es/menu/src/menu.js +6 -2
  70. package/es/modal/src/modal.js +7 -4
  71. package/es/number-input/src/number-input.js +11 -7
  72. package/es/optgroup/index.js +12 -0
  73. package/es/optgroup/style.css +0 -0
  74. package/es/optgroup/style.min.css +0 -0
  75. package/es/option/index.js +12 -0
  76. package/es/option/style.css +0 -0
  77. package/es/option/style.min.css +0 -0
  78. package/es/pager/index.js +12 -0
  79. package/es/pager/src/pager.js +687 -0
  80. package/es/pager/style.css +303 -0
  81. package/es/pager/style.min.css +1 -0
  82. package/es/password-input/index.js +12 -0
  83. package/es/password-input/src/password-input.js +392 -0
  84. package/es/password-input/style.css +604 -0
  85. package/es/password-input/style.min.css +1 -0
  86. package/es/pulldown/src/pulldown.js +11 -3
  87. package/es/radio/src/button.js +6 -2
  88. package/es/radio/src/group.js +6 -2
  89. package/es/radio/src/radio.js +6 -2
  90. package/es/select/index.js +12 -0
  91. package/es/select/src/optgroup.js +90 -0
  92. package/es/select/src/option-info.js +16 -0
  93. package/es/select/src/option.js +86 -0
  94. package/es/select/src/select.js +1284 -0
  95. package/es/select/src/util.js +36 -0
  96. package/es/select/style.css +207 -0
  97. package/es/select/style.min.css +1 -0
  98. package/es/style.css +1 -1
  99. package/es/style.min.css +1 -1
  100. package/es/switch/src/switch.js +6 -2
  101. package/es/tab-pane/index.js +12 -0
  102. package/es/tab-pane/style.css +0 -0
  103. package/es/tab-pane/style.min.css +0 -0
  104. package/es/tabs/index.js +12 -0
  105. package/es/tabs/src/tab-pane.js +119 -0
  106. package/es/tabs/src/tabs.js +598 -0
  107. package/es/tabs/src/util.js +17 -0
  108. package/es/tabs/style.css +342 -0
  109. package/es/tabs/style.min.css +1 -0
  110. package/es/textarea/src/textarea.js +9 -5
  111. package/es/tooltip/src/tooltip.js +6 -1
  112. package/es/tree/index.js +12 -0
  113. package/es/tree/src/tree.js +1216 -0
  114. package/es/tree/style.css +219 -0
  115. package/es/tree/style.min.css +1 -0
  116. package/es/tree-select/index.js +12 -0
  117. package/es/tree-select/src/tree-select.js +685 -0
  118. package/es/tree-select/style.css +129 -0
  119. package/es/tree-select/style.min.css +1 -0
  120. package/es/ui/index.js +1 -1
  121. package/es/ui/src/log.js +1 -1
  122. package/es/ui/src/vn.js +1 -1
  123. package/es/upload/src/upload.js +9 -5
  124. package/es/vxe-calendar/index.js +3 -0
  125. package/es/vxe-calendar/style.css +247 -0
  126. package/es/vxe-calendar/style.min.css +1 -0
  127. package/es/vxe-carousel/index.js +3 -0
  128. package/es/vxe-carousel/style.css +185 -0
  129. package/es/vxe-carousel/style.min.css +1 -0
  130. package/es/vxe-carousel-item/index.js +3 -0
  131. package/es/vxe-carousel-item/style.css +0 -0
  132. package/es/vxe-carousel-item/style.min.css +0 -0
  133. package/es/vxe-checkbox/index.js +3 -0
  134. package/es/vxe-checkbox/style.css +117 -0
  135. package/es/vxe-checkbox/style.min.css +1 -0
  136. package/es/vxe-checkbox-group/index.js +3 -0
  137. package/es/vxe-checkbox-group/style.css +0 -0
  138. package/es/vxe-checkbox-group/style.min.css +0 -0
  139. package/es/vxe-collapse/index.js +3 -0
  140. package/es/vxe-collapse/style.css +0 -0
  141. package/es/vxe-collapse/style.min.css +0 -0
  142. package/es/vxe-collapse-pane/index.js +3 -0
  143. package/es/vxe-collapse-pane/style.css +0 -0
  144. package/es/vxe-collapse-pane/style.min.css +0 -0
  145. package/es/vxe-form/index.js +3 -0
  146. package/es/vxe-form/style.css +470 -0
  147. package/es/vxe-form/style.min.css +1 -0
  148. package/es/vxe-form-gather/index.js +3 -0
  149. package/es/vxe-form-gather/style.css +0 -0
  150. package/es/vxe-form-gather/style.min.css +0 -0
  151. package/es/vxe-form-item/index.js +3 -0
  152. package/es/vxe-form-item/style.css +0 -0
  153. package/es/vxe-form-item/style.min.css +0 -0
  154. package/es/vxe-icon-picker/index.js +3 -0
  155. package/es/vxe-icon-picker/style.css +207 -0
  156. package/es/vxe-icon-picker/style.min.css +1 -0
  157. package/es/vxe-input/index.js +3 -0
  158. package/es/vxe-input/style.css +941 -0
  159. package/es/vxe-input/style.min.css +1 -0
  160. package/es/vxe-list/index.js +3 -0
  161. package/es/vxe-list/style.css +28 -0
  162. package/es/vxe-list/style.min.css +1 -0
  163. package/es/vxe-optgroup/index.js +3 -0
  164. package/es/vxe-optgroup/style.css +0 -0
  165. package/es/vxe-optgroup/style.min.css +0 -0
  166. package/es/vxe-option/index.js +3 -0
  167. package/es/vxe-option/style.css +0 -0
  168. package/es/vxe-option/style.min.css +0 -0
  169. package/es/vxe-pager/index.js +3 -0
  170. package/es/vxe-pager/style.css +303 -0
  171. package/es/vxe-pager/style.min.css +1 -0
  172. package/es/vxe-password-input/index.js +3 -0
  173. package/es/vxe-password-input/style.css +604 -0
  174. package/es/vxe-password-input/style.min.css +1 -0
  175. package/es/vxe-select/index.js +3 -0
  176. package/es/vxe-select/style.css +207 -0
  177. package/es/vxe-select/style.min.css +1 -0
  178. package/es/vxe-tab-pane/index.js +3 -0
  179. package/es/vxe-tab-pane/style.css +0 -0
  180. package/es/vxe-tab-pane/style.min.css +0 -0
  181. package/es/vxe-tabs/index.js +3 -0
  182. package/es/vxe-tabs/style.css +342 -0
  183. package/es/vxe-tabs/style.min.css +1 -0
  184. package/es/vxe-tree/index.js +3 -0
  185. package/es/vxe-tree/style.css +219 -0
  186. package/es/vxe-tree/style.min.css +1 -0
  187. package/es/vxe-tree-select/index.js +3 -0
  188. package/es/vxe-tree-select/style.css +129 -0
  189. package/es/vxe-tree-select/style.min.css +1 -0
  190. package/lib/button/src/button.js +3 -0
  191. package/lib/button/src/button.min.js +1 -1
  192. package/lib/calendar/index.js +19 -0
  193. package/lib/calendar/index.min.js +1 -0
  194. package/lib/calendar/src/calendar.js +1286 -0
  195. package/lib/calendar/src/calendar.min.js +1 -0
  196. package/lib/calendar/style/index.js +1 -0
  197. package/lib/calendar/style/style.css +247 -0
  198. package/lib/calendar/style/style.min.css +1 -0
  199. package/lib/carousel/index.js +19 -0
  200. package/lib/carousel/index.min.js +1 -0
  201. package/lib/carousel/src/carousel-item.js +107 -0
  202. package/lib/carousel/src/carousel-item.min.js +1 -0
  203. package/lib/carousel/src/carousel.js +437 -0
  204. package/lib/carousel/src/carousel.min.js +1 -0
  205. package/lib/carousel/src/util.js +27 -0
  206. package/lib/carousel/src/util.min.js +1 -0
  207. package/lib/carousel/style/index.js +1 -0
  208. package/lib/carousel/style/style.css +185 -0
  209. package/lib/carousel/style/style.min.css +1 -0
  210. package/lib/carousel-item/index.js +19 -0
  211. package/lib/carousel-item/index.min.js +1 -0
  212. package/lib/carousel-item/style/index.js +1 -0
  213. package/lib/carousel-item/style/style.css +0 -0
  214. package/lib/carousel-item/style/style.min.css +0 -0
  215. package/lib/checkbox/index.js +19 -0
  216. package/lib/checkbox/index.min.js +1 -0
  217. package/lib/checkbox/src/checkbox.js +174 -0
  218. package/lib/checkbox/src/checkbox.min.js +1 -0
  219. package/lib/checkbox/src/group.js +169 -0
  220. package/lib/checkbox/src/group.min.js +1 -0
  221. package/lib/checkbox/style/index.js +1 -0
  222. package/lib/checkbox/style/style.css +117 -0
  223. package/lib/checkbox/style/style.min.css +1 -0
  224. package/lib/checkbox-group/index.js +19 -0
  225. package/lib/checkbox-group/index.min.js +1 -0
  226. package/lib/checkbox-group/style/index.js +1 -0
  227. package/lib/checkbox-group/style/style.css +0 -0
  228. package/lib/checkbox-group/style/style.min.css +0 -0
  229. package/lib/collapse/index.js +19 -0
  230. package/lib/collapse/index.min.js +1 -0
  231. package/lib/collapse/src/collapse-pane.js +48 -0
  232. package/lib/collapse/src/collapse-pane.min.js +1 -0
  233. package/lib/collapse/src/collapse.js +48 -0
  234. package/lib/collapse/src/collapse.min.js +1 -0
  235. package/lib/collapse/style/index.js +1 -0
  236. package/lib/collapse/style/style.css +0 -0
  237. package/lib/collapse/style/style.min.css +0 -0
  238. package/lib/collapse-pane/index.js +19 -0
  239. package/lib/collapse-pane/index.min.js +1 -0
  240. package/lib/collapse-pane/style/index.js +1 -0
  241. package/lib/collapse-pane/style/style.css +0 -0
  242. package/lib/collapse-pane/style/style.min.css +0 -0
  243. package/lib/components.js +271 -97
  244. package/lib/components.min.js +1 -1
  245. package/lib/date-picker/src/date-picker.js +20 -13
  246. package/lib/date-picker/src/date-picker.min.js +1 -1
  247. package/lib/drawer/src/drawer.js +17 -12
  248. package/lib/drawer/src/drawer.min.js +1 -1
  249. package/lib/form/index.js +20 -0
  250. package/lib/form/index.min.js +1 -0
  251. package/lib/form/render/index.js +509 -0
  252. package/lib/form/render/index.min.js +1 -0
  253. package/lib/form/src/form-config-item.js +210 -0
  254. package/lib/form/src/form-config-item.min.js +1 -0
  255. package/lib/form/src/form-gather.js +99 -0
  256. package/lib/form/src/form-gather.min.js +1 -0
  257. package/lib/form/src/form-item.js +299 -0
  258. package/lib/form/src/form-item.min.js +1 -0
  259. package/lib/form/src/form.js +856 -0
  260. package/lib/form/src/form.min.js +1 -0
  261. package/lib/form/src/itemInfo.js +60 -0
  262. package/lib/form/src/itemInfo.min.js +1 -0
  263. package/lib/form/src/render.js +94 -0
  264. package/lib/form/src/render.min.js +1 -0
  265. package/lib/form/src/util.js +93 -0
  266. package/lib/form/src/util.min.js +1 -0
  267. package/lib/form/style/index.js +1 -0
  268. package/lib/form/style/style.css +470 -0
  269. package/lib/form/style/style.min.css +1 -0
  270. package/lib/form-gather/index.js +19 -0
  271. package/lib/form-gather/index.min.js +1 -0
  272. package/lib/form-gather/style/index.js +1 -0
  273. package/lib/form-gather/style/style.css +0 -0
  274. package/lib/form-gather/style/style.min.css +0 -0
  275. package/lib/form-item/index.js +19 -0
  276. package/lib/form-item/index.min.js +1 -0
  277. package/lib/form-item/style/index.js +1 -0
  278. package/lib/form-item/style/style.css +0 -0
  279. package/lib/form-item/style/style.min.css +0 -0
  280. package/lib/icon/style/style.css +1 -1
  281. package/lib/icon/style/style.min.css +1 -1
  282. package/lib/icon-picker/index.js +19 -0
  283. package/lib/icon-picker/index.min.js +1 -0
  284. package/lib/icon-picker/src/icon-picker.js +650 -0
  285. package/lib/icon-picker/src/icon-picker.min.js +1 -0
  286. package/lib/icon-picker/style/index.js +1 -0
  287. package/lib/icon-picker/style/style.css +207 -0
  288. package/lib/icon-picker/style/style.min.css +1 -0
  289. package/lib/image/src/preview.js +1 -2
  290. package/lib/image/src/preview.min.js +1 -1
  291. package/lib/index.umd.js +23171 -8764
  292. package/lib/index.umd.min.js +1 -1
  293. package/lib/input/index.js +19 -0
  294. package/lib/input/index.min.js +1 -0
  295. package/lib/input/src/input.js +2901 -0
  296. package/lib/input/src/input.min.js +1 -0
  297. package/lib/input/style/index.js +1 -0
  298. package/lib/input/style/style.css +941 -0
  299. package/lib/input/style/style.min.css +1 -0
  300. package/lib/layout-footer/src/layout-footer.js +2 -1
  301. package/lib/layout-header/src/layout-header.js +2 -1
  302. package/lib/list/index.js +19 -0
  303. package/lib/list/index.min.js +1 -0
  304. package/lib/list/src/list.js +415 -0
  305. package/lib/list/src/list.min.js +1 -0
  306. package/lib/list/style/index.js +1 -0
  307. package/lib/list/style/style.css +28 -0
  308. package/lib/list/style/style.min.css +1 -0
  309. package/lib/loading/src/loading.js +5 -0
  310. package/lib/loading/src/loading.min.js +1 -1
  311. package/lib/menu/src/menu.js +6 -2
  312. package/lib/menu/src/menu.min.js +1 -1
  313. package/lib/modal/src/modal.js +7 -4
  314. package/lib/modal/src/modal.min.js +1 -1
  315. package/lib/number-input/src/number-input.js +11 -7
  316. package/lib/number-input/src/number-input.min.js +1 -1
  317. package/lib/optgroup/index.js +19 -0
  318. package/lib/optgroup/index.min.js +1 -0
  319. package/lib/optgroup/style/index.js +1 -0
  320. package/lib/optgroup/style/style.css +0 -0
  321. package/lib/optgroup/style/style.min.css +0 -0
  322. package/lib/option/index.js +19 -0
  323. package/lib/option/index.min.js +1 -0
  324. package/lib/option/style/index.js +1 -0
  325. package/lib/option/style/style.css +0 -0
  326. package/lib/option/style/style.min.css +0 -0
  327. package/lib/pager/index.js +19 -0
  328. package/lib/pager/index.min.js +1 -0
  329. package/lib/pager/src/pager.js +714 -0
  330. package/lib/pager/src/pager.min.js +1 -0
  331. package/lib/pager/style/index.js +1 -0
  332. package/lib/pager/style/style.css +303 -0
  333. package/lib/pager/style/style.min.css +1 -0
  334. package/lib/password-input/index.js +19 -0
  335. package/lib/password-input/index.min.js +1 -0
  336. package/lib/password-input/src/password-input.js +402 -0
  337. package/lib/password-input/src/password-input.min.js +1 -0
  338. package/lib/password-input/style/index.js +1 -0
  339. package/lib/password-input/style/style.css +604 -0
  340. package/lib/password-input/style/style.min.css +1 -0
  341. package/lib/pulldown/src/pulldown.js +11 -3
  342. package/lib/pulldown/src/pulldown.min.js +1 -1
  343. package/lib/radio/src/button.js +6 -2
  344. package/lib/radio/src/button.min.js +1 -1
  345. package/lib/radio/src/group.js +6 -2
  346. package/lib/radio/src/group.min.js +1 -1
  347. package/lib/radio/src/radio.js +6 -2
  348. package/lib/radio/src/radio.min.js +1 -1
  349. package/lib/select/index.js +19 -0
  350. package/lib/select/index.min.js +1 -0
  351. package/lib/select/src/optgroup.js +97 -0
  352. package/lib/select/src/optgroup.min.js +1 -0
  353. package/lib/select/src/option-info.js +33 -0
  354. package/lib/select/src/option-info.min.js +1 -0
  355. package/lib/select/src/option.js +93 -0
  356. package/lib/select/src/option.min.js +1 -0
  357. package/lib/select/src/select.js +1330 -0
  358. package/lib/select/src/select.min.js +1 -0
  359. package/lib/select/src/util.js +51 -0
  360. package/lib/select/src/util.min.js +1 -0
  361. package/lib/select/style/index.js +1 -0
  362. package/lib/select/style/style.css +207 -0
  363. package/lib/select/style/style.min.css +1 -0
  364. package/lib/style.css +1 -1
  365. package/lib/style.min.css +1 -1
  366. package/lib/switch/src/switch.js +6 -2
  367. package/lib/switch/src/switch.min.js +1 -1
  368. package/lib/tab-pane/index.js +19 -0
  369. package/lib/tab-pane/index.min.js +1 -0
  370. package/lib/tab-pane/style/index.js +1 -0
  371. package/lib/tab-pane/style/style.css +0 -0
  372. package/lib/tab-pane/style/style.min.css +0 -0
  373. package/lib/tabs/index.js +19 -0
  374. package/lib/tabs/index.min.js +1 -0
  375. package/lib/tabs/src/tab-pane.js +128 -0
  376. package/lib/tabs/src/tab-pane.min.js +1 -0
  377. package/lib/tabs/src/tabs.js +635 -0
  378. package/lib/tabs/src/tabs.min.js +1 -0
  379. package/lib/tabs/src/util.js +29 -0
  380. package/lib/tabs/src/util.min.js +1 -0
  381. package/lib/tabs/style/index.js +1 -0
  382. package/lib/tabs/style/style.css +342 -0
  383. package/lib/tabs/style/style.min.css +1 -0
  384. package/lib/textarea/src/textarea.js +9 -5
  385. package/lib/textarea/src/textarea.min.js +1 -1
  386. package/lib/tooltip/src/tooltip.js +6 -1
  387. package/lib/tooltip/src/tooltip.min.js +1 -1
  388. package/lib/tree/index.js +19 -0
  389. package/lib/tree/index.min.js +1 -0
  390. package/lib/tree/src/tree.js +1324 -0
  391. package/lib/tree/src/tree.min.js +1 -0
  392. package/lib/tree/style/index.js +1 -0
  393. package/lib/tree/style/style.css +219 -0
  394. package/lib/tree/style/style.min.css +1 -0
  395. package/lib/tree-select/index.js +19 -0
  396. package/lib/tree-select/index.min.js +1 -0
  397. package/lib/tree-select/src/tree-select.js +695 -0
  398. package/lib/tree-select/src/tree-select.min.js +1 -0
  399. package/lib/tree-select/style/index.js +1 -0
  400. package/lib/tree-select/style/style.css +129 -0
  401. package/lib/tree-select/style/style.min.css +1 -0
  402. package/lib/ui/index.js +1 -1
  403. package/lib/ui/index.min.js +1 -1
  404. package/lib/ui/src/log.js +1 -1
  405. package/lib/ui/src/log.min.js +1 -1
  406. package/lib/ui/src/vn.js +1 -1
  407. package/lib/ui/src/vn.min.js +1 -1
  408. package/lib/upload/src/upload.js +9 -5
  409. package/lib/upload/src/upload.min.js +1 -1
  410. package/lib/vxe-calendar/index.js +23 -0
  411. package/lib/vxe-calendar/index.min.js +1 -0
  412. package/lib/vxe-calendar/style/index.js +1 -0
  413. package/lib/vxe-calendar/style/style.css +247 -0
  414. package/lib/vxe-calendar/style/style.min.css +1 -0
  415. package/lib/vxe-carousel/index.js +23 -0
  416. package/lib/vxe-carousel/index.min.js +1 -0
  417. package/lib/vxe-carousel/style/index.js +1 -0
  418. package/lib/vxe-carousel/style/style.css +185 -0
  419. package/lib/vxe-carousel/style/style.min.css +1 -0
  420. package/lib/vxe-carousel-item/index.js +23 -0
  421. package/lib/vxe-carousel-item/index.min.js +1 -0
  422. package/lib/vxe-carousel-item/style/index.js +1 -0
  423. package/lib/vxe-carousel-item/style/style.css +0 -0
  424. package/lib/vxe-carousel-item/style/style.min.css +0 -0
  425. package/lib/vxe-checkbox/index.js +23 -0
  426. package/lib/vxe-checkbox/index.min.js +1 -0
  427. package/lib/vxe-checkbox/style/index.js +1 -0
  428. package/lib/vxe-checkbox/style/style.css +117 -0
  429. package/lib/vxe-checkbox/style/style.min.css +1 -0
  430. package/lib/vxe-checkbox-group/index.js +23 -0
  431. package/lib/vxe-checkbox-group/index.min.js +1 -0
  432. package/lib/vxe-checkbox-group/style/index.js +1 -0
  433. package/lib/vxe-checkbox-group/style/style.css +0 -0
  434. package/lib/vxe-checkbox-group/style/style.min.css +0 -0
  435. package/lib/vxe-collapse/index.js +23 -0
  436. package/lib/vxe-collapse/index.min.js +1 -0
  437. package/lib/vxe-collapse/style/index.js +1 -0
  438. package/lib/vxe-collapse/style/style.css +0 -0
  439. package/lib/vxe-collapse/style/style.min.css +0 -0
  440. package/lib/vxe-collapse-pane/index.js +23 -0
  441. package/lib/vxe-collapse-pane/index.min.js +1 -0
  442. package/lib/vxe-collapse-pane/style/index.js +1 -0
  443. package/lib/vxe-collapse-pane/style/style.css +0 -0
  444. package/lib/vxe-collapse-pane/style/style.min.css +0 -0
  445. package/lib/vxe-form/index.js +23 -0
  446. package/lib/vxe-form/index.min.js +1 -0
  447. package/lib/vxe-form/style/index.js +1 -0
  448. package/lib/vxe-form/style/style.css +470 -0
  449. package/lib/vxe-form/style/style.min.css +1 -0
  450. package/lib/vxe-form-gather/index.js +23 -0
  451. package/lib/vxe-form-gather/index.min.js +1 -0
  452. package/lib/vxe-form-gather/style/index.js +1 -0
  453. package/lib/vxe-form-gather/style/style.css +0 -0
  454. package/lib/vxe-form-gather/style/style.min.css +0 -0
  455. package/lib/vxe-form-item/index.js +23 -0
  456. package/lib/vxe-form-item/index.min.js +1 -0
  457. package/lib/vxe-form-item/style/index.js +1 -0
  458. package/lib/vxe-form-item/style/style.css +0 -0
  459. package/lib/vxe-form-item/style/style.min.css +0 -0
  460. package/lib/vxe-icon-picker/index.js +23 -0
  461. package/lib/vxe-icon-picker/index.min.js +1 -0
  462. package/lib/vxe-icon-picker/style/index.js +1 -0
  463. package/lib/vxe-icon-picker/style/style.css +207 -0
  464. package/lib/vxe-icon-picker/style/style.min.css +1 -0
  465. package/lib/vxe-input/index.js +23 -0
  466. package/lib/vxe-input/index.min.js +1 -0
  467. package/lib/vxe-input/style/index.js +1 -0
  468. package/lib/vxe-input/style/style.css +941 -0
  469. package/lib/vxe-input/style/style.min.css +1 -0
  470. package/lib/vxe-list/index.js +23 -0
  471. package/lib/vxe-list/index.min.js +1 -0
  472. package/lib/vxe-list/style/index.js +1 -0
  473. package/lib/vxe-list/style/style.css +28 -0
  474. package/lib/vxe-list/style/style.min.css +1 -0
  475. package/lib/vxe-optgroup/index.js +23 -0
  476. package/lib/vxe-optgroup/index.min.js +1 -0
  477. package/lib/vxe-optgroup/style/index.js +1 -0
  478. package/lib/vxe-optgroup/style/style.css +0 -0
  479. package/lib/vxe-optgroup/style/style.min.css +0 -0
  480. package/lib/vxe-option/index.js +23 -0
  481. package/lib/vxe-option/index.min.js +1 -0
  482. package/lib/vxe-option/style/index.js +1 -0
  483. package/lib/vxe-option/style/style.css +0 -0
  484. package/lib/vxe-option/style/style.min.css +0 -0
  485. package/lib/vxe-pager/index.js +23 -0
  486. package/lib/vxe-pager/index.min.js +1 -0
  487. package/lib/vxe-pager/style/index.js +1 -0
  488. package/lib/vxe-pager/style/style.css +303 -0
  489. package/lib/vxe-pager/style/style.min.css +1 -0
  490. package/lib/vxe-password-input/index.js +23 -0
  491. package/lib/vxe-password-input/index.min.js +1 -0
  492. package/lib/vxe-password-input/style/index.js +1 -0
  493. package/lib/vxe-password-input/style/style.css +604 -0
  494. package/lib/vxe-password-input/style/style.min.css +1 -0
  495. package/lib/vxe-select/index.js +23 -0
  496. package/lib/vxe-select/index.min.js +1 -0
  497. package/lib/vxe-select/style/index.js +1 -0
  498. package/lib/vxe-select/style/style.css +207 -0
  499. package/lib/vxe-select/style/style.min.css +1 -0
  500. package/lib/vxe-tab-pane/index.js +23 -0
  501. package/lib/vxe-tab-pane/index.min.js +1 -0
  502. package/lib/vxe-tab-pane/style/index.js +1 -0
  503. package/lib/vxe-tab-pane/style/style.css +0 -0
  504. package/lib/vxe-tab-pane/style/style.min.css +0 -0
  505. package/lib/vxe-tabs/index.js +23 -0
  506. package/lib/vxe-tabs/index.min.js +1 -0
  507. package/lib/vxe-tabs/style/index.js +1 -0
  508. package/lib/vxe-tabs/style/style.css +342 -0
  509. package/lib/vxe-tabs/style/style.min.css +1 -0
  510. package/lib/vxe-tree/index.js +23 -0
  511. package/lib/vxe-tree/index.min.js +1 -0
  512. package/lib/vxe-tree/style/index.js +1 -0
  513. package/lib/vxe-tree/style/style.css +219 -0
  514. package/lib/vxe-tree/style/style.min.css +1 -0
  515. package/lib/vxe-tree-select/index.js +23 -0
  516. package/lib/vxe-tree-select/index.min.js +1 -0
  517. package/lib/vxe-tree-select/style/index.js +1 -0
  518. package/lib/vxe-tree-select/style/style.css +129 -0
  519. package/lib/vxe-tree-select/style/style.min.css +1 -0
  520. package/package.json +1 -1
  521. package/packages/button/src/button.ts +3 -0
  522. package/packages/calendar/index.ts +16 -0
  523. package/packages/calendar/src/calendar.ts +1281 -0
  524. package/packages/carousel/index.ts +16 -0
  525. package/packages/carousel/src/carousel-item.ts +114 -0
  526. package/packages/carousel/src/carousel.ts +449 -0
  527. package/packages/carousel/src/util.ts +21 -0
  528. package/packages/carousel-item/index.ts +16 -0
  529. package/packages/checkbox/index.ts +16 -0
  530. package/packages/checkbox/src/checkbox.ts +182 -0
  531. package/packages/checkbox/src/group.ts +184 -0
  532. package/packages/checkbox-group/index.ts +16 -0
  533. package/packages/collapse/index.ts +16 -0
  534. package/packages/collapse/src/collapse-pane.ts +47 -0
  535. package/packages/collapse/src/collapse.ts +47 -0
  536. package/packages/collapse-pane/index.ts +16 -0
  537. package/packages/components.ts +66 -66
  538. package/packages/date-picker/src/date-picker.ts +21 -13
  539. package/packages/drawer/src/drawer.ts +18 -12
  540. package/packages/form/index.ts +17 -0
  541. package/packages/form/render/index.ts +499 -0
  542. package/packages/form/src/form-config-item.ts +219 -0
  543. package/packages/form/src/form-gather.ts +104 -0
  544. package/packages/form/src/form-item.ts +322 -0
  545. package/packages/form/src/form.ts +809 -0
  546. package/packages/form/src/itemInfo.ts +47 -0
  547. package/packages/form/src/render.ts +98 -0
  548. package/packages/form/src/util.ts +80 -0
  549. package/packages/form-gather/index.ts +16 -0
  550. package/packages/form-item/index.ts +16 -0
  551. package/packages/icon-picker/index.ts +16 -0
  552. package/packages/icon-picker/src/icon-picker.ts +716 -0
  553. package/packages/image/src/preview.ts +1 -2
  554. package/packages/input/index.ts +16 -0
  555. package/packages/input/src/input.ts +3000 -0
  556. package/packages/layout-footer/src/layout-footer.ts +5 -3
  557. package/packages/layout-header/src/layout-header.ts +2 -1
  558. package/packages/list/index.ts +16 -0
  559. package/packages/list/src/list.ts +403 -0
  560. package/packages/loading/src/loading.ts +6 -0
  561. package/packages/menu/src/menu.ts +7 -2
  562. package/packages/modal/src/modal.ts +8 -4
  563. package/packages/number-input/src/number-input.ts +12 -7
  564. package/packages/optgroup/index.ts +16 -0
  565. package/packages/option/index.ts +16 -0
  566. package/packages/pager/index.ts +16 -0
  567. package/packages/pager/src/pager.ts +743 -0
  568. package/packages/password-input/index.ts +16 -0
  569. package/packages/password-input/src/password-input.ts +432 -0
  570. package/packages/pulldown/src/pulldown.ts +12 -3
  571. package/packages/radio/src/button.ts +7 -2
  572. package/packages/radio/src/group.ts +7 -2
  573. package/packages/radio/src/radio.ts +7 -2
  574. package/packages/select/index.ts +16 -0
  575. package/packages/select/src/optgroup.ts +107 -0
  576. package/packages/select/src/option-info.ts +20 -0
  577. package/packages/select/src/option.ts +103 -0
  578. package/packages/select/src/select.ts +1341 -0
  579. package/packages/select/src/util.ts +47 -0
  580. package/packages/switch/src/switch.ts +7 -2
  581. package/packages/tab-pane/index.ts +16 -0
  582. package/packages/tabs/index.ts +16 -0
  583. package/packages/tabs/src/tab-pane.ts +136 -0
  584. package/packages/tabs/src/tabs.ts +636 -0
  585. package/packages/tabs/src/util.ts +21 -0
  586. package/packages/textarea/src/textarea.ts +10 -5
  587. package/packages/tooltip/src/tooltip.ts +7 -1
  588. package/packages/tree/index.ts +16 -0
  589. package/packages/tree/src/tree.ts +1292 -0
  590. package/packages/tree-select/index.ts +16 -0
  591. package/packages/tree-select/src/tree-select.ts +743 -0
  592. package/packages/ui/src/vn.ts +1 -1
  593. package/packages/upload/src/upload.ts +10 -5
  594. package/types/components/calendar.d.ts +6 -0
  595. package/types/components/carousel.d.ts +5 -0
  596. package/types/components/colgroup.d.ts +1 -0
  597. package/types/components/column.d.ts +1 -0
  598. package/types/components/drawer.d.ts +11 -10
  599. package/types/components/form-item.d.ts +1 -1
  600. package/types/components/form.d.ts +8 -1
  601. package/types/components/icon-picker.d.ts +4 -0
  602. package/types/components/input.d.ts +9 -1
  603. package/types/components/list.d.ts +1 -0
  604. package/types/components/optgroup.d.ts +10 -4
  605. package/types/components/table.d.ts +43 -4
  606. package/types/components/tabs.d.ts +4 -0
  607. package/types/components/toolbar.d.ts +5 -0
  608. package/types/components/tree-select.d.ts +4 -0
  609. package/types/ui/index.d.ts +0 -5
  610. package/types/ui/renderer.d.ts +37 -36
  611. package/types/handles/form-design.d.ts +0 -4
  612. package/types/handles/index.d.ts +0 -3
  613. package/types/handles/list-design.d.ts +0 -4
  614. package/types/handles/table.d.ts +0 -4
  615. /package/es/icon/style/{iconfont.1725630285930.ttf → iconfont.1725869586078.ttf} +0 -0
  616. /package/es/icon/style/{iconfont.1725630285930.woff → iconfont.1725869586078.woff} +0 -0
  617. /package/es/icon/style/{iconfont.1725630285930.woff2 → iconfont.1725869586078.woff2} +0 -0
  618. /package/es/{iconfont.1725630285930.ttf → iconfont.1725869586078.ttf} +0 -0
  619. /package/es/{iconfont.1725630285930.woff → iconfont.1725869586078.woff} +0 -0
  620. /package/es/{iconfont.1725630285930.woff2 → iconfont.1725869586078.woff2} +0 -0
  621. /package/lib/icon/style/{iconfont.1725630285930.ttf → iconfont.1725869586078.ttf} +0 -0
  622. /package/lib/icon/style/{iconfont.1725630285930.woff → iconfont.1725869586078.woff} +0 -0
  623. /package/lib/icon/style/{iconfont.1725630285930.woff2 → iconfont.1725869586078.woff2} +0 -0
  624. /package/lib/{iconfont.1725630285930.ttf → iconfont.1725869586078.ttf} +0 -0
  625. /package/lib/{iconfont.1725630285930.woff → iconfont.1725869586078.woff} +0 -0
  626. /package/lib/{iconfont.1725630285930.woff2 → iconfont.1725869586078.woff2} +0 -0
@@ -0,0 +1,809 @@
1
+ import { PropType, CreateElement, VNode } from 'vue'
2
+ import { defineVxeComponent } from '../../ui/src/comp'
3
+ import XEUtils from 'xe-utils'
4
+ import { getConfig, validators, renderer, createEvent, globalMixins } from '../../ui'
5
+ import { getFuncText, isEnableConf, eqEmptyValue } from '../../ui/src/utils'
6
+ import { scrollToView } from '../../ui/src/dom'
7
+ import { createItem, handleFieldOrItem, isHiddenItem, isActiveItem } from './util'
8
+ import VxeTooltipComponent from '../../tooltip/src/tooltip'
9
+ import VxeFormConfigItem from './form-config-item'
10
+ import VxeLoadingComponent from '../../loading/src/loading'
11
+ import { getSlotVNs } from '../../ui/src/vn'
12
+ import { warnLog, errLog } from '../../ui/src/log'
13
+
14
+ import type { VxeFormPropTypes, VxeFormEmits, VxeComponentSizeType, ValueOf, VxeGridConstructor, FormReactData, VxeFormDefines, VxeFormItemPropTypes, FormInternalData, VxeTooltipConstructor } from '../../../types'
15
+
16
+ class Rule {
17
+ constructor (rule: any) {
18
+ Object.assign(this, {
19
+ $options: rule,
20
+ required: rule.required,
21
+ min: rule.min,
22
+ max: rule.min,
23
+ type: rule.type,
24
+ pattern: rule.pattern,
25
+ validator: rule.validator,
26
+ trigger: rule.trigger,
27
+ maxWidth: rule.maxWidth
28
+ })
29
+ }
30
+
31
+ get content () {
32
+ return getFuncText(this.$options.content || this.$options.message)
33
+ }
34
+
35
+ get message () {
36
+ return this.content
37
+ }
38
+
39
+ [key: string]: any
40
+ }
41
+
42
+ const validErrorRuleValue = (rule: VxeFormDefines.FormRule, val: any) => {
43
+ const { type, min, max, pattern } = rule
44
+ const isNumType = type === 'number'
45
+ const numVal = isNumType ? XEUtils.toNumber(val) : XEUtils.getSize(val)
46
+ // 判断数值
47
+ if (isNumType && isNaN(val)) {
48
+ return true
49
+ }
50
+ // 如果存在 min,判断最小值
51
+ if (!XEUtils.eqNull(min) && numVal < XEUtils.toNumber(min)) {
52
+ return true
53
+ }
54
+ // 如果存在 max,判断最大值
55
+ if (!XEUtils.eqNull(max) && numVal > XEUtils.toNumber(max)) {
56
+ return true
57
+ }
58
+ // 如果存在 pattern,正则校验
59
+ if (pattern && !(XEUtils.isRegExp(pattern) ? pattern : new RegExp(pattern)).test(val)) {
60
+ return true
61
+ }
62
+ return false
63
+ }
64
+
65
+ function getResetValue (value: any, resetValue: any) {
66
+ if (XEUtils.isArray(value)) {
67
+ resetValue = []
68
+ }
69
+ return resetValue
70
+ }
71
+
72
+ export default defineVxeComponent({
73
+ name: 'VxeForm',
74
+ mixins: [
75
+ globalMixins.sizeMixin
76
+ ],
77
+ props: {
78
+ collapseStatus: {
79
+ type: Boolean as PropType<VxeFormPropTypes.CollapseStatus>,
80
+ default: true
81
+ },
82
+ loading: Boolean as PropType<VxeFormPropTypes.Loading>,
83
+ data: Object as PropType<VxeFormPropTypes.Data>,
84
+ size: {
85
+ type: String as PropType<VxeFormPropTypes.Size>,
86
+ default: () => getConfig().form.size || getConfig().size
87
+ },
88
+ span: {
89
+ type: [String, Number] as PropType<VxeFormPropTypes.Span>,
90
+ default: () => getConfig().form.span
91
+ },
92
+ align: {
93
+ type: String as PropType<VxeFormPropTypes.Align>,
94
+ default: () => getConfig().form.align
95
+ },
96
+ titleBold: {
97
+ type: Boolean as PropType<VxeFormPropTypes.TitleBold>,
98
+ default: () => getConfig().form.titleBold
99
+ },
100
+ titleAlign: {
101
+ type: String as PropType<VxeFormPropTypes.TitleAlign>,
102
+ default: () => getConfig().form.titleAlign
103
+ },
104
+ titleWidth: {
105
+ type: [String, Number] as PropType<VxeFormPropTypes.TitleWidth>,
106
+ default: () => getConfig().form.titleWidth
107
+ },
108
+ titleColon: {
109
+ type: Boolean as PropType<VxeFormPropTypes.TitleColon>,
110
+ default: () => getConfig().form.titleColon
111
+ },
112
+ titleAsterisk: {
113
+ type: Boolean as PropType<VxeFormPropTypes.TitleAsterisk>,
114
+ default: () => getConfig().form.titleAsterisk
115
+ },
116
+ titleOverflow: {
117
+ type: [Boolean, String] as PropType<VxeFormPropTypes.TitleOverflow>,
118
+ default: () => getConfig().form.titleOverflow
119
+ },
120
+ vertical: {
121
+ type: Boolean as PropType<VxeFormPropTypes.Vertical>,
122
+ default: () => getConfig().form.vertical
123
+ },
124
+ padding: {
125
+ type: Boolean as PropType<VxeFormPropTypes.Padding>,
126
+ default: () => getConfig().form.padding
127
+ },
128
+ className: [String, Function] as PropType<VxeFormPropTypes.ClassName>,
129
+ readonly: Boolean as PropType<VxeFormPropTypes.Readonly>,
130
+ disabled: Boolean as PropType<VxeFormPropTypes.Disabled>,
131
+ items: Array as PropType<VxeFormPropTypes.Items>,
132
+ rules: Object as PropType<VxeFormPropTypes.Rules>,
133
+ preventSubmit: {
134
+ type: Boolean as PropType<VxeFormPropTypes.PreventSubmit>,
135
+ default: () => getConfig().form.preventSubmit
136
+ },
137
+ validConfig: Object as PropType<VxeFormPropTypes.ValidConfig>,
138
+ tooltipConfig: Object as PropType<VxeFormPropTypes.TooltipConfig>,
139
+ customLayout: {
140
+ type: Boolean as PropType<VxeFormPropTypes.CustomLayout>,
141
+ default: () => getConfig().form.customLayout
142
+ }
143
+ },
144
+ inject: {
145
+ $xeGrid: {
146
+ default: null
147
+ }
148
+ },
149
+ provide () {
150
+ const $xeForm = this
151
+ return {
152
+ $xeForm,
153
+ xeFormItemInfo: null,
154
+ $xeFormGather: null,
155
+ $xeFormItem: null
156
+ }
157
+ },
158
+ data () {
159
+ const xID = XEUtils.uniqueId()
160
+ const reactData: FormReactData = {
161
+ collapseAll: false,
162
+ staticItems: [],
163
+ formItems: []
164
+ }
165
+ const internalData: FormInternalData = {
166
+ meTimeout: undefined,
167
+ stTimeout: undefined,
168
+ tooltipStore: {
169
+ item: null,
170
+ visible: false
171
+ }
172
+ }
173
+ return {
174
+ xID,
175
+ reactData,
176
+ internalData
177
+ }
178
+ },
179
+ computed: {
180
+ ...({} as {
181
+ computeSize(): VxeComponentSizeType
182
+ $xeGrid(): VxeGridConstructor | null
183
+ xegrid(): VxeGridConstructor | null
184
+ }),
185
+ computeValidOpts () {
186
+ const $xeForm = this
187
+ const props = $xeForm
188
+
189
+ return Object.assign({}, getConfig().form.validConfig, props.validConfig)
190
+ },
191
+ computeTooltipOpts () {
192
+ const $xeForm = this
193
+ const props = $xeForm
194
+
195
+ return Object.assign({}, getConfig().tooltip, getConfig().form.tooltipConfig, props.tooltipConfig)
196
+ }
197
+ },
198
+ methods: {
199
+ //
200
+ // Method
201
+ //
202
+ dispatchEvent (type: ValueOf<VxeFormEmits>, params: Record<string, any>, evnt: Event | null) {
203
+ const $xeForm = this
204
+ $xeForm.$emit(type, createEvent(evnt, { $form: $xeForm }, params))
205
+ },
206
+ callSlot (slotFunc: ((params: any) => any) | string | null, params: any) {
207
+ const $xeForm = this
208
+ const slots = $xeForm.$scopedSlots
209
+
210
+ if (slotFunc) {
211
+ if (XEUtils.isString(slotFunc)) {
212
+ slotFunc = slots[slotFunc] || null
213
+ }
214
+ if (XEUtils.isFunction(slotFunc)) {
215
+ return getSlotVNs(slotFunc(params))
216
+ }
217
+ }
218
+ return []
219
+ },
220
+ loadItem (list: VxeFormPropTypes.Items) {
221
+ const $xeForm = this
222
+ const slots = $xeForm.$scopedSlots
223
+ const reactData = $xeForm.reactData
224
+
225
+ if (list.length) {
226
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
227
+ list.forEach((item) => {
228
+ if (item.slots) {
229
+ XEUtils.each(item.slots, (func) => {
230
+ if (!XEUtils.isFunction(func)) {
231
+ if (!slots[func]) {
232
+ errLog('vxe.error.notSlot', [func])
233
+ }
234
+ }
235
+ })
236
+ }
237
+ })
238
+ }
239
+ }
240
+ reactData.staticItems = XEUtils.mapTree(list, item => createItem($xeForm, item), { children: 'children' })
241
+ return $xeForm.$nextTick()
242
+ },
243
+ getItems () {
244
+ const $xeForm = this
245
+ const reactData = $xeForm.reactData
246
+
247
+ const itemList: VxeFormDefines.ItemInfo[] = []
248
+ XEUtils.eachTree(reactData.formItems, item => {
249
+ itemList.push(item)
250
+ }, { children: 'children' })
251
+ return itemList
252
+ },
253
+ getItemByField (field: string) {
254
+ const $xeForm = this
255
+ const reactData = $xeForm.reactData
256
+
257
+ const rest = XEUtils.findTree(reactData.formItems, item => item.field === field, { children: 'children' })
258
+ return rest ? rest.item : null
259
+ },
260
+ getCollapseStatus () {
261
+ const $xeForm = this
262
+ const reactData = $xeForm.reactData
263
+
264
+ return reactData.collapseAll
265
+ },
266
+ toggleCollapse () {
267
+ const $xeForm = this
268
+ const reactData = $xeForm.reactData
269
+
270
+ const status = !$xeForm.getCollapseStatus()
271
+ reactData.collapseAll = status
272
+ $xeForm.$emit('update:collapseStatus', status)
273
+ return $xeForm.$nextTick()
274
+ },
275
+ toggleCollapseEvent (evnt: Event) {
276
+ const $xeForm = this
277
+ const props = $xeForm
278
+
279
+ $xeForm.toggleCollapse()
280
+ const status = $xeForm.getCollapseStatus()
281
+ $xeForm.dispatchEvent('toggle-collapse', { status, collapse: status, data: props.data }, evnt)
282
+ $xeForm.dispatchEvent('collapse', { status, collapse: status, data: props.data }, evnt)
283
+ },
284
+ clearValidate (fieldOrItem?: VxeFormItemPropTypes.Field | VxeFormItemPropTypes.Field[] | VxeFormDefines.ItemInfo | VxeFormDefines.ItemInfo[]) {
285
+ const $xeForm = this
286
+
287
+ if (fieldOrItem) {
288
+ let fields: any = fieldOrItem
289
+ if (!XEUtils.isArray(fieldOrItem)) {
290
+ fields = [fieldOrItem]
291
+ }
292
+ fields.forEach((field: any) => {
293
+ if (field) {
294
+ const item = handleFieldOrItem($xeForm, field)
295
+ if (item) {
296
+ item.showError = false
297
+ }
298
+ }
299
+ })
300
+ } else {
301
+ $xeForm.getItems().forEach((item) => {
302
+ item.showError = false
303
+ })
304
+ }
305
+ return $xeForm.$nextTick()
306
+ },
307
+ reset () {
308
+ const $xeForm = this
309
+ const props = $xeForm
310
+
311
+ const { data } = props
312
+ const itemList = $xeForm.getItems()
313
+ if (data) {
314
+ itemList.forEach((item) => {
315
+ const { field, resetValue, itemRender } = item
316
+ if (isEnableConf(itemRender)) {
317
+ const compConf = renderer.get(itemRender.name)
318
+ const fiResetMethod = compConf ? (compConf.formItemResetMethod || compConf.itemResetMethod) : null
319
+ if (compConf && fiResetMethod) {
320
+ fiResetMethod({ data, field, property: field, item, $form: $xeForm, $grid: $xeForm.xegrid })
321
+ } else if (field) {
322
+ XEUtils.set(data, field, resetValue === null ? getResetValue(XEUtils.get(data, field), undefined) : XEUtils.clone(resetValue, true))
323
+ }
324
+ }
325
+ })
326
+ }
327
+ return $xeForm.clearValidate()
328
+ },
329
+ resetEvent (evnt: Event) {
330
+ const $xeForm = this
331
+ const props = $xeForm
332
+
333
+ evnt.preventDefault()
334
+ $xeForm.reset()
335
+ $xeForm.dispatchEvent('reset', { data: props.data }, evnt)
336
+ },
337
+ handleFocus (fields: string[]) {
338
+ const $xeForm = this
339
+ const props = $xeForm
340
+ const $xeGrid = $xeForm.$xeGrid
341
+
342
+ const el = $xeForm.$refs.refElem as HTMLFormElement
343
+ if (el) {
344
+ for (let i = 0; i < fields.length; i++) {
345
+ const field = fields[i]
346
+ const item = $xeForm.getItemByField(field)
347
+ if (item && isEnableConf(item.itemRender)) {
348
+ const { itemRender } = item
349
+ const compConf = renderer.get(itemRender.name)
350
+ // 定位到第一个
351
+ if (!i) {
352
+ scrollToView(el.querySelector(`.${item.id}`))
353
+ }
354
+ let inputElem: HTMLElement | null = null
355
+ const autoFocus = itemRender.autoFocus || itemRender.autofocus || (compConf ? compConf.formItemAutoFocus : null)
356
+ // 如果指定了聚焦 class
357
+ if (XEUtils.isFunction(autoFocus)) {
358
+ inputElem = autoFocus({ $form: $xeForm, $grid: $xeGrid, item, data: props.data, field })
359
+ } else if (autoFocus) {
360
+ inputElem = el.querySelector(`.${item.id} ${autoFocus}`) as HTMLInputElement
361
+ }
362
+ if (inputElem) {
363
+ inputElem.focus()
364
+ break
365
+ }
366
+ }
367
+ }
368
+ }
369
+ },
370
+ /**
371
+ * 校验数据
372
+ * 按表格行、列顺序依次校验(同步或异步)
373
+ * 校验规则根据索引顺序依次校验,如果是异步则会等待校验完成才会继续校验下一列
374
+ * 如果校验失败则,触发回调或者 Promise<(ErrMap 校验不通过列的信息)>
375
+ * 如果是传回调方式这返回一个 (ErrMap 校验不通过列的信息)
376
+ *
377
+ * rule 配置:
378
+ * required=Boolean 是否必填
379
+ * min=Number 最小长度
380
+ * max=Number 最大长度
381
+ * validator=Function({ itemValue, rule, rules, data, property }) 自定义校验,接收一个 Promise
382
+ * trigger=change 触发方式
383
+ */
384
+ validItemRules (validType: string, fields: string | string[], val?: any): Promise<VxeFormDefines.ValidateErrorMapParams | undefined> {
385
+ const $xeForm = this
386
+ const props = $xeForm
387
+
388
+ const { data, rules: formRules } = props
389
+ const errorMaps: VxeFormDefines.ValidateErrorMapParams = {}
390
+ if (!XEUtils.isArray(fields)) {
391
+ fields = [fields]
392
+ }
393
+ return Promise.all(
394
+ fields.map((property) => {
395
+ const errorRules: Rule[] = []
396
+ const syncVailds: Promise<any>[] = []
397
+ if (property && formRules) {
398
+ const rules = XEUtils.get(formRules, property)
399
+ if (rules) {
400
+ const itemValue = XEUtils.isUndefined(val) ? XEUtils.get(data, property) : val
401
+ rules.forEach((rule) => {
402
+ const { type, trigger, required, validator } = rule
403
+ if (validType === 'all' || !trigger || validType === trigger) {
404
+ if (validator) {
405
+ const validParams = {
406
+ itemValue,
407
+ rule,
408
+ rules,
409
+ data,
410
+ field: property,
411
+ property,
412
+ $form: $xeForm
413
+ }
414
+ let customValid: any
415
+ if (XEUtils.isString(validator)) {
416
+ const gvItem = validators.get(validator)
417
+ if (gvItem) {
418
+ const validatorMethod = gvItem.formItemValidatorMethod || gvItem.itemValidatorMethod
419
+ if (validatorMethod) {
420
+ customValid = validatorMethod(validParams)
421
+ } else {
422
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
423
+ warnLog('vxe.error.notValidators', [validator])
424
+ }
425
+ }
426
+ } else {
427
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
428
+ errLog('vxe.error.notValidators', [validator])
429
+ }
430
+ }
431
+ } else {
432
+ customValid = validator(validParams)
433
+ }
434
+ if (customValid) {
435
+ if (XEUtils.isError(customValid)) {
436
+ errorRules.push(new Rule({ type: 'custom', trigger, content: customValid.message, rule: new Rule(rule) }))
437
+ } else if (customValid.catch) {
438
+ // 如果为异步校验(注:异步校验是并发无序的)
439
+ syncVailds.push(
440
+ customValid.catch((e: any) => {
441
+ errorRules.push(new Rule({ type: 'custom', trigger, content: e ? e.message : (rule.content || rule.message), rule: new Rule(rule) }))
442
+ })
443
+ )
444
+ }
445
+ }
446
+ } else {
447
+ const isArrType = type === 'array'
448
+ const isArrVal = XEUtils.isArray(itemValue)
449
+ let hasEmpty = true
450
+ if (isArrType || isArrVal) {
451
+ hasEmpty = !isArrVal || !itemValue.length
452
+ } else if (XEUtils.isString(itemValue)) {
453
+ hasEmpty = eqEmptyValue(itemValue.trim())
454
+ } else {
455
+ hasEmpty = eqEmptyValue(itemValue)
456
+ }
457
+ if (required ? (hasEmpty || validErrorRuleValue(rule, itemValue)) : (!hasEmpty && validErrorRuleValue(rule, itemValue))) {
458
+ errorRules.push(new Rule(rule))
459
+ }
460
+ }
461
+ }
462
+ })
463
+ }
464
+ }
465
+ return Promise.all(syncVailds).then(() => {
466
+ if (errorRules.length) {
467
+ errorMaps[property] = errorRules.map(rule => {
468
+ return {
469
+ $form: $xeForm,
470
+ rule,
471
+ data,
472
+ field: property,
473
+ property
474
+ }
475
+ })
476
+ }
477
+ })
478
+ })
479
+ ).then(() => {
480
+ if (!XEUtils.isEmpty(errorMaps)) {
481
+ return Promise.reject(errorMaps)
482
+ }
483
+ })
484
+ },
485
+ beginValidate (itemList: VxeFormDefines.ItemInfo[], type?: string, callback?: any): Promise<any> {
486
+ const $xeForm = this
487
+ const props = $xeForm
488
+ const internalData = $xeForm.internalData
489
+
490
+ const { data, rules: formRules } = props
491
+ const validOpts = $xeForm.computeValidOpts
492
+ const validRest: any = {}
493
+ const validFields: string[] = []
494
+ const itemValids: any[] = []
495
+ clearTimeout(internalData.meTimeout)
496
+ if (data && formRules) {
497
+ itemList.forEach((item) => {
498
+ const { field } = item
499
+ if (field && !isHiddenItem($xeForm, item) && isActiveItem($xeForm, item)) {
500
+ itemValids.push(
501
+ $xeForm.validItemRules(type || 'all', field).then(() => {
502
+ item.errRule = null
503
+ }).catch((errorMaps: VxeFormDefines.ValidateErrorMapParams) => {
504
+ const rest = errorMaps[field]
505
+ if (!validRest[field]) {
506
+ validRest[field] = []
507
+ }
508
+ validRest[field].push(rest)
509
+ validFields.push(field)
510
+ item.errRule = rest[0].rule
511
+ return Promise.reject(rest)
512
+ })
513
+ )
514
+ }
515
+ })
516
+ return Promise.all(itemValids).then(() => {
517
+ if (callback) {
518
+ callback()
519
+ }
520
+ }).catch(() => {
521
+ return new Promise<void>((resolve) => {
522
+ internalData.meTimeout = window.setTimeout(() => {
523
+ itemList.forEach((item) => {
524
+ if (item.errRule) {
525
+ item.showError = true
526
+ }
527
+ })
528
+ }, 20)
529
+ if (validOpts.autoPos !== false) {
530
+ $xeForm.$nextTick(() => {
531
+ $xeForm.handleFocus(validFields)
532
+ })
533
+ }
534
+ if (callback) {
535
+ callback(validRest)
536
+ resolve()
537
+ } else {
538
+ resolve(validRest)
539
+ }
540
+ })
541
+ })
542
+ }
543
+ if (callback) {
544
+ callback()
545
+ }
546
+ return Promise.resolve()
547
+ },
548
+ validate (callback: any) {
549
+ const $xeForm = this
550
+ const props = $xeForm
551
+
552
+ const { readonly } = props
553
+ $xeForm.clearValidate()
554
+ if (readonly) {
555
+ return $xeForm.$nextTick()
556
+ }
557
+ return $xeForm.beginValidate($xeForm.getItems(), '', callback)
558
+ },
559
+ validateField (fieldOrItem: VxeFormItemPropTypes.Field | VxeFormItemPropTypes.Field[] | VxeFormDefines.ItemInfo | VxeFormDefines.ItemInfo[], callback: any) {
560
+ const $xeForm = this
561
+ const props = $xeForm
562
+
563
+ const { readonly } = props
564
+ if (readonly) {
565
+ return $xeForm.$nextTick()
566
+ }
567
+ let fields: any[] = []
568
+ if (fieldOrItem) {
569
+ if (XEUtils.isArray(fieldOrItem)) {
570
+ fields = fieldOrItem
571
+ } else {
572
+ fields = [fieldOrItem]
573
+ }
574
+ }
575
+ return $xeForm.beginValidate(fields.map(field => handleFieldOrItem($xeForm, field) as VxeFormDefines.ItemInfo), '', callback)
576
+ },
577
+ submitEvent (evnt: Event) {
578
+ const $xeForm = this
579
+ const props = $xeForm
580
+
581
+ const { readonly } = props
582
+ evnt.preventDefault()
583
+ if (!props.preventSubmit) {
584
+ $xeForm.clearValidate()
585
+ if (readonly) {
586
+ $xeForm.dispatchEvent('submit', { data: props.data }, evnt)
587
+ return
588
+ }
589
+ $xeForm.beginValidate($xeForm.getItems()).then((errMap) => {
590
+ if (errMap) {
591
+ $xeForm.dispatchEvent('submit-invalid', { data: props.data, errMap }, evnt)
592
+ } else {
593
+ $xeForm.dispatchEvent('submit', { data: props.data }, evnt)
594
+ }
595
+ })
596
+ }
597
+ },
598
+ closeTooltip () {
599
+ const $xeForm = this
600
+ const internalData = $xeForm.internalData
601
+
602
+ const { tooltipStore } = internalData
603
+ const $tooltip = $xeForm.$refs.refTooltip as VxeTooltipConstructor
604
+ if (tooltipStore.visible) {
605
+ Object.assign(tooltipStore, {
606
+ item: null,
607
+ visible: false
608
+ })
609
+ if ($tooltip) {
610
+ $tooltip.close()
611
+ }
612
+ }
613
+ return $xeForm.$nextTick()
614
+ },
615
+ triggerTitleTipEvent (evnt: MouseEvent, params: {
616
+ item: VxeFormDefines.ItemInfo;
617
+ }) {
618
+ const $xeForm = this
619
+ const internalData = $xeForm.internalData
620
+
621
+ const { item } = params
622
+ const { tooltipStore } = internalData
623
+ const $tooltip = $xeForm.$refs.refTooltip as VxeTooltipConstructor
624
+ const overflowElem = (evnt.currentTarget as HTMLDivElement).children[0]
625
+ const content = (overflowElem.textContent || '').trim()
626
+ const isCellOverflow = overflowElem.scrollWidth > overflowElem.clientWidth
627
+ clearTimeout(internalData.stTimeout)
628
+ if (tooltipStore.item !== item) {
629
+ $xeForm.closeTooltip()
630
+ }
631
+ if (content && isCellOverflow) {
632
+ Object.assign(tooltipStore, {
633
+ item,
634
+ visible: true
635
+ })
636
+ if ($tooltip) {
637
+ $tooltip.open(overflowElem, content)
638
+ }
639
+ }
640
+ },
641
+ handleTitleTipLeaveEvent () {
642
+ const $xeForm = this
643
+ const internalData = $xeForm.internalData
644
+
645
+ const tooltipOpts = $xeForm.computeTooltipOpts
646
+ let $tooltip = $xeForm.$refs.refTooltip as VxeTooltipConstructor
647
+ if ($tooltip) {
648
+ $tooltip.setActived(false)
649
+ }
650
+ if (tooltipOpts.enterable) {
651
+ internalData.stTimeout = setTimeout(() => {
652
+ $tooltip = $xeForm.$refs.refTooltip as VxeTooltipConstructor
653
+ if ($tooltip && !$tooltip.isActived()) {
654
+ $xeForm.closeTooltip()
655
+ }
656
+ }, tooltipOpts.leaveDelay)
657
+ } else {
658
+ $xeForm.closeTooltip()
659
+ }
660
+ },
661
+ triggerItemEvent (evnt: Event, field: string, itemValue?: any) {
662
+ const $xeForm = this
663
+
664
+ if (field) {
665
+ return $xeForm.validItemRules(evnt ? (['blur'].includes(evnt.type) ? 'blur' : 'change') : 'all', field, itemValue)
666
+ .then(() => {
667
+ $xeForm.clearValidate(field)
668
+ })
669
+ .catch((errorMaps: VxeFormDefines.ValidateErrorMapParams) => {
670
+ const rest = errorMaps[field]
671
+ const item = $xeForm.getItemByField(field)
672
+ if (rest && item) {
673
+ item.showError = true
674
+ item.errRule = rest[0].rule
675
+ }
676
+ })
677
+ }
678
+ return $xeForm.$nextTick()
679
+ },
680
+ /**
681
+ * 更新项状态
682
+ * 如果组件值 v-model 发生 change 时,调用改函数用于更新某一项编辑状态
683
+ * 如果单元格配置了校验规则,则会进行校验
684
+ */
685
+ updateStatus (scope: any, itemValue?: any) {
686
+ const $xeForm = this
687
+
688
+ const { field } = scope
689
+ return $xeForm.triggerItemEvent(new Event('change'), field, itemValue)
690
+ },
691
+
692
+ //
693
+ // Render
694
+ //
695
+ renderVN (h: CreateElement): VNode {
696
+ const $xeForm = this
697
+ const props = $xeForm
698
+ const slots = $xeForm.$scopedSlots
699
+ const reactData = $xeForm.reactData
700
+
701
+ const { loading, className, data, customLayout } = props
702
+ const { formItems } = reactData
703
+ // const formItems: any[] = []
704
+ const vSize = $xeForm.computeSize
705
+ const tooltipOpts = $xeForm.computeTooltipOpts
706
+ const defaultSlot = slots.default
707
+ return h('form', {
708
+ ref: 'refElem',
709
+ class: ['vxe-form', className ? (XEUtils.isFunction(className) ? className({ items: formItems, data, $form: $xeForm }) : className) : '', {
710
+ [`size--${vSize}`]: vSize,
711
+ 'custom--layout': customLayout,
712
+ 'is--loading': loading
713
+ }],
714
+ on: {
715
+ submit: $xeForm.submitEvent,
716
+ reset: $xeForm.resetEvent
717
+ }
718
+ }, [
719
+ h('div', {
720
+ class: 'vxe-form--wrapper vxe-form--item-row'
721
+ }, customLayout
722
+ ? (defaultSlot ? defaultSlot({}) : [])
723
+ : formItems.map((item, index) => {
724
+ return h(VxeFormConfigItem, {
725
+ key: index,
726
+ props: {
727
+ itemConfig: item
728
+ }
729
+ })
730
+ })),
731
+ h('div', {
732
+ class: 'vxe-form-slots',
733
+ ref: 'hideItem'
734
+ }, customLayout ? [] : (defaultSlot ? defaultSlot({}) : [])),
735
+ /**
736
+ * 加载中
737
+ */
738
+ h(VxeLoadingComponent, {
739
+ class: 'vxe-form--loading',
740
+ props: {
741
+ value: loading
742
+ }
743
+ }),
744
+ /**
745
+ * 工具提示
746
+ */
747
+ h(VxeTooltipComponent, {
748
+ ref: 'refTooltip',
749
+ ...tooltipOpts
750
+ })
751
+ ])
752
+ }
753
+ },
754
+ watch: {
755
+ 'reactData.staticItems' () {
756
+ const $xeForm = this
757
+ const reactData = $xeForm.reactData
758
+
759
+ reactData.formItems = reactData.staticItems
760
+ },
761
+ items () {
762
+ const $xeForm = this
763
+ const props = $xeForm
764
+
765
+ $xeForm.loadItem(props.items || [])
766
+ },
767
+ collapseStatus (val) {
768
+ const $xeForm = this
769
+ const reactData = $xeForm.reactData
770
+
771
+ reactData.collapseAll = !!val
772
+ },
773
+ readonly () {
774
+ const $xeForm = this
775
+
776
+ $xeForm.clearValidate()
777
+ },
778
+ disabled () {
779
+ const $xeForm = this
780
+
781
+ $xeForm.clearValidate()
782
+ }
783
+ },
784
+ created () {
785
+ const $xeForm = this
786
+ const props = $xeForm
787
+ const reactData = $xeForm.reactData
788
+
789
+ reactData.collapseAll = !!props.collapseStatus
790
+ if (props.items) {
791
+ $xeForm.loadItem(props.items)
792
+ }
793
+ },
794
+ mounted () {
795
+ const $xeForm = this
796
+ const props = $xeForm
797
+
798
+ $xeForm.$nextTick(() => {
799
+ if (process.env.VUE_APP_VXE_ENV === 'development') {
800
+ if (props.customLayout && props.items) {
801
+ errLog('vxe.error.errConflicts', ['custom-layout', 'items'])
802
+ }
803
+ }
804
+ })
805
+ },
806
+ render (this: any, h) {
807
+ return this.renderVN(h)
808
+ }
809
+ })