@gx-design-vue/pro-layout 0.1.0-beta.20 → 0.1.0-beta.201

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 (101) hide show
  1. package/README.md +3 -3
  2. package/dist/Context.d.ts +33 -50
  3. package/dist/ProLayout.d.ts +418 -512
  4. package/dist/WrapContent.d.ts +87 -9
  5. package/dist/_utils/ant-design-vue/badge.d.ts +1 -0
  6. package/dist/_utils/ant-design-vue/breadcrumb.d.ts +2 -0
  7. package/dist/_utils/ant-design-vue/dropdown.d.ts +1 -0
  8. package/dist/_utils/ant-design-vue/index.d.ts +5 -2
  9. package/dist/_utils/ant-design-vue/menu.d.ts +3 -0
  10. package/dist/_utils/ant-design-vue/spin.d.ts +1 -0
  11. package/dist/_utils/ant-design-vue/theme.d.ts +2 -0
  12. package/dist/components/AppPage/context.d.ts +5 -0
  13. package/dist/components/AppPage/index.d.ts +49 -0
  14. package/dist/components/AppPage/style.d.ts +4 -0
  15. package/dist/components/BaseMenu/index.d.ts +243 -0
  16. package/dist/components/BaseMenu/props.d.ts +99 -0
  17. package/dist/components/{SettingDrawer/style/index.d.ts → BaseMenu/style.d.ts} +2 -2
  18. package/dist/components/BreadCrumb/index.d.ts +15 -0
  19. package/dist/components/{SettingDrawer/style/others.d.ts → BreadCrumb/style.d.ts} +2 -2
  20. package/dist/components/CollapsedIcon/index.d.ts +28 -0
  21. package/dist/components/CollapsedIcon/style.d.ts +6 -0
  22. package/dist/components/FooterToolbar/index.d.ts +71 -0
  23. package/dist/components/FooterToolbar/props.d.ts +43 -0
  24. package/dist/components/FooterToolbar/style/index.d.ts +8 -0
  25. package/dist/components/FooterToolbar/style/stylish.d.ts +11 -0
  26. package/dist/components/GlobalFooter/index.d.ts +16 -17
  27. package/dist/components/GlobalFooter/style.d.ts +1 -1
  28. package/dist/components/GlobalHeader/DefaultHeader.d.ts +98 -577
  29. package/dist/components/GlobalHeader/index.d.ts +102 -277
  30. package/dist/components/GlobalHeader/props.d.ts +30 -249
  31. package/dist/components/GlobalHeader/style/{index.d.ts → defaultHeader.d.ts} +2 -2
  32. package/dist/components/GlobalHeader/style/{globalHeader.d.ts → header.d.ts} +2 -2
  33. package/dist/components/LogoContent/index.d.ts +46 -55
  34. package/dist/components/LogoContent/props.d.ts +38 -24
  35. package/dist/components/LogoContent/style.d.ts +1 -1
  36. package/dist/components/PageContainer/PageHeader.d.ts +29 -10
  37. package/dist/components/PageContainer/index.d.ts +174 -49
  38. package/dist/components/PageContainer/props.d.ts +107 -23
  39. package/dist/components/PageContainer/style/index.d.ts +1 -1
  40. package/dist/components/PageContainer/style/pageHeader.d.ts +1 -1
  41. package/dist/components/PageTranstion/index.d.ts +5 -5
  42. package/dist/components/SiderMenu/Arrow.d.ts +2 -0
  43. package/dist/components/SiderMenu/SiderMenu.d.ts +110 -370
  44. package/dist/components/SiderMenu/index.d.ts +117 -364
  45. package/dist/components/SiderMenu/props.d.ts +40 -276
  46. package/dist/components/SiderMenu/style/index.d.ts +7 -0
  47. package/dist/components/SiderMenu/typings.d.ts +7 -7
  48. package/dist/components/TabsRoute/index.d.ts +89 -0
  49. package/dist/components/TabsRoute/props.d.ts +75 -0
  50. package/dist/components/{MultiTab → TabsRoute}/style.d.ts +1 -0
  51. package/dist/components/TabsRoute/utils/config.d.ts +14 -0
  52. package/dist/{utils → config}/animate.d.ts +1 -1
  53. package/dist/config/index.d.ts +30 -0
  54. package/dist/hooks/collapsed/index.d.ts +12 -0
  55. package/dist/hooks/layout/index.d.ts +16 -0
  56. package/dist/hooks/menu/context.d.ts +16 -0
  57. package/dist/hooks/menu/index.d.ts +22 -0
  58. package/dist/hooks/theme/index.d.ts +5 -0
  59. package/dist/index.d.ts +23 -24
  60. package/dist/pro-layout.js +5397 -0
  61. package/dist/pro-layout.umd.cjs +45 -0
  62. package/dist/props/collapsedProps.d.ts +36 -0
  63. package/dist/props/defaultSettings.d.ts +57 -0
  64. package/dist/props/index.d.ts +215 -0
  65. package/dist/props/themeProps.d.ts +10 -0
  66. package/dist/style/index.d.ts +15 -8
  67. package/dist/types/Breadcrumb.d.ts +31 -0
  68. package/dist/types/MenuTypings.d.ts +41 -0
  69. package/dist/types/RouteTypings.d.ts +85 -0
  70. package/dist/types/SlotsTypings.d.ts +127 -0
  71. package/dist/types/typings.d.ts +65 -0
  72. package/dist/utils/index.d.ts +3 -41
  73. package/dist/utils/menu.d.ts +24 -0
  74. package/dist/utils/style/index.d.ts +40 -0
  75. package/package.json +37 -53
  76. package/dist/PageLoading.d.ts +0 -6
  77. package/dist/RenderTypings.d.ts +0 -29
  78. package/dist/components/MultiTab/index.d.ts +0 -80
  79. package/dist/components/MultiTab/props.d.ts +0 -34
  80. package/dist/components/MultiTab/utils/config.d.ts +0 -4
  81. package/dist/components/SettingDrawer/BlockCheckbox.d.ts +0 -58
  82. package/dist/components/SettingDrawer/OthersChange.d.ts +0 -18
  83. package/dist/components/SettingDrawer/RegionalChange.d.ts +0 -46
  84. package/dist/components/SettingDrawer/ThemeColor.d.ts +0 -46
  85. package/dist/components/SettingDrawer/ThemeEditor.d.ts +0 -10
  86. package/dist/components/SettingDrawer/index.d.ts +0 -64
  87. package/dist/components/SettingDrawer/style/theme.d.ts +0 -3
  88. package/dist/components/SettingDrawer/utils/config.d.ts +0 -12
  89. package/dist/components/SiderMenu/BaseMenu.d.ts +0 -284
  90. package/dist/components/SiderMenu/style.d.ts +0 -6
  91. package/dist/defaultSettings.d.ts +0 -84
  92. package/dist/hooks/context/index.d.ts +0 -5
  93. package/dist/pro-layout.mjs +0 -5008
  94. package/dist/pro-layout.umd.js +0 -1
  95. package/dist/props.d.ts +0 -293
  96. package/dist/route.d.ts +0 -63
  97. package/dist/typings.d.ts +0 -1
  98. package/dist/utils/coverToNewToken.d.ts +0 -4
  99. package/dist/utils/getMenuData.d.ts +0 -8
  100. package/dist/utils/isImg/index.d.ts +0 -3
  101. package/dist/utils/isUrl/index.d.ts +0 -2
@@ -0,0 +1,215 @@
1
+ import type { DeepPartial, ProAliasToken } from '@gx-design-vue/pro-provider';
2
+ import type { WaterMarkProps } from '@gx-design-vue/pro-watermark';
3
+ import type { CSSProperties, PropType } from 'vue';
4
+ import type { Links } from '../components/GlobalFooter';
5
+ import type { LayoutPageContainer } from '../components/PageContainer/props';
6
+ import type { BaseTabsRouteProps } from '../components/TabsRoute';
7
+ import type { ProLayoutConfig } from '../config';
8
+ import type { BreadcrumbProps } from '../types/Breadcrumb';
9
+ import type { ProLayoutMenuProps } from '../types/MenuTypings';
10
+ import type { AppRouteModule } from '../types/RouteTypings';
11
+ import type { DefaultRender, FooterRender } from '../types/SlotsTypings';
12
+ import type { CollapsedProps, LayoutClassNamesType, LayoutStylesType } from '../types/typings';
13
+ export interface ShortcutKeyProps {
14
+ search?: {
15
+ keys?: string;
16
+ disabled?: boolean;
17
+ };
18
+ lock?: {
19
+ keys?: string;
20
+ disabled?: boolean;
21
+ };
22
+ }
23
+ export declare const basicLayoutProps: {
24
+ styles: {
25
+ type: PropType<LayoutStylesType>;
26
+ default: () => {};
27
+ };
28
+ classNames: {
29
+ type: PropType<LayoutClassNamesType>;
30
+ default: () => {};
31
+ };
32
+ collapsedProps: {
33
+ type: PropType<Partial<CollapsedProps>>;
34
+ };
35
+ settings: {
36
+ type: PropType<ProLayoutConfig>;
37
+ default: () => ProLayoutConfig;
38
+ };
39
+ menu: {
40
+ type: PropType<Partial<ProLayoutMenuProps>>;
41
+ default: () => Partial<import("../types/MenuTypings").BaseMenuProps>;
42
+ };
43
+ route: {
44
+ type: PropType<AppRouteModule[]>;
45
+ default: () => never[];
46
+ };
47
+ tabsRoute: {
48
+ type: PropType<BaseTabsRouteProps>;
49
+ default: () => {};
50
+ };
51
+ pageContainer: {
52
+ type: PropType<LayoutPageContainer>;
53
+ };
54
+ pure: PropType<boolean>;
55
+ token: PropType<DeepPartial<ProAliasToken>>;
56
+ cssVar: {
57
+ type: PropType<(keyof ProAliasToken)[]>;
58
+ default: () => never[];
59
+ };
60
+ /** @name WaterMarkProps 水印的配置 */
61
+ waterMarkProps: {
62
+ type: PropType<false | WaterMarkProps>;
63
+ default: () => undefined;
64
+ };
65
+ /**
66
+ * 是否禁用移动端模式,有的管理系统不需要移动端模式,此属性设置为true即可
67
+ */
68
+ disableMobile: {
69
+ type: PropType<boolean>;
70
+ };
71
+ breadcrumb: {
72
+ type: PropType<BreadcrumbProps>;
73
+ default: () => {};
74
+ };
75
+ isChildrenLayout: PropType<boolean>;
76
+ loading: PropType<boolean>;
77
+ footerLinks: {
78
+ type: PropType<Links>;
79
+ default: ({
80
+ key: string;
81
+ title: string;
82
+ href: string;
83
+ blankTarget: boolean;
84
+ } | {
85
+ key: string;
86
+ title: import("vue/jsx-runtime").JSX.Element;
87
+ href: string;
88
+ blankTarget: boolean;
89
+ })[];
90
+ };
91
+ pageLockRender: {
92
+ type: PropType<DefaultRender>;
93
+ default: undefined;
94
+ };
95
+ copyrightRender: {
96
+ type: PropType<DefaultRender>;
97
+ default: () => undefined;
98
+ };
99
+ footerRender: {
100
+ type: PropType<FooterRender>;
101
+ default: () => undefined;
102
+ };
103
+ onContentFullScreenChange: PropType<(value: boolean) => void>;
104
+ openKeys: {
105
+ type: PropType<import("../types/MenuTypings").ProLayoutMenuFunProps["openKeys"]>;
106
+ default: () => never[];
107
+ };
108
+ selectedKeys: {
109
+ type: PropType<import("../types/MenuTypings").ProLayoutMenuFunProps["selectedKeys"]>;
110
+ default: () => never[];
111
+ };
112
+ onOpenKeys: {
113
+ type: PropType<import("../types/MenuTypings").ProLayoutMenuFunProps["onOpenKeys"]>;
114
+ };
115
+ onSelect: {
116
+ type: PropType<import("../types/MenuTypings").ProLayoutMenuFunProps["onSelect"]>;
117
+ };
118
+ menuItemRender: {
119
+ type: PropType<import("../types/MenuTypings").BaseMenuProps["menuItemRender"]>;
120
+ default: () => undefined;
121
+ };
122
+ menuTextRender: {
123
+ type: PropType<import("../types/MenuTypings").BaseMenuProps["menuTextRender"]>;
124
+ default: () => undefined;
125
+ };
126
+ subMenuItemRender: {
127
+ type: PropType<import("../types/MenuTypings").BaseMenuProps["subMenuItemRender"]>;
128
+ default: () => undefined;
129
+ };
130
+ onReloadPage: {
131
+ type: PropType<() => void>;
132
+ };
133
+ onTabsChange: {
134
+ type: PropType<(list: AppRouteModule[]) => void>;
135
+ default: undefined;
136
+ };
137
+ 'onUpdate:tabs': {
138
+ type: PropType<(list: AppRouteModule[]) => void>;
139
+ };
140
+ autoHideHeader: PropType<import("../types/typings").HeaderLayoutProps["autoHideHeader"]>;
141
+ headerMainWidth: {
142
+ type: PropType<import("../types/typings").HeaderLayoutProps["headerMainWidth"]>;
143
+ default: undefined;
144
+ };
145
+ headerRender: {
146
+ type: PropType<import("../types/SlotsTypings").HeaderRender>;
147
+ default: () => undefined;
148
+ };
149
+ headerContentRender: {
150
+ type: PropType<import("../types/SlotsTypings").HeaderContentRender>;
151
+ default: () => undefined;
152
+ };
153
+ appsLogoComponents: {
154
+ type: PropType<DefaultRender>;
155
+ default: () => undefined;
156
+ };
157
+ extraRightDropdownRender: {
158
+ type: PropType<DefaultRender>;
159
+ default: () => undefined;
160
+ };
161
+ rightContentRender: {
162
+ type: PropType<import("../types/SlotsTypings").RightContentRender>;
163
+ default: () => undefined;
164
+ };
165
+ class: PropType<string>;
166
+ style: PropType<CSSProperties>;
167
+ logo: {
168
+ type: PropType<import("../components/LogoContent/props").CommonLogoProps["logo"]>;
169
+ default: () => undefined;
170
+ };
171
+ logoStyle: {
172
+ type: PropType<import("../components/LogoContent/props").CommonLogoProps["logoStyle"]>;
173
+ default: () => undefined;
174
+ };
175
+ logoRender: {
176
+ type: PropType<import("../components/LogoContent/props").CommonLogoProps["logoRender"]>;
177
+ default: () => undefined;
178
+ };
179
+ onLogoClick: PropType<import("../components/LogoContent/props").CommonLogoProps["onLogoClick"]>;
180
+ suppressSiderWhenMenuEmpty: {
181
+ type: PropType<import("../types/typings").SiderLayoutProps["suppressSiderWhenMenuEmpty"]>;
182
+ default: boolean;
183
+ };
184
+ breakpoint: {
185
+ type: PropType<import("../types/typings").SiderLayoutProps["breakpoint"]>;
186
+ default: () => boolean;
187
+ };
188
+ siderActionsRender: {
189
+ type: PropType<DefaultRender>;
190
+ default: () => undefined;
191
+ };
192
+ menuLinksRender: {
193
+ type: PropType<DefaultRender>;
194
+ default: () => undefined;
195
+ };
196
+ menuFooterRender: {
197
+ type: PropType<import("../types/SlotsTypings").MenuFooterRender>;
198
+ default: () => undefined;
199
+ };
200
+ menuContentRender: {
201
+ type: PropType<import("../types/SlotsTypings").MenuContentRender>;
202
+ default: () => undefined;
203
+ };
204
+ menuHeaderRender: {
205
+ type: PropType<import("../types/SlotsTypings").MenuHeaderRender>;
206
+ default: () => undefined;
207
+ };
208
+ theme: {
209
+ type: PropType<import("@gx-design-vue/context/dist").ThemeValue>;
210
+ };
211
+ onDarkChange: PropType<(value: boolean) => void>;
212
+ onThemeChange: PropType<(value?: import("@gx-design-vue/context/dist").ThemeValue) => void>;
213
+ 'onUpdate:theme': PropType<(value?: import("@gx-design-vue/context/dist").ThemeValue) => void>;
214
+ id: PropType<string>;
215
+ };
@@ -0,0 +1,10 @@
1
+ import type { ThemeValue } from '@gx-design-vue/context';
2
+ import type { PropType } from 'vue';
3
+ export declare const themeProps: {
4
+ theme: {
5
+ type: PropType<ThemeValue>;
6
+ };
7
+ onDarkChange: PropType<(value: boolean) => void>;
8
+ onThemeChange: PropType<(value?: ThemeValue) => void>;
9
+ 'onUpdate:theme': PropType<(value?: ThemeValue) => void>;
10
+ };
@@ -1,14 +1,21 @@
1
- import type { GenerateStyle } from 'ant-design-vue/es/theme/internal';
2
1
  import type { ProAliasToken } from '@gx-design-vue/pro-provider';
2
+ import type { GenerateStyle } from 'ant-design-vue/es/theme/internal';
3
3
  export interface ProLayoutToken extends ProAliasToken {
4
4
  componentCls: string;
5
5
  }
6
- /**
7
- * 主要区别:
8
- * 需要手动引入 import 'antd/dist/antd.css';
9
- * 需要重置 menu 的样式
10
- * @param token
11
- * @returns
12
- */
6
+ export declare const iconStyle: (token: ProLayoutToken) => {
7
+ paddingInline: number;
8
+ paddingBlock: number;
9
+ lineHeight: string;
10
+ fontSize: number;
11
+ cursor: string;
12
+ color: string | undefined;
13
+ borderRadius: number;
14
+ transition: string;
15
+ '&:hover': {
16
+ color: string | undefined;
17
+ backgroundColor: string | undefined;
18
+ };
19
+ };
13
20
  export declare const compatibleStyle: GenerateStyle<ProLayoutToken>;
14
21
  export declare const genProLayoutStyle: GenerateStyle<ProLayoutToken>;
@@ -0,0 +1,31 @@
1
+ import type { CustomRender } from '@gx-design-vue/pro-utils';
2
+ import type { Route } from '../_utils';
3
+ import type { AppRouteModule } from './RouteTypings';
4
+ export interface ProRoute extends Omit<Route, 'children'> {
5
+ path: string;
6
+ name: AppRouteModule['name'];
7
+ icon?: string;
8
+ hidden?: boolean;
9
+ children?: ProRoute[];
10
+ }
11
+ export interface ProBreadcrumbRoute extends ProRoute {
12
+ isFirst?: boolean;
13
+ isLast?: boolean;
14
+ link: string;
15
+ }
16
+ export interface BreadcrumbProps {
17
+ visible?: boolean;
18
+ showHome?: boolean;
19
+ position?: 'header' | 'pageHeader';
20
+ prefixCls?: string;
21
+ routes?: ProRoute[];
22
+ params?: any;
23
+ separator?: CustomRender;
24
+ itemRender?: (opts: {
25
+ route: ProBreadcrumbRoute;
26
+ params: any;
27
+ routes: Array<ProBreadcrumbRoute>;
28
+ paths: Array<string>;
29
+ }) => CustomRender;
30
+ }
31
+ export type BreadcrumbListReturn = Pick<BreadcrumbProps, Extract<keyof BreadcrumbProps, 'routes' | 'itemRender' | 'position' | 'showHome' | 'visible'>>;
@@ -0,0 +1,41 @@
1
+ import type { BaseTheme, ThemeValue } from '@gx-design-vue/context';
2
+ import type { MenuInfo, MenuProps, SelectInfo } from '../_utils';
3
+ import type { AppRouteModule } from '../types/RouteTypings';
4
+ import type { MenuItemRender, MenuTextRender, SubMenuItemRender } from '../types/SlotsTypings';
5
+ import type { SemanticClassNames, SemanticStyles } from './typings';
6
+ export type MenuSemanticName = 'menu' | 'footerMenu' | 'menuItem' | 'menuItemSelect' | 'menuItemTitle' | 'menuItemTitleText' | 'menuItemIcon' | 'subMenu' | 'subMenuTitle' | 'subMenuPopup';
7
+ export type MenuStylesType = SemanticStyles<MenuSemanticName>;
8
+ export type MenuClassNamesType = SemanticClassNames<MenuSemanticName>;
9
+ export interface BaseMenuProps extends ProLayoutMenuProps {
10
+ mode: MenuProps['mode'];
11
+ menuData: AppRouteModule[];
12
+ styles: MenuStylesType;
13
+ classNames: MenuClassNamesType;
14
+ menuItemRender: MenuItemRender;
15
+ menuTextRender: MenuTextRender;
16
+ subMenuItemRender: SubMenuItemRender;
17
+ onClick: (info: MenuInfo) => void;
18
+ onSelect: (info: SelectInfo) => void;
19
+ onOpenKeys: (openKeys: string[]) => void;
20
+ }
21
+ export interface ProLayoutMenuProps {
22
+ loading: boolean;
23
+ autoClose: boolean;
24
+ theme: BaseTheme;
25
+ type?: 'sub' | 'group';
26
+ menuProps: (MenuProps & {
27
+ extraInlineIndent?: number;
28
+ }) | null;
29
+ }
30
+ export interface ProLayoutMenuFunProps {
31
+ openKeys: string[];
32
+ selectedKeys: string[];
33
+ onSelect: (info: string[]) => void;
34
+ onOpenKeys: (openKeys: string[]) => void;
35
+ }
36
+ export interface MenuPropsContext extends ProLayoutMenuProps, Pick<BaseMenuProps, 'menuData'> {
37
+ key: ThemeValue;
38
+ baseTheme: BaseTheme;
39
+ flatMenus: AppRouteModule[];
40
+ mixSiderMenus: AppRouteModule[];
41
+ }
@@ -0,0 +1,85 @@
1
+ import type { RecordType } from '@gx-design-vue/pro-utils';
2
+ import type { CSSProperties, defineComponent } from 'vue';
3
+ import type { RouteRecordRaw } from 'vue-router';
4
+ import type { MenuItemBadgeRender } from './SlotsTypings';
5
+ export type Component<T = any> = ReturnType<typeof defineComponent> | (() => Promise<typeof import('*.vue')>) | (() => Promise<T>);
6
+ export type AppRouteModule = {
7
+ name: string;
8
+ meta?: Meta;
9
+ key?: string;
10
+ query?: RecordType;
11
+ params?: RecordType;
12
+ fullPath?: string;
13
+ children?: AppRouteModule[];
14
+ redirect?: string;
15
+ component?: Component;
16
+ } & Omit<RouteRecordRaw, 'meta' | 'children' | 'redirect' | 'name'>;
17
+ export interface MenuDataItem extends Meta {
18
+ name: string;
19
+ title?: string;
20
+ id?: number;
21
+ menuId?: number;
22
+ parentId?: number;
23
+ createTime?: string;
24
+ path?: string;
25
+ fullPath?: string;
26
+ hidden?: boolean;
27
+ hideChildren?: boolean;
28
+ link?: string;
29
+ key?: string;
30
+ redirect?: string;
31
+ component?: string;
32
+ meta?: Meta;
33
+ children?: MenuDataItem[];
34
+ }
35
+ export interface TabsMeta {
36
+ hidden?: 0 | 1 | boolean;
37
+ fixed?: 0 | 1 | boolean;
38
+ }
39
+ /**
40
+ * @Author gx12358
41
+ * @DateTime 2024/11/7
42
+ * @lastTime 2024/11/7
43
+ * @param {Meta-string} title 名称
44
+ * @param {Meta-number} order 排序
45
+ * @param {Meta-any} icon 菜单图标
46
+ * @param {Meta-CSSProperties} iconStyle 菜单图标样式
47
+ * @param {Meta-boolean} divider 是否使用分隔栏
48
+ * @param {Meta-string} iconFont 菜单图标前缀 - 默认iconfont
49
+ * @param {Meta-boolean} hidden 在菜单中隐藏不匹配菜单key
50
+ * @param {Meta-boolean} hideChildren 子菜单全部隐藏不匹配菜单key
51
+ * @param {Meta-boolean} hideInMenu 在菜单中隐藏并且可匹配菜单key
52
+ * @param {Meta-boolean} hideChildrenInMenu 子菜单全部hiddenInMenu,隐藏并且访问匹配菜单key
53
+ * @param {Meta-0 | 1} linkStatus 外链类型(选择是系统内则以iframe形式在系统内部展示,否则跳转新页面打开) 0:系统内 1:系统外
54
+ * @param {Meta-string} link 外链地址
55
+ * @param {Meta-boolean} disabled 是否禁止点击
56
+ * @param {Meta-boolean} keepAlive 是否缓存
57
+ * @param {Meta-boolean} animateDisabled 是否禁用动画
58
+ * @param {Meta-group} menuItemType 菜单ItemType
59
+ * @param {Meta-TabsMeta} tabState tab页签属性
60
+ * @param {Meta-string} menuSelectKey 所属菜单selectedKey
61
+ * @param {Meta-MenuItemBadgeRender} rightContent 右侧展示内容
62
+ * @description
63
+ */
64
+ export interface Meta {
65
+ title?: string;
66
+ order?: number;
67
+ icon?: any;
68
+ iconStyle?: CSSProperties;
69
+ divider?: boolean;
70
+ iconPrefix?: string;
71
+ hidden?: boolean;
72
+ hideChildren?: boolean;
73
+ hideInMenu?: boolean;
74
+ hideChildrenInMenu?: boolean;
75
+ linkStatus?: 0 | 1;
76
+ link?: string;
77
+ disabled?: boolean;
78
+ keepAlive?: boolean;
79
+ animateDisabled?: boolean;
80
+ rightContent?: MenuItemBadgeRender;
81
+ menuItemType?: 'group';
82
+ tabState?: TabsMeta;
83
+ menuSelectKey?: string;
84
+ fixed?: boolean;
85
+ }
@@ -0,0 +1,127 @@
1
+ import type { CustomRender, WithFalse } from '@gx-design-vue/pro-utils';
2
+ import type { SlotsType } from 'vue';
3
+ import type { LogoContentProps } from '../components/LogoContent';
4
+ import type { BasicLayoutProps } from '../types/typings';
5
+ import type { BreadcrumbProps, ProRoute } from './Breadcrumb';
6
+ import type { BaseMenuProps } from './MenuTypings';
7
+ import type { AppRouteModule, Meta } from './RouteTypings';
8
+ import type { HeaderLayoutProps, SiderLayoutProps } from './typings';
9
+ export type DefaultRender = WithFalse<CustomRender>;
10
+ export interface LogoRenderProps {
11
+ logo: CustomRender;
12
+ title: CustomRender;
13
+ props?: LogoContentProps;
14
+ }
15
+ export type BreadcrumbRender = BreadcrumbProps['itemRender'];
16
+ export type HeaderRender = WithFalse<(props: {
17
+ props: HeaderLayoutProps;
18
+ defaultDom: CustomRender;
19
+ }) => CustomRender>;
20
+ export type HeaderContentRender = WithFalse<(props?: HeaderLayoutProps) => CustomRender>;
21
+ export type FooterRender = WithFalse<(props?: BasicLayoutProps) => CustomRender>;
22
+ export type RightContentRender = WithFalse<(props?: HeaderLayoutProps) => CustomRender>;
23
+ export type MenuItemRender = WithFalse<(props: {
24
+ item: AppRouteModule;
25
+ defaultDom?: CustomRender;
26
+ menuProps?: BaseMenuProps;
27
+ }) => CustomRender>;
28
+ export type MenuTextRender = WithFalse<(props: {
29
+ item: AppRouteModule;
30
+ defaultText?: CustomRender;
31
+ menuProps?: BaseMenuProps;
32
+ }) => CustomRender>;
33
+ export type TabsRouteItemRender = WithFalse<(route: AppRouteModule) => CustomRender>;
34
+ export type MenuItemBadgeRender = WithFalse<(meta?: Meta, path?: string) => CustomRender>;
35
+ export type SubMenuItemRender = WithFalse<(props: {
36
+ item: AppRouteModule;
37
+ children?: CustomRender[];
38
+ menuProps?: BaseMenuProps;
39
+ }) => CustomRender>;
40
+ export type MenuContentRender = WithFalse<(props: {
41
+ props: SiderLayoutProps;
42
+ defaultDom: CustomRender;
43
+ }) => CustomRender>;
44
+ export type MenuFooterRender = WithFalse<(props?: SiderLayoutProps) => CustomRender>;
45
+ export type MenuHeaderRender = WithFalse<(props?: SiderLayoutProps) => CustomRender>;
46
+ export type LogoRender = WithFalse<(props: LogoRenderProps) => CustomRender>;
47
+ export type CollapsedIconRender = WithFalse<() => CustomRender>;
48
+ export type CollapsedButtonRender = WithFalse<(collapsed: boolean, dom?: CustomRender) => CustomRender>;
49
+ export type ProSlots = Readonly<{
50
+ pageHeaderRender: () => void;
51
+ menuLinksRender: () => void;
52
+ copyrightRender: () => void;
53
+ appsLogoComponents: () => void;
54
+ siderActionsRender: () => void;
55
+ extraRightDropdownRender: () => void;
56
+ logoRender: (logo: CustomRender, title: CustomRender, props?: LogoContentProps) => void;
57
+ footerRender: (props?: BasicLayoutProps) => void;
58
+ collapsedButtonRender: (collapsed: boolean, dom?: CustomRender) => void;
59
+ menuExtraRender: (props?: SiderLayoutProps) => void;
60
+ menuFooterRender: (props?: HeaderLayoutProps) => void;
61
+ tabsRouteItemRender: (props?: AppRouteModule) => void;
62
+ headerContentRender: (props?: HeaderLayoutProps) => void;
63
+ headerRender: (props: HeaderLayoutProps, defaultDom: CustomRender) => void;
64
+ menuContentRender: (props: SiderLayoutProps, defaultDom: CustomRender) => void;
65
+ subMenuItemRender: (item: AppRouteModule, children?: CustomRender[]) => void;
66
+ menuItemRender: (item: AppRouteModule, title?: CustomRender, icon?: CustomRender) => void;
67
+ breadcrumbRender: (props: {
68
+ route: ProRoute;
69
+ params: any;
70
+ routes: Array<ProRoute>;
71
+ paths: Array<string>;
72
+ }) => void;
73
+ }>;
74
+ export type ProSlotsKeys = keyof ProSlots;
75
+ export declare const siderMenuSlots: (Extract<ProSlotsKeys, 'menuLinksRender' | 'appsLogoComponents' | 'siderActionsRender'>)[];
76
+ export declare const headerSlots: (Extract<ProSlotsKeys, 'appsLogoComponents' | 'extraRightDropdownRender'>)[];
77
+ export declare const defaultSlots: (Extract<ProSlotsKeys, 'menuLinksRender' | 'appsLogoComponents' | 'siderActionsRender' | 'extraRightDropdownRender' | 'pageHeaderRender' | 'copyrightRender'>)[];
78
+ export declare const functionSlots: ProSlotsKeys[];
79
+ export declare const proLayoutSlotsKeys: ("logoRender" | "menuItemRender" | "subMenuItemRender" | "collapsedButtonRender" | "pageHeaderRender" | "breadcrumbRender" | "copyrightRender" | "footerRender" | "headerRender" | "headerContentRender" | "appsLogoComponents" | "extraRightDropdownRender" | "siderActionsRender" | "menuLinksRender" | "menuFooterRender" | "menuContentRender" | "menuExtraRender" | "tabsRouteItemRender")[];
80
+ export type ProLayoutSlotsType = SlotsType<{
81
+ default(): void;
82
+ settingDrawer(): void;
83
+ menuLinksRender(): void;
84
+ copyrightRender(): void;
85
+ pageHeaderRender(): void;
86
+ appsLogoComponents(): void;
87
+ extraRightDropdownRender(): void;
88
+ siderActionsRender(): void;
89
+ collapsedIconRender(): void;
90
+ logoRender(props: LogoRenderProps): void;
91
+ footerRender(props?: BasicLayoutProps): void;
92
+ rightContentRender(props?: HeaderLayoutProps): void;
93
+ tabsRouteItemRender(route: AppRouteModule): void;
94
+ headerRender(props: {
95
+ props: HeaderLayoutProps;
96
+ defaultDom: CustomRender;
97
+ }): void;
98
+ headerContentRender(props?: HeaderLayoutProps): void;
99
+ collapsedButtonRender(collapsed?: boolean): void;
100
+ breadcrumbRender(props: {
101
+ route: ProRoute;
102
+ params: any;
103
+ routes: Array<ProRoute>;
104
+ paths: Array<string>;
105
+ }): void;
106
+ menuHeaderRender(props?: SiderLayoutProps): void;
107
+ menuFooterRender(props?: SiderLayoutProps): void;
108
+ menuContentRender(props: {
109
+ props: SiderLayoutProps;
110
+ defaultDom: CustomRender;
111
+ }): void;
112
+ menuItemRender(props: {
113
+ item: AppRouteModule;
114
+ defaultDom?: CustomRender;
115
+ menuProps?: BaseMenuProps;
116
+ }): void;
117
+ menuTextRender(props: {
118
+ item: AppRouteModule;
119
+ defaultText?: CustomRender;
120
+ menuProps?: BaseMenuProps;
121
+ }): void;
122
+ subMenuItemRender(props: {
123
+ item: AppRouteModule;
124
+ children?: CustomRender[];
125
+ menuProps?: BaseMenuProps;
126
+ }): void;
127
+ }>;
@@ -0,0 +1,65 @@
1
+ import type { CSSProperties, ExtractPropTypes } from 'vue';
2
+ import type { CommonLogoProps } from '../components/LogoContent/props';
3
+ import type { SiderProps } from '../components/SiderMenu/typings';
4
+ import type { ProLayoutConfig } from '../config';
5
+ import type { BaseMenuProps, MenuSemanticName } from './MenuTypings';
6
+ import type { AppRouteModule } from './RouteTypings';
7
+ import type { CollapsedButtonRender, CollapsedIconRender, DefaultRender, HeaderContentRender, HeaderRender, MenuContentRender, MenuFooterRender, RightContentRender } from './SlotsTypings';
8
+ import { basicLayoutProps } from '../props';
9
+ export type SemanticClassNames<Name extends string> = Partial<Record<Name, string>>;
10
+ export type SemanticStyles<Name extends string> = Partial<Record<Name, CSSProperties>>;
11
+ export type LayoutSemanticName = 'root' | 'footer' | 'header' | 'sider' | 'siderChildren' | 'logo' | 'logoImage' | 'content' | 'siderHeader' | 'siderFooter' | MenuSemanticName;
12
+ export type LayoutStylesType = SemanticStyles<LayoutSemanticName>;
13
+ export type LayoutClassNamesType = SemanticClassNames<LayoutSemanticName>;
14
+ export interface CollapsedProps {
15
+ value: boolean;
16
+ position: 'fixed' | 'header' | 'sider';
17
+ width: number;
18
+ mouseDistance?: number;
19
+ disabledInnerCollapse?: boolean;
20
+ onCollapse: (collapsed: boolean) => void;
21
+ collapsedIconRender: CollapsedIconRender;
22
+ collapsedButtonRender: CollapsedButtonRender;
23
+ }
24
+ export interface CommonLayoutProps extends CommonLogoProps {
25
+ loading: boolean;
26
+ appLogoListRender: DefaultRender;
27
+ }
28
+ export interface SiderLayoutProps extends BaseMenuProps, CommonLayoutProps, ProLayoutConfig {
29
+ suppressSiderWhenMenuEmpty: boolean;
30
+ breakpoint: SiderProps['breakpoint'] | false;
31
+ menuLinksRender: DefaultRender;
32
+ menuFooterRender: MenuFooterRender;
33
+ menuContentRender: MenuContentRender;
34
+ siderActionsRender: DefaultRender;
35
+ }
36
+ export interface HeaderLayoutProps extends BaseMenuProps, CommonLayoutProps {
37
+ autoHideHeader: boolean;
38
+ headerMainWidth: number;
39
+ menuRender: HeaderRender;
40
+ headerRender: HeaderRender;
41
+ headerContentRender: HeaderContentRender;
42
+ rightContentRender: RightContentRender;
43
+ extraRightDropdownRender: DefaultRender;
44
+ }
45
+ export interface LayoutContext {
46
+ isWide: boolean;
47
+ hasSilder: boolean;
48
+ siderWidth: string | number;
49
+ headerHeight: string | number;
50
+ }
51
+ export type BasicLayoutProps = Partial<ExtractPropTypes<typeof basicLayoutProps>> & {
52
+ settings: ProLayoutConfig;
53
+ };
54
+ export interface ProLayoutExpose {
55
+ tabsComRef: () => TabsComExpose;
56
+ }
57
+ export interface TabsComExpose {
58
+ clean: () => void;
59
+ close: (name: AppRouteModule['name'], callback?: (row: AppRouteModule) => void) => void;
60
+ change: (record: AppRouteModule, { type, addType, params }: {
61
+ type: 'add' | 'merge' | 'remove';
62
+ addType?: 'push' | 'unshift';
63
+ params: Partial<AppRouteModule>;
64
+ }) => void;
65
+ }
@@ -1,41 +1,3 @@
1
- import type { AppRouteModule } from '../route';
2
- import type { ThemeConfig } from '@gx-design-vue/pro-provider';
3
- export { default as isUrl } from './isUrl';
4
- export { default as isImg } from './isImg';
5
- export * from './coverToNewToken';
6
- export * from './animate';
7
- export declare function clearMenuItem(menusData: AppRouteModule[]): AppRouteModule[];
8
- export declare function flatMap(menusData: AppRouteModule[]): AppRouteModule[];
9
- export declare function getMenuFirstChildren(menus: AppRouteModule[], key?: string): AppRouteModule[];
10
- export declare function getMenuFirstLastChildPath(data: AppRouteModule[]): string;
11
- export declare function handleThemeConfig(config: ThemeConfig): {
12
- theme: import("@gx-design-vue/pro-provider").ThemeType | undefined;
13
- layout: "side" | "mix" | "simple" | "wide";
14
- splitMenus: boolean;
15
- fixedMultiTab: boolean;
16
- fixedHeader: boolean;
17
- fixSiderbar: boolean;
18
- showProgressBar: boolean;
19
- showTabsBar: boolean;
20
- showFullScreen?: boolean | undefined;
21
- headerHeight?: number | undefined;
22
- wideWidth?: number | undefined;
23
- autoHideHeader: boolean;
24
- title: string;
25
- colorWeak?: boolean | undefined;
26
- iconfontUrl?: string | undefined;
27
- animate?: {
28
- disabled?: boolean | undefined;
29
- name: string;
30
- direction: string;
31
- } | undefined;
32
- primaryColor: string;
33
- };
34
- export declare function checkThemeStatus(config: Partial<ThemeConfig>): ThemeConfig;
35
- export type StringKeyOf<T> = Extract<keyof T, string>;
36
- /**
37
- * Creates an object composed of the picked object properties.
38
- * @param obj The source object
39
- * @param paths The property paths to pick
40
- */
41
- export declare function pick<T, K extends keyof T>(obj: T, paths: K[]): Pick<T, K>;
1
+ export * from './menu';
2
+ export * from './style';
3
+ export declare function removeDuplicatesByName<T>(array: T[], key: keyof T): T[];
@@ -0,0 +1,24 @@
1
+ import type { RecordType } from '@gx-design-vue/pro-utils';
2
+ import type { AppRouteModule } from '../types/RouteTypings';
3
+ export interface MenuData {
4
+ menuData: AppRouteModule[];
5
+ flatMenus: AppRouteModule[];
6
+ breadcrumb: RecordType;
7
+ menuMap: Map<AppRouteModule['name'], AppRouteModule>;
8
+ }
9
+ export declare function handlePathKey(record: AppRouteModule): string;
10
+ export declare const getMenuData: (routes: AppRouteModule[]) => MenuData;
11
+ export declare function clearMenuItem(menusData: AppRouteModule[]): AppRouteModule[];
12
+ export declare function flatMap(menusData: AppRouteModule[]): AppRouteModule[];
13
+ export declare function getMenuFirstChildren(menus: AppRouteModule[], key?: string): AppRouteModule[];
14
+ export declare function getLastPath(data: AppRouteModule[]): string;
15
+ export declare function findLastKey(tree: AppRouteModule[], targetKey: string): string | undefined;
16
+ export declare function getMatchedList({ menuData, flatMenus, menuMap }: {
17
+ menuData: AppRouteModule[];
18
+ flatMenus: AppRouteModule[];
19
+ menuMap?: MenuData['menuMap'];
20
+ }, { path, name }: {
21
+ path: string;
22
+ name: AppRouteModule['name'];
23
+ }): AppRouteModule[];
24
+ export declare function filterTree(tree: AppRouteModule[], filterFn: (node: AppRouteModule) => boolean): AppRouteModule[];