vft 0.0.16 → 0.0.18

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 (220) hide show
  1. package/dist/index.css +1 -1
  2. package/es/component.mjs +21 -11
  3. package/es/component.mjs.map +1 -1
  4. package/es/components/back-top/back-top.vue2.mjs +16 -11
  5. package/es/components/back-top/back-top.vue2.mjs.map +1 -1
  6. package/es/components/context-menu/context-menu.vue2.mjs +26 -21
  7. package/es/components/context-menu/context-menu.vue2.mjs.map +1 -1
  8. package/es/components/footer-layout/footer-layout.vue.d.ts +13 -0
  9. package/es/components/footer-layout/footer-layout.vue.mjs +5 -0
  10. package/es/components/footer-layout/footer-layout.vue.mjs.map +1 -0
  11. package/es/components/footer-layout/footer-layout.vue2.mjs +51 -0
  12. package/es/components/footer-layout/footer-layout.vue2.mjs.map +1 -0
  13. package/es/components/footer-layout/index.d.ts +12 -0
  14. package/es/components/footer-layout/index.mjs +11 -0
  15. package/es/components/footer-layout/index.mjs.map +1 -0
  16. package/es/components/footer-layout/style/css.d.ts +0 -0
  17. package/es/components/footer-layout/style/css.mjs +3 -0
  18. package/es/components/footer-layout/style/css.mjs.map +1 -0
  19. package/es/components/footer-layout/style/index.d.ts +0 -0
  20. package/es/components/footer-layout/style/index.mjs +3 -0
  21. package/es/components/footer-layout/style/index.mjs.map +1 -0
  22. package/es/components/header-layout/header-layout.vue.d.ts +14 -0
  23. package/es/components/header-layout/header-layout.vue.mjs +5 -0
  24. package/es/components/header-layout/header-layout.vue.mjs.map +1 -0
  25. package/es/components/header-layout/header-layout.vue2.mjs +52 -0
  26. package/es/components/header-layout/header-layout.vue2.mjs.map +1 -0
  27. package/es/components/header-layout/index.d.ts +12 -0
  28. package/es/components/header-layout/index.mjs +11 -0
  29. package/es/components/header-layout/index.mjs.map +1 -0
  30. package/es/components/header-layout/style/css.d.ts +0 -0
  31. package/es/components/header-layout/style/css.mjs +3 -0
  32. package/es/components/header-layout/style/css.mjs.map +1 -0
  33. package/es/components/header-layout/style/index.d.ts +0 -0
  34. package/es/components/header-layout/style/index.mjs +3 -0
  35. package/es/components/header-layout/style/index.mjs.map +1 -0
  36. package/es/components/iframe-layout/iframe-layout.vue.d.ts +14 -0
  37. package/es/components/iframe-layout/iframe-layout.vue.mjs +5 -0
  38. package/es/components/iframe-layout/iframe-layout.vue.mjs.map +1 -0
  39. package/es/components/iframe-layout/iframe-layout.vue2.mjs +41 -0
  40. package/es/components/iframe-layout/iframe-layout.vue2.mjs.map +1 -0
  41. package/es/components/iframe-layout/iframe-page.vue.d.ts +13 -0
  42. package/es/components/iframe-layout/iframe-page.vue.mjs +5 -0
  43. package/es/components/iframe-layout/iframe-page.vue.mjs.map +1 -0
  44. package/es/components/iframe-layout/iframe-page.vue2.mjs +29 -0
  45. package/es/components/iframe-layout/iframe-page.vue2.mjs.map +1 -0
  46. package/es/components/iframe-layout/index.d.ts +12 -0
  47. package/es/components/iframe-layout/index.mjs +11 -0
  48. package/es/components/iframe-layout/index.mjs.map +1 -0
  49. package/es/components/iframe-layout/style/css.d.ts +0 -0
  50. package/es/components/iframe-layout/style/css.mjs +3 -0
  51. package/es/components/iframe-layout/style/css.mjs.map +1 -0
  52. package/es/components/iframe-layout/style/index.d.ts +0 -0
  53. package/es/components/iframe-layout/style/index.mjs +3 -0
  54. package/es/components/iframe-layout/style/index.mjs.map +1 -0
  55. package/es/components/index.d.ts +5 -0
  56. package/es/components/index.mjs +49 -39
  57. package/es/components/index.mjs.map +1 -1
  58. package/es/components/logo/index.d.ts +29 -0
  59. package/es/components/logo/index.mjs +11 -0
  60. package/es/components/logo/index.mjs.map +1 -0
  61. package/es/components/logo/logo.vue.d.ts +29 -0
  62. package/es/components/logo/logo.vue.mjs +5 -0
  63. package/es/components/logo/logo.vue.mjs.map +1 -0
  64. package/es/components/logo/logo.vue2.mjs +47 -0
  65. package/es/components/logo/logo.vue2.mjs.map +1 -0
  66. package/es/components/logo/style/css.d.ts +0 -0
  67. package/es/components/logo/style/css.mjs +3 -0
  68. package/es/components/logo/style/css.mjs.map +1 -0
  69. package/es/components/logo/style/index.d.ts +0 -0
  70. package/es/components/logo/style/index.mjs +3 -0
  71. package/es/components/logo/style/index.mjs.map +1 -0
  72. package/es/components/logo/types.d.ts +6 -0
  73. package/es/components/logo/types.mjs +2 -0
  74. package/es/components/logo/types.mjs.map +1 -0
  75. package/es/components/menu/menu-item.vue2.mjs +17 -12
  76. package/es/components/menu/menu-item.vue2.mjs.map +1 -1
  77. package/es/components/menu/sub-menu.vue2.mjs +32 -27
  78. package/es/components/menu/sub-menu.vue2.mjs.map +1 -1
  79. package/es/components/multiple-tabs/multiple-tabs.vue2.mjs +7 -2
  80. package/es/components/multiple-tabs/multiple-tabs.vue2.mjs.map +1 -1
  81. package/es/components/multiple-tabs/tab-content.vue2.mjs +12 -7
  82. package/es/components/multiple-tabs/tab-content.vue2.mjs.map +1 -1
  83. package/es/components/result/result.vue2.mjs +17 -12
  84. package/es/components/result/result.vue2.mjs.map +1 -1
  85. package/es/components/router-view-content/index.d.ts +52 -0
  86. package/es/components/router-view-content/index.mjs +11 -0
  87. package/es/components/router-view-content/index.mjs.map +1 -0
  88. package/es/components/router-view-content/router-view-content.vue.d.ts +54 -0
  89. package/es/components/router-view-content/router-view-content.vue.mjs +5 -0
  90. package/es/components/router-view-content/router-view-content.vue.mjs.map +1 -0
  91. package/es/components/router-view-content/router-view-content.vue2.mjs +58 -0
  92. package/es/components/router-view-content/router-view-content.vue2.mjs.map +1 -0
  93. package/es/components/tabs/tab-nav.vue2.mjs +7 -2
  94. package/es/components/tabs/tab-nav.vue2.mjs.map +1 -1
  95. package/es/index.mjs +97 -87
  96. package/es/index.mjs.map +1 -1
  97. package/es/package.json.mjs +1 -1
  98. package/es/style.css +1 -1
  99. package/es/theme-style/src/footer-layout.scss.mjs +5 -0
  100. package/es/theme-style/src/footer-layout.scss.mjs.map +1 -0
  101. package/es/theme-style/src/header-layout.scss.mjs +5 -0
  102. package/es/theme-style/src/header-layout.scss.mjs.map +1 -0
  103. package/es/theme-style/src/iframe-layout.scss.mjs +5 -0
  104. package/es/theme-style/src/iframe-layout.scss.mjs.map +1 -0
  105. package/es/theme-style/src/logo.scss.mjs +5 -0
  106. package/es/theme-style/src/logo.scss.mjs.map +1 -0
  107. package/lib/component.js +1 -1
  108. package/lib/component.js.map +1 -1
  109. package/lib/components/back-top/back-top.vue2.js +1 -1
  110. package/lib/components/back-top/back-top.vue2.js.map +1 -1
  111. package/lib/components/context-menu/context-menu.vue2.js +1 -1
  112. package/lib/components/context-menu/context-menu.vue2.js.map +1 -1
  113. package/lib/components/footer-layout/footer-layout.vue.d.ts +13 -0
  114. package/lib/components/footer-layout/footer-layout.vue.js +2 -0
  115. package/lib/components/footer-layout/footer-layout.vue.js.map +1 -0
  116. package/lib/components/footer-layout/footer-layout.vue2.js +2 -0
  117. package/lib/components/footer-layout/footer-layout.vue2.js.map +1 -0
  118. package/lib/components/footer-layout/index.d.ts +12 -0
  119. package/lib/components/footer-layout/index.js +2 -0
  120. package/lib/components/footer-layout/index.js.map +1 -0
  121. package/lib/components/footer-layout/style/css.d.ts +0 -0
  122. package/lib/components/footer-layout/style/css.js +2 -0
  123. package/lib/components/footer-layout/style/css.js.map +1 -0
  124. package/lib/components/footer-layout/style/index.d.ts +0 -0
  125. package/lib/components/footer-layout/style/index.js +2 -0
  126. package/lib/components/footer-layout/style/index.js.map +1 -0
  127. package/lib/components/header-layout/header-layout.vue.d.ts +14 -0
  128. package/lib/components/header-layout/header-layout.vue.js +2 -0
  129. package/lib/components/header-layout/header-layout.vue.js.map +1 -0
  130. package/lib/components/header-layout/header-layout.vue2.js +2 -0
  131. package/lib/components/header-layout/header-layout.vue2.js.map +1 -0
  132. package/lib/components/header-layout/index.d.ts +12 -0
  133. package/lib/components/header-layout/index.js +2 -0
  134. package/lib/components/header-layout/index.js.map +1 -0
  135. package/lib/components/header-layout/style/css.d.ts +0 -0
  136. package/lib/components/header-layout/style/css.js +2 -0
  137. package/lib/components/header-layout/style/css.js.map +1 -0
  138. package/lib/components/header-layout/style/index.d.ts +0 -0
  139. package/lib/components/header-layout/style/index.js +2 -0
  140. package/lib/components/header-layout/style/index.js.map +1 -0
  141. package/lib/components/iframe-layout/iframe-layout.vue.d.ts +14 -0
  142. package/lib/components/iframe-layout/iframe-layout.vue.js +2 -0
  143. package/lib/components/iframe-layout/iframe-layout.vue.js.map +1 -0
  144. package/lib/components/iframe-layout/iframe-layout.vue2.js +2 -0
  145. package/lib/components/iframe-layout/iframe-layout.vue2.js.map +1 -0
  146. package/lib/components/iframe-layout/iframe-page.vue.d.ts +13 -0
  147. package/lib/components/iframe-layout/iframe-page.vue.js +2 -0
  148. package/lib/components/iframe-layout/iframe-page.vue.js.map +1 -0
  149. package/lib/components/iframe-layout/iframe-page.vue2.js +2 -0
  150. package/lib/components/iframe-layout/iframe-page.vue2.js.map +1 -0
  151. package/lib/components/iframe-layout/index.d.ts +12 -0
  152. package/lib/components/iframe-layout/index.js +2 -0
  153. package/lib/components/iframe-layout/index.js.map +1 -0
  154. package/lib/components/iframe-layout/style/css.d.ts +0 -0
  155. package/lib/components/iframe-layout/style/css.js +2 -0
  156. package/lib/components/iframe-layout/style/css.js.map +1 -0
  157. package/lib/components/iframe-layout/style/index.d.ts +0 -0
  158. package/lib/components/iframe-layout/style/index.js +2 -0
  159. package/lib/components/iframe-layout/style/index.js.map +1 -0
  160. package/lib/components/index.d.ts +5 -0
  161. package/lib/components/index.js +1 -1
  162. package/lib/components/logo/index.d.ts +29 -0
  163. package/lib/components/logo/index.js +2 -0
  164. package/lib/components/logo/index.js.map +1 -0
  165. package/lib/components/logo/logo.vue.d.ts +29 -0
  166. package/lib/components/logo/logo.vue.js +2 -0
  167. package/lib/components/logo/logo.vue.js.map +1 -0
  168. package/lib/components/logo/logo.vue2.js +2 -0
  169. package/lib/components/logo/logo.vue2.js.map +1 -0
  170. package/lib/components/logo/style/css.d.ts +0 -0
  171. package/lib/components/logo/style/css.js +2 -0
  172. package/lib/components/logo/style/css.js.map +1 -0
  173. package/lib/components/logo/style/index.d.ts +0 -0
  174. package/lib/components/logo/style/index.js +2 -0
  175. package/lib/components/logo/style/index.js.map +1 -0
  176. package/lib/components/logo/types.d.ts +6 -0
  177. package/lib/components/logo/types.js +2 -0
  178. package/lib/components/logo/types.js.map +1 -0
  179. package/lib/components/menu/menu-item.vue2.js +1 -1
  180. package/lib/components/menu/menu-item.vue2.js.map +1 -1
  181. package/lib/components/menu/sub-menu.vue2.js +1 -1
  182. package/lib/components/menu/sub-menu.vue2.js.map +1 -1
  183. package/lib/components/multiple-tabs/multiple-tabs.vue2.js +1 -1
  184. package/lib/components/multiple-tabs/multiple-tabs.vue2.js.map +1 -1
  185. package/lib/components/multiple-tabs/tab-content.vue2.js +1 -1
  186. package/lib/components/multiple-tabs/tab-content.vue2.js.map +1 -1
  187. package/lib/components/result/result.vue2.js +1 -1
  188. package/lib/components/result/result.vue2.js.map +1 -1
  189. package/lib/components/router-view-content/index.d.ts +52 -0
  190. package/lib/components/router-view-content/index.js +2 -0
  191. package/lib/components/router-view-content/index.js.map +1 -0
  192. package/lib/components/router-view-content/router-view-content.vue.d.ts +54 -0
  193. package/lib/components/router-view-content/router-view-content.vue.js +2 -0
  194. package/lib/components/router-view-content/router-view-content.vue.js.map +1 -0
  195. package/lib/components/router-view-content/router-view-content.vue2.js +2 -0
  196. package/lib/components/router-view-content/router-view-content.vue2.js.map +1 -0
  197. package/lib/components/tabs/tab-nav.vue2.js +1 -1
  198. package/lib/components/tabs/tab-nav.vue2.js.map +1 -1
  199. package/lib/index.js +1 -1
  200. package/lib/index.js.map +1 -1
  201. package/lib/package.json.js +1 -1
  202. package/lib/theme-style/src/footer-layout.scss.js +2 -0
  203. package/lib/theme-style/src/footer-layout.scss.js.map +1 -0
  204. package/lib/theme-style/src/header-layout.scss.js +2 -0
  205. package/lib/theme-style/src/header-layout.scss.js.map +1 -0
  206. package/lib/theme-style/src/iframe-layout.scss.js +2 -0
  207. package/lib/theme-style/src/iframe-layout.scss.js.map +1 -0
  208. package/lib/theme-style/src/logo.scss.js +2 -0
  209. package/lib/theme-style/src/logo.scss.js.map +1 -0
  210. package/package.json +1 -1
  211. package/theme-style/index.css +1 -1
  212. package/theme-style/src/footer-layout.scss +34 -0
  213. package/theme-style/src/header-layout.scss +38 -0
  214. package/theme-style/src/iframe-layout.scss +8 -0
  215. package/theme-style/src/index.scss +4 -0
  216. package/theme-style/src/logo.scss +34 -0
  217. package/theme-style/vft-footer-layout.css +1 -0
  218. package/theme-style/vft-header-layout.css +1 -0
  219. package/theme-style/vft-iframe-layout.css +1 -0
  220. package/theme-style/vft-logo.css +1 -0
@@ -22,12 +22,17 @@ import "../popover/index.mjs";
22
22
  import "./index.mjs";
23
23
  import "@vft/use";
24
24
  import "../multiple-tabs/index.mjs";
25
- const W = ["title"], b = (
25
+ import "../header-layout/index.mjs";
26
+ import "../footer-layout/index.mjs";
27
+ import "../iframe-layout/index.mjs";
28
+ import "../router-view-content/index.mjs";
29
+ import "../logo/index.mjs";
30
+ const W = ["title"], p = (
26
31
  /* hoist-static*/
27
32
  k("menu-item")
28
33
  ), X = S({
29
- name: b.b()
30
- }), Ue = /* @__PURE__ */ S({
34
+ name: p.b()
35
+ }), Ve = /* @__PURE__ */ S({
31
36
  ...X,
32
37
  props: {
33
38
  index: null,
@@ -42,13 +47,13 @@ const W = ["title"], b = (
42
47
  },
43
48
  emits: ["click"],
44
49
  setup(e, { emit: T }) {
45
- const y = M(), w = k("menu"), a = k("menu-item"), n = e.isAloneUse ? null : V("rootMenu");
46
- !n && !e.isAloneUse && P(b.b(), "can not inject root menu");
47
- const { parentMenu: p, indexPath: g } = L(
48
- y,
50
+ const b = M(), w = k("menu"), a = k("menu-item"), n = e.isAloneUse ? null : V("rootMenu");
51
+ !n && !e.isAloneUse && P(p.b(), "can not inject root menu");
52
+ const { parentMenu: y, indexPath: g } = L(
53
+ b,
49
54
  r(() => e.index)
50
- ), i = e.isAloneUse ? null : V(`subMenu:${p.value.uid}`);
51
- !i && !e.isAloneUse && P(b.b(), "can not inject sub menu");
55
+ ), i = e.isAloneUse ? null : V(`subMenu:${y.value.uid}`);
56
+ !i && !e.isAloneUse && P(p.b(), "can not inject sub menu");
52
57
  const h = r(() => e.index === (n == null ? void 0 : n.activeIndex)), l = Y({
53
58
  index: e.index,
54
59
  indexPath: g,
@@ -59,7 +64,7 @@ const W = ["title"], b = (
59
64
  indexPath: g.value,
60
65
  route: e.route
61
66
  }), T("click", l));
62
- }, x = r(() => H(e.icon, "icon")), A = r(() => J(y, "title"));
67
+ }, x = r(() => H(e.icon, "icon")), A = r(() => J(b, "title"));
63
68
  return D(() => {
64
69
  e.isAloneUse || (i == null || i.addSubMenu(l), n == null || n.addMenuItem(l));
65
70
  }), F(() => {
@@ -77,7 +82,7 @@ const W = ["title"], b = (
77
82
  tabindex: "-1",
78
83
  onClick: z
79
84
  }, [
80
- ((B = (U = t(p)) == null ? void 0 : U.type) == null ? void 0 : B.name) === "vft-menu" && ((C = t(n)) != null && C.props.collapse) && m.$slots.title ? (o(), s(t(R), {
85
+ ((B = (U = t(y)) == null ? void 0 : U.type) == null ? void 0 : B.name) === "vft-menu" && ((C = t(n)) != null && C.props.collapse) && m.$slots.title ? (o(), s(t(R), {
81
86
  key: 0,
82
87
  placement: "right",
83
88
  "fallback-placements": ["left"],
@@ -112,6 +117,6 @@ const W = ["title"], b = (
112
117
  }
113
118
  });
114
119
  export {
115
- Ue as default
120
+ Ve as default
116
121
  };
117
122
  //# sourceMappingURL=menu-item.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-item.vue2.mjs","sources":["../../../../../packages/components/menu/menu-item.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('menu-item')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { renderTNode, singleAttrToObj, VNode } from '@vft/utils';\nimport { computed, getCurrentInstance, inject, onBeforeUnmount, onMounted, reactive } from 'vue';\nimport { throwError } from '@vft-ui/utils';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type RouteLocationRaw } from 'vue-router';\nimport useMenu from './use-menu';\nimport { VftIcon as Icon, type IconProps, VftTooltip as Tooltip, VftDivider } from '@vft-ui/components';\n\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types';\n\ninterface Props {\n /** 唯一标志 */\n index?: string;\n /** Vue Router 路径对象 */\n route?: RouteLocationRaw;\n /** 是否禁用 */\n disabled?: boolean;\n icon?: IconProps;\n title?: string;\n isAloneUse?: boolean;\n divider?: boolean;\n className?: string\n reverse?: boolean\n}\n\ndefineProps({\n \"index\": null,\n \"route\": null,\n \"disabled\": { type: Boolean, },\n \"icon\": null,\n \"title\": null,\n \"isAloneUse\": { type: Boolean, },\n \"divider\": { type: Boolean, },\n \"className\": null,\n \"reverse\": { type: Boolean, }\n})\n\n\n\nconst emit = defineEmits(['click']);\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst nsMenu = useNamespace('menu');\n\nconst nsMenuItem = useNamespace('menu-item');\n\n// 获取来自 menu.vue 中注入的数据\nconst rootMenu = !__props.isAloneUse ? inject<MenuProvider>('rootMenu') : null;\nif (!rootMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject root menu');\n\n// indexPath:当前 menu-item 对应的 index 和 vft-sub-menu 的 index,parentMenu 为 vft-sub-menu 组件\nconst { parentMenu, indexPath } = useMenu(\n instance,\n computed(() => __props.index!)\n);\n\n// 注入来自 sub-menu 中的 provide 数据\nconst subMenu = !__props.isAloneUse ? inject<SubMenuProvider>(`subMenu:${parentMenu.value.uid}`) : null;\nif (!subMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject sub menu');\n\n// 当前是否为 active\nconst active = computed(() => __props.index === rootMenu?.activeIndex);\n\nconst item: MenuItemRegistered = reactive({\n index: __props.index!,\n indexPath,\n active\n});\n\n// 点击具体菜单项\nconst handleClick = () => {\n if (!__props.disabled) {\n rootMenu?.handleMenuItemClick({\n index: __props.index!,\n indexPath: indexPath.value,\n route: __props.route\n });\n emit('click', item);\n }\n};\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst title = computed(() => {\n return renderTNode(instance, 'title');\n});\n\nonMounted(() => {\n if (!__props.isAloneUse) {\n // 触发 sub-menu,vue 中的 addSubMenu\n subMenu?.addSubMenu(item);\n // 触发 menu.vue 中的 addMenuItem 更新 items\n rootMenu?.addMenuItem(item);\n }\n});\n\nonBeforeUnmount(() => {\n if (!__props.isAloneUse) {\n subMenu?.removeSubMenu(item);\n rootMenu?.removeMenuItem(item);\n }\n});\n</script>\n\n<template>\n <vft-divider v-if=\"reverse && divider\" marginY=\"0\" />\n <li :class=\"[className, nsMenuItem.b(), nsMenuItem.is('active', isAloneUse ? false : active), nsMenuItem.is('disabled', disabled)]\" role=\"menuitem\" tabindex=\"-1\" @click=\"handleClick\">\n <tooltip\n v-if=\"parentMenu?.type?.name === 'vft-menu' && rootMenu?.props.collapse && $slots.title\"\n placement=\"right\" :fallback-placements=\"['left']\" persistent>\n <template #content>\n <slot name=\"title\" />\n </template>\n <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n <slot />\n </div>\n </tooltip>\n <template v-else>\n <slot v-if=\"$slots?.default\"/>\n <template v-else>\n <Icon v-if=\"_icon?.icon\" v-bind=\"_icon\" />\n <span :title=\"title\"><v-node :content=\"title\" /></span>\n </template>\n </template>\n </li>\n <vft-divider v-if=\"!reverse && divider\" marginY=\"0\" />\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","nsMenu","nsMenuItem","rootMenu","__props","inject","throwError","parentMenu","indexPath","useMenu","computed","subMenu","active","item","reactive","handleClick","emit","_icon","singleAttrToObj","title","renderTNode","onMounted","onBeforeUnmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;qBACMA;AAAA;AAAA,EAAuBC,EAAa,WAAW;AAAA,GAGrDC,IAA6BC,EAAmB;AAAA,EAC9C,MAAMH,EAAG,EAAE;AACb,CAAC;;;;;;;;;;;;;;;AA6CD,UAAMI,IAAWC,KAEXC,IAASL,EAAa,MAAM,GAE5BM,IAAaN,EAAa,WAAW,GAGrCO,IAAYC,EAAQ,aAAgD,OAAnCC,EAAqB,UAAU;AAClE,IAAA,CAACF,KAAY,CAACC,EAAQ,cAAuBE,EAAAX,EAAG,EAAE,GAAG,0BAA0B;AAG7E,UAAA,EAAE,YAAAY,GAAY,WAAAC,EAAA,IAAcC;AAAA,MAChCV;AAAA,MACAW,EAAS,MAAMN,EAAQ,KAAM;AAAA,IAAA,GAIzBO,IAAWP,EAAQ,aAA0E,OAA7DC,EAAwB,WAAWE,EAAW,MAAM,KAAK;AAC3F,IAAA,CAACI,KAAW,CAACP,EAAQ,cAAuBE,EAAAX,EAAG,EAAE,GAAG,yBAAyB;AAGjF,UAAMiB,IAASF,EAAS,MAAMN,EAAQ,WAAUD,KAAA,gBAAAA,EAAU,YAAW,GAE/DU,IAA2BC,EAAS;AAAA,MACxC,OAAOV,EAAQ;AAAA,MACf,WAAAI;AAAA,MACA,QAAAI;AAAA,IAAA,CACD,GAGKG,IAAc,MAAM;AACpB,MAACX,EAAQ,aACXD,KAAA,QAAAA,EAAU,oBAAoB;AAAA,QAC5B,OAAOC,EAAQ;AAAA,QACf,WAAWI,EAAU;AAAA,QACrB,OAAOJ,EAAQ;AAAA,MAAA,IAEjBY,EAAK,SAASH,CAAI;AAAA,IACpB,GAGII,IAAQP,EAAS,MACdQ,EAAgBd,EAAQ,MAAM,MAAM,CAC5C,GAEKe,IAAQT,EAAS,MACdU,EAAYrB,GAAU,OAAO,CACrC;AAED,WAAAsB,EAAU,MAAM;AACV,MAACjB,EAAQ,eAEXO,KAAA,QAAAA,EAAS,WAAWE,IAEpBV,KAAA,QAAAA,EAAU,YAAYU;AAAA,IACxB,CACD,GAEDS,EAAgB,MAAM;AAChB,MAAClB,EAAQ,eACXO,KAAA,QAAAA,EAAS,cAAcE,IACvBV,KAAA,QAAAA,EAAU,eAAeU;AAAA,IAC3B,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"menu-item.vue2.mjs","sources":["../../../../../packages/components/menu/menu-item.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('menu-item')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { renderTNode, singleAttrToObj, VNode } from '@vft/utils';\nimport { computed, getCurrentInstance, inject, onBeforeUnmount, onMounted, reactive } from 'vue';\nimport { throwError } from '@vft-ui/utils';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type RouteLocationRaw } from 'vue-router';\nimport useMenu from './use-menu';\nimport { VftIcon as Icon, type IconProps, VftTooltip as Tooltip, VftDivider } from '@vft-ui/components';\n\nimport type { MenuItemRegistered, MenuProvider, SubMenuProvider } from './types';\n\ninterface Props {\n /** 唯一标志 */\n index?: string;\n /** Vue Router 路径对象 */\n route?: RouteLocationRaw;\n /** 是否禁用 */\n disabled?: boolean;\n icon?: IconProps;\n title?: string;\n isAloneUse?: boolean;\n divider?: boolean;\n className?: string\n reverse?: boolean\n}\n\ndefineProps({\n \"index\": null,\n \"route\": null,\n \"disabled\": { type: Boolean, },\n \"icon\": null,\n \"title\": null,\n \"isAloneUse\": { type: Boolean, },\n \"divider\": { type: Boolean, },\n \"className\": null,\n \"reverse\": { type: Boolean, }\n})\n\n\n\nconst emit = defineEmits(['click']);\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst nsMenu = useNamespace('menu');\n\nconst nsMenuItem = useNamespace('menu-item');\n\n// 获取来自 menu.vue 中注入的数据\nconst rootMenu = !__props.isAloneUse ? inject<MenuProvider>('rootMenu') : null;\nif (!rootMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject root menu');\n\n// indexPath:当前 menu-item 对应的 index 和 vft-sub-menu 的 index,parentMenu 为 vft-sub-menu 组件\nconst { parentMenu, indexPath } = useMenu(\n instance,\n computed(() => __props.index!)\n);\n\n// 注入来自 sub-menu 中的 provide 数据\nconst subMenu = !__props.isAloneUse ? inject<SubMenuProvider>(`subMenu:${parentMenu.value.uid}`) : null;\nif (!subMenu && !__props.isAloneUse) throwError(ns.b(), 'can not inject sub menu');\n\n// 当前是否为 active\nconst active = computed(() => __props.index === rootMenu?.activeIndex);\n\nconst item: MenuItemRegistered = reactive({\n index: __props.index!,\n indexPath,\n active\n});\n\n// 点击具体菜单项\nconst handleClick = () => {\n if (!__props.disabled) {\n rootMenu?.handleMenuItemClick({\n index: __props.index!,\n indexPath: indexPath.value,\n route: __props.route\n });\n emit('click', item);\n }\n};\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst title = computed(() => {\n return renderTNode(instance, 'title');\n});\n\nonMounted(() => {\n if (!__props.isAloneUse) {\n // 触发 sub-menu,vue 中的 addSubMenu\n subMenu?.addSubMenu(item);\n // 触发 menu.vue 中的 addMenuItem 更新 items\n rootMenu?.addMenuItem(item);\n }\n});\n\nonBeforeUnmount(() => {\n if (!__props.isAloneUse) {\n subMenu?.removeSubMenu(item);\n rootMenu?.removeMenuItem(item);\n }\n});\n</script>\n\n<template>\n <vft-divider v-if=\"reverse && divider\" marginY=\"0\" />\n <li :class=\"[className, nsMenuItem.b(), nsMenuItem.is('active', isAloneUse ? false : active), nsMenuItem.is('disabled', disabled)]\" role=\"menuitem\" tabindex=\"-1\" @click=\"handleClick\">\n <tooltip\n v-if=\"parentMenu?.type?.name === 'vft-menu' && rootMenu?.props.collapse && $slots.title\"\n placement=\"right\" :fallback-placements=\"['left']\" persistent>\n <template #content>\n <slot name=\"title\" />\n </template>\n <div :class=\"nsMenu.be('tooltip', 'trigger')\">\n <slot />\n </div>\n </tooltip>\n <template v-else>\n <slot v-if=\"$slots?.default\"/>\n <template v-else>\n <Icon v-if=\"_icon?.icon\" v-bind=\"_icon\" />\n <span :title=\"title\"><v-node :content=\"title\" /></span>\n </template>\n </template>\n </li>\n <vft-divider v-if=\"!reverse && divider\" marginY=\"0\" />\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","nsMenu","nsMenuItem","rootMenu","__props","inject","throwError","parentMenu","indexPath","useMenu","computed","subMenu","active","item","reactive","handleClick","emit","_icon","singleAttrToObj","title","renderTNode","onMounted","onBeforeUnmount"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBACMA;AAAA;AAAA,EAAuBC,EAAa,WAAW;AAAA,GAGrDC,IAA6BC,EAAmB;AAAA,EAC9C,MAAMH,EAAG,EAAE;AACb,CAAC;;;;;;;;;;;;;;;AA6CD,UAAMI,IAAWC,KAEXC,IAASL,EAAa,MAAM,GAE5BM,IAAaN,EAAa,WAAW,GAGrCO,IAAYC,EAAQ,aAAgD,OAAnCC,EAAqB,UAAU;AAClE,IAAA,CAACF,KAAY,CAACC,EAAQ,cAAuBE,EAAAX,EAAG,EAAE,GAAG,0BAA0B;AAG7E,UAAA,EAAE,YAAAY,GAAY,WAAAC,EAAA,IAAcC;AAAA,MAChCV;AAAA,MACAW,EAAS,MAAMN,EAAQ,KAAM;AAAA,IAAA,GAIzBO,IAAWP,EAAQ,aAA0E,OAA7DC,EAAwB,WAAWE,EAAW,MAAM,KAAK;AAC3F,IAAA,CAACI,KAAW,CAACP,EAAQ,cAAuBE,EAAAX,EAAG,EAAE,GAAG,yBAAyB;AAGjF,UAAMiB,IAASF,EAAS,MAAMN,EAAQ,WAAUD,KAAA,gBAAAA,EAAU,YAAW,GAE/DU,IAA2BC,EAAS;AAAA,MACxC,OAAOV,EAAQ;AAAA,MACf,WAAAI;AAAA,MACA,QAAAI;AAAA,IAAA,CACD,GAGKG,IAAc,MAAM;AACpB,MAACX,EAAQ,aACXD,KAAA,QAAAA,EAAU,oBAAoB;AAAA,QAC5B,OAAOC,EAAQ;AAAA,QACf,WAAWI,EAAU;AAAA,QACrB,OAAOJ,EAAQ;AAAA,MAAA,IAEjBY,EAAK,SAASH,CAAI;AAAA,IACpB,GAGII,IAAQP,EAAS,MACdQ,EAAgBd,EAAQ,MAAM,MAAM,CAC5C,GAEKe,IAAQT,EAAS,MACdU,EAAYrB,GAAU,OAAO,CACrC;AAED,WAAAsB,EAAU,MAAM;AACV,MAACjB,EAAQ,eAEXO,KAAA,QAAAA,EAAS,WAAWE,IAEpBV,KAAA,QAAAA,EAAU,YAAYU;AAAA,IACxB,CACD,GAEDS,EAAgB,MAAM;AAChB,MAAClB,EAAQ,eACXO,KAAA,QAAAA,EAAS,cAAcE,IACvBV,KAAA,QAAAA,EAAU,eAAeU;AAAA,IAC3B,CACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -11,9 +11,14 @@ import { VftCollapseTransition as se } from "../collapse-transition/index.mjs";
11
11
  import { VftTooltip as ie } from "../tooltip/index.mjs";
12
12
  import "../popover/index.mjs";
13
13
  import "./index.mjs";
14
- import { singleAttrToObj as ce, renderTNode as pe } from "@vft/utils";
14
+ import { singleAttrToObj as pe, renderTNode as ce } from "@vft/utils";
15
15
  import "@vft/use";
16
16
  import "../multiple-tabs/index.mjs";
17
+ import "../header-layout/index.mjs";
18
+ import "../footer-layout/index.mjs";
19
+ import "../iframe-layout/index.mjs";
20
+ import "../router-view-content/index.mjs";
21
+ import "../logo/index.mjs";
17
22
  import { useNamespace as I } from "../../hooks/use-namespace/index.mjs";
18
23
  import "@popperjs/core";
19
24
  import "lodash";
@@ -22,14 +27,14 @@ import { useTimeoutFn as L } from "@vueuse/core";
22
27
  import "@vue/shared";
23
28
  import { throwError as U } from "../../utils/error.mjs";
24
29
  import de from "./use-menu.mjs";
25
- import { useMenuCssVar as ve } from "./use-menu-css-var.mjs";
30
+ import { useMenuCssVar as me } from "./use-menu-css-var.mjs";
26
31
  const S = (
27
32
  /* hoist-static*/
28
33
  I("sub-menu")
29
- ), me = Z({
34
+ ), ve = Z({
30
35
  name: S.b()
31
- }), De = /* @__PURE__ */ Z({
32
- ...me,
36
+ }), qe = /* @__PURE__ */ Z({
37
+ ...ve,
33
38
  props: {
34
39
  index: null,
35
40
  showTimeout: {
@@ -66,16 +71,16 @@ const S = (
66
71
  setup(o, {
67
72
  expose: q
68
73
  }) {
69
- const m = Y(), {
74
+ const v = Y(), {
70
75
  indexPath: h,
71
76
  parentMenu: z
72
- } = de(m, n(() => o.index)), s = I("menu"), i = I("sub-menu"), e = D("rootMenu");
77
+ } = de(v, n(() => o.index)), s = I("menu"), i = I("sub-menu"), e = D("rootMenu");
73
78
  e || U(S.b(), "can not inject root menu");
74
79
  const u = D(`subMenu:${z.value.uid}`);
75
80
  u || U(S.b(), "can not inject sub menu");
76
81
  const T = x({});
77
- let c;
78
- const B = x(!1), G = x(), A = x(null), P = n(() => d.value === "horizontal" && M.value ? "bottom-start" : "right-start"), M = n(() => u.level === 0), w = n(() => o.popperAppendToBody === void 0 ? M.value : Boolean(o.popperAppendToBody)), J = n(() => e.props.collapse ? `${s.namespace.value}-zoom-in-left` : `${s.namespace.value}-zoom-in-top`), K = n(() => d.value === "horizontal" && M.value ? ["bottom-start", "bottom-end", "top-start", "top-end", "right-start", "left-start"] : ["right-start", "left-start", "bottom-start", "bottom-end", "top-start", "top-end"]), p = n(() => e.openedMenus.includes(o.index)), f = n(() => {
82
+ let p;
83
+ const B = x(!1), G = x(), A = x(null), P = n(() => d.value === "horizontal" && M.value ? "bottom-start" : "right-start"), M = n(() => u.level === 0), w = n(() => o.popperAppendToBody === void 0 ? M.value : Boolean(o.popperAppendToBody)), J = n(() => e.props.collapse ? `${s.namespace.value}-zoom-in-left` : `${s.namespace.value}-zoom-in-top`), K = n(() => d.value === "horizontal" && M.value ? ["bottom-start", "bottom-end", "top-start", "top-end", "right-start", "left-start"] : ["right-start", "left-start", "bottom-start", "bottom-end", "top-start", "top-end"]), c = n(() => e.openedMenus.includes(o.index)), f = n(() => {
79
84
  let t = !1;
80
85
  return Object.values(T.value).forEach((a) => {
81
86
  a.active && (t = !0);
@@ -102,16 +107,16 @@ const S = (
102
107
  });
103
108
  }, g = (t, a = o.showTimeout) => {
104
109
  var l;
105
- t.type !== "focus" && (e.props.menuTrigger === "click" && e.props.mode === "horizontal" || !e.props.collapse && e.props.mode === "vertical" || o.disabled || (u.mouseInChild.value = !0, c == null || c(), {
106
- stop: c
110
+ t.type !== "focus" && (e.props.menuTrigger === "click" && e.props.mode === "horizontal" || !e.props.collapse && e.props.mode === "vertical" || o.disabled || (u.mouseInChild.value = !0, p == null || p(), {
111
+ stop: p
107
112
  } = L(() => {
108
113
  e.openMenu(o.index, h.value);
109
114
  }, a), w.value && ((l = z.value.vnode.el) == null || l.dispatchEvent(new MouseEvent("mouseenter")))));
110
115
  }, y = (t = !1) => {
111
116
  var a, l;
112
- e.props.menuTrigger === "click" && e.props.mode === "horizontal" || !e.props.collapse && e.props.mode === "vertical" || (c == null || c(), u.mouseInChild.value = !1, {
113
- stop: c
114
- } = L(() => !B.value && e.closeMenu(o.index, h.value), o.hideTimeout), w.value && t && ((a = m.parent) == null ? void 0 : a.type.name) === "vft-sub-menu" && ((l = u.handleMouseleave) == null || l.call(u, !0)));
117
+ e.props.menuTrigger === "click" && e.props.mode === "horizontal" || !e.props.collapse && e.props.mode === "vertical" || (p == null || p(), u.mouseInChild.value = !1, {
118
+ stop: p
119
+ } = L(() => !B.value && e.closeMenu(o.index, h.value), o.hideTimeout), w.value && t && ((a = v.parent) == null ? void 0 : a.type.name) === "vft-sub-menu" && ((l = u.handleMouseleave) == null || l.call(u, !0)));
115
120
  };
116
121
  ee(() => e.props.collapse, (t) => W(Boolean(t)));
117
122
  {
@@ -120,7 +125,7 @@ const S = (
120
125
  }, a = (l) => {
121
126
  delete T.value[l.index];
122
127
  };
123
- oe(`subMenu:${m.uid}`, {
128
+ oe(`subMenu:${v.uid}`, {
124
129
  addSubMenu: t,
125
130
  removeSubMenu: a,
126
131
  handleMouseleave: y,
@@ -129,13 +134,13 @@ const S = (
129
134
  });
130
135
  }
131
136
  q({
132
- opened: p
137
+ opened: c
133
138
  }), te(() => {
134
139
  e.addSubMenu(C), u.addSubMenu(C);
135
140
  }), ne(() => {
136
141
  u.removeSubMenu(C), e.removeSubMenu(C);
137
142
  });
138
- const v = le(), X = n(() => d.value === "horizontal" && M.value || d.value === "vertical" && !e.props.collapse ? {
143
+ const m = le(), X = n(() => d.value === "horizontal" && M.value || d.value === "vertical" && !e.props.collapse ? {
139
144
  icon: "vi-arrow-down",
140
145
  size: 20,
141
146
  ...o.expandIcon
@@ -143,23 +148,23 @@ const S = (
143
148
  icon: "vi-arrow-right",
144
149
  size: 18,
145
150
  ...o.collapseIcon
146
- }), V = n(() => ce(o.icon, "icon")), N = n(() => pe(m, "title"));
151
+ }), V = n(() => pe(o.icon, "icon")), N = n(() => ce(v, "title"));
147
152
  return () => {
148
153
  var R;
149
154
  const t = [(R = V.value) != null && R.icon ? r(H, {
150
155
  ...V.value
151
156
  }) : null, r("span", {
152
157
  class: o.showArrow ? i.e("text") : "",
153
- title: m.props.title
158
+ title: v.props.title
154
159
  }, N.value), o.showArrow ? r(H, {
155
160
  class: i.e("icon-arrow"),
156
161
  ...X.value,
157
162
  style: {
158
- transform: p.value ? "rotateZ(180deg)" : "none"
163
+ transform: c.value ? "rotateZ(180deg)" : "none"
159
164
  }
160
- }) : !1], a = ve(e.props, u.level + 1), l = e.isMenuPopup ? r(ie, {
165
+ }) : !1], a = me(e.props, u.level + 1), l = e.isMenuPopup ? r(ie, {
161
166
  ref: A,
162
- visible: p.value,
167
+ visible: c.value,
163
168
  effect: "light",
164
169
  pure: !0,
165
170
  offset: o.popperOffset,
@@ -183,7 +188,7 @@ const S = (
183
188
  }, [r("ul", {
184
189
  class: [s.b(), s.m("popup"), s.m(`popup-${P.value}`)],
185
190
  style: a.value
186
- }, [(b = v.default) == null ? void 0 : b.call(v)])]);
191
+ }, [(b = m.default) == null ? void 0 : b.call(m)])]);
187
192
  },
188
193
  default: () => r("div", {
189
194
  class: i.e("title"),
@@ -212,15 +217,15 @@ const S = (
212
217
  role: "menu",
213
218
  class: [s.b(), s.m("inline")],
214
219
  style: a.value
215
- }, [(b = v.default) == null ? void 0 : b.call(v)]), [[ue, p.value]]);
220
+ }, [(b = m.default) == null ? void 0 : b.call(m)]), [[ue, c.value]]);
216
221
  }
217
222
  })])
218
223
  );
219
224
  return r("li", {
220
- class: [i.b(), i.is("active", f.value), i.is("opened", p.value), i.is("disabled", o.disabled)],
225
+ class: [i.b(), i.is("active", f.value), i.is("opened", c.value), i.is("disabled", o.disabled)],
221
226
  role: "menuitem",
222
227
  ariaHaspopup: !0,
223
- ariaExpanded: p.value,
228
+ ariaExpanded: c.value,
224
229
  onMouseenter: g,
225
230
  onMouseleave: () => y(!0),
226
231
  onFocus: g
@@ -229,6 +234,6 @@ const S = (
229
234
  }
230
235
  });
231
236
  export {
232
- De as default
237
+ qe as default
233
238
  };
234
239
  //# sourceMappingURL=sub-menu.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"sub-menu.vue2.mjs","sources":["../../../../../packages/components/menu/sub-menu.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns = /* hoist-static*/ useNamespace('sub-menu')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { type IconProps, type Placement, type ToolTipProps, VftCollapseTransition as CollapseTransition, VftIcon as Icon, VftTooltip as Tooltip } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { throwError } from '@vft-ui/utils';\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { useTimeoutFn } from '@vueuse/core';\nimport type { CSSProperties, VNodeArrayChildren } from 'vue';\nimport { computed, Fragment, getCurrentInstance, h, inject, onBeforeUnmount, onMounted, provide, reactive, ref, useSlots, vShow, watch, withDirectives } from 'vue';\nimport type { MenuProvider, SubMenuProvider } from './types';\nimport useMenu from './use-menu';\nimport { useMenuCssVar } from './use-menu-css-var';\n\ninterface Props {\n /** 唯一标志 */\n index: string;\n /** 展开 sub-menu 的延时 */\n showTimeout?: number;\n /** 收起 sub-menu 的延时 */\n hideTimeout?: number;\n /** 为 popper 添加类名 */\n popperClass?: ClassType;\n /** 是否禁用 */\n disabled?: boolean;\n popperAppendToBody?: boolean;\n /** 弹出窗口偏移 */\n popperOffset?: number;\n expandIcon?: IconProps;\n collapseIcon?: IconProps;\n title?: string;\n icon?: IconProps | string;\n showArrow?: boolean;\n toolTipCfg?: ToolTipProps;\n}\n\ndefineProps({\n \"index\": null,\n \"showTimeout\": { default: 300 },\n \"hideTimeout\": { default: 300 },\n \"popperClass\": null,\n \"disabled\": { type: Boolean, },\n \"popperAppendToBody\": { type: Boolean, default: undefined },\n \"popperOffset\": { default: 6 },\n \"expandIcon\": { default: {} },\n \"collapseIcon\": { default: {} },\n \"title\": null,\n \"icon\": null,\n \"showArrow\": { type: Boolean, default: true },\n \"toolTipCfg\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\n// 返回当前 sub-menu 对应的 indexPath 页面中对 submenu 定义的 index parentMenu -> vft-menu 组件\nconst { indexPath, parentMenu } = useMenu(instance, computed(() => __props.index));\n\nconst nsMenu = useNamespace('menu');\nconst nsSubMenu = useNamespace('sub-menu');\n\n// 接受 vft-menu 组件中注入的数据\nconst rootMenu = inject<MenuProvider>('rootMenu');\nif (!rootMenu) throwError(ns.b(), 'can not inject root menu');\n\n// 接受 vft-menu 组件中注入的数据 parentMenu.value!.uid 当前 sub-menu 组件对应的 menu.vue 组件\nconst subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value!.uid}`);\nif (!subMenu) throwError(ns.b(), 'can not inject sub menu');\n\n/**\n * 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\nconst subMenus = ref<MenuProvider['subMenus']>({});\n\nlet timeout: (() => void) | undefined;\nconst mouseInChild = ref(false);\n\n// sub-menu-title 的 ref\nconst verticalTitleRef = ref<HTMLDivElement>();\n// tooltip 的实例\nconst vPopper = ref(null);\n\n// toolTop 的展示位置\nconst currentPlacement = computed<Placement>(\n () => (mode.value === 'horizontal' && isFirstLevel.value ? 'bottom-start' : 'right-start'));\n\n// 是否为第一级的 subMenu\nconst isFirstLevel = computed(() => {\n return subMenu.level === 0;\n});\n\nconst appendToBody = computed(() => {\n return __props.popperAppendToBody === undefined ? isFirstLevel.value : Boolean(__props.popperAppendToBody);\n});\n\n// toolTip 弹出的动画名称\nconst menuTransitionName = computed(\n () => (rootMenu.props.collapse ? `${nsMenu.namespace.value}-zoom-in-left` : `${nsMenu.namespace.value}-zoom-in-top`));\n\nconst fallbackPlacements = computed<Placement[]>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? ['bottom-start', 'bottom-end', 'top-start', 'top-end', 'right-start', 'left-start']\n : ['right-start', 'left-start', 'bottom-start', 'bottom-end', 'top-start', 'top-end']\n);\n\n// 获取当前的 index 是否包含在 openedMenus 中,表示当前 sub-menu 是否已经展开,子节点就是通过这个使用 v-show 来显隐\nconst opened = computed(() => rootMenu.openedMenus.includes(__props.index));\n\nconst active = computed(() => {\n let isActive = false;\n Object.values(subMenus.value).forEach((subItem) => {\n if (subItem.active) {\n isActive = true;\n }\n });\n if (__props.index === rootMenu.activeIndex) {\n isActive = true;\n }\n return isActive;\n});\n\nconst backgroundColor = computed(() => rootMenu.props.backgroundColor || '');\n\nconst activeTextColor = computed(() => rootMenu.props.activeTextColor || '');\n\nconst textColor = computed(() => rootMenu.props.textColor || '');\n\nconst mode = computed(() => rootMenu.props.mode);\n\nconst item = reactive({\n index: __props.index,\n indexPath,\n active\n});\n\n//\nconst titleStyle = computed<CSSProperties>(() => {\n if (mode.value !== 'horizontal') {\n return {\n color: textColor.value\n };\n }\n return {\n borderBottomColor: active.value ? (rootMenu.props.activeTextColor ? activeTextColor.value : '') : 'transparent',\n color: active.value ? activeTextColor.value : textColor.value\n };\n});\n\n// 销毁 toolTip\nconst doDestroy = () => vPopper.value?.popperRef?.popperInstanceRef?.destroy();\n\n// 当菜单收缩展开时执行销毁 toolTip\nconst handleCollapseToggle = (value: boolean) => {\n if (!value) {\n doDestroy();\n }\n};\n\n// sub-menu 菜单点击事件\nconst handleClick = () => {\n // 以下几种情况不执行点击事件操作\n if ((rootMenu.props.menuTrigger === 'hover' && rootMenu.props.mode === 'horizontal') || (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) return;\n\n // 调用 menn.vue 中的 handleSubMenuClick 点击事件,传入参数\n rootMenu.handleSubMenuClick({\n index: __props.index,\n indexPath: indexPath.value,\n active: active.value\n });\n};\n\n// 滑入 sub-menu 菜单事件\nconst handleMouseenter = (event: MouseEvent | FocusEvent, _showTimeout = __props.showTimeout) => {\n if (event.type === 'focus') {\n return;\n }\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) {\n return;\n }\n subMenu.mouseInChild.value = true;\n\n // 根据 _showTimeout 展开滑入的菜单子项\n timeout?.();\n ({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(__props.index, indexPath.value);\n }, _showTimeout));\n\n if (appendToBody.value) {\n parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'));\n }\n};\n\n// 离开滑入的菜单\nconst handleMouseleave = (deepDispatch = false) => {\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')) {\n return;\n }\n timeout?.();\n subMenu.mouseInChild.value = false;\n ({ stop: timeout } = useTimeoutFn(\n () => !mouseInChild.value && rootMenu.closeMenu(__props.index, indexPath.value),\n __props.hideTimeout));\n\n if (appendToBody.value && deepDispatch) {\n if (instance.parent?.type.name === 'vft-sub-menu') {\n subMenu.handleMouseleave?.(true);\n }\n }\n};\n\n// 监听菜单的收缩展开决定是否销毁 ToolTip\nwatch(\n () => rootMenu.props.collapse,\n (value) => handleCollapseToggle(Boolean(value))\n);\n\n// 以下代码在 menu-item.vue 中触发\n{\n /**\n * 此函数在 menu-item 中触发,items.value 默认为空对象\n * 最后添加后的 items 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\n const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item;\n };\n const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index];\n };\n provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1\n });\n}\n\ndefineExpose({\n opened\n});\n\nonMounted(() => {\n rootMenu.addSubMenu(item);\n subMenu.addSubMenu(item);\n});\n\nonBeforeUnmount(() => {\n subMenu.removeSubMenu(item);\n rootMenu.removeSubMenu(item);\n});\n\nconst slots = useSlots();\n\n// 箭头设置\nconst subMenuIcon = computed(() => {\n // 水平模式第一级 或者 竖直非折叠\n return (mode.value === 'horizontal' && isFirstLevel.value) || (mode.value === 'vertical' && !rootMenu.props.collapse)\n ? { icon: 'vi-arrow-down', size: 20, ...__props.expandIcon } :\n { icon: 'vi-arrow-right', size: 18, ...__props.collapseIcon };\n});\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst titleCon = computed(() => {\n return renderTNode(instance, 'title');\n});\n\ndefineRender(() => {\n // sub-menu 的标题以及展开箭头 icon 相关\n const titleTag: VNodeArrayChildren = [\n _icon.value?.icon ? h(Icon, { ..._icon.value }) : null,\n h(\n 'span',\n {\n class: __props.showArrow ? nsSubMenu.e('text') : '',\n title: instance.props.title\n },\n titleCon.value\n ),\n __props.showArrow ? h(\n Icon,\n {\n class: nsSubMenu.e('icon-arrow'),\n ...subMenuIcon.value,\n style: { transform: opened.value ? 'rotateZ(180deg)' : 'none' }\n }\n ) : false\n ];\n\n // 给 vft-menu class 这一栏加入 level 等级,以此来区分当前的 level: --vft-menu-level:2;\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1);\n\n /**\n * rootMenu.isMenuPopup 是否需要 tooltip 1.水平模式的菜单需要 2.竖直类型的菜单在收缩时需要\n * 如果需要 tooltip 用 h 函数渲染时,则采用 ElTooltip 组件\n * @type {VNode}\n */\n const child = rootMenu.isMenuPopup\n ? h(\n Tooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: __props.popperOffset,\n showArrow: false,\n persistent: true,\n popperClass: __props.popperClass,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false,\n ...__props.toolTipCfg\n },\n {\n content: () =>\n h(\n 'div',\n {\n class: [nsMenu.m(mode.value), nsMenu.m('popup-container'), __props.popperClass],\n onMouseenter: (evt: MouseEvent) => handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100)\n },\n [\n h(\n 'ul',\n {\n class: [nsMenu.b(), nsMenu.m('popup'), nsMenu.m(\n `popup-${currentPlacement.value}`)],\n style: ulStyle.value\n },\n [slots.default?.()]\n )\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n onClick: handleClick\n },\n titleTag\n )\n }\n )\n :\n /**\n * Fragment 碎片化节点,可以让 dom 没有根节点\n *\n * 以下是无需 tooltip 渲染的组件,通常是侧边栏没有折叠的时候\n */\n h(Fragment, {}, [\n titleCon.value ? h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n ref: verticalTitleRef,\n onClick: handleClick\n },\n titleTag\n ) : null,\n h(\n CollapseTransition,\n {},\n {\n default: () =>\n withDirectives(\n h(\n 'ul',\n {\n role: 'menu',\n class: [nsMenu.b(), nsMenu.m('inline')],\n style: ulStyle.value\n },\n [slots.default?.()]\n ),\n [[vShow, opened.value]]\n )\n }\n )\n ]);\n\n return h(\n 'li',\n {\n class: [nsSubMenu.b(), nsSubMenu.is('active', active.value),\n nsSubMenu.is('opened', opened.value), nsSubMenu.is('disabled', __props.disabled)],\n role: 'menuitem',\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(true),\n onFocus: handleMouseenter\n },\n [child]\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","name","b","instance","getCurrentInstance","indexPath","parentMenu","useMenu","computed","__props","index","nsMenu","nsSubMenu","rootMenu","inject","throwError","subMenu","value","uid","subMenus","ref","timeout","mouseInChild","verticalTitleRef","vPopper","currentPlacement","mode","isFirstLevel","level","appendToBody","popperAppendToBody","undefined","Boolean","menuTransitionName","props","collapse","namespace","fallbackPlacements","opened","openedMenus","includes","active","isActive","Object","values","forEach","subItem","activeIndex","backgroundColor","activeTextColor","textColor","item","reactive","titleStyle","color","borderBottomColor","doDestroy","popperRef","popperInstanceRef","destroy","handleCollapseToggle","handleClick","menuTrigger","disabled","handleSubMenuClick","handleMouseenter","event","_showTimeout","showTimeout","type","stop","useTimeoutFn","openMenu","vnode","el","dispatchEvent","MouseEvent","handleMouseleave","deepDispatch","closeMenu","hideTimeout","parent","watch","addSubMenu","removeSubMenu","provide","expose","onMounted","onBeforeUnmount","slots","useSlots","subMenuIcon","icon","size","expandIcon","collapseIcon","_icon","singleAttrToObj","titleCon","renderTNode","titleTag","h","Icon","class","showArrow","e","title","style","transform","ulStyle","useMenuCssVar","child","isMenuPopup","Tooltip","visible","effect","pure","offset","popperOffset","persistent","popperClass","placement","teleported","transition","gpuAcceleration","toolTipCfg","content","m","onMouseenter","evt","onMouseleave","onFocus","default","onClick","Fragment","CollapseTransition","withDirectives","role","vShow","is","ariaHaspopup","ariaExpanded"],"mappings":"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"}
1
+ {"version":3,"file":"sub-menu.vue2.mjs","sources":["../../../../../packages/components/menu/sub-menu.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns = /* hoist-static*/ useNamespace('sub-menu')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { type IconProps, type Placement, type ToolTipProps, VftCollapseTransition as CollapseTransition, VftIcon as Icon, VftTooltip as Tooltip } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { throwError } from '@vft-ui/utils';\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { useTimeoutFn } from '@vueuse/core';\nimport type { CSSProperties, VNodeArrayChildren } from 'vue';\nimport { computed, Fragment, getCurrentInstance, h, inject, onBeforeUnmount, onMounted, provide, reactive, ref, useSlots, vShow, watch, withDirectives } from 'vue';\nimport type { MenuProvider, SubMenuProvider } from './types';\nimport useMenu from './use-menu';\nimport { useMenuCssVar } from './use-menu-css-var';\n\ninterface Props {\n /** 唯一标志 */\n index: string;\n /** 展开 sub-menu 的延时 */\n showTimeout?: number;\n /** 收起 sub-menu 的延时 */\n hideTimeout?: number;\n /** 为 popper 添加类名 */\n popperClass?: ClassType;\n /** 是否禁用 */\n disabled?: boolean;\n popperAppendToBody?: boolean;\n /** 弹出窗口偏移 */\n popperOffset?: number;\n expandIcon?: IconProps;\n collapseIcon?: IconProps;\n title?: string;\n icon?: IconProps | string;\n showArrow?: boolean;\n toolTipCfg?: ToolTipProps;\n}\n\ndefineProps({\n \"index\": null,\n \"showTimeout\": { default: 300 },\n \"hideTimeout\": { default: 300 },\n \"popperClass\": null,\n \"disabled\": { type: Boolean, },\n \"popperAppendToBody\": { type: Boolean, default: undefined },\n \"popperOffset\": { default: 6 },\n \"expandIcon\": { default: {} },\n \"collapseIcon\": { default: {} },\n \"title\": null,\n \"icon\": null,\n \"showArrow\": { type: Boolean, default: true },\n \"toolTipCfg\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\n// 返回当前 sub-menu 对应的 indexPath 页面中对 submenu 定义的 index parentMenu -> vft-menu 组件\nconst { indexPath, parentMenu } = useMenu(instance, computed(() => __props.index));\n\nconst nsMenu = useNamespace('menu');\nconst nsSubMenu = useNamespace('sub-menu');\n\n// 接受 vft-menu 组件中注入的数据\nconst rootMenu = inject<MenuProvider>('rootMenu');\nif (!rootMenu) throwError(ns.b(), 'can not inject root menu');\n\n// 接受 vft-menu 组件中注入的数据 parentMenu.value!.uid 当前 sub-menu 组件对应的 menu.vue 组件\nconst subMenu = inject<SubMenuProvider>(`subMenu:${parentMenu.value!.uid}`);\nif (!subMenu) throwError(ns.b(), 'can not inject sub menu');\n\n/**\n * 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\nconst subMenus = ref<MenuProvider['subMenus']>({});\n\nlet timeout: (() => void) | undefined;\nconst mouseInChild = ref(false);\n\n// sub-menu-title 的 ref\nconst verticalTitleRef = ref<HTMLDivElement>();\n// tooltip 的实例\nconst vPopper = ref(null);\n\n// toolTop 的展示位置\nconst currentPlacement = computed<Placement>(\n () => (mode.value === 'horizontal' && isFirstLevel.value ? 'bottom-start' : 'right-start'));\n\n// 是否为第一级的 subMenu\nconst isFirstLevel = computed(() => {\n return subMenu.level === 0;\n});\n\nconst appendToBody = computed(() => {\n return __props.popperAppendToBody === undefined ? isFirstLevel.value : Boolean(__props.popperAppendToBody);\n});\n\n// toolTip 弹出的动画名称\nconst menuTransitionName = computed(\n () => (rootMenu.props.collapse ? `${nsMenu.namespace.value}-zoom-in-left` : `${nsMenu.namespace.value}-zoom-in-top`));\n\nconst fallbackPlacements = computed<Placement[]>(() =>\n mode.value === 'horizontal' && isFirstLevel.value\n ? ['bottom-start', 'bottom-end', 'top-start', 'top-end', 'right-start', 'left-start']\n : ['right-start', 'left-start', 'bottom-start', 'bottom-end', 'top-start', 'top-end']\n);\n\n// 获取当前的 index 是否包含在 openedMenus 中,表示当前 sub-menu 是否已经展开,子节点就是通过这个使用 v-show 来显隐\nconst opened = computed(() => rootMenu.openedMenus.includes(__props.index));\n\nconst active = computed(() => {\n let isActive = false;\n Object.values(subMenus.value).forEach((subItem) => {\n if (subItem.active) {\n isActive = true;\n }\n });\n if (__props.index === rootMenu.activeIndex) {\n isActive = true;\n }\n return isActive;\n});\n\nconst backgroundColor = computed(() => rootMenu.props.backgroundColor || '');\n\nconst activeTextColor = computed(() => rootMenu.props.activeTextColor || '');\n\nconst textColor = computed(() => rootMenu.props.textColor || '');\n\nconst mode = computed(() => rootMenu.props.mode);\n\nconst item = reactive({\n index: __props.index,\n indexPath,\n active\n});\n\n//\nconst titleStyle = computed<CSSProperties>(() => {\n if (mode.value !== 'horizontal') {\n return {\n color: textColor.value\n };\n }\n return {\n borderBottomColor: active.value ? (rootMenu.props.activeTextColor ? activeTextColor.value : '') : 'transparent',\n color: active.value ? activeTextColor.value : textColor.value\n };\n});\n\n// 销毁 toolTip\nconst doDestroy = () => vPopper.value?.popperRef?.popperInstanceRef?.destroy();\n\n// 当菜单收缩展开时执行销毁 toolTip\nconst handleCollapseToggle = (value: boolean) => {\n if (!value) {\n doDestroy();\n }\n};\n\n// sub-menu 菜单点击事件\nconst handleClick = () => {\n // 以下几种情况不执行点击事件操作\n if ((rootMenu.props.menuTrigger === 'hover' && rootMenu.props.mode === 'horizontal') || (rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) return;\n\n // 调用 menn.vue 中的 handleSubMenuClick 点击事件,传入参数\n rootMenu.handleSubMenuClick({\n index: __props.index,\n indexPath: indexPath.value,\n active: active.value\n });\n};\n\n// 滑入 sub-menu 菜单事件\nconst handleMouseenter = (event: MouseEvent | FocusEvent, _showTimeout = __props.showTimeout) => {\n if (event.type === 'focus') {\n return;\n }\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical') || __props.disabled) {\n return;\n }\n subMenu.mouseInChild.value = true;\n\n // 根据 _showTimeout 展开滑入的菜单子项\n timeout?.();\n ({ stop: timeout } = useTimeoutFn(() => {\n rootMenu.openMenu(__props.index, indexPath.value);\n }, _showTimeout));\n\n if (appendToBody.value) {\n parentMenu.value.vnode.el?.dispatchEvent(new MouseEvent('mouseenter'));\n }\n};\n\n// 离开滑入的菜单\nconst handleMouseleave = (deepDispatch = false) => {\n if ((rootMenu.props.menuTrigger === 'click' && rootMenu.props.mode === 'horizontal') || (!rootMenu.props.collapse && rootMenu.props.mode === 'vertical')) {\n return;\n }\n timeout?.();\n subMenu.mouseInChild.value = false;\n ({ stop: timeout } = useTimeoutFn(\n () => !mouseInChild.value && rootMenu.closeMenu(__props.index, indexPath.value),\n __props.hideTimeout));\n\n if (appendToBody.value && deepDispatch) {\n if (instance.parent?.type.name === 'vft-sub-menu') {\n subMenu.handleMouseleave?.(true);\n }\n }\n};\n\n// 监听菜单的收缩展开决定是否销毁 ToolTip\nwatch(\n () => rootMenu.props.collapse,\n (value) => handleCollapseToggle(Boolean(value))\n);\n\n// 以下代码在 menu-item.vue 中触发\n{\n /**\n * 此函数在 menu-item 中触发,items.value 默认为空对象\n * 最后添加后的 items 格式如下\n * ```\n * {\n * 1-1:{index: '1-1', indexPath: ['mio', '1-1'], active: false},\n * 1-2:{index: '1-2', indexPath: ['mio', '1-2'], active: false}\n * }\n * ```\n * @param {MenuItemRegistered} item\n */\n const addSubMenu: SubMenuProvider['addSubMenu'] = (item) => {\n subMenus.value[item.index] = item;\n };\n const removeSubMenu: SubMenuProvider['removeSubMenu'] = (item) => {\n delete subMenus.value[item.index];\n };\n provide<SubMenuProvider>(`subMenu:${instance.uid}`, {\n addSubMenu,\n removeSubMenu,\n handleMouseleave,\n mouseInChild,\n level: subMenu.level + 1\n });\n}\n\ndefineExpose({\n opened\n});\n\nonMounted(() => {\n rootMenu.addSubMenu(item);\n subMenu.addSubMenu(item);\n});\n\nonBeforeUnmount(() => {\n subMenu.removeSubMenu(item);\n rootMenu.removeSubMenu(item);\n});\n\nconst slots = useSlots();\n\n// 箭头设置\nconst subMenuIcon = computed(() => {\n // 水平模式第一级 或者 竖直非折叠\n return (mode.value === 'horizontal' && isFirstLevel.value) || (mode.value === 'vertical' && !rootMenu.props.collapse)\n ? { icon: 'vi-arrow-down', size: 20, ...__props.expandIcon } :\n { icon: 'vi-arrow-right', size: 18, ...__props.collapseIcon };\n});\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst titleCon = computed(() => {\n return renderTNode(instance, 'title');\n});\n\ndefineRender(() => {\n // sub-menu 的标题以及展开箭头 icon 相关\n const titleTag: VNodeArrayChildren = [\n _icon.value?.icon ? h(Icon, { ..._icon.value }) : null,\n h(\n 'span',\n {\n class: __props.showArrow ? nsSubMenu.e('text') : '',\n title: instance.props.title\n },\n titleCon.value\n ),\n __props.showArrow ? h(\n Icon,\n {\n class: nsSubMenu.e('icon-arrow'),\n ...subMenuIcon.value,\n style: { transform: opened.value ? 'rotateZ(180deg)' : 'none' }\n }\n ) : false\n ];\n\n // 给 vft-menu class 这一栏加入 level 等级,以此来区分当前的 level: --vft-menu-level:2;\n const ulStyle = useMenuCssVar(rootMenu.props, subMenu.level + 1);\n\n /**\n * rootMenu.isMenuPopup 是否需要 tooltip 1.水平模式的菜单需要 2.竖直类型的菜单在收缩时需要\n * 如果需要 tooltip 用 h 函数渲染时,则采用 ElTooltip 组件\n * @type {VNode}\n */\n const child = rootMenu.isMenuPopup\n ? h(\n Tooltip,\n {\n ref: vPopper,\n visible: opened.value,\n effect: 'light',\n pure: true,\n offset: __props.popperOffset,\n showArrow: false,\n persistent: true,\n popperClass: __props.popperClass,\n placement: currentPlacement.value,\n teleported: appendToBody.value,\n fallbackPlacements: fallbackPlacements.value,\n transition: menuTransitionName.value,\n gpuAcceleration: false,\n ...__props.toolTipCfg\n },\n {\n content: () =>\n h(\n 'div',\n {\n class: [nsMenu.m(mode.value), nsMenu.m('popup-container'), __props.popperClass],\n onMouseenter: (evt: MouseEvent) => handleMouseenter(evt, 100),\n onMouseleave: () => handleMouseleave(true),\n onFocus: (evt: FocusEvent) => handleMouseenter(evt, 100)\n },\n [\n h(\n 'ul',\n {\n class: [nsMenu.b(), nsMenu.m('popup'), nsMenu.m(\n `popup-${currentPlacement.value}`)],\n style: ulStyle.value\n },\n [slots.default?.()]\n )\n ]\n ),\n default: () =>\n h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n onClick: handleClick\n },\n titleTag\n )\n }\n )\n :\n /**\n * Fragment 碎片化节点,可以让 dom 没有根节点\n *\n * 以下是无需 tooltip 渲染的组件,通常是侧边栏没有折叠的时候\n */\n h(Fragment, {}, [\n titleCon.value ? h(\n 'div',\n {\n class: nsSubMenu.e('title'),\n style: [titleStyle.value, { backgroundColor: backgroundColor.value }],\n ref: verticalTitleRef,\n onClick: handleClick\n },\n titleTag\n ) : null,\n h(\n CollapseTransition,\n {},\n {\n default: () =>\n withDirectives(\n h(\n 'ul',\n {\n role: 'menu',\n class: [nsMenu.b(), nsMenu.m('inline')],\n style: ulStyle.value\n },\n [slots.default?.()]\n ),\n [[vShow, opened.value]]\n )\n }\n )\n ]);\n\n return h(\n 'li',\n {\n class: [nsSubMenu.b(), nsSubMenu.is('active', active.value),\n nsSubMenu.is('opened', opened.value), nsSubMenu.is('disabled', __props.disabled)],\n role: 'menuitem',\n ariaHaspopup: true,\n ariaExpanded: opened.value,\n onMouseenter: handleMouseenter,\n onMouseleave: () => handleMouseleave(true),\n onFocus: handleMouseenter\n },\n [child]\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","name","b","instance","getCurrentInstance","indexPath","parentMenu","useMenu","computed","__props","index","nsMenu","nsSubMenu","rootMenu","inject","throwError","subMenu","value","uid","subMenus","ref","timeout","mouseInChild","verticalTitleRef","vPopper","currentPlacement","mode","isFirstLevel","level","appendToBody","popperAppendToBody","undefined","Boolean","menuTransitionName","props","collapse","namespace","fallbackPlacements","opened","openedMenus","includes","active","isActive","Object","values","forEach","subItem","activeIndex","backgroundColor","activeTextColor","textColor","item","reactive","titleStyle","color","borderBottomColor","doDestroy","popperRef","popperInstanceRef","destroy","handleCollapseToggle","handleClick","menuTrigger","disabled","handleSubMenuClick","handleMouseenter","event","_showTimeout","showTimeout","type","stop","useTimeoutFn","openMenu","vnode","el","dispatchEvent","MouseEvent","handleMouseleave","deepDispatch","closeMenu","hideTimeout","parent","watch","addSubMenu","removeSubMenu","provide","expose","onMounted","onBeforeUnmount","slots","useSlots","subMenuIcon","icon","size","expandIcon","collapseIcon","_icon","singleAttrToObj","titleCon","renderTNode","titleTag","h","Icon","class","showArrow","e","title","style","transform","ulStyle","useMenuCssVar","child","isMenuPopup","Tooltip","visible","effect","pure","offset","popperOffset","persistent","popperClass","placement","teleported","transition","gpuAcceleration","toolTipCfg","content","m","onMouseenter","evt","onMouseleave","onFocus","default","onClick","Fragment","CollapseTransition","withDirectives","role","vShow","is","ariaHaspopup","ariaExpanded"],"mappings":"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"}
@@ -24,6 +24,11 @@ import "../tooltip/index.mjs";
24
24
  import "../popover/index.mjs";
25
25
  import "../menu/index.mjs";
26
26
  import "./index.mjs";
27
+ import "../header-layout/index.mjs";
28
+ import "../footer-layout/index.mjs";
29
+ import "../iframe-layout/index.mjs";
30
+ import "../router-view-content/index.mjs";
31
+ import "../logo/index.mjs";
27
32
  import Z from "./tab-content.vue2.mjs";
28
33
  import { initAffixTabs as ee, useTabsDrag as te } from "./use/use-multiple-tabs.mjs";
29
34
  const P = (
@@ -31,7 +36,7 @@ const P = (
31
36
  W("multiple-tabs")
32
37
  ), oe = _({
33
38
  name: P.b()
34
- }), Ne = /* @__PURE__ */ _({
39
+ }), De = /* @__PURE__ */ _({
35
40
  ...oe,
36
41
  props: {
37
42
  tabsStyle: null,
@@ -147,6 +152,6 @@ const P = (
147
152
  }
148
153
  });
149
154
  export {
150
- Ne as default
155
+ De as default
151
156
  };
152
157
  //# sourceMappingURL=multiple-tabs.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"multiple-tabs.vue2.mjs","sources":["../../../../../packages/components/multiple-tabs/multiple-tabs.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('multiple-tabs')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { getRouterKeyPath, listenerRouteChange, useRouterHelper } from '@vft/router';\nimport { useMultipleTabStore, useTabs } from '@vft/store';\nimport { useRefs } from '@vft/use';\nimport { generateCssVars } from '@vft/utils';\nimport hotkeys from 'hotkeys-js';\nimport { computed, ref, unref, watchEffect } from 'vue';\nimport type { RouteLocationNormalized, RouteMeta } from 'vue-router';\nimport { useRouter, onBeforeRouteLeave } from 'vue-router';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { VftTabs, VftTabPane, type TabsPaneContext } from '@vft-ui/components';\n\nimport TabContent from './tab-content.vue';\nimport type { TabContentExpose } from './types';\nimport { initAffixTabs, useTabsDrag } from './use';\n\ninterface MultipleTabsProps {\n tabsStyle?: Record<string, Numberish>;\n contextMenuStyle?: Record<string, Numberish>;\n canDrag?: boolean;\n}\n\ndefineProps({\n \"tabsStyle\": null,\n \"contextMenuStyle\": null,\n \"canDrag\": { type: Boolean, }\n})\n\n\n\n;\n\nconst affixList = initAffixTabs();\n\nif (__props.canDrag) {\n useTabsDrag(affixList);\n}\n\nconst tabStore = useMultipleTabStore();\n\n// active path for tab\nconst activePathRef = ref('');\nconst activeIndex = ref(0);\nconst fromRoute = ref();\n\nconst router = useRouter();\nconst { go } = useRouterHelper();\n\n// get current tab list\nconst getTabsState = computed(() => {\n return tabStore.getTabList.filter((item) => {\n return !item.meta?.hideTab;\n });\n});\n\n\nwatchEffect(() => {\n if (activePathRef.value) {\n const _activeIndex = getTabsState.value.findIndex(item => {\n return getRouterKeyPath(item) === activePathRef.value;\n });\n if (_activeIndex === -1) {\n activeIndex.value = getTabsState.value?.length - 1;\n } else {\n activeIndex.value = _activeIndex;\n }\n activeIndex.value = activeIndex.value < affixList?.length ? affixList?.length - 1 : activeIndex.value;\n }\n});\n\nonBeforeRouteLeave(() => {\n fromRoute.value = unref(router.currentRoute);\n});\n\nlistenerRouteChange((route) => {\n if (!route) {\n return;\n }\n\n const { meta = {} } = route;\n const { currentActivePath, hideTab } = meta as RouteMeta;\n\n const isHide = !hideTab ? null : currentActivePath;\n\n // set current active tab value\n const activePath = getRouterKeyPath(route);\n\n if (activePathRef.value !== activePath) {\n activePathRef.value = activePath;\n }\n\n if (isHide) {\n // 如果当前 tab 是隐藏的,则从路由中根据 currentActivePath 寻找到此路由的信息,然后在 tabStore 添加此路由\n let findParentRoute = router.getRoutes().find((item) => item.path === currentActivePath);\n findParentRoute && tabStore.addTab(findParentRoute as unknown as RouteLocationNormalized, unref(fromRoute), activeIndex.value, route);\n } else {\n tabStore.addTab(unref(route), unref(fromRoute), activeIndex.value);\n }\n});\n\n// 点击 tab 根据 tab 传入的 path 路径,跳转到对应页面\nfunction handleClick (pane: TabsPaneContext) {\n if (activePathRef.value === pane.paneName) {\n \treturn;\n }\n const clickTab = getTabsState.value[pane.attrs.index];\n activePathRef.value = pane.paneName as string;\n const hideActiveRoutePath = (clickTab?.meta?.hideActiveRoute as RouteLocationNormalized)?.fullPath;\n if (hideActiveRoutePath) {\n go(hideActiveRoutePath);\n } else {\n go(clickTab.fullPath || clickTab.path);\n }\n}\n\n// click x close tab\nfunction handleRemove (targetPath: string) {\n tabStore.closeTabByKey(targetPath, router);\n}\n\nconst [refs, setRefs] = useRefs<TabContentExpose>();\n\nfunction handleContextMenu (data: {pane: {attrs: {index: number;};}; event: any;}) {\n const _index = data.pane.attrs.index;\n const _event = data.event;\n refs.value[_index].handleContext(_event);\n}\n\nconst _tabsStyle = computed(() => {\n let initTabStyle: Record<string, Numberish> = {\n padding: '4px 0 0',\n 'header-height': '26px',\n 'item-color': '#5C5C5C',\n 'item-bg-color': '#f8f8f8',\n 'font-size': '13px',\n 'item-padding': '0 10px',\n 'close-icon-left': '8px',\n 'item-distance': '10px',\n 'item-max-width': '348px',\n 'header-margin': '0 0 0 8px'\n };\n\n return { ...generateCssVars(initTabStyle, 'tabs', 'vft'), ...__props.tabsStyle };\n});\n\nconst { closeCurrent } = useTabs();\n\nhotkeys('command+e, ctrl+e', function () {\n closeCurrent();\n return false;\n});\n\nconst _contextMenuStyle = computed(() => {\n return {\n ...generateCssVars({\n border: '1px solid #dcdfe6',\n 'sub-item-height': '40px',\n 'item-min-width': '150px'\n }, 'menu', 'vft'),\n ...__props.contextMenuStyle\n };\n});\n</script>\n\n<template>\n <div :class=\"ns.b()\" :style=\"_tabsStyle\">\n <vft-tabs\n v-model:model-value=\"activePathRef\"\n type=\"card\"\n @tabClick=\"handleClick\"\n @tabRemove=\"handleRemove\"\n @tabContextMenu=\"handleContextMenu\"\n :closeIconCfg=\"{ color: 'white'}\"\n >\n <!--why key add index:key not update after sort -->\n <template v-for=\"(item, index) in getTabsState\" :key=\"getRouterKeyPath(item) + index\">\n <vft-tab-pane :closable=\"!(item.meta?.affix)\" :index=\"index\" :name=\"getRouterKeyPath(item)\">\n <template #label>\n <tab-content :contextMenuStyle=\"_contextMenuStyle\" :affixNum=\"affixList?.length\"\n :ref=\"setRefs(index)\" :tabItem=\"item\" />\n </template>\n </vft-tab-pane>\n </template>\n </vft-tabs>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","affixList","initAffixTabs","__props","useTabsDrag","tabStore","useMultipleTabStore","activePathRef","ref","activeIndex","fromRoute","router","useRouter","go","useRouterHelper","getTabsState","computed","item","_a","watchEffect","_activeIndex","getRouterKeyPath","onBeforeRouteLeave","unref","listenerRouteChange","route","meta","currentActivePath","hideTab","isHide","activePath","findParentRoute","handleClick","pane","clickTab","hideActiveRoutePath","_b","handleRemove","targetPath","refs","setRefs","useRefs","handleContextMenu","data","_index","_event","_tabsStyle","generateCssVars","closeCurrent","useTabs","hotkeys","_contextMenuStyle"],"mappings":"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"}
1
+ {"version":3,"file":"multiple-tabs.vue2.mjs","sources":["../../../../../packages/components/multiple-tabs/multiple-tabs.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('multiple-tabs')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { getRouterKeyPath, listenerRouteChange, useRouterHelper } from '@vft/router';\nimport { useMultipleTabStore, useTabs } from '@vft/store';\nimport { useRefs } from '@vft/use';\nimport { generateCssVars } from '@vft/utils';\nimport hotkeys from 'hotkeys-js';\nimport { computed, ref, unref, watchEffect } from 'vue';\nimport type { RouteLocationNormalized, RouteMeta } from 'vue-router';\nimport { useRouter, onBeforeRouteLeave } from 'vue-router';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { VftTabs, VftTabPane, type TabsPaneContext } from '@vft-ui/components';\n\nimport TabContent from './tab-content.vue';\nimport type { TabContentExpose } from './types';\nimport { initAffixTabs, useTabsDrag } from './use';\n\ninterface MultipleTabsProps {\n tabsStyle?: Record<string, Numberish>;\n contextMenuStyle?: Record<string, Numberish>;\n canDrag?: boolean;\n}\n\ndefineProps({\n \"tabsStyle\": null,\n \"contextMenuStyle\": null,\n \"canDrag\": { type: Boolean, }\n})\n\n\n\n;\n\nconst affixList = initAffixTabs();\n\nif (__props.canDrag) {\n useTabsDrag(affixList);\n}\n\nconst tabStore = useMultipleTabStore();\n\n// active path for tab\nconst activePathRef = ref('');\nconst activeIndex = ref(0);\nconst fromRoute = ref();\n\nconst router = useRouter();\nconst { go } = useRouterHelper();\n\n// get current tab list\nconst getTabsState = computed(() => {\n return tabStore.getTabList.filter((item) => {\n return !item.meta?.hideTab;\n });\n});\n\n\nwatchEffect(() => {\n if (activePathRef.value) {\n const _activeIndex = getTabsState.value.findIndex(item => {\n return getRouterKeyPath(item) === activePathRef.value;\n });\n if (_activeIndex === -1) {\n activeIndex.value = getTabsState.value?.length - 1;\n } else {\n activeIndex.value = _activeIndex;\n }\n activeIndex.value = activeIndex.value < affixList?.length ? affixList?.length - 1 : activeIndex.value;\n }\n});\n\nonBeforeRouteLeave(() => {\n fromRoute.value = unref(router.currentRoute);\n});\n\nlistenerRouteChange((route) => {\n if (!route) {\n return;\n }\n\n const { meta = {} } = route;\n const { currentActivePath, hideTab } = meta as RouteMeta;\n\n const isHide = !hideTab ? null : currentActivePath;\n\n // set current active tab value\n const activePath = getRouterKeyPath(route);\n\n if (activePathRef.value !== activePath) {\n activePathRef.value = activePath;\n }\n\n if (isHide) {\n // 如果当前 tab 是隐藏的,则从路由中根据 currentActivePath 寻找到此路由的信息,然后在 tabStore 添加此路由\n let findParentRoute = router.getRoutes().find((item) => item.path === currentActivePath);\n findParentRoute && tabStore.addTab(findParentRoute as unknown as RouteLocationNormalized, unref(fromRoute), activeIndex.value, route);\n } else {\n tabStore.addTab(unref(route), unref(fromRoute), activeIndex.value);\n }\n});\n\n// 点击 tab 根据 tab 传入的 path 路径,跳转到对应页面\nfunction handleClick (pane: TabsPaneContext) {\n if (activePathRef.value === pane.paneName) {\n \treturn;\n }\n const clickTab = getTabsState.value[pane.attrs.index];\n activePathRef.value = pane.paneName as string;\n const hideActiveRoutePath = (clickTab?.meta?.hideActiveRoute as RouteLocationNormalized)?.fullPath;\n if (hideActiveRoutePath) {\n go(hideActiveRoutePath);\n } else {\n go(clickTab.fullPath || clickTab.path);\n }\n}\n\n// click x close tab\nfunction handleRemove (targetPath: string) {\n tabStore.closeTabByKey(targetPath, router);\n}\n\nconst [refs, setRefs] = useRefs<TabContentExpose>();\n\nfunction handleContextMenu (data: {pane: {attrs: {index: number;};}; event: any;}) {\n const _index = data.pane.attrs.index;\n const _event = data.event;\n refs.value[_index].handleContext(_event);\n}\n\nconst _tabsStyle = computed(() => {\n let initTabStyle: Record<string, Numberish> = {\n padding: '4px 0 0',\n 'header-height': '26px',\n 'item-color': '#5C5C5C',\n 'item-bg-color': '#f8f8f8',\n 'font-size': '13px',\n 'item-padding': '0 10px',\n 'close-icon-left': '8px',\n 'item-distance': '10px',\n 'item-max-width': '348px',\n 'header-margin': '0 0 0 8px'\n };\n\n return { ...generateCssVars(initTabStyle, 'tabs', 'vft'), ...__props.tabsStyle };\n});\n\nconst { closeCurrent } = useTabs();\n\nhotkeys('command+e, ctrl+e', function () {\n closeCurrent();\n return false;\n});\n\nconst _contextMenuStyle = computed(() => {\n return {\n ...generateCssVars({\n border: '1px solid #dcdfe6',\n 'sub-item-height': '40px',\n 'item-min-width': '150px'\n }, 'menu', 'vft'),\n ...__props.contextMenuStyle\n };\n});\n</script>\n\n<template>\n <div :class=\"ns.b()\" :style=\"_tabsStyle\">\n <vft-tabs\n v-model:model-value=\"activePathRef\"\n type=\"card\"\n @tabClick=\"handleClick\"\n @tabRemove=\"handleRemove\"\n @tabContextMenu=\"handleContextMenu\"\n :closeIconCfg=\"{ color: 'white'}\"\n >\n <!--why key add index:key not update after sort -->\n <template v-for=\"(item, index) in getTabsState\" :key=\"getRouterKeyPath(item) + index\">\n <vft-tab-pane :closable=\"!(item.meta?.affix)\" :index=\"index\" :name=\"getRouterKeyPath(item)\">\n <template #label>\n <tab-content :contextMenuStyle=\"_contextMenuStyle\" :affixNum=\"affixList?.length\"\n :ref=\"setRefs(index)\" :tabItem=\"item\" />\n </template>\n </vft-tab-pane>\n </template>\n </vft-tabs>\n </div>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","affixList","initAffixTabs","__props","useTabsDrag","tabStore","useMultipleTabStore","activePathRef","ref","activeIndex","fromRoute","router","useRouter","go","useRouterHelper","getTabsState","computed","item","_a","watchEffect","_activeIndex","getRouterKeyPath","onBeforeRouteLeave","unref","listenerRouteChange","route","meta","currentActivePath","hideTab","isHide","activePath","findParentRoute","handleClick","pane","clickTab","hideActiveRoutePath","_b","handleRemove","targetPath","refs","setRefs","useRefs","handleContextMenu","data","_index","_event","_tabsStyle","generateCssVars","closeCurrent","useTabs","hotkeys","_contextMenuStyle"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { defineComponent as u, computed as p, openBlock as c, createElementBlock as s, unref as m, withModifiers as f, toDisplayString as x } from "vue";
1
+ import { defineComponent as l, computed as u, openBlock as c, createElementBlock as s, unref as m, withModifiers as f, toDisplayString as x } from "vue";
2
2
  import "@vft/utils";
3
3
  import "@vft/use";
4
4
  import "../divider/index.mjs";
@@ -14,11 +14,16 @@ import "../tooltip/index.mjs";
14
14
  import "../popover/index.mjs";
15
15
  import "../menu/index.mjs";
16
16
  import "./index.mjs";
17
+ import "../header-layout/index.mjs";
18
+ import "../footer-layout/index.mjs";
19
+ import "../iframe-layout/index.mjs";
20
+ import "../router-view-content/index.mjs";
21
+ import "../logo/index.mjs";
17
22
  import { useContextMenu as b } from "../context-menu/useContextMenu.mjs";
18
23
  import { useTabDropdown as d } from "./use/use-tab-dropdown.mjs";
19
24
  import "vue-router";
20
25
  import "@vft/store";
21
- const C = ["title", "onContextmenu"], H = /* @__PURE__ */ u({
26
+ const C = ["title", "onContextmenu"], Q = /* @__PURE__ */ l({
22
27
  __name: "tab-content",
23
28
  props: {
24
29
  tabItem: null,
@@ -26,24 +31,24 @@ const C = ["title", "onContextmenu"], H = /* @__PURE__ */ u({
26
31
  contextMenuStyle: null
27
32
  },
28
33
  setup(t, { expose: i }) {
29
- const [r] = b(), o = p(() => t.tabItem.meta && t.tabItem.meta.title), { getDropMenuList: a, handleContextMenu: l } = d(t.tabItem, t.affixNum);
34
+ const [r] = b(), o = u(() => t.tabItem.meta && t.tabItem.meta.title), { getDropMenuList: p, handleContextMenu: a } = d(t.tabItem, t.affixNum);
30
35
  function n(e) {
31
- l(t.tabItem)(e), r({
36
+ a(t.tabItem)(e), r({
32
37
  event: e,
33
38
  styles: t.contextMenuStyle,
34
- items: a.value
39
+ items: p.value
35
40
  });
36
41
  }
37
42
  return i({
38
43
  handleContext: n
39
44
  }), (e, M) => (c(), s("span", {
40
45
  title: m(o),
41
- class: "vri-multiple-tabs__title",
46
+ class: "vft-multiple-tabs__title",
42
47
  onContextmenu: f(n, ["stop"])
43
48
  }, x(m(o)), 41, C));
44
49
  }
45
50
  });
46
51
  export {
47
- H as default
52
+ Q as default
48
53
  };
49
54
  //# sourceMappingURL=tab-content.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"tab-content.vue2.mjs","sources":["../../../../../packages/components/multiple-tabs/tab-content.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { type RouteLocationNormalized } from 'vue-router';\nimport { useContextMenu } from '@vft-ui/components/context-menu';\nimport type { TabContentExpose } from './types';\nimport { useTabDropdown } from './use';\n\ninterface Props {\n tabItem: RouteLocationNormalized;\n affixNum: number;\n contextMenuStyle?: Record<string, Numberish>;\n}\n\ndefineProps({\n \"tabItem\": null,\n \"affixNum\": null,\n \"contextMenuStyle\": null\n})\n\nconst [createContextMenu] = useContextMenu();\n\nconst getTitle = computed(() => {\n return __props.tabItem.meta && (__props.tabItem.meta.title as string);\n});\n\nconst { getDropMenuList, handleContextMenu } = useTabDropdown(__props.tabItem, __props.affixNum);\n\nfunction handleContext(e: MouseEvent) {\n handleContextMenu(__props.tabItem)(e);\n createContextMenu({\n event: e,\n styles: __props.contextMenuStyle,\n items: getDropMenuList.value\n });\n}\n\ndefineExpose<TabContentExpose>({\n handleContext\n});\n</script>\n\n<template>\n <span :title=\"getTitle\" class=\"vri-multiple-tabs__title\" @contextmenu.stop=\"handleContext\">{{ getTitle }}</span>\n</template>\n"],"names":["createContextMenu","useContextMenu","getTitle","computed","__props","getDropMenuList","handleContextMenu","useTabDropdown","handleContext","expose"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBM,UAAA,CAACA,CAAiB,IAAIC,KAEtBC,IAAWC,EAAS,MACjBC,EAAQ,QAAQ,QAASA,EAAQ,QAAQ,KAAK,KACtD,GAEK,EAAE,iBAAAC,GAAiB,mBAAAC,MAAsBC,EAAeH,EAAQ,SAASA,EAAQ,QAAQ;AAE/F,aAASI,EAAc,GAAe;AAClB,MAAAF,EAAAF,EAAQ,OAAO,EAAE,CAAC,GAClBJ,EAAA;AAAA,QAChB,OAAO;AAAA,QACP,QAAQI,EAAQ;AAAA,QAChB,OAAOC,EAAgB;AAAA,MAAA,CACxB;AAAA,IACH;AAE+B,WAAAI,EAAA;AAAA,MAC7B,eAAAD;AAAA,IAAA,CACD;;;;;;;"}
1
+ {"version":3,"file":"tab-content.vue2.mjs","sources":["../../../../../packages/components/multiple-tabs/tab-content.vue"],"sourcesContent":["<script lang=\"ts\" setup>\nimport { computed } from 'vue';\nimport { type RouteLocationNormalized } from 'vue-router';\nimport { useContextMenu } from '@vft-ui/components/context-menu';\nimport type { TabContentExpose } from './types';\nimport { useTabDropdown } from './use';\n\ninterface Props {\n tabItem: RouteLocationNormalized;\n affixNum: number;\n contextMenuStyle?: Record<string, Numberish>;\n}\n\ndefineProps({\n \"tabItem\": null,\n \"affixNum\": null,\n \"contextMenuStyle\": null\n})\n\nconst [createContextMenu] = useContextMenu();\n\nconst getTitle = computed(() => {\n return __props.tabItem.meta && (__props.tabItem.meta.title as string);\n});\n\nconst { getDropMenuList, handleContextMenu } = useTabDropdown(__props.tabItem, __props.affixNum);\n\nfunction handleContext(e: MouseEvent) {\n handleContextMenu(__props.tabItem)(e);\n createContextMenu({\n event: e,\n styles: __props.contextMenuStyle,\n items: getDropMenuList.value\n });\n}\n\ndefineExpose<TabContentExpose>({\n handleContext\n});\n</script>\n\n<template>\n <span :title=\"getTitle\" class=\"vft-multiple-tabs__title\" @contextmenu.stop=\"handleContext\">{{ getTitle }}</span>\n</template>\n"],"names":["createContextMenu","useContextMenu","getTitle","computed","__props","getDropMenuList","handleContextMenu","useTabDropdown","handleContext","expose"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmBM,UAAA,CAACA,CAAiB,IAAIC,KAEtBC,IAAWC,EAAS,MACjBC,EAAQ,QAAQ,QAASA,EAAQ,QAAQ,KAAK,KACtD,GAEK,EAAE,iBAAAC,GAAiB,mBAAAC,MAAsBC,EAAeH,EAAQ,SAASA,EAAQ,QAAQ;AAE/F,aAASI,EAAc,GAAe;AAClB,MAAAF,EAAAF,EAAQ,OAAO,EAAE,CAAC,GAClBJ,EAAA;AAAA,QAChB,OAAO;AAAA,QACP,QAAQI,EAAQ;AAAA,QAChB,OAAOC,EAAgB;AAAA,MAAA,CACxB;AAAA,IACH;AAE+B,WAAAI,EAAA;AAAA,MAC7B,eAAAD;AAAA,IAAA,CACD;;;;;;;"}
@@ -20,12 +20,17 @@ import "../popover/index.mjs";
20
20
  import "../menu/index.mjs";
21
21
  import "@vft/use";
22
22
  import "../multiple-tabs/index.mjs";
23
- const e = (
23
+ import "../header-layout/index.mjs";
24
+ import "../footer-layout/index.mjs";
25
+ import "../iframe-layout/index.mjs";
26
+ import "../router-view-content/index.mjs";
27
+ import "../logo/index.mjs";
28
+ const i = (
24
29
  /* hoist-static*/
25
30
  x("result")
26
31
  ), I = l({
27
- name: e.b()
28
- }), L = /* @__PURE__ */ l({
32
+ name: i.b()
33
+ }), U = /* @__PURE__ */ l({
29
34
  ...I,
30
35
  props: {
31
36
  title: null,
@@ -34,27 +39,27 @@ const e = (
34
39
  },
35
40
  setup(s) {
36
41
  var m, p;
37
- const u = d(), t = f(), n = v(() => _(s.icon, "icon")), a = (m = n.value) != null && m.icon ? o("div", {
38
- class: e.e("icon")
39
- }, [o(C, { ...n.value })]) : (p = t.default) == null ? void 0 : p.call(t), i = (r) => {
42
+ const u = d(), t = f(), e = v(() => _(s.icon, "icon")), a = (m = e.value) != null && m.icon ? o("div", {
43
+ class: i.e("icon")
44
+ }, [o(C, { ...e.value })]) : (p = t.default) == null ? void 0 : p.call(t), n = (r) => {
40
45
  const c = b(u, r);
41
46
  return c ? o(
42
47
  "div",
43
48
  {
44
- class: e.e(r)
49
+ class: i.e(r)
45
50
  },
46
51
  [o("p", {}, { default: () => c })]
47
52
  ) : null;
48
53
  };
49
54
  return () => o(
50
55
  "div",
51
- { class: e.b() },
56
+ { class: i.b() },
52
57
  {
53
58
  default: () => [
54
59
  a,
55
- i("title"),
56
- i("sub-title"),
57
- t.extra ? o("div", { class: e.e("extra") }, { default: () => {
60
+ n("title"),
61
+ n("sub-title"),
62
+ t.extra ? o("div", { class: i.e("extra") }, { default: () => {
58
63
  var r;
59
64
  return (r = t.extra) == null ? void 0 : r.call(t);
60
65
  } }) : null
@@ -64,6 +69,6 @@ const e = (
64
69
  }
65
70
  });
66
71
  export {
67
- L as default
72
+ U as default
68
73
  };
69
74
  //# sourceMappingURL=result.vue2.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"result.vue2.mjs","sources":["../../../../../packages/components/result/result.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('result')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script setup lang=\"ts\">\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { h, getCurrentInstance, computed, useSlots } from 'vue';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\n\ninterface Props {\n title?: string | number;\n subTitle?: string | number;\n icon?: IconProps;\n}\n\ndefineProps({\n \"title\": null,\n \"subTitle\": null,\n \"icon\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst slots = useSlots();\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst vIcon = _icon.value?.icon ? h('div', {\n class: ns.e('icon')\n}, [h(VftIcon, { ..._icon.value })]) : slots.default?.();\n\nconst vCon = (attrName: string) => {\n const nodeCon = renderTNode(instance, attrName);\n return nodeCon ? h(\n 'div',\n {\n class: ns.e(attrName)\n }, [h('p', {}, { default: () => nodeCon })]\n ) : null;\n};\n\ndefineRender(() => {\n return (\n h(\n 'div', { class: ns.b() }, {\n default: () => [\n vIcon,\n vCon('title'),\n vCon('sub-title'),\n slots.extra ? h('div', { class: ns.e('extra') }, { default: ()=> slots.extra?.() }) : null\n ]\n }\n )\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","slots","useSlots","_icon","computed","singleAttrToObj","__props","vIcon","_a","h","VftIcon","_b","vCon","attrName","nodeCon","renderTNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AACA,MAAMA;AAAA;AAAA,EAAuBC,EAAa,QAAQ;AAAA,GAGlDC,IAA6BC,EAAmB;AAAA,EAC9C,MAAMH,EAAG,EAAE;AACb,CAAC;;;;;;;;;AAuBD,UAAMI,IAAWC,KAEXC,IAAQC,KAERC,IAAQC,EAAS,MACdC,EAAgBC,EAAQ,MAAM,MAAM,CAC5C,GAEKC,KAAQC,IAAAL,EAAM,UAAN,QAAAK,EAAa,OAAOC,EAAE,OAAO;AAAA,MACzC,OAAOd,EAAG,EAAE,MAAM;AAAA,IACjB,GAAA,CAACc,EAAEC,GAAS,EAAE,GAAGP,EAAM,MAAO,CAAA,CAAC,CAAC,KAAIQ,IAAAV,EAAM,YAAN,gBAAAU,EAAA,KAAAV,IAEjCW,IAAO,CAACC,MAAqB;AAC3B,YAAAC,IAAUC,EAAYhB,GAAUc,CAAQ;AAC9C,aAAOC,IAAUL;AAAA,QACf;AAAA,QACA;AAAA,UACE,OAAOd,EAAG,EAAEkB,CAAQ;AAAA,QACtB;AAAA,QAAG,CAACJ,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,MAAMK,EAAQ,CAAC,CAAC;AAAA,MACxC,IAAA;AAAA,IAAA;AAGO,WAAA,MAETL;AAAA,MACE;AAAA,MAAO,EAAE,OAAOd,EAAG,IAAI;AAAA,MAAG;AAAA,QACxB,SAAS,MAAM;AAAA,UACbY;AAAA,UACAK,EAAK,OAAO;AAAA,UACZA,EAAK,WAAW;AAAA,UAChBX,EAAM,QAAQQ,EAAE,OAAO,EAAE,OAAOd,EAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,MAAA;;AAAK,oBAAAa,IAAAP,EAAM,UAAN,gBAAAO,EAAA,KAAAP;AAAA,YAAiB,CAAA,IAAI;AAAA,QACxF;AAAA,MACF;AAAA,IAAA;AAAA;;"}
1
+ {"version":3,"file":"result.vue2.mjs","sources":["../../../../../packages/components/result/result.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('result')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script setup lang=\"ts\">\nimport { renderTNode, singleAttrToObj } from '@vft/utils';\nimport { h, getCurrentInstance, computed, useSlots } from 'vue';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\n\ninterface Props {\n title?: string | number;\n subTitle?: string | number;\n icon?: IconProps;\n}\n\ndefineProps({\n \"title\": null,\n \"subTitle\": null,\n \"icon\": null\n})\n\n\n\n;\n\nconst instance = getCurrentInstance()!;\n\nconst slots = useSlots();\n\nconst _icon = computed(() => {\n return singleAttrToObj(__props.icon, 'icon') as IconProps;\n});\n\nconst vIcon = _icon.value?.icon ? h('div', {\n class: ns.e('icon')\n}, [h(VftIcon, { ..._icon.value })]) : slots.default?.();\n\nconst vCon = (attrName: string) => {\n const nodeCon = renderTNode(instance, attrName);\n return nodeCon ? h(\n 'div',\n {\n class: ns.e(attrName)\n }, [h('p', {}, { default: () => nodeCon })]\n ) : null;\n};\n\ndefineRender(() => {\n return (\n h(\n 'div', { class: ns.b() }, {\n default: () => [\n vIcon,\n vCon('title'),\n vCon('sub-title'),\n slots.extra ? h('div', { class: ns.e('extra') }, { default: ()=> slots.extra?.() }) : null\n ]\n }\n )\n );\n});\n</script>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","instance","getCurrentInstance","slots","useSlots","_icon","computed","singleAttrToObj","__props","vIcon","_a","h","VftIcon","_b","vCon","attrName","nodeCon","renderTNode"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,MAAMA;AAAA;AAAA,EAAuBC,EAAa,QAAQ;AAAA,GAGlDC,IAA6BC,EAAmB;AAAA,EAC9C,MAAMH,EAAG,EAAE;AACb,CAAC;;;;;;;;;AAuBD,UAAMI,IAAWC,KAEXC,IAAQC,KAERC,IAAQC,EAAS,MACdC,EAAgBC,EAAQ,MAAM,MAAM,CAC5C,GAEKC,KAAQC,IAAAL,EAAM,UAAN,QAAAK,EAAa,OAAOC,EAAE,OAAO;AAAA,MACzC,OAAOd,EAAG,EAAE,MAAM;AAAA,IACjB,GAAA,CAACc,EAAEC,GAAS,EAAE,GAAGP,EAAM,MAAO,CAAA,CAAC,CAAC,KAAIQ,IAAAV,EAAM,YAAN,gBAAAU,EAAA,KAAAV,IAEjCW,IAAO,CAACC,MAAqB;AAC3B,YAAAC,IAAUC,EAAYhB,GAAUc,CAAQ;AAC9C,aAAOC,IAAUL;AAAA,QACf;AAAA,QACA;AAAA,UACE,OAAOd,EAAG,EAAEkB,CAAQ;AAAA,QACtB;AAAA,QAAG,CAACJ,EAAE,KAAK,CAAC,GAAG,EAAE,SAAS,MAAMK,EAAQ,CAAC,CAAC;AAAA,MACxC,IAAA;AAAA,IAAA;AAGO,WAAA,MAETL;AAAA,MACE;AAAA,MAAO,EAAE,OAAOd,EAAG,IAAI;AAAA,MAAG;AAAA,QACxB,SAAS,MAAM;AAAA,UACbY;AAAA,UACAK,EAAK,OAAO;AAAA,UACZA,EAAK,WAAW;AAAA,UAChBX,EAAM,QAAQQ,EAAE,OAAO,EAAE,OAAOd,EAAG,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,MAAA;;AAAK,oBAAAa,IAAAP,EAAM,UAAN,gBAAAO,EAAA,KAAAP;AAAA,YAAiB,CAAA,IAAI;AAAA,QACxF;AAAA,MACF;AAAA,IAAA;AAAA;;"}