vxe-pc-ui 4.20.34 → 4.20.35

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/dist/all.esm.js +45718 -45038
  2. package/dist/all.esm.min.js +3 -3
  3. package/dist/style.css +307 -1
  4. package/dist/style.mini.css +1 -1
  5. package/es/alert/src/alert.js +117 -114
  6. package/es/anchor/src/anchor-link.js +110 -107
  7. package/es/anchor/src/anchor.js +212 -209
  8. package/es/avatar/src/avatar.js +132 -129
  9. package/es/backtop/src/backtop.js +267 -264
  10. package/es/badge/src/badge.js +102 -99
  11. package/es/breadcrumb/src/breadcrumb-item.js +104 -101
  12. package/es/breadcrumb/src/breadcrumb.js +70 -67
  13. package/es/button/src/button-group.js +88 -85
  14. package/es/calendar/src/calendar.js +1371 -1368
  15. package/es/card/src/card.js +235 -232
  16. package/es/carousel/src/carousel-item.js +78 -75
  17. package/es/carousel/src/carousel.js +392 -389
  18. package/es/cascader/src/cascader.js +1667 -1664
  19. package/es/checkbox/src/button.js +198 -195
  20. package/es/checkbox/src/checkbox.js +181 -178
  21. package/es/checkbox/src/group.js +210 -207
  22. package/es/collapse/src/collapse-pane.js +98 -95
  23. package/es/collapse/src/collapse.js +340 -337
  24. package/es/color-picker/src/color-picker.js +1116 -1113
  25. package/es/components.d.ts +1 -0
  26. package/es/components.js +3 -0
  27. package/es/context-menu/src/context-menu.js +601 -598
  28. package/es/countdown/src/countdown.js +224 -221
  29. package/es/date-panel/src/date-panel.js +1905 -1902
  30. package/es/date-picker/src/date-picker.js +1537 -1534
  31. package/es/date-range-picker/src/date-range-picker.js +1412 -1409
  32. package/es/divider/src/divider.js +80 -77
  33. package/es/drawer/src/drawer.js +778 -775
  34. package/es/empty/src/empty.js +100 -97
  35. package/es/form/src/form-group.js +74 -71
  36. package/es/form/src/form-item.js +76 -73
  37. package/es/form/src/form.js +789 -786
  38. package/es/icon/src/icon.js +59 -56
  39. package/es/icon/style.css +1 -1
  40. package/es/icon/style.mini.css +1 -1
  41. package/es/icon-picker/src/icon-picker.js +719 -716
  42. package/es/image/src/group.js +130 -127
  43. package/es/image/src/image.js +243 -240
  44. package/es/image/src/preview.js +627 -624
  45. package/es/index.esm.js +2 -0
  46. package/es/index.js +2 -0
  47. package/es/input/src/input.js +2700 -2697
  48. package/es/layout-aside/src/layout-aside.js +138 -135
  49. package/es/layout-body/src/layout-body.js +145 -142
  50. package/es/layout-container/src/layout-container.js +71 -68
  51. package/es/layout-footer/src/layout-footer.js +60 -57
  52. package/es/layout-header/src/layout-header.js +58 -55
  53. package/es/link/src/link.js +131 -128
  54. package/es/list/src/list.js +2174 -2171
  55. package/es/loading/src/loading.js +141 -138
  56. package/es/mention/src/mention.js +49 -46
  57. package/es/menu/src/menu.js +799 -796
  58. package/es/modal/src/modal.js +1519 -1527
  59. package/es/notice-bar/src/notice-bar.js +168 -165
  60. package/es/number-input/src/number-input.js +1094 -1091
  61. package/es/pager/src/pager.js +767 -764
  62. package/es/password-input/src/password-input.js +431 -428
  63. package/es/print/src/page-break.js +63 -60
  64. package/es/print/src/print.js +303 -300
  65. package/es/pulldown/src/pulldown.js +403 -400
  66. package/es/radio/src/button.js +214 -211
  67. package/es/radio/src/group.js +195 -192
  68. package/es/radio/src/radio.js +194 -191
  69. package/es/rate/src/rate.js +164 -161
  70. package/es/result/src/result.js +116 -113
  71. package/es/row/src/col.js +133 -130
  72. package/es/row/src/row.js +111 -108
  73. package/es/scrollbar/src/scrollbar.js +518 -515
  74. package/es/segmented/src/segmented.js +240 -237
  75. package/es/select/src/optgroup.js +44 -41
  76. package/es/select/src/option.js +39 -36
  77. package/es/select/src/select.js +1914 -1896
  78. package/es/slider/src/slider.js +419 -416
  79. package/es/space/src/space.js +190 -187
  80. package/es/splitter/src/splitter-panel.js +146 -143
  81. package/es/splitter/src/splitter.js +917 -914
  82. package/es/step-item/index.d.ts +76 -0
  83. package/es/step-item/index.js +17 -0
  84. package/es/steps/index.d.ts +288 -34
  85. package/es/steps/src/step-info.d.ts +6 -0
  86. package/es/steps/src/step-info.js +20 -0
  87. package/es/steps/src/step-item.d.ts +14 -0
  88. package/es/steps/src/step-item.js +39 -0
  89. package/es/steps/src/steps.d.ts +68 -8
  90. package/es/steps/src/steps.js +299 -47
  91. package/es/steps/src/util.d.ts +7 -0
  92. package/es/steps/src/util.js +44 -0
  93. package/es/steps/style.css +297 -0
  94. package/es/steps/style.mini.css +1 -0
  95. package/es/style.css +307 -1
  96. package/es/style.mini.css +1 -1
  97. package/es/switch/src/switch.js +228 -225
  98. package/es/table-select/src/table-select.js +865 -862
  99. package/es/table-transfer/src/table-transfer.js +61 -58
  100. package/es/tabs/src/tab-pane.js +102 -99
  101. package/es/tabs/src/tabs.js +936 -933
  102. package/es/tag/src/tag.js +163 -160
  103. package/es/text/src/text.js +232 -229
  104. package/es/text-ellipsis/src/text-ellipsis.js +252 -249
  105. package/es/textarea/src/textarea.js +434 -431
  106. package/es/timeline/src/timeline.js +74 -36
  107. package/es/timeline/src/util.js +7 -4
  108. package/es/tip/src/tip.js +117 -114
  109. package/es/tooltip/src/tooltip.js +552 -549
  110. package/es/tour/src/tour.js +49 -46
  111. package/es/transfer/src/transfer.js +95 -92
  112. package/es/tree/src/tree.js +3379 -3376
  113. package/es/tree-select/src/tree-select.js +969 -966
  114. package/es/ui/index.js +8 -2
  115. package/es/ui/src/log.js +1 -1
  116. package/es/upload/src/upload.js +1791 -1788
  117. package/es/vxe-icon/style.css +1 -1
  118. package/es/vxe-icon/style.mini.css +1 -1
  119. package/es/vxe-steps/style.css +297 -0
  120. package/es/vxe-steps/style.mini.css +1 -0
  121. package/es/watermark/src/watermark.js +158 -155
  122. package/lib/alert/src/alert.js +117 -114
  123. package/lib/anchor/src/anchor-link.js +110 -107
  124. package/lib/anchor/src/anchor.js +212 -209
  125. package/lib/avatar/src/avatar.js +132 -129
  126. package/lib/backtop/src/backtop.js +267 -264
  127. package/lib/badge/src/badge.js +102 -99
  128. package/lib/breadcrumb/src/breadcrumb-item.js +104 -101
  129. package/lib/breadcrumb/src/breadcrumb.js +70 -67
  130. package/lib/button/src/button-group.js +88 -85
  131. package/lib/calendar/src/calendar.js +1371 -1368
  132. package/lib/card/src/card.js +235 -232
  133. package/lib/carousel/src/carousel-item.js +78 -75
  134. package/lib/carousel/src/carousel.js +392 -389
  135. package/lib/cascader/src/cascader.js +1665 -1662
  136. package/lib/checkbox/src/button.js +198 -195
  137. package/lib/checkbox/src/checkbox.js +181 -178
  138. package/lib/checkbox/src/group.js +210 -207
  139. package/lib/collapse/src/collapse-pane.js +98 -95
  140. package/lib/collapse/src/collapse.js +340 -337
  141. package/lib/color-picker/src/color-picker.js +1116 -1113
  142. package/lib/components.js +3 -0
  143. package/lib/context-menu/src/context-menu.js +601 -598
  144. package/lib/countdown/src/countdown.js +224 -221
  145. package/lib/date-panel/src/date-panel.js +1905 -1902
  146. package/lib/date-picker/src/date-picker.js +1537 -1534
  147. package/lib/date-range-picker/src/date-range-picker.js +1412 -1409
  148. package/lib/divider/src/divider.js +80 -77
  149. package/lib/drawer/src/drawer.js +778 -775
  150. package/lib/empty/src/empty.js +100 -97
  151. package/lib/form/src/form-group.js +74 -71
  152. package/lib/form/src/form-item.js +76 -73
  153. package/lib/form/src/form.js +789 -786
  154. package/lib/icon/src/icon.js +59 -56
  155. package/lib/icon/style/style.css +1 -1
  156. package/lib/icon/style/style.mini.css +1 -1
  157. package/lib/icon-picker/src/icon-picker.js +719 -716
  158. package/lib/image/src/group.js +130 -127
  159. package/lib/image/src/image.js +243 -240
  160. package/lib/image/src/preview.js +627 -624
  161. package/lib/index.common.js +2 -0
  162. package/lib/index.js +2 -0
  163. package/lib/index.umd.js +47411 -46732
  164. package/lib/index.umd.min.js +3 -3
  165. package/lib/input/src/input.js +2700 -2697
  166. package/lib/layout-aside/src/layout-aside.js +138 -135
  167. package/lib/layout-body/src/layout-body.js +145 -142
  168. package/lib/layout-container/src/layout-container.js +71 -68
  169. package/lib/layout-footer/src/layout-footer.js +60 -57
  170. package/lib/layout-header/src/layout-header.js +58 -55
  171. package/lib/link/src/link.js +131 -128
  172. package/lib/list/src/list.js +2173 -2170
  173. package/lib/loading/src/loading.js +141 -138
  174. package/lib/mention/src/mention.js +49 -46
  175. package/lib/menu/src/menu.js +799 -796
  176. package/lib/modal/src/modal.js +1519 -1527
  177. package/lib/notice-bar/src/notice-bar.js +168 -165
  178. package/lib/number-input/src/number-input.js +1094 -1091
  179. package/lib/pager/src/pager.js +767 -764
  180. package/lib/password-input/src/password-input.js +431 -428
  181. package/lib/print/src/page-break.js +63 -60
  182. package/lib/print/src/print.js +303 -300
  183. package/lib/pulldown/src/pulldown.js +403 -400
  184. package/lib/radio/src/button.js +214 -211
  185. package/lib/radio/src/group.js +195 -192
  186. package/lib/radio/src/radio.js +194 -191
  187. package/lib/rate/src/rate.js +164 -161
  188. package/lib/result/src/result.js +116 -113
  189. package/lib/row/src/col.js +133 -130
  190. package/lib/row/src/row.js +111 -108
  191. package/lib/scrollbar/src/scrollbar.js +518 -515
  192. package/lib/segmented/src/segmented.js +240 -237
  193. package/lib/select/src/optgroup.js +44 -41
  194. package/lib/select/src/option.js +39 -36
  195. package/lib/select/src/select.js +1915 -1897
  196. package/lib/slider/src/slider.js +419 -416
  197. package/lib/space/src/space.js +190 -187
  198. package/lib/splitter/src/splitter-panel.js +146 -143
  199. package/lib/splitter/src/splitter.js +917 -914
  200. package/lib/step-item/index.js +47 -0
  201. package/lib/steps/src/step-info.js +49 -0
  202. package/lib/steps/src/step-item.js +59 -0
  203. package/lib/steps/src/steps.js +298 -46
  204. package/lib/steps/src/util.js +74 -0
  205. package/lib/steps/style/style.css +297 -0
  206. package/lib/steps/style/style.mini.css +1 -0
  207. package/lib/style.css +307 -1
  208. package/lib/style.mini.css +1 -1
  209. package/lib/switch/src/switch.js +228 -225
  210. package/lib/table-select/src/table-select.js +865 -862
  211. package/lib/table-transfer/src/table-transfer.js +61 -58
  212. package/lib/tabs/src/tab-pane.js +102 -99
  213. package/lib/tabs/src/tabs.js +936 -933
  214. package/lib/tag/src/tag.js +163 -160
  215. package/lib/text/src/text.js +232 -229
  216. package/lib/text-ellipsis/src/text-ellipsis.js +252 -249
  217. package/lib/textarea/src/textarea.js +434 -431
  218. package/lib/timeline/src/timeline.js +74 -36
  219. package/lib/timeline/src/util.js +7 -4
  220. package/lib/tip/src/tip.js +117 -114
  221. package/lib/tooltip/src/tooltip.js +552 -549
  222. package/lib/tour/src/tour.js +49 -46
  223. package/lib/transfer/src/transfer.js +95 -92
  224. package/lib/tree/src/tree.js +3379 -3376
  225. package/lib/tree-select/src/tree-select.js +969 -966
  226. package/lib/ui/index.js +8 -2
  227. package/lib/ui/src/log.js +1 -1
  228. package/lib/upload/src/upload.js +1788 -1785
  229. package/lib/vxe-icon/style/style.css +1 -1
  230. package/lib/vxe-icon/style/style.mini.css +1 -1
  231. package/lib/vxe-steps/style/style.css +297 -0
  232. package/lib/vxe-steps/style/style.mini.css +1 -0
  233. package/lib/watermark/src/watermark.js +158 -155
  234. package/package.json +1 -1
  235. package/packages/alert/src/alert.ts +2 -2
  236. package/packages/anchor/src/anchor-link.ts +2 -2
  237. package/packages/anchor/src/anchor.ts +2 -2
  238. package/packages/avatar/src/avatar.ts +2 -2
  239. package/packages/backtop/src/backtop.ts +2 -2
  240. package/packages/badge/src/badge.ts +2 -2
  241. package/packages/breadcrumb/src/breadcrumb-item.ts +2 -2
  242. package/packages/breadcrumb/src/breadcrumb.ts +2 -2
  243. package/packages/button/src/button-group.ts +2 -2
  244. package/packages/calendar/src/calendar.ts +2 -2
  245. package/packages/card/src/card.ts +2 -2
  246. package/packages/carousel/src/carousel-item.ts +2 -2
  247. package/packages/carousel/src/carousel.ts +2 -2
  248. package/packages/cascader/src/cascader.ts +2 -2
  249. package/packages/checkbox/src/button.ts +3 -15
  250. package/packages/checkbox/src/checkbox.ts +2 -2
  251. package/packages/checkbox/src/group.ts +2 -2
  252. package/packages/collapse/src/collapse-pane.ts +2 -2
  253. package/packages/collapse/src/collapse.ts +2 -2
  254. package/packages/color-picker/src/color-picker.ts +2 -2
  255. package/packages/components.ts +3 -0
  256. package/packages/context-menu/src/context-menu.ts +3 -16
  257. package/packages/countdown/src/countdown.ts +2 -2
  258. package/packages/date-panel/src/date-panel.ts +2 -2
  259. package/packages/date-picker/src/date-picker.ts +2 -2
  260. package/packages/date-range-picker/src/date-range-picker.ts +2 -2
  261. package/packages/divider/src/divider.ts +2 -2
  262. package/packages/drawer/src/drawer.ts +2 -2
  263. package/packages/empty/src/empty.ts +2 -2
  264. package/packages/form/src/form-group.ts +2 -2
  265. package/packages/form/src/form-item.ts +2 -2
  266. package/packages/form/src/form.ts +2 -2
  267. package/packages/icon/src/icon.ts +2 -2
  268. package/packages/icon-picker/src/icon-picker.ts +2 -2
  269. package/packages/image/src/group.ts +2 -2
  270. package/packages/image/src/image.ts +2 -2
  271. package/packages/image/src/preview.ts +3 -16
  272. package/packages/index.ts +2 -2
  273. package/packages/input/src/input.ts +2 -2
  274. package/packages/layout-aside/src/layout-aside.ts +2 -2
  275. package/packages/layout-body/src/layout-body.ts +2 -2
  276. package/packages/layout-container/src/layout-container.ts +3 -14
  277. package/packages/layout-footer/src/layout-footer.ts +2 -2
  278. package/packages/layout-header/src/layout-header.ts +2 -2
  279. package/packages/link/src/link.ts +2 -2
  280. package/packages/list/src/list.ts +2 -2
  281. package/packages/loading/src/loading.ts +2 -2
  282. package/packages/mention/src/mention.ts +2 -2
  283. package/packages/menu/src/menu.ts +2 -2
  284. package/packages/modal/src/modal.ts +5 -20
  285. package/packages/notice-bar/src/notice-bar.ts +2 -2
  286. package/packages/number-input/src/number-input.ts +3 -17
  287. package/packages/pager/src/pager.ts +2 -2
  288. package/packages/password-input/src/password-input.ts +2 -2
  289. package/packages/print/src/page-break.ts +2 -2
  290. package/packages/print/src/print.ts +2 -2
  291. package/packages/pulldown/src/pulldown.ts +2 -2
  292. package/packages/radio/src/button.ts +3 -16
  293. package/packages/radio/src/group.ts +3 -17
  294. package/packages/radio/src/radio.ts +2 -2
  295. package/packages/rate/src/rate.ts +2 -2
  296. package/packages/result/src/result.ts +2 -2
  297. package/packages/row/src/col.ts +2 -2
  298. package/packages/row/src/row.ts +2 -2
  299. package/packages/scrollbar/src/scrollbar.ts +3 -4
  300. package/packages/segmented/src/segmented.ts +2 -2
  301. package/packages/select/src/optgroup.ts +2 -2
  302. package/packages/select/src/option.ts +2 -2
  303. package/packages/select/src/select.ts +33 -19
  304. package/packages/slider/src/slider.ts +2 -2
  305. package/packages/space/src/space.ts +2 -2
  306. package/packages/splitter/src/splitter-panel.ts +2 -2
  307. package/packages/splitter/src/splitter.ts +2 -2
  308. package/packages/step-item/index.ts +16 -0
  309. package/packages/steps/src/step-info.ts +18 -0
  310. package/packages/steps/src/step-item.ts +41 -0
  311. package/packages/steps/src/steps.ts +273 -13
  312. package/packages/steps/src/util.ts +44 -0
  313. package/packages/switch/src/switch.ts +2 -2
  314. package/packages/table-select/src/table-select.ts +2 -2
  315. package/packages/table-transfer/src/table-transfer.ts +3 -15
  316. package/packages/tabs/src/tab-pane.ts +2 -2
  317. package/packages/tabs/src/tabs.ts +2 -2
  318. package/packages/tag/src/tag.ts +2 -2
  319. package/packages/text/src/text.ts +2 -2
  320. package/packages/text-ellipsis/src/text-ellipsis.ts +2 -2
  321. package/packages/textarea/src/textarea.ts +2 -2
  322. package/packages/timeline/src/timeline-info.ts +17 -17
  323. package/packages/timeline/src/timeline.ts +93 -49
  324. package/packages/timeline/src/util.ts +44 -41
  325. package/packages/tip/src/tip.ts +2 -2
  326. package/packages/tooltip/src/tooltip.ts +2 -2
  327. package/packages/tour/src/tour.ts +2 -2
  328. package/packages/transfer/src/transfer.ts +2 -2
  329. package/packages/tree/src/tree.ts +2 -2
  330. package/packages/tree-select/src/tree-select.ts +2 -2
  331. package/packages/ui/index.ts +8 -1
  332. package/packages/upload/src/upload.ts +2 -2
  333. package/packages/watermark/src/watermark.ts +2 -2
  334. package/styles/all.scss +1 -0
  335. package/styles/components/step-item.scss +0 -0
  336. package/styles/components/steps.scss +354 -0
  337. package/styles/theme/base.scss +9 -0
  338. package/types/all.d.ts +3 -0
  339. package/types/components/gantt.d.ts +1 -3
  340. package/types/components/select.d.ts +1 -13
  341. package/types/components/step-item.d.ts +72 -0
  342. package/types/components/steps.d.ts +67 -8
  343. package/types/components/table.d.ts +7 -66
  344. package/types/handles/form-design.d.ts +1 -4
  345. package/types/ui/global-config.d.ts +2 -0
  346. package/types/ui/global-icon.d.ts +7 -0
  347. /package/dist/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  348. /package/dist/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  349. /package/dist/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  350. /package/es/icon/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  351. /package/es/icon/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  352. /package/es/icon/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  353. /package/es/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  354. /package/es/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  355. /package/es/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  356. /package/es/vxe-icon/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  357. /package/es/vxe-icon/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  358. /package/es/vxe-icon/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  359. /package/lib/icon/style/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  360. /package/lib/icon/style/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  361. /package/lib/icon/style/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  362. /package/lib/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  363. /package/lib/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  364. /package/lib/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
  365. /package/lib/vxe-icon/style/{iconfont.1793330162657.ttf → iconfont.1793359478136.ttf} +0 -0
  366. /package/lib/vxe-icon/style/{iconfont.1793330162657.woff → iconfont.1793359478136.woff} +0 -0
  367. /package/lib/vxe-icon/style/{iconfont.1793330162657.woff2 → iconfont.1793359478136.woff2} +0 -0
@@ -55,422 +55,382 @@ function createInternalData() {
55
55
  // isUpdateMode: false
56
56
  };
57
57
  }
58
- var cascader_default = defineVxeComponent({
59
- name: "VxeCascader",
60
- props: {
61
- modelValue: [String, Number, Array],
62
- clearable: Boolean,
63
- placeholder: {
64
- type: String,
65
- default: () => XEUtils.eqNull(getConfig().cascader.placeholder) ? getI18n("vxe.base.pleaseSelect") : getConfig().cascader.placeholder
66
- },
67
- readonly: {
68
- type: Boolean,
69
- default: null
70
- },
71
- loading: Boolean,
72
- disabled: {
73
- type: Boolean,
74
- default: null
75
- },
76
- filterable: Boolean,
77
- filterConfig: Object,
78
- showFullLabel: {
79
- type: Boolean,
80
- default: () => getConfig().cascader.showFullLabel
81
- },
82
- separator: {
83
- type: String,
84
- default: () => getConfig().cascader.separator
85
- },
86
- multiple: Boolean,
87
- className: [String, Function],
88
- prefixIcon: String,
89
- lazyOptions: Array,
90
- options: Array,
91
- optionProps: Object,
92
- size: {
93
- type: String,
94
- default: () => getConfig().cascader.size || getConfig().size
95
- },
96
- treeConfig: Object,
97
- showRadio: {
98
- type: Boolean,
99
- default: () => getConfig().cascader.showRadio
100
- },
101
- radioConfig: Object,
102
- showCheckbox: {
103
- type: Boolean,
104
- default: () => getConfig().cascader.showCheckbox
105
- },
106
- checkboxConfig: Object,
107
- remote: Boolean,
108
- remoteConfig: Function,
109
- popupConfig: Object,
110
- checkedClosable: {
111
- type: Boolean,
112
- default: () => getConfig().cascader.checkedClosable
113
- },
114
- clearClosable: {
115
- type: Boolean,
116
- default: () => getConfig().cascader.clearClosable
117
- },
118
- showCloseButton: {
119
- type: Boolean,
120
- default: () => getConfig().cascader.showCloseButton
121
- },
122
- showTotalButton: {
123
- type: Boolean,
124
- default: () => getConfig().cascader.showTotalButton
125
- },
126
- showCheckedButton: {
127
- type: Boolean,
128
- default: () => getConfig().cascader.showCheckedButton
58
+ var cascader_default = (
59
+ /* define-vxe-component start */
60
+ defineVxeComponent({
61
+ name: "VxeCascader",
62
+ props: {
63
+ modelValue: [String, Number, Array],
64
+ clearable: Boolean,
65
+ placeholder: {
66
+ type: String,
67
+ default: () => XEUtils.eqNull(getConfig().cascader.placeholder) ? getI18n("vxe.base.pleaseSelect") : getConfig().cascader.placeholder
68
+ },
69
+ readonly: {
70
+ type: Boolean,
71
+ default: null
72
+ },
73
+ loading: Boolean,
74
+ disabled: {
75
+ type: Boolean,
76
+ default: null
77
+ },
78
+ filterable: Boolean,
79
+ filterConfig: Object,
80
+ showFullLabel: {
81
+ type: Boolean,
82
+ default: () => getConfig().cascader.showFullLabel
83
+ },
84
+ separator: {
85
+ type: String,
86
+ default: () => getConfig().cascader.separator
87
+ },
88
+ multiple: Boolean,
89
+ className: [String, Function],
90
+ prefixIcon: String,
91
+ lazyOptions: Array,
92
+ options: Array,
93
+ optionProps: Object,
94
+ size: {
95
+ type: String,
96
+ default: () => getConfig().cascader.size || getConfig().size
97
+ },
98
+ treeConfig: Object,
99
+ showRadio: {
100
+ type: Boolean,
101
+ default: () => getConfig().cascader.showRadio
102
+ },
103
+ radioConfig: Object,
104
+ showCheckbox: {
105
+ type: Boolean,
106
+ default: () => getConfig().cascader.showCheckbox
107
+ },
108
+ checkboxConfig: Object,
109
+ remote: Boolean,
110
+ remoteConfig: Function,
111
+ popupConfig: Object,
112
+ checkedClosable: {
113
+ type: Boolean,
114
+ default: () => getConfig().cascader.checkedClosable
115
+ },
116
+ clearClosable: {
117
+ type: Boolean,
118
+ default: () => getConfig().cascader.clearClosable
119
+ },
120
+ showCloseButton: {
121
+ type: Boolean,
122
+ default: () => getConfig().cascader.showCloseButton
123
+ },
124
+ showTotalButton: {
125
+ type: Boolean,
126
+ default: () => getConfig().cascader.showTotalButton
127
+ },
128
+ showCheckedButton: {
129
+ type: Boolean,
130
+ default: () => getConfig().cascader.showCheckedButton
131
+ },
132
+ showClearButton: {
133
+ type: Boolean,
134
+ default: () => getConfig().cascader.showClearButton
135
+ }
129
136
  },
130
- showClearButton: {
131
- type: Boolean,
132
- default: () => getConfig().cascader.showClearButton
133
- }
134
- },
135
- emits: ["update:modelValue", "change", "all-change", "clear", "blur", "focus", "click", "node-click", "node-expand", "current-change", "radio-change", "checkbox-change", "load-success", "load-error", "visible-change"],
136
- setup(props, context) {
137
- const { emit, slots } = context;
138
- const $xeModal = inject("$xeModal", null);
139
- const $xeDrawer = inject("$xeDrawer", null);
140
- const $xeTable = inject("$xeTable", null);
141
- const $xeForm = inject("$xeForm", null);
142
- const formItemInfo = inject("xeFormItemInfo", null);
143
- const xID = XEUtils.uniqueId();
144
- const { computeSize } = useFns.useSize(props);
145
- const refElem = ref();
146
- const refInput = ref();
147
- const refInpSearch = ref();
148
- const refChunkWrapper = ref();
149
- const refOptionPanel = ref();
150
- const reactData = reactive(createReactData());
151
- const internalData = createInternalData();
152
- const refMaps = {
153
- refElem
154
- };
155
- const computeFormReadonly = computed(() => {
156
- const { readonly } = props;
157
- if (readonly === null) {
158
- if ($xeForm) {
159
- return $xeForm.props.readonly;
137
+ emits: ["update:modelValue", "change", "all-change", "clear", "blur", "focus", "click", "node-click", "node-expand", "current-change", "radio-change", "checkbox-change", "load-success", "load-error", "visible-change"],
138
+ setup(props, context) {
139
+ const { emit, slots } = context;
140
+ const $xeModal = inject("$xeModal", null);
141
+ const $xeDrawer = inject("$xeDrawer", null);
142
+ const $xeTable = inject("$xeTable", null);
143
+ const $xeForm = inject("$xeForm", null);
144
+ const formItemInfo = inject("xeFormItemInfo", null);
145
+ const xID = XEUtils.uniqueId();
146
+ const { computeSize } = useFns.useSize(props);
147
+ const refElem = ref();
148
+ const refInput = ref();
149
+ const refInpSearch = ref();
150
+ const refChunkWrapper = ref();
151
+ const refOptionPanel = ref();
152
+ const reactData = reactive(createReactData());
153
+ const internalData = createInternalData();
154
+ const refMaps = {
155
+ refElem
156
+ };
157
+ const computeFormReadonly = computed(() => {
158
+ const { readonly } = props;
159
+ if (readonly === null) {
160
+ if ($xeForm) {
161
+ return $xeForm.props.readonly;
162
+ }
163
+ return false;
160
164
  }
161
- return false;
162
- }
163
- return readonly;
164
- });
165
- const computeIsDisabled = computed(() => {
166
- const { disabled } = props;
167
- if (disabled === null) {
168
- if ($xeForm) {
169
- return $xeForm.props.disabled;
165
+ return readonly;
166
+ });
167
+ const computeIsDisabled = computed(() => {
168
+ const { disabled } = props;
169
+ if (disabled === null) {
170
+ if ($xeForm) {
171
+ return $xeForm.props.disabled;
172
+ }
173
+ return false;
170
174
  }
171
- return false;
172
- }
173
- return disabled;
174
- });
175
- const computeBtnTransfer = computed(() => {
176
- const popupOpts = computePopupOpts.value;
177
- const { transfer } = popupOpts;
178
- if (XEUtils.isBoolean(transfer)) {
179
- return transfer;
180
- }
181
- if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
182
- return true;
183
- }
184
- return false;
185
- });
186
- const computeTreeOpts = computed(() => {
187
- return Object.assign({}, getConfig().cascader.treeConfig, props.treeConfig);
188
- });
189
- const computeRadioOpts = computed(() => {
190
- return Object.assign({}, getConfig().cascader.radioConfig, props.radioConfig);
191
- });
192
- const computeCheckboxOpts = computed(() => {
193
- return Object.assign({}, getConfig().cascader.checkboxConfig, props.checkboxConfig);
194
- });
195
- const computePopupOpts = computed(() => {
196
- return Object.assign({}, getConfig().cascader.popupConfig, props.popupConfig);
197
- });
198
- const computePropsOpts = computed(() => {
199
- return props.optionProps || {};
200
- });
201
- const computeLabelField = computed(() => {
202
- const propsOpts = computePropsOpts.value;
203
- return propsOpts.label || "label";
204
- });
205
- const computeValueField = computed(() => {
206
- const propsOpts = computePropsOpts.value;
207
- return propsOpts.value || "value";
208
- });
209
- const computeKeyField = computed(() => {
210
- const treeOpts = computeTreeOpts.value;
211
- return treeOpts.keyField || "id";
212
- });
213
- const computeParentField = computed(() => {
214
- const treeOpts = computeTreeOpts.value;
215
- return treeOpts.parentField || "parentId";
216
- });
217
- const computeChildrenField = computed(() => {
218
- const treeOpts = computeTreeOpts.value;
219
- return treeOpts.childrenField || "children";
220
- });
221
- const computeMapChildrenField = computed(() => {
222
- const treeOpts = computeTreeOpts.value;
223
- return treeOpts.mapChildrenField || "mapChildren";
224
- });
225
- const computeHasChildField = computed(() => {
226
- const treeOpts = computeTreeOpts.value;
227
- return treeOpts.hasChildField || "hasChild";
228
- });
229
- const computeRemoteOpts = computed(() => {
230
- return Object.assign({}, getConfig().cascader.remoteConfig, props.remoteConfig);
231
- });
232
- const computeSelectVals = computed(() => {
233
- const { modelValue } = props;
234
- return XEUtils.eqNull(modelValue) ? [] : XEUtils.isArray(modelValue) ? modelValue : [modelValue];
235
- });
236
- const computeSelectLabel = computed(() => {
237
- const { showFullLabel } = props;
238
- const { fullOptFlag, lazyOptFlag } = reactData;
239
- const { fullNodeMaps, lazyNodeMaps } = internalData;
240
- const labelField = computeLabelField.value;
241
- const selectVals = computeSelectVals.value;
242
- return selectVals.map((val) => {
243
- const cacheItem = fullNodeMaps[val];
244
- if (fullOptFlag && cacheItem) {
245
- return showFullLabel ? cacheItem.fullLabel : cacheItem.item[labelField];
175
+ return disabled;
176
+ });
177
+ const computeBtnTransfer = computed(() => {
178
+ const popupOpts = computePopupOpts.value;
179
+ const { transfer } = popupOpts;
180
+ if (XEUtils.isBoolean(transfer)) {
181
+ return transfer;
246
182
  }
247
- if (lazyOptFlag) {
248
- const lazyCacheItem = lazyNodeMaps[val];
249
- if (lazyCacheItem) {
250
- return showFullLabel ? lazyCacheItem.fullLabel : lazyCacheItem.item[labelField];
183
+ if ($xeTable || $xeModal || $xeDrawer || $xeForm) {
184
+ return true;
185
+ }
186
+ return false;
187
+ });
188
+ const computeTreeOpts = computed(() => {
189
+ return Object.assign({}, getConfig().cascader.treeConfig, props.treeConfig);
190
+ });
191
+ const computeRadioOpts = computed(() => {
192
+ return Object.assign({}, getConfig().cascader.radioConfig, props.radioConfig);
193
+ });
194
+ const computeCheckboxOpts = computed(() => {
195
+ return Object.assign({}, getConfig().cascader.checkboxConfig, props.checkboxConfig);
196
+ });
197
+ const computePopupOpts = computed(() => {
198
+ return Object.assign({}, getConfig().cascader.popupConfig, props.popupConfig);
199
+ });
200
+ const computePropsOpts = computed(() => {
201
+ return props.optionProps || {};
202
+ });
203
+ const computeLabelField = computed(() => {
204
+ const propsOpts = computePropsOpts.value;
205
+ return propsOpts.label || "label";
206
+ });
207
+ const computeValueField = computed(() => {
208
+ const propsOpts = computePropsOpts.value;
209
+ return propsOpts.value || "value";
210
+ });
211
+ const computeKeyField = computed(() => {
212
+ const treeOpts = computeTreeOpts.value;
213
+ return treeOpts.keyField || "id";
214
+ });
215
+ const computeParentField = computed(() => {
216
+ const treeOpts = computeTreeOpts.value;
217
+ return treeOpts.parentField || "parentId";
218
+ });
219
+ const computeChildrenField = computed(() => {
220
+ const treeOpts = computeTreeOpts.value;
221
+ return treeOpts.childrenField || "children";
222
+ });
223
+ const computeMapChildrenField = computed(() => {
224
+ const treeOpts = computeTreeOpts.value;
225
+ return treeOpts.mapChildrenField || "mapChildren";
226
+ });
227
+ const computeHasChildField = computed(() => {
228
+ const treeOpts = computeTreeOpts.value;
229
+ return treeOpts.hasChildField || "hasChild";
230
+ });
231
+ const computeRemoteOpts = computed(() => {
232
+ return Object.assign({}, getConfig().cascader.remoteConfig, props.remoteConfig);
233
+ });
234
+ const computeSelectVals = computed(() => {
235
+ const { modelValue } = props;
236
+ return XEUtils.eqNull(modelValue) ? [] : XEUtils.isArray(modelValue) ? modelValue : [modelValue];
237
+ });
238
+ const computeSelectLabel = computed(() => {
239
+ const { showFullLabel } = props;
240
+ const { fullOptFlag, lazyOptFlag } = reactData;
241
+ const { fullNodeMaps, lazyNodeMaps } = internalData;
242
+ const labelField = computeLabelField.value;
243
+ const selectVals = computeSelectVals.value;
244
+ return selectVals.map((val) => {
245
+ const cacheItem = fullNodeMaps[val];
246
+ if (fullOptFlag && cacheItem) {
247
+ return showFullLabel ? cacheItem.fullLabel : cacheItem.item[labelField];
251
248
  }
249
+ if (lazyOptFlag) {
250
+ const lazyCacheItem = lazyNodeMaps[val];
251
+ if (lazyCacheItem) {
252
+ return showFullLabel ? lazyCacheItem.fullLabel : lazyCacheItem.item[labelField];
253
+ }
254
+ }
255
+ return val;
256
+ }).join(", ");
257
+ });
258
+ const computePopupWrapperStyle = computed(() => {
259
+ const { currentCunkList, panelStyle } = reactData;
260
+ const popupOpts = computePopupOpts.value;
261
+ const { height, nodeWidth, nodeHeight } = popupOpts;
262
+ const stys = {
263
+ ...panelStyle,
264
+ "--vxe-ui-cascader-chunk-size": currentCunkList.length
265
+ };
266
+ if (height) {
267
+ stys["--vxe-ui-cascader-chunk-height"] = toCssUnit(height);
252
268
  }
253
- return val;
254
- }).join(", ");
255
- });
256
- const computePopupWrapperStyle = computed(() => {
257
- const { currentCunkList, panelStyle } = reactData;
258
- const popupOpts = computePopupOpts.value;
259
- const { height, nodeWidth, nodeHeight } = popupOpts;
260
- const stys = {
261
- ...panelStyle,
262
- "--vxe-ui-cascader-chunk-size": currentCunkList.length
269
+ if (nodeWidth) {
270
+ stys["--vxe-ui-cascader-node-width"] = toCssUnit(nodeWidth);
271
+ }
272
+ if (nodeHeight) {
273
+ stys["--vxe-ui-cascader-node-height"] = toCssUnit(nodeHeight);
274
+ }
275
+ return stys;
276
+ });
277
+ const computeFilterOpts = computed(() => {
278
+ return Object.assign({}, getConfig().cascader.filterConfig, props.filterConfig);
279
+ });
280
+ const computeMaps = {};
281
+ const $xeCascader = {
282
+ xID,
283
+ props,
284
+ context,
285
+ reactData,
286
+ internalData,
287
+ getRefMaps: () => refMaps,
288
+ getComputeMaps: () => computeMaps
263
289
  };
264
- if (height) {
265
- stys["--vxe-ui-cascader-chunk-height"] = toCssUnit(height);
266
- }
267
- if (nodeWidth) {
268
- stys["--vxe-ui-cascader-node-width"] = toCssUnit(nodeWidth);
269
- }
270
- if (nodeHeight) {
271
- stys["--vxe-ui-cascader-node-height"] = toCssUnit(nodeHeight);
272
- }
273
- return stys;
274
- });
275
- const computeFilterOpts = computed(() => {
276
- return Object.assign({}, getConfig().cascader.filterConfig, props.filterConfig);
277
- });
278
- const computeMaps = {};
279
- const $xeCascader = {
280
- xID,
281
- props,
282
- context,
283
- reactData,
284
- internalData,
285
- getRefMaps: () => refMaps,
286
- getComputeMaps: () => computeMaps
287
- };
288
- const dispatchEvent = (type, params, evnt) => {
289
- emit(type, createEvent(evnt, { $cascader: $xeCascader }, params));
290
- };
291
- const emitModel = (value) => {
292
- emit("update:modelValue", value);
293
- };
294
- const cascaderMethods = {
295
- dispatchEvent
296
- };
297
- const getNodeId = (node) => {
298
- if (!node) {
299
- return "";
300
- }
301
- const valueField = computeValueField.value;
302
- const nodeKey = node[valueField];
303
- return enNodeValue(nodeKey);
304
- };
305
- const isPathInTree = (treeData, pathIds) => {
306
- if (!pathIds || !pathIds.length) {
307
- return false;
308
- }
309
- let currentNodes = treeData;
310
- for (const nodeid of pathIds) {
311
- const found = currentNodes.find((node) => getNodeId(node) === nodeid);
312
- if (!found) {
290
+ const dispatchEvent = (type, params, evnt) => {
291
+ emit(type, createEvent(evnt, { $cascader: $xeCascader }, params));
292
+ };
293
+ const emitModel = (value) => {
294
+ emit("update:modelValue", value);
295
+ };
296
+ const cascaderMethods = {
297
+ dispatchEvent
298
+ };
299
+ const getNodeId = (node) => {
300
+ if (!node) {
301
+ return "";
302
+ }
303
+ const valueField = computeValueField.value;
304
+ const nodeKey = node[valueField];
305
+ return enNodeValue(nodeKey);
306
+ };
307
+ const isPathInTree = (treeData, pathIds) => {
308
+ if (!pathIds || !pathIds.length) {
313
309
  return false;
314
310
  }
315
- currentNodes = found.children || [];
316
- }
317
- return true;
318
- };
319
- const isCheckedByCheckboxNodeId = (nodeid) => {
320
- const { updateCheckboxFlag } = reactData;
321
- const { selectCheckboxMaps } = internalData;
322
- return !!(updateCheckboxFlag && selectCheckboxMaps[nodeid]);
323
- };
324
- const handleCheckedCheckboxNode = (nodeList, checked) => {
325
- const { selectCheckboxMaps } = internalData;
326
- const mapChildrenField = computeMapChildrenField.value;
327
- const childrenField = computeChildrenField.value;
328
- const checkboxOpts = computeCheckboxOpts.value;
329
- const { checkStrictly } = checkboxOpts;
330
- const treeOpts = computeTreeOpts.value;
331
- const { transform } = treeOpts;
332
- const handleSelect = (node) => {
333
- const nodeid = getNodeId(node);
334
- if (checked) {
335
- if (!selectCheckboxMaps[nodeid]) {
336
- selectCheckboxMaps[nodeid] = node;
337
- }
338
- } else {
339
- if (selectCheckboxMaps[nodeid]) {
340
- delete selectCheckboxMaps[nodeid];
311
+ let currentNodes = treeData;
312
+ for (const nodeid of pathIds) {
313
+ const found = currentNodes.find((node) => getNodeId(node) === nodeid);
314
+ if (!found) {
315
+ return false;
341
316
  }
317
+ currentNodes = found.children || [];
342
318
  }
319
+ return true;
343
320
  };
344
- if (checkStrictly) {
345
- nodeList.forEach(handleSelect);
346
- } else {
347
- XEUtils.eachTree(nodeList, handleSelect, { children: transform ? mapChildrenField : childrenField });
348
- }
349
- reactData.updateCheckboxFlag++;
350
- updateCheckboxStatus();
351
- };
352
- const createNode = (records) => {
353
- const valueField = computeValueField.value;
354
- return Promise.resolve(
355
- records.map((obj) => {
356
- const item = { ...obj };
357
- let nodeid = getNodeId(item);
358
- if (!nodeid) {
359
- nodeid = getNodeUniqueId();
360
- XEUtils.set(item, valueField, nodeid);
321
+ const isCheckedByCheckboxNodeId = (nodeid) => {
322
+ const { updateCheckboxFlag } = reactData;
323
+ const { selectCheckboxMaps } = internalData;
324
+ return !!(updateCheckboxFlag && selectCheckboxMaps[nodeid]);
325
+ };
326
+ const handleCheckedCheckboxNode = (nodeList, checked) => {
327
+ const { selectCheckboxMaps } = internalData;
328
+ const mapChildrenField = computeMapChildrenField.value;
329
+ const childrenField = computeChildrenField.value;
330
+ const checkboxOpts = computeCheckboxOpts.value;
331
+ const { checkStrictly } = checkboxOpts;
332
+ const treeOpts = computeTreeOpts.value;
333
+ const { transform } = treeOpts;
334
+ const handleSelect = (node) => {
335
+ const nodeid = getNodeId(node);
336
+ if (checked) {
337
+ if (!selectCheckboxMaps[nodeid]) {
338
+ selectCheckboxMaps[nodeid] = node;
339
+ }
340
+ } else {
341
+ if (selectCheckboxMaps[nodeid]) {
342
+ delete selectCheckboxMaps[nodeid];
343
+ }
361
344
  }
362
- return item;
363
- })
364
- );
365
- };
366
- const handleSetCheckboxByNodeId = (nodeKeys, checked) => {
367
- const { nodeMaps } = internalData;
368
- if (nodeKeys) {
369
- if (!XEUtils.isArray(nodeKeys)) {
370
- nodeKeys = [nodeKeys];
345
+ };
346
+ if (checkStrictly) {
347
+ nodeList.forEach(handleSelect);
348
+ } else {
349
+ XEUtils.eachTree(nodeList, handleSelect, { children: transform ? mapChildrenField : childrenField });
371
350
  }
372
- const nodeList = [];
373
- nodeKeys.forEach((nodeKey) => {
374
- const nodeid = enNodeValue(nodeKey);
375
- const nodeItem = nodeMaps[nodeid];
376
- if (nodeItem) {
377
- nodeList.push(nodeItem.item);
351
+ reactData.updateCheckboxFlag++;
352
+ updateCheckboxStatus();
353
+ };
354
+ const createNode = (records) => {
355
+ const valueField = computeValueField.value;
356
+ return Promise.resolve(
357
+ records.map((obj) => {
358
+ const item = { ...obj };
359
+ let nodeid = getNodeId(item);
360
+ if (!nodeid) {
361
+ nodeid = getNodeUniqueId();
362
+ XEUtils.set(item, valueField, nodeid);
363
+ }
364
+ return item;
365
+ })
366
+ );
367
+ };
368
+ const handleSetCheckboxByNodeId = (nodeKeys, checked) => {
369
+ const { nodeMaps } = internalData;
370
+ if (nodeKeys) {
371
+ if (!XEUtils.isArray(nodeKeys)) {
372
+ nodeKeys = [nodeKeys];
378
373
  }
379
- });
380
- handleCheckedCheckboxNode(nodeList, checked);
381
- }
382
- return nextTick();
383
- };
384
- const updateCheckboxChecked = (nodeKeys) => {
385
- internalData.selectCheckboxMaps = {};
386
- handleSetCheckboxByNodeId(nodeKeys, true);
387
- };
388
- const updateModelChecked = () => {
389
- const { modelValue } = props;
390
- const { nodeMaps } = internalData;
391
- const expandedMaps = {};
392
- if (props.multiple) {
393
- if (modelValue && modelValue.length) {
394
- updateCheckboxChecked(modelValue);
374
+ const nodeList = [];
375
+ nodeKeys.forEach((nodeKey) => {
376
+ const nodeid = enNodeValue(nodeKey);
377
+ const nodeItem = nodeMaps[nodeid];
378
+ if (nodeItem) {
379
+ nodeList.push(nodeItem.item);
380
+ }
381
+ });
382
+ handleCheckedCheckboxNode(nodeList, checked);
395
383
  }
396
- } else {
397
- if (modelValue) {
398
- const nodeid = enNodeValue(XEUtils.isArray(modelValue) ? modelValue[0] : modelValue);
399
- const itemRest = nodeMaps[nodeid];
400
- if (itemRest) {
401
- itemRest.nodes.forEach((item) => {
402
- expandedMaps[getNodeId(item)] = true;
403
- });
404
- reactData.selectRadioKey = nodeid;
384
+ return nextTick();
385
+ };
386
+ const updateCheckboxChecked = (nodeKeys) => {
387
+ internalData.selectCheckboxMaps = {};
388
+ handleSetCheckboxByNodeId(nodeKeys, true);
389
+ };
390
+ const updateModelChecked = () => {
391
+ const { modelValue } = props;
392
+ const { nodeMaps } = internalData;
393
+ const expandedMaps = {};
394
+ if (props.multiple) {
395
+ if (modelValue && modelValue.length) {
396
+ updateCheckboxChecked(modelValue);
405
397
  }
406
- }
407
- }
408
- internalData.treeExpandedMaps = expandedMaps;
409
- };
410
- const cacheNodeMap = () => {
411
- const { separator } = props;
412
- const { treeFullData } = internalData;
413
- const valueField = computeValueField.value;
414
- const labelField = computeLabelField.value;
415
- const childrenField = computeChildrenField.value;
416
- const keyMaps = {};
417
- const fullMaps = {};
418
- XEUtils.eachTree(
419
- treeFullData,
420
- (item, index, items, path, parenItem, nodes) => {
421
- let nodeid = getNodeId(item);
422
- if (!nodeid) {
423
- nodeid = getNodeUniqueId();
424
- item[valueField] = nodeid;
398
+ } else {
399
+ if (modelValue) {
400
+ const nodeid = enNodeValue(XEUtils.isArray(modelValue) ? modelValue[0] : modelValue);
401
+ const itemRest = nodeMaps[nodeid];
402
+ if (itemRest) {
403
+ itemRest.nodes.forEach((item) => {
404
+ expandedMaps[getNodeId(item)] = true;
405
+ });
406
+ reactData.selectRadioKey = nodeid;
407
+ }
425
408
  }
426
- const nodeVal = item[valueField];
427
- const itemRest = {
428
- item,
429
- index,
430
- $index: -1,
431
- _index: -1,
432
- items,
433
- parent: parenItem,
434
- nodes,
435
- level: nodes.length - 1,
436
- treeIndex: index,
437
- lineCount: 0,
438
- treeLoaded: false,
439
- fullLabel: nodes.map((item2) => item2[labelField]).join(separator || " / ")
440
- };
441
- keyMaps[nodeid] = itemRest;
442
- fullMaps[nodeVal] = itemRest;
443
- },
444
- { children: childrenField }
445
- );
446
- internalData.nodeMaps = keyMaps;
447
- internalData.fullNodeMaps = fullMaps;
448
- reactData.fullOptFlag++;
449
- };
450
- const updateAfterDataIndex = () => {
451
- const { separator } = props;
452
- const { afterTreeList, nodeMaps } = internalData;
453
- const labelField = computeLabelField.value;
454
- const childrenField = computeChildrenField.value;
455
- const mapChildrenField = computeMapChildrenField.value;
456
- const treeOpts = computeTreeOpts.value;
457
- const { transform } = treeOpts;
458
- let vtIndex = 0;
459
- XEUtils.eachTree(
460
- afterTreeList,
461
- (item, index, items, path, parenItem, nodes) => {
462
- const nodeid = getNodeId(item);
463
- const nodeItem = nodeMaps[nodeid];
464
- if (nodeItem) {
465
- nodeItem.items = items;
466
- nodeItem.treeIndex = index;
467
- nodeItem._index = vtIndex;
468
- } else {
469
- const rest = {
409
+ }
410
+ internalData.treeExpandedMaps = expandedMaps;
411
+ };
412
+ const cacheNodeMap = () => {
413
+ const { separator } = props;
414
+ const { treeFullData } = internalData;
415
+ const valueField = computeValueField.value;
416
+ const labelField = computeLabelField.value;
417
+ const childrenField = computeChildrenField.value;
418
+ const keyMaps = {};
419
+ const fullMaps = {};
420
+ XEUtils.eachTree(
421
+ treeFullData,
422
+ (item, index, items, path, parenItem, nodes) => {
423
+ let nodeid = getNodeId(item);
424
+ if (!nodeid) {
425
+ nodeid = getNodeUniqueId();
426
+ item[valueField] = nodeid;
427
+ }
428
+ const nodeVal = item[valueField];
429
+ const itemRest = {
470
430
  item,
471
431
  index,
472
432
  $index: -1,
473
- _index: vtIndex,
433
+ _index: -1,
474
434
  items,
475
435
  parent: parenItem,
476
436
  nodes,
@@ -480,1386 +440,1429 @@ var cascader_default = defineVxeComponent({
480
440
  treeLoaded: false,
481
441
  fullLabel: nodes.map((item2) => item2[labelField]).join(separator || " / ")
482
442
  };
483
- nodeMaps[nodeid] = rest;
443
+ keyMaps[nodeid] = itemRest;
444
+ fullMaps[nodeVal] = itemRest;
445
+ },
446
+ { children: childrenField }
447
+ );
448
+ internalData.nodeMaps = keyMaps;
449
+ internalData.fullNodeMaps = fullMaps;
450
+ reactData.fullOptFlag++;
451
+ };
452
+ const updateAfterDataIndex = () => {
453
+ const { separator } = props;
454
+ const { afterTreeList, nodeMaps } = internalData;
455
+ const labelField = computeLabelField.value;
456
+ const childrenField = computeChildrenField.value;
457
+ const mapChildrenField = computeMapChildrenField.value;
458
+ const treeOpts = computeTreeOpts.value;
459
+ const { transform } = treeOpts;
460
+ let vtIndex = 0;
461
+ XEUtils.eachTree(
462
+ afterTreeList,
463
+ (item, index, items, path, parenItem, nodes) => {
464
+ const nodeid = getNodeId(item);
465
+ const nodeItem = nodeMaps[nodeid];
466
+ if (nodeItem) {
467
+ nodeItem.items = items;
468
+ nodeItem.treeIndex = index;
469
+ nodeItem._index = vtIndex;
470
+ } else {
471
+ const rest = {
472
+ item,
473
+ index,
474
+ $index: -1,
475
+ _index: vtIndex,
476
+ items,
477
+ parent: parenItem,
478
+ nodes,
479
+ level: nodes.length - 1,
480
+ treeIndex: index,
481
+ lineCount: 0,
482
+ treeLoaded: false,
483
+ fullLabel: nodes.map((item2) => item2[labelField]).join(separator || " / ")
484
+ };
485
+ nodeMaps[nodeid] = rest;
486
+ }
487
+ vtIndex++;
488
+ },
489
+ { children: transform ? mapChildrenField : childrenField }
490
+ );
491
+ };
492
+ const updateAfterFullData = () => {
493
+ const { searchValue } = reactData;
494
+ const { treeFullData, lastFilterValue } = internalData;
495
+ const labelField = computeLabelField.value;
496
+ const childrenField = computeChildrenField.value;
497
+ const mapChildrenField = computeMapChildrenField.value;
498
+ const treeOpts = computeTreeOpts.value;
499
+ const { transform } = treeOpts;
500
+ const filterOpts = computeFilterOpts.value;
501
+ const { beforeFilterMethod, filterMethod, afterFilterMethod } = filterOpts;
502
+ let fullList = treeFullData;
503
+ let treeList = fullList;
504
+ let filterStr = "";
505
+ if (searchValue) {
506
+ filterStr = `${searchValue}`;
507
+ const handleSearch = filterMethod ? (item) => {
508
+ return filterMethod({
509
+ $cascader: $xeCascader,
510
+ node: item,
511
+ filterValue: filterStr
512
+ });
513
+ } : (item) => {
514
+ return String(item[labelField]).toLowerCase().indexOf(filterStr.toLowerCase()) > -1;
515
+ };
516
+ const bafParams = { $cascader: $xeCascader, filterValue: filterStr };
517
+ if (beforeFilterMethod) {
518
+ beforeFilterMethod(bafParams);
484
519
  }
485
- vtIndex++;
486
- },
487
- { children: transform ? mapChildrenField : childrenField }
488
- );
489
- };
490
- const updateAfterFullData = () => {
491
- const { searchValue } = reactData;
492
- const { treeFullData, lastFilterValue } = internalData;
493
- const labelField = computeLabelField.value;
494
- const childrenField = computeChildrenField.value;
495
- const mapChildrenField = computeMapChildrenField.value;
496
- const treeOpts = computeTreeOpts.value;
497
- const { transform } = treeOpts;
498
- const filterOpts = computeFilterOpts.value;
499
- const { beforeFilterMethod, filterMethod, afterFilterMethod } = filterOpts;
500
- let fullList = treeFullData;
501
- let treeList = fullList;
502
- let filterStr = "";
503
- if (searchValue) {
504
- filterStr = `${searchValue}`;
505
- const handleSearch = filterMethod ? (item) => {
506
- return filterMethod({
507
- $cascader: $xeCascader,
508
- node: item,
509
- filterValue: filterStr
510
- });
511
- } : (item) => {
512
- return String(item[labelField]).toLowerCase().indexOf(filterStr.toLowerCase()) > -1;
513
- };
514
- const bafParams = { $cascader: $xeCascader, filterValue: filterStr };
515
- if (beforeFilterMethod) {
516
- beforeFilterMethod(bafParams);
517
- }
518
- if (transform) {
519
- treeList = XEUtils.searchTree(treeFullData, handleSearch, {
520
- original: true,
521
- isEvery: false,
522
- children: childrenField,
523
- mapChildren: mapChildrenField
520
+ if (transform) {
521
+ treeList = XEUtils.searchTree(treeFullData, handleSearch, {
522
+ original: true,
523
+ isEvery: false,
524
+ children: childrenField,
525
+ mapChildren: mapChildrenField
526
+ });
527
+ fullList = treeList;
528
+ } else {
529
+ fullList = treeFullData.filter(handleSearch);
530
+ }
531
+ internalData.lastFilterValue = filterStr;
532
+ nextTick(() => {
533
+ if (afterFilterMethod) {
534
+ afterFilterMethod(bafParams);
535
+ }
524
536
  });
525
- fullList = treeList;
526
537
  } else {
527
- fullList = treeFullData.filter(handleSearch);
528
- }
529
- internalData.lastFilterValue = filterStr;
530
- nextTick(() => {
531
- if (afterFilterMethod) {
532
- afterFilterMethod(bafParams);
538
+ if (transform) {
539
+ treeList = XEUtils.searchTree(treeFullData, () => true, {
540
+ original: true,
541
+ isEvery: false,
542
+ children: childrenField,
543
+ mapChildren: mapChildrenField
544
+ });
545
+ fullList = treeList;
546
+ if (lastFilterValue) {
547
+ const bafParams = { $cascader: $xeCascader, filterValue: filterStr };
548
+ if (beforeFilterMethod) {
549
+ beforeFilterMethod(bafParams);
550
+ }
551
+ nextTick(() => {
552
+ if (afterFilterMethod) {
553
+ afterFilterMethod(bafParams);
554
+ }
555
+ });
556
+ }
533
557
  }
534
- });
535
- } else {
558
+ internalData.lastFilterValue = "";
559
+ }
560
+ internalData.afterVisibleList = fullList;
561
+ internalData.afterTreeList = treeList;
562
+ updateAfterDataIndex();
563
+ };
564
+ const handleTreeToList = () => {
565
+ const { afterTreeList, treeExpandedMaps } = internalData;
566
+ const mapChildrenField = computeMapChildrenField.value;
567
+ const treeOpts = computeTreeOpts.value;
568
+ const { transform } = treeOpts;
569
+ const expandMaps = {};
536
570
  if (transform) {
537
- treeList = XEUtils.searchTree(treeFullData, () => true, {
538
- original: true,
539
- isEvery: false,
540
- children: childrenField,
541
- mapChildren: mapChildrenField
542
- });
543
- fullList = treeList;
544
- if (lastFilterValue) {
545
- const bafParams = { $cascader: $xeCascader, filterValue: filterStr };
546
- if (beforeFilterMethod) {
547
- beforeFilterMethod(bafParams);
548
- }
549
- nextTick(() => {
550
- if (afterFilterMethod) {
551
- afterFilterMethod(bafParams);
571
+ const fullData = [];
572
+ XEUtils.eachTree(
573
+ afterTreeList,
574
+ (item, index, items, path, parentRow) => {
575
+ const nodeid = getNodeId(item);
576
+ const parentNodeid = getNodeId(parentRow);
577
+ if (!parentRow || expandMaps[parentNodeid] && treeExpandedMaps[parentNodeid]) {
578
+ expandMaps[nodeid] = 1;
579
+ fullData.push(item);
552
580
  }
553
- });
554
- }
581
+ },
582
+ { children: mapChildrenField }
583
+ );
584
+ internalData.afterVisibleList = fullData;
585
+ return fullData;
555
586
  }
556
- internalData.lastFilterValue = "";
557
- }
558
- internalData.afterVisibleList = fullList;
559
- internalData.afterTreeList = treeList;
560
- updateAfterDataIndex();
561
- };
562
- const handleTreeToList = () => {
563
- const { afterTreeList, treeExpandedMaps } = internalData;
564
- const mapChildrenField = computeMapChildrenField.value;
565
- const treeOpts = computeTreeOpts.value;
566
- const { transform } = treeOpts;
567
- const expandMaps = {};
568
- if (transform) {
569
- const fullData = [];
570
- XEUtils.eachTree(
571
- afterTreeList,
572
- (item, index, items, path, parentRow) => {
573
- const nodeid = getNodeId(item);
574
- const parentNodeid = getNodeId(parentRow);
575
- if (!parentRow || expandMaps[parentNodeid] && treeExpandedMaps[parentNodeid]) {
576
- expandMaps[nodeid] = 1;
577
- fullData.push(item);
587
+ return internalData.afterVisibleList;
588
+ };
589
+ const handleData = (force) => {
590
+ let fullList = internalData.afterVisibleList;
591
+ if (force) {
592
+ updateAfterFullData();
593
+ fullList = handleTreeToList();
594
+ }
595
+ const treeList = fullList.slice(0);
596
+ reactData.treeList = treeList;
597
+ };
598
+ function handleHasChildNodeIds(treeList, type) {
599
+ const childrenField = computeChildrenField.value;
600
+ const mapChildrenField = computeMapChildrenField.value;
601
+ const treeOpts = computeTreeOpts.value;
602
+ const { transform } = treeOpts;
603
+ const childField = transform ? mapChildrenField : childrenField;
604
+ const nodeIds = [];
605
+ let currList = treeList;
606
+ while (currList.length) {
607
+ let targetNode = null;
608
+ for (const item of currList) {
609
+ const kids = item[childField];
610
+ if (XEUtils.isArray(kids) && kids.length > 0) {
611
+ targetNode = item;
612
+ break;
578
613
  }
579
- },
580
- { children: mapChildrenField }
581
- );
582
- internalData.afterVisibleList = fullData;
583
- return fullData;
584
- }
585
- return internalData.afterVisibleList;
586
- };
587
- const handleData = (force) => {
588
- let fullList = internalData.afterVisibleList;
589
- if (force) {
590
- updateAfterFullData();
591
- fullList = handleTreeToList();
592
- }
593
- const treeList = fullList.slice(0);
594
- reactData.treeList = treeList;
595
- };
596
- function handleHasChildNodeIds(treeList, type) {
597
- const childrenField = computeChildrenField.value;
598
- const mapChildrenField = computeMapChildrenField.value;
599
- const treeOpts = computeTreeOpts.value;
600
- const { transform } = treeOpts;
601
- const childField = transform ? mapChildrenField : childrenField;
602
- const nodeIds = [];
603
- let currList = treeList;
604
- while (currList.length) {
605
- let targetNode = null;
606
- for (const item of currList) {
607
- const kids = item[childField];
608
- if (XEUtils.isArray(kids) && kids.length > 0) {
609
- targetNode = item;
614
+ }
615
+ if (targetNode) {
616
+ nodeIds.push(getNodeId(targetNode));
617
+ currList = targetNode[childField];
618
+ } else {
619
+ const endNode = XEUtils[type](currList);
620
+ nodeIds.push(getNodeId(endNode));
610
621
  break;
611
622
  }
612
623
  }
613
- if (targetNode) {
614
- nodeIds.push(getNodeId(targetNode));
615
- currList = targetNode[childField];
616
- } else {
617
- const endNode = XEUtils[type](currList);
618
- nodeIds.push(getNodeId(endNode));
619
- break;
620
- }
624
+ return nodeIds;
621
625
  }
622
- return nodeIds;
623
- }
624
- const triggerSearchEvent = XEUtils.debounce(
625
- () => {
626
+ const triggerSearchEvent = XEUtils.debounce(
627
+ () => {
628
+ handleData(true);
629
+ updateCheckboxStatus();
630
+ const { currentItems } = reactData;
631
+ const { afterTreeList } = internalData;
632
+ const filterOpts = computeFilterOpts.value;
633
+ const { autoExpandMode } = filterOpts;
634
+ if (!isPathInTree(afterTreeList, currentItems)) {
635
+ if (autoExpandMode === "first" || autoExpandMode === "last") {
636
+ const stItems = handleHasChildNodeIds(afterTreeList, autoExpandMode);
637
+ const expandedMaps = {};
638
+ stItems.forEach((nodeid) => {
639
+ expandedMaps[nodeid] = true;
640
+ });
641
+ internalData.treeExpandedMaps = expandedMaps;
642
+ reactData.currentItems = stItems;
643
+ } else {
644
+ handleCurrentItems();
645
+ }
646
+ }
647
+ updateCurrentChunk();
648
+ },
649
+ 350,
650
+ { trailing: true }
651
+ );
652
+ const loadData = (list) => {
653
+ const treeOpts = computeTreeOpts.value;
654
+ const keyField = computeKeyField.value;
655
+ const parentField = computeParentField.value;
656
+ const childrenField = computeChildrenField.value;
657
+ const { rootParentValue, rootValues } = treeOpts;
658
+ const { transform } = treeOpts;
659
+ const fullData = transform ? XEUtils.toArrayTree(list, {
660
+ key: keyField,
661
+ parentKey: parentField,
662
+ mapChildren: childrenField,
663
+ rootParentValue,
664
+ rootValues
665
+ }) : list ? list.slice(0) : [];
666
+ internalData.treeFullData = fullData;
667
+ cacheNodeMap();
626
668
  handleData(true);
627
- updateCheckboxStatus();
669
+ updateModelChecked();
670
+ handleCurrentItems();
671
+ updateCurrentChunk();
672
+ return nextTick();
673
+ };
674
+ const updateCurrentChunk = () => {
628
675
  const { currentItems } = reactData;
629
676
  const { afterTreeList } = internalData;
630
- const filterOpts = computeFilterOpts.value;
631
- const { autoExpandMode } = filterOpts;
632
- if (!isPathInTree(afterTreeList, currentItems)) {
633
- if (autoExpandMode === "first" || autoExpandMode === "last") {
634
- const stItems = handleHasChildNodeIds(afterTreeList, autoExpandMode);
635
- const expandedMaps = {};
636
- stItems.forEach((nodeid) => {
677
+ const childrenField = computeChildrenField.value;
678
+ const mapChildrenField = computeMapChildrenField.value;
679
+ const treeOpts = computeTreeOpts.value;
680
+ const { transform } = treeOpts;
681
+ const currentCunkList = [afterTreeList];
682
+ if (currentItems.length) {
683
+ let chunkIndex = 0;
684
+ let stNodeid = currentItems[chunkIndex];
685
+ let optList = afterTreeList;
686
+ while (stNodeid && optList && optList.length) {
687
+ stNodeid = currentItems[chunkIndex++];
688
+ const currOption = optList.find((item) => stNodeid === getNodeId(item));
689
+ optList = currOption ? currOption[transform ? mapChildrenField : childrenField] : [];
690
+ if (!optList || !optList.length) {
691
+ break;
692
+ }
693
+ currentCunkList.push(optList);
694
+ }
695
+ }
696
+ reactData.currentCunkList = currentCunkList;
697
+ };
698
+ const handleCurrentItems = () => {
699
+ const { currentNode } = reactData;
700
+ const { afterTreeList } = internalData;
701
+ const selectVals = computeSelectVals.value;
702
+ const childrenField = computeChildrenField.value;
703
+ const mapChildrenField = computeMapChildrenField.value;
704
+ const treeOpts = computeTreeOpts.value;
705
+ const { transform } = treeOpts;
706
+ const stItems = [];
707
+ const expandedMaps = {};
708
+ const lastVal = currentNode ? getNodeId(currentNode) : enNodeValue(XEUtils.last(selectVals));
709
+ if (lastVal) {
710
+ const stRest = XEUtils.findTree(afterTreeList, (item) => lastVal === getNodeId(item), { children: transform ? mapChildrenField : childrenField });
711
+ if (stRest) {
712
+ const { nodes } = stRest;
713
+ nodes.forEach((item) => {
714
+ const nodeid = getNodeId(item);
637
715
  expandedMaps[nodeid] = true;
716
+ stItems.push(nodeid);
638
717
  });
639
- internalData.treeExpandedMaps = expandedMaps;
640
- reactData.currentItems = stItems;
641
- } else {
642
- handleCurrentItems();
643
718
  }
644
719
  }
645
- updateCurrentChunk();
646
- },
647
- 350,
648
- { trailing: true }
649
- );
650
- const loadData = (list) => {
651
- const treeOpts = computeTreeOpts.value;
652
- const keyField = computeKeyField.value;
653
- const parentField = computeParentField.value;
654
- const childrenField = computeChildrenField.value;
655
- const { rootParentValue, rootValues } = treeOpts;
656
- const { transform } = treeOpts;
657
- const fullData = transform ? XEUtils.toArrayTree(list, {
658
- key: keyField,
659
- parentKey: parentField,
660
- mapChildren: childrenField,
661
- rootParentValue,
662
- rootValues
663
- }) : list ? list.slice(0) : [];
664
- internalData.treeFullData = fullData;
665
- cacheNodeMap();
666
- handleData(true);
667
- updateModelChecked();
668
- handleCurrentItems();
669
- updateCurrentChunk();
670
- return nextTick();
671
- };
672
- const updateCurrentChunk = () => {
673
- const { currentItems } = reactData;
674
- const { afterTreeList } = internalData;
675
- const childrenField = computeChildrenField.value;
676
- const mapChildrenField = computeMapChildrenField.value;
677
- const treeOpts = computeTreeOpts.value;
678
- const { transform } = treeOpts;
679
- const currentCunkList = [afterTreeList];
680
- if (currentItems.length) {
681
- let chunkIndex = 0;
682
- let stNodeid = currentItems[chunkIndex];
683
- let optList = afterTreeList;
684
- while (stNodeid && optList && optList.length) {
685
- stNodeid = currentItems[chunkIndex++];
686
- const currOption = optList.find((item) => stNodeid === getNodeId(item));
687
- optList = currOption ? currOption[transform ? mapChildrenField : childrenField] : [];
688
- if (!optList || !optList.length) {
689
- break;
690
- }
691
- currentCunkList.push(optList);
720
+ reactData.currentItems = stItems;
721
+ internalData.treeExpandedMaps = expandedMaps;
722
+ };
723
+ const updateZindex = () => {
724
+ const popupOpts = computePopupOpts.value;
725
+ const { zIndex } = popupOpts;
726
+ if (zIndex) {
727
+ reactData.panelIndex = zIndex;
728
+ } else if (reactData.panelIndex < getLastZIndex()) {
729
+ reactData.panelIndex = nextZIndex();
692
730
  }
693
- }
694
- reactData.currentCunkList = currentCunkList;
695
- };
696
- const handleCurrentItems = () => {
697
- const { currentNode } = reactData;
698
- const { afterTreeList } = internalData;
699
- const selectVals = computeSelectVals.value;
700
- const childrenField = computeChildrenField.value;
701
- const mapChildrenField = computeMapChildrenField.value;
702
- const treeOpts = computeTreeOpts.value;
703
- const { transform } = treeOpts;
704
- const stItems = [];
705
- const expandedMaps = {};
706
- const lastVal = currentNode ? getNodeId(currentNode) : enNodeValue(XEUtils.last(selectVals));
707
- if (lastVal) {
708
- const stRest = XEUtils.findTree(afterTreeList, (item) => lastVal === getNodeId(item), { children: transform ? mapChildrenField : childrenField });
709
- if (stRest) {
710
- const { nodes } = stRest;
711
- nodes.forEach((item) => {
712
- const nodeid = getNodeId(item);
713
- expandedMaps[nodeid] = true;
714
- stItems.push(nodeid);
731
+ };
732
+ const updatePlacement = () => {
733
+ const { panelIndex } = reactData;
734
+ const targetElem = refElem.value;
735
+ const panelElem = refOptionPanel.value;
736
+ const btnTransfer = computeBtnTransfer.value;
737
+ const popupOpts = computePopupOpts.value;
738
+ const handleStyle = () => {
739
+ const ppObj = updatePanelPlacement(targetElem, panelElem, {
740
+ placement: popupOpts.placement,
741
+ defaultPlacement: popupOpts.defaultPlacement,
742
+ appendTo: popupOpts.appendTo,
743
+ teleportTo: btnTransfer,
744
+ isMinWidth: false
745
+ });
746
+ const panelStyle = Object.assign(ppObj.style, {
747
+ zIndex: panelIndex
715
748
  });
749
+ reactData.panelStyle = panelStyle;
750
+ reactData.panelPlacement = ppObj.placement;
751
+ };
752
+ handleStyle();
753
+ return nextTick().then(handleStyle);
754
+ };
755
+ const showOptionPanel = (evnt) => {
756
+ const { loading, remote, filterable } = props;
757
+ const { treeFullData } = internalData;
758
+ const isDisabled = computeIsDisabled.value;
759
+ const remoteOpts = computeRemoteOpts.value;
760
+ if (!loading && !isDisabled) {
761
+ clearTimeout(internalData.hpTimeout);
762
+ if (!reactData.initialized) {
763
+ reactData.initialized = true;
764
+ }
765
+ reactData.isActivated = true;
766
+ reactData.isAniVisible = true;
767
+ if (filterable) {
768
+ if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !treeFullData.length) {
769
+ handleSearchEvent();
770
+ }
771
+ }
772
+ setTimeout(() => {
773
+ reactData.visiblePanel = true;
774
+ handleFocusSearch();
775
+ }, 10);
776
+ updateZindex();
777
+ updatePlacement();
778
+ dispatchEvent("visible-change", { visible: true }, evnt || null);
716
779
  }
717
- }
718
- reactData.currentItems = stItems;
719
- internalData.treeExpandedMaps = expandedMaps;
720
- };
721
- const updateZindex = () => {
722
- const popupOpts = computePopupOpts.value;
723
- const { zIndex } = popupOpts;
724
- if (zIndex) {
725
- reactData.panelIndex = zIndex;
726
- } else if (reactData.panelIndex < getLastZIndex()) {
727
- reactData.panelIndex = nextZIndex();
728
- }
729
- };
730
- const updatePlacement = () => {
731
- const { panelIndex } = reactData;
732
- const targetElem = refElem.value;
733
- const panelElem = refOptionPanel.value;
734
- const btnTransfer = computeBtnTransfer.value;
735
- const popupOpts = computePopupOpts.value;
736
- const handleStyle = () => {
737
- const ppObj = updatePanelPlacement(targetElem, panelElem, {
738
- placement: popupOpts.placement,
739
- defaultPlacement: popupOpts.defaultPlacement,
740
- appendTo: popupOpts.appendTo,
741
- teleportTo: btnTransfer,
742
- isMinWidth: false
780
+ };
781
+ const hideOptionPanel = (evnt) => {
782
+ reactData.visiblePanel = false;
783
+ internalData.hpTimeout = setTimeout(() => {
784
+ reactData.isAniVisible = false;
785
+ }, 350);
786
+ dispatchEvent("visible-change", { visible: false }, evnt || null);
787
+ };
788
+ const setCurrentNode = (node) => {
789
+ reactData.currentNode = node;
790
+ updateCurrentChunk();
791
+ return nextTick();
792
+ };
793
+ const setAllCheckboxNode = (checked) => {
794
+ const selectMaps = {};
795
+ const childrenField = computeChildrenField.value;
796
+ const mapChildrenField = computeMapChildrenField.value;
797
+ const treeOpts = computeTreeOpts.value;
798
+ const { transform } = treeOpts;
799
+ const checkKeys = [];
800
+ const checkNodes = [];
801
+ if (checked) {
802
+ XEUtils.eachTree(
803
+ internalData.afterTreeList,
804
+ (node) => {
805
+ const nodeid = getNodeId(node);
806
+ checkKeys.push(nodeid);
807
+ checkNodes.push(node);
808
+ selectMaps[nodeid] = true;
809
+ },
810
+ { children: transform ? mapChildrenField : childrenField }
811
+ );
812
+ }
813
+ internalData.indeterminateRowMaps = {};
814
+ internalData.selectCheckboxMaps = selectMaps;
815
+ reactData.updateCheckboxFlag++;
816
+ updateCheckboxStatus();
817
+ return nextTick().then(() => {
818
+ return { checkNodeKeys: checkKeys, checkNodes };
743
819
  });
744
- const panelStyle = Object.assign(ppObj.style, {
745
- zIndex: panelIndex
820
+ };
821
+ const clearSelectedNode = () => {
822
+ internalData.indeterminateRowMaps = {};
823
+ internalData.selectCheckboxMaps = {};
824
+ reactData.updateCheckboxFlag++;
825
+ reactData.selectRadioKey = null;
826
+ updateCheckboxStatus();
827
+ return nextTick().then(() => {
828
+ return { checkNodeKeys: [], checkNodes: [] };
746
829
  });
747
- reactData.panelStyle = panelStyle;
748
- reactData.panelPlacement = ppObj.placement;
749
830
  };
750
- handleStyle();
751
- return nextTick().then(handleStyle);
752
- };
753
- const showOptionPanel = (evnt) => {
754
- const { loading, remote, filterable } = props;
755
- const { treeFullData } = internalData;
756
- const isDisabled = computeIsDisabled.value;
757
- const remoteOpts = computeRemoteOpts.value;
758
- if (!loading && !isDisabled) {
759
- clearTimeout(internalData.hpTimeout);
760
- if (!reactData.initialized) {
761
- reactData.initialized = true;
762
- }
763
- reactData.isActivated = true;
764
- reactData.isAniVisible = true;
765
- if (filterable) {
766
- if (remote && remoteOpts.enabled && remoteOpts.autoLoad && !treeFullData.length) {
767
- handleSearchEvent();
831
+ const changeEvent = (evnt, selectValue, node) => {
832
+ const value = XEUtils.isArray(selectValue) ? selectValue.map(deNodeValue) : deNodeValue(selectValue);
833
+ internalData.isUpdateMode = true;
834
+ emitModel(value);
835
+ if (value !== props.modelValue) {
836
+ dispatchEvent("change", { value, node, option: node }, evnt);
837
+ if ($xeForm && formItemInfo) {
838
+ $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
768
839
  }
769
840
  }
770
- setTimeout(() => {
771
- reactData.visiblePanel = true;
772
- handleFocusSearch();
773
- }, 10);
774
- updateZindex();
775
- updatePlacement();
776
- dispatchEvent("visible-change", { visible: true }, evnt || null);
777
- }
778
- };
779
- const hideOptionPanel = (evnt) => {
780
- reactData.visiblePanel = false;
781
- internalData.hpTimeout = setTimeout(() => {
782
- reactData.isAniVisible = false;
783
- }, 350);
784
- dispatchEvent("visible-change", { visible: false }, evnt || null);
785
- };
786
- const setCurrentNode = (node) => {
787
- reactData.currentNode = node;
788
- updateCurrentChunk();
789
- return nextTick();
790
- };
791
- const setAllCheckboxNode = (checked) => {
792
- const selectMaps = {};
793
- const childrenField = computeChildrenField.value;
794
- const mapChildrenField = computeMapChildrenField.value;
795
- const treeOpts = computeTreeOpts.value;
796
- const { transform } = treeOpts;
797
- const checkKeys = [];
798
- const checkNodes = [];
799
- if (checked) {
800
- XEUtils.eachTree(
801
- internalData.afterTreeList,
802
- (node) => {
803
- const nodeid = getNodeId(node);
804
- checkKeys.push(nodeid);
805
- checkNodes.push(node);
806
- selectMaps[nodeid] = true;
807
- },
808
- { children: transform ? mapChildrenField : childrenField }
809
- );
810
- }
811
- internalData.indeterminateRowMaps = {};
812
- internalData.selectCheckboxMaps = selectMaps;
813
- reactData.updateCheckboxFlag++;
814
- updateCheckboxStatus();
815
- return nextTick().then(() => {
816
- return { checkNodeKeys: checkKeys, checkNodes };
817
- });
818
- };
819
- const clearSelectedNode = () => {
820
- internalData.indeterminateRowMaps = {};
821
- internalData.selectCheckboxMaps = {};
822
- reactData.updateCheckboxFlag++;
823
- reactData.selectRadioKey = null;
824
- updateCheckboxStatus();
825
- return nextTick().then(() => {
826
- return { checkNodeKeys: [], checkNodes: [] };
827
- });
828
- };
829
- const changeEvent = (evnt, selectValue, node) => {
830
- const value = XEUtils.isArray(selectValue) ? selectValue.map(deNodeValue) : deNodeValue(selectValue);
831
- internalData.isUpdateMode = true;
832
- emitModel(value);
833
- if (value !== props.modelValue) {
834
- dispatchEvent("change", { value, node, option: node }, evnt);
835
- if ($xeForm && formItemInfo) {
836
- $xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
841
+ };
842
+ const clearValueEvent = (evnt, selectValue) => {
843
+ changeEvent(evnt, selectValue, null);
844
+ dispatchEvent("clear", { value: selectValue }, evnt);
845
+ };
846
+ const clearEvent = (params, evnt) => {
847
+ clearValueEvent(evnt, null);
848
+ hideOptionPanel(evnt);
849
+ };
850
+ const allCheckedPanelEvent = (params) => {
851
+ const { $event } = params;
852
+ const { multiple, checkedClosable } = props;
853
+ if (multiple) {
854
+ setAllCheckboxNode(true).then(({ checkNodeKeys, checkNodes }) => {
855
+ changeEvent($event, checkNodeKeys, checkNodes[0]);
856
+ dispatchEvent("all-change", { value: checkNodeKeys }, $event);
857
+ if (checkedClosable) {
858
+ hideOptionPanel($event);
859
+ }
860
+ });
837
861
  }
838
- }
839
- };
840
- const clearValueEvent = (evnt, selectValue) => {
841
- changeEvent(evnt, selectValue, null);
842
- dispatchEvent("clear", { value: selectValue }, evnt);
843
- };
844
- const clearEvent = (params, evnt) => {
845
- clearValueEvent(evnt, null);
846
- hideOptionPanel(evnt);
847
- };
848
- const allCheckedPanelEvent = (params) => {
849
- const { $event } = params;
850
- const { multiple, checkedClosable } = props;
851
- if (multiple) {
852
- setAllCheckboxNode(true).then(({ checkNodeKeys, checkNodes }) => {
853
- changeEvent($event, checkNodeKeys, checkNodes[0]);
854
- dispatchEvent("all-change", { value: checkNodeKeys }, $event);
862
+ };
863
+ const clearCheckedPanelEvent = (params) => {
864
+ const { $event } = params;
865
+ const { multiple, checkedClosable } = props;
866
+ const value = multiple ? [] : null;
867
+ clearSelectedNode().then(() => {
855
868
  if (checkedClosable) {
856
869
  hideOptionPanel($event);
857
870
  }
858
871
  });
859
- }
860
- };
861
- const clearCheckedPanelEvent = (params) => {
862
- const { $event } = params;
863
- const { multiple, checkedClosable } = props;
864
- const value = multiple ? [] : null;
865
- clearSelectedNode().then(() => {
866
- if (checkedClosable) {
867
- hideOptionPanel($event);
872
+ changeEvent($event, value, null);
873
+ dispatchEvent("clear", { value }, $event);
874
+ };
875
+ const closePanelEvent = (params) => {
876
+ const { $event } = params;
877
+ hideOptionPanel($event);
878
+ };
879
+ const handleGlobalMousedownEvent = (evnt) => {
880
+ const { visiblePanel } = reactData;
881
+ const isDisabled = computeIsDisabled.value;
882
+ if (!isDisabled) {
883
+ const el = refElem.value;
884
+ const panelElem = refOptionPanel.value;
885
+ reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag;
886
+ if (visiblePanel && !reactData.isActivated) {
887
+ hideOptionPanel(evnt);
888
+ }
868
889
  }
869
- });
870
- changeEvent($event, value, null);
871
- dispatchEvent("clear", { value }, $event);
872
- };
873
- const closePanelEvent = (params) => {
874
- const { $event } = params;
875
- hideOptionPanel($event);
876
- };
877
- const handleGlobalMousedownEvent = (evnt) => {
878
- const { visiblePanel } = reactData;
879
- const isDisabled = computeIsDisabled.value;
880
- if (!isDisabled) {
881
- const el = refElem.value;
882
- const panelElem = refOptionPanel.value;
883
- reactData.isActivated = getEventTargetNode(evnt, el).flag || getEventTargetNode(evnt, panelElem).flag;
884
- if (visiblePanel && !reactData.isActivated) {
890
+ };
891
+ const handleGlobalBlurEvent = (evnt) => {
892
+ const { visiblePanel, isActivated } = reactData;
893
+ if (visiblePanel) {
885
894
  hideOptionPanel(evnt);
886
895
  }
887
- }
888
- };
889
- const handleGlobalBlurEvent = (evnt) => {
890
- const { visiblePanel, isActivated } = reactData;
891
- if (visiblePanel) {
892
- hideOptionPanel(evnt);
893
- }
894
- if (isActivated) {
895
- reactData.isActivated = false;
896
- }
897
- if (visiblePanel || isActivated) {
898
- const $input = refInput.value;
899
- if ($input) {
900
- $input.blur();
896
+ if (isActivated) {
897
+ reactData.isActivated = false;
901
898
  }
902
- }
903
- };
904
- const handleGlobalResizeEvent = () => {
905
- const { visiblePanel } = reactData;
906
- if (visiblePanel) {
907
- updatePlacement();
908
- }
909
- };
910
- const handleGlobalScrollEvent = () => {
911
- const { visiblePanel } = reactData;
912
- if (visiblePanel) {
913
- updatePlacement();
914
- }
915
- };
916
- const handleFocusSearch = () => {
917
- if (props.filterable) {
918
- nextTick(() => {
919
- const inpSearch = refInpSearch.value;
920
- if (inpSearch) {
921
- inpSearch.focus();
899
+ if (visiblePanel || isActivated) {
900
+ const $input = refInput.value;
901
+ if ($input) {
902
+ $input.blur();
922
903
  }
923
- });
924
- }
925
- };
926
- const changeCurrentEvent = (evnt, node) => {
927
- evnt.preventDefault();
928
- const isChecked = true;
929
- reactData.currentNode = node;
930
- dispatchEvent("current-change", { node, checked: isChecked }, evnt);
931
- };
932
- const changeRadioEvent = (evnt, node, chunks, chunkIndex) => {
933
- evnt.preventDefault();
934
- evnt.stopPropagation();
935
- const { currentItems } = reactData;
936
- const { nodeMaps } = internalData;
937
- const radioOpts = computeRadioOpts.value;
938
- const childrenField = computeChildrenField.value;
939
- const treeOpts = computeTreeOpts.value;
940
- const { transform } = treeOpts;
941
- const mapChildrenField = computeMapChildrenField.value;
942
- const { checkMode, checkMethod } = radioOpts;
943
- const nodeid = getNodeId(node);
944
- const childList = node[transform ? mapChildrenField : childrenField];
945
- const isExistChild = childList && childList.length > 0;
946
- const nodeItem = nodeMaps[nodeid] || {};
947
- const nLevel = nodeItem.level;
948
- const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
949
- if (isDisabled) {
950
- return;
951
- }
952
- const value = nodeid;
953
- reactData.selectRadioKey = value;
954
- changeEvent(evnt, value, node);
955
- if (!currentItems.includes(nodeid)) {
956
- changeCurrentEvent(evnt, node);
957
- toggleExpandEvent(evnt, node, chunks, chunkIndex);
958
- }
959
- hideOptionPanel(evnt);
960
- };
961
- const handleAsyncTreeExpandChilds = (node) => {
962
- const checkboxOpts = computeCheckboxOpts.value;
963
- const treeOpts = computeTreeOpts.value;
964
- const { loadMethod } = treeOpts;
965
- const { checkStrictly } = checkboxOpts;
966
- return new Promise((resolve) => {
967
- if (loadMethod) {
968
- const { nodeMaps } = internalData;
969
- const nodeid = getNodeId(node);
970
- const nodeItem = nodeMaps[nodeid];
971
- internalData.treeExpandLazyLoadedMaps[nodeid] = true;
972
- Promise.resolve(loadMethod({ $cascader: $xeCascader, node })).then((childRecords) => {
973
- const { treeExpandLazyLoadedMaps } = internalData;
974
- nodeItem.treeLoaded = true;
975
- if (treeExpandLazyLoadedMaps[nodeid]) {
976
- treeExpandLazyLoadedMaps[nodeid] = false;
977
- }
978
- if (!XEUtils.isArray(childRecords)) {
979
- childRecords = [];
980
- }
981
- if (childRecords) {
982
- return $xeCascader.loadChildrenNode(node, childRecords).then((childRows) => {
983
- const { treeExpandedMaps } = internalData;
984
- if (childRows.length && !treeExpandedMaps[nodeid]) {
985
- treeExpandedMaps[nodeid] = true;
986
- }
987
- reactData.updateExpandedFlag++;
988
- if (!checkStrictly && $xeCascader.isCheckedByCheckboxNodeId(nodeid)) {
989
- handleCheckedCheckboxNode(childRows, true);
990
- }
991
- dispatchEvent("load-success", { node, data: childRecords }, new Event("load-success"));
992
- return nextTick();
993
- });
994
- } else {
995
- dispatchEvent("load-success", { node, data: childRecords }, new Event("load-success"));
996
- }
997
- }).catch((e) => {
998
- const { treeExpandLazyLoadedMaps } = internalData;
999
- nodeItem.treeLoaded = false;
1000
- if (treeExpandLazyLoadedMaps[nodeid]) {
1001
- treeExpandLazyLoadedMaps[nodeid] = false;
904
+ }
905
+ };
906
+ const handleGlobalResizeEvent = () => {
907
+ const { visiblePanel } = reactData;
908
+ if (visiblePanel) {
909
+ updatePlacement();
910
+ }
911
+ };
912
+ const handleGlobalScrollEvent = () => {
913
+ const { visiblePanel } = reactData;
914
+ if (visiblePanel) {
915
+ updatePlacement();
916
+ }
917
+ };
918
+ const handleFocusSearch = () => {
919
+ if (props.filterable) {
920
+ nextTick(() => {
921
+ const inpSearch = refInpSearch.value;
922
+ if (inpSearch) {
923
+ inpSearch.focus();
1002
924
  }
1003
- dispatchEvent("load-error", { node, data: e }, new Event("load-error"));
1004
- }).finally(() => {
1005
- handleTreeToList();
1006
- handleData();
1007
925
  });
1008
- } else {
1009
- resolve();
1010
926
  }
1011
- });
1012
- };
1013
- const handleBaseTreeExpand = (nodeList, expanded) => {
1014
- const { treeExpandLazyLoadedMaps, treeExpandedMaps } = internalData;
1015
- const { nodeMaps } = internalData;
1016
- const childrenField = computeChildrenField.value;
1017
- const hasChildField = computeHasChildField.value;
1018
- const treeOpts = computeTreeOpts.value;
1019
- const { lazy, toggleMethod } = treeOpts;
1020
- const result = [];
1021
- let validNodes = toggleMethod ? nodeList.filter((node) => toggleMethod({ $cascader: $xeCascader, expanded, node })) : nodeList;
1022
- validNodes = validNodes.length ? [validNodes[validNodes.length - 1]] : [];
1023
- const nodeid = getNodeId(validNodes[0]);
1024
- const nodeItem = nodeMaps[nodeid];
1025
- if (nodeItem) {
1026
- nodeItem.items.forEach((item) => {
1027
- const itemNodeId = getNodeId(item);
1028
- if (treeExpandedMaps[itemNodeId]) {
1029
- delete treeExpandedMaps[itemNodeId];
927
+ };
928
+ const changeCurrentEvent = (evnt, node) => {
929
+ evnt.preventDefault();
930
+ const isChecked = true;
931
+ reactData.currentNode = node;
932
+ dispatchEvent("current-change", { node, checked: isChecked }, evnt);
933
+ };
934
+ const changeRadioEvent = (evnt, node, chunks, chunkIndex) => {
935
+ evnt.preventDefault();
936
+ evnt.stopPropagation();
937
+ const { currentItems } = reactData;
938
+ const { nodeMaps } = internalData;
939
+ const radioOpts = computeRadioOpts.value;
940
+ const childrenField = computeChildrenField.value;
941
+ const treeOpts = computeTreeOpts.value;
942
+ const { transform } = treeOpts;
943
+ const mapChildrenField = computeMapChildrenField.value;
944
+ const { checkMode, checkMethod } = radioOpts;
945
+ const nodeid = getNodeId(node);
946
+ const childList = node[transform ? mapChildrenField : childrenField];
947
+ const isExistChild = childList && childList.length > 0;
948
+ const nodeItem = nodeMaps[nodeid] || {};
949
+ const nLevel = nodeItem.level;
950
+ const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
951
+ if (isDisabled) {
952
+ return;
953
+ }
954
+ const value = nodeid;
955
+ reactData.selectRadioKey = value;
956
+ changeEvent(evnt, value, node);
957
+ if (!currentItems.includes(nodeid)) {
958
+ changeCurrentEvent(evnt, node);
959
+ toggleExpandEvent(evnt, node, chunks, chunkIndex);
960
+ }
961
+ hideOptionPanel(evnt);
962
+ };
963
+ const handleAsyncTreeExpandChilds = (node) => {
964
+ const checkboxOpts = computeCheckboxOpts.value;
965
+ const treeOpts = computeTreeOpts.value;
966
+ const { loadMethod } = treeOpts;
967
+ const { checkStrictly } = checkboxOpts;
968
+ return new Promise((resolve) => {
969
+ if (loadMethod) {
970
+ const { nodeMaps } = internalData;
971
+ const nodeid = getNodeId(node);
972
+ const nodeItem = nodeMaps[nodeid];
973
+ internalData.treeExpandLazyLoadedMaps[nodeid] = true;
974
+ Promise.resolve(loadMethod({ $cascader: $xeCascader, node })).then((childRecords) => {
975
+ const { treeExpandLazyLoadedMaps } = internalData;
976
+ nodeItem.treeLoaded = true;
977
+ if (treeExpandLazyLoadedMaps[nodeid]) {
978
+ treeExpandLazyLoadedMaps[nodeid] = false;
979
+ }
980
+ if (!XEUtils.isArray(childRecords)) {
981
+ childRecords = [];
982
+ }
983
+ if (childRecords) {
984
+ return $xeCascader.loadChildrenNode(node, childRecords).then((childRows) => {
985
+ const { treeExpandedMaps } = internalData;
986
+ if (childRows.length && !treeExpandedMaps[nodeid]) {
987
+ treeExpandedMaps[nodeid] = true;
988
+ }
989
+ reactData.updateExpandedFlag++;
990
+ if (!checkStrictly && $xeCascader.isCheckedByCheckboxNodeId(nodeid)) {
991
+ handleCheckedCheckboxNode(childRows, true);
992
+ }
993
+ dispatchEvent("load-success", { node, data: childRecords }, new Event("load-success"));
994
+ return nextTick();
995
+ });
996
+ } else {
997
+ dispatchEvent("load-success", { node, data: childRecords }, new Event("load-success"));
998
+ }
999
+ }).catch((e) => {
1000
+ const { treeExpandLazyLoadedMaps } = internalData;
1001
+ nodeItem.treeLoaded = false;
1002
+ if (treeExpandLazyLoadedMaps[nodeid]) {
1003
+ treeExpandLazyLoadedMaps[nodeid] = false;
1004
+ }
1005
+ dispatchEvent("load-error", { node, data: e }, new Event("load-error"));
1006
+ }).finally(() => {
1007
+ handleTreeToList();
1008
+ handleData();
1009
+ });
1010
+ } else {
1011
+ resolve();
1030
1012
  }
1031
1013
  });
1032
- }
1033
- const expandNodes = [];
1034
- if (expanded) {
1035
- validNodes.forEach((item) => {
1036
- const itemNodeId = getNodeId(item);
1037
- if (!treeExpandedMaps[itemNodeId]) {
1038
- const nodeItem2 = nodeMaps[itemNodeId];
1039
- const isLoad = lazy && item[hasChildField] && !nodeItem2.treeLoaded && !treeExpandLazyLoadedMaps[itemNodeId];
1040
- if (isLoad) {
1041
- result.push(handleAsyncTreeExpandChilds(item));
1042
- } else {
1043
- if (item[childrenField] && item[childrenField].length) {
1044
- treeExpandedMaps[itemNodeId] = true;
1045
- expandNodes.push(item);
1014
+ };
1015
+ const handleBaseTreeExpand = (nodeList, expanded) => {
1016
+ const { treeExpandLazyLoadedMaps, treeExpandedMaps } = internalData;
1017
+ const { nodeMaps } = internalData;
1018
+ const childrenField = computeChildrenField.value;
1019
+ const hasChildField = computeHasChildField.value;
1020
+ const treeOpts = computeTreeOpts.value;
1021
+ const { lazy, toggleMethod } = treeOpts;
1022
+ const result = [];
1023
+ let validNodes = toggleMethod ? nodeList.filter((node) => toggleMethod({ $cascader: $xeCascader, expanded, node })) : nodeList;
1024
+ validNodes = validNodes.length ? [validNodes[validNodes.length - 1]] : [];
1025
+ const nodeid = getNodeId(validNodes[0]);
1026
+ const nodeItem = nodeMaps[nodeid];
1027
+ if (nodeItem) {
1028
+ nodeItem.items.forEach((item) => {
1029
+ const itemNodeId = getNodeId(item);
1030
+ if (treeExpandedMaps[itemNodeId]) {
1031
+ delete treeExpandedMaps[itemNodeId];
1032
+ }
1033
+ });
1034
+ }
1035
+ const expandNodes = [];
1036
+ if (expanded) {
1037
+ validNodes.forEach((item) => {
1038
+ const itemNodeId = getNodeId(item);
1039
+ if (!treeExpandedMaps[itemNodeId]) {
1040
+ const nodeItem2 = nodeMaps[itemNodeId];
1041
+ const isLoad = lazy && item[hasChildField] && !nodeItem2.treeLoaded && !treeExpandLazyLoadedMaps[itemNodeId];
1042
+ if (isLoad) {
1043
+ result.push(handleAsyncTreeExpandChilds(item));
1044
+ } else {
1045
+ if (item[childrenField] && item[childrenField].length) {
1046
+ treeExpandedMaps[itemNodeId] = true;
1047
+ expandNodes.push(item);
1048
+ }
1046
1049
  }
1047
1050
  }
1048
- }
1049
- });
1050
- } else {
1051
- validNodes.forEach((item) => {
1052
- const itemNodeId = getNodeId(item);
1053
- if (treeExpandedMaps[itemNodeId]) {
1054
- delete treeExpandedMaps[itemNodeId];
1055
- expandNodes.push(item);
1056
- }
1057
- });
1058
- }
1059
- reactData.updateExpandedFlag++;
1060
- handleTreeToList();
1061
- handleData();
1062
- return Promise.all(result);
1063
- };
1064
- const toggleExpandEvent = (evnt, node, chunks, chunkIndex) => {
1065
- const { currentItems } = reactData;
1066
- const { treeExpandLazyLoadedMaps } = internalData;
1067
- const treeOpts = computeTreeOpts.value;
1068
- const { lazy } = treeOpts;
1069
- const stItems = currentItems.slice(0, chunkIndex);
1070
- const nodeid = getNodeId(node);
1071
- const expanded = true;
1072
- evnt.stopPropagation();
1073
- stItems.push(nodeid);
1074
- reactData.currentItems = stItems;
1075
- if (!lazy || !treeExpandLazyLoadedMaps[nodeid]) {
1076
- handleBaseTreeExpand([node], expanded);
1077
- }
1078
- setCurrentNode(node);
1079
- dispatchEvent("node-expand", { node, expanded }, evnt);
1080
- };
1081
- const updateCheckboxStatus = () => {
1082
- const { selectCheckboxMaps, indeterminateRowMaps, afterTreeList } = internalData;
1083
- const childrenField = computeChildrenField.value;
1084
- const mapChildrenField = computeMapChildrenField.value;
1085
- const checkboxOpts = computeCheckboxOpts.value;
1086
- const { checkStrictly, checkMethod } = checkboxOpts;
1087
- const treeOpts = computeTreeOpts.value;
1088
- const { transform } = treeOpts;
1089
- if (!checkStrictly) {
1090
- const childRowMaps = {};
1091
- const childRowList = [];
1092
- XEUtils.eachTree(
1093
- afterTreeList,
1094
- (node) => {
1095
- const nodeid = getNodeId(node);
1096
- const childList = node[transform ? mapChildrenField : childrenField];
1097
- if (childList && childList.length && !childRowMaps[nodeid]) {
1098
- childRowMaps[nodeid] = 1;
1099
- childRowList.unshift([node, nodeid, childList]);
1051
+ });
1052
+ } else {
1053
+ validNodes.forEach((item) => {
1054
+ const itemNodeId = getNodeId(item);
1055
+ if (treeExpandedMaps[itemNodeId]) {
1056
+ delete treeExpandedMaps[itemNodeId];
1057
+ expandNodes.push(item);
1100
1058
  }
1101
- },
1102
- { children: transform ? mapChildrenField : childrenField }
1103
- );
1104
- childRowList.forEach((vals) => {
1105
- const node = vals[0];
1106
- const nodeid = vals[1];
1107
- const childList = vals[2];
1108
- let sLen = 0;
1109
- let hLen = 0;
1110
- let vLen = 0;
1111
- const cLen = childList.length;
1112
- childList.forEach(
1113
- checkMethod ? (item) => {
1114
- const childNodeid = getNodeId(item);
1115
- const isSelect = selectCheckboxMaps[childNodeid];
1116
- if (checkMethod({ $cascader: $xeCascader, node: item })) {
1117
- if (isSelect) {
1118
- sLen++;
1119
- } else if (indeterminateRowMaps[childNodeid]) {
1120
- hLen++;
1059
+ });
1060
+ }
1061
+ reactData.updateExpandedFlag++;
1062
+ handleTreeToList();
1063
+ handleData();
1064
+ return Promise.all(result);
1065
+ };
1066
+ const toggleExpandEvent = (evnt, node, chunks, chunkIndex) => {
1067
+ const { currentItems } = reactData;
1068
+ const { treeExpandLazyLoadedMaps } = internalData;
1069
+ const treeOpts = computeTreeOpts.value;
1070
+ const { lazy } = treeOpts;
1071
+ const stItems = currentItems.slice(0, chunkIndex);
1072
+ const nodeid = getNodeId(node);
1073
+ const expanded = true;
1074
+ evnt.stopPropagation();
1075
+ stItems.push(nodeid);
1076
+ reactData.currentItems = stItems;
1077
+ if (!lazy || !treeExpandLazyLoadedMaps[nodeid]) {
1078
+ handleBaseTreeExpand([node], expanded);
1079
+ }
1080
+ setCurrentNode(node);
1081
+ dispatchEvent("node-expand", { node, expanded }, evnt);
1082
+ };
1083
+ const updateCheckboxStatus = () => {
1084
+ const { selectCheckboxMaps, indeterminateRowMaps, afterTreeList } = internalData;
1085
+ const childrenField = computeChildrenField.value;
1086
+ const mapChildrenField = computeMapChildrenField.value;
1087
+ const checkboxOpts = computeCheckboxOpts.value;
1088
+ const { checkStrictly, checkMethod } = checkboxOpts;
1089
+ const treeOpts = computeTreeOpts.value;
1090
+ const { transform } = treeOpts;
1091
+ if (!checkStrictly) {
1092
+ const childRowMaps = {};
1093
+ const childRowList = [];
1094
+ XEUtils.eachTree(
1095
+ afterTreeList,
1096
+ (node) => {
1097
+ const nodeid = getNodeId(node);
1098
+ const childList = node[transform ? mapChildrenField : childrenField];
1099
+ if (childList && childList.length && !childRowMaps[nodeid]) {
1100
+ childRowMaps[nodeid] = 1;
1101
+ childRowList.unshift([node, nodeid, childList]);
1102
+ }
1103
+ },
1104
+ { children: transform ? mapChildrenField : childrenField }
1105
+ );
1106
+ childRowList.forEach((vals) => {
1107
+ const node = vals[0];
1108
+ const nodeid = vals[1];
1109
+ const childList = vals[2];
1110
+ let sLen = 0;
1111
+ let hLen = 0;
1112
+ let vLen = 0;
1113
+ const cLen = childList.length;
1114
+ childList.forEach(
1115
+ checkMethod ? (item) => {
1116
+ const childNodeid = getNodeId(item);
1117
+ const isSelect = selectCheckboxMaps[childNodeid];
1118
+ if (checkMethod({ $cascader: $xeCascader, node: item })) {
1119
+ if (isSelect) {
1120
+ sLen++;
1121
+ } else if (indeterminateRowMaps[childNodeid]) {
1122
+ hLen++;
1123
+ }
1124
+ vLen++;
1125
+ } else {
1126
+ if (isSelect) {
1127
+ sLen++;
1128
+ } else if (indeterminateRowMaps[childNodeid]) {
1129
+ hLen++;
1130
+ }
1121
1131
  }
1122
- vLen++;
1123
- } else {
1132
+ } : (item) => {
1133
+ const childNodeid = getNodeId(item);
1134
+ const isSelect = selectCheckboxMaps[childNodeid];
1124
1135
  if (isSelect) {
1125
1136
  sLen++;
1126
1137
  } else if (indeterminateRowMaps[childNodeid]) {
1127
1138
  hLen++;
1128
1139
  }
1140
+ vLen++;
1129
1141
  }
1130
- } : (item) => {
1131
- const childNodeid = getNodeId(item);
1132
- const isSelect = selectCheckboxMaps[childNodeid];
1133
- if (isSelect) {
1134
- sLen++;
1135
- } else if (indeterminateRowMaps[childNodeid]) {
1136
- hLen++;
1137
- }
1138
- vLen++;
1139
- }
1140
- );
1141
- let isSelected = false;
1142
- if (cLen > 0) {
1143
- if (vLen > 0) {
1144
- isSelected = (sLen > 0 || hLen > 0) && sLen >= vLen;
1145
- } else {
1146
- if (sLen > 0 && sLen >= vLen) {
1147
- isSelected = true;
1148
- } else if (selectCheckboxMaps[nodeid]) {
1149
- isSelected = true;
1142
+ );
1143
+ let isSelected = false;
1144
+ if (cLen > 0) {
1145
+ if (vLen > 0) {
1146
+ isSelected = (sLen > 0 || hLen > 0) && sLen >= vLen;
1150
1147
  } else {
1151
- isSelected = false;
1152
- }
1153
- }
1154
- } else {
1155
- isSelected = selectCheckboxMaps[nodeid];
1156
- }
1157
- const halfSelect = !isSelected && (sLen > 0 || hLen > 0);
1158
- if (isSelected) {
1159
- selectCheckboxMaps[nodeid] = node;
1160
- if (indeterminateRowMaps[nodeid]) {
1161
- delete indeterminateRowMaps[nodeid];
1162
- }
1163
- } else {
1164
- if (selectCheckboxMaps[nodeid]) {
1165
- delete selectCheckboxMaps[nodeid];
1166
- }
1167
- if (halfSelect) {
1168
- indeterminateRowMaps[nodeid] = node;
1169
- } else {
1170
- if (indeterminateRowMaps[nodeid]) {
1171
- delete indeterminateRowMaps[nodeid];
1148
+ if (sLen > 0 && sLen >= vLen) {
1149
+ isSelected = true;
1150
+ } else if (selectCheckboxMaps[nodeid]) {
1151
+ isSelected = true;
1152
+ } else {
1153
+ isSelected = false;
1154
+ }
1172
1155
  }
1173
- }
1174
- }
1175
- });
1176
- reactData.updateCheckboxFlag++;
1177
- }
1178
- };
1179
- const changeCheckboxEvent = (evnt, node, chunks, chunkIndex) => {
1180
- evnt.preventDefault();
1181
- evnt.stopPropagation();
1182
- const { currentItems } = reactData;
1183
- const { selectCheckboxMaps, nodeMaps } = internalData;
1184
- const childrenField = computeChildrenField.value;
1185
- const mapChildrenField = computeMapChildrenField.value;
1186
- const checkboxOpts = computeCheckboxOpts.value;
1187
- const { checkStrictly, checkMode, checkMethod } = checkboxOpts;
1188
- const treeOpts = computeTreeOpts.value;
1189
- const { transform } = treeOpts;
1190
- const nodeid = getNodeId(node);
1191
- const childList = node[transform ? mapChildrenField : childrenField];
1192
- const isExistChild = childList && childList.length > 0;
1193
- const nodeItem = nodeMaps[nodeid] || {};
1194
- const nLevel = nodeItem.level;
1195
- const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1196
- if (isDisabled) {
1197
- return;
1198
- }
1199
- let isChecked = false;
1200
- if (selectCheckboxMaps[nodeid]) {
1201
- delete selectCheckboxMaps[nodeid];
1202
- } else {
1203
- isChecked = true;
1204
- selectCheckboxMaps[nodeid] = node;
1205
- }
1206
- if (!checkStrictly) {
1207
- XEUtils.eachTree(
1208
- childList,
1209
- (childNode) => {
1210
- const childNodeid = getNodeId(childNode);
1211
- if (isChecked) {
1212
- if (!selectCheckboxMaps[childNodeid]) {
1213
- selectCheckboxMaps[childNodeid] = childNode;
1156
+ } else {
1157
+ isSelected = selectCheckboxMaps[nodeid];
1158
+ }
1159
+ const halfSelect = !isSelected && (sLen > 0 || hLen > 0);
1160
+ if (isSelected) {
1161
+ selectCheckboxMaps[nodeid] = node;
1162
+ if (indeterminateRowMaps[nodeid]) {
1163
+ delete indeterminateRowMaps[nodeid];
1214
1164
  }
1215
1165
  } else {
1216
- if (selectCheckboxMaps[childNodeid]) {
1217
- delete selectCheckboxMaps[childNodeid];
1166
+ if (selectCheckboxMaps[nodeid]) {
1167
+ delete selectCheckboxMaps[nodeid];
1168
+ }
1169
+ if (halfSelect) {
1170
+ indeterminateRowMaps[nodeid] = node;
1171
+ } else {
1172
+ if (indeterminateRowMaps[nodeid]) {
1173
+ delete indeterminateRowMaps[nodeid];
1174
+ }
1218
1175
  }
1219
1176
  }
1220
- },
1221
- { children: transform ? mapChildrenField : childrenField }
1222
- );
1223
- }
1224
- selectCheckboxMaps[nodeid] = node;
1225
- reactData.updateCheckboxFlag++;
1226
- updateCheckboxStatus();
1227
- const nodeids = XEUtils.keys(selectCheckboxMaps);
1228
- const value = nodeids;
1229
- changeEvent(evnt, value, node);
1230
- if (!currentItems.includes(nodeid)) {
1231
- changeCurrentEvent(evnt, node);
1232
- toggleExpandEvent(evnt, node, chunks, chunkIndex);
1233
- }
1234
- };
1235
- const handleNodeClickEvent = (evnt, node, chunks, chunkIndex) => {
1236
- const { multiple, showCheckbox, showRadio } = props;
1237
- const treeOpts = computeTreeOpts.value;
1238
- const radioOpts = computeRadioOpts.value;
1239
- const checkboxOpts = computeCheckboxOpts.value;
1240
- const childrenField = computeChildrenField.value;
1241
- const mapChildrenField = computeMapChildrenField.value;
1242
- const { transform, trigger } = treeOpts;
1243
- const childList = node[transform ? mapChildrenField : childrenField];
1244
- let triggerCurrent = false;
1245
- let triggerRadio = false;
1246
- let triggerCheckbox = false;
1247
- let triggerExpand = false;
1248
- triggerCurrent = true;
1249
- changeCurrentEvent(evnt, node);
1250
- if (trigger !== "icon") {
1251
- triggerExpand = true;
1252
- toggleExpandEvent(evnt, node, chunks, chunkIndex);
1253
- }
1254
- if (multiple) {
1255
- if (checkboxOpts.trigger === "node" || !showCheckbox && (!childList || !childList.length)) {
1256
- triggerCheckbox = true;
1257
- changeCheckboxEvent(evnt, node, chunks, chunkIndex);
1177
+ });
1178
+ reactData.updateCheckboxFlag++;
1258
1179
  }
1259
- } else {
1260
- if (radioOpts.trigger === "node" || !showRadio && (!childList || !childList.length)) {
1261
- triggerRadio = true;
1262
- changeRadioEvent(evnt, node, chunks, chunkIndex);
1180
+ };
1181
+ const changeCheckboxEvent = (evnt, node, chunks, chunkIndex) => {
1182
+ evnt.preventDefault();
1183
+ evnt.stopPropagation();
1184
+ const { currentItems } = reactData;
1185
+ const { selectCheckboxMaps, nodeMaps } = internalData;
1186
+ const childrenField = computeChildrenField.value;
1187
+ const mapChildrenField = computeMapChildrenField.value;
1188
+ const checkboxOpts = computeCheckboxOpts.value;
1189
+ const { checkStrictly, checkMode, checkMethod } = checkboxOpts;
1190
+ const treeOpts = computeTreeOpts.value;
1191
+ const { transform } = treeOpts;
1192
+ const nodeid = getNodeId(node);
1193
+ const childList = node[transform ? mapChildrenField : childrenField];
1194
+ const isExistChild = childList && childList.length > 0;
1195
+ const nodeItem = nodeMaps[nodeid] || {};
1196
+ const nLevel = nodeItem.level;
1197
+ const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1198
+ if (isDisabled) {
1199
+ return;
1263
1200
  }
1264
- }
1265
- dispatchEvent("node-click", { node, triggerCurrent, triggerRadio, triggerCheckbox, triggerExpand }, evnt);
1266
- };
1267
- const focusEvent = (evnt) => {
1268
- const isDisabled = computeIsDisabled.value;
1269
- if (!isDisabled) {
1270
- if (!reactData.visiblePanel) {
1271
- reactData.triggerFocusPanel = true;
1272
- showOptionPanel(evnt);
1273
- setTimeout(() => {
1274
- reactData.triggerFocusPanel = false;
1275
- }, 150);
1201
+ let isChecked = false;
1202
+ if (selectCheckboxMaps[nodeid]) {
1203
+ delete selectCheckboxMaps[nodeid];
1204
+ } else {
1205
+ isChecked = true;
1206
+ selectCheckboxMaps[nodeid] = node;
1276
1207
  }
1277
- }
1278
- dispatchEvent("focus", {}, evnt);
1279
- };
1280
- const clickEvent = (evnt) => {
1281
- evnt.preventDefault();
1282
- if (reactData.triggerFocusPanel) {
1283
- reactData.triggerFocusPanel = false;
1284
- } else {
1285
- if (!reactData.visiblePanel) {
1286
- showOptionPanel(evnt);
1208
+ if (!checkStrictly) {
1209
+ XEUtils.eachTree(
1210
+ childList,
1211
+ (childNode) => {
1212
+ const childNodeid = getNodeId(childNode);
1213
+ if (isChecked) {
1214
+ if (!selectCheckboxMaps[childNodeid]) {
1215
+ selectCheckboxMaps[childNodeid] = childNode;
1216
+ }
1217
+ } else {
1218
+ if (selectCheckboxMaps[childNodeid]) {
1219
+ delete selectCheckboxMaps[childNodeid];
1220
+ }
1221
+ }
1222
+ },
1223
+ { children: transform ? mapChildrenField : childrenField }
1224
+ );
1287
1225
  }
1288
- }
1289
- dispatchEvent("click", {}, evnt);
1290
- };
1291
- const blurEvent = (evnt) => {
1292
- reactData.isActivated = false;
1293
- dispatchEvent("blur", {}, evnt);
1294
- };
1295
- const modelSearchEvent = (value) => {
1296
- reactData.searchValue = value;
1297
- triggerSearchEvent(new Event("filter"));
1298
- };
1299
- const handleSearchEvent = () => {
1300
- const { modelValue, remote } = props;
1301
- const { searchValue } = reactData;
1302
- const remoteOpts = computeRemoteOpts.value;
1303
- const queryMethod = remoteOpts.queryMethod;
1304
- if (remote && queryMethod && remoteOpts.enabled) {
1305
- reactData.searchLoading = true;
1306
- Promise.resolve(queryMethod({ $cascader: $xeCascader, searchValue, value: modelValue })).then(() => nextTick()).catch(() => nextTick()).finally(() => {
1307
- reactData.searchLoading = false;
1308
- });
1309
- }
1310
- };
1311
- const togglePanelEvent = (params) => {
1312
- const { $event } = params;
1313
- $event.preventDefault();
1314
- if (reactData.triggerFocusPanel) {
1315
- reactData.triggerFocusPanel = false;
1316
- } else {
1317
- if (reactData.visiblePanel) {
1318
- hideOptionPanel($event);
1319
- } else {
1320
- showOptionPanel($event);
1226
+ selectCheckboxMaps[nodeid] = node;
1227
+ reactData.updateCheckboxFlag++;
1228
+ updateCheckboxStatus();
1229
+ const nodeids = XEUtils.keys(selectCheckboxMaps);
1230
+ const value = nodeids;
1231
+ changeEvent(evnt, value, node);
1232
+ if (!currentItems.includes(nodeid)) {
1233
+ changeCurrentEvent(evnt, node);
1234
+ toggleExpandEvent(evnt, node, chunks, chunkIndex);
1321
1235
  }
1322
- }
1323
- };
1324
- const cascaderPrivateMethods = {
1325
- isCheckedByCheckboxNodeId,
1326
- /**
1327
- * 用于树结构,给行数据加载子节点
1328
- */
1329
- loadChildrenNode(node, childRecords) {
1330
- const { separator } = props;
1331
- const { nodeMaps } = internalData;
1236
+ };
1237
+ const handleNodeClickEvent = (evnt, node, chunks, chunkIndex) => {
1238
+ const { multiple, showCheckbox, showRadio } = props;
1332
1239
  const treeOpts = computeTreeOpts.value;
1333
- const labelField = computeLabelField.value;
1334
- const { lazy, transform } = treeOpts;
1335
- if (!lazy) {
1336
- return Promise.resolve([]);
1337
- }
1240
+ const radioOpts = computeRadioOpts.value;
1241
+ const checkboxOpts = computeCheckboxOpts.value;
1338
1242
  const childrenField = computeChildrenField.value;
1339
1243
  const mapChildrenField = computeMapChildrenField.value;
1340
- const parentNodeItem = nodeMaps[getNodeId(node)];
1341
- const parentLevel = parentNodeItem ? parentNodeItem.level : 0;
1342
- const parentNodes = parentNodeItem ? parentNodeItem.nodes : [];
1343
- return createNode(childRecords).then((nodeList) => {
1344
- XEUtils.eachTree(
1345
- nodeList,
1346
- (childRow, index, items, path, parent, nodes) => {
1347
- const itemNodeId = getNodeId(childRow);
1348
- nodeMaps[itemNodeId] = {
1349
- item: childRow,
1350
- index: -1,
1351
- $index: -1,
1352
- _index: -1,
1353
- items,
1354
- parent: parent || parentNodeItem.item,
1355
- nodes: parentNodes.concat(nodes),
1356
- level: parentLevel + nodes.length,
1357
- treeIndex: -1,
1358
- lineCount: 0,
1359
- treeLoaded: false,
1360
- fullLabel: nodes.map((item) => item[labelField]).join(separator || " / ")
1361
- };
1362
- },
1363
- { children: childrenField }
1364
- );
1365
- node[childrenField] = nodeList;
1366
- if (transform) {
1367
- node[mapChildrenField] = nodeList;
1244
+ const { transform, trigger } = treeOpts;
1245
+ const childList = node[transform ? mapChildrenField : childrenField];
1246
+ let triggerCurrent = false;
1247
+ let triggerRadio = false;
1248
+ let triggerCheckbox = false;
1249
+ let triggerExpand = false;
1250
+ triggerCurrent = true;
1251
+ changeCurrentEvent(evnt, node);
1252
+ if (trigger !== "icon") {
1253
+ triggerExpand = true;
1254
+ toggleExpandEvent(evnt, node, chunks, chunkIndex);
1255
+ }
1256
+ if (multiple) {
1257
+ if (checkboxOpts.trigger === "node" || !showCheckbox && (!childList || !childList.length)) {
1258
+ triggerCheckbox = true;
1259
+ changeCheckboxEvent(evnt, node, chunks, chunkIndex);
1260
+ }
1261
+ } else {
1262
+ if (radioOpts.trigger === "node" || !showRadio && (!childList || !childList.length)) {
1263
+ triggerRadio = true;
1264
+ changeRadioEvent(evnt, node, chunks, chunkIndex);
1368
1265
  }
1369
- updateAfterDataIndex();
1370
- return nodeList;
1371
- });
1372
- }
1373
- };
1374
- Object.assign($xeCascader, cascaderMethods, cascaderPrivateMethods);
1375
- const handleVisibleOrCheckMode = (mode, isExistChild, nLevel) => {
1376
- if (mode) {
1377
- if (mode === "first") {
1378
- return !nLevel;
1379
1266
  }
1380
- if (mode === "last") {
1381
- return !isExistChild;
1267
+ dispatchEvent("node-click", { node, triggerCurrent, triggerRadio, triggerCheckbox, triggerExpand }, evnt);
1268
+ };
1269
+ const focusEvent = (evnt) => {
1270
+ const isDisabled = computeIsDisabled.value;
1271
+ if (!isDisabled) {
1272
+ if (!reactData.visiblePanel) {
1273
+ reactData.triggerFocusPanel = true;
1274
+ showOptionPanel(evnt);
1275
+ setTimeout(() => {
1276
+ reactData.triggerFocusPanel = false;
1277
+ }, 150);
1278
+ }
1382
1279
  }
1383
- }
1384
- return true;
1385
- };
1386
- const renderRadio = (node, isExistChild, nLevel, isChecked, chunks, chunkIndex) => {
1387
- const { showRadio } = props;
1388
- const radioOpts = computeRadioOpts.value;
1389
- const { checkMode, checkMethod, visibleMode, visibleMethod } = radioOpts;
1390
- const isVisible = visibleMethod ? visibleMethod({ $cascader: $xeCascader, node }) : handleVisibleOrCheckMode(visibleMode, isExistChild, nLevel);
1391
- if (showRadio && isVisible) {
1392
- const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1393
- return h(
1394
- "div",
1395
- {
1396
- class: [
1397
- "vxe-tree--radio-option",
1398
- {
1399
- "is--checked": isChecked,
1400
- "is--disabled": isDisabled
1280
+ dispatchEvent("focus", {}, evnt);
1281
+ };
1282
+ const clickEvent = (evnt) => {
1283
+ evnt.preventDefault();
1284
+ if (reactData.triggerFocusPanel) {
1285
+ reactData.triggerFocusPanel = false;
1286
+ } else {
1287
+ if (!reactData.visiblePanel) {
1288
+ showOptionPanel(evnt);
1289
+ }
1290
+ }
1291
+ dispatchEvent("click", {}, evnt);
1292
+ };
1293
+ const blurEvent = (evnt) => {
1294
+ reactData.isActivated = false;
1295
+ dispatchEvent("blur", {}, evnt);
1296
+ };
1297
+ const modelSearchEvent = (value) => {
1298
+ reactData.searchValue = value;
1299
+ triggerSearchEvent(new Event("filter"));
1300
+ };
1301
+ const handleSearchEvent = () => {
1302
+ const { modelValue, remote } = props;
1303
+ const { searchValue } = reactData;
1304
+ const remoteOpts = computeRemoteOpts.value;
1305
+ const queryMethod = remoteOpts.queryMethod;
1306
+ if (remote && queryMethod && remoteOpts.enabled) {
1307
+ reactData.searchLoading = true;
1308
+ Promise.resolve(queryMethod({ $cascader: $xeCascader, searchValue, value: modelValue })).then(() => nextTick()).catch(() => nextTick()).finally(() => {
1309
+ reactData.searchLoading = false;
1310
+ });
1311
+ }
1312
+ };
1313
+ const togglePanelEvent = (params) => {
1314
+ const { $event } = params;
1315
+ $event.preventDefault();
1316
+ if (reactData.triggerFocusPanel) {
1317
+ reactData.triggerFocusPanel = false;
1318
+ } else {
1319
+ if (reactData.visiblePanel) {
1320
+ hideOptionPanel($event);
1321
+ } else {
1322
+ showOptionPanel($event);
1323
+ }
1324
+ }
1325
+ };
1326
+ const cascaderPrivateMethods = {
1327
+ isCheckedByCheckboxNodeId,
1328
+ /**
1329
+ * 用于树结构,给行数据加载子节点
1330
+ */
1331
+ loadChildrenNode(node, childRecords) {
1332
+ const { separator } = props;
1333
+ const { nodeMaps } = internalData;
1334
+ const treeOpts = computeTreeOpts.value;
1335
+ const labelField = computeLabelField.value;
1336
+ const { lazy, transform } = treeOpts;
1337
+ if (!lazy) {
1338
+ return Promise.resolve([]);
1339
+ }
1340
+ const childrenField = computeChildrenField.value;
1341
+ const mapChildrenField = computeMapChildrenField.value;
1342
+ const parentNodeItem = nodeMaps[getNodeId(node)];
1343
+ const parentLevel = parentNodeItem ? parentNodeItem.level : 0;
1344
+ const parentNodes = parentNodeItem ? parentNodeItem.nodes : [];
1345
+ return createNode(childRecords).then((nodeList) => {
1346
+ XEUtils.eachTree(
1347
+ nodeList,
1348
+ (childRow, index, items, path, parent, nodes) => {
1349
+ const itemNodeId = getNodeId(childRow);
1350
+ nodeMaps[itemNodeId] = {
1351
+ item: childRow,
1352
+ index: -1,
1353
+ $index: -1,
1354
+ _index: -1,
1355
+ items,
1356
+ parent: parent || parentNodeItem.item,
1357
+ nodes: parentNodes.concat(nodes),
1358
+ level: parentLevel + nodes.length,
1359
+ treeIndex: -1,
1360
+ lineCount: 0,
1361
+ treeLoaded: false,
1362
+ fullLabel: nodes.map((item) => item[labelField]).join(separator || " / ")
1363
+ };
1364
+ },
1365
+ { children: childrenField }
1366
+ );
1367
+ node[childrenField] = nodeList;
1368
+ if (transform) {
1369
+ node[mapChildrenField] = nodeList;
1370
+ }
1371
+ updateAfterDataIndex();
1372
+ return nodeList;
1373
+ });
1374
+ }
1375
+ };
1376
+ Object.assign($xeCascader, cascaderMethods, cascaderPrivateMethods);
1377
+ const handleVisibleOrCheckMode = (mode, isExistChild, nLevel) => {
1378
+ if (mode) {
1379
+ if (mode === "first") {
1380
+ return !nLevel;
1381
+ }
1382
+ if (mode === "last") {
1383
+ return !isExistChild;
1384
+ }
1385
+ }
1386
+ return true;
1387
+ };
1388
+ const renderRadio = (node, isExistChild, nLevel, isChecked, chunks, chunkIndex) => {
1389
+ const { showRadio } = props;
1390
+ const radioOpts = computeRadioOpts.value;
1391
+ const { checkMode, checkMethod, visibleMode, visibleMethod } = radioOpts;
1392
+ const isVisible = visibleMethod ? visibleMethod({ $cascader: $xeCascader, node }) : handleVisibleOrCheckMode(visibleMode, isExistChild, nLevel);
1393
+ if (showRadio && isVisible) {
1394
+ const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1395
+ return h(
1396
+ "div",
1397
+ {
1398
+ class: [
1399
+ "vxe-tree--radio-option",
1400
+ {
1401
+ "is--checked": isChecked,
1402
+ "is--disabled": isDisabled
1403
+ }
1404
+ ],
1405
+ onClick: (evnt) => {
1406
+ if (!isDisabled) {
1407
+ changeRadioEvent(evnt, node, chunks, chunkIndex);
1408
+ }
1401
1409
  }
1402
- ],
1403
- onClick: (evnt) => {
1404
- if (!isDisabled) {
1405
- changeRadioEvent(evnt, node, chunks, chunkIndex);
1410
+ },
1411
+ [
1412
+ h("span", {
1413
+ class: ["vxe-radio--icon", isChecked ? getIcon().RADIO_CHECKED : isDisabled ? getIcon().RADIO_DISABLED_UNCHECKED : getIcon().RADIO_UNCHECKED]
1414
+ })
1415
+ ]
1416
+ );
1417
+ }
1418
+ return renderEmptyElement($xeCascader);
1419
+ };
1420
+ const renderCheckbox = (node, isExistChild, nLevel, isChecked, isIndeterminate, chunks, chunkIndex) => {
1421
+ const { showCheckbox } = props;
1422
+ const checkboxOpts = computeCheckboxOpts.value;
1423
+ const { checkMode, checkMethod, visibleMode, visibleMethod } = checkboxOpts;
1424
+ const isVisible = visibleMethod ? visibleMethod({ $cascader: $xeCascader, node }) : handleVisibleOrCheckMode(visibleMode, isExistChild, nLevel);
1425
+ if (showCheckbox && isVisible) {
1426
+ const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1427
+ return h(
1428
+ "div",
1429
+ {
1430
+ class: [
1431
+ "vxe-cascader--checkbox-option",
1432
+ {
1433
+ "is--checked": isChecked,
1434
+ "is--indeterminate": isIndeterminate,
1435
+ "is--disabled": isDisabled
1436
+ }
1437
+ ],
1438
+ onClick: (evnt) => {
1439
+ if (!isDisabled) {
1440
+ changeCheckboxEvent(evnt, node, chunks, chunkIndex);
1441
+ }
1406
1442
  }
1407
- }
1408
- },
1409
- [
1410
- h("span", {
1411
- class: ["vxe-radio--icon", isChecked ? getIcon().RADIO_CHECKED : isDisabled ? getIcon().RADIO_DISABLED_UNCHECKED : getIcon().RADIO_UNCHECKED]
1412
- })
1413
- ]
1414
- );
1415
- }
1416
- return renderEmptyElement($xeCascader);
1417
- };
1418
- const renderCheckbox = (node, isExistChild, nLevel, isChecked, isIndeterminate, chunks, chunkIndex) => {
1419
- const { showCheckbox } = props;
1420
- const checkboxOpts = computeCheckboxOpts.value;
1421
- const { checkMode, checkMethod, visibleMode, visibleMethod } = checkboxOpts;
1422
- const isVisible = visibleMethod ? visibleMethod({ $cascader: $xeCascader, node }) : handleVisibleOrCheckMode(visibleMode, isExistChild, nLevel);
1423
- if (showCheckbox && isVisible) {
1424
- const isDisabled = checkMethod ? !checkMethod({ $cascader: $xeCascader, node }) : !handleVisibleOrCheckMode(checkMode, isExistChild, nLevel);
1443
+ },
1444
+ [
1445
+ h("span", {
1446
+ class: ["vxe-checkbox--icon", isIndeterminate ? getIcon().CHECKBOX_INDETERMINATE : isChecked ? getIcon().CHECKBOX_CHECKED : isDisabled ? getIcon().CHECKBOX_DISABLED_UNCHECKED : getIcon().CHECKBOX_UNCHECKED]
1447
+ })
1448
+ ]
1449
+ );
1450
+ }
1451
+ return renderEmptyElement($xeCascader);
1452
+ };
1453
+ const renderNode = (node, nodeid, nodeIndex, chunks, chunkIndex) => {
1454
+ const { multiple } = props;
1455
+ const { currentNode, selectRadioKey, updateCheckboxFlag, updateExpandedFlag } = reactData;
1456
+ const { nodeMaps, selectCheckboxMaps, indeterminateRowMaps, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData;
1457
+ const treeOpts = computeTreeOpts.value;
1458
+ const { lazy, transform, iconLoaded, iconOpen, iconClose } = treeOpts;
1459
+ const childrenField = computeChildrenField.value;
1460
+ const mapChildrenField = computeMapChildrenField.value;
1461
+ const labelField = computeLabelField.value;
1462
+ const hasChildField = computeHasChildField.value;
1463
+ const childList = node[transform ? mapChildrenField : childrenField];
1464
+ const isExistChild = childList && childList.length > 0;
1465
+ const iconSlot = slots.icon;
1466
+ const titleSlot = slots.title;
1467
+ const isExpand = updateExpandedFlag && treeExpandedMaps[nodeid];
1468
+ const nodeItem = nodeMaps[nodeid] || {};
1469
+ const nodeTitle = node[labelField];
1470
+ const nLevel = nodeItem.level;
1471
+ let isRadioChecked = false;
1472
+ if (!multiple) {
1473
+ isRadioChecked = nodeid === selectRadioKey;
1474
+ }
1475
+ let isCheckboxChecked = false;
1476
+ let isIndeterminate = false;
1477
+ if (multiple) {
1478
+ isCheckboxChecked = !!(updateCheckboxFlag && selectCheckboxMaps[nodeid]);
1479
+ isIndeterminate = !!(updateCheckboxFlag && indeterminateRowMaps[nodeid]);
1480
+ }
1481
+ let hasLazyChilds = false;
1482
+ let isLazyLoading = false;
1483
+ let isLazyLoaded = false;
1484
+ if (lazy) {
1485
+ isLazyLoading = !!treeExpandLazyLoadedMaps[nodeid];
1486
+ hasLazyChilds = node[hasChildField];
1487
+ isLazyLoaded = !!nodeItem.treeLoaded;
1488
+ }
1489
+ const nParams = { node };
1425
1490
  return h(
1426
1491
  "div",
1427
1492
  {
1493
+ key: `${chunkIndex}_${nodeIndex}`,
1428
1494
  class: [
1429
- "vxe-cascader--checkbox-option",
1495
+ "vxe-cascader-chunk--node-item",
1430
1496
  {
1431
- "is--checked": isChecked,
1432
- "is--indeterminate": isIndeterminate,
1433
- "is--disabled": isDisabled
1497
+ "is--current": currentNode && (currentNode === node || getNodeId(currentNode) === nodeid),
1498
+ "is-radio--checked": isRadioChecked,
1499
+ "is-checkbox--checked": isCheckboxChecked,
1500
+ "is-checkbox--indeterminate": isIndeterminate,
1501
+ "is--expand": isExpand
1434
1502
  }
1435
1503
  ],
1436
- onClick: (evnt) => {
1437
- if (!isDisabled) {
1438
- changeCheckboxEvent(evnt, node, chunks, chunkIndex);
1504
+ title: nodeTitle,
1505
+ onMousedown: (evnt) => {
1506
+ const isLeftBtn = evnt.button === 0;
1507
+ if (isLeftBtn) {
1508
+ evnt.stopPropagation();
1439
1509
  }
1510
+ },
1511
+ onClick(evnt) {
1512
+ handleNodeClickEvent(evnt, node, chunks, chunkIndex);
1440
1513
  }
1441
1514
  },
1442
1515
  [
1443
- h("span", {
1444
- class: ["vxe-checkbox--icon", isIndeterminate ? getIcon().CHECKBOX_INDETERMINATE : isChecked ? getIcon().CHECKBOX_CHECKED : isDisabled ? getIcon().CHECKBOX_DISABLED_UNCHECKED : getIcon().CHECKBOX_UNCHECKED]
1445
- })
1516
+ multiple ? renderCheckbox(node, isExistChild, nLevel, isCheckboxChecked, isIndeterminate, chunks, chunkIndex) : renderRadio(node, isExistChild, nLevel, isRadioChecked, chunks, chunkIndex),
1517
+ h(
1518
+ "div",
1519
+ {
1520
+ class: "vxe-cascader-chunk--node-item-inner"
1521
+ },
1522
+ [
1523
+ h(
1524
+ "div",
1525
+ {
1526
+ class: "vxe-cascader-chunk--node-item-title"
1527
+ },
1528
+ titleSlot ? getSlotVNs(titleSlot(nParams)) : nodeTitle
1529
+ )
1530
+ ]
1531
+ ),
1532
+ treeOpts.showIcon && (lazy ? isLazyLoaded ? isExistChild : hasLazyChilds : isExistChild) ? h(
1533
+ "div",
1534
+ {
1535
+ class: "vxe-cascader-chunk--node-item-switcher"
1536
+ },
1537
+ [
1538
+ [
1539
+ h(
1540
+ "div",
1541
+ {
1542
+ class: "vxe-cascader--node-item-icon",
1543
+ onClick(evnt) {
1544
+ if (treeOpts.trigger === "icon") {
1545
+ toggleExpandEvent(evnt, node, chunks, chunkIndex);
1546
+ }
1547
+ }
1548
+ },
1549
+ iconSlot ? getSlotVNs(iconSlot(nParams)) : [
1550
+ h("i", {
1551
+ class: isLazyLoading ? iconLoaded || getIcon().CASCADER_NODE_LOADED : isExpand ? iconOpen || getIcon().CASCADER_NODE_OPEN : iconClose || getIcon().CASCADER_NODE_CLOSE
1552
+ })
1553
+ ]
1554
+ )
1555
+ ]
1556
+ ]
1557
+ ) : renderEmptyElement($xeCascader)
1446
1558
  ]
1447
1559
  );
1448
- }
1449
- return renderEmptyElement($xeCascader);
1450
- };
1451
- const renderNode = (node, nodeid, nodeIndex, chunks, chunkIndex) => {
1452
- const { multiple } = props;
1453
- const { currentNode, selectRadioKey, updateCheckboxFlag, updateExpandedFlag } = reactData;
1454
- const { nodeMaps, selectCheckboxMaps, indeterminateRowMaps, treeExpandedMaps, treeExpandLazyLoadedMaps } = internalData;
1455
- const treeOpts = computeTreeOpts.value;
1456
- const { lazy, transform, iconLoaded, iconOpen, iconClose } = treeOpts;
1457
- const childrenField = computeChildrenField.value;
1458
- const mapChildrenField = computeMapChildrenField.value;
1459
- const labelField = computeLabelField.value;
1460
- const hasChildField = computeHasChildField.value;
1461
- const childList = node[transform ? mapChildrenField : childrenField];
1462
- const isExistChild = childList && childList.length > 0;
1463
- const iconSlot = slots.icon;
1464
- const titleSlot = slots.title;
1465
- const isExpand = updateExpandedFlag && treeExpandedMaps[nodeid];
1466
- const nodeItem = nodeMaps[nodeid] || {};
1467
- const nodeTitle = node[labelField];
1468
- const nLevel = nodeItem.level;
1469
- let isRadioChecked = false;
1470
- if (!multiple) {
1471
- isRadioChecked = nodeid === selectRadioKey;
1472
- }
1473
- let isCheckboxChecked = false;
1474
- let isIndeterminate = false;
1475
- if (multiple) {
1476
- isCheckboxChecked = !!(updateCheckboxFlag && selectCheckboxMaps[nodeid]);
1477
- isIndeterminate = !!(updateCheckboxFlag && indeterminateRowMaps[nodeid]);
1478
- }
1479
- let hasLazyChilds = false;
1480
- let isLazyLoading = false;
1481
- let isLazyLoaded = false;
1482
- if (lazy) {
1483
- isLazyLoading = !!treeExpandLazyLoadedMaps[nodeid];
1484
- hasLazyChilds = node[hasChildField];
1485
- isLazyLoaded = !!nodeItem.treeLoaded;
1486
- }
1487
- const nParams = { node };
1488
- return h(
1489
- "div",
1490
- {
1491
- key: `${chunkIndex}_${nodeIndex}`,
1492
- class: [
1493
- "vxe-cascader-chunk--node-item",
1494
- {
1495
- "is--current": currentNode && (currentNode === node || getNodeId(currentNode) === nodeid),
1496
- "is-radio--checked": isRadioChecked,
1497
- "is-checkbox--checked": isCheckboxChecked,
1498
- "is-checkbox--indeterminate": isIndeterminate,
1499
- "is--expand": isExpand
1500
- }
1501
- ],
1502
- title: nodeTitle,
1503
- onMousedown: (evnt) => {
1504
- const isLeftBtn = evnt.button === 0;
1505
- if (isLeftBtn) {
1506
- evnt.stopPropagation();
1507
- }
1508
- },
1509
- onClick(evnt) {
1510
- handleNodeClickEvent(evnt, node, chunks, chunkIndex);
1511
- }
1512
- },
1513
- [
1514
- multiple ? renderCheckbox(node, isExistChild, nLevel, isCheckboxChecked, isIndeterminate, chunks, chunkIndex) : renderRadio(node, isExistChild, nLevel, isRadioChecked, chunks, chunkIndex),
1515
- h(
1560
+ };
1561
+ const renderVN = () => {
1562
+ const { className, modelValue, multiple, loading, filterable, showTotalButton, showCheckedButton, showClearButton, showCloseButton } = props;
1563
+ const { initialized, isActivated, isAniVisible, visiblePanel, searchValue, currentCunkList } = reactData;
1564
+ const { listVirtualYOpts } = internalData;
1565
+ const vSize = computeSize.value;
1566
+ const isDisabled = computeIsDisabled.value;
1567
+ const selectLabel = computeSelectLabel.value;
1568
+ const btnTransfer = computeBtnTransfer.value;
1569
+ const formReadonly = computeFormReadonly.value;
1570
+ const popupWrapperStyle = computePopupWrapperStyle.value;
1571
+ const headerSlot = slots.header;
1572
+ const footerSlot = slots.footer;
1573
+ const prefixSlot = slots.prefix;
1574
+ const popupOpts = computePopupOpts.value;
1575
+ const popupClassName = popupOpts.className;
1576
+ if (formReadonly) {
1577
+ return h(
1516
1578
  "div",
1517
1579
  {
1518
- class: "vxe-cascader-chunk--node-item-inner"
1580
+ ref: refElem,
1581
+ class: ["vxe-cascader--readonly", className]
1519
1582
  },
1520
1583
  [
1521
1584
  h(
1522
- "div",
1585
+ "span",
1523
1586
  {
1524
- class: "vxe-cascader-chunk--node-item-title"
1587
+ class: "vxe-cascader-label"
1525
1588
  },
1526
- titleSlot ? getSlotVNs(titleSlot(nParams)) : nodeTitle
1589
+ selectLabel
1527
1590
  )
1528
1591
  ]
1529
- ),
1530
- treeOpts.showIcon && (lazy ? isLazyLoaded ? isExistChild : hasLazyChilds : isExistChild) ? h(
1531
- "div",
1532
- {
1533
- class: "vxe-cascader-chunk--node-item-switcher"
1534
- },
1535
- [
1536
- [
1537
- h(
1538
- "div",
1539
- {
1540
- class: "vxe-cascader--node-item-icon",
1541
- onClick(evnt) {
1542
- if (treeOpts.trigger === "icon") {
1543
- toggleExpandEvent(evnt, node, chunks, chunkIndex);
1544
- }
1545
- }
1546
- },
1547
- iconSlot ? getSlotVNs(iconSlot(nParams)) : [
1548
- h("i", {
1549
- class: isLazyLoading ? iconLoaded || getIcon().CASCADER_NODE_LOADED : isExpand ? iconOpen || getIcon().CASCADER_NODE_OPEN : iconClose || getIcon().CASCADER_NODE_CLOSE
1550
- })
1551
- ]
1552
- )
1553
- ]
1554
- ]
1555
- ) : renderEmptyElement($xeCascader)
1556
- ]
1557
- );
1558
- };
1559
- const renderVN = () => {
1560
- const { className, modelValue, multiple, loading, filterable, showTotalButton, showCheckedButton, showClearButton, showCloseButton } = props;
1561
- const { initialized, isActivated, isAniVisible, visiblePanel, searchValue, currentCunkList } = reactData;
1562
- const { listVirtualYOpts } = internalData;
1563
- const vSize = computeSize.value;
1564
- const isDisabled = computeIsDisabled.value;
1565
- const selectLabel = computeSelectLabel.value;
1566
- const btnTransfer = computeBtnTransfer.value;
1567
- const formReadonly = computeFormReadonly.value;
1568
- const popupWrapperStyle = computePopupWrapperStyle.value;
1569
- const headerSlot = slots.header;
1570
- const footerSlot = slots.footer;
1571
- const prefixSlot = slots.prefix;
1572
- const popupOpts = computePopupOpts.value;
1573
- const popupClassName = popupOpts.className;
1574
- if (formReadonly) {
1592
+ );
1593
+ }
1594
+ const selectVals = XEUtils.eqNull(modelValue) ? [] : XEUtils.isArray(modelValue) ? modelValue : [modelValue];
1575
1595
  return h(
1576
1596
  "div",
1577
1597
  {
1578
1598
  ref: refElem,
1579
- class: ["vxe-cascader--readonly", className]
1599
+ class: [
1600
+ "vxe-cascader",
1601
+ className ? XEUtils.isFunction(className) ? className({ $cascader: $xeCascader }) : className : "",
1602
+ {
1603
+ [`size--${vSize}`]: vSize,
1604
+ "is--filterable": filterable,
1605
+ "is--visible": visiblePanel,
1606
+ "is--disabled": isDisabled,
1607
+ "is--loading": loading,
1608
+ "is--active": isActivated
1609
+ }
1610
+ ]
1580
1611
  },
1581
1612
  [
1582
1613
  h(
1583
- "span",
1614
+ VxeInputComponent,
1584
1615
  {
1585
- class: "vxe-cascader-label"
1616
+ ref: refInput,
1617
+ clearable: props.clearable,
1618
+ placeholder: loading ? getI18n("vxe.select.loadingText") : props.placeholder,
1619
+ editable: false,
1620
+ disabled: isDisabled,
1621
+ type: "text",
1622
+ prefixIcon: props.prefixIcon,
1623
+ suffixIcon: loading ? getIcon().TREE_SELECT_LOADED : visiblePanel ? getIcon().TREE_SELECT_OPEN : getIcon().TREE_SELECT_CLOSE,
1624
+ modelValue: loading ? "" : selectLabel,
1625
+ title: selectLabel,
1626
+ onClear: clearEvent,
1627
+ onClick: clickEvent,
1628
+ onFocus: focusEvent,
1629
+ onBlur: blurEvent,
1630
+ onSuffixClick: togglePanelEvent
1586
1631
  },
1587
- selectLabel
1588
- )
1589
- ]
1590
- );
1591
- }
1592
- const selectVals = XEUtils.eqNull(modelValue) ? [] : XEUtils.isArray(modelValue) ? modelValue : [modelValue];
1593
- return h(
1594
- "div",
1595
- {
1596
- ref: refElem,
1597
- class: [
1598
- "vxe-cascader",
1599
- className ? XEUtils.isFunction(className) ? className({ $cascader: $xeCascader }) : className : "",
1600
- {
1601
- [`size--${vSize}`]: vSize,
1602
- "is--filterable": filterable,
1603
- "is--visible": visiblePanel,
1604
- "is--disabled": isDisabled,
1605
- "is--loading": loading,
1606
- "is--active": isActivated
1607
- }
1608
- ]
1609
- },
1610
- [
1611
- h(
1612
- VxeInputComponent,
1613
- {
1614
- ref: refInput,
1615
- clearable: props.clearable,
1616
- placeholder: loading ? getI18n("vxe.select.loadingText") : props.placeholder,
1617
- editable: false,
1618
- disabled: isDisabled,
1619
- type: "text",
1620
- prefixIcon: props.prefixIcon,
1621
- suffixIcon: loading ? getIcon().TREE_SELECT_LOADED : visiblePanel ? getIcon().TREE_SELECT_OPEN : getIcon().TREE_SELECT_CLOSE,
1622
- modelValue: loading ? "" : selectLabel,
1623
- title: selectLabel,
1624
- onClear: clearEvent,
1625
- onClick: clickEvent,
1626
- onFocus: focusEvent,
1627
- onBlur: blurEvent,
1628
- onSuffixClick: togglePanelEvent
1629
- },
1630
- prefixSlot ? {
1631
- prefix: () => prefixSlot({})
1632
- } : {}
1633
- ),
1634
- h(
1635
- Teleport,
1636
- {
1637
- to: "body",
1638
- disabled: btnTransfer ? !initialized : true
1639
- },
1640
- [
1641
- h(
1642
- "div",
1643
- {
1644
- ref: refOptionPanel,
1645
- class: [
1646
- "vxe-table--ignore-clear vxe-cascader--panel",
1647
- popupClassName ? XEUtils.isFunction(popupClassName) ? popupClassName({ $cascader: $xeCascader }) : popupClassName : "",
1648
- {
1649
- [`size--${vSize}`]: vSize,
1650
- "is--transfer": btnTransfer,
1651
- "ani--leave": !loading && isAniVisible,
1652
- "ani--enter": !loading && visiblePanel
1653
- }
1654
- ],
1655
- placement: reactData.panelPlacement,
1656
- style: popupWrapperStyle
1657
- },
1658
- initialized ? [
1659
- h(
1660
- "div",
1661
- {
1662
- class: "vxe-cascader--panel-wrapper"
1663
- },
1664
- [
1665
- filterable ? h(
1666
- "div",
1667
- {
1668
- class: "vxe-cascader--panel-search"
1669
- },
1670
- [
1671
- h(VxeInputComponent, {
1672
- ref: refInpSearch,
1673
- class: "vxe-cascader-search--input",
1674
- modelValue: searchValue,
1675
- clearable: true,
1676
- disabled: false,
1677
- readonly: false,
1678
- placeholder: getI18n("vxe.cascader.search"),
1679
- prefixIcon: getIcon().INPUT_SEARCH,
1680
- "onUpdate:modelValue": modelSearchEvent
1681
- })
1682
- ]
1683
- ) : renderEmptyElement($xeCascader),
1684
- showCheckedButton && multiple || showClearButton || headerSlot ? h(
1685
- "div",
1686
- {
1687
- class: "vxe-cascader--panel-header"
1688
- },
1689
- headerSlot ? headerSlot({}) : [
1690
- h(
1691
- "div",
1692
- {
1693
- class: "vxe-cascader--header-button"
1694
- },
1695
- [
1696
- showCheckedButton && multiple || showClearButton ? h(
1697
- "div",
1698
- {
1699
- class: "vxe-cascader--selected-btns"
1700
- },
1701
- [
1702
- showCheckedButton && multiple ? h(VxeButtonComponent, {
1703
- content: getI18n("vxe.treeSelect.allChecked"),
1704
- mode: "text",
1705
- onClick: allCheckedPanelEvent
1706
- }) : renderEmptyElement($xeCascader),
1707
- showClearButton ? h(VxeButtonComponent, {
1708
- content: getI18n("vxe.treeSelect.clearChecked"),
1709
- mode: "text",
1710
- onClick: clearCheckedPanelEvent
1711
- }) : renderEmptyElement($xeCascader)
1712
- ]
1713
- ) : renderEmptyElement($xeCascader)
1714
- ]
1715
- )
1716
- ]
1717
- ) : renderEmptyElement($xeCascader),
1718
- h(
1719
- "div",
1720
- {
1721
- class: "vxe-cascader--panel-body"
1722
- },
1723
- [
1724
- h(
1725
- "div",
1726
- {
1727
- ref: refChunkWrapper,
1728
- class: "vxe-cascader-chunk--wrapper"
1729
- },
1730
- [
1731
- currentCunkList.map((chunks, chunkIndex) => {
1732
- return h(
1632
+ prefixSlot ? {
1633
+ prefix: () => prefixSlot({})
1634
+ } : {}
1635
+ ),
1636
+ h(
1637
+ Teleport,
1638
+ {
1639
+ to: "body",
1640
+ disabled: btnTransfer ? !initialized : true
1641
+ },
1642
+ [
1643
+ h(
1644
+ "div",
1645
+ {
1646
+ ref: refOptionPanel,
1647
+ class: [
1648
+ "vxe-table--ignore-clear vxe-cascader--panel",
1649
+ popupClassName ? XEUtils.isFunction(popupClassName) ? popupClassName({ $cascader: $xeCascader }) : popupClassName : "",
1650
+ {
1651
+ [`size--${vSize}`]: vSize,
1652
+ "is--transfer": btnTransfer,
1653
+ "ani--leave": !loading && isAniVisible,
1654
+ "ani--enter": !loading && visiblePanel
1655
+ }
1656
+ ],
1657
+ placement: reactData.panelPlacement,
1658
+ style: popupWrapperStyle
1659
+ },
1660
+ initialized ? [
1661
+ h(
1662
+ "div",
1663
+ {
1664
+ class: "vxe-cascader--panel-wrapper"
1665
+ },
1666
+ [
1667
+ filterable ? h(
1668
+ "div",
1669
+ {
1670
+ class: "vxe-cascader--panel-search"
1671
+ },
1672
+ [
1673
+ h(VxeInputComponent, {
1674
+ ref: refInpSearch,
1675
+ class: "vxe-cascader-search--input",
1676
+ modelValue: searchValue,
1677
+ clearable: true,
1678
+ disabled: false,
1679
+ readonly: false,
1680
+ placeholder: getI18n("vxe.cascader.search"),
1681
+ prefixIcon: getIcon().INPUT_SEARCH,
1682
+ "onUpdate:modelValue": modelSearchEvent
1683
+ })
1684
+ ]
1685
+ ) : renderEmptyElement($xeCascader),
1686
+ showCheckedButton && multiple || showClearButton || headerSlot ? h(
1687
+ "div",
1688
+ {
1689
+ class: "vxe-cascader--panel-header"
1690
+ },
1691
+ headerSlot ? headerSlot({}) : [
1692
+ h(
1693
+ "div",
1694
+ {
1695
+ class: "vxe-cascader--header-button"
1696
+ },
1697
+ [
1698
+ showCheckedButton && multiple || showClearButton ? h(
1733
1699
  "div",
1734
1700
  {
1735
- key: chunkIndex,
1736
- class: "vxe-cascader-chunk--item-wrapper"
1701
+ class: "vxe-cascader--selected-btns"
1737
1702
  },
1738
1703
  [
1739
- h(
1740
- VxeListComponent,
1741
- {
1742
- data: chunks,
1743
- virtualYConfig: listVirtualYOpts
1744
- },
1745
- {
1746
- default(slotParams) {
1747
- const { items } = slotParams;
1748
- return items.map((node, nodeIndex) => {
1749
- const nodeid = getNodeId(node);
1750
- return renderNode(node, nodeid, nodeIndex, chunks, chunkIndex);
1751
- });
1704
+ showCheckedButton && multiple ? h(VxeButtonComponent, {
1705
+ content: getI18n("vxe.treeSelect.allChecked"),
1706
+ mode: "text",
1707
+ onClick: allCheckedPanelEvent
1708
+ }) : renderEmptyElement($xeCascader),
1709
+ showClearButton ? h(VxeButtonComponent, {
1710
+ content: getI18n("vxe.treeSelect.clearChecked"),
1711
+ mode: "text",
1712
+ onClick: clearCheckedPanelEvent
1713
+ }) : renderEmptyElement($xeCascader)
1714
+ ]
1715
+ ) : renderEmptyElement($xeCascader)
1716
+ ]
1717
+ )
1718
+ ]
1719
+ ) : renderEmptyElement($xeCascader),
1720
+ h(
1721
+ "div",
1722
+ {
1723
+ class: "vxe-cascader--panel-body"
1724
+ },
1725
+ [
1726
+ h(
1727
+ "div",
1728
+ {
1729
+ ref: refChunkWrapper,
1730
+ class: "vxe-cascader-chunk--wrapper"
1731
+ },
1732
+ [
1733
+ currentCunkList.map((chunks, chunkIndex) => {
1734
+ return h(
1735
+ "div",
1736
+ {
1737
+ key: chunkIndex,
1738
+ class: "vxe-cascader-chunk--item-wrapper"
1739
+ },
1740
+ [
1741
+ h(
1742
+ VxeListComponent,
1743
+ {
1744
+ data: chunks,
1745
+ virtualYConfig: listVirtualYOpts
1746
+ },
1747
+ {
1748
+ default(slotParams) {
1749
+ const { items } = slotParams;
1750
+ return items.map((node, nodeIndex) => {
1751
+ const nodeid = getNodeId(node);
1752
+ return renderNode(node, nodeid, nodeIndex, chunks, chunkIndex);
1753
+ });
1754
+ }
1752
1755
  }
1753
- }
1754
- )
1756
+ )
1757
+ ]
1758
+ );
1759
+ })
1760
+ ]
1761
+ )
1762
+ ]
1763
+ ),
1764
+ footerSlot || showTotalButton || showCloseButton ? h(
1765
+ "div",
1766
+ {
1767
+ class: "vxe-cascader--panel-footer"
1768
+ },
1769
+ footerSlot ? footerSlot({}) : [
1770
+ h(
1771
+ "div",
1772
+ {
1773
+ class: "vxe-cascader--footer-button"
1774
+ },
1775
+ [
1776
+ showTotalButton ? h(
1777
+ "div",
1778
+ {
1779
+ class: "vxe-cascader--total-btns"
1780
+ },
1781
+ getI18n("vxe.treeSelect.total", [selectVals.length])
1782
+ ) : renderEmptyElement($xeCascader),
1783
+ showCloseButton ? h(
1784
+ "div",
1785
+ {
1786
+ class: "vxe-cascader--oper-btns"
1787
+ },
1788
+ [
1789
+ h(VxeButtonComponent, {
1790
+ content: getI18n("vxe.select.close"),
1791
+ mode: "text",
1792
+ onClick: closePanelEvent
1793
+ })
1755
1794
  ]
1756
- );
1757
- })
1758
- ]
1759
- )
1760
- ]
1761
- ),
1762
- footerSlot || showTotalButton || showCloseButton ? h(
1763
- "div",
1764
- {
1765
- class: "vxe-cascader--panel-footer"
1766
- },
1767
- footerSlot ? footerSlot({}) : [
1768
- h(
1769
- "div",
1770
- {
1771
- class: "vxe-cascader--footer-button"
1772
- },
1773
- [
1774
- showTotalButton ? h(
1775
- "div",
1776
- {
1777
- class: "vxe-cascader--total-btns"
1778
- },
1779
- getI18n("vxe.treeSelect.total", [selectVals.length])
1780
- ) : renderEmptyElement($xeCascader),
1781
- showCloseButton ? h(
1782
- "div",
1783
- {
1784
- class: "vxe-cascader--oper-btns"
1785
- },
1786
- [
1787
- h(VxeButtonComponent, {
1788
- content: getI18n("vxe.select.close"),
1789
- mode: "text",
1790
- onClick: closePanelEvent
1791
- })
1792
- ]
1793
- ) : renderEmptyElement($xeCascader)
1794
- ]
1795
- )
1796
- ]
1797
- ) : renderEmptyElement($xeCascader)
1798
- ]
1799
- )
1800
- ] : []
1801
- )
1802
- ]
1803
- )
1804
- ]
1795
+ ) : renderEmptyElement($xeCascader)
1796
+ ]
1797
+ )
1798
+ ]
1799
+ ) : renderEmptyElement($xeCascader)
1800
+ ]
1801
+ )
1802
+ ] : []
1803
+ )
1804
+ ]
1805
+ )
1806
+ ]
1807
+ );
1808
+ };
1809
+ watch(
1810
+ () => props.modelValue,
1811
+ () => {
1812
+ if (!internalData.isUpdateMode) {
1813
+ updateModelChecked();
1814
+ handleCurrentItems();
1815
+ updateCurrentChunk();
1816
+ }
1817
+ internalData.isUpdateMode = false;
1818
+ }
1805
1819
  );
1806
- };
1807
- watch(
1808
- () => props.modelValue,
1809
- () => {
1810
- if (!internalData.isUpdateMode) {
1811
- updateModelChecked();
1812
- handleCurrentItems();
1813
- updateCurrentChunk();
1820
+ watch(
1821
+ () => props.options,
1822
+ () => {
1823
+ cacheNodeMap();
1814
1824
  }
1815
- internalData.isUpdateMode = false;
1816
- }
1817
- );
1818
- watch(
1819
- () => props.options,
1820
- () => {
1821
- cacheNodeMap();
1822
- }
1823
- );
1824
- const dataFlag = ref(0);
1825
- watch(
1826
- () => props.options ? props.options.length : 0,
1827
- () => {
1828
- dataFlag.value++;
1829
- }
1830
- );
1831
- watch(
1832
- () => props.options,
1833
- () => {
1834
- dataFlag.value++;
1835
- }
1836
- );
1837
- watch(dataFlag, () => {
1825
+ );
1826
+ const dataFlag = ref(0);
1827
+ watch(
1828
+ () => props.options ? props.options.length : 0,
1829
+ () => {
1830
+ dataFlag.value++;
1831
+ }
1832
+ );
1833
+ watch(
1834
+ () => props.options,
1835
+ () => {
1836
+ dataFlag.value++;
1837
+ }
1838
+ );
1839
+ watch(dataFlag, () => {
1840
+ loadData(props.options || []);
1841
+ });
1838
1842
  loadData(props.options || []);
1839
- });
1840
- loadData(props.options || []);
1841
- onMounted(() => {
1842
- globalEvents.on($xeCascader, "mousedown", handleGlobalMousedownEvent);
1843
- globalEvents.on($xeCascader, "blur", handleGlobalBlurEvent);
1844
- globalEvents.on($xeCascader, "resize", handleGlobalResizeEvent);
1845
- globalEvents.on($xeCascader, "scroll", handleGlobalScrollEvent);
1846
- });
1847
- onUnmounted(() => {
1848
- globalEvents.off($xeCascader, "mousedown");
1849
- globalEvents.off($xeCascader, "blur");
1850
- globalEvents.off($xeCascader, "resize");
1851
- globalEvents.off($xeCascader, "scroll");
1852
- XEUtils.assign(reactData, createReactData());
1853
- XEUtils.assign(internalData, createInternalData());
1854
- });
1855
- provide("$xeCascader", $xeCascader);
1856
- $xeCascader.renderVN = renderVN;
1857
- return $xeCascader;
1858
- },
1859
- render() {
1860
- return this.renderVN();
1861
- }
1862
- });
1843
+ onMounted(() => {
1844
+ globalEvents.on($xeCascader, "mousedown", handleGlobalMousedownEvent);
1845
+ globalEvents.on($xeCascader, "blur", handleGlobalBlurEvent);
1846
+ globalEvents.on($xeCascader, "resize", handleGlobalResizeEvent);
1847
+ globalEvents.on($xeCascader, "scroll", handleGlobalScrollEvent);
1848
+ });
1849
+ onUnmounted(() => {
1850
+ globalEvents.off($xeCascader, "mousedown");
1851
+ globalEvents.off($xeCascader, "blur");
1852
+ globalEvents.off($xeCascader, "resize");
1853
+ globalEvents.off($xeCascader, "scroll");
1854
+ XEUtils.assign(reactData, createReactData());
1855
+ XEUtils.assign(internalData, createInternalData());
1856
+ });
1857
+ provide("$xeCascader", $xeCascader);
1858
+ $xeCascader.renderVN = renderVN;
1859
+ return $xeCascader;
1860
+ },
1861
+ render() {
1862
+ return this.renderVN();
1863
+ }
1864
+ })
1865
+ );
1863
1866
  export {
1864
1867
  cascader_default as default
1865
1868
  };