@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,222 +1,310 @@
1
- import { useProLayoutContext } from "../../Context/index.js";
2
- import { useProLayoutExposeContext } from "../../Context/expose.js";
3
- import { pageContainerProps } from "./props.js";
4
- import { usePageContent } from "../../hooks/layout/usePageContent.js";
1
+ import { useLayoutBase } from "../../hooks/useLayoutBase.js";
5
2
  import { useAppPageContext } from "../AppPage/context.js";
6
- import FooterToolbar_default from "../FooterToolbar/index.js";
7
- import PageHeader_default from "./PageHeader.js";
8
- import { useStyle as useStyle$1 } from "./style/index.js";
9
- import { Fragment, computed, createVNode, defineComponent, isVNode, mergeProps, onDeactivated, onUnmounted, unref, watch } from "vue";
10
- import { onMountedOrActivated } from "@gx-design-vue/pro-hooks";
3
+ import GFooterToolbar from "../FooterToolbar/index.js";
4
+ import PageHeader from "./PageHeader.js";
5
+ import style_default from "./style.js";
6
+ import { Fragment, computed, createVNode, defineComponent, isVNode, mergeProps, onScopeDispose, watch, watchEffect } from "vue";
11
7
  import { unit } from "@gx-design-vue/pro-provider";
12
- import { classNames, getPrefixCls, getSlot, getSlotVNode, isBoolean } from "@gx-design-vue/pro-utils";
13
- import { Card, Spin } from "ant-design-vue";
14
- import { useRouter } from "vue-router";
15
- import { useProAppContext } from "@gx-design-vue/pro-app";
16
- import { GPorWatermark } from "@gx-design-vue/pro-watermark";
17
-
8
+ import { classNames } from "@gx-design-vue/pro-utils";
9
+ import { Card, Spin, Watermark } from "antdv-next";
10
+ import { useBaseConfig } from "antdv-next/config-provider/context";
11
+ import useCSSVarCls from "antdv-next/config-provider/hooks/useCSSVarCls";
12
+ import { useSlotsProps } from "@gx-design-vue/pro-hooks";
18
13
  //#region src/components/PageContainer/index.tsx
14
+ /** 页头区域用到的非作用域 slot(breadcrumb 为作用域 slot,单独处理) */
19
15
  function _isSlot(s) {
20
16
  return typeof s === "function" || Object.prototype.toString.call(s) === "[object Object]" && !isVNode(s);
21
17
  }
22
- const defaultSpinning = { type: "default" };
23
- const GProPageContainer = /* @__PURE__ */ defineComponent({
24
- inheritAttrs: false,
25
- name: "GProPageContainer",
26
- props: pageContainerProps,
27
- slots: Object,
28
- emits: ["contentFullScreenChange"],
29
- setup(props, { slots, expose }) {
30
- const router = useRouter();
31
- const appContext = useProAppContext();
32
- const appPageContext = useAppPageContext();
33
- const layoutContext = useProLayoutContext();
34
- const exposeContext = useProLayoutExposeContext();
35
- const fitPageHeight = usePageContent();
36
- const getPrefixClsFn = layoutContext?.getPrefixCls || getPrefixCls;
37
- const proPageContainerClass = getPrefixClsFn({
38
- suffixCls: "page-container",
39
- isPor: true
40
- });
41
- const gridPrefixCls = getPrefixClsFn({
42
- suffixCls: "grid-content",
43
- isPor: true
44
- });
45
- const layoutPageProps = computed(() => layoutContext?.pageContainer?.value || {});
46
- const waterMarkProps = computed(() => {
47
- const propsWaterMark = isBoolean(props.waterMarkProps) ? {} : props.waterMarkProps || {};
48
- return {
49
- ...isBoolean(layoutContext?.waterMarkProps?.value) ? {} : layoutContext?.waterMarkProps?.value || {},
50
- ...propsWaterMark
51
- };
52
- });
53
- const cardProps = computed(() => props.pageCardProps || layoutPageProps.value?.pageCardProps);
54
- const pageHeaderStyle = computed(() => props.pageHeaderStyle || layoutPageProps.value?.pageHeaderStyle);
55
- const contentStyle = computed(() => props.pageContentStyle || layoutPageProps.value?.pageContentStyle);
56
- const pageChildrenContentClass = computed(() => props.pageChildrenContentClass || layoutPageProps.value?.pageChildrenContentClass || "");
57
- const pageChildrenContentStyleRef = computed(() => props.pageChildrenContentStyle || layoutPageProps.value?.pageChildrenContentStyle || {});
58
- const contentWide = computed(() => layoutContext?.layoutProps?.value?.isWide);
59
- const usePageCardRef = computed(() => isBoolean(props.usePageCard) ? props.usePageCard : isBoolean(layoutPageProps.value?.usePageCard) ? layoutPageProps.value?.usePageCard : true);
60
- const contentWidth = computed(() => {
61
- return unit(props.contentWidth ?? layoutPageProps.value?.contentWidth);
62
- });
63
- const spinning = computed(() => {
64
- const loading = isBoolean(props.loading) ? props.loading : !!props.loading?.spinning;
65
- return appPageContext?.spinning?.value ? false : loading;
66
- });
67
- const loadingProps = computed(() => {
68
- const layoutLoading = layoutPageProps.value?.loadingProps;
69
- if (typeof props.loading === "boolean") return layoutLoading ?? defaultSpinning;
70
- return {
71
- ...layoutLoading,
72
- ...props.loading || {}
73
- };
74
- });
75
- const showPageHeader = computed(() => {
76
- const pageHeaderContentRender = getSlotVNode({
77
- slots,
78
- props,
79
- key: "pageHeaderContentRender"
80
- });
81
- const breadcrumb = layoutContext?.breadcrumb?.value || {};
82
- const routers = breadcrumb.routes || [];
83
- if (contentWide.value) return false;
84
- if (breadcrumb?.position === "pageHeader") return routers.length > 0 || pageHeaderContentRender;
85
- return pageHeaderContentRender;
86
- });
87
- const fitPageStyle = computed(() => {
88
- if (props.height) return {
89
- [props.height === "min" ? "min-height" : props.height === "max" ? "max-height" : "height"]: fitPageHeight.value,
90
- overflow: props.height !== "min" ? "hidden" : void 0
91
- };
92
- return {};
93
- });
94
- function setContextCurrentMeta() {
95
- const tabs = exposeContext.tabsRouteRef?.value;
96
- if (layoutContext) layoutContext.currentMeta.value = { title: props.title };
97
- if (tabs) tabs.update(router.currentRoute.value, {
98
- type: "merge",
99
- params: { meta: { title: props.title } }
100
- });
101
- }
102
- watch([() => props.title, () => exposeContext.tabsRouteRef?.value], ([title, tabs]) => {
103
- if (tabs && title) setContextCurrentMeta();
104
- });
105
- watch([() => props.breadcrumbRender, () => layoutContext?.breadcrumb?.value?.position], () => {
106
- setContextBreadcrumb();
107
- }, { deep: true });
108
- onMountedOrActivated(() => {
109
- if (layoutContext && layoutContext.fullScreenOnTabsHide) layoutContext.fullScreenOnTabsHide.value = !!props.fullScreenOnTabsHide;
110
- setContextBreadcrumb();
111
- if (props.title) setContextCurrentMeta();
112
- });
113
- onUnmounted(() => {
114
- if (layoutContext) {
115
- layoutContext.currentMeta.value = void 0;
116
- layoutContext.breadcrumbRender.value = void 0;
117
- }
118
- });
119
- onDeactivated(() => {
120
- if (layoutContext) {
121
- layoutContext.currentMeta.value = void 0;
122
- layoutContext.breadcrumbRender.value = void 0;
123
- }
124
- });
125
- function setContextBreadcrumb() {
126
- const breadcrumbRender = getSlot({
127
- slots,
128
- props,
129
- key: "breadcrumbRender"
130
- });
131
- if (layoutContext) layoutContext.breadcrumbRender.value = breadcrumbRender;
132
- }
133
- const { wrapSSR, hashId } = useStyle$1(proPageContainerClass);
134
- watch(() => layoutContext?.contentFullScreen?.value, (val) => {
135
- props.onContentFullScreenChange?.(val);
136
- });
137
- const contentDom = () => {
138
- const pageChildrenExtraRender = getSlotVNode({
139
- slots,
140
- props,
141
- key: "pageChildrenExtraRender"
142
- });
143
- const className = classNames(`${proPageContainerClass}-children-container`, hashId.value, pageChildrenContentClass.value);
144
- return createVNode("div", {
145
- "class": className,
146
- "style": { ...pageChildrenContentStyleRef.value }
147
- }, [spinning.value && createVNode("div", { "class": classNames(`${proPageContainerClass}-spinning`, hashId.value) }, [createVNode(Spin, {
148
- "indicator": appContext?.indicator?.value,
149
- "tip": loadingProps.value?.tip
150
- }, null)]), createVNode("div", { "class": classNames(`${proPageContainerClass}-spinning-content`, hashId.value, spinning.value && loadingProps.value.type ? `${proPageContainerClass}-spinning-content-${loadingProps.value.type}` : "") }, [pageChildrenExtraRender, usePageCardRef.value ? createVNode(Card, mergeProps({ "bordered": false }, cardProps.value || {}, {
151
- "style": {
152
- ...cardProps.value?.style || {},
153
- ...fitPageStyle.value
154
- },
155
- "bodyStyle": {
156
- ...cardProps.value?.bodyStyle || {},
157
- ...fitPageStyle.value
158
- }
159
- }), { default: () => [slots.default?.()] }) : createVNode("div", {
160
- "class": cardProps.value?.class,
161
- "style": {
162
- ...cardProps.value?.style || {},
163
- ...fitPageStyle.value
164
- }
165
- }, [slots.default?.()])])]);
18
+ const HEADER_RENDER_KEYS = [
19
+ "header",
20
+ "headerContent",
21
+ "extra"
22
+ ];
23
+ const FOOTER_RENDER_KEYS = ["footer"];
24
+ /**
25
+ * GPageContainer —— 页面容器:页头(面包屑 + 标题 + 操作)+ 内容卡片 + loading 遮罩 + 水印。
26
+ * 可独立使用;置于 `GProLayout` 内时通过 layout context 读取面包屑数据与全屏态。
27
+ */
28
+ const ProPageContainer = /* @__PURE__ */ defineComponent((props, { slots, emit }) => {
29
+ const { prefixCls } = useBaseConfig("pro-page-container", props);
30
+ const rootCls = useCSSVarCls(prefixCls);
31
+ const [hashId, cssVarCls] = style_default(prefixCls, rootCls);
32
+ const { watermark, menuState, breadcrumbRender, contentFullscreen, breadcrumbConfig: breadcrumbContext, pageContainerConfig } = useLayoutBase();
33
+ const appPageContext = useAppPageContext();
34
+ const headerSlots = useSlotsProps({
35
+ slots,
36
+ props,
37
+ keys: HEADER_RENDER_KEYS,
38
+ render: true
39
+ });
40
+ const footerSlots = useSlotsProps({
41
+ slots,
42
+ props,
43
+ keys: FOOTER_RENDER_KEYS,
44
+ render: true
45
+ });
46
+ const mergedContentWidth = computed(() => props.contentWidth ?? pageContainerConfig?.value?.contentWidth);
47
+ const mergedCard = computed(() => props.card !== void 0 ? props.card : pageContainerConfig?.value?.card);
48
+ const mergedHeight = computed(() => props.height ?? pageContainerConfig?.value?.height);
49
+ const mergedAffixFooter = computed(() => props.affixFooter ?? pageContainerConfig?.value?.affixFooter ?? false);
50
+ const mergedLoading = computed(() => props.loading ?? pageContainerConfig?.value?.loading ?? false);
51
+ const loadingState = computed(() => {
52
+ const loading = mergedLoading.value;
53
+ if (loading == null || loading === false) return {
54
+ spinning: false,
55
+ blur: false,
56
+ tip: void 0
166
57
  };
167
- const renderContentDom = () => {
168
- if (props.waterMarkProps !== false && layoutContext?.waterMarkProps?.value !== false) {
169
- let _slot;
170
- return createVNode(GPorWatermark, unref(waterMarkProps.value), _isSlot(_slot = contentDom()) ? _slot : { default: () => [_slot] });
171
- }
172
- return contentDom();
58
+ if (loading === true) return {
59
+ spinning: true,
60
+ blur: false,
61
+ tip: void 0
173
62
  };
174
- const GridContent = () => {
175
- return createVNode(Fragment, null, [createVNode("div", {
176
- "class": [gridPrefixCls, hashId.value],
177
- "style": {
178
- width: contentWidth.value,
179
- marginInline: contentWidth.value && "auto"
180
- }
181
- }, [createVNode("div", {
182
- "class": `${gridPrefixCls}-children ${hashId.value}`,
183
- "style": contentStyle.value
184
- }, [renderContentDom()])])]);
63
+ return {
64
+ spinning: true,
65
+ blur: !!loading.blur,
66
+ tip: loading.tip
185
67
  };
186
- expose({ changeContentFullScreen: (val) => {
187
- if (layoutContext) layoutContext.contentFullScreen.value = val;
188
- } });
189
- return () => {
190
- const footer = getSlotVNode({
191
- slots,
192
- props,
193
- key: "footer"
194
- });
195
- const pageHeaderRender = getSlotVNode({
196
- slots,
197
- props,
198
- key: "pageHeaderRender"
199
- }) || layoutContext?.pageHeaderRender?.value;
200
- const pageHeaderContentRender = getSlotVNode({
201
- slots,
202
- props,
203
- key: "pageHeaderContentRender"
204
- });
205
- return wrapSSR(createVNode("div", {
206
- "class": classNames(layoutContext?.classNames?.value?.content, hashId.value, proPageContainerClass, props.class),
207
- "style": {
208
- ...props.style,
209
- ...layoutContext?.styles?.value?.content || {}
210
- }
211
- }, [createVNode(Fragment, null, [pageHeaderRender !== false && showPageHeader.value && (pageHeaderRender || createVNode(PageHeader_default, {
212
- "style": pageHeaderStyle?.value,
213
- "content": pageHeaderContentRender,
214
- "close": props.fullScreenOnTabsHide
215
- }, null)), GridContent()]), footer && createVNode(FooterToolbar_default, props.footerToolBarProps || {}, _isSlot(footer) ? footer : { default: () => [footer] })]));
68
+ });
69
+ const spinning = computed(() => appPageContext?.spinning?.value ? false : loadingState.value.spinning);
70
+ const cardEnabled = computed(() => mergedCard.value !== false);
71
+ const cardConfig = computed(() => mergedCard.value && mergedCard.value !== true ? mergedCard.value : {});
72
+ const heightClass = computed(() => {
73
+ if (mergedHeight.value === "fit") return `${prefixCls.value}-height-fit`;
74
+ if (mergedHeight.value === "full") return `${prefixCls.value}-height-full`;
75
+ return "";
76
+ });
77
+ const breadcrumbConfig = computed(() => {
78
+ if (props.breadcrumbConfig === false) return null;
79
+ const contextValue = breadcrumbContext?.value;
80
+ if (!contextValue) return null;
81
+ return {
82
+ placement: "pageHeader",
83
+ ...props.breadcrumbConfig ?? contextValue
216
84
  };
85
+ });
86
+ const breadcrumbItems = computed(() => menuState?.breadcrumbItems.value ?? []);
87
+ const breadcrumbRoutes = computed(() => menuState?.breadcrumbRoutes.value ?? []);
88
+ watchEffect(() => {
89
+ if (!breadcrumbRender) return;
90
+ const placement = !breadcrumbConfig.value ? void 0 : breadcrumbConfig.value.placement;
91
+ const breadcrumb = slots.breadcrumb && breadcrumbConfig.value?.render;
92
+ if (placement === "header" && breadcrumb) breadcrumbRender.value = (slotProps) => breadcrumb?.(slotProps);
93
+ else breadcrumbRender.value = null;
94
+ });
95
+ onScopeDispose(() => {
96
+ if (breadcrumbRender) breadcrumbRender.value = null;
97
+ });
98
+ if (contentFullscreen) watch(contentFullscreen, (value) => emit("fullscreenChange", value));
99
+ function regionClass(name, ...extra) {
100
+ const semantic = props.proClasses?.[name];
101
+ return classNames(`${prefixCls.value}-${name}`, semantic, ...extra);
217
102
  }
103
+ function renderHeader() {
104
+ if (props.header === false) return null;
105
+ if (headerSlots.value.header) return headerSlots.value.header;
106
+ return createVNode(PageHeader, {
107
+ "prefixCls": prefixCls.value,
108
+ "title": props.title,
109
+ "breadcrumbConfig": breadcrumbConfig.value,
110
+ "breadcrumbItems": breadcrumbItems.value,
111
+ "breadcrumbRoutes": breadcrumbRoutes.value,
112
+ "proStyles": props.proStyles,
113
+ "proClasses": props.proClasses
114
+ }, {
115
+ headerContent: slots.headerContent,
116
+ extra: slots.extra,
117
+ breadcrumb: breadcrumbRender?.value
118
+ });
119
+ }
120
+ function renderBody() {
121
+ const innerClass = classNames(`${prefixCls.value}-content-inner`, spinning.value && (loadingState.value.blur ? `${prefixCls.value}-content-blur` : `${prefixCls.value}-content-mask`), props.proClasses?.body);
122
+ const cardClass = regionClass("card");
123
+ const cardNode = cardEnabled.value ? createVNode(Card, mergeProps({
124
+ variant: "borderless",
125
+ ...cardConfig.value
126
+ }, {
127
+ "classes": {
128
+ ...cardConfig.value.classes || {},
129
+ root: classNames(cardConfig.value.classes?.root, cardClass),
130
+ body: classNames(cardConfig.value.classes?.body, regionClass("card-body"))
131
+ },
132
+ "styles": {
133
+ ...cardConfig.value.styles || {},
134
+ root: {
135
+ ...cardConfig.value.styles?.root || {},
136
+ ...props.proStyles?.card || {}
137
+ }
138
+ }
139
+ }), { default: () => [slots.default?.()] }) : createVNode("div", {
140
+ "class": cardClass,
141
+ "style": props.proStyles?.card
142
+ }, [slots.default?.()]);
143
+ return createVNode("div", {
144
+ "class": regionClass("content"),
145
+ "style": props.proStyles?.content
146
+ }, [spinning.value && createVNode("div", { "class": `${prefixCls.value}-spinning` }, [createVNode(Spin, {
147
+ "spinning": true,
148
+ "tip": loadingState.value.tip
149
+ }, null)]), createVNode("div", {
150
+ "class": innerClass,
151
+ "style": props.proStyles?.body
152
+ }, [cardNode])]);
153
+ }
154
+ function renderContent() {
155
+ if (props.watermark || watermark?.value) {
156
+ let _slot;
157
+ return createVNode(Watermark, mergeProps({
158
+ ...watermark?.value,
159
+ ...props.watermark
160
+ }, { "class": `${prefixCls.value}-watermark` }), _isSlot(_slot = renderBody()) ? _slot : { default: () => [_slot] });
161
+ }
162
+ return renderBody();
163
+ }
164
+ function renderFooter() {
165
+ const footerNode = footerSlots.value.footer;
166
+ if (!footerNode) return null;
167
+ if (mergedAffixFooter.value) return createVNode(GFooterToolbar, {
168
+ "teleport": true,
169
+ "proClasses": { root: props.proClasses?.footer },
170
+ "proStyles": { root: props.proStyles?.footer }
171
+ }, _isSlot(footerNode) ? footerNode : { default: () => [footerNode] });
172
+ return createVNode("div", {
173
+ "class": regionClass("footer"),
174
+ "style": props.proStyles?.footer
175
+ }, [footerNode]);
176
+ }
177
+ function renderContentWidthWrapper(children) {
178
+ if (!mergedContentWidth.value) return children;
179
+ return createVNode("div", { "style": {
180
+ maxWidth: unit(mergedContentWidth.value),
181
+ marginInline: "auto",
182
+ width: "100%"
183
+ } }, [children]);
184
+ }
185
+ return () => {
186
+ return createVNode("div", {
187
+ "class": classNames(prefixCls.value, hashId.value, cssVarCls.value, rootCls.value, heightClass.value, props.proClasses?.root, props.class),
188
+ "style": {
189
+ ...props.proStyles?.root,
190
+ ...props.style
191
+ }
192
+ }, [renderContentWidthWrapper(createVNode(Fragment, null, [
193
+ renderHeader(),
194
+ renderContent(),
195
+ renderFooter()
196
+ ]))]);
197
+ };
198
+ }, {
199
+ props: {
200
+ class: {
201
+ type: String,
202
+ required: false
203
+ },
204
+ style: {
205
+ type: Object,
206
+ required: false
207
+ },
208
+ prefixCls: {
209
+ type: String,
210
+ required: false
211
+ },
212
+ title: {
213
+ type: String,
214
+ required: false
215
+ },
216
+ loading: {
217
+ type: [Boolean, Object],
218
+ required: false,
219
+ default: void 0
220
+ },
221
+ height: {
222
+ type: String,
223
+ required: false
224
+ },
225
+ card: {
226
+ type: [Boolean, Object],
227
+ required: false,
228
+ default: void 0
229
+ },
230
+ breadcrumbConfig: {
231
+ type: [Object, Boolean],
232
+ required: false,
233
+ default: void 0
234
+ },
235
+ watermark: {
236
+ type: Object,
237
+ required: false
238
+ },
239
+ affixFooter: {
240
+ type: Boolean,
241
+ required: false,
242
+ default: void 0
243
+ },
244
+ contentWidth: {
245
+ type: [Number, String],
246
+ required: false
247
+ },
248
+ proStyles: {
249
+ type: Object,
250
+ required: false
251
+ },
252
+ proClasses: {
253
+ type: Object,
254
+ required: false
255
+ },
256
+ header: {
257
+ type: [
258
+ Function,
259
+ String,
260
+ Number,
261
+ null,
262
+ Object,
263
+ Boolean
264
+ ],
265
+ required: false,
266
+ default: void 0
267
+ },
268
+ headerContent: {
269
+ type: [
270
+ Function,
271
+ String,
272
+ Number,
273
+ null,
274
+ Object,
275
+ Boolean
276
+ ],
277
+ required: false,
278
+ default: void 0
279
+ },
280
+ extra: {
281
+ type: [
282
+ Function,
283
+ String,
284
+ Number,
285
+ null,
286
+ Object,
287
+ Boolean
288
+ ],
289
+ required: false,
290
+ default: void 0
291
+ },
292
+ footer: {
293
+ type: [
294
+ Function,
295
+ String,
296
+ Number,
297
+ null,
298
+ Object,
299
+ Boolean
300
+ ],
301
+ required: false,
302
+ default: void 0
303
+ }
304
+ },
305
+ emits: ["fullscreenChange"],
306
+ name: "GProPageContainer",
307
+ inheritAttrs: false
218
308
  });
219
- var PageContainer_default = GProPageContainer;
220
-
221
309
  //#endregion
222
- export { PageContainer_default as default };
310
+ export { ProPageContainer as default };
@@ -0,0 +1,5 @@
1
+ //#region src/components/PageContainer/style.d.ts
2
+ type ComponentToken = Record<string, any>;
3
+ declare const _default: (prefixCls: import("vue").Ref<string>, rootCls?: import("vue").Ref<string | undefined>) => readonly [import("vue").Ref<string, string>, import("vue").ComputedRef<string | undefined>];
4
+ //#endregion
5
+ export { ComponentToken, _default as default };
@@ -0,0 +1,142 @@
1
+ import { proGenStyleHooks } from "@gx-design-vue/pro-provider";
2
+ //#region src/components/PageContainer/style.ts
3
+ /** 页头区域样式:breadcrumb / heading / title / extra / close */
4
+ const genPageHeaderStyle = (token) => {
5
+ const { componentCls } = token;
6
+ return { [componentCls]: {
7
+ "&-header": {
8
+ background: token.colorBgContainer,
9
+ paddingInline: token.paddingLG,
10
+ paddingBlock: token.paddingSM,
11
+ borderBlockEnd: `${token.lineWidth} solid ${token.colorSplit}`,
12
+ "&-top": {
13
+ display: "flex",
14
+ alignItems: "center",
15
+ justifyContent: "space-between"
16
+ },
17
+ "&-heading": {
18
+ display: "flex",
19
+ alignItems: "center",
20
+ gap: token.marginXS,
21
+ marginBlockStart: token.marginXS
22
+ }
23
+ },
24
+ "&-title": {
25
+ margin: 0,
26
+ color: token.colorTextHeading,
27
+ fontWeight: token.fontWeightStrong,
28
+ fontSize: token.fontSizeHeading4
29
+ },
30
+ "&-extra": {
31
+ marginInlineStart: "auto",
32
+ display: "flex",
33
+ alignItems: "center",
34
+ gap: token.marginXS
35
+ },
36
+ "&-breadcrumb": { minWidth: 0 },
37
+ "&-close": {
38
+ color: token.colorTextDescription,
39
+ fontWeight: token.fontWeightStrong,
40
+ textDecoration: "none",
41
+ background: "transparent",
42
+ borderRadius: token.borderRadiusSM,
43
+ padding: token.paddingXXS,
44
+ cursor: "pointer",
45
+ transition: `color ${token.motionDurationMid}, background-color ${token.motionDurationMid}`,
46
+ "&-icon": {
47
+ display: "block",
48
+ fontSize: token.fontSizeLG
49
+ },
50
+ "&:hover": {
51
+ color: token.colorIconHover,
52
+ backgroundColor: token.wireframe ? "transparent" : token.colorFillContent
53
+ },
54
+ "&:active": { backgroundColor: token.wireframe ? "transparent" : token.colorFillContentHover }
55
+ }
56
+ } };
57
+ };
58
+ /** 内容区域样式:content / card / spinning / footer / height */
59
+ const genPageContentStyle = (token) => {
60
+ const { componentCls } = token;
61
+ const watermarkCls = `${componentCls}-watermark`;
62
+ return { [componentCls]: {
63
+ position: "relative",
64
+ display: "flex",
65
+ flexDirection: "column",
66
+ "&-height-fit": {
67
+ flex: "1 0 auto",
68
+ minHeight: "100%",
69
+ [`${componentCls}-content`]: { flex: "1 0 auto" },
70
+ [`${componentCls}-content-inner, & > ${watermarkCls}`]: { flex: "1 0 auto" },
71
+ [`${componentCls}-card`]: { flex: "1 0 auto" }
72
+ },
73
+ "&-height-full": {
74
+ flex: 1,
75
+ minHeight: 0,
76
+ height: "100%",
77
+ overflow: "hidden",
78
+ [`${componentCls}-content`]: {
79
+ flex: "1 1 auto",
80
+ minHeight: 0
81
+ },
82
+ [`${componentCls}-content-inner, & > ${watermarkCls}`]: {
83
+ flex: "1 1 auto",
84
+ minHeight: 0
85
+ },
86
+ [`${componentCls}-card`]: {
87
+ flex: "1 1 auto",
88
+ minHeight: 0,
89
+ overflow: "hidden",
90
+ display: "flex",
91
+ flexDirection: "column"
92
+ }
93
+ },
94
+ "&-content": {
95
+ position: "relative",
96
+ display: "flex",
97
+ flexDirection: "column",
98
+ "&-inner": {
99
+ position: "relative",
100
+ padding: token.pageContainerPadding,
101
+ margin: token.pageContainerMargin,
102
+ display: "flex",
103
+ flexDirection: "column"
104
+ }
105
+ },
106
+ [`& > ${watermarkCls}`]: {
107
+ display: "flex",
108
+ flexDirection: "column"
109
+ },
110
+ "&-card": {},
111
+ "&-footer": {
112
+ flexShrink: 0,
113
+ paddingBlock: token.paddingSM,
114
+ paddingInline: token.paddingLG,
115
+ background: token.colorBgContainer,
116
+ borderBlockStart: `1px solid ${token.colorSplit}`
117
+ },
118
+ "&-spinning": {
119
+ position: "absolute",
120
+ top: 0,
121
+ left: 0,
122
+ zIndex: 10,
123
+ display: "flex",
124
+ width: "100%",
125
+ height: "100%",
126
+ alignItems: "center",
127
+ justifyContent: "center",
128
+ borderRadius: token.borderRadiusLG
129
+ },
130
+ "&-content-blur": {
131
+ filter: "blur(2px)",
132
+ pointerEvents: "none"
133
+ },
134
+ "&-content-mask": {
135
+ opacity: .5,
136
+ pointerEvents: "none"
137
+ }
138
+ } };
139
+ };
140
+ var style_default = proGenStyleHooks("ProPageContainer", (token) => [genPageHeaderStyle(token), genPageContentStyle(token)]);
141
+ //#endregion
142
+ export { style_default as default };