@ditari/bsui 5.1.2 → 5.1.4
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/cjs/components/card/Card.cjs +1 -1
- package/dist/cjs/components/card/Card.cjs.map +1 -1
- package/dist/cjs/components/layout/AppContext.cjs.map +1 -1
- package/dist/cjs/components/layout/Layout.vue2.cjs +24 -6
- package/dist/cjs/components/layout/Layout.vue2.cjs.map +1 -1
- package/dist/cjs/components/layout/List.cjs +26 -23
- package/dist/cjs/components/layout/List.cjs.map +1 -1
- package/dist/cjs/components/layout/Show.cjs +80 -36
- package/dist/cjs/components/layout/Show.cjs.map +1 -1
- package/dist/cjs/components/layout/components/layout/RouterContent.vue2.cjs +57 -21
- package/dist/cjs/components/layout/components/layout/RouterContent.vue2.cjs.map +1 -1
- package/dist/cjs/components/layout/components/layout/RouterContentName.vue2.cjs +42 -27
- package/dist/cjs/components/layout/components/layout/RouterContentName.vue2.cjs.map +1 -1
- package/dist/cjs/components/tab/Tab.vue2.cjs +4 -10
- package/dist/cjs/components/tab/Tab.vue2.cjs.map +1 -1
- package/dist/esm/components/card/Card.mjs +1 -1
- package/dist/esm/components/card/Card.mjs.map +1 -1
- package/dist/esm/components/layout/AppContext.mjs.map +1 -1
- package/dist/esm/components/layout/Layout.vue2.mjs +26 -8
- package/dist/esm/components/layout/Layout.vue2.mjs.map +1 -1
- package/dist/esm/components/layout/List.mjs +26 -23
- package/dist/esm/components/layout/List.mjs.map +1 -1
- package/dist/esm/components/layout/Show.mjs +82 -38
- package/dist/esm/components/layout/Show.mjs.map +1 -1
- package/dist/esm/components/layout/components/layout/RouterContent.vue2.mjs +58 -22
- package/dist/esm/components/layout/components/layout/RouterContent.vue2.mjs.map +1 -1
- package/dist/esm/components/layout/components/layout/RouterContentName.vue2.mjs +43 -28
- package/dist/esm/components/layout/components/layout/RouterContentName.vue2.mjs.map +1 -1
- package/dist/esm/components/tab/Tab.vue2.mjs +4 -10
- package/dist/esm/components/tab/Tab.vue2.mjs.map +1 -1
- package/dist/types/components/card/Card.d.ts.map +1 -1
- package/dist/types/components/layout/AppContext.d.ts +3 -1
- package/dist/types/components/layout/AppContext.d.ts.map +1 -1
- package/dist/types/components/layout/Layout.vue.d.ts +16 -29
- package/dist/types/components/layout/Layout.vue.d.ts.map +1 -1
- package/dist/types/components/layout/Show.d.ts +18 -0
- package/dist/types/components/layout/Show.d.ts.map +1 -1
- package/dist/types/components/layout/components/layout/HeaderLayout.vue.d.ts +2 -2
- package/dist/types/components/layout/components/layout/RouterContent.vue.d.ts +4 -2
- package/dist/types/components/layout/components/layout/RouterContent.vue.d.ts.map +1 -1
- package/dist/types/components/tab/Tab.vue.d.ts +2 -2
- package/dist/types/components/tab/Tab.vue.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -3,46 +3,82 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var vue = require('vue');
|
|
6
|
-
var vueRouter = require('vue-router');
|
|
7
6
|
var pinia = require('pinia');
|
|
8
7
|
var store = require('@ditari/store');
|
|
9
8
|
|
|
10
9
|
"use strict";
|
|
10
|
+
var __async = (__this, __arguments, generator) => {
|
|
11
|
+
return new Promise((resolve, reject) => {
|
|
12
|
+
var fulfilled = (value) => {
|
|
13
|
+
try {
|
|
14
|
+
step(generator.next(value));
|
|
15
|
+
} catch (e) {
|
|
16
|
+
reject(e);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
var rejected = (value) => {
|
|
20
|
+
try {
|
|
21
|
+
step(generator.throw(value));
|
|
22
|
+
} catch (e) {
|
|
23
|
+
reject(e);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
27
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
28
|
+
});
|
|
29
|
+
};
|
|
11
30
|
var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
12
31
|
__name: "RouterContent",
|
|
13
|
-
setup(__props) {
|
|
32
|
+
setup(__props, { expose: __expose }) {
|
|
14
33
|
const { list } = pinia.storeToRefs(store.useNavTabStore());
|
|
15
|
-
const
|
|
34
|
+
const toPascalCase = (str) => {
|
|
35
|
+
return str.replace(/[^a-zA-Z0-9]/g, " ").split(" ").filter(Boolean).map(
|
|
36
|
+
(word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()
|
|
37
|
+
).join("");
|
|
38
|
+
};
|
|
39
|
+
const refreshingPath = vue.ref(null);
|
|
40
|
+
const wrapperMap = /* @__PURE__ */ new Map();
|
|
16
41
|
const cachedViews = vue.computed(() => {
|
|
17
|
-
return list.value.filter(
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
).map((tab) =>
|
|
42
|
+
return list.value.filter((tab) => {
|
|
43
|
+
var _a;
|
|
44
|
+
const isKeepAlive = ((_a = tab.meta) == null ? void 0 : _a.keepAlive) === true;
|
|
45
|
+
const isNotRefreshing = tab.fullPath !== refreshingPath.value;
|
|
46
|
+
return isKeepAlive && tab.fullPath && isNotRefreshing;
|
|
47
|
+
}).map((tab) => {
|
|
48
|
+
return tab.name || toPascalCase(tab.fullPath);
|
|
49
|
+
});
|
|
23
50
|
});
|
|
24
|
-
const
|
|
25
|
-
const getWrapper = (Component, route2) => {
|
|
51
|
+
const getWrapper = (Component, route) => {
|
|
26
52
|
if (!Component) return null;
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
53
|
+
const fullPath = route.fullPath;
|
|
54
|
+
const wrapperName = route.name || toPascalCase(fullPath);
|
|
55
|
+
if (wrapperMap.has(fullPath)) {
|
|
56
|
+
return wrapperMap.get(fullPath);
|
|
30
57
|
}
|
|
31
58
|
const wrapper = vue.defineComponent({
|
|
32
59
|
name: wrapperName,
|
|
33
|
-
//
|
|
60
|
+
// 供 KeepAlive 识别
|
|
34
61
|
setup() {
|
|
35
62
|
return () => vue.h(Component);
|
|
36
63
|
}
|
|
37
64
|
});
|
|
38
|
-
wrapperMap.set(
|
|
65
|
+
wrapperMap.set(fullPath, wrapper);
|
|
39
66
|
return wrapper;
|
|
40
67
|
};
|
|
68
|
+
const reloadPage = (fullPath) => __async(null, null, function* () {
|
|
69
|
+
refreshingPath.value = fullPath;
|
|
70
|
+
wrapperMap.delete(fullPath);
|
|
71
|
+
yield vue.nextTick();
|
|
72
|
+
yield vue.nextTick();
|
|
73
|
+
refreshingPath.value = null;
|
|
74
|
+
});
|
|
75
|
+
__expose({ reloadPage });
|
|
41
76
|
vue.watch(
|
|
42
77
|
cachedViews,
|
|
43
78
|
(names) => {
|
|
44
|
-
|
|
45
|
-
|
|
79
|
+
const activeNames = new Set(names);
|
|
80
|
+
wrapperMap.forEach((wrapper, key) => {
|
|
81
|
+
if (!activeNames.has(wrapper.name)) {
|
|
46
82
|
wrapperMap.delete(key);
|
|
47
83
|
}
|
|
48
84
|
});
|
|
@@ -52,7 +88,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
52
88
|
return (_ctx, _cache) => {
|
|
53
89
|
const _component_router_view = vue.resolveComponent("router-view");
|
|
54
90
|
return vue.openBlock(), vue.createBlock(_component_router_view, null, {
|
|
55
|
-
default: vue.withCtx(({ Component }) => [
|
|
91
|
+
default: vue.withCtx(({ Component, route: currentRoute }) => [
|
|
56
92
|
vue.createVNode(
|
|
57
93
|
vue.Transition,
|
|
58
94
|
{
|
|
@@ -63,8 +99,8 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
63
99
|
{
|
|
64
100
|
default: vue.withCtx(() => [
|
|
65
101
|
(vue.openBlock(), vue.createBlock(vue.KeepAlive, { include: cachedViews.value }, [
|
|
66
|
-
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(getWrapper(Component,
|
|
67
|
-
key:
|
|
102
|
+
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(getWrapper(Component, currentRoute)), {
|
|
103
|
+
key: currentRoute.fullPath
|
|
68
104
|
}))
|
|
69
105
|
], 1032, ["include"]))
|
|
70
106
|
]),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterContent.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/RouterContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {
|
|
1
|
+
{"version":3,"file":"RouterContent.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/RouterContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n computed,\r\n defineComponent,\r\n h,\r\n nextTick,\r\n ref,\r\n watch\r\n} from \"vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useNavTabStore } from \"@ditari/store\";\r\n\r\nconst { list } = storeToRefs(useNavTabStore());\r\n\r\n/**\r\n * 工具函数:大驼峰转换\r\n */\r\nconst toPascalCase = (str: string) => {\r\n return str\r\n .replace(/[^a-zA-Z0-9]/g, \" \")\r\n .split(\" \")\r\n .filter(Boolean)\r\n .map(\r\n word =>\r\n word.charAt(0).toUpperCase() +\r\n word.slice(1).toLowerCase()\r\n )\r\n .join(\"\");\r\n};\r\n\r\n/**\r\n * 1. 状态管理\r\n * refreshingPath: 记录当前正在执行重载的路径。\r\n * wrapperMap: 存储包装组件的缓存。\r\n */\r\nconst refreshingPath = ref<string | null>(null);\r\nconst wrapperMap = new Map();\r\n\r\n/**\r\n * 2. 计算缓存名单 (KeepAlive 的 include 属性)\r\n * 逻辑:meta.keepAlive 为 true,且当前路径不在“重载黑名单”中。\r\n */\r\nconst cachedViews = computed<string[]>(() => {\r\n return list.value\r\n .filter(tab => {\r\n const isKeepAlive = tab.meta?.keepAlive === true;\r\n const isNotRefreshing =\r\n tab.fullPath !== refreshingPath.value;\r\n return isKeepAlive && tab.fullPath && isNotRefreshing;\r\n })\r\n .map(tab => {\r\n // 这里的生成逻辑必须与 getWrapper 中的 name 保持严格一致\r\n return (\r\n (tab.name as string) ||\r\n toPascalCase(tab.fullPath as string)\r\n );\r\n });\r\n});\r\n\r\n/**\r\n * 3. 动态包装组件逻辑\r\n */\r\nconst getWrapper = (Component: any, route: any) => {\r\n if (!Component) return null;\r\n\r\n const fullPath = route.fullPath;\r\n const wrapperName =\r\n (route.name as string) || toPascalCase(fullPath);\r\n\r\n // 如果缓存中有,直接返回。\r\n // 注意:重载时我们会从 wrapperMap 中 delete 掉它,强制这里重新生成。\r\n if (wrapperMap.has(fullPath)) {\r\n return wrapperMap.get(fullPath);\r\n }\r\n\r\n // 创建一个全新的组件定义\r\n const wrapper = defineComponent({\r\n name: wrapperName, // 供 KeepAlive 识别\r\n setup() {\r\n return () => h(Component);\r\n }\r\n });\r\n\r\n wrapperMap.set(fullPath, wrapper);\r\n return wrapper;\r\n};\r\n\r\n/**\r\n * 4. 暴露重载方法 (供父组件调用)\r\n * 核心:先从 include 移除触发销毁,清理定义,再恢复。\r\n */\r\nconst reloadPage = async (fullPath: string) => {\r\n // A. 将路径加入“黑名单”,cachedViews 会立即更新\r\n // KeepAlive 发现 include 不再包含此组件,会执行正常的销毁流程(避免 deactivate 报错)\r\n refreshingPath.value = fullPath;\r\n\r\n // B. 清理包装组件的内存缓存,确保下次进入时 setup 重新执行\r\n wrapperMap.delete(fullPath);\r\n\r\n // C. 等待两个 Tick,确保 Vue 渲染器完成了销毁动作\r\n await nextTick();\r\n await nextTick();\r\n\r\n // D. 移除黑名单,KeepAlive 重新将该路径加入缓存范围\r\n refreshingPath.value = null;\r\n};\r\n\r\ndefineExpose({ reloadPage });\r\n\r\n/**\r\n * 5. 监听标签页关闭\r\n * 当从标签栏删除某个页面时,同步清理包装组件内存\r\n */\r\nwatch(\r\n cachedViews,\r\n names => {\r\n const activeNames = new Set(names);\r\n wrapperMap.forEach((wrapper, key) => {\r\n if (!activeNames.has(wrapper.name)) {\r\n wrapperMap.delete(key);\r\n }\r\n });\r\n },\r\n { deep: true }\r\n);\r\n</script>\r\n\r\n<template>\r\n <router-view v-slot=\"{ Component, route: currentRoute }\">\r\n <transition name=\"main\" mode=\"out-in\" appear>\r\n <keep-alive :include=\"cachedViews\">\r\n <component\r\n :is=\"getWrapper(Component, currentRoute)\"\r\n :key=\"currentRoute.fullPath\"\r\n />\r\n </keep-alive>\r\n </transition>\r\n </router-view>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["storeToRefs","useNavTabStore","ref","computed","defineComponent","h","nextTick","watch","_createBlock","_createVNode","_Transition","_KeepAlive","_openBlock","_resolveDynamicComponent"],"mappings":"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"}
|
|
@@ -17,33 +17,48 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
17
17
|
const route = vueRouter.useRoute();
|
|
18
18
|
return (_ctx, _cache) => {
|
|
19
19
|
const _component_router_view = vue.resolveComponent("router-view");
|
|
20
|
-
return vue.openBlock(), vue.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
20
|
+
return vue.openBlock(), vue.createElementBlock(
|
|
21
|
+
vue.Fragment,
|
|
22
|
+
null,
|
|
23
|
+
[
|
|
24
|
+
_cache[0] || (_cache[0] = vue.createElementVNode(
|
|
25
|
+
"div",
|
|
26
|
+
null,
|
|
27
|
+
"name",
|
|
28
|
+
-1
|
|
29
|
+
/* CACHED */
|
|
30
|
+
)),
|
|
31
|
+
vue.createVNode(_component_router_view, null, {
|
|
32
|
+
default: vue.withCtx(({ Component }) => [
|
|
33
|
+
vue.createVNode(
|
|
34
|
+
vue.Transition,
|
|
35
|
+
{
|
|
36
|
+
name: "main",
|
|
37
|
+
mode: "out-in",
|
|
38
|
+
appear: ""
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
default: vue.withCtx(() => [
|
|
42
|
+
(vue.openBlock(), vue.createBlock(vue.KeepAlive, { include: keepAliveNames.value }, [
|
|
43
|
+
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(Component), {
|
|
44
|
+
key: vue.unref(route).fullPath
|
|
45
|
+
}))
|
|
46
|
+
], 1032, ["include"]))
|
|
47
|
+
]),
|
|
48
|
+
_: 2
|
|
49
|
+
/* DYNAMIC */
|
|
50
|
+
},
|
|
51
|
+
1024
|
|
52
|
+
/* DYNAMIC_SLOTS */
|
|
53
|
+
)
|
|
54
|
+
]),
|
|
55
|
+
_: 1
|
|
56
|
+
/* STABLE */
|
|
57
|
+
})
|
|
58
|
+
],
|
|
59
|
+
64
|
|
60
|
+
/* STABLE_FRAGMENT */
|
|
61
|
+
);
|
|
47
62
|
};
|
|
48
63
|
}
|
|
49
64
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterContentName.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/RouterContentName.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useKeepAliveStore } from \"@ditari/store\";\r\n\r\nconst keepAliveStore = useKeepAliveStore();\r\n\r\nconst { get } = storeToRefs(keepAliveStore);\r\nconst keepAliveNames = computed<string[]>(() => get.value);\r\n\r\nconst route = useRoute();\r\n</script>\r\n\r\n<template>\r\n <router-view v-slot=\"{ Component }\">\r\n <transition name=\"main\" mode=\"out-in\" appear>\r\n <keep-alive :include=\"keepAliveNames\">\r\n <component :is=\"Component\" :key=\"route.
|
|
1
|
+
{"version":3,"file":"RouterContentName.vue2.cjs","sources":["../../../../../../src/components/layout/components/layout/RouterContentName.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { useKeepAliveStore } from \"@ditari/store\";\r\n\r\nconst keepAliveStore = useKeepAliveStore();\r\n\r\nconst { get } = storeToRefs(keepAliveStore);\r\nconst keepAliveNames = computed<string[]>(() => get.value);\r\n\r\nconst route = useRoute();\r\n</script>\r\n\r\n<template>\r\n <div>name</div>\r\n <router-view v-slot=\"{ Component }\">\r\n <transition name=\"main\" mode=\"out-in\" appear>\r\n <keep-alive :include=\"keepAliveNames\">\r\n <component :is=\"Component\" :key=\"route.fullPath\" />\r\n </keep-alive>\r\n </transition>\r\n </router-view>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["useKeepAliveStore","storeToRefs","computed","useRoute","_createElementVNode","_createVNode","_withCtx","_Transition","_createBlock","_KeepAlive","_openBlock","_resolveDynamicComponent","_unref"],"mappings":";;;;;;;;;;;;;AAOA,IAAA,MAAM,iBAAiBA,uBAAA,EAAkB;AAEzC,IAAA,MAAM,EAAE,GAAA,EAAI,GAAIC,iBAAA,CAAY,cAAc,CAAA;AAC1C,IAAA,MAAM,cAAA,GAAiBC,YAAA,CAAmB,MAAM,GAAA,CAAI,KAAK,CAAA;AAEzD,IAAA,MAAM,QAAQC,kBAAA,EAAS;;;;;;;UAIrB,MAAA,CAAA,CAAA,CAAA,KAAA,MAAA,CAAA,CAAA,CAAA,GAAAC,sBAAA;AAAA,YAAe,KAAA;AAAA;YAAV,MAAA;AAAA,YAAI,CAAA;AAAA;AAAA,WAAA,CAAA;AAAA,UACTC,eAAA,CAMc,wBAAA,IAAA,EAAA;AAAA,YALZ,OAAA,EAAAC,WAAA,CAAA,CAIa,EALQ,WAAS,KAAA;AAAA,cAC9BD,eAAA;AAAA,gBAIaE,cAAA;AAAA,gBAAA;AAAA,kBAJD,IAAA,EAAK,MAAA;AAAA,kBAAO,IAAA,EAAK,QAAA;AAAA,kBAAS,MAAA,EAAA;AAAA;;uCACpC,MAEa;AAAA,sCAFbC,eAAA,CAEaC,aAAA,EAAA,EAFA,OAAA,EAAS,cAAA,CAAA,OAAc,EAAA;AAAA,uBAClCC,aAAA,EAAA,EAAAF,eAAA,CAAmDG,2BAAA,CAAnC,SAAS,CAAA,EAAA;AAAA,wBAAG,GAAA,EAAKC,SAAA,CAAA,KAAA,CAAA,CAAM;AAAA;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -130,18 +130,12 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
130
130
|
);
|
|
131
131
|
const store$1 = store.useNavTabStore();
|
|
132
132
|
const router = vueRouter.useRouter();
|
|
133
|
-
const onContextMenuClick2 = ({ key },
|
|
133
|
+
const onContextMenuClick2 = ({ key }, item) => {
|
|
134
134
|
var _a, _b, _c, _d;
|
|
135
|
+
const targetKey = item.fullPath;
|
|
135
136
|
switch (key) {
|
|
136
137
|
case "reload":
|
|
137
|
-
|
|
138
|
-
router.push(targetKey).then(() => {
|
|
139
|
-
var _a2;
|
|
140
|
-
return (_a2 = appContext == null ? void 0 : appContext.onReloadPage) == null ? void 0 : _a2.call(appContext);
|
|
141
|
-
});
|
|
142
|
-
} else {
|
|
143
|
-
(_a = appContext == null ? void 0 : appContext.onReloadPage) == null ? void 0 : _a.call(appContext);
|
|
144
|
-
}
|
|
138
|
+
(_a = appContext == null ? void 0 : appContext.onReloadPage) == null ? void 0 : _a.call(appContext, item);
|
|
145
139
|
break;
|
|
146
140
|
case "other":
|
|
147
141
|
(_b = store$1.closeOtherTabs) == null ? void 0 : _b.call(store$1, targetKey);
|
|
@@ -229,7 +223,7 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
229
223
|
{
|
|
230
224
|
overlay: vue.withCtx(() => [
|
|
231
225
|
vue.createVNode(_component_a_menu, {
|
|
232
|
-
onClick: (e) => vue.unref(onContextMenuClick)(e, item
|
|
226
|
+
onClick: (e) => vue.unref(onContextMenuClick)(e, item)
|
|
233
227
|
}, {
|
|
234
228
|
default: vue.withCtx(() => [
|
|
235
229
|
vue.createVNode(_component_a_menu_item, { key: "reload" }, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tab.vue2.cjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n computed,\r\n type ComputedRef,\r\n inject,\r\n watch\r\n} from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n AppContext,\r\n AppContextKey\r\n} from \"../layout/AppContext\";\r\nimport Search from \"./Search\";\r\nimport {\r\n CloseOutlined,\r\n ReloadOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport {\r\n type NavTabsState,\r\n useNavTabStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } =\r\n useStyle();\r\n\r\nconst {\r\n activeKey,\r\n list,\r\n closeBtnStatus,\r\n onChange,\r\n onClose\r\n} = useTab();\r\n\r\nconst { enableTabContextMenu, onContextMenuClick } =\r\n useTabsContextMenu();\r\n\r\nfunction useStyle(): {\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const activeTabColor = computed(\r\n () => token.value.colorBgLayout\r\n );\r\n const splitColor = computed(\r\n () => token.value.colorBorderSecondary\r\n );\r\n\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --active-tab-color: ${activeTabColor.value};\r\n --splitColor: ${splitColor.value};\r\n padding-top: 10px;\r\n display: flex;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n save(route);\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(\r\n item => item.fullPath === key\r\n )[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = (\r\n $event: Event,\r\n key: string | undefined\r\n ) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n const closeBtnStatus = (item: NavTabsState) => {\r\n // 如果meta有设置keepOpen则隐藏关闭按钮\r\n if (item.meta?.keepOpen) {\r\n return false;\r\n } else {\r\n // 如果只有一个标签,则隐藏关闭按钮\r\n return list.value.length !== 1;\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n closeBtnStatus,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n\r\nfunction useTabsContextMenu() {\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n const store = useNavTabStore();\r\n const router = useRouter();\r\n\r\n const onContextMenuClick = (\r\n { key }: { key: string },\r\n targetKey: string\r\n ) => {\r\n switch (key) {\r\n case \"reload\":\r\n // 如果点击的不是当前激活页,先跳转再刷新\r\n if (targetKey !== activeKey.value) {\r\n router\r\n .push(targetKey)\r\n .then(() => appContext?.onReloadPage?.());\r\n } else {\r\n appContext?.onReloadPage?.();\r\n }\r\n break;\r\n case \"other\":\r\n store.closeOtherTabs?.(targetKey);\r\n router.push(targetKey);\r\n break;\r\n case \"left\":\r\n store.closeLeftTabs?.(targetKey);\r\n router.push(targetKey);\r\n break;\r\n case \"right\":\r\n store.closeRightTabs?.(targetKey);\r\n router.push(targetKey);\r\n break;\r\n }\r\n };\r\n\r\n return {\r\n enableTabContextMenu:\r\n appContext?.enableTabContextMenu || false,\r\n onContextMenuClick\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <Search />\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div\r\n class=\"tab-hover-bg\"\r\n :class=\"tabHoverBgStyle\"\r\n ></div>\r\n <div class=\"tab-dividers\"></div>\r\n <div\r\n class=\"tab-item\"\r\n v-if=\"!enableTabContextMenu\"\r\n >\r\n {{ item.meta?.title || \"无标题\" }}\r\n </div>\r\n <a-dropdown\r\n :trigger=\"['contextmenu']\"\r\n v-if=\"enableTabContextMenu\"\r\n >\r\n <div class=\"tab-item\">\r\n {{ item.meta?.title || \"无标题\" }}\r\n </div>\r\n <template #overlay>\r\n <a-menu\r\n @click=\"\r\n e =>\r\n onContextMenuClick(e, item.fullPath)\r\n \"\r\n >\r\n <a-menu-item key=\"reload\">\r\n <ReloadOutlined />\r\n 重新加载\r\n </a-menu-item>\r\n <a-menu-item key=\"other\">\r\n <CloseOutlined />\r\n 关闭其他\r\n </a-menu-item>\r\n <a-menu-item key=\"right\"\r\n >关闭右侧标签\r\n </a-menu-item>\r\n <a-menu-item key=\"left\"\r\n >关闭左侧标签\r\n </a-menu-item>\r\n </a-menu>\r\n </template>\r\n </a-dropdown>\r\n\r\n <div\r\n class=\"tab-close\"\r\n v-if=\"closeBtnStatus(item)\"\r\n >\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["theme","computed","tabsNavStyle","css","tabHoverBgStyle","closeBtnStyle","useRoute","useRouter","store","useNavTabStore","list","activeKey","storeToRefs","watch","onChange","onClose","closeBtnStatus","inject","AppContextKey","onContextMenuClick","_a","_createElementBlock","_normalizeClass","_unref","_createVNode","Search","_createElementVNode","_Fragment","_renderList","_createBlock","_openBlock","_toDisplayString","ReloadOutlined","CloseOutlined"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tab.vue2.cjs","sources":["../../../../src/components/tab/Tab.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport {\r\n computed,\r\n type ComputedRef,\r\n inject,\r\n watch\r\n} from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport { theme } from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport {\r\n AppContext,\r\n AppContextKey\r\n} from \"../layout/AppContext\";\r\nimport Search from \"./Search\";\r\nimport {\r\n CloseOutlined,\r\n ReloadOutlined\r\n} from \"@ant-design/icons-vue\";\r\nimport {\r\n type NavTabsState,\r\n useNavTabStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst { tabsNavStyle, tabHoverBgStyle, closeBtnStyle } =\r\n useStyle();\r\n\r\nconst {\r\n activeKey,\r\n list,\r\n closeBtnStatus,\r\n onChange,\r\n onClose\r\n} = useTab();\r\n\r\nconst { enableTabContextMenu, onContextMenuClick } =\r\n useTabsContextMenu();\r\n\r\nfunction useStyle(): {\r\n tabsNavStyle: ComputedRef<string>;\r\n tabHoverBgStyle: ComputedRef<string>;\r\n closeBtnStyle: ComputedRef<string>;\r\n} {\r\n const { useToken } = theme;\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const activeTabColor = computed(\r\n () => token.value.colorBgLayout\r\n );\r\n const splitColor = computed(\r\n () => token.value.colorBorderSecondary\r\n );\r\n\r\n const tabsNavStyle = computed(() => {\r\n return css`\r\n --active-tab-color: ${activeTabColor.value};\r\n --splitColor: ${splitColor.value};\r\n padding-top: 10px;\r\n display: flex;\r\n `;\r\n });\r\n\r\n const tabHoverBgStyle = computed(() => {\r\n return css`\r\n &:before {\r\n background: ${token.value.colorPrimaryBgHover};\r\n }\r\n `;\r\n });\r\n\r\n const closeBtnStyle = computed(() => {\r\n return css`\r\n &:hover {\r\n background: ${token.value.colorPrimaryBorderHover};\r\n border-radius: 50%;\r\n }\r\n `;\r\n });\r\n\r\n return {\r\n tabsNavStyle,\r\n tabHoverBgStyle,\r\n closeBtnStyle\r\n };\r\n}\r\n\r\nfunction useTab() {\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const store = useNavTabStore();\r\n const { list, activeKey } = storeToRefs(store);\r\n const { save, deleteTabs } = store;\r\n\r\n watch(\r\n () => route.fullPath,\r\n val => {\r\n save(route);\r\n activeKey.value = val;\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n\r\n const onChange = (key: string) => {\r\n if (key !== route.path) {\r\n // 匹配打开的标签路由数据\r\n const rs = list.value.filter(\r\n item => item.fullPath === key\r\n )[0];\r\n router.push(rs);\r\n }\r\n };\r\n\r\n const onClose = (\r\n $event: Event,\r\n key: string | undefined\r\n ) => {\r\n if (!key) return;\r\n //阻止冒泡\r\n $event.stopPropagation();\r\n // 删除标签\r\n deleteTabs(key);\r\n // 重新push已打开的路由\r\n const backRoute = list.value[list.value.length - 1];\r\n if (backRoute.fullPath) {\r\n router.push(backRoute.fullPath);\r\n }\r\n };\r\n\r\n const closeBtnStatus = (item: NavTabsState) => {\r\n // 如果meta有设置keepOpen则隐藏关闭按钮\r\n if (item.meta?.keepOpen) {\r\n return false;\r\n } else {\r\n // 如果只有一个标签,则隐藏关闭按钮\r\n return list.value.length !== 1;\r\n }\r\n };\r\n\r\n return {\r\n activeKey,\r\n list,\r\n closeBtnStatus,\r\n onChange,\r\n onClose\r\n };\r\n}\r\n\r\nfunction useTabsContextMenu() {\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n const store = useNavTabStore();\r\n const router = useRouter();\r\n\r\n const onContextMenuClick = (\r\n { key }: { key: string },\r\n item: any\r\n ) => {\r\n const targetKey = item.fullPath;\r\n switch (key) {\r\n case \"reload\":\r\n appContext?.onReloadPage?.(item);\r\n break;\r\n case \"other\":\r\n store.closeOtherTabs?.(targetKey);\r\n router.push(targetKey);\r\n break;\r\n case \"left\":\r\n store.closeLeftTabs?.(targetKey);\r\n router.push(targetKey);\r\n break;\r\n case \"right\":\r\n store.closeRightTabs?.(targetKey);\r\n router.push(targetKey);\r\n break;\r\n }\r\n };\r\n\r\n return {\r\n enableTabContextMenu:\r\n appContext?.enableTabContextMenu || false,\r\n onContextMenuClick\r\n };\r\n}\r\n</script>\r\n<template>\r\n <div class=\"tabs-nav-wrapper\" :class=\"tabsNavStyle\">\r\n <Search />\r\n <div class=\"d-tabs-nav\">\r\n <a-tabs\r\n size=\"small\"\r\n v-model:activeKey=\"activeKey\"\r\n type=\"card\"\r\n hide-add\r\n @change=\"onChange\"\r\n >\r\n <a-tab-pane\r\n :key=\"item.fullPath\"\r\n :closable=\"false\"\r\n v-for=\"item in list\"\r\n :class=\"{ active: activeKey === item.fullPath }\"\r\n >\r\n <template #tab>\r\n <div\r\n class=\"tab-hover-bg\"\r\n :class=\"tabHoverBgStyle\"\r\n ></div>\r\n <div class=\"tab-dividers\"></div>\r\n <div\r\n class=\"tab-item\"\r\n v-if=\"!enableTabContextMenu\"\r\n >\r\n {{ item.meta?.title || \"无标题\" }}\r\n </div>\r\n <a-dropdown\r\n :trigger=\"['contextmenu']\"\r\n v-if=\"enableTabContextMenu\"\r\n >\r\n <div class=\"tab-item\">\r\n {{ item.meta?.title || \"无标题\" }}\r\n </div>\r\n <template #overlay>\r\n <a-menu\r\n @click=\"e => onContextMenuClick(e, item)\"\r\n >\r\n <a-menu-item key=\"reload\">\r\n <ReloadOutlined />\r\n 重新加载\r\n </a-menu-item>\r\n <a-menu-item key=\"other\">\r\n <CloseOutlined />\r\n 关闭其他\r\n </a-menu-item>\r\n <a-menu-item key=\"right\"\r\n >关闭右侧标签\r\n </a-menu-item>\r\n <a-menu-item key=\"left\"\r\n >关闭左侧标签\r\n </a-menu-item>\r\n </a-menu>\r\n </template>\r\n </a-dropdown>\r\n\r\n <div\r\n class=\"tab-close\"\r\n v-if=\"closeBtnStatus(item)\"\r\n >\r\n <div\r\n class=\"close-btn\"\r\n :class=\"closeBtnStyle\"\r\n @click=\"onClose($event, item.fullPath)\"\r\n >\r\n <CloseOutlined />\r\n </div>\r\n </div>\r\n </template>\r\n </a-tab-pane>\r\n </a-tabs>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<style lang=\"scss\"></style>\r\n"],"names":["theme","computed","tabsNavStyle","css","tabHoverBgStyle","closeBtnStyle","useRoute","useRouter","store","useNavTabStore","list","activeKey","storeToRefs","watch","onChange","onClose","closeBtnStatus","inject","AppContextKey","onContextMenuClick","_createElementBlock","_normalizeClass","_unref","_createVNode","Search","_createElementVNode","_Fragment","_renderList","_createBlock","_openBlock","_toDisplayString","ReloadOutlined","CloseOutlined","_a"],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { defineComponent, createVNode } from 'vue';
|
|
2
|
+
import { useStyle } from './style.mjs';
|
|
2
3
|
import { cx } from '@emotion/css';
|
|
3
4
|
import { useDesign } from '../../hooks/useDesign.mjs';
|
|
4
5
|
import { withInstall } from '../../utils/withInstall.mjs';
|
|
5
|
-
import { useStyle } from './style.mjs';
|
|
6
6
|
|
|
7
7
|
"use strict";
|
|
8
8
|
const _Card = /* @__PURE__ */ defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.mjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["// components/card/index.tsx\r\nimport { defineComponent } from \"vue\";\r\n\r\nimport { cx } from \"@emotion/css\"; // 引入 cx\r\n\r\nimport { useDesign } from \"../../hooks/useDesign\"; // 引入我们刚才写的 hook\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\
|
|
1
|
+
{"version":3,"file":"Card.mjs","sources":["../../../../src/components/card/Card.tsx"],"sourcesContent":["// components/card/index.tsx\r\nimport { defineComponent } from \"vue\";\r\n\r\nimport { useStyle } from \"./style\";\r\nimport { cx } from \"@emotion/css\"; // 引入 cx\r\n\r\nimport { useDesign } from \"../../hooks/useDesign\"; // 引入我们刚才写的 hook\r\n\r\nimport { withInstall } from \"../../utils/withInstall\";\r\n\r\nconst _Card = defineComponent({\r\n name: \"DCard\",\r\n props: {\r\n title: String\r\n },\r\n setup(props, { slots }) {\r\n // 初始化 Design Hook,传入组件名 'card'\r\n const { getPrefixCls } = useDesign(\"card\");\r\n\r\n // 初始化 Emotion 样式\r\n const styles = useStyle();\r\n\r\n return () => {\r\n // 生成语义化类名\r\n const rootCls = getPrefixCls();\r\n const headerCls = getPrefixCls(\"head\");\r\n const iconCls = getPrefixCls(\"icon\");\r\n const titleCls = getPrefixCls(\"title\");\r\n const actionCls = getPrefixCls(\"action\");\r\n const bodyCls = getPrefixCls(\"body\");\r\n\r\n return (\r\n <div class={cx(rootCls, styles.container)}>\r\n {/* Header 区域 */}\r\n <div class={cx(headerCls, styles.header)}>\r\n {slots.icon && (\r\n <div class={cx(iconCls, styles.icon)}>\r\n {slots.icon()}\r\n </div>\r\n )}\r\n <div class={cx(titleCls, styles.header_title)}>\r\n {props.title}\r\n </div>\r\n </div>\r\n {/*action*/}\r\n {slots.action && (\r\n <div class={cx(actionCls, styles.action)}>\r\n {slots.action()}\r\n </div>\r\n )}\r\n\r\n {/* Body 区域 */}\r\n <div class={cx(bodyCls, styles.body)}>\r\n {slots.default?.()}\r\n </div>\r\n </div>\r\n );\r\n };\r\n }\r\n});\r\n\r\nexport const Card = withInstall(_Card);\r\n"],"names":["_Card","defineComponent","name","props","title","String","setup","slots","getPrefixCls","useDesign","styles","useStyle","rootCls","headerCls","iconCls","titleCls","actionCls","bodyCls","_createVNode","cx","container","header","icon","header_title","action","body","default","Card","withInstall"],"mappings":";;;;;;;AAUA,MAAMA,wBAAQC,eAAAA,CAAgB;AAAA,EAC5BC,IAAAA,EAAM,OAAA;AAAA,EACNC,KAAAA,EAAO;AAAA,IACLC,KAAAA,EAAOC;AAAAA,GACT;AAAA,EACAC,MAAMH,KAAAA,EAAO;AAAA,IAAEI;AAAAA,GAAM,EAAG;AAEtB,IAAA,MAAM;AAAA,MAAEC;AAAAA,KAAa,GAAIC,UAAU,MAAM,CAAA;AAGzC,IAAA,MAAMC,SAASC,QAAAA,EAAS;AAExB,IAAA,OAAO,MAAM;AAtBjB,MAAA,IAAA,EAAA;AAwBM,MAAA,MAAMC,UAAUJ,YAAAA,EAAa;AAC7B,MAAA,MAAMK,SAAAA,GAAYL,aAAa,MAAM,CAAA;AACrC,MAAA,MAAMM,OAAAA,GAAUN,aAAa,MAAM,CAAA;AACnC,MAAA,MAAMO,QAAAA,GAAWP,aAAa,OAAO,CAAA;AACrC,MAAA,MAAMQ,SAAAA,GAAYR,aAAa,QAAQ,CAAA;AACvC,MAAA,MAAMS,OAAAA,GAAUT,aAAa,MAAM,CAAA;AAEnC,MAAA,OAAAU,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,EAAAA,CAAGP,OAAAA,EAASF,MAAAA,CAAOU,SAAS;AAAA,OAAC,EAAA,CAAAF,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAE3BC,EAAAA,CAAGN,SAAAA,EAAWH,MAAAA,CAAOW,MAAM;AAAA,OAAC,EAAA,CACrCd,KAAAA,CAAMe,IAAAA,IAAIJ,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACGC,EAAAA,CAAGL,OAAAA,EAASJ,MAAAA,CAAOY,IAAI;AAAA,OAAC,EAAA,CACjCf,KAAAA,CAAMe,IAAAA,EAAM,CAAA,CAAA,EAEhBJ,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACWC,EAAAA,CAAGJ,QAAAA,EAAUL,MAAAA,CAAOa,YAAY;AAAA,OAAC,EAAA,CAC1CpB,KAAAA,CAAMC,KAAK,CAAA,CAAA,CAAA,CAAA,EAIfG,KAAAA,CAAMiB,MAAAA,IAAMN,WAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACCC,EAAAA,CAAGH,SAAAA,EAAWN,MAAAA,CAAOc,MAAM;AAAA,OAAC,EAAA,CACrCjB,KAAAA,CAAMiB,MAAAA,EAAQ,CAAA,CAAA,EAElBN,YAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAGWC,EAAAA,CAAGF,OAAAA,EAASP,MAAAA,CAAOe,IAAI;AAAA,SAAC,CAAA,CACjClB,EAAAA,GAAAA,KAAAA,CAAMmB,YAANnB,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,EAAAA,CAAAA,IAAAA,CAAAA,KAAAA,CAAiB,CAAA,CAAA,CAAA,CAAA;AAAA,IAI1B,CAAA;AAAA,EACF;AACF,CAAC,CAAA;AAEM,MAAMoB,IAAAA,GAAOC,YAAY5B,KAAK;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppContext.mjs","sources":["../../../../src/components/layout/AppContext.ts"],"sourcesContent":["import { ComputedRef, VNode } from \"vue\";\r\n\r\nexport const AppContextKey = Symbol(\"d-bsui-context\");\r\nexport interface AppContext {\r\n // 水印\r\n watermarkContent?: ComputedRef<{ content: string }>;\r\n renderMenuIcon?: (item: {\r\n icon: string;\r\n }) => VNode | VNode[];\r\n // 缓存方式 Name:组件名称 Path:路径缓\r\n keepAliveMode: \"Name\" | \"Path\";\r\n // 多标签重载\r\n onReloadPage?: () => void;\r\n // 多标签是否开启右键菜单\r\n enableTabContextMenu?: boolean;\r\n}\r\n"],"names":[],"mappings":";AAEO,MAAM,aAAA,GAAgB,OAAO,gBAAgB;;;;"}
|
|
1
|
+
{"version":3,"file":"AppContext.mjs","sources":["../../../../src/components/layout/AppContext.ts"],"sourcesContent":["import { ComputedRef, VNode } from \"vue\";\r\n\r\nexport const AppContextKey = Symbol(\"d-bsui-context\");\r\nexport interface AppContext {\r\n // 水印\r\n watermarkContent?: ComputedRef<{ content: string }>;\r\n renderMenuIcon?: (item: {\r\n icon: string;\r\n }) => VNode | VNode[];\r\n // 缓存方式 Name:组件名称 Path:路径缓\r\n keepAliveMode: \"Name\" | \"Path\";\r\n // 多标签重载\r\n onReloadPage?: (item: { [key: string]: unknown }) => void;\r\n // 多标签是否开启右键菜单\r\n enableTabContextMenu?: boolean;\r\n}\r\n"],"names":[],"mappings":";AAEO,MAAM,aAAA,GAAgB,OAAO,gBAAgB;;;;"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineComponent, provide, computed, watch, resolveComponent, createElementBlock, openBlock, Fragment, createVNode, createBlock, createCommentVNode, normalizeClass, unref, withCtx, createElementVNode, renderSlot } from 'vue';
|
|
1
|
+
import { defineComponent, provide, computed, ref, watch, resolveComponent, createElementBlock, openBlock, Fragment, createVNode, createBlock, createCommentVNode, normalizeClass, unref, withCtx, createElementVNode, renderSlot } from 'vue';
|
|
2
2
|
import { useRoute } from 'vue-router';
|
|
3
3
|
import { storeToRefs } from 'pinia';
|
|
4
4
|
import { AppContextKey } from './AppContext.mjs';
|
|
@@ -8,10 +8,8 @@ import { useAppStore, useKeepAliveStore } from '@ditari/store';
|
|
|
8
8
|
import { css } from '@emotion/css';
|
|
9
9
|
import './components/layout/HeaderLayout.vue.mjs';
|
|
10
10
|
import './components/layout/RouterContent.vue.mjs';
|
|
11
|
-
import './components/layout/RouterContentName.vue.mjs';
|
|
12
11
|
import _sfc_main$1 from './components/layout/HeaderLayout.vue2.mjs';
|
|
13
|
-
import _sfc_main$2 from './components/layout/
|
|
14
|
-
import _sfc_main$3 from './components/layout/RouterContent.vue2.mjs';
|
|
12
|
+
import _sfc_main$2 from './components/layout/RouterContent.vue2.mjs';
|
|
15
13
|
|
|
16
14
|
"use strict";
|
|
17
15
|
const _hoisted_1 = { class: "app-side" };
|
|
@@ -24,7 +22,6 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
24
22
|
isSettings: { type: Boolean, required: false, default: false },
|
|
25
23
|
renderMenuIcon: { type: Function, required: false, default: void 0 },
|
|
26
24
|
keepAliveMode: { type: String, required: false, default: "Name" },
|
|
27
|
-
onReloadPage: { type: Function, required: false },
|
|
28
25
|
enableTabContextMenu: { type: Boolean, required: false, default: true }
|
|
29
26
|
},
|
|
30
27
|
emits: ["onMenuClick"],
|
|
@@ -33,12 +30,13 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
33
30
|
const emits = __emit;
|
|
34
31
|
const { layout, modeConfig, sideTokenStyle } = storeToRefs(useAppStore());
|
|
35
32
|
const { onMenuClick } = useMenu();
|
|
33
|
+
const { routerContentRef, onReloadPage } = useReloadPage();
|
|
36
34
|
provide(AppContextKey, {
|
|
37
35
|
watermarkContent: computed(() => props.watermark || ""),
|
|
38
36
|
renderMenuIcon: props.renderMenuIcon,
|
|
39
37
|
keepAliveMode: props.keepAliveMode,
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
enableTabContextMenu: props.enableTabContextMenu,
|
|
39
|
+
onReloadPage
|
|
42
40
|
});
|
|
43
41
|
const {
|
|
44
42
|
layoutStyle,
|
|
@@ -47,6 +45,17 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
47
45
|
rightContentStyle
|
|
48
46
|
} = useStyle();
|
|
49
47
|
useKeepAlive();
|
|
48
|
+
function useReloadPage() {
|
|
49
|
+
const routerContentRef2 = ref();
|
|
50
|
+
function onReloadPage2(item) {
|
|
51
|
+
var _a;
|
|
52
|
+
(_a = routerContentRef2.value) == null ? void 0 : _a.reloadPage(item.fullPath);
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
routerContentRef: routerContentRef2,
|
|
56
|
+
onReloadPage: onReloadPage2
|
|
57
|
+
};
|
|
58
|
+
}
|
|
50
59
|
function useKeepAlive() {
|
|
51
60
|
const route = useRoute();
|
|
52
61
|
const { save } = useKeepAliveStore();
|
|
@@ -162,7 +171,16 @@ var _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
162
171
|
class: normalizeClass(unref(rightContentStyle))
|
|
163
172
|
}, {
|
|
164
173
|
default: withCtx(() => [
|
|
165
|
-
|
|
174
|
+
createVNode(
|
|
175
|
+
_sfc_main$2,
|
|
176
|
+
{
|
|
177
|
+
ref_key: "routerContentRef",
|
|
178
|
+
ref: routerContentRef
|
|
179
|
+
},
|
|
180
|
+
null,
|
|
181
|
+
512
|
|
182
|
+
/* NEED_PATCH */
|
|
183
|
+
)
|
|
166
184
|
]),
|
|
167
185
|
_: 1
|
|
168
186
|
/* STABLE */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.vue2.mjs","sources":["../../../../src/components/layout/Layout.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, provide, VNode, watch } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport DMenu from \"./components/menu/Menu\";\r\nimport SettingDrawer from \"./components/settings/SettingDrawer\";\r\nimport {\r\n useAppStore,\r\n useKeepAliveStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport HeaderLayout from \"./components/layout/HeaderLayout.vue\";\r\nimport RouterContent from \"./components/layout/RouterContent.vue\";\r\
|
|
1
|
+
{"version":3,"file":"Layout.vue2.mjs","sources":["../../../../src/components/layout/Layout.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { computed, provide, ref, VNode, watch } from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport { storeToRefs } from \"pinia\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport DMenu from \"./components/menu/Menu\";\r\nimport SettingDrawer from \"./components/settings/SettingDrawer\";\r\nimport {\r\n useAppStore,\r\n useKeepAliveStore\r\n} from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nimport HeaderLayout from \"./components/layout/HeaderLayout.vue\";\r\nimport RouterContent from \"./components/layout/RouterContent.vue\";\r\n\r\nconst props = defineProps({\n watermark: { type: Object, required: false, default: () => ({\r\n content: \"\"\r\n }) },\n isSettings: { type: Boolean, required: false, default: false },\n renderMenuIcon: { type: Function, required: false, default: undefined },\n keepAliveMode: { type: String, required: false, default: \"Name\" },\n enableTabContextMenu: { type: Boolean, required: false, default: true }\n});\r\nconst emits = defineEmits([\"onMenuClick\"]);\r\n\r\nconst { layout, modeConfig, sideTokenStyle } =\r\n storeToRefs(useAppStore());\r\n\r\nconst { onMenuClick } = useMenu();\r\nconst { routerContentRef, onReloadPage } = useReloadPage();\r\n\r\nprovide<AppContext>(AppContextKey, {\r\n watermarkContent: computed(() => props.watermark || \"\"),\r\n renderMenuIcon: props.renderMenuIcon,\r\n keepAliveMode: props.keepAliveMode,\r\n enableTabContextMenu: props.enableTabContextMenu,\r\n onReloadPage\r\n});\r\n\r\nconst {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n} = useStyle();\r\nuseKeepAlive();\r\n\r\nfunction useReloadPage() {\r\n const routerContentRef = ref();\r\n\r\n function onReloadPage(item: { [key: string]: unknown }) {\r\n routerContentRef.value?.reloadPage(item.fullPath);\r\n }\r\n return {\r\n routerContentRef,\r\n onReloadPage\r\n };\r\n}\r\n\r\nfunction useKeepAlive() {\r\n const route = useRoute();\r\n // 保存需要被缓存的标签\r\n const { save } = useKeepAliveStore();\r\n watch(\r\n () => route.path,\r\n () => {\r\n // 如果是组件名方式缓存,那么存入Name\r\n if (props.keepAliveMode === \"Name\") {\r\n save(route);\r\n }\r\n },\r\n {\r\n immediate: true\r\n }\r\n );\r\n}\r\n\r\nfunction useStyle() {\r\n const layoutStyle = css`\r\n height: 100vh;\r\n `;\r\n\r\n const transitionStyle = css`\r\n transition: margin-left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `;\r\n\r\n const left = computed(\r\n () =>\r\n `${layout.value.collapsed ? layout.value.collapsedWidth : layout.value.sideWidth}px`\r\n );\r\n\r\n const siderStyle = computed(\r\n () => css`\r\n position: fixed !important;\r\n top: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n width: ${layout.value.sideWidth}px;\r\n\r\n .app-side {\r\n height: 100%;\r\n display: flex;\r\n flex-direction: column;\r\n ${modeConfig.value.mode === \"light\"\r\n ? `background:${sideTokenStyle.value.bgColor};`\r\n : \"\"}\r\n }\r\n `\r\n );\r\n\r\n const rightStyle = computed(\r\n () => css`\r\n margin-left: ${left.value};\r\n ${transitionStyle}\r\n `\r\n );\r\n\r\n const rightContentStyle = computed(\r\n () => css`\r\n padding-top: ${layout.value.headerHeight}px;\r\n `\r\n );\r\n\r\n return {\r\n layoutStyle,\r\n siderStyle,\r\n rightStyle,\r\n rightContentStyle\r\n };\r\n}\r\n\r\nfunction useMenu() {\r\n const onMenuClick = (item: never) => {\r\n emits(\"onMenuClick\", item);\r\n };\r\n\r\n return {\r\n onMenuClick\r\n };\r\n}\r\n</script>\r\n\r\n<template>\r\n <a-layout :class=\"layoutStyle\">\r\n <a-layout-sider\r\n v-model:collapsed=\"layout.collapsed\"\r\n theme=\"light\"\r\n collapsible\r\n :trigger=\"null\"\r\n :class=\"siderStyle\"\r\n :width=\"layout.sideWidth\"\r\n >\r\n <div class=\"app-side\">\r\n <slot name=\"logo\"></slot>\r\n <d-menu @onMenuClick=\"onMenuClick\" />\r\n </div>\r\n </a-layout-sider>\r\n <a-layout :class=\"rightStyle\">\r\n <header-layout>\r\n <slot name=\"headerRight\"></slot>\r\n </header-layout>\r\n <a-layout-content :class=\"rightContentStyle\">\r\n <RouterContent ref=\"routerContentRef\" />\r\n </a-layout-content>\r\n </a-layout>\r\n </a-layout>\r\n\r\n <SettingDrawer v-if=\"isSettings\" />\r\n <a-back-top></a-back-top>\r\n</template>\r\n\r\n<style scoped></style>\r\n"],"names":["routerContentRef","onReloadPage","layoutStyle","siderStyle","rightStyle","rightContentStyle","onMenuClick","_createVNode","_unref","_createElementVNode","_renderSlot","DMenu","HeaderLayout","RouterContent","_createBlock"],"mappings":"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"}
|
|
@@ -123,7 +123,7 @@ const list = /* @__PURE__ */ defineComponent({
|
|
|
123
123
|
}
|
|
124
124
|
function useReload() {
|
|
125
125
|
let stopHandleWatch;
|
|
126
|
-
if (!route.name) {
|
|
126
|
+
if (!route.name && !route.meta.keepAlive) {
|
|
127
127
|
stopHandleWatch = _useWatch();
|
|
128
128
|
onUnmounted(() => {
|
|
129
129
|
stopHandleWatch == null ? void 0 : stopHandleWatch();
|
|
@@ -229,29 +229,32 @@ const list = /* @__PURE__ */ defineComponent({
|
|
|
229
229
|
},
|
|
230
230
|
"content": watermarkContent.value
|
|
231
231
|
}, {
|
|
232
|
-
default: () =>
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
"class": [cardStyle, leftCardStyle],
|
|
238
|
-
"bordered": false,
|
|
239
|
-
"bodyStyle": {
|
|
240
|
-
height: "100%",
|
|
241
|
-
padding: "10px"
|
|
242
|
-
}
|
|
243
|
-
}, {
|
|
244
|
-
default: () => {
|
|
245
|
-
var _a;
|
|
246
|
-
return [(_a = slots.left) == null ? void 0 : _a.call(slots)];
|
|
247
|
-
}
|
|
248
|
-
}) : null, createVNode(Flex, {
|
|
249
|
-
"vertical": true,
|
|
250
|
-
"flex": 1
|
|
232
|
+
default: () => {
|
|
233
|
+
var _a;
|
|
234
|
+
return [createVNode(Flex, {
|
|
235
|
+
"class": [listStyle.value, "app-list"],
|
|
236
|
+
"gap": 10
|
|
251
237
|
}, {
|
|
252
|
-
default: () => [
|
|
253
|
-
|
|
254
|
-
|
|
238
|
+
default: () => [slots.left ? createVNode(Card, {
|
|
239
|
+
"class": [cardStyle, leftCardStyle],
|
|
240
|
+
"bordered": false,
|
|
241
|
+
"bodyStyle": {
|
|
242
|
+
height: "100%",
|
|
243
|
+
padding: "10px"
|
|
244
|
+
}
|
|
245
|
+
}, {
|
|
246
|
+
default: () => {
|
|
247
|
+
var _a2;
|
|
248
|
+
return [(_a2 = slots.left) == null ? void 0 : _a2.call(slots)];
|
|
249
|
+
}
|
|
250
|
+
}) : null, createVNode(Flex, {
|
|
251
|
+
"vertical": true,
|
|
252
|
+
"flex": 1
|
|
253
|
+
}, {
|
|
254
|
+
default: () => [formLayout()(), tableLayout()()]
|
|
255
|
+
})]
|
|
256
|
+
}), (_a = slots.extra) == null ? void 0 : _a.call(slots)];
|
|
257
|
+
}
|
|
255
258
|
});
|
|
256
259
|
}
|
|
257
260
|
return () => useLayout();
|