@gx-design-vue/pro-layout 0.1.0-alpha.2 → 0.1.0-alpha.21

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 (272) hide show
  1. package/dist/ProLayout.d.ts +4 -536
  2. package/dist/ProLayout.js +489 -358
  3. package/dist/components/AppPage/context.d.ts +4 -3
  4. package/dist/components/AppPage/context.js +3 -5
  5. package/dist/components/AppPage/index.d.ts +29 -52
  6. package/dist/components/AppPage/index.js +71 -54
  7. package/dist/components/AppPage/style.d.ts +8 -7
  8. package/dist/components/AppPage/style.js +16 -17
  9. package/dist/components/Breadcrumb/index.d.ts +19 -0
  10. package/dist/components/Breadcrumb/index.js +129 -0
  11. package/dist/components/Breadcrumb/interface.d.ts +33 -0
  12. package/dist/components/Breadcrumb/interface.js +1 -0
  13. package/dist/components/CollapseButton/Arrow.d.ts +4 -0
  14. package/dist/components/{SiderMenu → CollapseButton}/Arrow.js +2 -4
  15. package/dist/components/CollapseButton/index.d.ts +7 -0
  16. package/dist/components/CollapseButton/index.js +45 -0
  17. package/dist/components/CollapseButton/interface.d.ts +19 -0
  18. package/dist/components/CollapseButton/interface.js +1 -0
  19. package/dist/components/Footer/index.d.ts +10 -0
  20. package/dist/components/Footer/index.js +69 -0
  21. package/dist/components/Footer/interface.d.ts +22 -0
  22. package/dist/components/Footer/interface.js +1 -0
  23. package/dist/components/FooterToolbar/index.d.ts +5 -72
  24. package/dist/components/FooterToolbar/index.js +77 -90
  25. package/dist/components/FooterToolbar/style.d.ts +10 -0
  26. package/dist/components/FooterToolbar/style.js +34 -0
  27. package/dist/components/Header/index.d.ts +7 -0
  28. package/dist/components/Header/index.js +140 -0
  29. package/dist/components/Header/interface.d.ts +41 -0
  30. package/dist/components/Header/interface.js +1 -0
  31. package/dist/components/Logo/index.d.ts +9 -0
  32. package/dist/components/Logo/index.js +63 -0
  33. package/dist/components/Logo/interface.d.ts +13 -0
  34. package/dist/components/Logo/interface.js +1 -0
  35. package/dist/components/Menu/iconRender.d.ts +10 -0
  36. package/dist/components/Menu/iconRender.js +23 -0
  37. package/dist/components/Menu/index.d.ts +13 -0
  38. package/dist/components/Menu/index.js +778 -0
  39. package/dist/components/Menu/interface.d.ts +50 -0
  40. package/dist/components/Menu/interface.js +9 -0
  41. package/dist/components/Menu/overflow.d.ts +39 -0
  42. package/dist/components/Menu/overflow.js +81 -0
  43. package/dist/components/Menu/style/base.d.ts +12 -0
  44. package/dist/components/Menu/style/base.js +36 -0
  45. package/dist/components/Menu/style/horizontal.d.ts +19 -0
  46. package/dist/components/Menu/style/horizontal.js +303 -0
  47. package/dist/components/Menu/style/index.d.ts +356 -0
  48. package/dist/components/Menu/style/index.js +147 -0
  49. package/dist/components/Menu/style/inline.d.ts +13 -0
  50. package/dist/components/Menu/style/inline.js +292 -0
  51. package/dist/components/PageContainer/PageHeader.d.ts +30 -36
  52. package/dist/components/PageContainer/PageHeader.js +80 -46
  53. package/dist/components/PageContainer/index.d.ts +8 -194
  54. package/dist/components/PageContainer/index.js +297 -209
  55. package/dist/components/PageContainer/style.d.ts +5 -0
  56. package/dist/components/PageContainer/style.js +142 -0
  57. package/dist/components/PageTransition/animate.d.ts +41 -0
  58. package/dist/components/PageTransition/animate.js +106 -0
  59. package/dist/components/PageTransition/index.d.ts +57 -0
  60. package/dist/components/PageTransition/index.js +66 -0
  61. package/dist/components/{PageTranstion → PageTransition}/keyFrame/back.d.ts +4 -4
  62. package/dist/components/{PageTranstion → PageTransition}/keyFrame/back.js +2 -4
  63. package/dist/components/{PageTranstion → PageTransition}/keyFrame/bounce.d.ts +4 -4
  64. package/dist/components/{PageTranstion → PageTransition}/keyFrame/bounce.js +2 -4
  65. package/dist/components/{PageTranstion → PageTransition}/keyFrame/fade.d.ts +4 -4
  66. package/dist/components/{PageTranstion → PageTransition}/keyFrame/fade.js +2 -4
  67. package/dist/components/{PageTranstion → PageTransition}/keyFrame/flip.d.ts +4 -4
  68. package/dist/components/{PageTranstion → PageTransition}/keyFrame/flip.js +2 -4
  69. package/dist/components/{PageTranstion → PageTransition}/keyFrame/lightSpeed.d.ts +4 -4
  70. package/dist/components/{PageTranstion → PageTransition}/keyFrame/lightSpeed.js +2 -4
  71. package/dist/components/PageTransition/keyFrame/roll.d.ts +10 -0
  72. package/dist/components/{PageTranstion → PageTransition}/keyFrame/roll.js +2 -4
  73. package/dist/components/{PageTranstion → PageTransition}/keyFrame/rotate.d.ts +4 -4
  74. package/dist/components/{PageTranstion → PageTransition}/keyFrame/rotate.js +2 -4
  75. package/dist/components/{PageTranstion → PageTransition}/keyFrame/slide.d.ts +4 -4
  76. package/dist/components/{PageTranstion → PageTransition}/keyFrame/slide.js +2 -4
  77. package/dist/components/{PageTranstion → PageTransition}/keyFrame/zoom.d.ts +4 -4
  78. package/dist/components/{PageTranstion → PageTransition}/keyFrame/zoom.js +2 -4
  79. package/dist/components/PageTransition/style.d.ts +11 -0
  80. package/dist/components/{PageTranstion → PageTransition}/style.js +9 -13
  81. package/dist/components/Sider/index.d.ts +7 -0
  82. package/dist/components/Sider/index.js +206 -0
  83. package/dist/components/Sider/interface.d.ts +39 -0
  84. package/dist/components/Sider/interface.js +1 -0
  85. package/dist/components/Tabs/InnerTabs.d.ts +7 -0
  86. package/dist/components/Tabs/InnerTabs.js +117 -0
  87. package/dist/components/Tabs/contextMenu.d.ts +41 -0
  88. package/dist/components/Tabs/contextMenu.js +89 -0
  89. package/dist/components/Tabs/hooks/flipAnimate.d.ts +24 -0
  90. package/dist/components/Tabs/hooks/flipAnimate.js +40 -0
  91. package/dist/components/Tabs/hooks/useAutoScroll.d.ts +27 -0
  92. package/dist/components/Tabs/hooks/useAutoScroll.js +122 -0
  93. package/dist/components/Tabs/hooks/useTabDrag.d.ts +31 -0
  94. package/dist/components/Tabs/hooks/useTabDrag.js +252 -0
  95. package/dist/components/Tabs/index.d.ts +13 -0
  96. package/dist/components/Tabs/index.js +181 -0
  97. package/dist/components/Tabs/interface.d.ts +74 -0
  98. package/dist/components/Tabs/interface.js +1 -0
  99. package/dist/components/Tabs/style/index.d.ts +35 -0
  100. package/dist/components/Tabs/style/index.js +161 -0
  101. package/dist/components/WrapContent/index.d.ts +9 -0
  102. package/dist/components/WrapContent/index.js +26 -0
  103. package/dist/components/WrapContent/interface.d.ts +15 -0
  104. package/dist/components/WrapContent/interface.js +1 -0
  105. package/dist/context/index.d.ts +53 -0
  106. package/dist/context/index.js +5 -0
  107. package/dist/defaultConfig.d.ts +10 -0
  108. package/dist/defaultConfig.js +38 -0
  109. package/dist/hooks/useLayoutBase.d.ts +78 -0
  110. package/dist/hooks/useLayoutBase.js +86 -0
  111. package/dist/hooks/useMenu.d.ts +77 -0
  112. package/dist/hooks/useMenu.js +166 -0
  113. package/dist/hooks/useTabs.d.ts +54 -0
  114. package/dist/hooks/useTabs.js +388 -0
  115. package/dist/index.d.ts +22 -27
  116. package/dist/index.js +15 -24
  117. package/dist/interface.d.ts +516 -0
  118. package/dist/interface.js +34 -0
  119. package/dist/pro-layout.esm.js +5848 -5075
  120. package/dist/pro-layout.js +16 -37
  121. package/dist/style/breadcrumb.d.ts +8 -0
  122. package/dist/style/breadcrumb.js +77 -0
  123. package/dist/style/collapseButton.d.ts +8 -0
  124. package/dist/style/collapseButton.js +57 -0
  125. package/dist/style/content.d.ts +8 -0
  126. package/dist/style/content.js +29 -0
  127. package/dist/style/footer.d.ts +8 -0
  128. package/dist/style/footer.js +33 -0
  129. package/dist/style/header.d.ts +8 -0
  130. package/dist/style/header.js +76 -0
  131. package/dist/style/index.d.ts +3 -22
  132. package/dist/style/index.js +51 -55
  133. package/dist/style/logo.d.ts +8 -0
  134. package/dist/style/logo.js +76 -0
  135. package/dist/style/menu.d.ts +15 -0
  136. package/dist/style/menu.js +49 -0
  137. package/dist/style/rightContent.d.ts +12 -0
  138. package/dist/style/rightContent.js +74 -0
  139. package/dist/style/search.d.ts +12 -0
  140. package/dist/style/search.js +94 -0
  141. package/dist/style/sider.d.ts +8 -0
  142. package/dist/style/sider.js +92 -0
  143. package/dist/style/tabs.d.ts +14 -0
  144. package/dist/style/tabs.js +97 -0
  145. package/dist/theme/augment.d.ts +20 -0
  146. package/dist/theme/augment.js +1 -0
  147. package/dist/theme/interface/components.d.ts +20 -0
  148. package/dist/theme/interface/components.js +1 -0
  149. package/dist/utils/config.d.ts +12 -0
  150. package/dist/utils/config.js +18 -0
  151. package/dist/utils/menu.d.ts +111 -20
  152. package/dist/utils/menu.js +263 -118
  153. package/dist/utils/style.d.ts +4 -0
  154. package/dist/utils/style.js +21 -0
  155. package/dist/utils/themeComponents.d.ts +28 -0
  156. package/dist/utils/themeComponents.js +89 -0
  157. package/package.json +24 -15
  158. package/dist/Context/expose.d.ts +0 -6
  159. package/dist/Context/expose.js +0 -7
  160. package/dist/Context/index.d.ts +0 -43
  161. package/dist/Context/index.js +0 -18
  162. package/dist/WrapContent.d.ts +0 -100
  163. package/dist/WrapContent.js +0 -45
  164. package/dist/components/BaseMenu/index.d.ts +0 -255
  165. package/dist/components/BaseMenu/index.js +0 -381
  166. package/dist/components/BaseMenu/props.d.ts +0 -105
  167. package/dist/components/BaseMenu/props.js +0 -94
  168. package/dist/components/BaseMenu/style.d.ts +0 -6
  169. package/dist/components/BaseMenu/style.js +0 -155
  170. package/dist/components/BreadCrumb/Breadcrumb.d.ts +0 -33
  171. package/dist/components/BreadCrumb/Breadcrumb.js +0 -75
  172. package/dist/components/BreadCrumb/index.d.ts +0 -7
  173. package/dist/components/BreadCrumb/index.js +0 -44
  174. package/dist/components/BreadCrumb/style.d.ts +0 -8
  175. package/dist/components/BreadCrumb/style.js +0 -87
  176. package/dist/components/CollapsedIcon/index.d.ts +0 -33
  177. package/dist/components/CollapsedIcon/index.js +0 -51
  178. package/dist/components/CollapsedIcon/style.d.ts +0 -9
  179. package/dist/components/CollapsedIcon/style.js +0 -34
  180. package/dist/components/FooterToolbar/props.d.ts +0 -47
  181. package/dist/components/FooterToolbar/props.js +0 -33
  182. package/dist/components/FooterToolbar/style/index.d.ts +0 -14
  183. package/dist/components/FooterToolbar/style/index.js +0 -48
  184. package/dist/components/FooterToolbar/style/stylish.d.ts +0 -18
  185. package/dist/components/FooterToolbar/style/stylish.js +0 -16
  186. package/dist/components/GlobalFooter/index.d.ts +0 -73
  187. package/dist/components/GlobalFooter/index.js +0 -77
  188. package/dist/components/GlobalFooter/style.d.ts +0 -6
  189. package/dist/components/GlobalFooter/style.js +0 -29
  190. package/dist/components/GlobalHeader/DefaultHeader.d.ts +0 -164
  191. package/dist/components/GlobalHeader/DefaultHeader.js +0 -149
  192. package/dist/components/GlobalHeader/index.d.ts +0 -164
  193. package/dist/components/GlobalHeader/index.js +0 -78
  194. package/dist/components/GlobalHeader/props.d.ts +0 -70
  195. package/dist/components/GlobalHeader/props.js +0 -56
  196. package/dist/components/GlobalHeader/style/defaultHeader.d.ts +0 -6
  197. package/dist/components/GlobalHeader/style/defaultHeader.js +0 -108
  198. package/dist/components/GlobalHeader/style/header.d.ts +0 -6
  199. package/dist/components/GlobalHeader/style/header.js +0 -41
  200. package/dist/components/LogoContent/index.d.ts +0 -80
  201. package/dist/components/LogoContent/index.js +0 -90
  202. package/dist/components/LogoContent/props.d.ts +0 -57
  203. package/dist/components/LogoContent/props.js +0 -37
  204. package/dist/components/LogoContent/style.d.ts +0 -6
  205. package/dist/components/LogoContent/style.js +0 -63
  206. package/dist/components/PageContainer/props.d.ts +0 -138
  207. package/dist/components/PageContainer/props.js +0 -103
  208. package/dist/components/PageContainer/style/index.d.ts +0 -14
  209. package/dist/components/PageContainer/style/index.js +0 -52
  210. package/dist/components/PageContainer/style/pageHeader.d.ts +0 -6
  211. package/dist/components/PageContainer/style/pageHeader.js +0 -44
  212. package/dist/components/PageTranstion/index.d.ts +0 -40
  213. package/dist/components/PageTranstion/index.js +0 -71
  214. package/dist/components/PageTranstion/keyFrame/roll.d.ts +0 -10
  215. package/dist/components/PageTranstion/style.d.ts +0 -10
  216. package/dist/components/SiderMenu/Arrow.d.ts +0 -6
  217. package/dist/components/SiderMenu/SiderMenu.d.ts +0 -180
  218. package/dist/components/SiderMenu/SiderMenu.js +0 -265
  219. package/dist/components/SiderMenu/index.d.ts +0 -193
  220. package/dist/components/SiderMenu/index.js +0 -51
  221. package/dist/components/SiderMenu/props.d.ts +0 -77
  222. package/dist/components/SiderMenu/props.js +0 -67
  223. package/dist/components/SiderMenu/style/index.d.ts +0 -12
  224. package/dist/components/SiderMenu/style/index.js +0 -162
  225. package/dist/components/SiderMenu/typings.d.ts +0 -38
  226. package/dist/components/SiderMenu/typings.js +0 -1
  227. package/dist/components/TabsRoute/index.d.ts +0 -95
  228. package/dist/components/TabsRoute/index.js +0 -405
  229. package/dist/components/TabsRoute/props.d.ts +0 -78
  230. package/dist/components/TabsRoute/props.js +0 -47
  231. package/dist/components/TabsRoute/style.d.ts +0 -15
  232. package/dist/components/TabsRoute/style.js +0 -133
  233. package/dist/components/TabsRoute/utils/config.d.ts +0 -18
  234. package/dist/components/TabsRoute/utils/config.js +0 -64
  235. package/dist/config/animate.d.ts +0 -11
  236. package/dist/config/animate.js +0 -76
  237. package/dist/config/index.d.ts +0 -34
  238. package/dist/config/index.js +0 -30
  239. package/dist/hooks/collapsed/index.d.ts +0 -15
  240. package/dist/hooks/collapsed/index.js +0 -50
  241. package/dist/hooks/layout/useLayoutExpose.d.ts +0 -15
  242. package/dist/hooks/layout/useLayoutExpose.js +0 -22
  243. package/dist/hooks/layout/usePageContent.d.ts +0 -6
  244. package/dist/hooks/layout/usePageContent.js +0 -28
  245. package/dist/hooks/menu/context.d.ts +0 -21
  246. package/dist/hooks/menu/context.js +0 -7
  247. package/dist/hooks/menu/index.d.ts +0 -29
  248. package/dist/hooks/menu/index.js +0 -118
  249. package/dist/hooks/theme/index.d.ts +0 -11
  250. package/dist/hooks/theme/index.js +0 -13
  251. package/dist/props/collapsedProps.d.ts +0 -39
  252. package/dist/props/collapsedProps.js +0 -45
  253. package/dist/props/defaultSettings.d.ts +0 -62
  254. package/dist/props/defaultSettings.js +0 -56
  255. package/dist/props/index.d.ts +0 -226
  256. package/dist/props/index.js +0 -109
  257. package/dist/props/themeProps.d.ts +0 -14
  258. package/dist/props/themeProps.js +0 -10
  259. package/dist/types/Breadcrumb.d.ts +0 -22
  260. package/dist/types/Breadcrumb.js +0 -1
  261. package/dist/types/MenuTypings.d.ts +0 -46
  262. package/dist/types/MenuTypings.js +0 -1
  263. package/dist/types/RouteTypings.d.ts +0 -96
  264. package/dist/types/RouteTypings.js +0 -1
  265. package/dist/types/SlotsTypings.d.ts +0 -124
  266. package/dist/types/SlotsTypings.js +0 -32
  267. package/dist/types/typings.d.ts +0 -73
  268. package/dist/types/typings.js +0 -3
  269. package/dist/utils/index.d.ts +0 -7
  270. package/dist/utils/index.js +0 -17
  271. package/dist/utils/style/index.d.ts +0 -44
  272. package/dist/utils/style/index.js +0 -103
@@ -1,381 +0,0 @@
1
- import { useProLayoutContext } from "../../Context/index.js";
2
- import { convertCSSPropertiesToString } from "../../utils/style/index.js";
3
- import { defaultSettings } from "../../config/index.js";
4
- import { baseMenuProps } from "./props.js";
5
- import { ProBaseMenuStyle } from "./style.js";
6
- import { cloneVNode, computed, createVNode, defineComponent, isVNode, mergeProps, resolveComponent, watch } from "vue";
7
- import { useMemo, useState } from "@gx-design-vue/pro-hooks";
8
- import { unit, useProConfigContext, useProStyle } from "@gx-design-vue/pro-provider";
9
- import { classNames as classNames$1, getPrefixCls, isImg, isString, isUrl } from "@gx-design-vue/pro-utils";
10
- import { useStyleTag } from "@vueuse/core";
11
- import { Menu } from "ant-design-vue";
12
- import { omit } from "es-toolkit";
13
- import { createFromIconfontCN } from "@ant-design/icons-vue";
14
- import { useRouter } from "vue-router";
15
-
16
- //#region src/components/BaseMenu/index.tsx
17
- const LazyIcon = (props) => {
18
- const { icon, iconPrefix = "", iconfontUrl, hashId, style } = props;
19
- const className = classNames$1(props.className, iconPrefix, hashId);
20
- /**
21
- * 如果没有icon在收起的时候用首字母代替
22
- */
23
- const defaultIcon = createVNode("span", {
24
- "class": classNames$1(className),
25
- "style": { display: "none" }
26
- }, [createVNode("span", { "class": "anticon" }, null)]);
27
- if (!icon) return defaultIcon;
28
- const renderImg = (src) => createVNode("img", {
29
- "src": src,
30
- "alt": "icon",
31
- "class": classNames$1(props.className ? `${props.className}-image` : "", className),
32
- "style": style
33
- }, null);
34
- const renderIconFont = (type) => {
35
- const IconFont = createFromIconfontCN({ scriptUrl: iconfontUrl || defaultSettings.iconfontUrl });
36
- return iconfontUrl ? createVNode(IconFont, {
37
- "type": type,
38
- "class": className,
39
- "style": style
40
- }, null) : createVNode("span", {
41
- "class": className,
42
- "style": style
43
- }, null);
44
- };
45
- const renderVNodeIcon = () => cloneVNode(icon, {
46
- class: className,
47
- style
48
- });
49
- const renderByString = (str) => {
50
- if (isUrl(str) || isImg(str)) return renderImg(str);
51
- if (iconPrefix === "iconfont") return renderIconFont(str);
52
- const DynamicIcon = resolveComponent(str);
53
- return typeof DynamicIcon === "function" && createVNode(DynamicIcon, null, null) || defaultIcon;
54
- };
55
- if (typeof icon === "string") return icon !== "" ? renderByString(icon) : defaultIcon;
56
- if (isVNode(icon)) return renderVNodeIcon();
57
- return defaultIcon;
58
- };
59
- let IconFont = createFromIconfontCN({ scriptUrl: defaultSettings.iconfontUrl });
60
- function getIcon({ icon, style, iconPrefixes = "icon-", className, hashId }) {
61
- if (typeof icon === "string" && icon !== "") {
62
- if (isUrl(icon) || isImg(icon)) return createVNode("img", {
63
- "key": icon,
64
- "src": icon,
65
- "alt": "icon",
66
- "style": style,
67
- "class": classNames$1(`${className}-image`, hashId)
68
- }, null);
69
- if (icon.startsWith(iconPrefixes)) return createVNode(IconFont, {
70
- "type": icon,
71
- "style": style
72
- }, null);
73
- }
74
- return icon;
75
- }
76
- function getMenuTitleSymbol(title) {
77
- if (title && typeof title === "string") return title.substring(0, 1).toUpperCase();
78
- return null;
79
- }
80
- var MenuUtil = class {
81
- constructor(props) {
82
- this.props = props;
83
- }
84
- getNavMenuItems = (menusData = [], level, noGroupLevel) => menusData.filter((item) => !item.meta?.hideInMenu).map((item) => this.getSubMenuOrItem(item, level, noGroupLevel)).filter((item) => item).flat(1);
85
- /** Get SubMenu or Item */
86
- getSubMenuOrItem = (item, level, noGroupLevel) => {
87
- const { menuRenderType, subMenuItemRender, baseClassName, iconPrefixes, styles, classNames } = this.props;
88
- const collapsed = menuRenderType === "sider" ? this.props.collapsed : false;
89
- const name = this.getIntlName(item);
90
- const inlineIndentCount = menuRenderType === "sider" ? item.meta?.inlineIndent ?? level * (this.props.extraInlineIndent ?? 10) : 0;
91
- const children = item?.children;
92
- const hidden = item?.meta?.hideInMenu;
93
- const rightContent = item?.meta?.rightContent;
94
- const hasDivider = item?.meta?.divider;
95
- const isSubMenu = Array.isArray(children) && children.length > 0 && !hidden;
96
- const emptyChilds = children?.every((child) => child.meta?.hideInMenu);
97
- if (isSubMenu && !emptyChilds) {
98
- const shouldHasIcon = collapsed || menuRenderType === "header" ? level === 0 : item.meta?.icon || level === 0;
99
- const hasImageIcon = typeof item.meta?.icon === "string" ? isUrl(item.meta?.icon) || isImg(item.meta?.icon) : false;
100
- const iconDom = getIcon({
101
- icon: item.meta?.icon,
102
- style: item.meta?.styles?.itemIcon,
103
- iconPrefixes,
104
- className: classNames$1(`${baseClassName}-item`, item.meta?.classNames?.itemIcon),
105
- hashId: this.props?.hashId
106
- });
107
- /**
108
- * 如果没有icon在收起的时候用首字母代替
109
- */
110
- const defaultIcon = collapsed && shouldHasIcon ? getMenuTitleSymbol(item.meta?.title) : null;
111
- const defaultTitle = createVNode("div", {
112
- "class": classNames$1(classNames?.menuItemTitle, `${baseClassName}-item-title`, this.props?.hashId, {
113
- [`${baseClassName}-item-title-collapsed`]: collapsed,
114
- [`${baseClassName}-item-title-collapsed-level-${noGroupLevel}`]: collapsed
115
- }, item.meta?.classNames?.itemTitle),
116
- "style": {
117
- paddingInlineStart: collapsed ? 0 : level === 0 ? void 0 : unit(inlineIndentCount),
118
- ...styles?.menuItemTitle || {},
119
- ...item.meta?.styles?.itemTitle || {}
120
- }
121
- }, [
122
- shouldHasIcon && iconDom ? !collapsed || level === 0 ? createVNode("span", {
123
- "class": classNames$1(`${baseClassName}-item-icon`, this.props?.hashId, classNames?.menuItemIcon, item.meta?.classNames?.itemIcon),
124
- "style": {
125
- ...styles?.menuItemIcon,
126
- ...hasImageIcon ? {} : item.meta?.styles?.itemIcon || {}
127
- }
128
- }, [iconDom]) : defaultIcon : defaultIcon,
129
- createVNode("span", {
130
- "class": classNames$1(`${baseClassName}-item-text`, this.props?.hashId, { [`${baseClassName}-item-text-has-icon`]: shouldHasIcon && (iconDom || defaultIcon) }, classNames?.menuItemTitleText, item.meta?.classNames?.itemTitle),
131
- "style": {
132
- ...styles?.menuItemTitleText || {},
133
- ...item.meta?.styles?.itemTitle || {}
134
- }
135
- }, [name]),
136
- rightContent && typeof rightContent === "function" ? createVNode("div", {
137
- "class": classNames$1(`${baseClassName}-item-right-content`, this.props.hashId, item.meta?.classNames?.itemRight),
138
- "style": item.meta?.styles?.itemRight
139
- }, [rightContent(item.meta)]) : null
140
- ]);
141
- const title = subMenuItemRender ? subMenuItemRender({
142
- item,
143
- children: defaultTitle,
144
- menuProps: this.props
145
- }) : defaultTitle;
146
- const childrenList = this.getNavMenuItems(children, level + 1, level === 0 && collapsed ? level : level + 1);
147
- return [hasDivider && menuRenderType === "sider" ? { type: "divider" } : void 0, {
148
- key: item.name,
149
- label: title,
150
- children: childrenList,
151
- style: {
152
- ...styles?.subMenu || {},
153
- ...item.meta?.styles?.subMenu || {}
154
- },
155
- disabled: item.meta?.disabled,
156
- class: classNames$1(classNames?.subMenu, {
157
- [`${baseClassName}-submenu`]: true,
158
- [`${baseClassName}-submenu-has-icon`]: shouldHasIcon && iconDom
159
- }, item.meta?.classNames?.subMenu),
160
- popupClassName: classNames$1(classNames?.subMenuPopup, `${baseClassName}-submenu-popup`, `${baseClassName}-submenu-popup-${this.props?.menuRenderType}`, this.props?.hashId, item.meta?.classNames?.subMenuPopup)
161
- }].filter(Boolean);
162
- }
163
- return [hasDivider && menuRenderType === "sider" ? { type: "divider" } : void 0, {
164
- class: classNames$1(`${baseClassName}-item`, classNames?.menuItem, item.meta?.classNames?.item),
165
- style: {
166
- ...styles?.menuItem || {},
167
- ...item.meta?.styles?.item || {}
168
- },
169
- key: item.name,
170
- disabled: item.meta?.disabled,
171
- label: this.getMenuItemPath(item, level, noGroupLevel)
172
- }].filter(Boolean);
173
- };
174
- getIntlName = (item) => {
175
- const meta = { ...item.meta };
176
- const finalName = meta.title;
177
- if (this.props.menuTextRender) return this.props.menuTextRender({
178
- item,
179
- defaultText: meta.title,
180
- menuProps: this.props
181
- });
182
- return finalName;
183
- };
184
- /**
185
- * 判断是否是http链接.返回 Link 或 a Judge whether it is http link.return a or Link
186
- *
187
- * @memberof SiderMenu
188
- */
189
- getMenuItemPath = (item, level, noGroupLevel) => {
190
- const itemPath = this.conversionPath(item.path || "/");
191
- const { isMobile, menuRenderType, onCollapse, menuItemRender, iconPrefixes, classNames, styles, baseClassName } = this.props;
192
- const menuItemTitle = this.getIntlName(item);
193
- const collapsed = menuRenderType === "sider" ? this.props.collapsed : false;
194
- const hasIcon = collapsed || menuRenderType === "header" ? level === 0 : !!(item.meta?.icon || level === 0);
195
- const rightContent = item.meta?.rightContent;
196
- const hasImageIcon = typeof item.meta?.icon === "string" ? isUrl(item.meta?.icon) || isImg(item.meta?.icon) : false;
197
- const inlineIndentCount = menuRenderType === "sider" ? item.meta?.inlineIndent ?? level * (this.props.extraInlineIndent ?? 10) : 0;
198
- const icon = !hasIcon ? null : getIcon({
199
- icon: item.meta?.icon,
200
- style: item.meta?.styles?.itemIcon,
201
- iconPrefixes,
202
- className: `${baseClassName}-item`,
203
- hashId: this.props?.hashId
204
- });
205
- const defaultIcon = collapsed && hasIcon ? getMenuTitleSymbol(item.meta?.title) : null;
206
- const isHttpUrl = item.meta?.linkStatus === 1 && isUrl(item.meta?.link);
207
- const defaultItem = createVNode("div", {
208
- "key": itemPath,
209
- "class": classNames$1(classNames?.menuItemTitle, `${baseClassName}-item-title`, this.props?.hashId, {
210
- [`${baseClassName}-item-link`]: isHttpUrl,
211
- [`${baseClassName}-item-title-collapsed`]: collapsed,
212
- [`${baseClassName}-item-title-collapsed-level-${noGroupLevel}`]: collapsed
213
- }, item.meta?.classNames?.itemTitle),
214
- "style": {
215
- paddingInlineStart: collapsed ? 0 : unit(inlineIndentCount),
216
- ...styles?.menuItemTitle || {},
217
- ...item.meta?.styles?.itemTitle || {}
218
- }
219
- }, [
220
- createVNode("span", {
221
- "class": classNames$1(`${baseClassName}-item-icon ${this.props?.hashId}`, classNames?.menuItemIcon),
222
- "style": {
223
- display: defaultIcon === null && !icon ? "none" : "",
224
- ...styles?.menuItemIcon,
225
- ...hasImageIcon ? {} : item.meta?.styles?.itemIcon || {}
226
- }
227
- }, [icon || createVNode("span", { "class": "anticon" }, [defaultIcon])]),
228
- createVNode("span", {
229
- "class": classNames$1(classNames?.menuItemTitleText, `${baseClassName}-item-text`, this.props?.hashId, { [`${baseClassName}-item-text-has-icon`]: hasIcon && (icon || defaultIcon) }, item.meta?.classNames?.itemTitleText),
230
- "style": {
231
- ...styles?.menuItemTitleText || {},
232
- ...item.meta?.styles?.itemTitleText || {}
233
- }
234
- }, [menuItemTitle]),
235
- rightContent && typeof rightContent === "function" && !collapsed ? createVNode("div", {
236
- "class": classNames$1(`${baseClassName}-item-right-content`, this.props.hashId, item.meta?.classNames?.itemRight),
237
- "style": item.meta?.styles?.itemRight
238
- }, [rightContent(item.meta)]) : null
239
- ]);
240
- if (menuItemRender) return menuItemRender({
241
- item: {
242
- ...item,
243
- isUrl: isHttpUrl,
244
- itemPath,
245
- isMobile,
246
- replace: itemPath === location.pathname,
247
- onClick: () => onCollapse && onCollapse(true),
248
- children: void 0
249
- },
250
- defaultDom: defaultItem,
251
- menuProps: this.props
252
- });
253
- return defaultItem;
254
- };
255
- conversionPath = (path) => {
256
- if (path && path.indexOf("http") === 0) return path;
257
- return `/${path || ""}`.replace(/\/+/g, "/");
258
- };
259
- };
260
- var BaseMenu_default = /* @__PURE__ */ defineComponent({
261
- name: "BaseMenu",
262
- props: baseMenuProps,
263
- setup(props) {
264
- const router = useRouter();
265
- const { dark, token } = useProConfigContext();
266
- const layoutContext = useProLayoutContext();
267
- const baseClassName = (layoutContext?.getPrefixCls || getPrefixCls)({
268
- isPor: true,
269
- suffixCls: `base-menu`
270
- });
271
- const { wrapSSR, hashId } = useProStyle("ProBaseMenu", [ProBaseMenuStyle], baseClassName);
272
- const [openKeys, setOpenKeys] = useState(props.openKeys || []);
273
- const [selectedKeys, setSelectedKeys] = useState(props.selectedKeys || []);
274
- const menuUtils = useMemo(() => {
275
- return new MenuUtil({
276
- ...props,
277
- layout: layoutContext?.settings?.value?.layout,
278
- isMobile: layoutContext?.isMobile?.value,
279
- collapsed: layoutContext?.collapsedEffect?.value,
280
- token: token.value,
281
- menuRenderType: props.menuRenderType,
282
- baseClassName,
283
- inlineIndent: props.menuProps?.inlineIndent,
284
- extraInlineIndent: props.menuProps?.extraInlineIndent,
285
- iconfontUrl: props.iconfontUrl,
286
- hashId: hashId.value,
287
- onCollapse: (value) => {
288
- if (layoutContext) layoutContext.collapsed.value = value;
289
- }
290
- });
291
- }, [
292
- () => hashId.value,
293
- () => token.value,
294
- () => props.menuData,
295
- () => props.iconfontUrl,
296
- () => props.styles,
297
- () => props.classNames,
298
- () => props.menuProps?.inlineIndent,
299
- () => props.menuProps?.extraInlineIndent,
300
- () => layoutContext?.isMobile?.value,
301
- () => layoutContext?.collapsedEffect?.value,
302
- () => layoutContext?.settings?.value?.layout
303
- ]);
304
- useStyleTag(computed(() => {
305
- const tooltip = ".ant-tooltip-inner";
306
- const menuClass = `.${baseClassName}`;
307
- const menuItemClass = `.${baseClassName}-item`;
308
- const menuSubmenuClass = `.${baseClassName}-submenu`;
309
- const menuItemSelectClass = `${token.value.antCls}-menu-item-selected`;
310
- return `
311
- ${tooltip} ${menuItemClass}-title ${menuItemClass}-image {
312
- display: none;
313
- }
314
- ${menuClass} ${menuSubmenuClass}>${`${token.value.antCls}-menu-submenu-title`} {
315
- ${convertCSSPropertiesToString(props.styles.subMenuTitle)}
316
- }
317
- ${menuClass} ${menuItemClass}${menuItemSelectClass} {
318
- ${convertCSSPropertiesToString(props.styles.menuItemSelect)}
319
- }
320
- `;
321
- }));
322
- watch(() => props.openKeys, (val) => setOpenKeys(val));
323
- watch(() => props.selectedKeys, (val) => setSelectedKeys(val));
324
- watch(() => props.iconfontUrl, () => {
325
- if (props.iconfontUrl) IconFont = createFromIconfontCN({ scriptUrl: props.iconfontUrl });
326
- }, { immediate: true });
327
- return () => {
328
- if (props.menuData && props.menuData?.length < 1) return null;
329
- return wrapSSR(createVNode(Menu, mergeProps({
330
- "key": layoutContext?.collapsedEffect?.value ? "Menu1" : "Menu",
331
- "mode": props.mode,
332
- "inlineIndent": 16,
333
- "theme": dark.value ? "dark" : "light",
334
- "openKeys": openKeys.value,
335
- "selectedKeys": selectedKeys.value,
336
- "style": {
337
- backgroundColor: "transparent",
338
- border: "none",
339
- ...props.style
340
- },
341
- "class": classNames$1(props.class, hashId, baseClassName, {
342
- [`${baseClassName}-inline`]: props.mode === "inline",
343
- [`${baseClassName}-horizontal`]: props.mode === "horizontal",
344
- [`${baseClassName}-collapsed`]: props.menuRenderType === "sider" ? layoutContext?.collapsedEffect?.value : false
345
- }),
346
- "items": menuUtils.value.getNavMenuItems(props.menuData, 0, 0)
347
- }, omit(props.menuProps, [
348
- "onOpenChange",
349
- "onSelect",
350
- "onClick",
351
- "items"
352
- ]), {
353
- "onOpenChange": (_openKeys) => {
354
- if (layoutContext?.collapsedEffect?.value) return;
355
- setOpenKeys(_openKeys);
356
- props.onOpenKeys && props.onOpenKeys(_openKeys);
357
- },
358
- "onSelect": (info) => {
359
- props.onSelect && props.onSelect(info);
360
- setSelectedKeys(info.selectedKeys);
361
- },
362
- "onClick": (e) => {
363
- if (props.onClick) props.onClick(e);
364
- else {
365
- const row = layoutContext?.menu?.value?.flatMenus?.find((item) => item.name === e.key);
366
- if (row) {
367
- const toPath = isString(row.redirect) ? row.redirect : row.path || "";
368
- const target = row.meta?.link || "";
369
- const hasUrl = isUrl(target);
370
- if (router.currentRoute.value?.fullPath !== toPath) if (hasUrl && target && row.meta?.linkStatus === 1) window.open(target);
371
- else router.push({ path: toPath });
372
- }
373
- }
374
- }
375
- }), null));
376
- };
377
- }
378
- });
379
-
380
- //#endregion
381
- export { LazyIcon, BaseMenu_default as default };
@@ -1,105 +0,0 @@
1
- import { BaseMenuProps, MenuClassNamesType, MenuStylesType, ProLayoutMenuFunProps } from "../../types/MenuTypings.js";
2
- import { ProLayoutConfig } from "../../config/index.js";
3
- import "../../index.js";
4
- import { CSSProperties, PropType } from "vue";
5
-
6
- //#region src/components/BaseMenu/props.d.ts
7
- declare const defaultMenuProps: Partial<BaseMenuProps>;
8
- declare const modelValueMenuProps: {
9
- openKeys: {
10
- type: PropType<ProLayoutMenuFunProps["openKeys"]>;
11
- default: () => any[];
12
- };
13
- selectedKeys: {
14
- type: PropType<ProLayoutMenuFunProps["selectedKeys"]>;
15
- default: () => any[];
16
- };
17
- };
18
- declare const commonMenuFunProps: {
19
- onOpenKeys: {
20
- type: PropType<ProLayoutMenuFunProps["onOpenKeys"]>;
21
- };
22
- onSelect: {
23
- type: PropType<ProLayoutMenuFunProps["onSelect"]>;
24
- };
25
- menuItemRender: {
26
- type: PropType<BaseMenuProps["menuItemRender"]>;
27
- default: () => any;
28
- };
29
- menuTextRender: {
30
- type: PropType<BaseMenuProps["menuTextRender"]>;
31
- default: () => any;
32
- };
33
- subMenuItemRender: {
34
- type: PropType<BaseMenuProps["subMenuItemRender"]>;
35
- default: () => any;
36
- };
37
- };
38
- declare const baseMenuProps: {
39
- class: {
40
- type: PropType<string>;
41
- };
42
- classNames: {
43
- type: PropType<MenuClassNamesType>;
44
- default: () => {};
45
- };
46
- styles: {
47
- type: PropType<MenuStylesType>;
48
- default: () => {};
49
- };
50
- type: {
51
- type: PropType<BaseMenuProps["type"]>;
52
- };
53
- menuRenderType: {
54
- type: PropType<"header" | "sider">;
55
- };
56
- style: {
57
- type: PropType<CSSProperties>;
58
- default: () => {};
59
- };
60
- iconfontUrl: {
61
- type: PropType<ProLayoutConfig["iconfontUrl"]>;
62
- default: string;
63
- };
64
- mode: {
65
- type: PropType<BaseMenuProps["mode"]>;
66
- default: string;
67
- };
68
- menuData: {
69
- type: PropType<BaseMenuProps["menuData"]>;
70
- default: () => any[];
71
- };
72
- menuProps: {
73
- type: PropType<BaseMenuProps["menuProps"]>;
74
- default: () => any;
75
- };
76
- onClick: PropType<BaseMenuProps["onClick"]>;
77
- onOpenKeys: {
78
- type: PropType<BaseMenuProps["onOpenKeys"]>;
79
- };
80
- onSelect: {
81
- type: PropType<BaseMenuProps["onSelect"]>;
82
- };
83
- menuItemRender: {
84
- type: PropType<BaseMenuProps["menuItemRender"]>;
85
- default: () => any;
86
- };
87
- menuTextRender: {
88
- type: PropType<BaseMenuProps["menuTextRender"]>;
89
- default: () => any;
90
- };
91
- subMenuItemRender: {
92
- type: PropType<BaseMenuProps["subMenuItemRender"]>;
93
- default: () => any;
94
- };
95
- openKeys: {
96
- type: PropType<ProLayoutMenuFunProps["openKeys"]>;
97
- default: () => any[];
98
- };
99
- selectedKeys: {
100
- type: PropType<ProLayoutMenuFunProps["selectedKeys"]>;
101
- default: () => any[];
102
- };
103
- };
104
- //#endregion
105
- export { baseMenuProps, commonMenuFunProps, defaultMenuProps, modelValueMenuProps };
@@ -1,94 +0,0 @@
1
- import { defaultSettingProps } from "../../props/defaultSettings.js";
2
- import { pick } from "es-toolkit";
3
-
4
- //#region src/components/BaseMenu/props.ts
5
- const defaultMenuProps = {
6
- mode: "inline",
7
- menuProps: null
8
- };
9
- const modelValueMenuProps = {
10
- openKeys: {
11
- type: Array,
12
- default: () => []
13
- },
14
- selectedKeys: {
15
- type: Array,
16
- default: () => []
17
- }
18
- };
19
- const commonMenuFunProps = {
20
- onOpenKeys: { type: Function },
21
- onSelect: { type: Function },
22
- menuItemRender: {
23
- type: [
24
- Function,
25
- Boolean,
26
- Array,
27
- String,
28
- Number
29
- ],
30
- default: () => void 0
31
- },
32
- menuTextRender: {
33
- type: [
34
- Function,
35
- Boolean,
36
- Array,
37
- String,
38
- Number
39
- ],
40
- default: () => void 0
41
- },
42
- subMenuItemRender: {
43
- type: [
44
- Function,
45
- Boolean,
46
- Array,
47
- String,
48
- Number
49
- ],
50
- default: () => void 0
51
- }
52
- };
53
- const baseMenuProps = {
54
- ...modelValueMenuProps,
55
- ...pick(commonMenuFunProps, [
56
- "menuItemRender",
57
- "subMenuItemRender",
58
- "menuTextRender"
59
- ]),
60
- class: { type: String },
61
- classNames: {
62
- type: Object,
63
- default: () => ({})
64
- },
65
- styles: {
66
- type: Object,
67
- default: () => ({})
68
- },
69
- type: { type: String },
70
- menuRenderType: { type: String },
71
- style: {
72
- type: Object,
73
- default: () => ({})
74
- },
75
- iconfontUrl: defaultSettingProps.iconfontUrl,
76
- mode: {
77
- type: String,
78
- default: "inline"
79
- },
80
- menuData: {
81
- type: Array,
82
- default: () => []
83
- },
84
- menuProps: {
85
- type: Object,
86
- default: () => null
87
- },
88
- onClick: [Function, Object],
89
- onOpenKeys: { type: Function },
90
- onSelect: { type: Function }
91
- };
92
-
93
- //#endregion
94
- export { baseMenuProps, commonMenuFunProps, defaultMenuProps, modelValueMenuProps };
@@ -1,6 +0,0 @@
1
- import { GenerateStyle } from "@gx-design-vue/pro-provider";
2
-
3
- //#region src/components/BaseMenu/style.d.ts
4
- declare const ProBaseMenuStyle: GenerateStyle;
5
- //#endregion
6
- export { ProBaseMenuStyle };