@duxweb/dvha-core 1.2.2 → 1.2.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/provider/app.cjs +1 -1
- package/dist/cjs/provider/tab.cjs +1 -1
- package/dist/cjs/stores/tab.cjs +1 -1
- package/dist/esm/provider/app.js +2 -0
- package/dist/esm/provider/tab.js +15 -11
- package/dist/esm/stores/tab.js +21 -16
- package/dist/types/stores/tab.d.ts +7 -7
- package/dist/types/types/menu.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../stores/auth.cjs`),t=require(`../stores/i18n.cjs`),n=require(`../stores/manage.cjs`),r=require(`../stores/route.cjs`);require(`../stores/index.cjs`);const i=require(`../hooks/manage.cjs`),a=require(`../hooks/auth.cjs`),o=require(`../hooks/config.cjs`),s=require(`../hooks/json.cjs`);require(`../hooks/index.cjs`);const c=require(`../components/status/error.cjs`),l=require(`../components/status/notAuthorized.cjs`),u=require(`../components/status/notFound.cjs`);require(`../components/index.cjs`);let d=require(`vue`),f=require(`vue-router`),p=require(`@overlastic/vue`);const m=(0,d.defineComponent)({name:`DuxAppProvider`,props:{},setup(m,{slots:h}){let g=(0,d.inject)(`dux.manage`),_=o.useConfig(),v=(0,f.useRouter)();return v.beforeEach(async(o,d,f)=>{let p=o.meta.manageName,m=o.meta.authorization===!1;if(!p)return f({path:`/${_.defaultManage||_.manages?.[0]?.name||``}`,replace:!0});g&&(g.value=p);let h=n.useManageStore(p);h.isInit()||h.setConfig(_.manages?.find(e=>e.name===p),_);let y=r.useRouteStore(p),b=i.useManage(p),x=e.useAuthStore(p),S=t.useI18nStore(p);if(b.config?.i18nProvider&&!S.isInit()){let e=S.getLocale();e&&b.config?.i18nProvider.changeLocale(e)}if(s.initJsonSchemaComponents(_,p),!x.isLogin())return m?f():f({path:b.getRoutePath(`login`),replace:!0});let C=e=>e?.map(e=>({...e,path:e.path?b.getRoutePath(e.path):void 0}));if(!y.getRouteInit()){let e=b.config?.components||{},t=[];return t.push({name:`${p}.notFound`,label:`404`,path:`:pathMatch(.*)*`,component:e.notFound||u.DuxNotFound,hidden:!0,meta:{can:!1}}),t.push({name:`${p}.notAuthorized`,label:`403`,path:`notAuthorized`,component:e.notAuthorized||l.DuxNotAuthorized,hidden:!0,meta:{can:!1}}),t.push({name:`${p}.error`,label:`500`,path:`error`,component:e.error||c.DuxError,hidden:!0,meta:{can:!1}}),y.setRoutes(C(b.config?.menus||[])),b.config?.apiRoutePath&&await b.config?.dataProvider?.default?.custom({path:b.config.apiRoutePath,meta:{timeout:5e3}},b,x.getUser()).then(e=>{y.appendRoutes(C(e.data||[]))}).catch(e=>{throw b.config?.authProvider?.onError?.(e).then(e=>{e?.logout&&(x.logout(),v.push(b.getRoutePath(e.redirectTo||`/login`)))}),e}),y.appendRoutes(t),y.getRoutes().forEach(e=>{if(!e.path)return;let t={name:e.name,path:e.path,meta:e.meta};switch(e.loader){case`iframe`:t.component=b.config?.components?.iframe||(()=>Promise.resolve().then(()=>require(`../components/loader/iframe.cjs`)));break;case`remote`:t.component=b.config?.components?.remote||(()=>Promise.resolve().then(()=>require(`../components/loader/loader.cjs`)));break;case`link`:t.beforeEnter=()=>{let t=e.meta?.url||e.path;return t&&window.open(t,`_blank`),!1},t.component=()=>Promise.resolve({template:`<div></div>`});break;default:e.component&&(t.component=e.component);break}v.addRoute(`${p}.auth`,t)}),f({path:o.redirectedFrom?.path||o.path,replace:!0})}let w=[``,`/`,`/${p}`,`/${p}/`];if(w.includes(o.path)){let e=y.getIndexRoute();return!e?.path||w.includes(e?.path)?(console.warn(`[Dux] index route not found, skip redirect`),f()):f({path:e?.path||`/`,replace:!0})}let T=a.useCan(p);return(o.meta?.can===void 0||o.meta?.can===!0)&&!T(o.name)?f({name:`${p}.notAuthorized`}):f()}),()=>(0,d.createVNode)(p.OverlaysProvider,null,{default:()=>[h.default?.()]})}});exports.DuxAppProvider=m;
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../stores/auth.cjs`),t=require(`../stores/i18n.cjs`),n=require(`../stores/manage.cjs`),r=require(`../stores/route.cjs`);require(`../stores/index.cjs`);const i=require(`../hooks/manage.cjs`),a=require(`../hooks/auth.cjs`),o=require(`../hooks/config.cjs`),s=require(`../hooks/json.cjs`);require(`../hooks/index.cjs`);const c=require(`../components/status/error.cjs`),l=require(`../components/status/notAuthorized.cjs`),u=require(`../components/status/notFound.cjs`);require(`../components/index.cjs`);let d=require(`vue`),f=require(`vue-router`),p=require(`@overlastic/vue`);const m=(0,d.defineComponent)({name:`DuxAppProvider`,props:{},setup(m,{slots:h}){let g=(0,d.inject)(`dux.manage`),_=o.useConfig(),v=(0,f.useRouter)();return v.beforeEach(async(o,d,f)=>{let p=o.meta.manageName,m=o.meta.authorization===!1;if(!p)return f({path:`/${_.defaultManage||_.manages?.[0]?.name||``}`,replace:!0});g&&(g.value=p);let h=n.useManageStore(p);h.isInit()||h.setConfig(_.manages?.find(e=>e.name===p),_);let y=r.useRouteStore(p),b=i.useManage(p),x=e.useAuthStore(p),S=t.useI18nStore(p);if(b.config?.i18nProvider&&!S.isInit()){let e=S.getLocale();e&&b.config?.i18nProvider.changeLocale(e)}if(s.initJsonSchemaComponents(_,p),!x.isLogin())return m?f():f({path:b.getRoutePath(`login`),replace:!0});let C=e=>e?.map(e=>({...e,path:e.path?b.getRoutePath(e.path):void 0}));if(!y.getRouteInit()){let e=b.config?.components||{},t=[];return t.push({name:`${p}.notFound`,label:`404`,path:`:pathMatch(.*)*`,component:e.notFound||u.DuxNotFound,hidden:!0,meta:{can:!1}}),t.push({name:`${p}.notAuthorized`,label:`403`,path:`notAuthorized`,component:e.notAuthorized||l.DuxNotAuthorized,hidden:!0,meta:{can:!1}}),t.push({name:`${p}.error`,label:`500`,path:`error`,component:e.error||c.DuxError,hidden:!0,meta:{can:!1}}),y.setRoutes(C(b.config?.menus||[])),b.config?.apiRoutePath&&await b.config?.dataProvider?.default?.custom({path:b.config.apiRoutePath,meta:{timeout:5e3}},b,x.getUser()).then(e=>{y.appendRoutes(C(e.data||[]))}).catch(e=>{throw b.config?.authProvider?.onError?.(e).then(e=>{e?.logout&&(x.logout(),v.push(b.getRoutePath(e.redirectTo||`/login`)))}),e}),y.appendRoutes(t),y.getRoutes().forEach(e=>{if(!e.path)return;let t={name:e.name,path:e.path,meta:e.meta};switch(e.loader){case`iframe`:t.component=b.config?.components?.iframe||(()=>Promise.resolve().then(()=>require(`../components/loader/iframe.cjs`)));break;case`remote`:t.component=b.config?.components?.remote||(()=>Promise.resolve().then(()=>require(`../components/loader/loader.cjs`)));break;case`link`:t.beforeEnter=()=>{let t=e.meta?.url||e.path;return t&&window.open(t,`_blank`),!1},t.component=()=>Promise.resolve({template:`<div></div>`});break;default:e.component&&(t.component=e.component);break}v.addRoute(`${p}.auth`,t)}),f({path:o.redirectedFrom?.path||o.path,query:o.redirectedFrom?.query||o.query,hash:o.redirectedFrom?.hash||o.hash,replace:!0})}let w=[``,`/`,`/${p}`,`/${p}/`];if(w.includes(o.path)){let e=y.getIndexRoute();return!e?.path||w.includes(e?.path)?(console.warn(`[Dux] index route not found, skip redirect`),f()):f({path:e?.path||`/`,replace:!0})}let T=a.useCan(p);return(o.meta?.can===void 0||o.meta?.can===!0)&&!T(o.name)?f({name:`${p}.notAuthorized`}):f()}),()=>(0,d.createVNode)(p.OverlaysProvider,null,{default:()=>[h.default?.()]})}});exports.DuxAppProvider=m;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../stores/route.cjs`),t=require(`../stores/tab.cjs`);require(`../stores/index.cjs`);let n=require(`vue`),r=require(`vue-router`);const i=(0,n.defineComponent)({name:`DuxTabRouterView`,props:{},setup(){let i=(0,r.useRoute)(),a=t.useTabStore(),o=e.useRouteStore(),s=new Map,
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../stores/route.cjs`),t=require(`../stores/tab.cjs`);require(`../stores/index.cjs`);let n=require(`vue`),r=require(`vue-router`);const i=(0,n.defineComponent)({name:`DuxTabRouterView`,props:{},setup(){let i=(0,r.useRoute)(),a=t.useTabStore(),o=e.useRouteStore(),s=e=>Array.isArray(e)?e.map(e=>e??``).sort().join(`,`):e??``,c=()=>{let e=Object.entries(i.query||{}).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>`${e}=${s(t)}`);return e.length?`${i.path}?${e.join(`&`)}`:i.path},l=new Map,u=(e,t)=>{let n,r=e;return l.has(r)?n=l.get(r):(n={name:r,render(){return t}},l.set(r,n)),n};a.$subscribe((e,t)=>{l.forEach(e=>{t.tabs.some(t=>(t.tabKey||t.path)===e.name)||l.delete(e.name)})});let d=o.getIndexRoute();return d&&a.addTab({...d,meta:{...d.meta,lock:!0}}),(0,n.watch)([i,()=>o.routes],()=>{let e=o.searchRouteName(i.name);if(!e)return;let t={label:e.label,path:i.path,tabKey:c(),name:e.name};a.addTab(t)},{immediate:!0}),()=>(0,n.createVNode)(r.RouterView,null,{default:({Component:e})=>{let t=c(),r=u(t,e);return(0,n.createVNode)(n.Transition,{name:`tab-fade`,mode:`out-in`,appear:!0},{default:()=>[(0,n.createVNode)(n.KeepAlive,{include:a.tabs.map(e=>e.tabKey||e.path||``)},[(0,n.createVNode)(r,{key:t},null)])]})}})}});exports.DuxTabRouterView=i;
|
package/dist/cjs/stores/tab.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../_virtual/_rolldown/runtime.cjs`);let e=require(`vue`),t=require(`pinia`);function n(t){let n=(0,e.inject)(`dux.manage`);if(t||=n?.value||``,!t)throw Error(`manage not found`);return r(t)()}function r(n){return(0,t.defineStore)(`tab-${n}`,()=>{let t=(0,e.ref)(),n=(0,e.ref)(),r=(0,e.ref)([])
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);let e=require(`vue`),t=require(`pinia`);function n(t){let n=(0,e.inject)(`dux.manage`);if(t||=n?.value||``,!t)throw Error(`manage not found`);return r(t)()}function r(n){return(0,t.defineStore)(`tab-${n}`,()=>{let t=(0,e.ref)(),n=(0,e.ref)(),r=(0,e.ref)([]),i=e=>e.tabKey||e.path||``;return{current:t,tabs:r,isTab:e=>r.value.some(t=>i(t)===e),addTab:(e,a)=>{let o=i(e);o&&(e.tabKey||=o,r.value.some(e=>i(e)===o)?(t.value&&t.value!==o&&(n.value=r.value.find(e=>i(e)===t.value)),t.value=o):(t.value&&(n.value=r.value.find(e=>i(e)===t.value)),r.value.push(e),a?.(e),t.value=o))},delTab:(e,a)=>{let o=r.value.findIndex(t=>i(t)===e);if(o===-1||r.value.length<=1||r.value[o]?.meta?.lock)return;let s;if(e===t.value&&n.value){let t=i(n.value);s=r.value.find(n=>i(n)===t&&i(n)!==e)}if(!s){let e=r.value[o-1],t=r.value[o+1];s=e||t}r.value.splice(o,1),a?.(s)},changeTab:(e,a)=>{let o=r.value.find(t=>i(t)===e);o&&(t.value&&t.value!==e&&(n.value=r.value.find(e=>i(e)===t.value)),t.value=e,a?.(o))},delOther:(e,t)=>{r.value=r.value.filter(t=>i(t)===e||t.meta?.lock),t?.()},delLeft:(t,n)=>{let a=r.value.findIndex(e=>i(e)===t);a<=0||(0,e.nextTick)(()=>{r.value=[...r.value.slice(0,a).filter(e=>e.meta?.lock),...r.value.slice(a)],n?.()})},delRight:(t,n)=>{let a=r.value.findIndex(e=>i(e)===t);a===-1||a===r.value.length-1||(0,e.nextTick)(()=>{r.value=[...r.value.slice(0,a+1),...r.value.slice(a+1).filter(e=>e.meta?.lock)],n?.()})},lockTab:e=>{let t=r.value.findIndex(t=>i(t)===e);t!==-1&&r.value[t]&&(r.value[t].meta||(r.value[t].meta={}),r.value[t].meta.lock=!r.value[t].meta.lock)},clearTab:()=>{t.value=void 0,n.value=void 0,r.value=[]}}})}exports.createTabStore=r,exports.useTabStore=n;
|
package/dist/esm/provider/app.js
CHANGED
package/dist/esm/provider/tab.js
CHANGED
|
@@ -7,25 +7,28 @@ const l = /* @__PURE__ */ a({
|
|
|
7
7
|
name: "DuxTabRouterView",
|
|
8
8
|
props: {},
|
|
9
9
|
setup() {
|
|
10
|
-
let a = c(), l = t(), u = e(), d =
|
|
10
|
+
let a = c(), l = t(), u = e(), d = (e) => Array.isArray(e) ? e.map((e) => e ?? "").sort().join(",") : e ?? "", f = () => {
|
|
11
|
+
let e = Object.entries(a.query || {}).sort(([e], [t]) => e.localeCompare(t)).map(([e, t]) => `${e}=${d(t)}`);
|
|
12
|
+
return e.length ? `${a.path}?${e.join("&")}` : a.path;
|
|
13
|
+
}, p = /* @__PURE__ */ new Map(), m = (e, t) => {
|
|
11
14
|
let n, r = e;
|
|
12
|
-
return
|
|
15
|
+
return p.has(r) ? n = p.get(r) : (n = {
|
|
13
16
|
name: r,
|
|
14
17
|
render() {
|
|
15
18
|
return t;
|
|
16
19
|
}
|
|
17
|
-
},
|
|
20
|
+
}, p.set(r, n)), n;
|
|
18
21
|
};
|
|
19
22
|
l.$subscribe((e, t) => {
|
|
20
|
-
|
|
21
|
-
t.tabs.some((t) => t.path === e.name) ||
|
|
23
|
+
p.forEach((e) => {
|
|
24
|
+
t.tabs.some((t) => (t.tabKey || t.path) === e.name) || p.delete(e.name);
|
|
22
25
|
});
|
|
23
26
|
});
|
|
24
|
-
let
|
|
25
|
-
return
|
|
26
|
-
...
|
|
27
|
+
let h = u.getIndexRoute();
|
|
28
|
+
return h && l.addTab({
|
|
29
|
+
...h,
|
|
27
30
|
meta: {
|
|
28
|
-
...
|
|
31
|
+
...h.meta,
|
|
29
32
|
lock: !0
|
|
30
33
|
}
|
|
31
34
|
}), o([a, () => u.routes], () => {
|
|
@@ -34,16 +37,17 @@ const l = /* @__PURE__ */ a({
|
|
|
34
37
|
let t = {
|
|
35
38
|
label: e.label,
|
|
36
39
|
path: a.path,
|
|
40
|
+
tabKey: f(),
|
|
37
41
|
name: e.name
|
|
38
42
|
};
|
|
39
43
|
l.addTab(t);
|
|
40
44
|
}, { immediate: !0 }), () => i(s, null, { default: ({ Component: e }) => {
|
|
41
|
-
let t = f(a
|
|
45
|
+
let t = f(), a = m(t, e);
|
|
42
46
|
return i(r, {
|
|
43
47
|
name: "tab-fade",
|
|
44
48
|
mode: "out-in",
|
|
45
49
|
appear: !0
|
|
46
|
-
}, { default: () => [i(n, { include: l.tabs.map((e) => e.path || "") }, [i(
|
|
50
|
+
}, { default: () => [i(n, { include: l.tabs.map((e) => e.tabKey || e.path || "") }, [i(a, { key: t }, null)])] });
|
|
47
51
|
} });
|
|
48
52
|
}
|
|
49
53
|
});
|
package/dist/esm/stores/tab.js
CHANGED
|
@@ -7,45 +7,50 @@ function i(t) {
|
|
|
7
7
|
}
|
|
8
8
|
function a(e) {
|
|
9
9
|
return r(`tab-${e}`, () => {
|
|
10
|
-
let e = n(), r = n(), i = n([]);
|
|
10
|
+
let e = n(), r = n(), i = n([]), a = (e) => e.tabKey || e.path || "";
|
|
11
11
|
return {
|
|
12
12
|
current: e,
|
|
13
13
|
tabs: i,
|
|
14
|
-
isTab: (e) => i.value.some((t) => t
|
|
14
|
+
isTab: (e) => i.value.some((t) => a(t) === e),
|
|
15
15
|
addTab: (t, n) => {
|
|
16
|
-
|
|
16
|
+
let o = a(t);
|
|
17
|
+
o && (t.tabKey ||= o, i.value.some((e) => a(e) === o) ? (e.value && e.value !== o && (r.value = i.value.find((t) => a(t) === e.value)), e.value = o) : (e.value && (r.value = i.value.find((t) => a(t) === e.value)), i.value.push(t), n?.(t), e.value = o));
|
|
17
18
|
},
|
|
18
19
|
delTab: (t, n) => {
|
|
19
|
-
let
|
|
20
|
-
if (
|
|
21
|
-
let
|
|
22
|
-
if (t === e.value && r.value
|
|
23
|
-
let e =
|
|
24
|
-
|
|
20
|
+
let o = i.value.findIndex((e) => a(e) === t);
|
|
21
|
+
if (o === -1 || i.value.length <= 1 || i.value[o]?.meta?.lock) return;
|
|
22
|
+
let s;
|
|
23
|
+
if (t === e.value && r.value) {
|
|
24
|
+
let e = a(r.value);
|
|
25
|
+
s = i.value.find((n) => a(n) === e && a(n) !== t);
|
|
25
26
|
}
|
|
26
|
-
|
|
27
|
+
if (!s) {
|
|
28
|
+
let e = i.value[o - 1], t = i.value[o + 1];
|
|
29
|
+
s = e || t;
|
|
30
|
+
}
|
|
31
|
+
i.value.splice(o, 1), n?.(s);
|
|
27
32
|
},
|
|
28
33
|
changeTab: (t, n) => {
|
|
29
|
-
let
|
|
30
|
-
|
|
34
|
+
let o = i.value.find((e) => a(e) === t);
|
|
35
|
+
o && (e.value && e.value !== t && (r.value = i.value.find((t) => a(t) === e.value)), e.value = t, n?.(o));
|
|
31
36
|
},
|
|
32
37
|
delOther: (e, t) => {
|
|
33
|
-
i.value = i.value.filter((t) => t
|
|
38
|
+
i.value = i.value.filter((t) => a(t) === e || t.meta?.lock), t?.();
|
|
34
39
|
},
|
|
35
40
|
delLeft: (e, n) => {
|
|
36
|
-
let r = i.value.findIndex((t) => t
|
|
41
|
+
let r = i.value.findIndex((t) => a(t) === e);
|
|
37
42
|
r <= 0 || t(() => {
|
|
38
43
|
i.value = [...i.value.slice(0, r).filter((e) => e.meta?.lock), ...i.value.slice(r)], n?.();
|
|
39
44
|
});
|
|
40
45
|
},
|
|
41
46
|
delRight: (e, n) => {
|
|
42
|
-
let r = i.value.findIndex((t) => t
|
|
47
|
+
let r = i.value.findIndex((t) => a(t) === e);
|
|
43
48
|
r === -1 || r === i.value.length - 1 || t(() => {
|
|
44
49
|
i.value = [...i.value.slice(0, r + 1), ...i.value.slice(r + 1).filter((e) => e.meta?.lock)], n?.();
|
|
45
50
|
});
|
|
46
51
|
},
|
|
47
52
|
lockTab: (e) => {
|
|
48
|
-
let t = i.value.findIndex((t) => t
|
|
53
|
+
let t = i.value.findIndex((t) => a(t) === e);
|
|
49
54
|
t !== -1 && i.value[t] && (i.value[t].meta || (i.value[t].meta = {}), i.value[t].meta.lock = !i.value[t].meta.lock);
|
|
50
55
|
},
|
|
51
56
|
clearTab: () => {
|
|
@@ -3,14 +3,14 @@ import type { IMenu } from '../types';
|
|
|
3
3
|
export interface TabStoreState {
|
|
4
4
|
current: Ref<string | undefined>;
|
|
5
5
|
tabs: Ref<IMenu[]>;
|
|
6
|
-
isTab: (
|
|
6
|
+
isTab: (key: string) => boolean;
|
|
7
7
|
addTab: (item: IMenu, cb?: (item: IMenu) => void) => void;
|
|
8
|
-
delTab: (
|
|
9
|
-
changeTab: (
|
|
10
|
-
delOther: (
|
|
11
|
-
delLeft: (
|
|
12
|
-
delRight: (
|
|
13
|
-
lockTab: (
|
|
8
|
+
delTab: (key: string, cb?: (item: IMenu) => void) => void;
|
|
9
|
+
changeTab: (key: string, cb?: (item: IMenu) => void) => void;
|
|
10
|
+
delOther: (key: string, cb?: () => void) => void;
|
|
11
|
+
delLeft: (key: string, cb?: () => void) => void;
|
|
12
|
+
delRight: (key: string, cb?: () => void) => void;
|
|
13
|
+
lockTab: (key: string) => void;
|
|
14
14
|
clearTab: () => void;
|
|
15
15
|
}
|
|
16
16
|
export declare function useTabStore(manageName?: string): import("pinia").Store<string, Pick<TabStoreState, "current" | "tabs">, Pick<TabStoreState, never>, Pick<TabStoreState, "isTab" | "addTab" | "delTab" | "changeTab" | "delOther" | "delLeft" | "delRight" | "lockTab" | "clearTab">>;
|