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
@@ -64,853 +64,856 @@ function createReactData() {
64
64
  };
65
65
  }
66
66
  let nemuUniqueKey = 1e8;
67
- var menu_default = (0, import_comp.defineVxeComponent)({
68
- name: "VxeMenu",
69
- props: {
70
- modelValue: [String, Number],
71
- expandAll: Boolean,
72
- expandKeys: Array,
73
- accordion: {
74
- type: Boolean,
75
- default: () => getConfig().menu.accordion
76
- },
77
- border: {
78
- type: [Boolean, String],
79
- default: () => getConfig().menu.border
80
- },
81
- optionProps: {
82
- type: Object,
83
- default: () => getConfig().menu.optionProps
84
- },
85
- collapsed: {
86
- type: Boolean,
87
- default: null
88
- },
89
- collapseFixed: Boolean,
90
- loading: Boolean,
91
- options: {
92
- type: Array,
93
- default: () => []
94
- },
95
- size: {
96
- type: String,
97
- default: () => getConfig().menu.size || getConfig().size
98
- },
99
- menuConfig: Object,
100
- useScrollbar: {
101
- type: Boolean,
102
- default: () => (0, import_utils.getDefaultConfig)(getConfig().menu.useScrollbar, getConfig().useScrollbar)
103
- },
104
- scrollbarConfig: Object,
105
- appendTo: {
106
- type: [String, Function],
107
- default: () => getConfig().menu.appendTo
108
- }
109
- },
110
- emits: ["update:modelValue", "click", "option-menu", "menu-click"],
111
- setup(props, context) {
112
- const { emit, slots } = context;
113
- const xID = import_xe_utils.default.uniqueId();
114
- const $xeLayoutAside = (0, import_vue.inject)("$xeLayoutAside", null);
115
- const refElem = (0, import_vue.ref)();
116
- const refCollapseElem = (0, import_vue.ref)();
117
- const refCollapseBodyElem = (0, import_vue.ref)();
118
- const refCollapseBodyScrollbar = (0, import_vue.ref)();
119
- const { computeSize } = useFns.useSize(props);
120
- const { computeIsVScrollbar } = useFns.useVScrollbar(props);
121
- const reactData = (0, import_vue.reactive)(createReactData());
122
- const internalData = createInternalData();
123
- const refMaps = {
124
- refElem
125
- };
126
- const computeMenuOpts = (0, import_vue.computed)(() => {
127
- return Object.assign({}, getConfig().menu.menuConfig, props.menuConfig);
128
- });
129
- const computePropsOpts = (0, import_vue.computed)(() => {
130
- return Object.assign({}, getConfig().menu.optionProps, props.optionProps);
131
- });
132
- const computeTitleField = (0, import_vue.computed)(() => {
133
- const propsOpts = computePropsOpts.value;
134
- return propsOpts.title || "title";
135
- });
136
- const computeKeyField = (0, import_vue.computed)(() => {
137
- const propsOpts = computePropsOpts.value;
138
- return propsOpts.name || "name";
139
- });
140
- const computeChildrenField = (0, import_vue.computed)(() => {
141
- const propsOpts = computePropsOpts.value;
142
- return propsOpts.children || "children";
143
- });
144
- const computeLinkUrlField = (0, import_vue.computed)(() => {
145
- const propsOpts = computePropsOpts.value;
146
- return propsOpts.linkUrl || "linkUrl";
147
- });
148
- const computeRouterLinkField = (0, import_vue.computed)(() => {
149
- const propsOpts = computePropsOpts.value;
150
- return propsOpts.routerLink || "routerLink";
151
- });
152
- const computeScrollbarOpts = (0, import_vue.computed)(() => {
153
- return Object.assign({}, getConfig().menu.scrollbarConfig, props.scrollbarConfig);
154
- });
155
- const computeCurrBorder = (0, import_vue.computed)(() => {
156
- const { border } = props;
157
- if (border) {
158
- return border === true ? "first-group" : border;
159
- }
160
- return "";
161
- });
162
- const computeIsCollapsed = (0, import_vue.computed)(() => {
163
- const { collapsed } = props;
164
- if (import_xe_utils.default.isBoolean(collapsed)) {
165
- return collapsed;
166
- }
167
- if ($xeLayoutAside) {
168
- return !!$xeLayoutAside.props.collapsed;
169
- }
170
- return false;
171
- });
172
- const computeVarStyle = (0, import_vue.computed)(() => {
173
- if ($xeLayoutAside) {
174
- const { computeVarStyle: asideComputeVarStyle } = $xeLayoutAside.getComputeMaps();
175
- const asideVarStyle = asideComputeVarStyle.value;
176
- return asideVarStyle;
177
- }
178
- return {};
179
- });
180
- const computeMaps = {
181
- computeSize
182
- };
183
- const $xeMenu = {
184
- xID,
185
- props,
186
- context,
187
- reactData,
188
- internalData,
189
- getRefMaps: () => refMaps,
190
- getComputeMaps: () => computeMaps
191
- };
192
- const getMenuTitle = (item) => {
193
- return `${item.title || item.name}`;
194
- };
195
- const updateZindex = () => {
196
- if (reactData.collapseZindex < (0, import_utils.getLastZIndex)()) {
197
- reactData.collapseZindex = (0, import_utils.nextZIndex)();
67
+ var menu_default = (
68
+ /* define-vxe-component start */
69
+ (0, import_comp.defineVxeComponent)({
70
+ name: "VxeMenu",
71
+ props: {
72
+ modelValue: [String, Number],
73
+ expandAll: Boolean,
74
+ expandKeys: Array,
75
+ accordion: {
76
+ type: Boolean,
77
+ default: () => getConfig().menu.accordion
78
+ },
79
+ border: {
80
+ type: [Boolean, String],
81
+ default: () => getConfig().menu.border
82
+ },
83
+ optionProps: {
84
+ type: Object,
85
+ default: () => getConfig().menu.optionProps
86
+ },
87
+ collapsed: {
88
+ type: Boolean,
89
+ default: null
90
+ },
91
+ collapseFixed: Boolean,
92
+ loading: Boolean,
93
+ options: {
94
+ type: Array,
95
+ default: () => []
96
+ },
97
+ size: {
98
+ type: String,
99
+ default: () => getConfig().menu.size || getConfig().size
100
+ },
101
+ menuConfig: Object,
102
+ useScrollbar: {
103
+ type: Boolean,
104
+ default: () => (0, import_utils.getDefaultConfig)(getConfig().menu.useScrollbar, getConfig().useScrollbar)
105
+ },
106
+ scrollbarConfig: Object,
107
+ appendTo: {
108
+ type: [String, Function],
109
+ default: () => getConfig().menu.appendTo
198
110
  }
199
- };
200
- const updateActiveMenu = (isDefExpand) => {
201
- const { activeName } = reactData;
202
- const { menuInitMaps } = internalData;
203
- import_xe_utils.default.eachTree(
204
- reactData.menuList,
205
- (item, index, items, path, parentItem, nodes) => {
206
- if (item.itemKey === activeName) {
207
- nodes.forEach((obj) => {
208
- obj.isActive = true;
209
- if (isDefExpand) {
210
- obj.isExpand = true;
211
- menuInitMaps[obj.itemId] = true;
111
+ },
112
+ emits: ["update:modelValue", "click", "option-menu", "menu-click"],
113
+ setup(props, context) {
114
+ const { emit, slots } = context;
115
+ const xID = import_xe_utils.default.uniqueId();
116
+ const $xeLayoutAside = (0, import_vue.inject)("$xeLayoutAside", null);
117
+ const refElem = (0, import_vue.ref)();
118
+ const refCollapseElem = (0, import_vue.ref)();
119
+ const refCollapseBodyElem = (0, import_vue.ref)();
120
+ const refCollapseBodyScrollbar = (0, import_vue.ref)();
121
+ const { computeSize } = useFns.useSize(props);
122
+ const { computeIsVScrollbar } = useFns.useVScrollbar(props);
123
+ const reactData = (0, import_vue.reactive)(createReactData());
124
+ const internalData = createInternalData();
125
+ const refMaps = {
126
+ refElem
127
+ };
128
+ const computeMenuOpts = (0, import_vue.computed)(() => {
129
+ return Object.assign({}, getConfig().menu.menuConfig, props.menuConfig);
130
+ });
131
+ const computePropsOpts = (0, import_vue.computed)(() => {
132
+ return Object.assign({}, getConfig().menu.optionProps, props.optionProps);
133
+ });
134
+ const computeTitleField = (0, import_vue.computed)(() => {
135
+ const propsOpts = computePropsOpts.value;
136
+ return propsOpts.title || "title";
137
+ });
138
+ const computeKeyField = (0, import_vue.computed)(() => {
139
+ const propsOpts = computePropsOpts.value;
140
+ return propsOpts.name || "name";
141
+ });
142
+ const computeChildrenField = (0, import_vue.computed)(() => {
143
+ const propsOpts = computePropsOpts.value;
144
+ return propsOpts.children || "children";
145
+ });
146
+ const computeLinkUrlField = (0, import_vue.computed)(() => {
147
+ const propsOpts = computePropsOpts.value;
148
+ return propsOpts.linkUrl || "linkUrl";
149
+ });
150
+ const computeRouterLinkField = (0, import_vue.computed)(() => {
151
+ const propsOpts = computePropsOpts.value;
152
+ return propsOpts.routerLink || "routerLink";
153
+ });
154
+ const computeScrollbarOpts = (0, import_vue.computed)(() => {
155
+ return Object.assign({}, getConfig().menu.scrollbarConfig, props.scrollbarConfig);
156
+ });
157
+ const computeCurrBorder = (0, import_vue.computed)(() => {
158
+ const { border } = props;
159
+ if (border) {
160
+ return border === true ? "first-group" : border;
161
+ }
162
+ return "";
163
+ });
164
+ const computeIsCollapsed = (0, import_vue.computed)(() => {
165
+ const { collapsed } = props;
166
+ if (import_xe_utils.default.isBoolean(collapsed)) {
167
+ return collapsed;
168
+ }
169
+ if ($xeLayoutAside) {
170
+ return !!$xeLayoutAside.props.collapsed;
171
+ }
172
+ return false;
173
+ });
174
+ const computeVarStyle = (0, import_vue.computed)(() => {
175
+ if ($xeLayoutAside) {
176
+ const { computeVarStyle: asideComputeVarStyle } = $xeLayoutAside.getComputeMaps();
177
+ const asideVarStyle = asideComputeVarStyle.value;
178
+ return asideVarStyle;
179
+ }
180
+ return {};
181
+ });
182
+ const computeMaps = {
183
+ computeSize
184
+ };
185
+ const $xeMenu = {
186
+ xID,
187
+ props,
188
+ context,
189
+ reactData,
190
+ internalData,
191
+ getRefMaps: () => refMaps,
192
+ getComputeMaps: () => computeMaps
193
+ };
194
+ const getMenuTitle = (item) => {
195
+ return `${item.title || item.name}`;
196
+ };
197
+ const updateZindex = () => {
198
+ if (reactData.collapseZindex < (0, import_utils.getLastZIndex)()) {
199
+ reactData.collapseZindex = (0, import_utils.nextZIndex)();
200
+ }
201
+ };
202
+ const updateActiveMenu = (isDefExpand) => {
203
+ const { activeName } = reactData;
204
+ const { menuInitMaps } = internalData;
205
+ import_xe_utils.default.eachTree(
206
+ reactData.menuList,
207
+ (item, index, items, path, parentItem, nodes) => {
208
+ if (item.itemKey === activeName) {
209
+ nodes.forEach((obj) => {
210
+ obj.isActive = true;
211
+ if (isDefExpand) {
212
+ obj.isExpand = true;
213
+ menuInitMaps[obj.itemId] = true;
214
+ }
215
+ });
216
+ item.isExactActive = true;
217
+ } else {
218
+ item.isExactActive = false;
219
+ item.isActive = false;
220
+ }
221
+ },
222
+ { children: "childList" }
223
+ );
224
+ };
225
+ const updateMenuConfig = () => {
226
+ const { options, expandAll, expandKeys } = props;
227
+ const muInitMaps = {};
228
+ const titleField = computeTitleField.value;
229
+ const keyField = computeKeyField.value;
230
+ const childrenField = computeChildrenField.value;
231
+ const linkUrlField = computeLinkUrlField.value;
232
+ const routerLinkField = computeRouterLinkField.value;
233
+ const defaultExpandMaps = {};
234
+ if (expandKeys) {
235
+ expandKeys.forEach((key) => {
236
+ defaultExpandMaps[key] = true;
237
+ });
238
+ }
239
+ const muCacheMaps = {};
240
+ const muKeyMaps = {};
241
+ reactData.menuList = import_xe_utils.default.mapTree(
242
+ options,
243
+ (item, index, items, path, parentItem) => {
244
+ const itemId = ++nemuUniqueKey;
245
+ const itemKey = item[keyField] || path.join(",");
246
+ const childList = item[childrenField];
247
+ const hasChild = childList && childList.length > 0;
248
+ const isExpand = hasChild ? import_xe_utils.default.isBoolean(item.expanded) ? item.expanded : defaultExpandMaps[itemKey] || !!expandAll : false;
249
+ if (isExpand) {
250
+ muInitMaps[itemId] = true;
251
+ }
252
+ const objItem = {
253
+ itemConf: item,
254
+ title: item[titleField],
255
+ name: item[keyField],
256
+ icon: item.icon,
257
+ linkUrl: item[linkUrlField],
258
+ linkTarget: item.linkTarget,
259
+ routerLink: item[routerLinkField],
260
+ permissionCode: item.permissionCode,
261
+ children: childList,
262
+ slots: item.slots,
263
+ parentKey: parentItem ? parentItem.name || path.slice(0, path.length - 1).join(",") : "",
264
+ level: path.length,
265
+ itemId,
266
+ itemKey,
267
+ isExactActive: false,
268
+ isActive: false,
269
+ isExpand,
270
+ hasChild,
271
+ childList: []
272
+ };
273
+ if (muKeyMaps[itemKey]) {
274
+ errLog("vxe.error.repeatKey", [keyField, item[keyField]]);
275
+ }
276
+ muCacheMaps[itemId] = objItem;
277
+ muKeyMaps[itemKey] = objItem;
278
+ return objItem;
279
+ },
280
+ { children: "children", mapChildren: "childList" }
281
+ );
282
+ internalData.menuInitMaps = muInitMaps;
283
+ internalData.menuCacheMaps = muCacheMaps;
284
+ internalData.menuKeyMaps = muKeyMaps;
285
+ };
286
+ const updateCollapseStyle = () => {
287
+ const { collapseFixed } = props;
288
+ if (collapseFixed) {
289
+ (0, import_vue.nextTick)(() => {
290
+ const isCollapsed = computeIsCollapsed.value;
291
+ const el = refElem.value;
292
+ if (el) {
293
+ let clientRect = el.getBoundingClientRect();
294
+ const parentElement = el.parentElement;
295
+ if (parentElement) {
296
+ if (clientRect.top < 0) {
297
+ clientRect = parentElement.getBoundingClientRect();
298
+ }
299
+ reactData.collapseStyle = isCollapsed ? {
300
+ top: (0, import_dom.toCssUnit)(clientRect.top),
301
+ left: (0, import_dom.toCssUnit)(clientRect.left),
302
+ height: (0, import_dom.toCssUnit)(parentElement.clientHeight),
303
+ zIndex: reactData.collapseZindex
304
+ } : {};
212
305
  }
213
- });
214
- item.isExactActive = true;
215
- } else {
216
- item.isExactActive = false;
217
- item.isActive = false;
218
- }
219
- },
220
- { children: "childList" }
221
- );
222
- };
223
- const updateMenuConfig = () => {
224
- const { options, expandAll, expandKeys } = props;
225
- const muInitMaps = {};
226
- const titleField = computeTitleField.value;
227
- const keyField = computeKeyField.value;
228
- const childrenField = computeChildrenField.value;
229
- const linkUrlField = computeLinkUrlField.value;
230
- const routerLinkField = computeRouterLinkField.value;
231
- const defaultExpandMaps = {};
232
- if (expandKeys) {
233
- expandKeys.forEach((key) => {
234
- defaultExpandMaps[key] = true;
235
- });
236
- }
237
- const muCacheMaps = {};
238
- const muKeyMaps = {};
239
- reactData.menuList = import_xe_utils.default.mapTree(
240
- options,
241
- (item, index, items, path, parentItem) => {
242
- const itemId = ++nemuUniqueKey;
243
- const itemKey = item[keyField] || path.join(",");
244
- const childList = item[childrenField];
245
- const hasChild = childList && childList.length > 0;
246
- const isExpand = hasChild ? import_xe_utils.default.isBoolean(item.expanded) ? item.expanded : defaultExpandMaps[itemKey] || !!expandAll : false;
247
- if (isExpand) {
248
- muInitMaps[itemId] = true;
249
- }
250
- const objItem = {
251
- itemConf: item,
252
- title: item[titleField],
253
- name: item[keyField],
254
- icon: item.icon,
255
- linkUrl: item[linkUrlField],
256
- linkTarget: item.linkTarget,
257
- routerLink: item[routerLinkField],
258
- permissionCode: item.permissionCode,
259
- children: childList,
260
- slots: item.slots,
261
- parentKey: parentItem ? parentItem.name || path.slice(0, path.length - 1).join(",") : "",
262
- level: path.length,
263
- itemId,
264
- itemKey,
265
- isExactActive: false,
266
- isActive: false,
267
- isExpand,
268
- hasChild,
269
- childList: []
270
- };
271
- if (muKeyMaps[itemKey]) {
272
- errLog("vxe.error.repeatKey", [keyField, item[keyField]]);
273
- }
274
- muCacheMaps[itemId] = objItem;
275
- muKeyMaps[itemKey] = objItem;
276
- return objItem;
277
- },
278
- { children: "children", mapChildren: "childList" }
279
- );
280
- internalData.menuInitMaps = muInitMaps;
281
- internalData.menuCacheMaps = muCacheMaps;
282
- internalData.menuKeyMaps = muKeyMaps;
283
- };
284
- const updateCollapseStyle = () => {
285
- const { collapseFixed } = props;
286
- if (collapseFixed) {
287
- (0, import_vue.nextTick)(() => {
306
+ }
307
+ });
308
+ }
309
+ };
310
+ const handleCollapseMenu = () => {
311
+ const { collapseFixed } = props;
312
+ if (collapseFixed) {
313
+ const { initialized } = reactData;
288
314
  const isCollapsed = computeIsCollapsed.value;
289
- const el = refElem.value;
290
- if (el) {
291
- let clientRect = el.getBoundingClientRect();
292
- const parentElement = el.parentElement;
293
- if (parentElement) {
294
- if (clientRect.top < 0) {
295
- clientRect = parentElement.getBoundingClientRect();
296
- }
297
- reactData.collapseStyle = isCollapsed ? {
298
- top: (0, import_dom.toCssUnit)(clientRect.top),
299
- left: (0, import_dom.toCssUnit)(clientRect.left),
300
- height: (0, import_dom.toCssUnit)(parentElement.clientHeight),
301
- zIndex: reactData.collapseZindex
302
- } : {};
315
+ if (isCollapsed) {
316
+ if (!initialized) {
317
+ reactData.initialized = true;
303
318
  }
304
319
  }
305
- });
306
- }
307
- };
308
- const handleCollapseMenu = () => {
309
- const { collapseFixed } = props;
310
- if (collapseFixed) {
311
- const { initialized } = reactData;
320
+ reactData.isEnterCollapse = false;
321
+ updateZindex();
322
+ updateCollapseStyle();
323
+ }
324
+ };
325
+ const handleClickIconCollapse = (evnt, item, itemList) => {
326
+ const { accordion } = props;
327
+ const { menuEffectMaps, menuInitMaps } = internalData;
328
+ const { itemId, hasChild, isExpand } = item;
312
329
  const isCollapsed = computeIsCollapsed.value;
313
- if (isCollapsed) {
314
- if (!initialized) {
315
- reactData.initialized = true;
330
+ const expanded = !isExpand;
331
+ if (hasChild) {
332
+ evnt.stopPropagation();
333
+ evnt.preventDefault();
334
+ if (menuEffectMaps[itemId]) {
335
+ clearTimeout(menuEffectMaps[itemId]);
316
336
  }
317
- }
318
- reactData.isEnterCollapse = false;
319
- updateZindex();
320
- updateCollapseStyle();
321
- }
322
- };
323
- const handleClickIconCollapse = (evnt, item, itemList) => {
324
- const { accordion } = props;
325
- const { menuEffectMaps, menuInitMaps } = internalData;
326
- const { itemId, hasChild, isExpand } = item;
327
- const isCollapsed = computeIsCollapsed.value;
328
- const expanded = !isExpand;
329
- if (hasChild) {
330
- evnt.stopPropagation();
331
- evnt.preventDefault();
332
- if (menuEffectMaps[itemId]) {
333
- clearTimeout(menuEffectMaps[itemId]);
334
- }
335
- if (accordion) {
336
- itemList.forEach((obj) => {
337
- if (obj !== item) {
338
- obj.isExpand = false;
339
- }
340
- });
341
- }
342
- item.isExpand = expanded;
343
- menuInitMaps[itemId] = true;
344
- const wrapperEl = isCollapsed ? refCollapseElem.value : refElem.value;
345
- if (wrapperEl) {
346
- const nemuEl = wrapperEl.querySelector(`.vxe-menu--item-wrapper[data-menu-id="${itemId}"]`);
347
- const groupEl = nemuEl ? nemuEl.querySelector(".vxe-menu--item-group") : null;
348
- if (groupEl) {
349
- if (expanded) {
350
- groupEl.style.height = "0";
351
- groupEl.setAttribute("data-effect", "y");
352
- requestAnimationFrame(() => {
353
- groupEl.style.height = `${groupEl.scrollHeight}px`;
354
- });
355
- } else {
356
- groupEl.style.height = `${groupEl.scrollHeight}px`;
357
- groupEl.setAttribute("data-effect", "y");
358
- requestAnimationFrame(() => {
337
+ if (accordion) {
338
+ itemList.forEach((obj) => {
339
+ if (obj !== item) {
340
+ obj.isExpand = false;
341
+ }
342
+ });
343
+ }
344
+ item.isExpand = expanded;
345
+ menuInitMaps[itemId] = true;
346
+ const wrapperEl = isCollapsed ? refCollapseElem.value : refElem.value;
347
+ if (wrapperEl) {
348
+ const nemuEl = wrapperEl.querySelector(`.vxe-menu--item-wrapper[data-menu-id="${itemId}"]`);
349
+ const groupEl = nemuEl ? nemuEl.querySelector(".vxe-menu--item-group") : null;
350
+ if (groupEl) {
351
+ if (expanded) {
359
352
  groupEl.style.height = "0";
360
- });
353
+ groupEl.setAttribute("data-effect", "y");
354
+ requestAnimationFrame(() => {
355
+ groupEl.style.height = `${groupEl.scrollHeight}px`;
356
+ });
357
+ } else {
358
+ groupEl.style.height = `${groupEl.scrollHeight}px`;
359
+ groupEl.setAttribute("data-effect", "y");
360
+ requestAnimationFrame(() => {
361
+ groupEl.style.height = "0";
362
+ });
363
+ }
364
+ menuEffectMaps[itemId] = setTimeout(() => {
365
+ delete menuEffectMaps[itemId];
366
+ groupEl.removeAttribute("data-effect");
367
+ groupEl.style.height = "";
368
+ }, 350);
361
369
  }
362
- menuEffectMaps[itemId] = setTimeout(() => {
363
- delete menuEffectMaps[itemId];
364
- groupEl.removeAttribute("data-effect");
365
- groupEl.style.height = "";
366
- }, 350);
367
370
  }
368
371
  }
369
- }
370
- };
371
- const emitModel = (value) => {
372
- reactData.activeName = value;
373
- emit("update:modelValue", value);
374
- };
375
- const handleContextmenuEvent = (evnt, item) => {
376
- const { menuConfig } = props;
377
- const menuOpts = computeMenuOpts.value;
378
- if (menuConfig ? (0, import_utils.isEnableConf)(menuOpts) : menuOpts.enabled) {
379
- const { options, visibleMethod } = menuOpts;
380
- if (!visibleMethod || visibleMethod({ $menu: $xeMenu, options, currentMenu: item, currentOption: item.itemConf })) {
381
- if (import_core.VxeUI.contextMenu) {
382
- import_core.VxeUI.contextMenu.openByEvent(evnt, {
383
- options,
384
- events: {
385
- optionClick(eventParams) {
386
- const { option } = eventParams;
387
- const gMenuOpts = menus.get(option.code);
388
- const mmMethod = gMenuOpts ? gMenuOpts.menuMenuMethod : null;
389
- const params = { menu: option, currentMenu: item, currentOption: item.itemConf, $event: evnt, $menu: $xeMenu };
390
- if (mmMethod) {
391
- mmMethod(params, evnt);
372
+ };
373
+ const emitModel = (value) => {
374
+ reactData.activeName = value;
375
+ emit("update:modelValue", value);
376
+ };
377
+ const handleContextmenuEvent = (evnt, item) => {
378
+ const { menuConfig } = props;
379
+ const menuOpts = computeMenuOpts.value;
380
+ if (menuConfig ? (0, import_utils.isEnableConf)(menuOpts) : menuOpts.enabled) {
381
+ const { options, visibleMethod } = menuOpts;
382
+ if (!visibleMethod || visibleMethod({ $menu: $xeMenu, options, currentMenu: item, currentOption: item.itemConf })) {
383
+ if (import_core.VxeUI.contextMenu) {
384
+ import_core.VxeUI.contextMenu.openByEvent(evnt, {
385
+ options,
386
+ events: {
387
+ optionClick(eventParams) {
388
+ const { option } = eventParams;
389
+ const gMenuOpts = menus.get(option.code);
390
+ const mmMethod = gMenuOpts ? gMenuOpts.menuMenuMethod : null;
391
+ const params = { menu: option, currentMenu: item, currentOption: item.itemConf, $event: evnt, $menu: $xeMenu };
392
+ if (mmMethod) {
393
+ mmMethod(params, evnt);
394
+ }
395
+ dispatchEvent("menu-click", params, eventParams.$event);
392
396
  }
393
- dispatchEvent("menu-click", params, eventParams.$event);
394
397
  }
395
- }
396
- });
398
+ });
399
+ }
397
400
  }
398
401
  }
399
- }
400
- dispatchEvent("option-menu", { currentMenu: item }, evnt);
401
- };
402
- const handleClickMenu = (evnt, item, itemList) => {
403
- const { itemKey, linkUrl, routerLink, hasChild } = item;
404
- if (linkUrl || routerLink) {
405
- emitModel(itemKey);
406
- reactData.isEnterCollapse = false;
407
- internalData.lastActiveTime = Date.now();
408
- } else {
409
- if (hasChild) {
410
- handleClickIconCollapse(evnt, item, itemList);
411
- } else {
402
+ dispatchEvent("option-menu", { currentMenu: item }, evnt);
403
+ };
404
+ const handleClickMenu = (evnt, item, itemList) => {
405
+ const { itemKey, linkUrl, routerLink, hasChild } = item;
406
+ if (linkUrl || routerLink) {
412
407
  emitModel(itemKey);
413
408
  reactData.isEnterCollapse = false;
414
409
  internalData.lastActiveTime = Date.now();
415
- }
416
- }
417
- const params = {
418
- currentMenu: item,
419
- currentOption: item.itemConf,
420
- option: item.itemConf,
421
- // 已废弃
422
- menu: item
423
- };
424
- dispatchEvent("click", params, evnt);
425
- };
426
- const handleMenuMouseenter = () => {
427
- const { lastActiveTime } = internalData;
428
- if (lastActiveTime < Date.now() - 500) {
429
- reactData.isEnterCollapse = true;
430
- }
431
- };
432
- const handleMenuMouseleave = () => {
433
- const $collapseBodyScrollbar = refCollapseBodyScrollbar.value;
434
- const collapseBodyEl = refCollapseBodyElem.value;
435
- if (collapseBodyEl) {
436
- collapseBodyEl.scrollTop = 0;
437
- }
438
- if ($collapseBodyScrollbar) {
439
- $collapseBodyScrollbar.clearScroll();
440
- }
441
- reactData.isEnterCollapse = false;
442
- };
443
- const callSlot = (slotFunc, params) => {
444
- if (slotFunc) {
445
- if (import_xe_utils.default.isString(slotFunc)) {
446
- slotFunc = slots[slotFunc] || null;
447
- }
448
- if (import_xe_utils.default.isFunction(slotFunc)) {
449
- return (0, import_vn.getSlotVNs)(slotFunc(params));
450
- }
451
- }
452
- return [];
453
- };
454
- const dispatchEvent = (type, params, evnt) => {
455
- emit(type, createEvent(evnt, { $menu: $xeMenu }, params));
456
- };
457
- const handleScrollToView = (itemId) => {
458
- const wrapperEl = refElem.value;
459
- const nemuEl = wrapperEl ? wrapperEl.querySelector(`.vxe-menu--item-wrapper[data-menu-id="${itemId}"]`) : null;
460
- if (nemuEl) {
461
- (0, import_dom.scrollToView)(nemuEl);
462
- return true;
463
- }
464
- return false;
465
- };
466
- const menuMethods = {
467
- dispatchEvent,
468
- setExpandByMenuKey(menuKeys, expanded) {
469
- const { menuKeyMaps, menuInitMaps } = internalData;
470
- if (menuKeys) {
471
- if (!import_xe_utils.default.isArray(menuKeys)) {
472
- menuKeys = [menuKeys];
410
+ } else {
411
+ if (hasChild) {
412
+ handleClickIconCollapse(evnt, item, itemList);
413
+ } else {
414
+ emitModel(itemKey);
415
+ reactData.isEnterCollapse = false;
416
+ internalData.lastActiveTime = Date.now();
473
417
  }
474
- menuKeys.forEach((mKey) => {
475
- const menuItem = menuKeyMaps[mKey];
476
- if (menuItem) {
477
- if (expanded) {
478
- menuInitMaps[menuItem.itemId] = true;
479
- }
480
- menuItem.isExpand = !!expanded;
481
- }
482
- });
483
418
  }
484
- return (0, import_vue.nextTick)();
485
- },
486
- clearAllExpandMenu() {
487
- const { menuList } = reactData;
488
- import_xe_utils.default.eachTree(
489
- menuList,
490
- (item) => {
491
- item.isExpand = false;
492
- },
493
- { children: "childList" }
494
- );
495
- internalData.menuInitMaps = {};
496
- return (0, import_vue.nextTick)();
497
- },
498
- scrollToMenuKey(menuKey) {
499
- const { menuKeyMaps } = internalData;
500
- const menuItem = menuKeyMaps[menuKey];
501
- if (!menuItem) {
502
- return (0, import_vue.nextTick)();
419
+ const params = {
420
+ currentMenu: item,
421
+ currentOption: item.itemConf,
422
+ option: item.itemConf,
423
+ // 已废弃
424
+ menu: item
425
+ };
426
+ dispatchEvent("click", params, evnt);
427
+ };
428
+ const handleMenuMouseenter = () => {
429
+ const { lastActiveTime } = internalData;
430
+ if (lastActiveTime < Date.now() - 500) {
431
+ reactData.isEnterCollapse = true;
503
432
  }
504
- const { itemId } = menuItem;
505
- if (handleScrollToView(itemId)) {
506
- return (0, import_vue.nextTick)();
433
+ };
434
+ const handleMenuMouseleave = () => {
435
+ const $collapseBodyScrollbar = refCollapseBodyScrollbar.value;
436
+ const collapseBodyEl = refCollapseBodyElem.value;
437
+ if (collapseBodyEl) {
438
+ collapseBodyEl.scrollTop = 0;
507
439
  }
508
- return (0, import_vue.nextTick)().then(() => {
509
- handleScrollToView(itemId);
510
- });
511
- },
512
- scrollToActiveMenu() {
513
- const { activeName } = reactData;
514
- if (activeName) {
515
- return $xeMenu.scrollToMenuKey(activeName);
440
+ if ($collapseBodyScrollbar) {
441
+ $collapseBodyScrollbar.clearScroll();
516
442
  }
517
- return (0, import_vue.nextTick)().then(() => {
518
- const { activeName: activeName2 } = reactData;
519
- if (activeName2) {
520
- return $xeMenu.scrollToMenuKey(activeName2);
521
- }
522
- });
523
- }
524
- };
525
- const menuPrivateMethods = {};
526
- Object.assign($xeMenu, menuMethods, menuPrivateMethods);
527
- const renderMenuTitle = (item, itemList) => {
528
- const { icon, isExpand, hasChild } = item;
529
- const itemSlots = item.slots || {};
530
- const optionSlot = itemSlots.default || slots.option;
531
- const titleSlot = itemSlots.title || slots.optionTitle || slots["option-title"];
532
- const iconSlot = itemSlots.icon || slots.optionIcon || slots["option-icon"];
533
- const title = getMenuTitle(item);
534
- const isCollapsed = computeIsCollapsed.value;
535
- const params = {
536
- currentMenu: item,
537
- currentOption: item.itemConf,
538
- option: item.itemConf,
539
- collapsed: isCollapsed
443
+ reactData.isEnterCollapse = false;
540
444
  };
541
- return [
542
- optionSlot ? renderEmptyElement($xeMenu) : (0, import_vue.h)(
543
- "div",
544
- {
545
- class: "vxe-menu--item-link-icon"
546
- },
547
- iconSlot ? callSlot(iconSlot, params) : icon ? [
548
- (0, import_vue.h)("i", {
549
- class: icon
550
- })
551
- ] : []
552
- ),
553
- optionSlot ? (0, import_vue.h)(
554
- "div",
555
- {
556
- class: "vxe-menu--item-custom-title"
557
- },
558
- callSlot(optionSlot, params)
559
- ) : (0, import_vue.h)(
560
- "div",
561
- {
562
- class: "vxe-menu--item-link-title",
563
- title
564
- },
565
- titleSlot ? callSlot(titleSlot, params) : title
566
- ),
567
- hasChild ? (0, import_vue.h)(
568
- "div",
569
- {
570
- class: "vxe-menu--item-link-collapse",
571
- onClick(evnt) {
572
- handleClickIconCollapse(evnt, item, itemList);
573
- }
574
- },
575
- [
576
- (0, import_vue.h)("i", {
577
- class: isExpand ? getIcon().MENU_ITEM_EXPAND_OPEN : getIcon().MENU_ITEM_EXPAND_CLOSE
578
- })
579
- ]
580
- ) : renderEmptyElement($xeMenu)
581
- ];
582
- };
583
- const renderDefaultChildren = (item, itemList) => {
584
- const { itemId, itemKey, level, hasChild, isActive, isExactActive, isExpand, linkUrl, routerLink, linkTarget, childList } = item;
585
- const { isEnterCollapse } = reactData;
586
- const { menuInitMaps } = internalData;
587
- const isCollapsed = computeIsCollapsed.value;
588
- if (item.permissionCode) {
589
- if (!permission.checkVisible(item.permissionCode)) {
590
- return renderEmptyElement($xeMenu);
445
+ const callSlot = (slotFunc, params) => {
446
+ if (slotFunc) {
447
+ if (import_xe_utils.default.isString(slotFunc)) {
448
+ slotFunc = slots[slotFunc] || null;
449
+ }
450
+ if (import_xe_utils.default.isFunction(slotFunc)) {
451
+ return (0, import_vn.getSlotVNs)(slotFunc(params));
452
+ }
591
453
  }
592
- }
593
- const isExpandChild = (!isCollapsed || isEnterCollapse) && isExpand;
594
- const linkOns = {
595
- onContextmenu(evnt) {
596
- handleContextmenuEvent(evnt, item);
597
- },
598
- onClick(evnt) {
599
- handleClickMenu(evnt, item, itemList);
454
+ return [];
455
+ };
456
+ const dispatchEvent = (type, params, evnt) => {
457
+ emit(type, createEvent(evnt, { $menu: $xeMenu }, params));
458
+ };
459
+ const handleScrollToView = (itemId) => {
460
+ const wrapperEl = refElem.value;
461
+ const nemuEl = wrapperEl ? wrapperEl.querySelector(`.vxe-menu--item-wrapper[data-menu-id="${itemId}"]`) : null;
462
+ if (nemuEl) {
463
+ (0, import_dom.scrollToView)(nemuEl);
464
+ return true;
600
465
  }
466
+ return false;
601
467
  };
602
- return (0, import_vue.h)(
603
- "div",
604
- {
605
- key: itemKey,
606
- class: [
607
- "vxe-menu--item-wrapper",
608
- `vxe-menu--item-level${level}`,
609
- {
610
- "has--child": hasChild,
611
- "is--exact-active": isExactActive,
612
- "is--active": isActive,
613
- "is--expand": isExpandChild
468
+ const menuMethods = {
469
+ dispatchEvent,
470
+ setExpandByMenuKey(menuKeys, expanded) {
471
+ const { menuKeyMaps, menuInitMaps } = internalData;
472
+ if (menuKeys) {
473
+ if (!import_xe_utils.default.isArray(menuKeys)) {
474
+ menuKeys = [menuKeys];
614
475
  }
615
- ],
616
- "data-menu-id": itemId
476
+ menuKeys.forEach((mKey) => {
477
+ const menuItem = menuKeyMaps[mKey];
478
+ if (menuItem) {
479
+ if (expanded) {
480
+ menuInitMaps[menuItem.itemId] = true;
481
+ }
482
+ menuItem.isExpand = !!expanded;
483
+ }
484
+ });
485
+ }
486
+ return (0, import_vue.nextTick)();
617
487
  },
618
- [
619
- linkUrl ? (0, import_vue.h)(
620
- "a",
621
- {
622
- class: "vxe-menu--item-link is--link",
623
- href: linkUrl,
624
- target: linkTarget,
625
- ...linkOns
626
- },
627
- renderMenuTitle(item, itemList)
628
- ) : routerLink ? (0, import_vue.h)(
629
- (0, import_vue.resolveComponent)("router-link"),
630
- {
631
- class: "vxe-menu--item-link is--router",
632
- to: routerLink,
633
- target: linkTarget,
634
- ...linkOns
488
+ clearAllExpandMenu() {
489
+ const { menuList } = reactData;
490
+ import_xe_utils.default.eachTree(
491
+ menuList,
492
+ (item) => {
493
+ item.isExpand = false;
635
494
  },
636
- {
637
- default: () => renderMenuTitle(item, itemList)
495
+ { children: "childList" }
496
+ );
497
+ internalData.menuInitMaps = {};
498
+ return (0, import_vue.nextTick)();
499
+ },
500
+ scrollToMenuKey(menuKey) {
501
+ const { menuKeyMaps } = internalData;
502
+ const menuItem = menuKeyMaps[menuKey];
503
+ if (!menuItem) {
504
+ return (0, import_vue.nextTick)();
505
+ }
506
+ const { itemId } = menuItem;
507
+ if (handleScrollToView(itemId)) {
508
+ return (0, import_vue.nextTick)();
509
+ }
510
+ return (0, import_vue.nextTick)().then(() => {
511
+ handleScrollToView(itemId);
512
+ });
513
+ },
514
+ scrollToActiveMenu() {
515
+ const { activeName } = reactData;
516
+ if (activeName) {
517
+ return $xeMenu.scrollToMenuKey(activeName);
518
+ }
519
+ return (0, import_vue.nextTick)().then(() => {
520
+ const { activeName: activeName2 } = reactData;
521
+ if (activeName2) {
522
+ return $xeMenu.scrollToMenuKey(activeName2);
638
523
  }
639
- ) : (0, import_vue.h)(
524
+ });
525
+ }
526
+ };
527
+ const menuPrivateMethods = {};
528
+ Object.assign($xeMenu, menuMethods, menuPrivateMethods);
529
+ const renderMenuTitle = (item, itemList) => {
530
+ const { icon, isExpand, hasChild } = item;
531
+ const itemSlots = item.slots || {};
532
+ const optionSlot = itemSlots.default || slots.option;
533
+ const titleSlot = itemSlots.title || slots.optionTitle || slots["option-title"];
534
+ const iconSlot = itemSlots.icon || slots.optionIcon || slots["option-icon"];
535
+ const title = getMenuTitle(item);
536
+ const isCollapsed = computeIsCollapsed.value;
537
+ const params = {
538
+ currentMenu: item,
539
+ currentOption: item.itemConf,
540
+ option: item.itemConf,
541
+ collapsed: isCollapsed
542
+ };
543
+ return [
544
+ optionSlot ? renderEmptyElement($xeMenu) : (0, import_vue.h)(
640
545
  "div",
641
546
  {
642
- class: "vxe-menu--item-link is--default",
643
- ...linkOns
547
+ class: "vxe-menu--item-link-icon"
644
548
  },
645
- renderMenuTitle(item, itemList)
549
+ iconSlot ? callSlot(iconSlot, params) : icon ? [
550
+ (0, import_vue.h)("i", {
551
+ class: icon
552
+ })
553
+ ] : []
646
554
  ),
647
- hasChild ? (0, import_vue.h)(
555
+ optionSlot ? (0, import_vue.h)(
648
556
  "div",
649
557
  {
650
- class: "vxe-menu--item-group"
558
+ class: "vxe-menu--item-custom-title"
651
559
  },
652
- isExpandChild || menuInitMaps[itemId] ? childList.map((child) => renderDefaultChildren(child, childList)) : []
653
- ) : renderEmptyElement($xeMenu)
654
- ]
655
- );
656
- };
657
- const renderCollapseChildren = (item, itemList) => {
658
- const { itemId, itemKey, level, hasChild, isActive, isExactActive, routerLink, linkUrl, linkTarget, childList } = item;
659
- if (item.permissionCode) {
660
- if (!permission.checkVisible(item.permissionCode)) {
661
- return renderEmptyElement($xeMenu);
662
- }
663
- }
664
- const linkOns = {
665
- onContextmenu(evnt) {
666
- handleContextmenuEvent(evnt, item);
667
- },
668
- onClick(evnt) {
669
- handleClickMenu(evnt, item, itemList);
670
- }
671
- };
672
- return (0, import_vue.h)(
673
- "div",
674
- {
675
- key: itemKey,
676
- class: [
677
- "vxe-menu--item-wrapper",
678
- `vxe-menu--item-level${level}`,
679
- {
680
- "has--child": hasChild,
681
- "is--exact-active": isExactActive,
682
- "is--active": isActive
683
- }
684
- ],
685
- "data-menu-id": itemId
686
- },
687
- [
688
- linkUrl ? (0, import_vue.h)(
689
- "a",
690
- {
691
- class: "vxe-menu--item-link is--link",
692
- href: linkUrl,
693
- target: linkTarget,
694
- ...linkOns
695
- },
696
- renderMenuTitle(item, itemList)
697
- ) : routerLink ? (0, import_vue.h)(
698
- (0, import_vue.resolveComponent)("router-link"),
699
- {
700
- class: "vxe-menu--item-link is--router",
701
- to: routerLink,
702
- target: linkTarget,
703
- ...linkOns
704
- },
705
- {
706
- default: () => renderMenuTitle(item, itemList)
707
- }
560
+ callSlot(optionSlot, params)
708
561
  ) : (0, import_vue.h)(
709
562
  "div",
710
563
  {
711
- class: "vxe-menu--item-link is--default",
712
- ...linkOns
564
+ class: "vxe-menu--item-link-title",
565
+ title
713
566
  },
714
- renderMenuTitle(item, itemList)
567
+ titleSlot ? callSlot(titleSlot, params) : title
715
568
  ),
716
569
  hasChild ? (0, import_vue.h)(
717
570
  "div",
718
571
  {
719
- class: "vxe-menu--item-group"
572
+ class: "vxe-menu--item-link-collapse",
573
+ onClick(evnt) {
574
+ handleClickIconCollapse(evnt, item, itemList);
575
+ }
720
576
  },
721
- childList.map((child) => renderDefaultChildren(child, childList))
577
+ [
578
+ (0, import_vue.h)("i", {
579
+ class: isExpand ? getIcon().MENU_ITEM_EXPAND_OPEN : getIcon().MENU_ITEM_EXPAND_CLOSE
580
+ })
581
+ ]
722
582
  ) : renderEmptyElement($xeMenu)
723
- ]
724
- );
725
- };
726
- const renderVN = () => {
727
- const { loading, collapseFixed, appendTo } = props;
728
- const { initialized, menuList, collapseStyle, isEnterCollapse } = reactData;
729
- const vSize = computeSize.value;
730
- const isVScrollbar = computeIsVScrollbar.value;
731
- const isCollapsed = computeIsCollapsed.value;
732
- const currBorder = computeCurrBorder.value;
733
- const varStyle = computeVarStyle.value;
734
- const scrollbarOpts = computeScrollbarOpts.value;
735
- const { viewClassName, viewInnerClassName } = scrollbarOpts;
736
- const headerSlot = slots.header;
737
- const footerSlot = slots.footer;
738
- let ons = {};
739
- if (collapseFixed) {
740
- ons = {
741
- onMouseenter: handleMenuMouseenter,
742
- onMouseleave: handleMenuMouseleave
583
+ ];
584
+ };
585
+ const renderDefaultChildren = (item, itemList) => {
586
+ const { itemId, itemKey, level, hasChild, isActive, isExactActive, isExpand, linkUrl, routerLink, linkTarget, childList } = item;
587
+ const { isEnterCollapse } = reactData;
588
+ const { menuInitMaps } = internalData;
589
+ const isCollapsed = computeIsCollapsed.value;
590
+ if (item.permissionCode) {
591
+ if (!permission.checkVisible(item.permissionCode)) {
592
+ return renderEmptyElement($xeMenu);
593
+ }
594
+ }
595
+ const isExpandChild = (!isCollapsed || isEnterCollapse) && isExpand;
596
+ const linkOns = {
597
+ onContextmenu(evnt) {
598
+ handleContextmenuEvent(evnt, item);
599
+ },
600
+ onClick(evnt) {
601
+ handleClickMenu(evnt, item, itemList);
602
+ }
743
603
  };
744
- }
745
- const stParams = { collapsed: isCollapsed };
746
- return (0, import_vue.h)(
747
- "div",
748
- {
749
- ref: refElem,
750
- class: [
751
- "vxe-menu",
752
- {
753
- [`border--${currBorder}`]: currBorder,
754
- [`size--${vSize}`]: vSize,
755
- "is--collapsed": isCollapsed,
756
- "is--loading": loading
757
- }
604
+ return (0, import_vue.h)(
605
+ "div",
606
+ {
607
+ key: itemKey,
608
+ class: [
609
+ "vxe-menu--item-wrapper",
610
+ `vxe-menu--item-level${level}`,
611
+ {
612
+ "has--child": hasChild,
613
+ "is--exact-active": isExactActive,
614
+ "is--active": isActive,
615
+ "is--expand": isExpandChild
616
+ }
617
+ ],
618
+ "data-menu-id": itemId
619
+ },
620
+ [
621
+ linkUrl ? (0, import_vue.h)(
622
+ "a",
623
+ {
624
+ class: "vxe-menu--item-link is--link",
625
+ href: linkUrl,
626
+ target: linkTarget,
627
+ ...linkOns
628
+ },
629
+ renderMenuTitle(item, itemList)
630
+ ) : routerLink ? (0, import_vue.h)(
631
+ (0, import_vue.resolveComponent)("router-link"),
632
+ {
633
+ class: "vxe-menu--item-link is--router",
634
+ to: routerLink,
635
+ target: linkTarget,
636
+ ...linkOns
637
+ },
638
+ {
639
+ default: () => renderMenuTitle(item, itemList)
640
+ }
641
+ ) : (0, import_vue.h)(
642
+ "div",
643
+ {
644
+ class: "vxe-menu--item-link is--default",
645
+ ...linkOns
646
+ },
647
+ renderMenuTitle(item, itemList)
648
+ ),
649
+ hasChild ? (0, import_vue.h)(
650
+ "div",
651
+ {
652
+ class: "vxe-menu--item-group"
653
+ },
654
+ isExpandChild || menuInitMaps[itemId] ? childList.map((child) => renderDefaultChildren(child, childList)) : []
655
+ ) : renderEmptyElement($xeMenu)
758
656
  ]
759
- },
760
- [
761
- headerSlot ? (0, import_vue.h)(
762
- "div",
763
- {
764
- class: "vxe-menu--header"
765
- },
766
- headerSlot(stParams)
767
- ) : renderEmptyElement($xeMenu),
768
- (0, import_vue.h)(
769
- "div",
770
- {
771
- class: "vxe-menu--body"
772
- },
773
- menuList.map((child) => isCollapsed ? renderCollapseChildren(child, menuList) : renderDefaultChildren(child, menuList))
774
- ),
775
- footerSlot ? (0, import_vue.h)(
776
- "div",
777
- {
778
- class: "vxe-menu--footer"
779
- },
780
- footerSlot(stParams)
781
- ) : renderEmptyElement($xeMenu),
782
- (0, import_vue.h)(
783
- import_vue.Teleport,
784
- {
785
- to: (0, import_dom.getPopupContainer)(appendTo),
786
- disabled: !initialized
787
- },
788
- [
789
- (0, import_vue.h)(
790
- "div",
791
- {
792
- ref: refCollapseElem,
793
- class: [
794
- "vxe-menu--collapse-wrapper",
795
- {
796
- [`size--${vSize}`]: vSize,
797
- "is--collapsed": isCollapsed,
798
- "is--enter": isEnterCollapse,
799
- "is--loading": loading
800
- }
801
- ],
802
- style: Object.assign({}, varStyle, collapseStyle),
803
- ...ons
804
- },
805
- isCollapsed ? [
806
- headerSlot ? (0, import_vue.h)(
807
- "div",
808
- {
809
- class: "vxe-menu--header"
810
- },
811
- headerSlot(stParams)
812
- ) : renderEmptyElement($xeMenu),
813
- isVScrollbar && isEnterCollapse ? (0, import_vue.h)(
814
- import_scrollbar.default,
815
- {
816
- ref: refCollapseBodyScrollbar,
817
- class: "vxe-menu--scrollbar-body",
818
- ...scrollbarOpts,
819
- viewClassName: "vxe-menu--scrollbar-body-view" + (viewClassName ? " " + viewClassName : ""),
820
- viewInnerClassName: "vxe-menu--scrollbar-body-inner" + (viewClassName ? " " + viewInnerClassName : "")
821
- },
822
- {
823
- default: () => menuList.map((child) => renderDefaultChildren(child, menuList))
824
- }
825
- ) : (0, import_vue.h)(
826
- "div",
827
- {
828
- ref: refCollapseBodyElem,
829
- class: "vxe-menu--body"
830
- },
831
- menuList.map((child) => renderDefaultChildren(child, menuList))
832
- ),
833
- footerSlot ? (0, import_vue.h)(
834
- "div",
835
- {
836
- class: "vxe-menu--footer"
837
- },
838
- footerSlot(stParams)
839
- ) : renderEmptyElement($xeMenu)
840
- ] : []
841
- )
657
+ );
658
+ };
659
+ const renderCollapseChildren = (item, itemList) => {
660
+ const { itemId, itemKey, level, hasChild, isActive, isExactActive, routerLink, linkUrl, linkTarget, childList } = item;
661
+ if (item.permissionCode) {
662
+ if (!permission.checkVisible(item.permissionCode)) {
663
+ return renderEmptyElement($xeMenu);
664
+ }
665
+ }
666
+ const linkOns = {
667
+ onContextmenu(evnt) {
668
+ handleContextmenuEvent(evnt, item);
669
+ },
670
+ onClick(evnt) {
671
+ handleClickMenu(evnt, item, itemList);
672
+ }
673
+ };
674
+ return (0, import_vue.h)(
675
+ "div",
676
+ {
677
+ key: itemKey,
678
+ class: [
679
+ "vxe-menu--item-wrapper",
680
+ `vxe-menu--item-level${level}`,
681
+ {
682
+ "has--child": hasChild,
683
+ "is--exact-active": isExactActive,
684
+ "is--active": isActive
685
+ }
686
+ ],
687
+ "data-menu-id": itemId
688
+ },
689
+ [
690
+ linkUrl ? (0, import_vue.h)(
691
+ "a",
692
+ {
693
+ class: "vxe-menu--item-link is--link",
694
+ href: linkUrl,
695
+ target: linkTarget,
696
+ ...linkOns
697
+ },
698
+ renderMenuTitle(item, itemList)
699
+ ) : routerLink ? (0, import_vue.h)(
700
+ (0, import_vue.resolveComponent)("router-link"),
701
+ {
702
+ class: "vxe-menu--item-link is--router",
703
+ to: routerLink,
704
+ target: linkTarget,
705
+ ...linkOns
706
+ },
707
+ {
708
+ default: () => renderMenuTitle(item, itemList)
709
+ }
710
+ ) : (0, import_vue.h)(
711
+ "div",
712
+ {
713
+ class: "vxe-menu--item-link is--default",
714
+ ...linkOns
715
+ },
716
+ renderMenuTitle(item, itemList)
717
+ ),
718
+ hasChild ? (0, import_vue.h)(
719
+ "div",
720
+ {
721
+ class: "vxe-menu--item-group"
722
+ },
723
+ childList.map((child) => renderDefaultChildren(child, childList))
724
+ ) : renderEmptyElement($xeMenu)
725
+ ]
726
+ );
727
+ };
728
+ const renderVN = () => {
729
+ const { loading, collapseFixed, appendTo } = props;
730
+ const { initialized, menuList, collapseStyle, isEnterCollapse } = reactData;
731
+ const vSize = computeSize.value;
732
+ const isVScrollbar = computeIsVScrollbar.value;
733
+ const isCollapsed = computeIsCollapsed.value;
734
+ const currBorder = computeCurrBorder.value;
735
+ const varStyle = computeVarStyle.value;
736
+ const scrollbarOpts = computeScrollbarOpts.value;
737
+ const { viewClassName, viewInnerClassName } = scrollbarOpts;
738
+ const headerSlot = slots.header;
739
+ const footerSlot = slots.footer;
740
+ let ons = {};
741
+ if (collapseFixed) {
742
+ ons = {
743
+ onMouseenter: handleMenuMouseenter,
744
+ onMouseleave: handleMenuMouseleave
745
+ };
746
+ }
747
+ const stParams = { collapsed: isCollapsed };
748
+ return (0, import_vue.h)(
749
+ "div",
750
+ {
751
+ ref: refElem,
752
+ class: [
753
+ "vxe-menu",
754
+ {
755
+ [`border--${currBorder}`]: currBorder,
756
+ [`size--${vSize}`]: vSize,
757
+ "is--collapsed": isCollapsed,
758
+ "is--loading": loading
759
+ }
842
760
  ]
843
- ),
844
- /**
845
- * 加载中
846
- */
847
- (0, import_vue.h)(import_loading.default, {
848
- class: "vxe-menu-view--loading",
849
- modelValue: loading
850
- })
851
- ]
761
+ },
762
+ [
763
+ headerSlot ? (0, import_vue.h)(
764
+ "div",
765
+ {
766
+ class: "vxe-menu--header"
767
+ },
768
+ headerSlot(stParams)
769
+ ) : renderEmptyElement($xeMenu),
770
+ (0, import_vue.h)(
771
+ "div",
772
+ {
773
+ class: "vxe-menu--body"
774
+ },
775
+ menuList.map((child) => isCollapsed ? renderCollapseChildren(child, menuList) : renderDefaultChildren(child, menuList))
776
+ ),
777
+ footerSlot ? (0, import_vue.h)(
778
+ "div",
779
+ {
780
+ class: "vxe-menu--footer"
781
+ },
782
+ footerSlot(stParams)
783
+ ) : renderEmptyElement($xeMenu),
784
+ (0, import_vue.h)(
785
+ import_vue.Teleport,
786
+ {
787
+ to: (0, import_dom.getPopupContainer)(appendTo),
788
+ disabled: !initialized
789
+ },
790
+ [
791
+ (0, import_vue.h)(
792
+ "div",
793
+ {
794
+ ref: refCollapseElem,
795
+ class: [
796
+ "vxe-menu--collapse-wrapper",
797
+ {
798
+ [`size--${vSize}`]: vSize,
799
+ "is--collapsed": isCollapsed,
800
+ "is--enter": isEnterCollapse,
801
+ "is--loading": loading
802
+ }
803
+ ],
804
+ style: Object.assign({}, varStyle, collapseStyle),
805
+ ...ons
806
+ },
807
+ isCollapsed ? [
808
+ headerSlot ? (0, import_vue.h)(
809
+ "div",
810
+ {
811
+ class: "vxe-menu--header"
812
+ },
813
+ headerSlot(stParams)
814
+ ) : renderEmptyElement($xeMenu),
815
+ isVScrollbar && isEnterCollapse ? (0, import_vue.h)(
816
+ import_scrollbar.default,
817
+ {
818
+ ref: refCollapseBodyScrollbar,
819
+ class: "vxe-menu--scrollbar-body",
820
+ ...scrollbarOpts,
821
+ viewClassName: "vxe-menu--scrollbar-body-view" + (viewClassName ? " " + viewClassName : ""),
822
+ viewInnerClassName: "vxe-menu--scrollbar-body-inner" + (viewClassName ? " " + viewInnerClassName : "")
823
+ },
824
+ {
825
+ default: () => menuList.map((child) => renderDefaultChildren(child, menuList))
826
+ }
827
+ ) : (0, import_vue.h)(
828
+ "div",
829
+ {
830
+ ref: refCollapseBodyElem,
831
+ class: "vxe-menu--body"
832
+ },
833
+ menuList.map((child) => renderDefaultChildren(child, menuList))
834
+ ),
835
+ footerSlot ? (0, import_vue.h)(
836
+ "div",
837
+ {
838
+ class: "vxe-menu--footer"
839
+ },
840
+ footerSlot(stParams)
841
+ ) : renderEmptyElement($xeMenu)
842
+ ] : []
843
+ )
844
+ ]
845
+ ),
846
+ /**
847
+ * 加载中
848
+ */
849
+ (0, import_vue.h)(import_loading.default, {
850
+ class: "vxe-menu-view--loading",
851
+ modelValue: loading
852
+ })
853
+ ]
854
+ );
855
+ };
856
+ const optFlag = (0, import_vue.ref)(0);
857
+ (0, import_vue.watch)(
858
+ () => props.options ? props.options.length : -1,
859
+ () => {
860
+ optFlag.value++;
861
+ }
852
862
  );
853
- };
854
- const optFlag = (0, import_vue.ref)(0);
855
- (0, import_vue.watch)(
856
- () => props.options ? props.options.length : -1,
857
- () => {
858
- optFlag.value++;
859
- }
860
- );
861
- (0, import_vue.watch)(
862
- () => props.options,
863
- () => {
864
- optFlag.value++;
865
- }
866
- );
867
- (0, import_vue.watch)(optFlag, () => {
868
- updateMenuConfig();
869
- updateActiveMenu(true);
870
- (0, import_vue.nextTick)(() => {
871
- $xeMenu.scrollToActiveMenu();
872
- });
873
- });
874
- (0, import_vue.watch)(
875
- () => props.modelValue,
876
- (val) => {
877
- reactData.activeName = val;
878
- }
879
- );
880
- (0, import_vue.watch)(
881
- () => reactData.activeName,
882
- () => {
863
+ (0, import_vue.watch)(
864
+ () => props.options,
865
+ () => {
866
+ optFlag.value++;
867
+ }
868
+ );
869
+ (0, import_vue.watch)(optFlag, () => {
870
+ updateMenuConfig();
883
871
  updateActiveMenu(true);
884
- }
885
- );
886
- (0, import_vue.watch)(computeIsCollapsed, () => {
887
- handleCollapseMenu();
888
- });
889
- (0, import_vue.onMounted)(() => {
890
- const { menuConfig } = props;
891
- const VxeUIContextMenu = import_core.VxeUI.getComponent("VxeContextMenu");
892
- if (menuConfig && !VxeUIContextMenu) {
893
- errLog("vxe.error.reqComp", ["vxe-context-menu"]);
894
- }
895
- globalEvents.on($xeMenu, "resize", updateCollapseStyle);
896
- updateCollapseStyle();
897
- (0, import_vue.nextTick)(() => {
898
- $xeMenu.scrollToActiveMenu();
872
+ (0, import_vue.nextTick)(() => {
873
+ $xeMenu.scrollToActiveMenu();
874
+ });
899
875
  });
900
- });
901
- (0, import_vue.onBeforeUnmount)(() => {
902
- globalEvents.off($xeMenu, "resize");
903
- import_xe_utils.default.assign(reactData, createReactData());
904
- import_xe_utils.default.assign(internalData, createInternalData());
905
- });
906
- reactData.initialized = !!props.collapsed;
907
- reactData.activeName = props.modelValue;
908
- updateMenuConfig();
909
- updateActiveMenu(true);
910
- $xeMenu.renderVN = renderVN;
911
- return $xeMenu;
912
- },
913
- render() {
914
- return this.renderVN();
915
- }
916
- });
876
+ (0, import_vue.watch)(
877
+ () => props.modelValue,
878
+ (val) => {
879
+ reactData.activeName = val;
880
+ }
881
+ );
882
+ (0, import_vue.watch)(
883
+ () => reactData.activeName,
884
+ () => {
885
+ updateActiveMenu(true);
886
+ }
887
+ );
888
+ (0, import_vue.watch)(computeIsCollapsed, () => {
889
+ handleCollapseMenu();
890
+ });
891
+ (0, import_vue.onMounted)(() => {
892
+ const { menuConfig } = props;
893
+ const VxeUIContextMenu = import_core.VxeUI.getComponent("VxeContextMenu");
894
+ if (menuConfig && !VxeUIContextMenu) {
895
+ errLog("vxe.error.reqComp", ["vxe-context-menu"]);
896
+ }
897
+ globalEvents.on($xeMenu, "resize", updateCollapseStyle);
898
+ updateCollapseStyle();
899
+ (0, import_vue.nextTick)(() => {
900
+ $xeMenu.scrollToActiveMenu();
901
+ });
902
+ });
903
+ (0, import_vue.onBeforeUnmount)(() => {
904
+ globalEvents.off($xeMenu, "resize");
905
+ import_xe_utils.default.assign(reactData, createReactData());
906
+ import_xe_utils.default.assign(internalData, createInternalData());
907
+ });
908
+ reactData.initialized = !!props.collapsed;
909
+ reactData.activeName = props.modelValue;
910
+ updateMenuConfig();
911
+ updateActiveMenu(true);
912
+ $xeMenu.renderVN = renderVN;
913
+ return $xeMenu;
914
+ },
915
+ render() {
916
+ return this.renderVN();
917
+ }
918
+ })
919
+ );