@keyblade/pro-components 1.14.4 → 1.15.0-alpha.10

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.
@@ -0,0 +1,66 @@
1
+ import { IProMenuItem } from '../pro-menu';
2
+ import { ProLayoutMenuType, ProLayoutMode } from './enum.ts';
3
+ export interface IProLayoutHeaderProps {
4
+ /** 类名前缀 */
5
+ prefixClsName?: string;
6
+ /** 是否隐藏头部 */
7
+ hideHeader?: boolean;
8
+ /** 侧边栏是否收缩 */
9
+ siderCollapsed?: boolean;
10
+ layout?: ProLayoutMode;
11
+ logo?: string;
12
+ title?: string;
13
+ topMenuItems?: IProMenuItem[];
14
+ topMenuSelectedKeys?: string[];
15
+ topMenuOpenKeys?: string[];
16
+ menuProps?: Record<string, unknown>;
17
+ /** 头部高度 */
18
+ headerHeight?: number;
19
+ /** 侧边栏宽度 */
20
+ siderWidth?: number;
21
+ /** 侧边栏收缩宽度 */
22
+ siderCollapsedWidth?: number;
23
+ }
24
+ declare function __VLS_template(): {
25
+ attrs: Partial<{}>;
26
+ slots: {
27
+ 'header-left'?(_: {}): any;
28
+ 'header-left-logo-img'?(_: {}): any;
29
+ 'header-left-logo-title'?(_: {}): any;
30
+ 'header-center-left'?(_: {}): any;
31
+ 'header-center-center'?(_: {}): any;
32
+ 'header-center-right'?(_: {}): any;
33
+ 'header-right'?(_: {}): any;
34
+ };
35
+ refs: {};
36
+ rootEl: any;
37
+ };
38
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
39
+ declare const __VLS_component: import('vue').DefineComponent<IProLayoutHeaderProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
40
+ menuItemClick: (type: ProLayoutMenuType, item: IProMenuItem) => any;
41
+ openKeysChange: (type: ProLayoutMenuType, keys: string[]) => any;
42
+ }, string, import('vue').PublicProps, Readonly<IProLayoutHeaderProps> & Readonly<{
43
+ onMenuItemClick?: ((type: ProLayoutMenuType, item: IProMenuItem) => any) | undefined;
44
+ onOpenKeysChange?: ((type: ProLayoutMenuType, keys: string[]) => any) | undefined;
45
+ }>, {
46
+ layout: ProLayoutMode;
47
+ prefixClsName: string;
48
+ title: string;
49
+ menuProps: Record<string, unknown>;
50
+ hideHeader: boolean;
51
+ siderCollapsed: boolean;
52
+ logo: string;
53
+ topMenuItems: IProMenuItem[];
54
+ topMenuSelectedKeys: string[];
55
+ topMenuOpenKeys: string[];
56
+ headerHeight: number;
57
+ siderWidth: number;
58
+ siderCollapsedWidth: number;
59
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
60
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
61
+ export default _default;
62
+ type __VLS_WithTemplateSlots<T, S> = T & {
63
+ new (): {
64
+ $slots: S;
65
+ };
66
+ };
@@ -0,0 +1,104 @@
1
+ import { defineComponent as v, useCssVars as K, computed as d, createBlock as m, createCommentVNode as s, openBlock as o, unref as i, normalizeClass as l, withCtx as n, createElementVNode as a, renderSlot as t, createElementBlock as p, Fragment as h, createVNode as f, createTextVNode as H, toDisplayString as I } from "vue";
2
+ import { LayoutHeader as P, Space as S, TypographyTitle as W } from "@arco-design/web-vue";
3
+ import b from "../pro-menu/pro-menu.vue.js";
4
+ /* empty css */
5
+ import { ProLayoutMode as B, ProLayoutMenuType as y } from "./enum.js";
6
+ const V = ["src"], D = /* @__PURE__ */ v({
7
+ __name: "pro-layout-header",
8
+ props: {
9
+ prefixClsName: { default: "keyblade-pro-layout" },
10
+ hideHeader: { type: Boolean, default: !1 },
11
+ siderCollapsed: { type: Boolean, default: !1 },
12
+ layout: { default: B.mix },
13
+ logo: { default: "" },
14
+ title: { default: "" },
15
+ topMenuItems: { default: () => [] },
16
+ topMenuSelectedKeys: { default: () => [] },
17
+ topMenuOpenKeys: { default: () => [] },
18
+ menuProps: { default: () => ({}) },
19
+ headerHeight: { default: 60 },
20
+ siderWidth: { default: 220 },
21
+ siderCollapsedWidth: { default: 48 }
22
+ },
23
+ emits: ["menuItemClick", "openKeysChange"],
24
+ setup(c, { emit: g }) {
25
+ K((e) => ({
26
+ "611b89eb": k.value,
27
+ c99dc91a: N.value,
28
+ "65d3bcb2": M.value
29
+ }));
30
+ const r = c, u = g, C = (e) => {
31
+ u("menuItemClick", y.top, e);
32
+ }, $ = (e) => {
33
+ u("openKeysChange", y.side, e);
34
+ }, k = d(() => `${r.headerHeight}px`), N = d(() => `${r.siderWidth}px`), M = d(() => `${r.siderCollapsedWidth}px`);
35
+ return (e, T) => e.hideHeader ? s("", !0) : (o(), m(i(P), {
36
+ key: 0,
37
+ class: l([`${e.prefixClsName}-header`, { [`${e.prefixClsName}-header-collapsed`]: e.siderCollapsed }])
38
+ }, {
39
+ default: n(() => [
40
+ a("div", {
41
+ class: l(`${e.prefixClsName}-header-left`)
42
+ }, [
43
+ e.$slots["header-left"] ? t(e.$slots, "header-left", { key: 0 }) : (o(), p(h, { key: 1 }, [
44
+ e.layout !== "side" ? (o(), p("div", {
45
+ key: 0,
46
+ class: l(`${e.prefixClsName}-header-left-logo`)
47
+ }, [
48
+ f(i(S), null, {
49
+ default: n(() => [
50
+ t(e.$slots, "header-left-logo-img", {}, () => [
51
+ a("img", {
52
+ class: l(`${e.prefixClsName}-header-left-logo-img`),
53
+ alt: "logo",
54
+ src: e.logo
55
+ }, null, 10, V)
56
+ ]),
57
+ e.siderCollapsed ? s("", !0) : t(e.$slots, "header-left-logo-title", { key: 0 }, () => [
58
+ f(i(W), {
59
+ class: l(`${e.prefixClsName}-header-left-logo-title`),
60
+ heading: 5
61
+ }, {
62
+ default: n(() => [
63
+ H(I(e.title), 1)
64
+ ]),
65
+ _: 1
66
+ }, 8, ["class"])
67
+ ])
68
+ ]),
69
+ _: 3
70
+ })
71
+ ], 2)) : s("", !0)
72
+ ], 64))
73
+ ], 2),
74
+ a("div", {
75
+ class: l(`${e.prefixClsName}-header-center`)
76
+ }, [
77
+ e.$slots["header-center-left"] ? t(e.$slots, "header-center-left", { key: 0 }) : s("", !0),
78
+ e.topMenuItems.length > 0 ? (o(), m(b, {
79
+ key: 1,
80
+ mode: "horizontal",
81
+ "selected-keys": e.topMenuSelectedKeys,
82
+ "open-keys": e.topMenuOpenKeys,
83
+ items: e.topMenuItems,
84
+ "menu-props": e.menuProps,
85
+ onMenuItemClick: C,
86
+ onOpenKeysChange: $
87
+ }, null, 8, ["selected-keys", "open-keys", "items", "menu-props"])) : (o(), p(h, { key: 2 }, [
88
+ e.$slots["header-center-center"] ? t(e.$slots, "header-center-center", { key: 0 }) : s("", !0)
89
+ ], 64)),
90
+ e.$slots["header-center-right"] ? t(e.$slots, "header-center-right", { key: 3 }) : s("", !0)
91
+ ], 2),
92
+ a("div", {
93
+ class: l(`${e.prefixClsName}-header-right`)
94
+ }, [
95
+ t(e.$slots, "header-right")
96
+ ], 2)
97
+ ]),
98
+ _: 3
99
+ }, 8, ["class"]));
100
+ }
101
+ });
102
+ export {
103
+ D as default
104
+ };
@@ -0,0 +1,5 @@
1
+ import o from "./pro-layout-header.vue.js";
2
+ /* empty css */
3
+ export {
4
+ o as default
5
+ };
@@ -31,16 +31,20 @@ declare const __VLS_component: import('vue').DefineComponent<IProLayoutProps, {}
31
31
  tabsHeaderPadding: boolean;
32
32
  menuProps: Partial<import('@arco-design/web-vue/es/menu/interface').MenuProps>;
33
33
  hideHeader: boolean;
34
- hiderSider: boolean;
35
- headerHeight: number;
34
+ siderCollapsed: boolean;
36
35
  logo: string;
36
+ headerHeight: number;
37
37
  siderWidth: number;
38
+ hiderSider: boolean;
38
39
  siderBreakpoint: "xxl" | "xl" | "lg" | "md" | "sm" | "xs";
39
- siderCollapsed: boolean;
40
40
  menuItems: import('../index.ts').IProMenuItem[];
41
41
  footerTitle: string;
42
42
  hideFooter: boolean;
43
43
  hideTabs: boolean;
44
+ cacheTabs: {
45
+ enable?: boolean;
46
+ autoRemove?: boolean;
47
+ };
44
48
  disableKeepAlive: boolean;
45
49
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
46
50
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
@@ -1,17 +1,19 @@
1
- import { defineComponent as X, useCssVars as Y, ref as w, useSlots as Z, computed as _, provide as C, onMounted as x, watch as D, createBlock as n, openBlock as s, unref as e, normalizeClass as o, withCtx as a, createCommentVNode as d, createVNode as u, createElementVNode as y, renderSlot as p, createElementBlock as h, Fragment as k, createTextVNode as T, toDisplayString as P } from "vue";
2
- import { Layout as B, LayoutHeader as ee, Space as F, TypographyTitle as N, LayoutSider as le, Button as te, Affix as oe, LayoutContent as se, LayoutFooter as ae } from "@arco-design/web-vue";
1
+ import { defineComponent as J, useCssVars as Q, ref as K, useSlots as X, computed as Y, provide as g, onMounted as Z, watch as w, createBlock as u, openBlock as a, unref as e, normalizeClass as d, withCtx as o, createVNode as p, createSlots as _, renderSlot as i, createCommentVNode as f, createElementVNode as W, createElementBlock as k, Fragment as A, createTextVNode as z, toDisplayString as L } from "vue";
2
+ import { Layout as b, LayoutSider as x, Space as ee, TypographyTitle as te, Button as oe, Affix as le, LayoutContent as ae, LayoutFooter as se } from "@arco-design/web-vue";
3
3
  import { IconMenuUnfold as de, IconMenuFold as re } from "@arco-design/web-vue/es/icon";
4
4
  import ie from "../pro-keep-alive-router-view/pro-keep-alive-router-view.vue.js";
5
5
  import ne from "../pro-reuse-tabs/pro-reuse-tabs.vue.js";
6
6
  /* empty css */
7
- import O from "../pro-menu/pro-menu.vue.js";
7
+ import ue from "../pro-menu/pro-menu.vue.js";
8
8
  /* empty css */
9
- import { useHooks as ue } from "./hooks.js";
10
- import { ProLayoutMode as pe, ProLayoutMenuType as g } from "./enum.js";
11
- const fe = ["src"], me = ["src"], t = "keyblade-pro-layout", ce = 48, Be = /* @__PURE__ */ X({
9
+ import pe from "./pro-layout-header.vue.js";
10
+ /* empty css */
11
+ import { useHooks as me } from "./hooks.js";
12
+ import { ProLayoutMode as fe, ProLayoutMenuType as O } from "./enum.js";
13
+ const he = ["src"], l = "keyblade-pro-layout", D = 48, Be = /* @__PURE__ */ J({
12
14
  __name: "pro-layout",
13
15
  props: {
14
- layout: { default: pe.mix },
16
+ layout: { default: fe.mix },
15
17
  hideHeader: { type: Boolean, default: !1 },
16
18
  hiderSider: { type: Boolean, default: !1 },
17
19
  headerHeight: { default: 60 },
@@ -28,221 +30,224 @@ const fe = ["src"], me = ["src"], t = "keyblade-pro-layout", ce = 48, Be = /* @_
28
30
  tabsSize: { default: "small" },
29
31
  tabsType: { default: "rounded" },
30
32
  tabsHeaderPadding: { type: Boolean, default: !0 },
33
+ cacheTabs: { default: () => ({ enable: !1, autoRemove: !1 }) },
31
34
  disableKeepAlive: { type: Boolean, default: !1 },
32
35
  onMenuItemClick: {}
33
36
  },
34
37
  emits: {
35
38
  /** 收缩事件 */
36
- collapse: (b) => !0,
39
+ collapse: (c) => !0,
37
40
  /** keepAlive改变事件 */
38
- keepAliveIncludeChange: (b) => !0
41
+ keepAliveIncludeChange: (c) => !0
39
42
  },
40
- setup(b, { emit: V }) {
41
- Y((l) => ({
42
- "60f0bf10": L.value,
43
- "30e69946": J,
44
- "6cb36c08": Q
43
+ setup(c, { emit: F }) {
44
+ Q((t) => ({
45
+ "077257d0": S.value,
46
+ "155d1ac6": q,
47
+ "7931d4c8": G
45
48
  }));
46
- const f = b, I = V, c = Z(), M = _(() => f.hiderSider || $.value.length > 0 && H.value.length === 0), {
49
+ const n = c, v = F, r = X(), C = Y(() => n.hiderSider || $.value.length > 0 && T.value.length === 0), {
47
50
  topMenuItems: $,
48
- siderMenuItems: H,
49
- topMenuSelectedKeys: E,
50
- siderMenuSelectedKeys: R,
51
- topMenuOpenKeys: U,
52
- siderMenuOpenKeys: j,
53
- breadcrumbItems: q,
54
- tabs: S,
55
- keepAliveInclude: v,
56
- onProMenuItemClick: K,
57
- onProMenuOpenKeysChange: z,
58
- onTabClick: G,
59
- onTabDelete: A
60
- } = ue(f);
61
- C("ProBreadcrumbItems", q), C("ProKeepAliveInclude", v), C("onProReuseTabDelete", A);
62
- const L = w(`${f.headerHeight}px`), J = `${f.siderWidth}px`, Q = `${ce}px`, r = w(f.siderCollapsed), W = (l) => {
63
- r.value = l, I("collapse", l);
51
+ siderMenuItems: T,
52
+ topMenuSelectedKeys: N,
53
+ siderMenuSelectedKeys: V,
54
+ topMenuOpenKeys: E,
55
+ siderMenuOpenKeys: R,
56
+ breadcrumbItems: U,
57
+ tabs: I,
58
+ keepAliveInclude: y,
59
+ onProMenuItemClick: M,
60
+ onProMenuOpenKeysChange: P,
61
+ onTabClick: j,
62
+ onTabDelete: B
63
+ } = me(n);
64
+ g("ProBreadcrumbItems", U), g("ProKeepAliveInclude", y), g("onProReuseTabDelete", B);
65
+ const S = K(`${n.headerHeight}px`), q = `${n.siderWidth}px`, G = `${D}px`, s = K(n.siderCollapsed), H = (t) => {
66
+ s.value = t, v("collapse", t);
64
67
  };
65
- return x(() => {
66
- f.hideHeader && (L.value = "0px");
67
- }), D(() => f.siderCollapsed, () => {
68
- r.value = f.siderCollapsed;
69
- }, { immediate: !0 }), D(v, () => {
70
- I("keepAliveIncludeChange", v.value);
71
- }, { immediate: !0 }), (l, i) => (s(), n(e(B), {
72
- class: o([t, `${t}-${l.layout}`])
68
+ return Z(() => {
69
+ n.hideHeader && (S.value = "0px");
70
+ }), w(() => n.siderCollapsed, () => {
71
+ s.value = n.siderCollapsed;
72
+ }, { immediate: !0 }), w(y, () => {
73
+ v("keepAliveIncludeChange", y.value);
74
+ }, { immediate: !0 }), (t, m) => (a(), u(e(b), {
75
+ class: d([l, `${l}-${t.layout}`])
73
76
  }, {
74
- default: a(() => [
75
- l.hideHeader ? d("", !0) : (s(), n(e(ee), {
76
- key: 0,
77
- class: o([`${t}-header`, { [`${t}-header-collapsed`]: r.value }])
78
- }, {
79
- default: a(() => [
80
- y("div", {
81
- class: o(`${t}-header-left`)
82
- }, [
83
- e(c)["header-left"] ? p(l.$slots, "header-left", { key: 0 }) : (s(), h(k, { key: 1 }, [
84
- l.layout !== "side" ? (s(), h("div", {
85
- key: 0,
86
- class: o(`${t}-header-left-logo`)
87
- }, [
88
- u(e(F), null, {
89
- default: a(() => [
90
- p(l.$slots, "header-left-logo-img", {}, () => [
91
- y("img", {
92
- class: o(`${t}-header-left-logo-img`),
93
- alt: "logo",
94
- src: l.logo
95
- }, null, 10, fe)
96
- ]),
97
- r.value ? d("", !0) : p(l.$slots, "header-left-logo-title", { key: 0 }, () => [
98
- u(e(N), {
99
- class: o(`${t}-header-left-logo-title`),
100
- heading: 5
101
- }, {
102
- default: a(() => [
103
- T(P(l.title), 1)
104
- ]),
105
- _: 1
106
- }, 8, ["class"])
107
- ])
108
- ]),
109
- _: 3
110
- })
111
- ], 2)) : d("", !0)
112
- ], 64))
113
- ], 2),
114
- y("div", {
115
- class: o(`${t}-header-center`)
116
- }, [
117
- e(c)["header-center-left"] ? p(l.$slots, "header-center-left", { key: 0 }) : d("", !0),
118
- e($).length > 0 ? (s(), n(O, {
119
- key: 1,
120
- mode: "horizontal",
121
- "selected-keys": e(E),
122
- "open-keys": e(U),
123
- items: e($),
124
- "menu-props": l.menuProps,
125
- onMenuItemClick: i[0] || (i[0] = (m) => e(K)(e(g).top, m)),
126
- onOpenKeysChange: i[1] || (i[1] = (m) => e(z)(e(g).side, m))
127
- }, null, 8, ["selected-keys", "open-keys", "items", "menu-props"])) : (s(), h(k, { key: 2 }, [
128
- e(c)["header-center-center"] ? p(l.$slots, "header-center-center", { key: 0 }) : d("", !0)
129
- ], 64)),
130
- e(c)["header-center-right"] ? p(l.$slots, "header-center-right", { key: 3 }) : d("", !0)
131
- ], 2),
132
- y("div", {
133
- class: o(`${t}-header-right`)
134
- }, [
135
- p(l.$slots, "header-right")
136
- ], 2)
137
- ]),
138
- _: 3
139
- }, 8, ["class"])),
140
- u(e(B), null, {
141
- default: a(() => [
142
- M.value ? d("", !0) : (s(), n(e(le), {
77
+ default: o(() => [
78
+ p(pe, {
79
+ "prefix-cls-name": l,
80
+ "hide-header": t.hideHeader,
81
+ "sider-collapsed": s.value,
82
+ layout: t.layout,
83
+ logo: t.logo,
84
+ title: t.title,
85
+ "top-menu-items": e($),
86
+ "top-menu-selected-keys": e(N),
87
+ "top-menu-open-keys": e(E),
88
+ "menu-props": t.menuProps,
89
+ "header-height": t.headerHeight,
90
+ "sider-width": t.siderWidth,
91
+ "sider-collapsed-width": D,
92
+ onMenuItemClick: e(M),
93
+ onOpenKeysChange: e(P)
94
+ }, _({ _: 2 }, [
95
+ e(r)["header-left"] ? {
96
+ name: "header-left",
97
+ fn: o(() => [
98
+ i(t.$slots, "header-left")
99
+ ]),
100
+ key: "0"
101
+ } : void 0,
102
+ e(r)["header-left-logo-img"] ? {
103
+ name: "header-left-logo-img",
104
+ fn: o(() => [
105
+ i(t.$slots, "header-left-logo-img")
106
+ ]),
107
+ key: "1"
108
+ } : void 0,
109
+ e(r)["header-left-logo-title"] ? {
110
+ name: "header-left-logo-title",
111
+ fn: o(() => [
112
+ i(t.$slots, "header-left-logo-title")
113
+ ]),
114
+ key: "2"
115
+ } : void 0,
116
+ e(r)["header-center-left"] ? {
117
+ name: "header-center-left",
118
+ fn: o(() => [
119
+ i(t.$slots, "header-center-left")
120
+ ]),
121
+ key: "3"
122
+ } : void 0,
123
+ e(r)["header-center-center"] ? {
124
+ name: "header-center-center",
125
+ fn: o(() => [
126
+ i(t.$slots, "header-center-center")
127
+ ]),
128
+ key: "4"
129
+ } : void 0,
130
+ e(r)["header-center-right"] ? {
131
+ name: "header-center-right",
132
+ fn: o(() => [
133
+ i(t.$slots, "header-center-right")
134
+ ]),
135
+ key: "5"
136
+ } : void 0,
137
+ e(r)["header-right"] ? {
138
+ name: "header-right",
139
+ fn: o(() => [
140
+ i(t.$slots, "header-right")
141
+ ]),
142
+ key: "6"
143
+ } : void 0
144
+ ]), 1032, ["hide-header", "sider-collapsed", "layout", "logo", "title", "top-menu-items", "top-menu-selected-keys", "top-menu-open-keys", "menu-props", "header-height", "sider-width", "onMenuItemClick", "onOpenKeysChange"]),
145
+ p(e(b), null, {
146
+ default: o(() => [
147
+ C.value ? f("", !0) : (a(), u(e(x), {
143
148
  key: 0,
144
- class: o([`${t}-sider`, { [`${t}-sider-collapsed`]: r.value }]),
145
- width: l.siderWidth,
149
+ class: d([`${l}-sider`, { [`${l}-sider-collapsed`]: s.value }]),
150
+ width: t.siderWidth,
146
151
  collapsible: !0,
147
- breakpoint: l.siderBreakpoint,
148
- collapsed: r.value,
152
+ breakpoint: t.siderBreakpoint,
153
+ collapsed: s.value,
149
154
  "hide-trigger": !0,
150
- onCollapse: W
155
+ onCollapse: H
151
156
  }, {
152
- default: a(() => [
153
- y("div", {
154
- class: o(`${t}-sider-content`)
157
+ default: o(() => [
158
+ W("div", {
159
+ class: d(`${l}-sider-content`)
155
160
  }, [
156
- e(c)["sider-top"] ? p(l.$slots, "sider-top", { key: 0 }) : (s(), h(k, { key: 1 }, [
157
- l.layout === "side" ? (s(), h("div", {
161
+ e(r)["sider-top"] ? i(t.$slots, "sider-top", { key: 0 }) : (a(), k(A, { key: 1 }, [
162
+ t.layout === "side" ? (a(), k("div", {
158
163
  key: 0,
159
- class: o(`${t}-sider-content-logo`)
164
+ class: d(`${l}-sider-content-logo`)
160
165
  }, [
161
- u(e(F), null, {
162
- default: a(() => [
163
- y("img", {
164
- class: o(`${t}-sider-content-logo-img`),
166
+ p(e(ee), null, {
167
+ default: o(() => [
168
+ W("img", {
169
+ class: d(`${l}-sider-content-logo-img`),
165
170
  alt: "logo",
166
- src: l.logo
167
- }, null, 10, me),
168
- r.value ? d("", !0) : (s(), n(e(N), {
171
+ src: t.logo
172
+ }, null, 10, he),
173
+ s.value ? f("", !0) : (a(), u(e(te), {
169
174
  key: 0,
170
- class: o(`${t}-sider-content-logo-title`),
175
+ class: d(`${l}-sider-content-logo-title`),
171
176
  heading: 5
172
177
  }, {
173
- default: a(() => [
174
- T(P(l.title), 1)
178
+ default: o(() => [
179
+ z(L(t.title), 1)
175
180
  ]),
176
181
  _: 1
177
182
  }, 8, ["class"]))
178
183
  ]),
179
184
  _: 1
180
185
  })
181
- ], 2)) : d("", !0)
186
+ ], 2)) : f("", !0)
182
187
  ], 64)),
183
- u(O, {
188
+ p(ue, {
184
189
  mode: "vertical",
185
- collapsed: r.value,
186
- "selected-keys": e(R),
187
- "open-keys": e(j),
188
- items: e(H),
189
- "menu-props": l.menuProps,
190
- onMenuItemClick: i[2] || (i[2] = (m) => e(K)(e(g).side, m)),
191
- onOpenKeysChange: i[3] || (i[3] = (m) => e(z)(e(g).side, m))
190
+ collapsed: s.value,
191
+ "selected-keys": e(V),
192
+ "open-keys": e(R),
193
+ items: e(T),
194
+ "menu-props": t.menuProps,
195
+ onMenuItemClick: m[0] || (m[0] = (h) => e(M)(e(O).side, h)),
196
+ onOpenKeysChange: m[1] || (m[1] = (h) => e(P)(e(O).side, h))
192
197
  }, null, 8, ["collapsed", "selected-keys", "open-keys", "items", "menu-props"])
193
198
  ], 2),
194
- u(e(te), {
195
- class: o(`${t}-sider-collapse-btn`),
199
+ p(e(oe), {
200
+ class: d(`${l}-sider-collapse-btn`),
196
201
  size: "mini",
197
- onClick: i[4] || (i[4] = (m) => W(!r.value))
202
+ onClick: m[2] || (m[2] = (h) => H(!s.value))
198
203
  }, {
199
- icon: a(() => [
200
- r.value ? (s(), n(e(de), { key: 0 })) : (s(), n(e(re), { key: 1 }))
204
+ icon: o(() => [
205
+ s.value ? (a(), u(e(de), { key: 0 })) : (a(), u(e(re), { key: 1 }))
201
206
  ]),
202
207
  _: 1
203
208
  }, 8, ["class"])
204
209
  ]),
205
210
  _: 3
206
211
  }, 8, ["class", "width", "breakpoint", "collapsed"])),
207
- u(e(B), {
208
- class: o([
209
- `${t}-body`,
210
- { [`${t}-body-hide-sider`]: M.value },
211
- { [`${t}-body-collapsed`]: r.value }
212
+ p(e(b), {
213
+ class: d([
214
+ `${l}-body`,
215
+ { [`${l}-body-hide-sider`]: C.value },
216
+ { [`${l}-body-collapsed`]: s.value }
212
217
  ])
213
218
  }, {
214
- default: a(() => [
215
- l.hideTabs ? d("", !0) : (s(), n(e(oe), {
219
+ default: o(() => [
220
+ t.hideTabs ? f("", !0) : (a(), u(e(le), {
216
221
  key: 0,
217
- class: o(`${t}-body-affix`),
218
- offsetTop: l.hideHeader ? 0 : l.headerHeight
222
+ class: d(`${l}-body-affix`),
223
+ offsetTop: t.hideHeader ? 0 : t.headerHeight
219
224
  }, {
220
- default: a(() => [
221
- e(S).length > 0 ? (s(), n(ne, {
225
+ default: o(() => [
226
+ e(I).length > 0 ? (a(), u(ne, {
222
227
  key: 0,
223
- tabs: e(S),
224
- "tabs-size": l.tabsSize,
225
- "tabs-type": l.tabsType,
226
- "tabs-header-padding": l.tabsHeaderPadding,
227
- onTabClick: e(G),
228
- onTabDelete: e(A)
229
- }, null, 8, ["tabs", "tabs-size", "tabs-type", "tabs-header-padding", "onTabClick", "onTabDelete"])) : d("", !0)
228
+ tabs: e(I),
229
+ "tabs-size": t.tabsSize,
230
+ "tabs-type": t.tabsType,
231
+ "tabs-header-padding": t.tabsHeaderPadding,
232
+ onTabClick: e(j),
233
+ onTabDelete: e(B)
234
+ }, null, 8, ["tabs", "tabs-size", "tabs-type", "tabs-header-padding", "onTabClick", "onTabDelete"])) : f("", !0)
230
235
  ]),
231
236
  _: 1
232
237
  }, 8, ["class", "offsetTop"])),
233
- u(e(se), null, {
234
- default: a(() => [
235
- u(ie)
238
+ p(e(ae), null, {
239
+ default: o(() => [
240
+ p(ie)
236
241
  ]),
237
242
  _: 1
238
243
  }),
239
- l.hideFooter ? d("", !0) : (s(), h(k, { key: 1 }, [
240
- e(c).footer !== void 0 ? p(l.$slots, "footer", { key: 0 }) : (s(), n(e(ae), {
244
+ t.hideFooter ? f("", !0) : (a(), k(A, { key: 1 }, [
245
+ e(r).footer !== void 0 ? i(t.$slots, "footer", { key: 0 }) : (a(), u(e(se), {
241
246
  key: 1,
242
- class: o(`${t}-body-footer`)
247
+ class: d(`${l}-body-footer`)
243
248
  }, {
244
- default: a(() => [
245
- T(P(l.footerTitle), 1)
249
+ default: o(() => [
250
+ z(L(t.footerTitle), 1)
246
251
  ]),
247
252
  _: 1
248
253
  }, 8, ["class"]))
@@ -72,6 +72,15 @@ export interface IProLayoutProps {
72
72
  * tabs头部间距
73
73
  */
74
74
  tabsHeaderPadding?: boolean;
75
+ /**
76
+ * 是否缓存tabs(刷新页面会保存浏览记录)
77
+ */
78
+ cacheTabs?: {
79
+ /** 是否开启缓存 */
80
+ enable?: boolean;
81
+ /** 开启缓存后,是否自动删除,开启后,使用缓存数据后立即删除,否则同一浏览器标签期间一直存在 */
82
+ autoRemove?: boolean;
83
+ };
75
84
  /**
76
85
  * 禁用全局路由缓存
77
86
  */