vxe-table 4.23.4 → 4.23.6

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 (483) hide show
  1. package/dist/all.esm.js +32459 -33908
  2. package/dist/style.css +4501 -1
  3. package/dist/style.mini.css +1 -0
  4. package/es/colgroup/index.d.ts +760 -0
  5. package/es/colgroup/index.js +16 -13
  6. package/es/column/index.d.ts +760 -0
  7. package/es/column/index.js +16 -13
  8. package/es/components.d.ts +9 -0
  9. package/es/components.js +29 -29
  10. package/es/grid/index.d.ts +2824 -0
  11. package/es/grid/index.js +14 -9
  12. package/es/grid/src/emits.d.ts +2 -0
  13. package/es/grid/src/emits.js +18 -15
  14. package/es/grid/src/grid.d.ts +556 -0
  15. package/es/grid/src/grid.js +1695 -1758
  16. package/es/grid/src/props.d.ts +200 -0
  17. package/es/grid/src/props.js +19 -6
  18. package/es/{vxe-grid/style.min.css → grid/style.mini.css} +1 -1
  19. package/es/index.d.ts +3 -0
  20. package/es/index.esm.js +6 -3
  21. package/es/index.js +6 -0
  22. package/es/locale/lang/ar-EG.d.ts +908 -2
  23. package/es/locale/lang/ar-EG.js +906 -903
  24. package/es/locale/lang/de-DE.d.ts +908 -2
  25. package/es/locale/lang/de-DE.js +906 -903
  26. package/es/locale/lang/en-US.d.ts +908 -2
  27. package/es/locale/lang/en-US.js +906 -903
  28. package/es/locale/lang/es-ES.d.ts +908 -2
  29. package/es/locale/lang/es-ES.js +906 -903
  30. package/es/locale/lang/fr-FR.d.ts +908 -2
  31. package/es/locale/lang/fr-FR.js +906 -903
  32. package/es/locale/lang/hu-HU.d.ts +908 -2
  33. package/es/locale/lang/hu-HU.js +906 -903
  34. package/es/locale/lang/hy-AM.d.ts +908 -2
  35. package/es/locale/lang/hy-AM.js +906 -903
  36. package/es/locale/lang/id-ID.d.ts +908 -2
  37. package/es/locale/lang/id-ID.js +906 -903
  38. package/es/locale/lang/it-IT.d.ts +908 -2
  39. package/es/locale/lang/it-IT.js +906 -903
  40. package/es/locale/lang/ja-JP.d.ts +908 -2
  41. package/es/locale/lang/ja-JP.js +906 -903
  42. package/es/locale/lang/ko-KR.d.ts +908 -2
  43. package/es/locale/lang/ko-KR.js +906 -903
  44. package/es/locale/lang/ms-MY.d.ts +908 -2
  45. package/es/locale/lang/ms-MY.js +906 -903
  46. package/es/locale/lang/nb-NO.d.ts +908 -2
  47. package/es/locale/lang/nb-NO.js +906 -903
  48. package/es/locale/lang/pt-BR.d.ts +908 -2
  49. package/es/locale/lang/pt-BR.js +906 -903
  50. package/es/locale/lang/ru-RU.d.ts +908 -2
  51. package/es/locale/lang/ru-RU.js +906 -903
  52. package/es/locale/lang/th-TH.d.ts +908 -2
  53. package/es/locale/lang/th-TH.js +906 -903
  54. package/es/locale/lang/ug-CN.d.ts +908 -2
  55. package/es/locale/lang/ug-CN.js +906 -903
  56. package/es/locale/lang/uk-UA.d.ts +908 -2
  57. package/es/locale/lang/uk-UA.js +906 -903
  58. package/es/locale/lang/uz-UZ.d.ts +908 -2
  59. package/es/locale/lang/uz-UZ.js +906 -903
  60. package/es/locale/lang/vi-VN.d.ts +908 -2
  61. package/es/locale/lang/vi-VN.js +906 -903
  62. package/es/locale/lang/zh-CHT.d.ts +908 -2
  63. package/es/locale/lang/zh-CHT.js +906 -903
  64. package/es/locale/lang/zh-CN.d.ts +908 -2
  65. package/es/locale/lang/zh-CN.js +906 -903
  66. package/es/locale/lang/zh-HK.d.ts +908 -2
  67. package/es/locale/lang/zh-HK.js +910 -2
  68. package/es/locale/lang/zh-MO.d.ts +908 -2
  69. package/es/locale/lang/zh-MO.js +910 -2
  70. package/es/locale/lang/zh-TC.d.ts +908 -0
  71. package/es/locale/lang/zh-TC.js +910 -2
  72. package/es/locale/lang/zh-TW.d.ts +908 -2
  73. package/es/locale/lang/zh-TW.js +910 -2
  74. package/es/table/index.d.ts +2672 -0
  75. package/es/table/index.js +16 -11
  76. package/es/table/module/custom/hook.d.ts +1 -0
  77. package/es/table/module/custom/hook.js +462 -483
  78. package/es/table/module/custom/panel.d.ts +17 -0
  79. package/es/table/module/custom/panel.js +1482 -1559
  80. package/es/table/module/edit/hook.d.ts +1 -0
  81. package/es/table/module/edit/hook.js +1008 -1078
  82. package/es/table/module/export/export-panel.d.ts +27 -0
  83. package/es/table/module/export/export-panel.js +523 -575
  84. package/es/table/module/export/hook.d.ts +1 -0
  85. package/es/table/module/export/hook.js +1805 -1884
  86. package/es/table/module/export/import-panel.d.ts +27 -0
  87. package/es/table/module/export/import-panel.js +244 -252
  88. package/es/table/module/export/util.d.ts +5 -0
  89. package/es/table/module/export/util.js +20 -17
  90. package/es/table/module/filter/hook.d.ts +1 -0
  91. package/es/table/module/filter/hook.js +472 -487
  92. package/es/table/module/filter/panel.d.ts +16 -0
  93. package/es/table/module/filter/panel.js +251 -275
  94. package/es/table/module/keyboard/hook.d.ts +1 -0
  95. package/es/table/module/keyboard/hook.js +445 -497
  96. package/es/table/module/menu/hook.d.ts +1 -0
  97. package/es/table/module/menu/hook.js +295 -315
  98. package/es/table/module/menu/panel.d.ts +2 -0
  99. package/es/table/module/menu/panel.js +164 -183
  100. package/es/table/module/validator/hook.d.ts +1 -0
  101. package/es/table/module/validator/hook.js +522 -571
  102. package/es/table/render/index.d.ts +1 -0
  103. package/es/table/render/index.js +1402 -1362
  104. package/es/table/src/body.d.ts +24 -0
  105. package/es/table/src/body.js +850 -865
  106. package/es/table/src/cell.d.ts +192 -0
  107. package/es/table/src/cell.js +1209 -1207
  108. package/es/table/src/column.d.ts +263 -0
  109. package/es/table/src/column.js +178 -174
  110. package/es/table/src/columnInfo.d.ts +13 -0
  111. package/es/table/src/columnInfo.js +202 -196
  112. package/es/table/src/emits.d.ts +2 -0
  113. package/es/table/src/emits.js +126 -119
  114. package/es/table/src/footer.d.ts +45 -0
  115. package/es/table/src/footer.js +336 -340
  116. package/es/table/src/group.d.ts +178 -0
  117. package/es/table/src/group.js +49 -46
  118. package/es/table/src/header.d.ts +26 -0
  119. package/es/table/src/header.js +517 -519
  120. package/es/table/src/props.d.ts +238 -0
  121. package/es/table/src/props.js +331 -328
  122. package/es/table/src/store.d.ts +6 -0
  123. package/es/table/src/store.js +9 -6
  124. package/es/table/src/table.d.ts +539 -0
  125. package/es/table/src/table.js +14064 -15041
  126. package/es/table/src/use/cell-view.d.ts +10 -0
  127. package/es/table/src/use/cell-view.js +36 -33
  128. package/es/table/src/use/index.d.ts +1 -0
  129. package/es/table/src/use/index.js +1 -1
  130. package/es/table/src/util.d.ts +74 -0
  131. package/es/table/src/util.js +1038 -1026
  132. package/es/table/style.css +1 -1
  133. package/es/table/style.mini.css +1 -0
  134. package/es/toolbar/index.d.ts +340 -0
  135. package/es/toolbar/index.js +14 -9
  136. package/es/toolbar/src/toolbar.d.ts +75 -0
  137. package/es/toolbar/src/toolbar.js +605 -613
  138. package/es/toolbar/{style.min.css → style.mini.css} +1 -1
  139. package/es/ui/index.d.ts +86 -0
  140. package/es/ui/index.js +457 -501
  141. package/es/ui/src/anime.d.ts +10 -0
  142. package/es/ui/src/anime.js +40 -40
  143. package/es/ui/src/comp.d.ts +2 -0
  144. package/es/ui/src/comp.js +5 -2
  145. package/es/ui/src/dom.d.ts +80 -0
  146. package/es/ui/src/dom.js +377 -380
  147. package/es/ui/src/log.d.ts +6 -0
  148. package/es/ui/src/log.js +18 -13
  149. package/es/ui/src/utils.d.ts +23 -0
  150. package/es/ui/src/utils.js +57 -53
  151. package/es/ui/src/vn.d.ts +7 -0
  152. package/es/ui/src/vn.js +49 -42
  153. package/es/v-x-e-table/index.d.ts +3 -0
  154. package/es/v-x-e-table/index.js +6 -3
  155. package/es/vxe-colgroup/index.d.ts +3 -0
  156. package/es/vxe-colgroup/index.js +6 -3
  157. package/es/vxe-column/index.d.ts +3 -0
  158. package/es/vxe-column/index.js +6 -3
  159. package/es/vxe-grid/index.d.ts +3 -0
  160. package/es/vxe-grid/index.js +6 -3
  161. package/{lib/grid/style/style.min.css → es/vxe-grid/style.mini.css} +1 -1
  162. package/es/vxe-table/index.d.ts +3 -0
  163. package/es/vxe-table/index.js +6 -3
  164. package/es/vxe-table/style.css +1 -1
  165. package/es/vxe-table/style.mini.css +1 -0
  166. package/es/vxe-toolbar/index.d.ts +3 -0
  167. package/es/vxe-toolbar/index.js +6 -3
  168. package/es/vxe-toolbar/{style.min.css → style.mini.css} +1 -1
  169. package/es/vxe-ui/index.d.ts +3 -0
  170. package/es/vxe-ui/index.js +6 -3
  171. package/lib/colgroup/index.js +44 -18
  172. package/lib/colgroup/style/index.js +1 -1
  173. package/lib/column/index.js +44 -18
  174. package/lib/column/style/index.js +1 -1
  175. package/lib/components.js +58 -92
  176. package/lib/grid/index.js +42 -14
  177. package/lib/grid/src/emits.js +37 -6
  178. package/lib/grid/src/grid.js +850 -1195
  179. package/lib/grid/src/props.js +27 -11
  180. package/lib/grid/style/index.js +1 -1
  181. package/lib/{vxe-grid/style/style.min.css → grid/style/style.mini.css} +1 -1
  182. package/lib/iconfont.1792977622800.ttf +0 -0
  183. package/lib/iconfont.1792977622800.woff +0 -0
  184. package/lib/iconfont.1792977622800.woff2 +0 -0
  185. package/lib/index.common.js +35 -19
  186. package/lib/index.js +37 -0
  187. package/lib/index.umd.js +30586 -24322
  188. package/lib/index.umd.min.js +3 -1
  189. package/lib/locale/ar-EG.umd.js +948 -0
  190. package/lib/locale/de-DE.umd.js +948 -0
  191. package/lib/locale/en-US.umd.js +948 -0
  192. package/lib/locale/es-ES.umd.js +948 -0
  193. package/lib/locale/fr-FR.umd.js +948 -0
  194. package/lib/locale/hu-HU.umd.js +948 -0
  195. package/lib/locale/hy-AM.umd.js +948 -0
  196. package/lib/locale/id-ID.umd.js +948 -0
  197. package/lib/locale/it-IT.umd.js +948 -0
  198. package/lib/locale/ja-JP.umd.js +948 -0
  199. package/lib/locale/ko-KR.umd.js +948 -0
  200. package/lib/locale/lang/ar-EG.js +681 -664
  201. package/lib/locale/lang/ar-EG.umd.js +913 -892
  202. package/lib/locale/lang/de-DE.js +681 -664
  203. package/lib/locale/lang/de-DE.umd.js +913 -892
  204. package/lib/locale/lang/en-US.js +678 -661
  205. package/lib/locale/lang/en-US.umd.js +913 -892
  206. package/lib/locale/lang/es-ES.js +681 -664
  207. package/lib/locale/lang/es-ES.umd.js +913 -892
  208. package/lib/locale/lang/fr-FR.js +654 -637
  209. package/lib/locale/lang/fr-FR.umd.js +913 -892
  210. package/lib/locale/lang/hu-HU.js +681 -664
  211. package/lib/locale/lang/hu-HU.umd.js +913 -892
  212. package/lib/locale/lang/hy-AM.js +681 -664
  213. package/lib/locale/lang/hy-AM.umd.js +913 -892
  214. package/lib/locale/lang/id-ID.js +681 -664
  215. package/lib/locale/lang/id-ID.umd.js +913 -892
  216. package/lib/locale/lang/it-IT.js +661 -644
  217. package/lib/locale/lang/it-IT.umd.js +912 -891
  218. package/lib/locale/lang/ja-JP.js +710 -693
  219. package/lib/locale/lang/ja-JP.umd.js +913 -892
  220. package/lib/locale/lang/ko-KR.js +681 -664
  221. package/lib/locale/lang/ko-KR.umd.js +913 -892
  222. package/lib/locale/lang/ms-MY.js +681 -664
  223. package/lib/locale/lang/ms-MY.umd.js +913 -892
  224. package/lib/locale/lang/nb-NO.js +681 -664
  225. package/lib/locale/lang/nb-NO.umd.js +913 -892
  226. package/lib/locale/lang/pt-BR.js +681 -664
  227. package/lib/locale/lang/pt-BR.umd.js +913 -892
  228. package/lib/locale/lang/ru-RU.js +690 -673
  229. package/lib/locale/lang/ru-RU.umd.js +913 -892
  230. package/lib/locale/lang/th-TH.js +681 -664
  231. package/lib/locale/lang/th-TH.umd.js +913 -892
  232. package/lib/locale/lang/ug-CN.js +681 -664
  233. package/lib/locale/lang/ug-CN.umd.js +913 -892
  234. package/lib/locale/lang/uk-UA.js +674 -657
  235. package/lib/locale/lang/uk-UA.umd.js +913 -892
  236. package/lib/locale/lang/uz-UZ.js +583 -566
  237. package/lib/locale/lang/uz-UZ.umd.js +908 -887
  238. package/lib/locale/lang/vi-VN.js +681 -664
  239. package/lib/locale/lang/vi-VN.umd.js +913 -892
  240. package/lib/locale/lang/zh-CHT.js +681 -664
  241. package/lib/locale/lang/zh-CHT.umd.js +913 -892
  242. package/lib/locale/lang/zh-CN.js +681 -664
  243. package/lib/locale/lang/zh-CN.umd.js +913 -892
  244. package/lib/locale/lang/zh-HK.js +928 -7
  245. package/lib/locale/lang/zh-HK.umd.js +945 -20
  246. package/lib/locale/lang/zh-MO.js +928 -7
  247. package/lib/locale/lang/zh-MO.umd.js +945 -20
  248. package/lib/locale/lang/zh-TC.js +928 -7
  249. package/lib/locale/lang/zh-TC.umd.js +948 -0
  250. package/lib/locale/lang/zh-TW.js +928 -7
  251. package/lib/locale/lang/zh-TW.umd.js +945 -20
  252. package/lib/locale/ms-MY.umd.js +948 -0
  253. package/lib/locale/nb-NO.umd.js +948 -0
  254. package/lib/locale/pt-BR.umd.js +948 -0
  255. package/lib/locale/ru-RU.umd.js +948 -0
  256. package/lib/locale/th-TH.umd.js +948 -0
  257. package/lib/locale/ug-CN.umd.js +948 -0
  258. package/lib/locale/uk-UA.umd.js +948 -0
  259. package/lib/locale/uz-UZ.umd.js +948 -0
  260. package/lib/locale/vi-VN.umd.js +948 -0
  261. package/lib/locale/zh-CHT.umd.js +948 -0
  262. package/lib/locale/zh-CN.umd.js +948 -0
  263. package/lib/locale/zh-HK.umd.js +948 -0
  264. package/lib/locale/zh-MO.umd.js +948 -0
  265. package/lib/locale/zh-TC.umd.js +948 -0
  266. package/lib/locale/zh-TW.umd.js +948 -0
  267. package/lib/style.css +4501 -1
  268. package/lib/style.mini.css +1 -0
  269. package/lib/table/index.js +45 -17
  270. package/lib/table/module/custom/hook.js +132 -252
  271. package/lib/table/module/custom/panel.js +919 -970
  272. package/lib/table/module/edit/hook.js +250 -620
  273. package/lib/table/module/export/export-panel.js +390 -347
  274. package/lib/table/module/export/hook.js +745 -1179
  275. package/lib/table/module/export/import-panel.js +170 -136
  276. package/lib/table/module/export/util.js +37 -14
  277. package/lib/table/module/filter/hook.js +127 -227
  278. package/lib/table/module/filter/panel.js +177 -208
  279. package/lib/table/module/keyboard/hook.js +93 -172
  280. package/lib/table/module/menu/hook.js +86 -165
  281. package/lib/table/module/menu/panel.js +176 -141
  282. package/lib/table/module/validator/hook.js +164 -271
  283. package/lib/table/render/index.js +700 -1147
  284. package/lib/table/src/body.js +426 -559
  285. package/lib/table/src/cell.js +619 -987
  286. package/lib/table/src/column.js +55 -30
  287. package/lib/table/src/columnInfo.js +88 -110
  288. package/lib/table/src/emits.js +145 -13
  289. package/lib/table/src/footer.js +181 -240
  290. package/lib/table/src/group.js +56 -34
  291. package/lib/table/src/header.js +292 -367
  292. package/lib/table/src/props.js +27 -12
  293. package/lib/table/src/store.js +25 -9
  294. package/lib/table/src/table.js +14179 -1019
  295. package/lib/table/src/use/cell-view.js +47 -37
  296. package/lib/table/src/use/index.js +17 -15
  297. package/lib/table/src/util.js +236 -337
  298. package/lib/table/style/index.js +1 -1
  299. package/lib/table/style/style.css +1 -1
  300. package/lib/table/style/style.mini.css +1 -0
  301. package/lib/toolbar/index.js +42 -14
  302. package/lib/toolbar/src/toolbar.js +271 -379
  303. package/lib/toolbar/style/index.js +1 -1
  304. package/lib/toolbar/style/{style.min.css → style.mini.css} +1 -1
  305. package/lib/ui/index.js +153 -195
  306. package/lib/ui/src/anime.js +49 -29
  307. package/lib/ui/src/comp.js +23 -6
  308. package/lib/ui/src/dom.js +114 -147
  309. package/lib/ui/src/log.js +34 -18
  310. package/lib/ui/src/utils.js +57 -45
  311. package/lib/ui/src/vn.js +60 -34
  312. package/lib/ui/style/index.js +1 -1
  313. package/lib/v-x-e-table/index.js +35 -19
  314. package/lib/vxe-colgroup/index.js +35 -19
  315. package/lib/vxe-colgroup/style/index.js +1 -1
  316. package/lib/vxe-column/index.js +35 -19
  317. package/lib/vxe-column/style/index.js +1 -1
  318. package/lib/vxe-grid/index.js +35 -19
  319. package/lib/vxe-grid/style/index.js +1 -1
  320. package/{es/grid/style.min.css → lib/vxe-grid/style/style.mini.css} +1 -1
  321. package/lib/vxe-table/index.js +35 -19
  322. package/lib/vxe-table/style/index.js +1 -1
  323. package/lib/vxe-table/style/style.css +1 -1
  324. package/lib/vxe-table/style/style.mini.css +1 -0
  325. package/lib/vxe-toolbar/index.js +35 -19
  326. package/lib/vxe-toolbar/style/index.js +1 -1
  327. package/lib/vxe-toolbar/style/{style.min.css → style.mini.css} +1 -1
  328. package/lib/vxe-ui/index.js +35 -19
  329. package/lib/vxe-ui/style/index.js +1 -1
  330. package/package.json +8 -4
  331. package/packages/locale/lang/zh-HK.ts +907 -3
  332. package/packages/locale/lang/zh-MO.ts +907 -3
  333. package/packages/locale/lang/zh-TC.ts +907 -3
  334. package/packages/locale/lang/zh-TW.ts +907 -3
  335. package/packages/table/module/edit/hook.ts +2 -2
  336. package/packages/table/src/table.ts +64 -28
  337. package/packages/ui/index.ts +1 -28
  338. package/dist/style.min.css +0 -1
  339. package/es/index.css +0 -1
  340. package/es/index.min.css +0 -1
  341. package/es/style.css +0 -1
  342. package/es/style.min.css +0 -1
  343. package/es/table/style.min.css +0 -1
  344. package/es/vxe-table/style.min.css +0 -1
  345. package/es/vxe-v-x-e-table/index.js +0 -3
  346. package/lib/colgroup/index.min.js +0 -1
  347. package/lib/column/index.min.js +0 -1
  348. package/lib/components.min.js +0 -1
  349. package/lib/grid/index.min.js +0 -1
  350. package/lib/grid/src/emits.min.js +0 -1
  351. package/lib/grid/src/grid.min.js +0 -1
  352. package/lib/grid/src/props.min.js +0 -1
  353. package/lib/index.css +0 -1
  354. package/lib/index.min.css +0 -1
  355. package/lib/locale/lang/ar-EG.d.ts +0 -2
  356. package/lib/locale/lang/ar-EG.min.js +0 -1
  357. package/lib/locale/lang/de-DE.d.ts +0 -2
  358. package/lib/locale/lang/de-DE.min.js +0 -1
  359. package/lib/locale/lang/en-US.d.ts +0 -2
  360. package/lib/locale/lang/en-US.min.js +0 -1
  361. package/lib/locale/lang/es-ES.d.ts +0 -2
  362. package/lib/locale/lang/es-ES.min.js +0 -1
  363. package/lib/locale/lang/fr-FR.d.ts +0 -2
  364. package/lib/locale/lang/fr-FR.min.js +0 -1
  365. package/lib/locale/lang/hu-HU.d.ts +0 -2
  366. package/lib/locale/lang/hu-HU.min.js +0 -1
  367. package/lib/locale/lang/hy-AM.d.ts +0 -2
  368. package/lib/locale/lang/hy-AM.min.js +0 -1
  369. package/lib/locale/lang/id-ID.d.ts +0 -2
  370. package/lib/locale/lang/id-ID.min.js +0 -1
  371. package/lib/locale/lang/it-IT.d.ts +0 -2
  372. package/lib/locale/lang/it-IT.min.js +0 -1
  373. package/lib/locale/lang/ja-JP.d.ts +0 -2
  374. package/lib/locale/lang/ja-JP.min.js +0 -1
  375. package/lib/locale/lang/ko-KR.d.ts +0 -2
  376. package/lib/locale/lang/ko-KR.min.js +0 -1
  377. package/lib/locale/lang/ms-MY.d.ts +0 -2
  378. package/lib/locale/lang/ms-MY.min.js +0 -1
  379. package/lib/locale/lang/nb-NO.d.ts +0 -2
  380. package/lib/locale/lang/nb-NO.min.js +0 -1
  381. package/lib/locale/lang/pt-BR.d.ts +0 -2
  382. package/lib/locale/lang/pt-BR.min.js +0 -1
  383. package/lib/locale/lang/ru-RU.d.ts +0 -2
  384. package/lib/locale/lang/ru-RU.min.js +0 -1
  385. package/lib/locale/lang/th-TH.d.ts +0 -2
  386. package/lib/locale/lang/th-TH.min.js +0 -1
  387. package/lib/locale/lang/ug-CN.d.ts +0 -2
  388. package/lib/locale/lang/ug-CN.min.js +0 -1
  389. package/lib/locale/lang/uk-UA.d.ts +0 -2
  390. package/lib/locale/lang/uk-UA.min.js +0 -1
  391. package/lib/locale/lang/uz-UZ.d.ts +0 -2
  392. package/lib/locale/lang/uz-UZ.min.js +0 -1
  393. package/lib/locale/lang/vi-VN.d.ts +0 -2
  394. package/lib/locale/lang/vi-VN.min.js +0 -1
  395. package/lib/locale/lang/zh-CHT.d.ts +0 -2
  396. package/lib/locale/lang/zh-CHT.min.js +0 -1
  397. package/lib/locale/lang/zh-CN.d.ts +0 -2
  398. package/lib/locale/lang/zh-CN.min.js +0 -1
  399. package/lib/locale/lang/zh-HK.d.ts +0 -2
  400. package/lib/locale/lang/zh-HK.min.js +0 -1
  401. package/lib/locale/lang/zh-MO.d.ts +0 -2
  402. package/lib/locale/lang/zh-MO.min.js +0 -1
  403. package/lib/locale/lang/zh-TC.min.js +0 -1
  404. package/lib/locale/lang/zh-TW.d.ts +0 -2
  405. package/lib/locale/lang/zh-TW.min.js +0 -1
  406. package/lib/style.min.css +0 -1
  407. package/lib/table/index.min.js +0 -1
  408. package/lib/table/module/custom/hook.min.js +0 -1
  409. package/lib/table/module/custom/panel.min.js +0 -1
  410. package/lib/table/module/edit/hook.min.js +0 -1
  411. package/lib/table/module/export/export-panel.min.js +0 -1
  412. package/lib/table/module/export/hook.min.js +0 -1
  413. package/lib/table/module/export/import-panel.min.js +0 -1
  414. package/lib/table/module/export/util.min.js +0 -1
  415. package/lib/table/module/filter/hook.min.js +0 -1
  416. package/lib/table/module/filter/panel.min.js +0 -1
  417. package/lib/table/module/keyboard/hook.min.js +0 -1
  418. package/lib/table/module/menu/hook.min.js +0 -1
  419. package/lib/table/module/menu/panel.min.js +0 -1
  420. package/lib/table/module/validator/hook.min.js +0 -1
  421. package/lib/table/render/index.min.js +0 -1
  422. package/lib/table/src/body.min.js +0 -1
  423. package/lib/table/src/cell.min.js +0 -1
  424. package/lib/table/src/column.min.js +0 -1
  425. package/lib/table/src/columnInfo.min.js +0 -1
  426. package/lib/table/src/emits.min.js +0 -1
  427. package/lib/table/src/footer.min.js +0 -1
  428. package/lib/table/src/group.min.js +0 -1
  429. package/lib/table/src/header.min.js +0 -1
  430. package/lib/table/src/props.min.js +0 -1
  431. package/lib/table/src/store.min.js +0 -1
  432. package/lib/table/src/table.min.js +0 -1
  433. package/lib/table/src/use/cell-view.min.js +0 -1
  434. package/lib/table/src/use/index.min.js +0 -1
  435. package/lib/table/src/util.min.js +0 -1
  436. package/lib/table/style/style.min.css +0 -1
  437. package/lib/toolbar/index.min.js +0 -1
  438. package/lib/toolbar/src/toolbar.min.js +0 -1
  439. package/lib/ui/index.min.js +0 -1
  440. package/lib/ui/src/anime.min.js +0 -1
  441. package/lib/ui/src/comp.min.js +0 -1
  442. package/lib/ui/src/dom.min.js +0 -1
  443. package/lib/ui/src/log.min.js +0 -1
  444. package/lib/ui/src/utils.min.js +0 -1
  445. package/lib/ui/src/vn.min.js +0 -1
  446. package/lib/ui/style/style.min.css +0 -0
  447. package/lib/v-x-e-table/index.min.js +0 -1
  448. package/lib/v-x-e-table/style/index.js +0 -1
  449. package/lib/v-x-e-table/style/style.css +0 -0
  450. package/lib/v-x-e-table/style/style.min.css +0 -0
  451. package/lib/vxe-colgroup/index.min.js +0 -1
  452. package/lib/vxe-colgroup/style/style.min.css +0 -0
  453. package/lib/vxe-column/index.min.js +0 -1
  454. package/lib/vxe-column/style/style.min.css +0 -0
  455. package/lib/vxe-grid/index.min.js +0 -1
  456. package/lib/vxe-table/index.min.js +0 -1
  457. package/lib/vxe-table/style/style.min.css +0 -1
  458. package/lib/vxe-toolbar/index.min.js +0 -1
  459. package/lib/vxe-ui/index.min.js +0 -1
  460. package/lib/vxe-ui/style/style.min.css +0 -0
  461. package/lib/vxe-v-x-e-table/index.js +0 -21
  462. package/lib/vxe-v-x-e-table/index.min.js +0 -1
  463. package/lib/vxe-v-x-e-table/style/index.js +0 -1
  464. package/lib/vxe-v-x-e-table/style/style.css +0 -0
  465. package/lib/vxe-v-x-e-table/style/style.min.css +0 -0
  466. /package/{es/iconfont.1792740941484.ttf → dist/iconfont.1792977622800.ttf} +0 -0
  467. /package/{es/iconfont.1792740941484.woff → dist/iconfont.1792977622800.woff} +0 -0
  468. /package/{es/iconfont.1792740941484.woff2 → dist/iconfont.1792977622800.woff2} +0 -0
  469. /package/es/colgroup/{style.min.css → style.mini.css} +0 -0
  470. /package/es/column/{style.min.css → style.mini.css} +0 -0
  471. /package/{lib/iconfont.1792740941484.ttf → es/iconfont.1792977622800.ttf} +0 -0
  472. /package/{lib/iconfont.1792740941484.woff → es/iconfont.1792977622800.woff} +0 -0
  473. /package/{lib/iconfont.1792740941484.woff2 → es/iconfont.1792977622800.woff2} +0 -0
  474. /package/es/ui/{style.min.css → style.mini.css} +0 -0
  475. /package/es/{v-x-e-table/style.css → vxe-colgroup/style.mini.css} +0 -0
  476. /package/es/{v-x-e-table/style.min.css → vxe-column/style.mini.css} +0 -0
  477. /package/es/{vxe-colgroup/style.min.css → vxe-ui/style.mini.css} +0 -0
  478. /package/{es/vxe-column/style.min.css → lib/colgroup/style/style.mini.css} +0 -0
  479. /package/{es/vxe-ui/style.min.css → lib/column/style/style.mini.css} +0 -0
  480. /package/{es/vxe-v-x-e-table/style.css → lib/ui/style/style.mini.css} +0 -0
  481. /package/{es/vxe-v-x-e-table/style.min.css → lib/vxe-colgroup/style/style.mini.css} +0 -0
  482. /package/lib/{colgroup/style/style.min.css → vxe-column/style/style.mini.css} +0 -0
  483. /package/lib/{column/style/style.min.css → vxe-ui/style/style.mini.css} +0 -0
@@ -1,606 +1,557 @@
1
- import { nextTick } from 'vue';
2
- import XEUtils from 'xe-utils';
3
- import { VxeUI } from '../../../ui';
4
- import { eqEmptyValue, getFuncText } from '../../../ui/src/utils';
5
- import { scrollToView } from '../../../ui/src/dom';
6
- import { handleFieldOrColumn, getRowid } from '../../src/util';
7
- import { createComponentLog } from '../../../ui/src/log';
8
- const { warnLog, errLog } = createComponentLog('table');
1
+ import { nextTick } from "vue";
2
+ import XEUtils from "xe-utils";
3
+ import { VxeUI } from "../../../ui";
4
+ import { eqEmptyValue, getFuncText } from "../../../ui/src/utils";
5
+ import { scrollToView } from "../../../ui/src/dom";
6
+ import { handleFieldOrColumn, getRowid } from "../../src/util";
7
+ import { createComponentLog } from "../../../ui/src/log";
8
+ const { warnLog, errLog } = createComponentLog("table");
9
9
  const { getConfig, validators, hooks } = VxeUI;
10
- /**
11
- * 校验规则
12
- */
13
10
  class Rule {
14
- constructor(rule) {
15
- Object.assign(this, {
16
- $options: rule,
17
- required: rule.required,
18
- min: rule.min,
19
- max: rule.max,
20
- type: rule.type,
21
- pattern: rule.pattern,
22
- validator: rule.validator,
23
- trigger: rule.trigger,
24
- maxWidth: rule.maxWidth
25
- });
26
- }
27
- /**
28
- * 获取校验不通过的消息
29
- * 支持国际化翻译
30
- */
31
- get content() {
32
- return getFuncText(this.$options.content || this.$options.message);
33
- }
34
- get message() {
35
- return this.content;
36
- }
11
+ constructor(rule) {
12
+ Object.assign(this, {
13
+ $options: rule,
14
+ required: rule.required,
15
+ min: rule.min,
16
+ max: rule.max,
17
+ type: rule.type,
18
+ pattern: rule.pattern,
19
+ validator: rule.validator,
20
+ trigger: rule.trigger,
21
+ maxWidth: rule.maxWidth
22
+ });
23
+ }
24
+ /**
25
+ * 获取校验不通过的消息
26
+ * 支持国际化翻译
27
+ */
28
+ get content() {
29
+ return getFuncText(this.$options.content || this.$options.message);
30
+ }
31
+ get message() {
32
+ return this.content;
33
+ }
37
34
  }
38
- // 如果存在 pattern,判断正则
39
35
  function validREValue(pattern, val) {
40
- if (pattern && !(XEUtils.isRegExp(pattern) ? pattern : new RegExp(pattern)).test(val)) {
41
- return false;
42
- }
43
- return true;
36
+ if (pattern && !(XEUtils.isRegExp(pattern) ? pattern : new RegExp(pattern)).test(val)) {
37
+ return false;
38
+ }
39
+ return true;
44
40
  }
45
- // 如果存在 max,判断最大值
46
41
  function validMaxValue(max, num) {
47
- if (!XEUtils.eqNull(max) && num > XEUtils.toNumber(max)) {
48
- return false;
49
- }
50
- return true;
42
+ if (!XEUtils.eqNull(max) && num > XEUtils.toNumber(max)) {
43
+ return false;
44
+ }
45
+ return true;
51
46
  }
52
- // 如果存在 min,判断最小值
53
47
  function validMinValue(min, num) {
54
- if (!XEUtils.eqNull(min) && num < XEUtils.toNumber(min)) {
55
- return false;
56
- }
57
- return true;
48
+ if (!XEUtils.eqNull(min) && num < XEUtils.toNumber(min)) {
49
+ return false;
50
+ }
51
+ return true;
58
52
  }
59
53
  function validRuleValue(rule, val, required) {
60
- const { type, min, max, pattern } = rule;
61
- const isArrType = type === 'array';
62
- const isNumType = type === 'number';
63
- const isStrType = type === 'string';
64
- const strVal = `${val}`;
65
- if (!validREValue(pattern, strVal)) {
54
+ const { type, min, max, pattern } = rule;
55
+ const isArrType = type === "array";
56
+ const isNumType = type === "number";
57
+ const isStrType = type === "string";
58
+ const strVal = `${val}`;
59
+ if (!validREValue(pattern, strVal)) {
60
+ return false;
61
+ }
62
+ if (isArrType) {
63
+ if (!XEUtils.isArray(val)) {
64
+ return false;
65
+ }
66
+ if (required) {
67
+ if (!val.length) {
66
68
  return false;
69
+ }
67
70
  }
68
- if (isArrType) {
69
- if (!XEUtils.isArray(val)) {
70
- return false;
71
- }
72
- if (required) {
73
- if (!val.length) {
74
- return false;
75
- }
76
- }
77
- if (!validMinValue(min, val.length)) {
78
- return false;
79
- }
80
- if (!validMaxValue(max, val.length)) {
81
- return false;
82
- }
71
+ if (!validMinValue(min, val.length)) {
72
+ return false;
83
73
  }
84
- else if (isNumType) {
85
- const numVal = Number(val);
86
- if (isNaN(numVal)) {
87
- return false;
88
- }
89
- if (!validMinValue(min, numVal)) {
90
- return false;
91
- }
92
- if (!validMaxValue(max, numVal)) {
93
- return false;
94
- }
74
+ if (!validMaxValue(max, val.length)) {
75
+ return false;
95
76
  }
96
- else {
97
- if (isStrType) {
98
- if (!XEUtils.isString(val)) {
99
- return false;
100
- }
101
- }
102
- if (required) {
103
- if (!strVal) {
104
- return false;
105
- }
106
- }
107
- if (!validMinValue(min, strVal.length)) {
108
- return false;
109
- }
110
- if (!validMaxValue(max, strVal.length)) {
111
- return false;
112
- }
77
+ } else if (isNumType) {
78
+ const numVal = Number(val);
79
+ if (isNaN(numVal)) {
80
+ return false;
81
+ }
82
+ if (!validMinValue(min, numVal)) {
83
+ return false;
113
84
  }
114
- return true;
85
+ if (!validMaxValue(max, numVal)) {
86
+ return false;
87
+ }
88
+ } else {
89
+ if (isStrType) {
90
+ if (!XEUtils.isString(val)) {
91
+ return false;
92
+ }
93
+ }
94
+ if (required) {
95
+ if (!strVal) {
96
+ return false;
97
+ }
98
+ }
99
+ if (!validMinValue(min, strVal.length)) {
100
+ return false;
101
+ }
102
+ if (!validMaxValue(max, strVal.length)) {
103
+ return false;
104
+ }
105
+ }
106
+ return true;
115
107
  }
116
108
  function checkRuleStatus(rule, row, val) {
117
- const { required, field } = rule;
118
- const currVal = field ? XEUtils.get(row, field) : val;
119
- const isEmptyVal = XEUtils.isArray(currVal) ? !currVal.length : eqEmptyValue(currVal);
120
- if (required) {
121
- if (isEmptyVal) {
122
- return false;
123
- }
124
- if (!validRuleValue(rule, currVal, required)) {
125
- return false;
126
- }
109
+ const { required, field } = rule;
110
+ const currVal = field ? XEUtils.get(row, field) : val;
111
+ const isEmptyVal = XEUtils.isArray(currVal) ? !currVal.length : eqEmptyValue(currVal);
112
+ if (required) {
113
+ if (isEmptyVal) {
114
+ return false;
127
115
  }
128
- else {
129
- if (!isEmptyVal) {
130
- if (!validRuleValue(rule, currVal, required)) {
131
- return false;
132
- }
133
- }
116
+ if (!validRuleValue(rule, currVal, required)) {
117
+ return false;
134
118
  }
135
- return true;
119
+ } else {
120
+ if (!isEmptyVal) {
121
+ if (!validRuleValue(rule, currVal, required)) {
122
+ return false;
123
+ }
124
+ }
125
+ }
126
+ return true;
136
127
  }
137
- const tableValidatorMethodKeys = ['fullValidate', 'validate', 'fullValidateField', 'validateField', 'clearValidate'];
138
- hooks.add('tableValidatorModule', {
139
- setupTable($xeTable) {
140
- const { props, reactData, internalData } = $xeTable;
141
- const { refValidTooltip } = $xeTable.getRefMaps();
142
- const { computeValidOpts, computeTreeOpts, computeEditOpts, computeAggregateOpts } = $xeTable.getComputeMaps();
143
- let validatorMethods = {};
144
- let validatorPrivateMethods = {};
145
- const handleClearValid = (rows, fieldOrColumn) => {
146
- const { validErrorMaps } = reactData;
147
- const validOpts = computeValidOpts.value;
148
- const rowList = XEUtils.isArray(rows) ? rows : (rows ? [rows] : []);
149
- const colList = (XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : (fieldOrColumn ? [fieldOrColumn] : [])).map(column => handleFieldOrColumn($xeTable, column));
150
- let validErrMaps = {};
151
- // 如果是多个提示模式
152
- if (validOpts.msgMode === 'full') {
153
- validErrMaps = Object.assign({}, validErrorMaps);
154
- if (rowList.length && colList.length) {
155
- rowList.forEach(row => {
156
- colList.forEach((column) => {
157
- const validKey = `${getRowid($xeTable, row)}:${column.id}`;
158
- if (validErrMaps[validKey]) {
159
- delete validErrMaps[validKey];
160
- }
161
- });
162
- });
163
- }
164
- else if (rowList.length) {
165
- const rowIdList = rowList.map(row => `${getRowid($xeTable, row)}`);
166
- XEUtils.each(validErrorMaps, (item, key) => {
167
- if (rowIdList.indexOf(key.split(':')[0]) > -1) {
168
- delete validErrMaps[key];
169
- }
170
- });
171
- }
172
- else if (colList.length) {
173
- const colidList = colList.map(column => `${column.id}`);
174
- XEUtils.each(validErrorMaps, (item, key) => {
175
- if (colidList.indexOf(key.split(':')[1]) > -1) {
176
- delete validErrMaps[key];
177
- }
178
- });
179
- }
180
- }
181
- return validErrMaps;
182
- };
183
- /**
184
- * 聚焦到校验通过的单元格并弹出校验错误提示
185
- */
186
- const handleValidError = (params) => {
187
- return new Promise(resolve => {
188
- const validOpts = computeValidOpts.value;
189
- if (validOpts.autoPos === false) {
190
- $xeTable.dispatchEvent('valid-error', params, null);
191
- resolve();
192
- }
193
- else {
194
- $xeTable.handleEdit(params, { type: 'valid-error', trigger: 'call' }).then(() => {
195
- resolve($xeTable.showValidTooltip(params));
196
- });
197
- }
128
+ const tableValidatorMethodKeys = ["fullValidate", "validate", "fullValidateField", "validateField", "clearValidate"];
129
+ hooks.add("tableValidatorModule", {
130
+ setupTable($xeTable) {
131
+ const { props, reactData, internalData } = $xeTable;
132
+ const { refValidTooltip } = $xeTable.getRefMaps();
133
+ const { computeValidOpts, computeTreeOpts, computeEditOpts, computeAggregateOpts } = $xeTable.getComputeMaps();
134
+ let validatorMethods = {};
135
+ let validatorPrivateMethods = {};
136
+ const handleClearValid = (rows, fieldOrColumn) => {
137
+ const { validErrorMaps } = reactData;
138
+ const validOpts = computeValidOpts.value;
139
+ const rowList = XEUtils.isArray(rows) ? rows : rows ? [rows] : [];
140
+ const colList = (XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map((column) => handleFieldOrColumn($xeTable, column));
141
+ let validErrMaps = {};
142
+ if (validOpts.msgMode === "full") {
143
+ validErrMaps = Object.assign({}, validErrorMaps);
144
+ if (rowList.length && colList.length) {
145
+ rowList.forEach((row) => {
146
+ colList.forEach((column) => {
147
+ const validKey = `${getRowid($xeTable, row)}:${column.id}`;
148
+ if (validErrMaps[validKey]) {
149
+ delete validErrMaps[validKey];
150
+ }
198
151
  });
199
- };
200
- const handleErrMsgMode = (validErrMaps) => {
201
- const validOpts = computeValidOpts.value;
202
- if (validOpts.msgMode === 'single') {
203
- const keys = Object.keys(validErrMaps);
204
- const resMaps = {};
205
- if (keys.length) {
206
- const firstKey = keys[0];
207
- resMaps[firstKey] = validErrMaps[firstKey];
208
- }
209
- return resMaps;
210
- }
211
- return validErrMaps;
212
- };
213
- /**
214
- * 对表格数据进行校验
215
- * 如果不指定数据,则默认只校验临时变动的数据,例如新增或修改
216
- * 如果传 true 则校验当前表格数据
217
- * 如果传 row 指定行记录,则只验证传入的行
218
- * 如果传 rows 为多行记录,则只验证传入的行
219
- * 如果只传 callback 否则默认验证整个表格数据
220
- * 返回 Promise 对象,或者使用回调方式
221
- */
222
- const beginValidate = (rows, cols, cb, isFull) => {
223
- const validRest = {};
224
- const { editRules, treeConfig } = props;
225
- const { isRowGroupStatus } = reactData;
226
- const { afterFullData, pendingRowMaps, removeRowMaps } = internalData;
227
- const treeOpts = computeTreeOpts.value;
228
- const aggregateOpts = computeAggregateOpts.value;
229
- const validOpts = computeValidOpts.value;
230
- let validList;
231
- if (rows === true) {
232
- validList = afterFullData;
233
- }
234
- else if (rows) {
235
- if (XEUtils.isFunction(rows)) {
236
- cb = rows;
237
- }
238
- else {
239
- validList = XEUtils.isArray(rows) ? rows : [rows];
240
- }
152
+ });
153
+ } else if (rowList.length) {
154
+ const rowIdList = rowList.map((row) => `${getRowid($xeTable, row)}`);
155
+ XEUtils.each(validErrorMaps, (item, key) => {
156
+ if (rowIdList.indexOf(key.split(":")[0]) > -1) {
157
+ delete validErrMaps[key];
241
158
  }
242
- if (!validList) {
243
- if ($xeTable.getInsertRecords) {
244
- validList = $xeTable.getInsertRecords().concat($xeTable.getUpdateRecords());
245
- }
246
- else {
247
- validList = [];
248
- }
159
+ });
160
+ } else if (colList.length) {
161
+ const colidList = colList.map((column) => `${column.id}`);
162
+ XEUtils.each(validErrorMaps, (item, key) => {
163
+ if (colidList.indexOf(key.split(":")[1]) > -1) {
164
+ delete validErrMaps[key];
249
165
  }
250
- const rowValidErrs = [];
251
- internalData._lastCallTime = Date.now();
252
- internalData.validRuleErr = false; // 如果为快速校验,当存在某列校验不通过时将终止执行
253
- $xeTable.clearValidate();
254
- const validErrMaps = {};
255
- if (editRules) {
256
- const columns = cols && cols.length ? cols : $xeTable.getColumns();
257
- const handleVaild = (row) => {
258
- const rowid = getRowid($xeTable, row);
259
- // 是否删除
260
- if (removeRowMaps[rowid]) {
261
- return;
262
- }
263
- // 是否标记删除
264
- if (pendingRowMaps[rowid]) {
265
- return;
266
- }
267
- if ($xeTable.isAggregateRecord(row)) {
268
- return;
166
+ });
167
+ }
168
+ }
169
+ return validErrMaps;
170
+ };
171
+ const handleValidError = (params) => {
172
+ return new Promise((resolve) => {
173
+ const validOpts = computeValidOpts.value;
174
+ if (validOpts.autoPos === false) {
175
+ $xeTable.dispatchEvent("valid-error", params, null);
176
+ resolve();
177
+ } else {
178
+ $xeTable.handleEdit(params, { type: "valid-error", trigger: "call" }).then(() => {
179
+ resolve($xeTable.showValidTooltip(params));
180
+ });
181
+ }
182
+ });
183
+ };
184
+ const handleErrMsgMode = (validErrMaps) => {
185
+ const validOpts = computeValidOpts.value;
186
+ if (validOpts.msgMode === "single") {
187
+ const keys = Object.keys(validErrMaps);
188
+ const resMaps = {};
189
+ if (keys.length) {
190
+ const firstKey = keys[0];
191
+ resMaps[firstKey] = validErrMaps[firstKey];
192
+ }
193
+ return resMaps;
194
+ }
195
+ return validErrMaps;
196
+ };
197
+ const beginValidate = (rows, cols, cb, isFull) => {
198
+ const validRest = {};
199
+ const { editRules, treeConfig } = props;
200
+ const { isRowGroupStatus } = reactData;
201
+ const { afterFullData, pendingRowMaps, removeRowMaps } = internalData;
202
+ const treeOpts = computeTreeOpts.value;
203
+ const aggregateOpts = computeAggregateOpts.value;
204
+ const validOpts = computeValidOpts.value;
205
+ let validList;
206
+ if (rows === true) {
207
+ validList = afterFullData;
208
+ } else if (rows) {
209
+ if (XEUtils.isFunction(rows)) {
210
+ cb = rows;
211
+ } else {
212
+ validList = XEUtils.isArray(rows) ? rows : [rows];
213
+ }
214
+ }
215
+ if (!validList) {
216
+ if ($xeTable.getInsertRecords) {
217
+ validList = $xeTable.getInsertRecords().concat($xeTable.getUpdateRecords());
218
+ } else {
219
+ validList = [];
220
+ }
221
+ }
222
+ const rowValidErrs = [];
223
+ internalData._lastCallTime = Date.now();
224
+ internalData.validRuleErr = false;
225
+ $xeTable.clearValidate();
226
+ const validErrMaps = {};
227
+ if (editRules) {
228
+ const columns = cols && cols.length ? cols : $xeTable.getColumns();
229
+ const handleVaild = (row) => {
230
+ const rowid = getRowid($xeTable, row);
231
+ if (removeRowMaps[rowid]) {
232
+ return;
233
+ }
234
+ if (pendingRowMaps[rowid]) {
235
+ return;
236
+ }
237
+ if ($xeTable.isAggregateRecord(row)) {
238
+ return;
239
+ }
240
+ if (isFull || !internalData.validRuleErr) {
241
+ const colVailds = [];
242
+ columns.forEach((column) => {
243
+ const field = XEUtils.isString(column) ? column : column.field;
244
+ if ((isFull || !internalData.validRuleErr) && XEUtils.has(editRules, field)) {
245
+ colVailds.push(
246
+ validatorPrivateMethods.validCellRules("all", row, column).catch(({ rule, rules }) => {
247
+ const rest = {
248
+ rule,
249
+ rules,
250
+ rowIndex: $xeTable.getRowIndex(row),
251
+ row,
252
+ columnIndex: $xeTable.getColumnIndex(column),
253
+ column,
254
+ field,
255
+ $table: $xeTable
256
+ };
257
+ if (!validRest[field]) {
258
+ validRest[field] = [];
269
259
  }
270
- if (isFull || !internalData.validRuleErr) {
271
- const colVailds = [];
272
- columns.forEach((column) => {
273
- const field = XEUtils.isString(column) ? column : column.field;
274
- if ((isFull || !internalData.validRuleErr) && XEUtils.has(editRules, field)) {
275
- colVailds.push(validatorPrivateMethods.validCellRules('all', row, column)
276
- .catch(({ rule, rules }) => {
277
- const rest = {
278
- rule,
279
- rules,
280
- rowIndex: $xeTable.getRowIndex(row),
281
- row,
282
- columnIndex: $xeTable.getColumnIndex(column),
283
- column,
284
- field,
285
- $table: $xeTable
286
- };
287
- if (!validRest[field]) {
288
- validRest[field] = [];
289
- }
290
- validErrMaps[`${getRowid($xeTable, row)}:${column.id}`] = {
291
- column,
292
- row,
293
- rule,
294
- content: rule.content
295
- };
296
- validRest[field].push(rest);
297
- if (!isFull) {
298
- internalData.validRuleErr = true;
299
- return Promise.reject(rest);
300
- }
301
- }));
302
- }
303
- });
304
- rowValidErrs.push(Promise.all(colVailds));
260
+ validErrMaps[`${getRowid($xeTable, row)}:${column.id}`] = {
261
+ column,
262
+ row,
263
+ rule,
264
+ content: rule.content
265
+ };
266
+ validRest[field].push(rest);
267
+ if (!isFull) {
268
+ internalData.validRuleErr = true;
269
+ return Promise.reject(rest);
305
270
  }
306
- };
307
- if (isRowGroupStatus) {
308
- XEUtils.eachTree(validList, handleVaild, { children: aggregateOpts.mapChildrenField });
309
- }
310
- else if (treeConfig) {
311
- const childrenField = treeOpts.children || treeOpts.childrenField;
312
- XEUtils.eachTree(validList, handleVaild, { children: childrenField });
313
- }
314
- else {
315
- validList.forEach(handleVaild);
316
- }
317
- return Promise.all(rowValidErrs).then(() => {
318
- const ruleProps = Object.keys(validRest);
319
- reactData.validErrorMaps = Object.assign(handleClearValid(rows, columns), handleErrMsgMode(validErrMaps));
320
- return nextTick().then(() => {
321
- if (ruleProps.length) {
322
- return Promise.reject(validRest[ruleProps[0]][0]);
323
- }
324
- if (cb) {
325
- cb();
326
- }
327
- });
328
- }).catch(firstErrParams => {
329
- return new Promise((resolve, reject) => {
330
- const finish = () => {
331
- nextTick(() => {
332
- if (cb) {
333
- cb(validRest);
334
- resolve();
335
- }
336
- else {
337
- if (getConfig().validToReject === 'obsolete') {
338
- // 已废弃,校验失败将不会执行catch
339
- reject(validRest);
340
- }
341
- else {
342
- resolve(validRest);
343
- }
344
- }
345
- });
346
- };
347
- const posAndFinish = () => {
348
- firstErrParams.cell = $xeTable.getCellElement(firstErrParams.row, firstErrParams.column);
349
- scrollToView(firstErrParams.cell);
350
- handleValidError(firstErrParams).then(finish);
351
- };
352
- /**
353
- * 当校验不通过时
354
- * 将表格滚动到可视区
355
- * 由于提示信息至少需要占一行,定位向上偏移一行
356
- */
357
- if (validOpts.autoPos === false) {
358
- finish();
359
- }
360
- else {
361
- const row = firstErrParams.row;
362
- const column = firstErrParams.column;
363
- $xeTable.scrollToRow(row, column).then(posAndFinish);
364
- }
365
- });
366
- });
271
+ })
272
+ );
273
+ }
274
+ });
275
+ rowValidErrs.push(Promise.all(colVailds));
276
+ }
277
+ };
278
+ if (isRowGroupStatus) {
279
+ XEUtils.eachTree(validList, handleVaild, { children: aggregateOpts.mapChildrenField });
280
+ } else if (treeConfig) {
281
+ const childrenField = treeOpts.children || treeOpts.childrenField;
282
+ XEUtils.eachTree(validList, handleVaild, { children: childrenField });
283
+ } else {
284
+ validList.forEach(handleVaild);
285
+ }
286
+ return Promise.all(rowValidErrs).then(() => {
287
+ const ruleProps = Object.keys(validRest);
288
+ reactData.validErrorMaps = Object.assign(handleClearValid(rows, columns), handleErrMsgMode(validErrMaps));
289
+ return nextTick().then(() => {
290
+ if (ruleProps.length) {
291
+ return Promise.reject(validRest[ruleProps[0]][0]);
367
292
  }
368
- else {
369
- reactData.validErrorMaps = {};
293
+ if (cb) {
294
+ cb();
370
295
  }
371
- return nextTick().then(() => {
296
+ });
297
+ }).catch((firstErrParams) => {
298
+ return new Promise((resolve, reject) => {
299
+ const finish = () => {
300
+ nextTick(() => {
372
301
  if (cb) {
373
- cb();
302
+ cb(validRest);
303
+ resolve();
304
+ } else {
305
+ if (getConfig().validToReject === "obsolete") {
306
+ reject(validRest);
307
+ } else {
308
+ resolve(validRest);
309
+ }
374
310
  }
375
- });
376
- };
377
- validatorMethods = {
378
- /**
379
- * 完整校验行,和 validate 的区别就是会给有效数据中的每一行进行校验
380
- */
381
- fullValidate(rows, cb) {
382
- if (XEUtils.isFunction(cb)) {
383
- warnLog('vxe.error.notValidators', ['fullValidate(rows, callback)', 'fullValidate(rows)']);
384
- }
385
- return beginValidate(rows, null, cb, true);
386
- },
387
- /**
388
- * 快速校验行,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外)
389
- */
390
- validate(rows, cb) {
391
- return beginValidate(rows, null, cb);
392
- },
393
- /**
394
- * 完整校验单元格,和 validateField 的区别就是会给有效数据中的每一行进行校验
395
- */
396
- fullValidateField(rows, fieldOrColumn) {
397
- const colList = (XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : (fieldOrColumn ? [fieldOrColumn] : [])).map(column => handleFieldOrColumn($xeTable, column));
398
- if (colList.length) {
399
- return beginValidate(rows, colList, null, true);
400
- }
401
- return nextTick();
402
- },
403
- /**
404
- * 快速校验单元格,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外)
405
- */
406
- validateField(rows, fieldOrColumn) {
407
- const colList = (XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : (fieldOrColumn ? [fieldOrColumn] : [])).map(column => handleFieldOrColumn($xeTable, column));
408
- if (colList.length) {
409
- return beginValidate(rows, colList, null);
410
- }
411
- return nextTick();
412
- },
413
- clearValidate(rows, fieldOrColumn) {
414
- const validTip = refValidTooltip.value;
415
- if (validTip && validTip.reactData.visible) {
416
- validTip.close();
417
- }
418
- reactData.validErrorMaps = handleClearValid(rows, fieldOrColumn);
419
- return nextTick();
311
+ });
312
+ };
313
+ const posAndFinish = () => {
314
+ firstErrParams.cell = $xeTable.getCellElement(firstErrParams.row, firstErrParams.column);
315
+ scrollToView(firstErrParams.cell);
316
+ handleValidError(firstErrParams).then(finish);
317
+ };
318
+ if (validOpts.autoPos === false) {
319
+ finish();
320
+ } else {
321
+ const row = firstErrParams.row;
322
+ const column = firstErrParams.column;
323
+ $xeTable.scrollToRow(row, column).then(posAndFinish);
420
324
  }
421
- };
422
- validatorPrivateMethods = {
423
- /**
424
- * 校验数据
425
- * 按表格行、列顺序依次校验(同步或异步)
426
- * 校验规则根据索引顺序依次校验,如果是异步则会等待校验完成才会继续校验下一列
427
- * 如果校验失败则,触发回调或者Promise<不通过列的错误消息>
428
- * 如果是传回调方式这返回一个校验不通过列的错误消息
429
- *
430
- * rule 配置:
431
- * required=Boolean 是否必填
432
- * min=Number 最小长度
433
- * max=Number 最大长度
434
- * validator=Function({ cellValue, rule, rules, row, column, rowIndex, columnIndex }) 自定义校验,接收一个 Promise
435
- * trigger=blur|change 触发方式(除非特殊场景,否则默认为空就行)
436
- */
437
- validCellRules(validType, row, column, val) {
438
- const $xeGrid = $xeTable.xeGrid;
439
- const $xeGantt = $xeTable.xeGantt;
440
- const { editRules } = props;
441
- const { field } = column;
442
- const errorRules = [];
443
- const syncValidList = [];
444
- if (field && editRules) {
445
- const rules = column.rules ? column.rules : XEUtils.get(editRules, field);
446
- if (rules) {
447
- const cellValue = XEUtils.isUndefined(val) ? XEUtils.get(row, field) : val;
448
- rules.forEach((rule) => {
449
- const { trigger, validator } = rule;
450
- if (validType === 'all' || !trigger || validType === trigger) {
451
- if (validator) {
452
- const validParams = {
453
- cellValue,
454
- rule,
455
- rules,
456
- row,
457
- rowIndex: $xeTable.getRowIndex(row),
458
- column,
459
- columnIndex: $xeTable.getColumnIndex(column),
460
- field: column.field,
461
- $table: $xeTable,
462
- $grid: $xeGrid,
463
- $gantt: $xeGantt
464
- };
465
- let customValid;
466
- if (XEUtils.isString(validator)) {
467
- const gvItem = validators.get(validator);
468
- if (gvItem) {
469
- const tcvMethod = gvItem.tableCellValidatorMethod || gvItem.cellValidatorMethod;
470
- if (tcvMethod) {
471
- customValid = tcvMethod(validParams);
472
- }
473
- else {
474
- errLog('vxe.error.notValidators', [validator]);
475
- }
476
- }
477
- else {
478
- errLog('vxe.error.notValidators', [validator]);
479
- }
480
- }
481
- else {
482
- customValid = validator(validParams);
483
- }
484
- if (customValid) {
485
- if (XEUtils.isError(customValid)) {
486
- internalData.validRuleErr = true;
487
- errorRules.push(new Rule({ type: 'custom', trigger, content: customValid.message, rule: new Rule(rule) }));
488
- }
489
- else if (customValid.catch) {
490
- // 如果为异步校验(注:异步校验是并发无序的)
491
- syncValidList.push(customValid.catch((e) => {
492
- internalData.validRuleErr = true;
493
- errorRules.push(new Rule({ type: 'custom', trigger, content: e && e.message ? e.message : (rule.content || rule.message), rule: new Rule(rule) }));
494
- }));
495
- }
496
- }
497
- }
498
- else {
499
- if (!checkRuleStatus(rule, row, cellValue)) {
500
- internalData.validRuleErr = true;
501
- errorRules.push(new Rule(rule));
502
- }
503
- }
504
- }
505
- });
506
- }
507
- }
508
- return Promise.all(syncValidList).then(() => {
509
- if (errorRules.length) {
510
- const rest = { rules: errorRules, rule: errorRules[0] };
511
- return Promise.reject(rest);
512
- }
513
- });
514
- },
515
- hasCellRules(type, row, column) {
516
- const { editRules } = props;
517
- const { field } = column;
518
- if (field && editRules) {
519
- const rules = column.rules ? column.rules : XEUtils.get(editRules, field);
520
- return rules && !!XEUtils.find(rules, rule => type === 'all' || !rule.trigger || type === rule.trigger);
521
- }
522
- return false;
523
- },
524
- /**
525
- * 触发校验
526
- */
527
- triggerValidate(type) {
528
- const { editConfig, editRules } = props;
529
- const { editStore } = reactData;
530
- const { actived } = editStore;
531
- const editOpts = computeEditOpts.value;
532
- const validOpts = computeValidOpts.value;
533
- // 检查清除校验消息
534
- if (editRules && validOpts.msgMode === 'single') {
535
- reactData.validErrorMaps = {};
536
- }
537
- // 校验单元格
538
- if (editConfig && editRules && actived.row) {
539
- const { row, column, cell } = actived.args;
540
- if ($xeTable.hasCellRules(type, row, column)) {
541
- return $xeTable.validCellRules(type, row, column).then(() => {
542
- if (editOpts.mode === 'row') {
543
- validatorMethods.clearValidate(row, column);
544
- }
545
- }).catch(({ rule }) => {
546
- // 如果校验不通过与触发方式一致,则聚焦提示错误,否则跳过并不作任何处理
547
- if (!rule.trigger || type === rule.trigger) {
548
- const rest = { rule, row, column, cell };
549
- $xeTable.showValidTooltip(rest);
550
- return Promise.reject(rest);
551
- }
552
- return Promise.resolve();
553
- });
325
+ });
326
+ });
327
+ } else {
328
+ reactData.validErrorMaps = {};
329
+ }
330
+ return nextTick().then(() => {
331
+ if (cb) {
332
+ cb();
333
+ }
334
+ });
335
+ };
336
+ validatorMethods = {
337
+ /**
338
+ * 完整校验行,和 validate 的区别就是会给有效数据中的每一行进行校验
339
+ */
340
+ fullValidate(rows, cb) {
341
+ if (XEUtils.isFunction(cb)) {
342
+ warnLog("vxe.error.notValidators", ["fullValidate(rows, callback)", "fullValidate(rows)"]);
343
+ }
344
+ return beginValidate(rows, null, cb, true);
345
+ },
346
+ /**
347
+ * 快速校验行,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外)
348
+ */
349
+ validate(rows, cb) {
350
+ return beginValidate(rows, null, cb);
351
+ },
352
+ /**
353
+ * 完整校验单元格,和 validateField 的区别就是会给有效数据中的每一行进行校验
354
+ */
355
+ fullValidateField(rows, fieldOrColumn) {
356
+ const colList = (XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map((column) => handleFieldOrColumn($xeTable, column));
357
+ if (colList.length) {
358
+ return beginValidate(rows, colList, null, true);
359
+ }
360
+ return nextTick();
361
+ },
362
+ /**
363
+ * 快速校验单元格,如果存在记录不通过的记录,则返回不再继续校验(异步校验除外)
364
+ */
365
+ validateField(rows, fieldOrColumn) {
366
+ const colList = (XEUtils.isArray(fieldOrColumn) ? fieldOrColumn : fieldOrColumn ? [fieldOrColumn] : []).map((column) => handleFieldOrColumn($xeTable, column));
367
+ if (colList.length) {
368
+ return beginValidate(rows, colList, null);
369
+ }
370
+ return nextTick();
371
+ },
372
+ clearValidate(rows, fieldOrColumn) {
373
+ const validTip = refValidTooltip.value;
374
+ if (validTip && validTip.reactData.visible) {
375
+ validTip.close();
376
+ }
377
+ reactData.validErrorMaps = handleClearValid(rows, fieldOrColumn);
378
+ return nextTick();
379
+ }
380
+ };
381
+ validatorPrivateMethods = {
382
+ /**
383
+ * 校验数据
384
+ * 按表格行、列顺序依次校验(同步或异步)
385
+ * 校验规则根据索引顺序依次校验,如果是异步则会等待校验完成才会继续校验下一列
386
+ * 如果校验失败则,触发回调或者Promise<不通过列的错误消息>
387
+ * 如果是传回调方式这返回一个校验不通过列的错误消息
388
+ *
389
+ * rule 配置:
390
+ * required=Boolean 是否必填
391
+ * min=Number 最小长度
392
+ * max=Number 最大长度
393
+ * validator=Function({ cellValue, rule, rules, row, column, rowIndex, columnIndex }) 自定义校验,接收一个 Promise
394
+ * trigger=blur|change 触发方式(除非特殊场景,否则默认为空就行)
395
+ */
396
+ validCellRules(validType, row, column, val) {
397
+ const $xeGrid = $xeTable.xeGrid;
398
+ const $xeGantt = $xeTable.xeGantt;
399
+ const { editRules } = props;
400
+ const { field } = column;
401
+ const errorRules = [];
402
+ const syncValidList = [];
403
+ if (field && editRules) {
404
+ const rules = column.rules ? column.rules : XEUtils.get(editRules, field);
405
+ if (rules) {
406
+ const cellValue = XEUtils.isUndefined(val) ? XEUtils.get(row, field) : val;
407
+ rules.forEach((rule) => {
408
+ const { trigger, validator } = rule;
409
+ if (validType === "all" || !trigger || validType === trigger) {
410
+ if (validator) {
411
+ const validParams = {
412
+ cellValue,
413
+ rule,
414
+ rules,
415
+ row,
416
+ rowIndex: $xeTable.getRowIndex(row),
417
+ column,
418
+ columnIndex: $xeTable.getColumnIndex(column),
419
+ field: column.field,
420
+ $table: $xeTable,
421
+ $grid: $xeGrid,
422
+ $gantt: $xeGantt
423
+ };
424
+ let customValid;
425
+ if (XEUtils.isString(validator)) {
426
+ const gvItem = validators.get(validator);
427
+ if (gvItem) {
428
+ const tcvMethod = gvItem.tableCellValidatorMethod || gvItem.cellValidatorMethod;
429
+ if (tcvMethod) {
430
+ customValid = tcvMethod(validParams);
431
+ } else {
432
+ errLog("vxe.error.notValidators", [validator]);
433
+ }
434
+ } else {
435
+ errLog("vxe.error.notValidators", [validator]);
554
436
  }
555
- }
556
- return Promise.resolve();
557
- },
558
- /**
559
- * 弹出校验错误提示
560
- */
561
- showValidTooltip(params) {
562
- const { height } = props;
563
- const { tableData, validStore, validErrorMaps } = reactData;
564
- const { rule, row, column, cell } = params;
565
- const validOpts = computeValidOpts.value;
566
- const validTip = refValidTooltip.value;
567
- const content = rule.content;
568
- validStore.visible = true;
569
- if (validOpts.msgMode === 'single') {
570
- reactData.validErrorMaps = {
571
- [`${getRowid($xeTable, row)}:${column.id}`]: {
572
- column,
573
- row,
574
- rule,
575
- content
576
- }
577
- };
578
- }
579
- else {
580
- reactData.validErrorMaps = Object.assign({}, validErrorMaps, {
581
- [`${getRowid($xeTable, row)}:${column.id}`]: {
582
- column,
583
- row,
584
- rule,
585
- content
586
- }
587
- });
588
- }
589
- $xeTable.dispatchEvent('valid-error', params, null);
590
- if (validTip) {
591
- if (validTip && (validOpts.message === 'tooltip' || (validOpts.message === 'default' && !height && tableData.length < 2))) {
592
- return validTip.open(cell, content);
437
+ } else {
438
+ customValid = validator(validParams);
439
+ }
440
+ if (customValid) {
441
+ if (XEUtils.isError(customValid)) {
442
+ internalData.validRuleErr = true;
443
+ errorRules.push(new Rule({ type: "custom", trigger, content: customValid.message, rule: new Rule(rule) }));
444
+ } else if (customValid.catch) {
445
+ syncValidList.push(
446
+ customValid.catch((e) => {
447
+ internalData.validRuleErr = true;
448
+ errorRules.push(new Rule({ type: "custom", trigger, content: e && e.message ? e.message : rule.content || rule.message, rule: new Rule(rule) }));
449
+ })
450
+ );
593
451
  }
452
+ }
453
+ } else {
454
+ if (!checkRuleStatus(rule, row, cellValue)) {
455
+ internalData.validRuleErr = true;
456
+ errorRules.push(new Rule(rule));
457
+ }
594
458
  }
595
- return nextTick();
459
+ }
460
+ });
461
+ }
462
+ }
463
+ return Promise.all(syncValidList).then(() => {
464
+ if (errorRules.length) {
465
+ const rest = { rules: errorRules, rule: errorRules[0] };
466
+ return Promise.reject(rest);
467
+ }
468
+ });
469
+ },
470
+ hasCellRules(type, row, column) {
471
+ const { editRules } = props;
472
+ const { field } = column;
473
+ if (field && editRules) {
474
+ const rules = column.rules ? column.rules : XEUtils.get(editRules, field);
475
+ return rules && !!XEUtils.find(rules, (rule) => type === "all" || !rule.trigger || type === rule.trigger);
476
+ }
477
+ return false;
478
+ },
479
+ /**
480
+ * 触发校验
481
+ */
482
+ triggerValidate(type) {
483
+ const { editConfig, editRules } = props;
484
+ const { editStore } = reactData;
485
+ const { actived } = editStore;
486
+ const editOpts = computeEditOpts.value;
487
+ const validOpts = computeValidOpts.value;
488
+ if (editRules && validOpts.msgMode === "single") {
489
+ reactData.validErrorMaps = {};
490
+ }
491
+ if (editConfig && editRules && actived.row) {
492
+ const { row, column, cell } = actived.args;
493
+ if ($xeTable.hasCellRules(type, row, column)) {
494
+ return $xeTable.validCellRules(type, row, column).then(() => {
495
+ if (editOpts.mode === "row") {
496
+ validatorMethods.clearValidate(row, column);
497
+ }
498
+ }).catch(({ rule }) => {
499
+ if (!rule.trigger || type === rule.trigger) {
500
+ const rest = { rule, row, column, cell };
501
+ $xeTable.showValidTooltip(rest);
502
+ return Promise.reject(rest);
503
+ }
504
+ return Promise.resolve();
505
+ });
506
+ }
507
+ }
508
+ return Promise.resolve();
509
+ },
510
+ /**
511
+ * 弹出校验错误提示
512
+ */
513
+ showValidTooltip(params) {
514
+ const { height } = props;
515
+ const { tableData, validStore, validErrorMaps } = reactData;
516
+ const { rule, row, column, cell } = params;
517
+ const validOpts = computeValidOpts.value;
518
+ const validTip = refValidTooltip.value;
519
+ const content = rule.content;
520
+ validStore.visible = true;
521
+ if (validOpts.msgMode === "single") {
522
+ reactData.validErrorMaps = {
523
+ [`${getRowid($xeTable, row)}:${column.id}`]: {
524
+ column,
525
+ row,
526
+ rule,
527
+ content
596
528
  }
597
- };
598
- return Object.assign(Object.assign({}, validatorMethods), validatorPrivateMethods);
599
- },
600
- setupGrid($xeGrid) {
601
- return $xeGrid.extendTableMethods(tableValidatorMethodKeys);
602
- },
603
- setupGantt($xeGantt) {
604
- return $xeGantt.extendTableMethods(tableValidatorMethodKeys);
605
- }
529
+ };
530
+ } else {
531
+ reactData.validErrorMaps = Object.assign({}, validErrorMaps, {
532
+ [`${getRowid($xeTable, row)}:${column.id}`]: {
533
+ column,
534
+ row,
535
+ rule,
536
+ content
537
+ }
538
+ });
539
+ }
540
+ $xeTable.dispatchEvent("valid-error", params, null);
541
+ if (validTip) {
542
+ if (validTip && (validOpts.message === "tooltip" || validOpts.message === "default" && !height && tableData.length < 2)) {
543
+ return validTip.open(cell, content);
544
+ }
545
+ }
546
+ return nextTick();
547
+ }
548
+ };
549
+ return { ...validatorMethods, ...validatorPrivateMethods };
550
+ },
551
+ setupGrid($xeGrid) {
552
+ return $xeGrid.extendTableMethods(tableValidatorMethodKeys);
553
+ },
554
+ setupGantt($xeGantt) {
555
+ return $xeGantt.extendTableMethods(tableValidatorMethodKeys);
556
+ }
606
557
  });