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