mamba-layout 0.8.0 → 0.10.0
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/index.css +1 -0
- package/dist/index.js.js +2562 -0
- package/dist/layout/components/index.d.ts +2 -0
- package/package.json +1 -1
- package/dist/_virtual/_plugin-vue_export-helper.js +0 -9
- package/dist/assets/logo.png.js +0 -4
- package/dist/components/UserAvatar/index.js +0 -5
- package/dist/components/UserAvatar/src/UserAvatar.css +0 -1
- package/dist/components/UserAvatar/src/UserAvatar.vue.js +0 -7
- package/dist/components/UserAvatar/src/UserAvatar.vue2.js +0 -61
- package/dist/components/index.js +0 -10
- package/dist/index.js +0 -27
- package/dist/layout/BaseLayout.css +0 -1
- package/dist/layout/BaseLayout.vue.js +0 -7
- package/dist/layout/BaseLayout.vue2.js +0 -111
- package/dist/layout/components/AppSelect.css +0 -1
- package/dist/layout/components/AppSelect.vue.js +0 -7
- package/dist/layout/components/AppSelect.vue2.js +0 -69
- package/dist/layout/components/AsideBar.css +0 -1
- package/dist/layout/components/AsideBar.vue.js +0 -7
- package/dist/layout/components/AsideBar.vue2.js +0 -49
- package/dist/layout/components/AsideSubMenuItem.vue.js +0 -84
- package/dist/layout/components/AsideSubMenuItem.vue2.js +0 -4
- package/dist/layout/components/AsideSubMenus.vue.js +0 -36
- package/dist/layout/components/AsideSubMenus.vue2.js +0 -4
- package/dist/layout/components/HeaderBar.css +0 -1
- package/dist/layout/components/HeaderBar.vue.js +0 -7
- package/dist/layout/components/HeaderBar.vue2.js +0 -55
- package/dist/layout/components/LanguageSelect.css +0 -1
- package/dist/layout/components/LanguageSelect.vue.js +0 -8
- package/dist/layout/components/LanguageSelect.vue2.js +0 -100
- package/dist/layout/components/LanguageSelect2.css +0 -1
- package/dist/layout/components/LayoutBreadcrumb.css +0 -1
- package/dist/layout/components/LayoutBreadcrumb.vue.js +0 -7
- package/dist/layout/components/LayoutBreadcrumb.vue2.js +0 -189
- package/dist/layout/components/MenuItemIcon.css +0 -1
- package/dist/layout/components/MenuItemIcon.vue.js +0 -7
- package/dist/layout/components/MenuItemIcon.vue2.js +0 -23
- package/dist/layout/components/NavIconBtn.css +0 -1
- package/dist/layout/components/NavIconBtn.vue.js +0 -7
- package/dist/layout/components/NavIconBtn.vue2.js +0 -23
- package/dist/layout/components/SHeaderRight.css +0 -1
- package/dist/layout/components/SHeaderRight.vue.js +0 -7
- package/dist/layout/components/SHeaderRight.vue2.js +0 -68
- package/dist/layout/components/ThemeToggle.css +0 -1
- package/dist/layout/components/ThemeToggle.vue.js +0 -7
- package/dist/layout/components/ThemeToggle.vue2.js +0 -30
- package/dist/layout/components/TimezoneSelect.css +0 -1
- package/dist/layout/components/TimezoneSelect.vue.js +0 -8
- package/dist/layout/components/TimezoneSelect.vue2.js +0 -78
- package/dist/layout/components/TimezoneSelect2.css +0 -1
- package/dist/layout/components/UserInfo.css +0 -1
- package/dist/layout/components/UserInfo.vue.js +0 -8
- package/dist/layout/components/UserInfo.vue2.js +0 -111
- package/dist/layout/components/UserInfo2.css +0 -1
- package/dist/layout/components/index.js +0 -8
- package/dist/layout/components/mobile/AppSelectMobile.vue.js +0 -60
- package/dist/layout/components/mobile/AppSelectMobile.vue2.js +0 -4
- package/dist/layout/components/mobile/AsideBarMobile.css +0 -1
- package/dist/layout/components/mobile/AsideBarMobile.vue.js +0 -7
- package/dist/layout/components/mobile/AsideBarMobile.vue2.js +0 -49
- package/dist/layout/components/mobile/AsideUserMobile.css +0 -1
- package/dist/layout/components/mobile/AsideUserMobile.vue.js +0 -7
- package/dist/layout/components/mobile/AsideUserMobile.vue2.js +0 -56
- package/dist/layout/components/mobile/AsideUserMobilePopover.css +0 -1
- package/dist/layout/components/mobile/AsideUserMobilePopover.vue.js +0 -7
- package/dist/layout/components/mobile/AsideUserMobilePopover.vue2.js +0 -52
- package/dist/layout/components/mobile/HeaderRightMobile.css +0 -1
- package/dist/layout/components/mobile/HeaderRightMobile.vue.js +0 -7
- package/dist/layout/components/mobile/HeaderRightMobile.vue2.js +0 -46
- package/dist/layout/components/mobile/MobileMenuToggle.css +0 -1
- package/dist/layout/components/mobile/MobileMenuToggle.vue.js +0 -7
- package/dist/layout/components/mobile/MobileMenuToggle.vue2.js +0 -33
- package/dist/layout/hooks/index.js +0 -13
- package/dist/layout/hooks/useApp.js +0 -20
- package/dist/layout/hooks/useSetting.js +0 -26
- package/dist/layout/hooks/useState.js +0 -100
- package/dist/layout/hooks/useTheme.js +0 -37
- package/dist/layout/utils/index.js +0 -54
- package/dist/locales/en/account.js +0 -12
- package/dist/locales/en/admin.js +0 -209
- package/dist/locales/en/common.js +0 -42
- package/dist/locales/en/components.js +0 -39
- package/dist/locales/en/constant.js +0 -153
- package/dist/locales/en/filterBox.js +0 -13
- package/dist/locales/en/index.js +0 -22
- package/dist/locales/en/instanceForm.js +0 -19
- package/dist/locales/en/password.js +0 -20
- package/dist/locales/index.js +0 -12
- package/dist/locales/messages.js +0 -9
- package/dist/locales/zh-cn/account.js +0 -12
- package/dist/locales/zh-cn/admin.js +0 -207
- package/dist/locales/zh-cn/common.js +0 -42
- package/dist/locales/zh-cn/components.js +0 -39
- package/dist/locales/zh-cn/constant.js +0 -153
- package/dist/locales/zh-cn/filterBox.js +0 -13
- package/dist/locales/zh-cn/index.js +0 -22
- package/dist/locales/zh-cn/instanceForm.js +0 -19
- package/dist/locales/zh-cn/password.js +0 -20
- package/dist/utils/createContext.js +0 -14
- package/dist/utils/repoUtils.js +0 -160
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { defineComponent as m, computed as u, resolveComponent as p, openBlock as e, createElementBlock as d, createElementVNode as a, unref as o, createBlock as i, createCommentVNode as r, createVNode as h, renderSlot as f } from "vue";
|
|
2
|
-
import { useSetting as g } from "../hooks/useSetting.js";
|
|
3
|
-
import { injectLayoutContext as v } from "../hooks/useState.js";
|
|
4
|
-
import b from "./AppSelect.vue.js";
|
|
5
|
-
import k from "./mobile/HeaderRightMobile.vue.js";
|
|
6
|
-
import y from "./mobile/MobileMenuToggle.vue.js";
|
|
7
|
-
import B from "./SHeaderRight.vue.js";
|
|
8
|
-
const C = {
|
|
9
|
-
"header-bar": "",
|
|
10
|
-
class: "header-bar sticky top-0 z-200"
|
|
11
|
-
}, M = { class: "header-bar__left" }, S = { class: "header-bar__logo-wrap" }, H = {
|
|
12
|
-
href: "/",
|
|
13
|
-
target: "_self",
|
|
14
|
-
rel: "noopener",
|
|
15
|
-
class: "header-bar__logo-link"
|
|
16
|
-
}, N = {
|
|
17
|
-
key: 1,
|
|
18
|
-
class: "header-bar__divider"
|
|
19
|
-
}, V = { class: "header-bar__right" }, L = /* @__PURE__ */ m({
|
|
20
|
-
__name: "HeaderBar",
|
|
21
|
-
setup(x) {
|
|
22
|
-
const l = g(), { isMobile: t } = v(), c = u(
|
|
23
|
-
() => {
|
|
24
|
-
var s, n;
|
|
25
|
-
return !!((s = l.value.user) != null && s.id || (n = l.value.user) != null && n.userId);
|
|
26
|
-
}
|
|
27
|
-
);
|
|
28
|
-
return (s, n) => {
|
|
29
|
-
const _ = p("el-image");
|
|
30
|
-
return e(), d("div", C, [
|
|
31
|
-
a("div", M, [
|
|
32
|
-
o(t) ? (e(), i(y, { key: 0 })) : r("", !0),
|
|
33
|
-
a("div", S, [
|
|
34
|
-
a("a", H, [
|
|
35
|
-
h(_, {
|
|
36
|
-
src: o(l).logo,
|
|
37
|
-
class: "h-7"
|
|
38
|
-
}, null, 8, ["src"])
|
|
39
|
-
])
|
|
40
|
-
]),
|
|
41
|
-
c.value && !o(t) ? (e(), d("div", N)) : r("", !0),
|
|
42
|
-
c.value && !o(t) ? (e(), i(b, { key: 2 })) : r("", !0)
|
|
43
|
-
]),
|
|
44
|
-
a("div", V, [
|
|
45
|
-
f(s.$slots, "default", {}, void 0, !0),
|
|
46
|
-
o(t) ? r("", !0) : (e(), i(B, { key: 0 })),
|
|
47
|
-
o(t) ? (e(), i(k, { key: 1 })) : r("", !0)
|
|
48
|
-
])
|
|
49
|
-
]);
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
});
|
|
53
|
-
export {
|
|
54
|
-
L as default
|
|
55
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.top-language-popover{padding:6px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;box-shadow:var(--ui-shadow-pop)!important}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
import { defineComponent as k, computed as C, resolveComponent as m, openBlock as o, createBlock as _, withCtx as l, createElementVNode as t, createElementBlock as c, Fragment as y, renderList as L, unref as s, normalizeClass as x, toDisplayString as v, createVNode as i, renderSlot as B, createCommentVNode as f } from "vue";
|
|
2
|
-
import { ArrowDown as N } from "@element-plus/icons-vue";
|
|
3
|
-
import S from "../../locales/index.js";
|
|
4
|
-
import { Storage as V } from "../../utils/repoUtils.js";
|
|
5
|
-
import { messages as u } from "../../locales/messages.js";
|
|
6
|
-
import j from "./NavIconBtn.vue.js";
|
|
7
|
-
const D = {
|
|
8
|
-
key: 0,
|
|
9
|
-
class: "language-select__current"
|
|
10
|
-
}, E = { class: "language-select__panel" }, M = ["onClick"], G = /* @__PURE__ */ k({
|
|
11
|
-
__name: "LanguageSelect",
|
|
12
|
-
props: {
|
|
13
|
-
showLabel: { type: Boolean, default: !1 }
|
|
14
|
-
},
|
|
15
|
-
setup(n) {
|
|
16
|
-
const { locale: g } = S.global, r = C(
|
|
17
|
-
() => u[g.value].name
|
|
18
|
-
), h = Object.keys(u).map((e) => ({
|
|
19
|
-
label: u[e].name,
|
|
20
|
-
value: e
|
|
21
|
-
})), w = (e) => {
|
|
22
|
-
V.set("locale", e), location.reload();
|
|
23
|
-
};
|
|
24
|
-
return (e, p) => {
|
|
25
|
-
const d = m("el-icon"), b = m("el-popover");
|
|
26
|
-
return o(), _(b, {
|
|
27
|
-
placement: "bottom",
|
|
28
|
-
width: 180,
|
|
29
|
-
trigger: "hover",
|
|
30
|
-
"popper-class": "top-language-popover"
|
|
31
|
-
}, {
|
|
32
|
-
reference: l(() => [
|
|
33
|
-
i(j, {
|
|
34
|
-
"langselect-toggle": "",
|
|
35
|
-
tag: "div",
|
|
36
|
-
class: "language-select",
|
|
37
|
-
"icon-only": !n.showLabel,
|
|
38
|
-
title: r.value,
|
|
39
|
-
"aria-label": r.value
|
|
40
|
-
}, {
|
|
41
|
-
default: l(() => [
|
|
42
|
-
B(e.$slots, "prefix", {}, void 0, !0),
|
|
43
|
-
i(d, null, {
|
|
44
|
-
default: l(() => [...p[0] || (p[0] = [
|
|
45
|
-
t("svg", {
|
|
46
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
47
|
-
width: "24",
|
|
48
|
-
height: "24",
|
|
49
|
-
viewBox: "0 0 24 24",
|
|
50
|
-
fill: "none",
|
|
51
|
-
stroke: "currentColor",
|
|
52
|
-
"stroke-width": "2",
|
|
53
|
-
"stroke-linecap": "round",
|
|
54
|
-
"stroke-linejoin": "round",
|
|
55
|
-
"data-lucide": "globe",
|
|
56
|
-
"aria-hidden": "true",
|
|
57
|
-
class: "lucide lucide-globe"
|
|
58
|
-
}, [
|
|
59
|
-
t("circle", {
|
|
60
|
-
cx: "12",
|
|
61
|
-
cy: "12",
|
|
62
|
-
r: "10"
|
|
63
|
-
}),
|
|
64
|
-
t("path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20" }),
|
|
65
|
-
t("path", { d: "M2 12h20" })
|
|
66
|
-
], -1)
|
|
67
|
-
])]),
|
|
68
|
-
_: 1
|
|
69
|
-
}),
|
|
70
|
-
n.showLabel ? (o(), c("span", D, v(r.value), 1)) : f("", !0),
|
|
71
|
-
n.showLabel ? (o(), _(d, {
|
|
72
|
-
key: 1,
|
|
73
|
-
class: "language-select__caret"
|
|
74
|
-
}, {
|
|
75
|
-
default: l(() => [
|
|
76
|
-
i(s(N))
|
|
77
|
-
]),
|
|
78
|
-
_: 1
|
|
79
|
-
})) : f("", !0)
|
|
80
|
-
]),
|
|
81
|
-
_: 3
|
|
82
|
-
}, 8, ["icon-only", "title", "aria-label"])
|
|
83
|
-
]),
|
|
84
|
-
default: l(() => [
|
|
85
|
-
t("div", E, [
|
|
86
|
-
(o(!0), c(y, null, L(s(h), (a) => (o(), c("div", {
|
|
87
|
-
key: a.value,
|
|
88
|
-
class: x(["language-select__option", { "language-select__option--active": a.value === s(g) }]),
|
|
89
|
-
onClick: ($) => w(a.value)
|
|
90
|
-
}, v(a.label), 11, M))), 128))
|
|
91
|
-
])
|
|
92
|
-
]),
|
|
93
|
-
_: 3
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
export {
|
|
99
|
-
G as default
|
|
100
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.language-select[data-v-48306ad1]{flex-shrink:0}.language-select__current[data-v-48306ad1]{font-size:14px;font-weight:600;line-height:1}.language-select__caret[data-v-48306ad1]{font-size:12px}.language-select__panel[data-v-48306ad1]{display:grid;gap:4px}.language-select__option[data-v-48306ad1]{padding:10px 12px;border-radius:var(--ui-radius-control);cursor:pointer;color:var(--ui-text-primary);transition:background var(--ui-transition-fast),color var(--ui-transition-fast)}.language-select__option[data-v-48306ad1]:hover{background:var(--ui-bg-muted)}.language-select__option--active[data-v-48306ad1]{color:var(--el-color-primary);background:var(--el-color-primary-light-10)}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.layout-breadcrumb[data-v-21c4b2fb]{display:flex;min-width:0;align-items:center;gap:6px;color:var(--ui-text-placeholder);line-height:1.4}.layout-breadcrumb__back[data-v-21c4b2fb]{display:inline-flex;width:24px;height:24px;flex:0 0 auto;align-items:center;justify-content:center;border:1px solid transparent;border-radius:var(--ui-radius-sm);padding:0;background:transparent;color:var(--ui-text-placeholder);cursor:pointer;font:inherit;transition:background-color var(--ui-transition-fast),border-color var(--ui-transition-fast),color var(--ui-transition-fast)}.layout-breadcrumb__back[data-v-21c4b2fb]:hover{background:var(--ui-bg-muted);color:var(--ui-text-muted)}.layout-breadcrumb__back[data-v-21c4b2fb]:focus-visible{outline:2px solid var(--ui-ring);outline-offset:2px}.layout-breadcrumb__separator[data-v-21c4b2fb]{flex:0 0 auto;color:var(--ui-text-disabled);font-size:11px}.layout-breadcrumb__link[data-v-21c4b2fb],.layout-breadcrumb__current[data-v-21c4b2fb]{display:inline-block;max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layout-breadcrumb__link[data-v-21c4b2fb]{border:0;padding:0;background:transparent;color:var(--ui-text-placeholder);cursor:pointer;font:inherit;transition:color var(--ui-transition-fast)}.layout-breadcrumb__link[data-v-21c4b2fb]:hover{color:var(--ui-text-muted)}.layout-breadcrumb__link[data-v-21c4b2fb]:focus-visible{outline:2px solid var(--ui-ring);outline-offset:2px;border-radius:var(--ui-radius-sm)}.layout-breadcrumb__current[data-v-21c4b2fb]{color:var(--ui-text-muted);font-weight:500}@media(max-width:768px){.layout-breadcrumb__link[data-v-21c4b2fb],.layout-breadcrumb__current[data-v-21c4b2fb]{max-width:44vw}}
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
import { defineComponent as I, computed as U, resolveComponent as W, openBlock as c, createElementBlock as u, createVNode as w, withCtx as z, unref as M, createCommentVNode as _, Fragment as X, renderList as Y, createBlock as Z, toDisplayString as B } from "vue";
|
|
2
|
-
import { ArrowLeft as tt, ArrowRight as et } from "@element-plus/icons-vue";
|
|
3
|
-
import { useRoute as nt, useRouter as rt } from "vue-router";
|
|
4
|
-
import { replaceName as at, tname as ot } from "../../utils/repoUtils.js";
|
|
5
|
-
import { useSetting as st } from "../hooks/useSetting.js";
|
|
6
|
-
import { injectLayoutContext as lt } from "../hooks/useState.js";
|
|
7
|
-
const ct = {
|
|
8
|
-
key: 0,
|
|
9
|
-
class: "layout-breadcrumb text-xs",
|
|
10
|
-
"aria-label": "Breadcrumb"
|
|
11
|
-
}, ut = ["aria-label", "title"], it = {
|
|
12
|
-
key: 1,
|
|
13
|
-
class: "flex min-w-0 items-center gap-1"
|
|
14
|
-
}, ht = ["href"], pt = ["onClick"], dt = {
|
|
15
|
-
key: 3,
|
|
16
|
-
class: "layout-breadcrumb__current"
|
|
17
|
-
}, vt = /* @__PURE__ */ I({
|
|
18
|
-
__name: "LayoutBreadcrumb",
|
|
19
|
-
props: {
|
|
20
|
-
items: { default: void 0 },
|
|
21
|
-
currentTitle: { default: "" },
|
|
22
|
-
parentPath: { default: "" },
|
|
23
|
-
preserveQueryKeys: { default: () => [] },
|
|
24
|
-
showCurrent: { type: Boolean, default: !0 },
|
|
25
|
-
showBack: { type: Boolean, default: !0 },
|
|
26
|
-
backTo: { default: void 0 },
|
|
27
|
-
backLabel: { default: "返回" }
|
|
28
|
-
},
|
|
29
|
-
setup(N) {
|
|
30
|
-
const o = N, s = nt(), g = rt(), j = st(), m = lt(null), h = U(() => {
|
|
31
|
-
var R, $, A, S, E, x;
|
|
32
|
-
if ((R = o.items) != null && R.length)
|
|
33
|
-
return o.items.filter((b) => b.title);
|
|
34
|
-
const t = k(s.path), e = k(
|
|
35
|
-
(($ = s.meta) == null ? void 0 : $.parent) || ((A = s.meta) == null ? void 0 : A.parentPath) || s.path
|
|
36
|
-
), n = V(), r = (E = (S = m == null ? void 0 : m.currentEndRoute) == null ? void 0 : S.value) == null ? void 0 : E.paths, a = L(r || []);
|
|
37
|
-
let l = a.length ? a : y(n, e);
|
|
38
|
-
const P = k(
|
|
39
|
-
o.parentPath || ((x = s.meta) == null ? void 0 : x.parentPath) || ""
|
|
40
|
-
);
|
|
41
|
-
if (!l.length && P && (l = y(n, P)), !l.length) {
|
|
42
|
-
const b = P || O(t, n);
|
|
43
|
-
l = b ? y(n, b) : [];
|
|
44
|
-
}
|
|
45
|
-
const d = l.map(q).filter((b) => b.title), i = d[d.length - 1], f = K();
|
|
46
|
-
return o.showCurrent && f && p(i == null ? void 0 : i.path) !== p(t) ? d.push({
|
|
47
|
-
title: f,
|
|
48
|
-
path: t,
|
|
49
|
-
disabled: !0
|
|
50
|
-
}) : f && i && p(i.path) === p(t) && (i.title = f, i.disabled = !0), !d.length && f && d.push({
|
|
51
|
-
title: f,
|
|
52
|
-
path: t,
|
|
53
|
-
disabled: !0
|
|
54
|
-
}), d;
|
|
55
|
-
}), V = () => {
|
|
56
|
-
const t = [], e = /* @__PURE__ */ new Set();
|
|
57
|
-
return (j.value.menus || []).forEach((n) => {
|
|
58
|
-
var a;
|
|
59
|
-
const r = n.path || n.name || JSON.stringify(((a = n.meta) == null ? void 0 : a.translations) || {});
|
|
60
|
-
!r || e.has(r) || (e.add(r), t.push(n));
|
|
61
|
-
}), t;
|
|
62
|
-
}, L = (t) => t.filter((e) => {
|
|
63
|
-
var n;
|
|
64
|
-
return e && ((n = e.meta) == null ? void 0 : n.visible) !== "0";
|
|
65
|
-
}), q = (t) => {
|
|
66
|
-
var e;
|
|
67
|
-
return {
|
|
68
|
-
title: F(t),
|
|
69
|
-
path: t.path,
|
|
70
|
-
disabled: ((e = t.meta) == null ? void 0 : e.visible) === "0",
|
|
71
|
-
children: t.children
|
|
72
|
-
};
|
|
73
|
-
}, F = (t) => {
|
|
74
|
-
var n;
|
|
75
|
-
return ((n = t == null ? void 0 : t.meta) != null && n.translations ? at(ot(t.meta.translations, "name", t.name)) : "") || (t == null ? void 0 : t.title) || (t == null ? void 0 : t.name) || "";
|
|
76
|
-
}, K = () => {
|
|
77
|
-
var t;
|
|
78
|
-
return o.currentTitle ? o.currentTitle : typeof ((t = s.meta) == null ? void 0 : t.title) == "string" ? s.meta.title : String(s.params.id || s.params.tenantId || "");
|
|
79
|
-
}, y = (t, e, n = []) => {
|
|
80
|
-
if (!e) return [];
|
|
81
|
-
for (const r of t) {
|
|
82
|
-
const a = [...n, r];
|
|
83
|
-
if (Q(r.path, e))
|
|
84
|
-
return L(a);
|
|
85
|
-
const l = y(r.children || [], e, a);
|
|
86
|
-
if (l.length) return l;
|
|
87
|
-
}
|
|
88
|
-
return [];
|
|
89
|
-
}, O = (t, e) => {
|
|
90
|
-
const n = t.split("/").filter(Boolean);
|
|
91
|
-
for (let r = n.length - 1; r > 0; r -= 1) {
|
|
92
|
-
const a = `/${n.slice(0, r).join("/")}`;
|
|
93
|
-
if (y(e, a).length) return a;
|
|
94
|
-
}
|
|
95
|
-
return "";
|
|
96
|
-
}, Q = (t = "", e = "") => {
|
|
97
|
-
const n = p(t), r = p(e);
|
|
98
|
-
if (!n || !r) return !1;
|
|
99
|
-
if (n === r) return !0;
|
|
100
|
-
const a = n.replace(/\/:(\w+)/g, "/([^/]+)");
|
|
101
|
-
return new RegExp(`^${a}$`, "i").test(r);
|
|
102
|
-
}, k = (t = "") => t ? t.split("?")[0].split("#")[0] : "", p = (t = "") => (k(t).replace(/\/+$/, "") || "/").toLowerCase(), v = (t) => /^https?:\/\//.test(t.path || ""), D = (t) => {
|
|
103
|
-
var e;
|
|
104
|
-
return !!((e = t.children) != null && e.some((n) => !n.disabled));
|
|
105
|
-
}, T = (t, e) => t.disabled || e === h.value.length - 1 || !t.path ? !1 : v(t) || !D(t), J = (t) => {
|
|
106
|
-
const e = t.to || C(t);
|
|
107
|
-
e && g.push(e);
|
|
108
|
-
}, G = () => {
|
|
109
|
-
var e;
|
|
110
|
-
if (o.backTo) {
|
|
111
|
-
g.push(o.backTo);
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
if ((e = g.options.history.state) != null && e.back && window.history.length > 1) {
|
|
115
|
-
g.back();
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
const t = H();
|
|
119
|
-
t && g.push(t);
|
|
120
|
-
}, H = () => {
|
|
121
|
-
var n, r;
|
|
122
|
-
const t = o.parentPath || ((n = s.meta) == null ? void 0 : n.parentPath) || ((r = s.meta) == null ? void 0 : r.parent) || "";
|
|
123
|
-
if (t)
|
|
124
|
-
return C({ path: t });
|
|
125
|
-
const e = h.value[h.value.length - 2];
|
|
126
|
-
if (e != null && e.to) return e.to;
|
|
127
|
-
if (e != null && e.path && !v(e))
|
|
128
|
-
return C(e);
|
|
129
|
-
}, C = (t) => {
|
|
130
|
-
if (!t.path) return;
|
|
131
|
-
const e = o.preserveQueryKeys.reduce((n, r) => {
|
|
132
|
-
const a = s.query[r];
|
|
133
|
-
return typeof a == "string" && (n[r] = a), Array.isArray(a) && (n[r] = a.filter(
|
|
134
|
-
(l) => typeof l == "string"
|
|
135
|
-
)), n;
|
|
136
|
-
}, {});
|
|
137
|
-
return Object.keys(e).length ? { path: t.path, query: e } : { path: t.path };
|
|
138
|
-
};
|
|
139
|
-
return (t, e) => {
|
|
140
|
-
const n = W("el-icon");
|
|
141
|
-
return o.showBack || h.value.length ? (c(), u("nav", ct, [
|
|
142
|
-
o.showBack ? (c(), u("button", {
|
|
143
|
-
key: 0,
|
|
144
|
-
class: "layout-breadcrumb__back",
|
|
145
|
-
type: "button",
|
|
146
|
-
"aria-label": o.backLabel,
|
|
147
|
-
title: o.backLabel,
|
|
148
|
-
onClick: G
|
|
149
|
-
}, [
|
|
150
|
-
w(n, null, {
|
|
151
|
-
default: z(() => [
|
|
152
|
-
w(M(tt))
|
|
153
|
-
]),
|
|
154
|
-
_: 1
|
|
155
|
-
})
|
|
156
|
-
], 8, ut)) : _("", !0),
|
|
157
|
-
h.value.length ? (c(), u("ol", it, [
|
|
158
|
-
(c(!0), u(X, null, Y(h.value, (r, a) => (c(), u("li", {
|
|
159
|
-
key: `${r.path || r.title}-${a}`,
|
|
160
|
-
class: "flex min-w-0 items-center gap-1"
|
|
161
|
-
}, [
|
|
162
|
-
a > 0 ? (c(), Z(n, {
|
|
163
|
-
key: 0,
|
|
164
|
-
class: "layout-breadcrumb__separator"
|
|
165
|
-
}, {
|
|
166
|
-
default: z(() => [
|
|
167
|
-
w(M(et))
|
|
168
|
-
]),
|
|
169
|
-
_: 1
|
|
170
|
-
})) : _("", !0),
|
|
171
|
-
v(r) && T(r, a) ? (c(), u("a", {
|
|
172
|
-
key: 1,
|
|
173
|
-
class: "layout-breadcrumb__link",
|
|
174
|
-
href: r.path
|
|
175
|
-
}, B(r.title), 9, ht)) : T(r, a) ? (c(), u("button", {
|
|
176
|
-
key: 2,
|
|
177
|
-
class: "layout-breadcrumb__link",
|
|
178
|
-
type: "button",
|
|
179
|
-
onClick: (l) => J(r)
|
|
180
|
-
}, B(r.title), 9, pt)) : (c(), u("span", dt, B(r.title), 1))
|
|
181
|
-
]))), 128))
|
|
182
|
-
])) : _("", !0)
|
|
183
|
-
])) : _("", !0);
|
|
184
|
-
};
|
|
185
|
-
}
|
|
186
|
-
});
|
|
187
|
-
export {
|
|
188
|
-
vt as default
|
|
189
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.menu-item-icon[data-v-ed060390]{display:inline-flex;align-items:center;justify-content:center;color:currentColor}.menu-item-icon__svg[data-v-ed060390]{display:inline-flex}.menu-item-icon__svg[data-v-ed060390] svg{width:1em;height:1em;display:block;fill:currentColor}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { defineComponent as g, computed as o, openBlock as n, createElementBlock as t, normalizeClass as v } from "vue";
|
|
2
|
-
const f = { class: "menu-item-icon" }, S = ["innerHTML"], I = /* @__PURE__ */ g({
|
|
3
|
-
__name: "MenuItemIcon",
|
|
4
|
-
props: {
|
|
5
|
-
icon: { default: "metisicon-yingyong" }
|
|
6
|
-
},
|
|
7
|
-
setup(i) {
|
|
8
|
-
const a = i, s = o(() => a.icon || "metisicon-yingyong"), r = /^\s*<svg[\s>]/i, l = /\son[a-z]+\s*=\s*("[^"]*"|'[^']*'|[^\s>]+)/gi, _ = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi, p = /\s(?:href|xlink:href)\s*=\s*("\s*javascript:[^"]*"|'\s*javascript:[^']*')/gi, c = (e) => !!e && r.test(e), u = (e) => !e || !c(e) ? "" : e.replace(_, "").replace(l, "").replace(p, ""), m = o(() => u(s.value));
|
|
9
|
-
return (e, E) => (n(), t("div", f, [
|
|
10
|
-
c(s.value) ? (n(), t("span", {
|
|
11
|
-
key: 0,
|
|
12
|
-
class: "menu-item-icon__svg",
|
|
13
|
-
innerHTML: m.value
|
|
14
|
-
}, null, 8, S)) : (n(), t("i", {
|
|
15
|
-
key: 1,
|
|
16
|
-
class: v(s.value)
|
|
17
|
-
}, null, 2))
|
|
18
|
-
]));
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
export {
|
|
22
|
-
I as default
|
|
23
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.nav-icon-btn[data-v-824bbddc]{--nav-icon-btn-size: 30px;--nav-icon-btn-padding-x: 12px;--nav-icon-btn-color: var(--ui-topnav-muted);--nav-icon-btn-bg: transparent;--nav-icon-btn-border-color: transparent;--nav-icon-btn-hover-bg: rgba(0, 0, 0, .1);--nav-icon-btn-hover-border-color: var(--nav-icon-btn-border-color);--nav-icon-btn-focus-ring: var(--ui-topnav-foreground);min-width:var(--nav-icon-btn-size);height:var(--nav-icon-btn-size);display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 var(--nav-icon-btn-padding-x);border:1px solid var(--nav-icon-btn-border-color);border-radius:var(--ui-radius-control);background:var(--nav-icon-btn-bg);color:var(--nav-icon-btn-color);font-size:16px;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;box-sizing:border-box;flex-shrink:0;-webkit-user-select:none;user-select:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.nav-icon-btn[data-v-824bbddc]:hover{background:var(--nav-icon-btn-hover-bg);color:var(--nav-icon-btn-hover-color);border-color:var(--nav-icon-btn-hover-border-color)}.nav-icon-btn[data-v-824bbddc]:focus-visible{outline:2px solid var(--nav-icon-btn-focus-ring);outline-offset:2px}.nav-icon-btn[data-v-824bbddc]:disabled{opacity:.6;cursor:not-allowed}.nav-icon-btn--icon-only[data-v-824bbddc]{width:var(--nav-icon-btn-size);padding:0}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { defineComponent as n, openBlock as o, createBlock as a, resolveDynamicComponent as l, normalizeClass as c, withCtx as u, renderSlot as i } from "vue";
|
|
2
|
-
const d = /* @__PURE__ */ n({
|
|
3
|
-
__name: "NavIconBtn",
|
|
4
|
-
props: {
|
|
5
|
-
tag: { default: "button" },
|
|
6
|
-
type: { default: "button" },
|
|
7
|
-
iconOnly: { type: Boolean, default: !0 }
|
|
8
|
-
},
|
|
9
|
-
setup(t) {
|
|
10
|
-
return (e, r) => (o(), a(l(t.tag), {
|
|
11
|
-
type: t.tag === "button" ? t.type : void 0,
|
|
12
|
-
class: c(["nav-icon-btn", { "nav-icon-btn--icon-only": t.iconOnly }])
|
|
13
|
-
}, {
|
|
14
|
-
default: u(() => [
|
|
15
|
-
i(e.$slots, "default", {}, void 0, !0)
|
|
16
|
-
]),
|
|
17
|
-
_: 3
|
|
18
|
-
}, 8, ["type", "class"]));
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
export {
|
|
22
|
-
d as default
|
|
23
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.header-right[data-v-3c5e16a6]{display:flex;align-items:center;gap:8px;font-size:13px;--nav-icon-btn-size: 30px}.header-right__login[data-v-3c5e16a6]{height:30px;line-height:30px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 12px;border-radius:var(--ui-radius-control);color:var(--ui-topnav-foreground);background:linear-gradient(135deg,var(--el-color-primary) 0%,var(--ui-topnav-accent) 100%);box-shadow:0 8px 18px rgba(var(--el-color-primary-rgb),.24);transition:background var(--ui-transition-fast),color var(--ui-transition-fast),border-color var(--ui-transition-fast)}.header-right__login[data-v-3c5e16a6]:hover{filter:brightness(1.05)}
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { defineComponent as _, computed as n, resolveComponent as k, openBlock as a, createElementBlock as c, createBlock as u, withCtx as d, createVNode as r, createElementVNode as l, createCommentVNode as w, toDisplayString as C, unref as L } from "vue";
|
|
2
|
-
import b from "../../locales/index.js";
|
|
3
|
-
import { useSetting as x } from "../hooks/useSetting.js";
|
|
4
|
-
import { getLayoutLoginPath as y } from "../utils/index.js";
|
|
5
|
-
import B from "./LanguageSelect.vue.js";
|
|
6
|
-
import D from "./NavIconBtn.vue.js";
|
|
7
|
-
import N from "./ThemeToggle.vue.js";
|
|
8
|
-
import P from "./UserInfo.vue.js";
|
|
9
|
-
const S = { class: "header-right" }, V = ["href"], q = /* @__PURE__ */ _({
|
|
10
|
-
__name: "SHeaderRight",
|
|
11
|
-
setup(I) {
|
|
12
|
-
const { t: h } = b.global, e = x(), m = n(() => e.value.hideDoc ?? !1), p = n(() => y(e.value)), i = n(() => e.value.user), g = n(() => {
|
|
13
|
-
var o, t;
|
|
14
|
-
return !!((o = i.value) != null && o.id || (t = i.value) != null && t.userId);
|
|
15
|
-
}), f = (o) => {
|
|
16
|
-
e.value.onLogin && (o.preventDefault(), e.value.onLogin());
|
|
17
|
-
}, s = n(() => e.value.docsPath || "");
|
|
18
|
-
return (o, t) => {
|
|
19
|
-
const v = k("el-icon");
|
|
20
|
-
return a(), c("div", S, [
|
|
21
|
-
!m.value && s.value ? (a(), u(D, {
|
|
22
|
-
key: 0,
|
|
23
|
-
tag: "a",
|
|
24
|
-
class: "whitespace-nowrap",
|
|
25
|
-
href: s.value,
|
|
26
|
-
target: "_blank"
|
|
27
|
-
}, {
|
|
28
|
-
default: d(() => [
|
|
29
|
-
r(v, null, {
|
|
30
|
-
default: d(() => [...t[0] || (t[0] = [
|
|
31
|
-
l("svg", {
|
|
32
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
33
|
-
width: "24",
|
|
34
|
-
height: "24",
|
|
35
|
-
viewBox: "0 0 24 24",
|
|
36
|
-
fill: "none",
|
|
37
|
-
stroke: "currentColor",
|
|
38
|
-
"stroke-width": "2",
|
|
39
|
-
"stroke-linecap": "round",
|
|
40
|
-
"stroke-linejoin": "round",
|
|
41
|
-
"data-lucide": "book-open",
|
|
42
|
-
"aria-hidden": "true",
|
|
43
|
-
class: "lucide lucide-book-open"
|
|
44
|
-
}, [
|
|
45
|
-
l("path", { d: "M12 7v14" }),
|
|
46
|
-
l("path", { d: "M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z" })
|
|
47
|
-
], -1)
|
|
48
|
-
])]),
|
|
49
|
-
_: 1
|
|
50
|
-
})
|
|
51
|
-
]),
|
|
52
|
-
_: 1
|
|
53
|
-
}, 8, ["href"])) : w("", !0),
|
|
54
|
-
r(B),
|
|
55
|
-
r(N),
|
|
56
|
-
g.value ? (a(), u(P, { key: 1 })) : (a(), c("a", {
|
|
57
|
-
key: 2,
|
|
58
|
-
class: "header-right__login",
|
|
59
|
-
href: p.value,
|
|
60
|
-
onClick: f
|
|
61
|
-
}, C(L(h)("common.btn.login")), 9, V))
|
|
62
|
-
]);
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
|
-
export {
|
|
67
|
-
q as default
|
|
68
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.theme-toggle__label[data-v-e6ea60b7]{font-size:12px;line-height:1}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { defineComponent as a, watchEffect as f, resolveComponent as p, openBlock as o, createBlock as t, unref as e, withCtx as n, createVNode as s } from "vue";
|
|
2
|
-
import { Moon as u, Sunny as _ } from "@element-plus/icons-vue";
|
|
3
|
-
import { useSetting as h } from "../hooks/useSetting.js";
|
|
4
|
-
import { useTheme as k } from "../hooks/useTheme.js";
|
|
5
|
-
import g from "./NavIconBtn.vue.js";
|
|
6
|
-
const N = /* @__PURE__ */ a({
|
|
7
|
-
__name: "ThemeToggle",
|
|
8
|
-
setup(d) {
|
|
9
|
-
const r = h(), { theme: c, isDark: m, toggleTheme: l } = k();
|
|
10
|
-
return f(() => {
|
|
11
|
-
r.value.theme = c.value;
|
|
12
|
-
}), (C, v) => {
|
|
13
|
-
const i = p("el-icon");
|
|
14
|
-
return o(), t(g, { onClick: e(l) }, {
|
|
15
|
-
default: n(() => [
|
|
16
|
-
s(i, null, {
|
|
17
|
-
default: n(() => [
|
|
18
|
-
e(m) ? (o(), t(e(_), { key: 1 })) : (o(), t(e(u), { key: 0 }))
|
|
19
|
-
]),
|
|
20
|
-
_: 1
|
|
21
|
-
})
|
|
22
|
-
]),
|
|
23
|
-
_: 1
|
|
24
|
-
}, 8, ["onClick"]);
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
});
|
|
28
|
-
export {
|
|
29
|
-
N as default
|
|
30
|
-
};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
.top-timezone-popover{padding:6px!important;border:1px solid var(--ui-border-default)!important;background:var(--ui-bg-card)!important;box-shadow:var(--ui-shadow-pop)!important}
|