@gx-design-vue/pro-layout 0.1.0-alpha.20 → 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 (49) hide show
  1. package/dist/ProLayout.js +1 -1
  2. package/dist/components/Breadcrumb/index.js +3 -2
  3. package/dist/components/Breadcrumb/interface.d.ts +1 -1
  4. package/dist/components/Header/index.js +6 -14
  5. package/dist/components/Logo/index.js +6 -1
  6. package/dist/components/Menu/iconRender.d.ts +1 -1
  7. package/dist/components/Menu/iconRender.js +1 -1
  8. package/dist/components/Menu/index.d.ts +9 -10
  9. package/dist/components/Menu/index.js +670 -114
  10. package/dist/components/Menu/interface.d.ts +11 -11
  11. package/dist/components/Menu/interface.js +3 -3
  12. package/dist/components/Menu/overflow.d.ts +39 -0
  13. package/dist/components/Menu/overflow.js +81 -0
  14. package/dist/components/Menu/style/base.d.ts +12 -0
  15. package/dist/components/Menu/style/base.js +36 -0
  16. package/dist/components/Menu/style/horizontal.d.ts +19 -0
  17. package/dist/components/Menu/style/horizontal.js +303 -0
  18. package/dist/components/Menu/style/{siderMenu.d.ts → index.d.ts} +64 -5
  19. package/dist/components/Menu/style/index.js +147 -0
  20. package/dist/components/Menu/style/inline.d.ts +13 -0
  21. package/dist/components/Menu/style/{siderMenu.js → inline.js} +29 -115
  22. package/dist/components/PageContainer/index.js +2 -2
  23. package/dist/components/PageContainer/style.js +9 -6
  24. package/dist/components/Sider/index.js +18 -11
  25. package/dist/defaultConfig.js +1 -2
  26. package/dist/hooks/useLayoutBase.d.ts +15 -15
  27. package/dist/hooks/useMenu.d.ts +5 -5
  28. package/dist/hooks/useMenu.js +1 -1
  29. package/dist/index.d.ts +3 -3
  30. package/dist/index.js +3 -3
  31. package/dist/interface.d.ts +2 -6
  32. package/dist/interface.js +2 -2
  33. package/dist/pro-layout.esm.js +4777 -4469
  34. package/dist/pro-layout.js +3 -2
  35. package/dist/style/breadcrumb.js +2 -1
  36. package/dist/style/logo.js +6 -1
  37. package/dist/style/menu.d.ts +1 -1
  38. package/dist/style/menu.js +1 -1
  39. package/dist/theme/augment.d.ts +2 -2
  40. package/dist/theme/interface/components.d.ts +2 -2
  41. package/dist/utils/menu.d.ts +3 -3
  42. package/dist/utils/menu.js +2 -2
  43. package/dist/utils/themeComponents.d.ts +8 -4
  44. package/dist/utils/themeComponents.js +14 -4
  45. package/package.json +15 -15
  46. package/dist/components/Menu/SiderMenu.d.ts +0 -29
  47. package/dist/components/Menu/SiderMenu.js +0 -666
  48. package/dist/components/Menu/convert.d.ts +0 -14
  49. package/dist/components/Menu/convert.js +0 -50
package/dist/ProLayout.js CHANGED
@@ -133,7 +133,7 @@ const GProLayout = /* @__PURE__ */ defineComponent((props, { emit, expose, slots
133
133
  "mix",
134
134
  "wide"
135
135
  ].includes(layout.value ?? "")) return 0;
136
- if (props.sider?.hideWhenEmpty && menuState.siderMenus.value.length === 0) return 0;
136
+ if (menuState.siderMenus.value.length === 0) return 0;
137
137
  return collapsed.value ? collapsedWidth.value : width;
138
138
  });
139
139
  const tabsState = useTabsState({
@@ -11,7 +11,8 @@ const BREADCRUMB_HOME_KEY = "__breadcrumb_home__";
11
11
  /** 渲染默认面包屑项内容(图标 + 标题) */
12
12
  function renderBreadcrumbItemContent(prefixCls, route) {
13
13
  const iconNode = renderMenuIcon(route.meta?.icon);
14
- return createVNode(Fragment, null, [iconNode && createVNode("span", { "class": `${prefixCls}-item-icon` }, [iconNode]), createVNode("span", null, [route.meta?.title])]);
14
+ const isHomeItem = route.name === BREADCRUMB_HOME_KEY;
15
+ return createVNode(Fragment, null, [iconNode && createVNode("span", { "class": `${prefixCls}-item-icon` }, [iconNode]), !isHomeItem && createVNode("span", null, [route.meta?.title])]);
15
16
  }
16
17
  /**
17
18
  * LayoutBreadcrumb —— 自定义面包屑组件。
@@ -44,7 +45,7 @@ const Breadcrumb = /* @__PURE__ */ defineComponent((props, { slots }) => {
44
45
  path: "/",
45
46
  meta: {
46
47
  title: "首页",
47
- icon: "HomeOutlined"
48
+ icon: "House"
48
49
  }
49
50
  }, ...routes];
50
51
  return routes;
@@ -11,7 +11,7 @@ interface LayoutBreadcrumbProps {
11
11
  /**
12
12
  * 覆盖 context 的首页图标配置。
13
13
  * 默认从 layoutContext.breadcrumb.homeIcon 读取。
14
- * - `true`:显示 HomeOutlined 图标 + "首页" 文字
14
+ * - `true`:只显示 lucide House 图标(不展示「首页」文字)
15
15
  * - `false`:不显示首页项
16
16
  */
17
17
  homeIcon?: WithFalse<boolean>;
@@ -2,7 +2,7 @@ import { useLayoutBase } from "../../hooks/useLayoutBase.js";
2
2
  import Breadcrumb from "../Breadcrumb/index.js";
3
3
  import LayoutCollapseButton from "../CollapseButton/index.js";
4
4
  import LayoutLogo from "../Logo/index.js";
5
- import LayoutMenu from "../Menu/index.js";
5
+ import ProMenu from "../Menu/index.js";
6
6
  import { Fragment, computed, createVNode, defineComponent, ref, watch } from "vue";
7
7
  import { unit } from "@gx-design-vue/pro-provider";
8
8
  import { classNames } from "@gx-design-vue/pro-utils";
@@ -10,23 +10,14 @@ import { useWindowScroll } from "@vueuse/core";
10
10
  import { LayoutHeader } from "antdv-next";
11
11
  //#region src/components/Header/index.tsx
12
12
  const Header = /* @__PURE__ */ defineComponent((props, { emit, slots }) => {
13
- const { sider, header, layout, menuState, prefixCls, collapseConfig, collapsed, isMobile, logoConfig, logoTitle, selectedKeys, openKeys, proClasses, proStyles, breadcrumbRender, breadcrumbConfig } = useLayoutBase(props);
13
+ const { header, siderWidth, layout, menuState, prefixCls, collapseConfig, collapsed, isMobile, logoConfig, logoTitle, selectedKeys, openKeys, proClasses, proStyles, breadcrumbRender, breadcrumbConfig } = useLayoutBase(props);
14
14
  const headerMenus = computed(() => menuState?.headerMenus.value ?? []);
15
15
  const breadcrumbItems = computed(() => menuState?.breadcrumbItems.value ?? []);
16
16
  const breadcrumbRoutes = computed(() => menuState?.breadcrumbRoutes.value ?? []);
17
- const showSider = computed(() => [
18
- "side",
19
- "mix",
20
- "wide"
21
- ].includes(layout.value ?? ""));
22
- const showLogo = computed(() => [
23
- "top",
24
- "mix",
25
- "wide"
26
- ].includes(layout.value ?? ""));
17
+ const showLogo = computed(() => ["top"].includes(layout.value ?? "") || ["mix", "wide"].includes(layout.value ?? "") && !siderWidth.value);
27
18
  const headerStyle = computed(() => {
28
19
  const style = {};
29
- if (header.value?.fixed && showSider.value && !isMobile.value) style.width = `calc(100% - ${collapsed.value ? collapseConfig.value?.width : sider.value?.width}px)`;
20
+ if (header.value?.fixed && siderWidth.value && !isMobile.value) style.width = `calc(100% - ${unit(siderWidth.value)})`;
30
21
  return style;
31
22
  });
32
23
  const headerHidden = ref(false);
@@ -106,9 +97,10 @@ const Header = /* @__PURE__ */ defineComponent((props, { emit, slots }) => {
106
97
  collapsed: collapsed.value,
107
98
  isMobile: isMobile.value
108
99
  }),
109
- showHeaderMenu && createVNode("div", { "class": `${prefixCls.value}-header-menu` }, [createVNode(LayoutMenu, {
100
+ showHeaderMenu && createVNode("div", { "class": `${prefixCls.value}-header-menu` }, [createVNode(ProMenu, {
110
101
  "style": { width: "100%" },
111
102
  "placement": "header",
103
+ "collapsed": false,
112
104
  "menus": headerMenus.value,
113
105
  "selectedKeys": selectedKeys.value,
114
106
  "openKeys": openKeys.value,
@@ -19,7 +19,12 @@ const LayoutLogo = /* @__PURE__ */ defineComponent((_props, { emit, slots }) =>
19
19
  return logoConfig?.value.title;
20
20
  });
21
21
  const logoSource = computed(() => logoConfig?.value.image);
22
- const hideTitle = computed(() => collapsed.value && ["side", "simple"].includes(layout.value ?? ""));
22
+ const hideTitle = computed(() => collapsed.value && [
23
+ "side",
24
+ "mix",
25
+ "wide",
26
+ "simple"
27
+ ].includes(layout.value ?? ""));
23
28
  const showLogo = computed(() => !collapsed.value || !!collapsedWidth.value);
24
29
  const logoClassNames = computed(() => classNames(`${prefixCls.value}-logo`, proClasses.value.logo, {
25
30
  [`${prefixCls.value}-logo-mobile`]: isMobile.value,
@@ -3,7 +3,7 @@ import { VNode } from "vue";
3
3
  //#region src/components/Menu/iconRender.d.ts
4
4
  /**
5
5
  * 渲染菜单/面包屑图标:兼容 VNode / 组件 / 图片地址 / 图标名。
6
- * 被 LayoutMenuSiderMenu、Breadcrumb 等组件共用。
6
+ * 被 ProMenu、Breadcrumb 等组件共用。
7
7
  */
8
8
  declare function renderMenuIcon(icon: any): VNode | string | null;
9
9
  //#endregion
@@ -4,7 +4,7 @@ import { GIcon } from "@gx-design-vue/icon";
4
4
  //#region src/components/Menu/iconRender.tsx
5
5
  /**
6
6
  * 渲染菜单/面包屑图标:兼容 VNode / 组件 / 图片地址 / 图标名。
7
- * 被 LayoutMenuSiderMenu、Breadcrumb 等组件共用。
7
+ * 被 ProMenu、Breadcrumb 等组件共用。
8
8
  */
9
9
  function renderMenuIcon(icon) {
10
10
  if (!icon) return null;
@@ -1,14 +1,13 @@
1
- import { LayoutMenuEmits, LayoutMenuProps, LayoutMenuSlots } from "./interface.js";
1
+ import { ProMenuEmits, ProMenuProps, ProMenuSlots } from "./interface.js";
2
2
  import { SlotsType } from "vue";
3
3
 
4
4
  //#region src/components/Menu/index.d.ts
5
- /**
6
- * LayoutMenu —— 自洽的布局菜单组件。
7
- *
8
- * 直接吃路由分支 `menus`,内部经 `buildMenuItems` 转 antdv-next 菜单项;
9
- * 视觉定制通过 `menuItemIcon`/`menuItemLabel`/`menuItemExtra`(prop 或同名 slot,prop 优先)
10
- * 注入 antdv-next 的 `iconRender`/`labelRender`/`extraRender`。可脱离 GProLayout 独立使用。
11
- */
12
- declare const LayoutMenu: import("vue").DefineSetupFnComponent<LayoutMenuProps, LayoutMenuEmits, SlotsType<LayoutMenuSlots>, LayoutMenuProps, import("vue").PublicProps>;
5
+ interface InternalProMenuProps extends Omit<ProMenuProps, 'placement'> {
6
+ prefixCls?: string;
7
+ placement?: ProMenuProps['placement'];
8
+ /** 由外部传入,用于获取包裹菜单的滚动容器 DOM 引用(inline 模式专用) */
9
+ getScrollContainer?: () => HTMLElement | undefined;
10
+ }
11
+ declare const ProMenu: import("vue").DefineSetupFnComponent<InternalProMenuProps, ProMenuEmits, SlotsType<ProMenuSlots>, InternalProMenuProps, import("vue").PublicProps>;
13
12
  //#endregion
14
- export { LayoutMenu as default };
13
+ export { ProMenu as default };