@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
@@ -44,7 +44,8 @@ const genBreadcrumbStyle = (token) => {
44
44
  [`${breadcrumbCls}-item-icon`]: {
45
45
  display: "inline-flex",
46
46
  alignItems: "center",
47
- fontSize: token.fontSize
47
+ fontSize: token.fontSize,
48
+ minHeight: unit(token.fontHeight)
48
49
  },
49
50
  [`${breadcrumbCls}-overlay-link`]: {
50
51
  color: token.colorTextDescription,
@@ -2,6 +2,11 @@
2
2
  const genLogoStyle = (token) => {
3
3
  return {
4
4
  [`${token.componentCls}-sider-header ${token.componentCls}-logo`]: { borderBlockEnd: `1px solid ${token.siderColorMenuItemDivider}` },
5
+ [`${token.componentCls}-mix ${token.componentCls}-sider-header ${token.componentCls}-logo, ${token.componentCls}-wide ${token.componentCls}-sider-header ${token.componentCls}-logo`]: {
6
+ paddingBlock: 0,
7
+ paddingInline: 12,
8
+ height: "100%"
9
+ },
5
10
  [`${token.componentCls}-logo`]: {
6
11
  position: "relative",
7
12
  display: "flex",
@@ -52,7 +57,7 @@ const genLogoStyle = (token) => {
52
57
  paddingInlineStart: 0
53
58
  }
54
59
  },
55
- [`${token.componentCls}-side ${token.componentCls}-logo-collapsed`]: {
60
+ [`${token.componentCls}-side ${token.componentCls}-logo-collapsed, ${token.componentCls}-mix ${token.componentCls}-logo-collapsed, ${token.componentCls}-wide ${token.componentCls}-logo-collapsed`]: {
56
61
  paddingInline: 0,
57
62
  paddingBlock: 16
58
63
  },
@@ -4,7 +4,7 @@ import { GenerateStyle } from "antdv-next/dist/theme/internal";
4
4
 
5
5
  //#region src/style/menu.d.ts
6
6
  /**
7
- * LayoutMenu 结构样式 —— 颜色/背景/选中/hover 由 LayoutMenu 内层 ConfigProvider 的
7
+ * ProMenu 结构样式 —— 颜色/背景/选中/hover 由 ProMenu 内层 ConfigProvider 的
8
8
  * `components.Menu` token 负责,这里只补 antdv 未 token 化的结构/尺寸。
9
9
  *
10
10
  * 全部置于父级 `${componentCls}` 下命中 `${antCls}-menu`,靠 (0,2,0) 压过 antdv 的
@@ -1,7 +1,7 @@
1
1
  import { unit } from "@antdv-next/cssinjs";
2
2
  //#region src/style/menu.ts
3
3
  /**
4
- * LayoutMenu 结构样式 —— 颜色/背景/选中/hover 由 LayoutMenu 内层 ConfigProvider 的
4
+ * ProMenu 结构样式 —— 颜色/背景/选中/hover 由 ProMenu 内层 ConfigProvider 的
5
5
  * `components.Menu` token 负责,这里只补 antdv 未 token 化的结构/尺寸。
6
6
  *
7
7
  * 全部置于父级 `${componentCls}` 下命中 `${antCls}-menu`,靠 (0,2,0) 压过 antdv 的
@@ -1,6 +1,6 @@
1
1
  import { ComponentToken } from "../components/AppPage/style.js";
2
2
  import { ComponentToken as ComponentToken$1 } from "../components/FooterToolbar/style.js";
3
- import { ComponentToken as ComponentToken$2 } from "../components/Menu/style/siderMenu.js";
3
+ import { ComponentToken as ComponentToken$2 } from "../components/Menu/style/index.js";
4
4
  import { ComponentToken as ComponentToken$3 } from "../components/PageContainer/style.js";
5
5
  import { ComponentToken as ComponentToken$4 } from "../components/PageTransition/style.js";
6
6
  import { ComponentToken as ComponentToken$5 } from "../components/Tabs/style/index.js";
@@ -12,7 +12,7 @@ declare module 'antdv-next/dist/theme/interface/components' {
12
12
  ProLayout?: ComponentToken$6;
13
13
  InnerTabs?: ComponentToken$5;
14
14
  ProAppPage?: ComponentToken;
15
- ProSiderMenu?: ComponentToken$2;
15
+ ProMenu?: ComponentToken$2;
16
16
  ProFooterToolbar?: ComponentToken$1;
17
17
  ProPageContainer?: ComponentToken$3;
18
18
  ProPageTransition?: ComponentToken$4;
@@ -1,6 +1,6 @@
1
1
  import { ComponentToken } from "../../components/AppPage/style.js";
2
2
  import { ComponentToken as ComponentToken$1 } from "../../components/FooterToolbar/style.js";
3
- import { ComponentToken as ComponentToken$2 } from "../../components/Menu/style/siderMenu.js";
3
+ import { ComponentToken as ComponentToken$2 } from "../../components/Menu/style/index.js";
4
4
  import { ComponentToken as ComponentToken$3 } from "../../components/PageContainer/style.js";
5
5
  import { ComponentToken as ComponentToken$4 } from "../../components/PageTransition/style.js";
6
6
  import { ComponentToken as ComponentToken$5 } from "../../components/Tabs/style/index.js";
@@ -11,7 +11,7 @@ interface ComponentTokenMap {
11
11
  ProLayout?: ComponentToken$6;
12
12
  InnerTabs?: ComponentToken$5;
13
13
  ProAppPage?: ComponentToken;
14
- ProSiderMenu?: ComponentToken$2;
14
+ ProMenu?: ComponentToken$2;
15
15
  ProFooterToolbar?: ComponentToken$1;
16
16
  ProPageContainer?: ComponentToken$3;
17
17
  ProPageTransition?: ComponentToken$4;
@@ -10,7 +10,7 @@ import { BreadcrumbItemType, LayoutMenuRoute, Meta } from "../interface.js";
10
10
  * 这是旧实现内存增长 / 卡顿的根因。
11
11
  * - **查询 O(1)/O(depth)**:用 `Map<name, entry>` + `parentNames` 替代旧的 `key="0-1-2"` 字符串切割。
12
12
  * - **只产路由分支**:数据层只输出清洗 / 排序 / 切分后的 `LayoutMenuRoute[]`;
13
- * route → antdv-next `MenuItemType` 的转换交给 `LayoutMenu` 组件自洽完成。
13
+ * route → antdv-next `MenuItemType` 的转换交给 `ProMenu` 组件自洽完成。
14
14
  */
15
15
  /** 扁平查找项:route 为 markRaw 的源路由,parentNames 为根→直接父(含序、不含自身)。 */
16
16
  interface MenuLookupEntry {
@@ -102,11 +102,11 @@ declare function toBreadcrumbItems(routes: LayoutMenuRoute[]): BreadcrumbItemTyp
102
102
  */
103
103
  declare function resolveRouteTarget(lookup: Map<string, MenuLookupEntry>, name: string): ResolveRouteResult;
104
104
  /**
105
- * 取顶层菜单中 `name` 命中项的子级(splitMenus / mix 布局的侧边分支)。
105
+ * 取顶层菜单中 `name` 命中项的子级(mix 布局的侧边分支)。
106
106
  * 替代旧 `menuData.find(name===selectedKeys[0])?.children` 与 `getMenuFirstChildren`。
107
107
  */
108
108
  declare function selectMenuBranch(menus: LayoutMenuRoute[], name: string | undefined): LayoutMenuRoute[];
109
- /** 按 `meta.fixed` 拆分菜单(fixed 项钉到侧边栏底部)。替代旧 SiderMenu 的 `baseMenus`/`footerMenus`。 */
109
+ /** 按 `meta.fixed` 拆分菜单(fixed 项钉到侧边栏底部)。替代旧 ProMenu 的 `baseMenus`/`footerMenus`。 */
110
110
  declare function partitionFixedMenus(menus: LayoutMenuRoute[]): {
111
111
  baseMenus: LayoutMenuRoute[];
112
112
  fixedMenus: LayoutMenuRoute[];
@@ -257,14 +257,14 @@ function resolveRouteTarget(lookup, name) {
257
257
  };
258
258
  }
259
259
  /**
260
- * 取顶层菜单中 `name` 命中项的子级(splitMenus / mix 布局的侧边分支)。
260
+ * 取顶层菜单中 `name` 命中项的子级(mix 布局的侧边分支)。
261
261
  * 替代旧 `menuData.find(name===selectedKeys[0])?.children` 与 `getMenuFirstChildren`。
262
262
  */
263
263
  function selectMenuBranch(menus, name) {
264
264
  if (!name) return [];
265
265
  return menus.find((menu) => menu.name === name)?.children ?? [];
266
266
  }
267
- /** 按 `meta.fixed` 拆分菜单(fixed 项钉到侧边栏底部)。替代旧 SiderMenu 的 `baseMenus`/`footerMenus`。 */
267
+ /** 按 `meta.fixed` 拆分菜单(fixed 项钉到侧边栏底部)。替代旧 ProMenu 的 `baseMenus`/`footerMenus`。 */
268
268
  function partitionFixedMenus(menus) {
269
269
  const baseMenus = [];
270
270
  const fixedMenus = [];
@@ -1,4 +1,4 @@
1
- import { ComponentToken } from "../components/Menu/style/siderMenu.js";
1
+ import { ComponentToken } from "../components/Menu/style/index.js";
2
2
  import { BaseLayoutDesignToken } from "@gx-design-vue/pro-provider";
3
3
  import { ThemeConfig } from "antdv-next";
4
4
 
@@ -8,17 +8,21 @@ type MenuThemeTokens = NonNullable<NonNullable<ThemeConfig['components']>['Menu'
8
8
  /**
9
9
  * 侧边栏菜单的 antdv-next `Menu` token —— 用布局设计 token 重上色 antdv 自己的菜单 CSS。
10
10
  *
11
- * 等价于旧 `SiderMenu.tsx` 外层 `<ConfigProvider theme={{ components: { Menu } }}>`,
11
+ * 等价于旧菜单外层 `<ConfigProvider theme={{ components: { Menu } }}>`,
12
12
  * 但把 ant-design-vue v4 的 legacy token 名(colorItemBg 等)映射到 antdv-next 新名。
13
13
  */
14
14
  declare function buildSiderMenuTokens(token: BaseLayoutDesignToken): MenuThemeTokens;
15
15
  /**
16
- * 侧边栏自写菜单的 token —— 外部仍只配置 `components.Menu`,这里转成内部 `ProSiderMenu`。
16
+ * 侧边栏自写菜单的 token —— 外部仍只配置 `components.Menu`,这里转成内部 `ProMenu`。
17
17
  */
18
18
  declare function buildSiderProMenuTokens(token: BaseLayoutDesignToken, menuToken?: Partial<MenuThemeTokens>): Partial<ComponentToken>;
19
19
  /**
20
20
  * 顶部菜单的 antdv-next `Menu` token —— 水平态配色取布局 header token。
21
21
  */
22
22
  declare function buildHeaderMenuTokens(token: BaseLayoutDesignToken): MenuThemeTokens;
23
+ /**
24
+ * 顶部自写菜单的 token —— 外部仍只配置 `components.Menu`,这里转成内部 `ProMenu`。
25
+ */
26
+ declare function buildHeaderProMenuTokens(token: BaseLayoutDesignToken, menuToken?: Partial<MenuThemeTokens>): Partial<ComponentToken>;
23
27
  //#endregion
24
- export { buildHeaderMenuTokens, buildSiderMenuTokens, buildSiderProMenuTokens };
28
+ export { buildHeaderMenuTokens, buildHeaderProMenuTokens, buildSiderMenuTokens, buildSiderProMenuTokens };
@@ -25,7 +25,7 @@ function pickSiderMenuTokens(menuToken) {
25
25
  /**
26
26
  * 侧边栏菜单的 antdv-next `Menu` token —— 用布局设计 token 重上色 antdv 自己的菜单 CSS。
27
27
  *
28
- * 等价于旧 `SiderMenu.tsx` 外层 `<ConfigProvider theme={{ components: { Menu } }}>`,
28
+ * 等价于旧菜单外层 `<ConfigProvider theme={{ components: { Menu } }}>`,
29
29
  * 但把 ant-design-vue v4 的 legacy token 名(colorItemBg 等)映射到 antdv-next 新名。
30
30
  */
31
31
  function buildSiderMenuTokens(token) {
@@ -49,7 +49,7 @@ function buildSiderMenuTokens(token) {
49
49
  });
50
50
  }
51
51
  /**
52
- * 侧边栏自写菜单的 token —— 外部仍只配置 `components.Menu`,这里转成内部 `ProSiderMenu`。
52
+ * 侧边栏自写菜单的 token —— 外部仍只配置 `components.Menu`,这里转成内部 `ProMenu`。
53
53
  */
54
54
  function buildSiderProMenuTokens(token, menuToken) {
55
55
  return compact({
@@ -72,8 +72,18 @@ function buildHeaderMenuTokens(token) {
72
72
  horizontalItemHoverBg: header.colorBgMenuItemHover,
73
73
  horizontalItemSelectedBg: header.colorBgMenuItemSelected,
74
74
  horizontalItemBorderRadius: header.itemBorderRadius,
75
- itemBorderRadius: header.itemBorderRadius
75
+ itemBorderRadius: header.itemBorderRadius,
76
+ itemHeight: header.menuItemHeight
77
+ });
78
+ }
79
+ /**
80
+ * 顶部自写菜单的 token —— 外部仍只配置 `components.Menu`,这里转成内部 `ProMenu`。
81
+ */
82
+ function buildHeaderProMenuTokens(token, menuToken) {
83
+ return compact({
84
+ ...menuToken,
85
+ ...buildHeaderMenuTokens(token)
76
86
  });
77
87
  }
78
88
  //#endregion
79
- export { buildHeaderMenuTokens, buildSiderMenuTokens, buildSiderProMenuTokens };
89
+ export { buildHeaderMenuTokens, buildHeaderProMenuTokens, buildSiderMenuTokens, buildSiderProMenuTokens };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@gx-design-vue/pro-layout",
3
3
  "type": "module",
4
- "version": "0.1.0-alpha.20",
4
+ "version": "0.1.0-alpha.21",
5
5
  "description": "Gx Design Pro Layout",
6
6
  "author": {
7
7
  "name": "gx12358",
@@ -38,13 +38,13 @@
38
38
  ],
39
39
  "peerDependencies": {
40
40
  "@antdv-next/cssinjs": "^1.0.6",
41
- "@gx-design-vue/context": "^0.0.5-alpha.7",
42
- "@gx-design-vue/icon": "^0.0.1-alpha.12",
43
- "@gx-design-vue/pro-hooks": "^0.2.0-alpha.7",
44
- "@gx-design-vue/pro-provider": "^0.1.0-alpha.16",
45
- "@gx-design-vue/pro-utils": "^0.2.0-alpha.9",
46
- "@gx-design-vue/scrollbar": "^0.2.0-alpha.6",
47
- "antdv-next": "^1.4.0",
41
+ "@gx-design-vue/context": "^0.0.5-alpha.8",
42
+ "@gx-design-vue/icon": "^0.0.1-alpha.13",
43
+ "@gx-design-vue/pro-hooks": "^0.2.0-alpha.8",
44
+ "@gx-design-vue/pro-provider": "^0.1.0-alpha.17",
45
+ "@gx-design-vue/pro-utils": "^0.2.0-alpha.10",
46
+ "@gx-design-vue/scrollbar": "^0.2.0-alpha.7",
47
+ "antdv-next": "^1.4.1",
48
48
  "vue": ">=3.2.0"
49
49
  },
50
50
  "dependencies": {
@@ -56,14 +56,14 @@
56
56
  },
57
57
  "devDependencies": {
58
58
  "@antdv-next/cssinjs": "^1.0.6",
59
- "antdv-next": "^1.4.0",
59
+ "antdv-next": "^1.4.1",
60
60
  "vue": "^3.5.38",
61
- "@gx-design-vue/context": "^0.0.5-alpha.7",
62
- "@gx-design-vue/icon": "^0.0.1-alpha.12",
63
- "@gx-design-vue/pro-provider": "^0.1.0-alpha.16",
64
- "@gx-design-vue/pro-utils": "^0.2.0-alpha.9",
65
- "@gx-design-vue/scrollbar": "^0.2.0-alpha.6",
66
- "@gx-design-vue/pro-hooks": "^0.2.0-alpha.7"
61
+ "@gx-design-vue/context": "^0.0.5-alpha.8",
62
+ "@gx-design-vue/pro-hooks": "^0.2.0-alpha.8",
63
+ "@gx-design-vue/pro-provider": "^0.1.0-alpha.17",
64
+ "@gx-design-vue/icon": "^0.0.1-alpha.13",
65
+ "@gx-design-vue/pro-utils": "^0.2.0-alpha.10",
66
+ "@gx-design-vue/scrollbar": "^0.2.0-alpha.7"
67
67
  },
68
68
  "browserslist": [
69
69
  "> 1%",
@@ -1,29 +0,0 @@
1
- import { LayoutMenuEmits, LayoutMenuSlots } from "./interface.js";
2
- import { LayoutClassNamesType, LayoutMenuItemSlotProps, LayoutMenuRoute, LayoutStylesType } from "../../interface.js";
3
- import { CSSProperties, SlotsType } from "vue";
4
- import { CustomRender } from "@gx-design-vue/pro-utils";
5
-
6
- //#region src/components/Menu/SiderMenu.d.ts
7
- interface SiderMenuProps {
8
- class?: string;
9
- prefixCls?: string;
10
- style?: CSSProperties;
11
- menus?: LayoutMenuRoute[];
12
- selectedKeys?: string[];
13
- openKeys?: string[];
14
- collapsed?: boolean;
15
- proClasses?: LayoutClassNamesType;
16
- proStyles?: LayoutStylesType;
17
- /** 由外部(如 Sider)传入,用于获取包裹 SiderMenu 的滚动容器 DOM 引用 */
18
- getScrollContainer?: () => HTMLElement | undefined;
19
- menuItemIcon?: (slotProps: LayoutMenuItemSlotProps) => CustomRender;
20
- menuItemLabel?: (slotProps: LayoutMenuItemSlotProps) => CustomRender;
21
- menuItemExtra?: (slotProps: LayoutMenuItemSlotProps) => CustomRender;
22
- onSelect?: LayoutMenuEmits['select'];
23
- onOpenChange?: LayoutMenuEmits['openChange'];
24
- 'onUpdate:selectedKeys'?: LayoutMenuEmits['update:selectedKeys'];
25
- 'onUpdate:openKeys'?: LayoutMenuEmits['update:openKeys'];
26
- }
27
- declare const SiderMenu: import("vue").DefineSetupFnComponent<SiderMenuProps, LayoutMenuEmits, SlotsType<LayoutMenuSlots>, SiderMenuProps, import("vue").PublicProps>;
28
- //#endregion
29
- export { SiderMenu as default };