@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.
- package/dist/ProLayout.js +1 -1
- package/dist/components/Breadcrumb/index.js +3 -2
- package/dist/components/Breadcrumb/interface.d.ts +1 -1
- package/dist/components/Header/index.js +6 -14
- package/dist/components/Logo/index.js +6 -1
- package/dist/components/Menu/iconRender.d.ts +1 -1
- package/dist/components/Menu/iconRender.js +1 -1
- package/dist/components/Menu/index.d.ts +9 -10
- package/dist/components/Menu/index.js +670 -114
- package/dist/components/Menu/interface.d.ts +11 -11
- package/dist/components/Menu/interface.js +3 -3
- package/dist/components/Menu/overflow.d.ts +39 -0
- package/dist/components/Menu/overflow.js +81 -0
- package/dist/components/Menu/style/base.d.ts +12 -0
- package/dist/components/Menu/style/base.js +36 -0
- package/dist/components/Menu/style/horizontal.d.ts +19 -0
- package/dist/components/Menu/style/horizontal.js +303 -0
- package/dist/components/Menu/style/{siderMenu.d.ts → index.d.ts} +64 -5
- package/dist/components/Menu/style/index.js +147 -0
- package/dist/components/Menu/style/inline.d.ts +13 -0
- package/dist/components/Menu/style/{siderMenu.js → inline.js} +29 -115
- package/dist/components/PageContainer/index.js +2 -2
- package/dist/components/PageContainer/style.js +9 -6
- package/dist/components/Sider/index.js +18 -11
- package/dist/defaultConfig.js +1 -2
- package/dist/hooks/useLayoutBase.d.ts +15 -15
- package/dist/hooks/useMenu.d.ts +5 -5
- package/dist/hooks/useMenu.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.js +3 -3
- package/dist/interface.d.ts +2 -6
- package/dist/interface.js +2 -2
- package/dist/pro-layout.esm.js +4777 -4469
- package/dist/pro-layout.js +3 -2
- package/dist/style/breadcrumb.js +2 -1
- package/dist/style/logo.js +6 -1
- package/dist/style/menu.d.ts +1 -1
- package/dist/style/menu.js +1 -1
- package/dist/theme/augment.d.ts +2 -2
- package/dist/theme/interface/components.d.ts +2 -2
- package/dist/utils/menu.d.ts +3 -3
- package/dist/utils/menu.js +2 -2
- package/dist/utils/themeComponents.d.ts +8 -4
- package/dist/utils/themeComponents.js +14 -4
- package/package.json +15 -15
- package/dist/components/Menu/SiderMenu.d.ts +0 -29
- package/dist/components/Menu/SiderMenu.js +0 -666
- package/dist/components/Menu/convert.d.ts +0 -14
- 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 (
|
|
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
|
-
|
|
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: "
|
|
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
|
|
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
|
|
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 {
|
|
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
|
|
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 &&
|
|
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(
|
|
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 && [
|
|
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
|
-
* 被
|
|
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
|
-
* 被
|
|
7
|
+
* 被 ProMenu、Breadcrumb 等组件共用。
|
|
8
8
|
*/
|
|
9
9
|
function renderMenuIcon(icon) {
|
|
10
10
|
if (!icon) return null;
|
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import {
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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 {
|
|
13
|
+
export { ProMenu as default };
|