@ditari/bsui 5.1.2 → 5.1.3
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 +25 -22
- package/dist/cjs/components/layout/List.cjs.map +1 -1
- package/dist/cjs/components/layout/Show.cjs +6 -1
- 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 +25 -22
- package/dist/esm/components/layout/List.mjs.map +1 -1
- package/dist/esm/components/layout/Show.mjs +6 -1
- 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/List.d.ts.map +1 -1
- package/dist/types/components/layout/Show.d.ts +9 -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
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var vue = require('vue');
|
|
4
|
+
var style = require('./style.cjs');
|
|
4
5
|
var css = require('@emotion/css');
|
|
5
6
|
var useDesign = require('../../hooks/useDesign.cjs');
|
|
6
7
|
var withInstall = require('../../utils/withInstall.cjs');
|
|
7
|
-
var style = require('./style.cjs');
|
|
8
8
|
|
|
9
9
|
"use strict";
|
|
10
10
|
const _Card = /* @__PURE__ */ vue.defineComponent({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.cjs","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.cjs","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,mBAAAA,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,oBAAU,MAAM,CAAA;AAGzC,IAAA,MAAMC,SAASC,cAAAA,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,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACcC,MAAAA,CAAGP,OAAAA,EAASF,MAAAA,CAAOU,SAAS;AAAA,OAAC,EAAA,CAAAF,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAE3BC,MAAAA,CAAGN,SAAAA,EAAWH,MAAAA,CAAOW,MAAM;AAAA,OAAC,EAAA,CACrCd,KAAAA,CAAMe,IAAAA,IAAIJ,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACGC,MAAAA,CAAGL,OAAAA,EAASJ,MAAAA,CAAOY,IAAI;AAAA,OAAC,EAAA,CACjCf,KAAAA,CAAMe,IAAAA,EAAM,CAAA,CAAA,EAEhBJ,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACWC,MAAAA,CAAGJ,QAAAA,EAAUL,MAAAA,CAAOa,YAAY;AAAA,OAAC,EAAA,CAC1CpB,KAAAA,CAAMC,KAAK,CAAA,CAAA,CAAA,CAAA,EAIfG,KAAAA,CAAMiB,MAAAA,IAAMN,eAAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EACCC,MAAAA,CAAGH,SAAAA,EAAWN,MAAAA,CAAOc,MAAM;AAAA,OAAC,EAAA,CACrCjB,KAAAA,CAAMiB,MAAAA,EAAQ,CAAA,CAAA,EAElBN,gBAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAGWC,MAAAA,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,wBAAY5B,KAAK;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppContext.cjs","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.cjs","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;;;;"}
|
|
@@ -12,9 +12,7 @@ var store = require('@ditari/store');
|
|
|
12
12
|
var css = require('@emotion/css');
|
|
13
13
|
require('./components/layout/HeaderLayout.vue.cjs');
|
|
14
14
|
require('./components/layout/RouterContent.vue.cjs');
|
|
15
|
-
require('./components/layout/RouterContentName.vue.cjs');
|
|
16
15
|
var HeaderLayout_vue_vue_type_script_setup_true_lang = require('./components/layout/HeaderLayout.vue2.cjs');
|
|
17
|
-
var RouterContentName_vue_vue_type_script_setup_true_lang = require('./components/layout/RouterContentName.vue2.cjs');
|
|
18
16
|
var RouterContent_vue_vue_type_script_setup_true_lang = require('./components/layout/RouterContent.vue2.cjs');
|
|
19
17
|
|
|
20
18
|
"use strict";
|
|
@@ -28,7 +26,6 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
28
26
|
isSettings: { type: Boolean, required: false, default: false },
|
|
29
27
|
renderMenuIcon: { type: Function, required: false, default: void 0 },
|
|
30
28
|
keepAliveMode: { type: String, required: false, default: "Name" },
|
|
31
|
-
onReloadPage: { type: Function, required: false },
|
|
32
29
|
enableTabContextMenu: { type: Boolean, required: false, default: true }
|
|
33
30
|
},
|
|
34
31
|
emits: ["onMenuClick"],
|
|
@@ -37,12 +34,13 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
37
34
|
const emits = __emit;
|
|
38
35
|
const { layout, modeConfig, sideTokenStyle } = pinia.storeToRefs(store.useAppStore());
|
|
39
36
|
const { onMenuClick } = useMenu();
|
|
37
|
+
const { routerContentRef, onReloadPage } = useReloadPage();
|
|
40
38
|
vue.provide(AppContext.AppContextKey, {
|
|
41
39
|
watermarkContent: vue.computed(() => props.watermark || ""),
|
|
42
40
|
renderMenuIcon: props.renderMenuIcon,
|
|
43
41
|
keepAliveMode: props.keepAliveMode,
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
enableTabContextMenu: props.enableTabContextMenu,
|
|
43
|
+
onReloadPage
|
|
46
44
|
});
|
|
47
45
|
const {
|
|
48
46
|
layoutStyle,
|
|
@@ -51,6 +49,17 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
51
49
|
rightContentStyle
|
|
52
50
|
} = useStyle();
|
|
53
51
|
useKeepAlive();
|
|
52
|
+
function useReloadPage() {
|
|
53
|
+
const routerContentRef2 = vue.ref();
|
|
54
|
+
function onReloadPage2(item) {
|
|
55
|
+
var _a;
|
|
56
|
+
(_a = routerContentRef2.value) == null ? void 0 : _a.reloadPage(item.fullPath);
|
|
57
|
+
}
|
|
58
|
+
return {
|
|
59
|
+
routerContentRef: routerContentRef2,
|
|
60
|
+
onReloadPage: onReloadPage2
|
|
61
|
+
};
|
|
62
|
+
}
|
|
54
63
|
function useKeepAlive() {
|
|
55
64
|
const route = vueRouter.useRoute();
|
|
56
65
|
const { save } = store.useKeepAliveStore();
|
|
@@ -166,7 +175,16 @@ var _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
166
175
|
class: vue.normalizeClass(vue.unref(rightContentStyle))
|
|
167
176
|
}, {
|
|
168
177
|
default: vue.withCtx(() => [
|
|
169
|
-
|
|
178
|
+
vue.createVNode(
|
|
179
|
+
RouterContent_vue_vue_type_script_setup_true_lang.default,
|
|
180
|
+
{
|
|
181
|
+
ref_key: "routerContentRef",
|
|
182
|
+
ref: routerContentRef
|
|
183
|
+
},
|
|
184
|
+
null,
|
|
185
|
+
512
|
|
186
|
+
/* NEED_PATCH */
|
|
187
|
+
)
|
|
170
188
|
]),
|
|
171
189
|
_: 1
|
|
172
190
|
/* STABLE */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.vue2.cjs","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.cjs","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":["storeToRefs","useAppStore","provide","AppContextKey","computed","routerContentRef","ref","onReloadPage","useRoute","useKeepAliveStore","watch","layoutStyle","css","siderStyle","rightStyle","rightContentStyle","onMenuClick","_createVNode","_unref","_createElementVNode","_renderSlot","DMenu","HeaderLayout","RouterContent","_createBlock","SettingDrawer"],"mappings":"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"}
|
|
@@ -233,29 +233,32 @@ const list = /* @__PURE__ */ vue.defineComponent({
|
|
|
233
233
|
},
|
|
234
234
|
"content": watermarkContent.value
|
|
235
235
|
}, {
|
|
236
|
-
default: () =>
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
"class": [cardStyle, leftCardStyle],
|
|
242
|
-
"bordered": false,
|
|
243
|
-
"bodyStyle": {
|
|
244
|
-
height: "100%",
|
|
245
|
-
padding: "10px"
|
|
246
|
-
}
|
|
247
|
-
}, {
|
|
248
|
-
default: () => {
|
|
249
|
-
var _a;
|
|
250
|
-
return [(_a = slots.left) == null ? void 0 : _a.call(slots)];
|
|
251
|
-
}
|
|
252
|
-
}) : null, vue.createVNode(antDesignVue.Flex, {
|
|
253
|
-
"vertical": true,
|
|
254
|
-
"flex": 1
|
|
236
|
+
default: () => {
|
|
237
|
+
var _a;
|
|
238
|
+
return [vue.createVNode(antDesignVue.Flex, {
|
|
239
|
+
"class": [listStyle.value, "app-list"],
|
|
240
|
+
"gap": 10
|
|
255
241
|
}, {
|
|
256
|
-
default: () => [
|
|
257
|
-
|
|
258
|
-
|
|
242
|
+
default: () => [slots.left ? vue.createVNode(antDesignVue.Card, {
|
|
243
|
+
"class": [cardStyle, leftCardStyle],
|
|
244
|
+
"bordered": false,
|
|
245
|
+
"bodyStyle": {
|
|
246
|
+
height: "100%",
|
|
247
|
+
padding: "10px"
|
|
248
|
+
}
|
|
249
|
+
}, {
|
|
250
|
+
default: () => {
|
|
251
|
+
var _a2;
|
|
252
|
+
return [(_a2 = slots.left) == null ? void 0 : _a2.call(slots)];
|
|
253
|
+
}
|
|
254
|
+
}) : null, vue.createVNode(antDesignVue.Flex, {
|
|
255
|
+
"vertical": true,
|
|
256
|
+
"flex": 1
|
|
257
|
+
}, {
|
|
258
|
+
default: () => [formLayout()(), tableLayout()()]
|
|
259
|
+
})]
|
|
260
|
+
}), (_a = slots.extra) == null ? void 0 : _a.call(slots)];
|
|
261
|
+
}
|
|
259
262
|
});
|
|
260
263
|
}
|
|
261
264
|
return () => useLayout();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"List.cjs","sources":["../../../../src/components/layout/List.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n nextTick,\r\n onActivated,\r\n onDeactivated,\r\n onMounted,\r\n onUnmounted,\r\n ref,\r\n watch,\r\n type WatchStopHandle\r\n} from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport {\r\n Card,\r\n Flex,\r\n Space,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useElementSize } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nconst tableRootStyle = css`\r\n height: 100%;\r\n position: relative;\r\n overflow: hidden;\r\n`;\r\n\r\nconst list = defineComponent({\r\n name: \"DListLayout\",\r\n emits: [\"refresh\"],\r\n setup(_, { slots, emit }) {\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const route = useRoute();\r\n const { refresh } = storeToRefs(useAppStore());\r\n const {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n } = useTableHeight();\r\n const { formRef } = useForm();\r\n useReload();\r\n // 使用 computed 来动态计算样式\r\n const maskDivStyle = computed(() => {\r\n return css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n background: white;\r\n display: ${tableVisible.value ? \"block\" : \"none\"};\r\n `;\r\n });\r\n\r\n const tableWrapperStyle = css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n overflow: hidden;\r\n `;\r\n\r\n const cardStyle = css`\r\n box-shadow: none !important;\r\n `;\r\n\r\n const leftCardStyle = css`\r\n .ant-card-body {\r\n overflow-y: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n /* Webkit 浏览器 */\r\n\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `;\r\n\r\n const listStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n height: 100%;\r\n //height: calc(100vh - 44px);\r\n `\r\n );\r\n\r\n onMounted(() => {\r\n playTableHeight();\r\n });\r\n\r\n function useTableHeight() {\r\n const tableRef = ref();\r\n const height = ref(0);\r\n const tableVisible = ref(true);\r\n\r\n function playTableHeight() {\r\n tableVisible.value = true;\r\n height.value = tableRef?.value?.$el.offsetHeight;\r\n nextTick(() => {\r\n setTimeout(() => {\r\n tableVisible.value = false;\r\n }, 10);\r\n });\r\n }\r\n\r\n return {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n };\r\n }\r\n\r\n function useForm() {\r\n const formRef = ref(null);\r\n const { height: formHeight } =\r\n useElementSize(formRef);\r\n watch(\r\n () => formHeight.value,\r\n () => {\r\n nextTick(() => {\r\n playTableHeight();\r\n });\r\n }\r\n );\r\n\r\n return {\r\n formRef\r\n };\r\n }\r\n\r\n // 处理标签重载\r\n function useReload() {\r\n let stopHandleWatch: WatchStopHandle;\r\n // !route.meta.keepAlive\r\n if (!route.name) {\r\n stopHandleWatch = _useWatch();\r\n // 卸载未缓存的组件\r\n onUnmounted(() => {\r\n stopHandleWatch?.();\r\n });\r\n } else {\r\n // 激活缓存页面\r\n onActivated(() => {\r\n if (refresh.value) {\r\n refresh.value = false;\r\n emit(\"refresh\");\r\n }\r\n stopHandleWatch = _useWatch();\r\n });\r\n // 离开缓存页面\r\n onDeactivated(() => {\r\n stopHandleWatch?.();\r\n });\r\n }\r\n\r\n function _useWatch() {\r\n //点击了标签重载图标\r\n return watch(\r\n () => refresh.value,\r\n val => {\r\n if (val) {\r\n // 发送刷新事件到列表页面\r\n emit(\"refresh\");\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n function useLayout() {\r\n function formLayout() {\r\n return () =>\r\n slots.form && (\r\n <Card\r\n class={cardStyle}\r\n ref={formRef}\r\n style={{ marginBottom: \"10px\" }}\r\n bodyStyle={{ padding: \"10px 10px 0 10px\" }}\r\n bordered={false}\r\n >\r\n {slots.form()}\r\n </Card>\r\n );\r\n }\r\n\r\n function tableLayout() {\r\n return () => (\r\n <Flex flex={1} vertical={true}>\r\n <Card\r\n class={cardStyle}\r\n style={{ height: \"100%\" }}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n bordered={false}\r\n >\r\n <Flex\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <Space style={{ marginBottom: \"6px\" }}>\r\n {slots.tools?.()}\r\n </Space>\r\n <Flex\r\n ref={tableRef}\r\n flex={1}\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <div class={tableRootStyle}>\r\n <div class={maskDivStyle.value}></div>\r\n <div class={tableWrapperStyle}>\r\n {slots.table?.({\r\n height: height.value\r\n })}\r\n </div>\r\n </div>\r\n </Flex>\r\n </Flex>\r\n </Card>\r\n </Flex>\r\n );\r\n }\r\n\r\n return (\r\n <Watermark\r\n style={{ height: \"100%\" }}\r\n content={watermarkContent.value}\r\n >\r\n <Flex\r\n class={[listStyle.value, \"app-list\"]}\r\n gap={10}\r\n >\r\n {slots.left ? (\r\n <Card\r\n class={[cardStyle, leftCardStyle]}\r\n bordered={false}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n >\r\n {slots.left?.()}\r\n </Card>\r\n ) : null}\r\n <Flex vertical={true} flex={1}>\r\n {formLayout()()}\r\n {tableLayout()()}\r\n </Flex>\r\n </Flex>\r\n </Watermark>\r\n );\r\n }\r\n\r\n return () => useLayout();\r\n }\r\n});\r\n\r\nexport default list;\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","tableRootStyle","css","list","defineComponent","name","emits","setup","_","slots","emit","appContext","inject","AppContextKey","watermarkContent","computed","value","content","route","useRoute","refresh","storeToRefs","useAppStore","tableRef","height","tableVisible","playTableHeight","useTableHeight","formRef","useForm","useReload","maskDivStyle","tableWrapperStyle","cardStyle","leftCardStyle","listStyle","onMounted","ref","$el","offsetHeight","nextTick","setTimeout","formHeight","useElementSize","watch","stopHandleWatch","_useWatch","onUnmounted","onActivated","onDeactivated","val","useLayout","formLayout","_slot","form","_createVNode","Card","marginBottom","padding","default","tableLayout","Flex","Space","tools","table","Watermark","left"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"List.cjs","sources":["../../../../src/components/layout/List.tsx"],"sourcesContent":["import {\r\n computed,\r\n defineComponent,\r\n inject,\r\n nextTick,\r\n onActivated,\r\n onDeactivated,\r\n onMounted,\r\n onUnmounted,\r\n ref,\r\n watch,\r\n type WatchStopHandle\r\n} from \"vue\";\r\nimport { useRoute } from \"vue-router\";\r\nimport {\r\n Card,\r\n Flex,\r\n Space,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useElementSize } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { useAppStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\n\r\nconst tableRootStyle = css`\r\n height: 100%;\r\n position: relative;\r\n overflow: hidden;\r\n`;\r\n\r\nconst list = defineComponent({\r\n name: \"DListLayout\",\r\n emits: [\"refresh\"],\r\n setup(_, { slots, emit }) {\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const route = useRoute();\r\n const { refresh } = storeToRefs(useAppStore());\r\n const {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n } = useTableHeight();\r\n const { formRef } = useForm();\r\n useReload();\r\n // 使用 computed 来动态计算样式\r\n const maskDivStyle = computed(() => {\r\n return css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n z-index: 1;\r\n background: white;\r\n display: ${tableVisible.value ? \"block\" : \"none\"};\r\n `;\r\n });\r\n\r\n const tableWrapperStyle = css`\r\n position: absolute;\r\n top: 0;\r\n right: 0;\r\n bottom: 0;\r\n left: 0;\r\n overflow: hidden;\r\n `;\r\n\r\n const cardStyle = css`\r\n box-shadow: none !important;\r\n `;\r\n\r\n const leftCardStyle = css`\r\n .ant-card-body {\r\n overflow-y: scroll;\r\n -ms-overflow-style: none; /* 对 IE 和 Edge 生效 */\r\n scrollbar-width: none; /* 对 Firefox 生效 */\r\n\r\n /* Webkit 浏览器 */\r\n\r\n ::-webkit-scrollbar {\r\n display: none;\r\n }\r\n }\r\n `;\r\n\r\n const listStyle = computed(\r\n () => css`\r\n padding: 10px;\r\n height: 100%;\r\n //height: calc(100vh - 44px);\r\n `\r\n );\r\n\r\n onMounted(() => {\r\n playTableHeight();\r\n });\r\n\r\n function useTableHeight() {\r\n const tableRef = ref();\r\n const height = ref(0);\r\n const tableVisible = ref(true);\r\n\r\n function playTableHeight() {\r\n tableVisible.value = true;\r\n height.value = tableRef?.value?.$el.offsetHeight;\r\n nextTick(() => {\r\n setTimeout(() => {\r\n tableVisible.value = false;\r\n }, 10);\r\n });\r\n }\r\n\r\n return {\r\n tableRef,\r\n height,\r\n tableVisible,\r\n playTableHeight\r\n };\r\n }\r\n\r\n function useForm() {\r\n const formRef = ref(null);\r\n const { height: formHeight } =\r\n useElementSize(formRef);\r\n watch(\r\n () => formHeight.value,\r\n () => {\r\n nextTick(() => {\r\n playTableHeight();\r\n });\r\n }\r\n );\r\n\r\n return {\r\n formRef\r\n };\r\n }\r\n\r\n // 处理标签重载\r\n function useReload() {\r\n let stopHandleWatch: WatchStopHandle;\r\n // !route.meta.keepAlive\r\n if (!route.name) {\r\n stopHandleWatch = _useWatch();\r\n // 卸载未缓存的组件\r\n onUnmounted(() => {\r\n stopHandleWatch?.();\r\n });\r\n } else {\r\n // 激活缓存页面\r\n onActivated(() => {\r\n if (refresh.value) {\r\n refresh.value = false;\r\n emit(\"refresh\");\r\n }\r\n stopHandleWatch = _useWatch();\r\n });\r\n // 离开缓存页面\r\n onDeactivated(() => {\r\n stopHandleWatch?.();\r\n });\r\n }\r\n\r\n function _useWatch() {\r\n //点击了标签重载图标\r\n return watch(\r\n () => refresh.value,\r\n val => {\r\n if (val) {\r\n // 发送刷新事件到列表页面\r\n emit(\"refresh\");\r\n }\r\n }\r\n );\r\n }\r\n }\r\n\r\n function useLayout() {\r\n function formLayout() {\r\n return () =>\r\n slots.form && (\r\n <Card\r\n class={cardStyle}\r\n ref={formRef}\r\n style={{ marginBottom: \"10px\" }}\r\n bodyStyle={{ padding: \"10px 10px 0 10px\" }}\r\n bordered={false}\r\n >\r\n {slots.form()}\r\n </Card>\r\n );\r\n }\r\n\r\n function tableLayout() {\r\n return () => (\r\n <Flex flex={1} vertical={true}>\r\n <Card\r\n class={cardStyle}\r\n style={{ height: \"100%\" }}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n bordered={false}\r\n >\r\n <Flex\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <Space style={{ marginBottom: \"6px\" }}>\r\n {slots.tools?.()}\r\n </Space>\r\n <Flex\r\n ref={tableRef}\r\n flex={1}\r\n style={{ height: \"100%\" }}\r\n vertical={true}\r\n >\r\n <div class={tableRootStyle}>\r\n <div class={maskDivStyle.value}></div>\r\n <div class={tableWrapperStyle}>\r\n {slots.table?.({\r\n height: height.value\r\n })}\r\n </div>\r\n </div>\r\n </Flex>\r\n </Flex>\r\n </Card>\r\n </Flex>\r\n );\r\n }\r\n\r\n return (\r\n <Watermark\r\n style={{ height: \"100%\" }}\r\n content={watermarkContent.value}\r\n >\r\n <Flex\r\n class={[listStyle.value, \"app-list\"]}\r\n gap={10}\r\n >\r\n {slots.left ? (\r\n <Card\r\n class={[cardStyle, leftCardStyle]}\r\n bordered={false}\r\n bodyStyle={{\r\n height: \"100%\",\r\n padding: \"10px\"\r\n }}\r\n >\r\n {slots.left?.()}\r\n </Card>\r\n ) : null}\r\n <Flex vertical={true} flex={1}>\r\n {formLayout()()}\r\n {tableLayout()()}\r\n </Flex>\r\n </Flex>\r\n {slots.extra?.()}\r\n </Watermark>\r\n );\r\n }\r\n\r\n return () => useLayout();\r\n }\r\n});\r\n\r\nexport default list;\r\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","tableRootStyle","css","list","defineComponent","name","emits","setup","_","slots","emit","appContext","inject","AppContextKey","watermarkContent","computed","value","content","route","useRoute","refresh","storeToRefs","useAppStore","tableRef","height","tableVisible","playTableHeight","useTableHeight","formRef","useForm","useReload","maskDivStyle","tableWrapperStyle","cardStyle","leftCardStyle","listStyle","onMounted","ref","$el","offsetHeight","nextTick","setTimeout","formHeight","useElementSize","watch","stopHandleWatch","_useWatch","onUnmounted","onActivated","onDeactivated","val","useLayout","formLayout","_slot","form","_createVNode","Card","marginBottom","padding","default","tableLayout","Flex","Space","tools","table","Watermark","left","_a","extra"],"mappings":"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"}
|
|
@@ -18,6 +18,10 @@ const getProps = () => {
|
|
|
18
18
|
close: {
|
|
19
19
|
type: Boolean,
|
|
20
20
|
default: false
|
|
21
|
+
},
|
|
22
|
+
loading: {
|
|
23
|
+
type: Boolean,
|
|
24
|
+
default: false
|
|
21
25
|
}
|
|
22
26
|
};
|
|
23
27
|
};
|
|
@@ -39,6 +43,7 @@ const show = /* @__PURE__ */ vue.defineComponent({
|
|
|
39
43
|
const {
|
|
40
44
|
token
|
|
41
45
|
} = useToken();
|
|
46
|
+
const loading = vue.computed(() => props.loading);
|
|
42
47
|
const {
|
|
43
48
|
layout,
|
|
44
49
|
modeConfig,
|
|
@@ -147,7 +152,7 @@ const show = /* @__PURE__ */ vue.defineComponent({
|
|
|
147
152
|
}
|
|
148
153
|
}), vue.createVNode("div", {
|
|
149
154
|
"class": contentStyle.value
|
|
150
|
-
}, [(_a = slots.default) == null ? void 0 : _a.call(slots)]), slots.bottomFooter ? vue.createVNode("div", {
|
|
155
|
+
}, [loading.value ? vue.createVNode("div", null, null) : (_a = slots.default) == null ? void 0 : _a.call(slots)]), slots.bottomFooter ? vue.createVNode("div", {
|
|
151
156
|
"class": footerStyle.value
|
|
152
157
|
}, [(_b = slots.bottomFooter) == null ? void 0 : _b.call(slots)]) : null];
|
|
153
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Show.cjs","sources":["../../../../src/components/layout/Show.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n inject,\r\n ref\r\n} from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport {\r\n Flex,\r\n PageHeader,\r\n theme,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useWindowScroll } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst getProps = () => {\r\n return {\r\n close: {\r\n type: Boolean,\r\n default: false\r\n }\r\n };\r\n};\r\nconst show = defineComponent({\r\n name: \"DShowLayout\",\r\n props: getProps(),\r\n setup(props, { slots, expose }) {\r\n const { useToken } = theme;\r\n\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const { layout, modeConfig, refresh } =\r\n storeToRefs(useAppStore());\r\n const { deleteTabs } = useNavTabStore();\r\n\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const { y } = useWindowScroll();\r\n\r\n const pageHeaderStyle = computed(\r\n () => css`\r\n position: sticky;\r\n top: ${layout.value.headerHeight}px;\r\n z-index: 10;\r\n padding: 0;\r\n transition: all 0.3s;\r\n background-color: ${token.value.colorBgLayout};\r\n\r\n ${y.value > 0\r\n ? \"box-shadow:0 10px 10px rgba(0, 0, 0, 0.15);\"\r\n : \"\"}\r\n .ant-page-header-back {\r\n height: 100%;\r\n margin-right: 0;\r\n\r\n .ant-page-header-back-button {\r\n height: 100%;\r\n padding: 0 6px !important;\r\n display: flex !important;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n }\r\n\r\n .ant-page-header-heading-title {\r\n font-size: 14px;\r\n }\r\n `\r\n );\r\n const contentStyle = computed(\r\n () => css`\r\n padding: 10px 10px\r\n ${slots.bottomFooter ? \"50px\" : \"0\"};\r\n background: ${token.value.colorBgLayout};\r\n `\r\n );\r\n const footerStyle = computed(\r\n () => css`\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n height: 50px;\r\n left: ${layout.value.collapsed\r\n ? layout.value.collapsedWidth\r\n : layout.value.sideWidth}px;\r\n z-index: 10;\r\n padding: 10px;\r\n background: ${modeConfig.value.mode !== \"light\"\r\n ? token.value.colorBgContainer\r\n : \"#fff\"};\r\n box-shadow: 6px 0 10px rgba(0, 0, 0, 0.15);\r\n transition: left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `\r\n );\r\n const pageTitle = () => (\r\n <div>{route.meta.title || \"无标题\"}</div>\r\n );\r\n const ghost = ref(false);\r\n\r\n const onBack = () => {\r\n if (props.close) {\r\n // 返回关闭标签\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n } else {\r\n // 不关闭标签\r\n router.go(-1);\r\n }\r\n };\r\n\r\n const onClosePage = () => {\r\n refresh.value = true;\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n };\r\n\r\n expose({\r\n close: onClosePage\r\n });\r\n\r\n return () => (\r\n <Watermark content={watermarkContent.value}>\r\n <Flex vertical={true}>\r\n <PageHeader\r\n ghost={ghost.value}\r\n class={pageHeaderStyle.value}\r\n onBack={() => onBack()}\r\n title={pageTitle()}\r\n >\r\n {{\r\n backIcon: () => (\r\n <div>\r\n <LeftOutlined\r\n style={{ fontSize: \"26px\" }}\r\n />\r\n </div>\r\n ),\r\n extra: () => slots.extra?.(),\r\n footer: () => slots.footer?.(),\r\n subTitle: () => slots.subTitle?.()\r\n }}\r\n </PageHeader>\r\n <div class={contentStyle.value}>\r\n {slots.default?.()}\r\n </div>\r\n {slots.bottomFooter ? (\r\n <div class={footerStyle.value}>\r\n {slots.bottomFooter?.()}\r\n </div>\r\n ) : null}\r\n </Flex>\r\n </Watermark>\r\n );\r\n }\r\n});\r\n\r\nexport default show;\r\n"],"names":["getProps","close","type","Boolean","default","show","defineComponent","name","props","setup","slots","expose","useToken","theme","appContext","inject","AppContextKey","watermarkContent","computed","value","content","token","layout","modeConfig","refresh","storeToRefs","useAppStore","deleteTabs","useNavTabStore","route","useRoute","router","useRouter","y","useWindowScroll","pageHeaderStyle","css","headerHeight","colorBgLayout","contentStyle","bottomFooter","footerStyle","collapsed","collapsedWidth","sideWidth","mode","colorBgContainer","pageTitle","_createVNode","meta","title","ghost","ref","onBack","fullPath","go","onClosePage","Watermark","Flex","PageHeader","backIcon","LeftOutlined","fontSize","extra","_a","footer","subTitle"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Show.cjs","sources":["../../../../src/components/layout/Show.tsx"],"sourcesContent":["import {\r\n computed,\r\n ComputedRef,\r\n defineComponent,\r\n inject,\r\n ref\r\n} from \"vue\";\r\nimport { useRoute, useRouter } from \"vue-router\";\r\nimport {\r\n Flex,\r\n PageHeader,\r\n Spin,\r\n theme,\r\n Watermark\r\n} from \"ant-design-vue\";\r\nimport { storeToRefs } from \"pinia\";\r\nimport { useWindowScroll } from \"@vueuse/core\";\r\n\r\nimport { AppContext, AppContextKey } from \"./AppContext\";\r\nimport { LeftOutlined } from \"@ant-design/icons-vue\";\r\nimport { useAppStore, useNavTabStore } from \"@ditari/store\";\r\nimport { css } from \"@emotion/css\";\r\nimport type { GlobalToken } from \"ant-design-vue/es/theme/interface\";\r\n\r\nconst getProps = () => {\r\n return {\r\n close: {\r\n type: Boolean,\r\n default: false\r\n },\r\n loading: {\r\n type: Boolean,\r\n default: false\r\n }\r\n };\r\n};\r\nconst show = defineComponent({\r\n name: \"DShowLayout\",\r\n props: getProps(),\r\n setup(props, { slots, expose }) {\r\n const { useToken } = theme;\r\n\r\n const appContext = inject<AppContext | null>(\r\n AppContextKey,\r\n null\r\n );\r\n\r\n const watermarkContent = computed(\r\n () => appContext?.watermarkContent?.value.content\r\n );\r\n\r\n const { token }: { token: ComputedRef<GlobalToken> } =\r\n useToken();\r\n\r\n const loading = computed(() => props.loading);\r\n\r\n const { layout, modeConfig, refresh } =\r\n storeToRefs(useAppStore());\r\n const { deleteTabs } = useNavTabStore();\r\n\r\n const route = useRoute();\r\n const router = useRouter();\r\n\r\n const { y } = useWindowScroll();\r\n\r\n const pageHeaderStyle = computed(\r\n () => css`\r\n position: sticky;\r\n top: ${layout.value.headerHeight}px;\r\n z-index: 10;\r\n padding: 0;\r\n transition: all 0.3s;\r\n background-color: ${token.value.colorBgLayout};\r\n\r\n ${y.value > 0\r\n ? \"box-shadow:0 10px 10px rgba(0, 0, 0, 0.15);\"\r\n : \"\"}\r\n .ant-page-header-back {\r\n height: 100%;\r\n margin-right: 0;\r\n\r\n .ant-page-header-back-button {\r\n height: 100%;\r\n padding: 0 6px !important;\r\n display: flex !important;\r\n align-items: center;\r\n justify-content: center;\r\n }\r\n }\r\n\r\n .ant-page-header-heading-title {\r\n font-size: 14px;\r\n }\r\n `\r\n );\r\n const contentStyle = computed(\r\n () => css`\r\n padding: 10px 10px\r\n ${slots.bottomFooter ? \"50px\" : \"0\"};\r\n background: ${token.value.colorBgLayout};\r\n `\r\n );\r\n const footerStyle = computed(\r\n () => css`\r\n position: fixed;\r\n right: 0;\r\n bottom: 0;\r\n height: 50px;\r\n left: ${layout.value.collapsed\r\n ? layout.value.collapsedWidth\r\n : layout.value.sideWidth}px;\r\n z-index: 10;\r\n padding: 10px;\r\n background: ${modeConfig.value.mode !== \"light\"\r\n ? token.value.colorBgContainer\r\n : \"#fff\"};\r\n box-shadow: 6px 0 10px rgba(0, 0, 0, 0.15);\r\n transition: left 0.4s\r\n cubic-bezier(0.22, 1.2, 0.36, 1);\r\n `\r\n );\r\n const pageTitle = () => (\r\n <div>{route.meta.title || \"无标题\"}</div>\r\n );\r\n const ghost = ref(false);\r\n\r\n const onBack = () => {\r\n if (props.close) {\r\n // 返回关闭标签\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n } else {\r\n // 不关闭标签\r\n router.go(-1);\r\n }\r\n };\r\n\r\n const onClosePage = () => {\r\n refresh.value = true;\r\n deleteTabs(route.fullPath);\r\n router.go(-1);\r\n };\r\n\r\n expose({\r\n close: onClosePage\r\n });\r\n\r\n return () => (\r\n <Watermark content={watermarkContent.value}>\r\n <Flex vertical={true}>\r\n <PageHeader\r\n ghost={ghost.value}\r\n class={pageHeaderStyle.value}\r\n onBack={() => onBack()}\r\n title={pageTitle()}\r\n >\r\n {{\r\n backIcon: () => (\r\n <div>\r\n <LeftOutlined\r\n style={{ fontSize: \"26px\" }}\r\n />\r\n </div>\r\n ),\r\n extra: () => slots.extra?.(),\r\n footer: () => slots.footer?.(),\r\n subTitle: () => slots.subTitle?.()\r\n }}\r\n </PageHeader>\r\n\r\n <div class={contentStyle.value}>\r\n {loading.value ? (\r\n <div></div>\r\n ) : (\r\n slots.default?.()\r\n )}\r\n </div>\r\n\r\n {slots.bottomFooter ? (\r\n <div class={footerStyle.value}>\r\n {slots.bottomFooter?.()}\r\n </div>\r\n ) : null}\r\n </Flex>\r\n </Watermark>\r\n );\r\n }\r\n});\r\n\r\nexport default show;\r\n"],"names":["getProps","close","type","Boolean","default","loading","show","defineComponent","name","props","setup","slots","expose","useToken","theme","appContext","inject","AppContextKey","watermarkContent","computed","value","content","token","layout","modeConfig","refresh","storeToRefs","useAppStore","deleteTabs","useNavTabStore","route","useRoute","router","useRouter","y","useWindowScroll","pageHeaderStyle","css","headerHeight","colorBgLayout","contentStyle","bottomFooter","footerStyle","collapsed","collapsedWidth","sideWidth","mode","colorBgContainer","pageTitle","_createVNode","meta","title","ghost","ref","onBack","fullPath","go","onClosePage","Watermark","Flex","PageHeader","backIcon","LeftOutlined","fontSize","extra","_a","footer","subTitle"],"mappings":"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"}
|
|
@@ -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
|
});
|