vft 0.0.16 → 0.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/es/component.mjs +21 -11
- package/es/component.mjs.map +1 -1
- package/es/components/back-top/back-top.vue2.mjs +16 -11
- package/es/components/back-top/back-top.vue2.mjs.map +1 -1
- package/es/components/context-menu/context-menu.vue2.mjs +26 -21
- package/es/components/context-menu/context-menu.vue2.mjs.map +1 -1
- package/es/components/footer-layout/footer-layout.vue.d.ts +13 -0
- package/es/components/footer-layout/footer-layout.vue.mjs +5 -0
- package/es/components/footer-layout/footer-layout.vue.mjs.map +1 -0
- package/es/components/footer-layout/footer-layout.vue2.mjs +51 -0
- package/es/components/footer-layout/footer-layout.vue2.mjs.map +1 -0
- package/es/components/footer-layout/index.d.ts +12 -0
- package/es/components/footer-layout/index.mjs +11 -0
- package/es/components/footer-layout/index.mjs.map +1 -0
- package/es/components/footer-layout/style/css.d.ts +0 -0
- package/es/components/footer-layout/style/css.mjs +3 -0
- package/es/components/footer-layout/style/css.mjs.map +1 -0
- package/es/components/footer-layout/style/index.d.ts +0 -0
- package/es/components/footer-layout/style/index.mjs +3 -0
- package/es/components/footer-layout/style/index.mjs.map +1 -0
- package/es/components/header-layout/header-layout.vue.d.ts +14 -0
- package/es/components/header-layout/header-layout.vue.mjs +5 -0
- package/es/components/header-layout/header-layout.vue.mjs.map +1 -0
- package/es/components/header-layout/header-layout.vue2.mjs +52 -0
- package/es/components/header-layout/header-layout.vue2.mjs.map +1 -0
- package/es/components/header-layout/index.d.ts +12 -0
- package/es/components/header-layout/index.mjs +11 -0
- package/es/components/header-layout/index.mjs.map +1 -0
- package/es/components/header-layout/style/css.d.ts +0 -0
- package/es/components/header-layout/style/css.mjs +3 -0
- package/es/components/header-layout/style/css.mjs.map +1 -0
- package/es/components/header-layout/style/index.d.ts +0 -0
- package/es/components/header-layout/style/index.mjs +3 -0
- package/es/components/header-layout/style/index.mjs.map +1 -0
- package/es/components/iframe-layout/iframe-layout.vue.d.ts +14 -0
- package/es/components/iframe-layout/iframe-layout.vue.mjs +5 -0
- package/es/components/iframe-layout/iframe-layout.vue.mjs.map +1 -0
- package/es/components/iframe-layout/iframe-layout.vue2.mjs +41 -0
- package/es/components/iframe-layout/iframe-layout.vue2.mjs.map +1 -0
- package/es/components/iframe-layout/iframe-page.vue.d.ts +13 -0
- package/es/components/iframe-layout/iframe-page.vue.mjs +5 -0
- package/es/components/iframe-layout/iframe-page.vue.mjs.map +1 -0
- package/es/components/iframe-layout/iframe-page.vue2.mjs +29 -0
- package/es/components/iframe-layout/iframe-page.vue2.mjs.map +1 -0
- package/es/components/iframe-layout/index.d.ts +12 -0
- package/es/components/iframe-layout/index.mjs +11 -0
- package/es/components/iframe-layout/index.mjs.map +1 -0
- package/es/components/iframe-layout/style/css.d.ts +0 -0
- package/es/components/iframe-layout/style/css.mjs +3 -0
- package/es/components/iframe-layout/style/css.mjs.map +1 -0
- package/es/components/iframe-layout/style/index.d.ts +0 -0
- package/es/components/iframe-layout/style/index.mjs +3 -0
- package/es/components/iframe-layout/style/index.mjs.map +1 -0
- package/es/components/index.d.ts +5 -0
- package/es/components/index.mjs +49 -39
- package/es/components/index.mjs.map +1 -1
- package/es/components/logo/index.d.ts +29 -0
- package/es/components/logo/index.mjs +11 -0
- package/es/components/logo/index.mjs.map +1 -0
- package/es/components/logo/logo.vue.d.ts +29 -0
- package/es/components/logo/logo.vue.mjs +5 -0
- package/es/components/logo/logo.vue.mjs.map +1 -0
- package/es/components/logo/logo.vue2.mjs +47 -0
- package/es/components/logo/logo.vue2.mjs.map +1 -0
- package/es/components/logo/style/css.d.ts +0 -0
- package/es/components/logo/style/css.mjs +3 -0
- package/es/components/logo/style/css.mjs.map +1 -0
- package/es/components/logo/style/index.d.ts +0 -0
- package/es/components/logo/style/index.mjs +3 -0
- package/es/components/logo/style/index.mjs.map +1 -0
- package/es/components/logo/types.d.ts +6 -0
- package/es/components/logo/types.mjs +2 -0
- package/es/components/logo/types.mjs.map +1 -0
- package/es/components/menu/menu-item.vue2.mjs +17 -12
- package/es/components/menu/menu-item.vue2.mjs.map +1 -1
- package/es/components/menu/sub-menu.vue2.mjs +32 -27
- package/es/components/menu/sub-menu.vue2.mjs.map +1 -1
- package/es/components/multiple-tabs/multiple-tabs.vue2.mjs +7 -2
- package/es/components/multiple-tabs/multiple-tabs.vue2.mjs.map +1 -1
- package/es/components/multiple-tabs/tab-content.vue2.mjs +12 -7
- package/es/components/multiple-tabs/tab-content.vue2.mjs.map +1 -1
- package/es/components/result/result.vue2.mjs +17 -12
- package/es/components/result/result.vue2.mjs.map +1 -1
- package/es/components/router-view-content/index.d.ts +52 -0
- package/es/components/router-view-content/index.mjs +11 -0
- package/es/components/router-view-content/index.mjs.map +1 -0
- package/es/components/router-view-content/router-view-content.vue.d.ts +54 -0
- package/es/components/router-view-content/router-view-content.vue.mjs +5 -0
- package/es/components/router-view-content/router-view-content.vue.mjs.map +1 -0
- package/es/components/router-view-content/router-view-content.vue2.mjs +58 -0
- package/es/components/router-view-content/router-view-content.vue2.mjs.map +1 -0
- package/es/components/tabs/tab-nav.vue2.mjs +7 -2
- package/es/components/tabs/tab-nav.vue2.mjs.map +1 -1
- package/es/index.mjs +97 -87
- package/es/index.mjs.map +1 -1
- package/es/package.json.mjs +1 -1
- package/es/style.css +1 -1
- package/es/theme-style/src/footer-layout.scss.mjs +5 -0
- package/es/theme-style/src/footer-layout.scss.mjs.map +1 -0
- package/es/theme-style/src/header-layout.scss.mjs +5 -0
- package/es/theme-style/src/header-layout.scss.mjs.map +1 -0
- package/es/theme-style/src/iframe-layout.scss.mjs +5 -0
- package/es/theme-style/src/iframe-layout.scss.mjs.map +1 -0
- package/es/theme-style/src/logo.scss.mjs +5 -0
- package/es/theme-style/src/logo.scss.mjs.map +1 -0
- package/lib/component.js +1 -1
- package/lib/component.js.map +1 -1
- package/lib/components/back-top/back-top.vue2.js +1 -1
- package/lib/components/back-top/back-top.vue2.js.map +1 -1
- package/lib/components/context-menu/context-menu.vue2.js +1 -1
- package/lib/components/context-menu/context-menu.vue2.js.map +1 -1
- package/lib/components/footer-layout/footer-layout.vue.d.ts +13 -0
- package/lib/components/footer-layout/footer-layout.vue.js +2 -0
- package/lib/components/footer-layout/footer-layout.vue.js.map +1 -0
- package/lib/components/footer-layout/footer-layout.vue2.js +2 -0
- package/lib/components/footer-layout/footer-layout.vue2.js.map +1 -0
- package/lib/components/footer-layout/index.d.ts +12 -0
- package/lib/components/footer-layout/index.js +2 -0
- package/lib/components/footer-layout/index.js.map +1 -0
- package/lib/components/footer-layout/style/css.d.ts +0 -0
- package/lib/components/footer-layout/style/css.js +2 -0
- package/lib/components/footer-layout/style/css.js.map +1 -0
- package/lib/components/footer-layout/style/index.d.ts +0 -0
- package/lib/components/footer-layout/style/index.js +2 -0
- package/lib/components/footer-layout/style/index.js.map +1 -0
- package/lib/components/header-layout/header-layout.vue.d.ts +14 -0
- package/lib/components/header-layout/header-layout.vue.js +2 -0
- package/lib/components/header-layout/header-layout.vue.js.map +1 -0
- package/lib/components/header-layout/header-layout.vue2.js +2 -0
- package/lib/components/header-layout/header-layout.vue2.js.map +1 -0
- package/lib/components/header-layout/index.d.ts +12 -0
- package/lib/components/header-layout/index.js +2 -0
- package/lib/components/header-layout/index.js.map +1 -0
- package/lib/components/header-layout/style/css.d.ts +0 -0
- package/lib/components/header-layout/style/css.js +2 -0
- package/lib/components/header-layout/style/css.js.map +1 -0
- package/lib/components/header-layout/style/index.d.ts +0 -0
- package/lib/components/header-layout/style/index.js +2 -0
- package/lib/components/header-layout/style/index.js.map +1 -0
- package/lib/components/iframe-layout/iframe-layout.vue.d.ts +14 -0
- package/lib/components/iframe-layout/iframe-layout.vue.js +2 -0
- package/lib/components/iframe-layout/iframe-layout.vue.js.map +1 -0
- package/lib/components/iframe-layout/iframe-layout.vue2.js +2 -0
- package/lib/components/iframe-layout/iframe-layout.vue2.js.map +1 -0
- package/lib/components/iframe-layout/iframe-page.vue.d.ts +13 -0
- package/lib/components/iframe-layout/iframe-page.vue.js +2 -0
- package/lib/components/iframe-layout/iframe-page.vue.js.map +1 -0
- package/lib/components/iframe-layout/iframe-page.vue2.js +2 -0
- package/lib/components/iframe-layout/iframe-page.vue2.js.map +1 -0
- package/lib/components/iframe-layout/index.d.ts +12 -0
- package/lib/components/iframe-layout/index.js +2 -0
- package/lib/components/iframe-layout/index.js.map +1 -0
- package/lib/components/iframe-layout/style/css.d.ts +0 -0
- package/lib/components/iframe-layout/style/css.js +2 -0
- package/lib/components/iframe-layout/style/css.js.map +1 -0
- package/lib/components/iframe-layout/style/index.d.ts +0 -0
- package/lib/components/iframe-layout/style/index.js +2 -0
- package/lib/components/iframe-layout/style/index.js.map +1 -0
- package/lib/components/index.d.ts +5 -0
- package/lib/components/index.js +1 -1
- package/lib/components/logo/index.d.ts +29 -0
- package/lib/components/logo/index.js +2 -0
- package/lib/components/logo/index.js.map +1 -0
- package/lib/components/logo/logo.vue.d.ts +29 -0
- package/lib/components/logo/logo.vue.js +2 -0
- package/lib/components/logo/logo.vue.js.map +1 -0
- package/lib/components/logo/logo.vue2.js +2 -0
- package/lib/components/logo/logo.vue2.js.map +1 -0
- package/lib/components/logo/style/css.d.ts +0 -0
- package/lib/components/logo/style/css.js +2 -0
- package/lib/components/logo/style/css.js.map +1 -0
- package/lib/components/logo/style/index.d.ts +0 -0
- package/lib/components/logo/style/index.js +2 -0
- package/lib/components/logo/style/index.js.map +1 -0
- package/lib/components/logo/types.d.ts +6 -0
- package/lib/components/logo/types.js +2 -0
- package/lib/components/logo/types.js.map +1 -0
- package/lib/components/menu/menu-item.vue2.js +1 -1
- package/lib/components/menu/menu-item.vue2.js.map +1 -1
- package/lib/components/menu/sub-menu.vue2.js +1 -1
- package/lib/components/menu/sub-menu.vue2.js.map +1 -1
- package/lib/components/multiple-tabs/multiple-tabs.vue2.js +1 -1
- package/lib/components/multiple-tabs/multiple-tabs.vue2.js.map +1 -1
- package/lib/components/multiple-tabs/tab-content.vue2.js +1 -1
- package/lib/components/multiple-tabs/tab-content.vue2.js.map +1 -1
- package/lib/components/result/result.vue2.js +1 -1
- package/lib/components/result/result.vue2.js.map +1 -1
- package/lib/components/router-view-content/index.d.ts +52 -0
- package/lib/components/router-view-content/index.js +2 -0
- package/lib/components/router-view-content/index.js.map +1 -0
- package/lib/components/router-view-content/router-view-content.vue.d.ts +54 -0
- package/lib/components/router-view-content/router-view-content.vue.js +2 -0
- package/lib/components/router-view-content/router-view-content.vue.js.map +1 -0
- package/lib/components/router-view-content/router-view-content.vue2.js +2 -0
- package/lib/components/router-view-content/router-view-content.vue2.js.map +1 -0
- package/lib/components/tabs/tab-nav.vue2.js +1 -1
- package/lib/components/tabs/tab-nav.vue2.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/package.json.js +1 -1
- package/lib/theme-style/src/footer-layout.scss.js +2 -0
- package/lib/theme-style/src/footer-layout.scss.js.map +1 -0
- package/lib/theme-style/src/header-layout.scss.js +2 -0
- package/lib/theme-style/src/header-layout.scss.js.map +1 -0
- package/lib/theme-style/src/iframe-layout.scss.js +2 -0
- package/lib/theme-style/src/iframe-layout.scss.js.map +1 -0
- package/lib/theme-style/src/logo.scss.js +2 -0
- package/lib/theme-style/src/logo.scss.js.map +1 -0
- package/package.json +1 -1
- package/theme-style/index.css +1 -1
- package/theme-style/src/footer-layout.scss +34 -0
- package/theme-style/src/header-layout.scss +38 -0
- package/theme-style/src/iframe-layout.scss +8 -0
- package/theme-style/src/index.scss +4 -0
- package/theme-style/src/logo.scss +34 -0
- package/theme-style/vft-footer-layout.css +1 -0
- package/theme-style/vft-header-layout.css +1 -0
- package/theme-style/vft-iframe-layout.css +1 -0
- package/theme-style/vft-logo.css +1 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export declare const VftRouterViewContent: import("vft/es/utils").SFCWithInstall<import("vue").DefineComponent<{
|
|
2
|
+
tabStore: {
|
|
3
|
+
type: import("vue").PropType<any>;
|
|
4
|
+
required: false;
|
|
5
|
+
};
|
|
6
|
+
openKeepAlive: {
|
|
7
|
+
type: import("vue").PropType<boolean | undefined>;
|
|
8
|
+
required: false;
|
|
9
|
+
};
|
|
10
|
+
isReloadFlag: {
|
|
11
|
+
type: import("vue").PropType<boolean>;
|
|
12
|
+
required: true;
|
|
13
|
+
};
|
|
14
|
+
pageErrorStatus: {
|
|
15
|
+
type: import("vue").PropType<boolean | undefined>;
|
|
16
|
+
required: false;
|
|
17
|
+
};
|
|
18
|
+
enableErrorHandle: {
|
|
19
|
+
type: import("vue").PropType<boolean | undefined>;
|
|
20
|
+
required: false;
|
|
21
|
+
};
|
|
22
|
+
exceptionComp: {
|
|
23
|
+
type: import("vue").PropType<import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions> | undefined>;
|
|
24
|
+
required: false;
|
|
25
|
+
};
|
|
26
|
+
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
27
|
+
tabStore: {
|
|
28
|
+
type: import("vue").PropType<any>;
|
|
29
|
+
required: false;
|
|
30
|
+
};
|
|
31
|
+
openKeepAlive: {
|
|
32
|
+
type: import("vue").PropType<boolean | undefined>;
|
|
33
|
+
required: false;
|
|
34
|
+
};
|
|
35
|
+
isReloadFlag: {
|
|
36
|
+
type: import("vue").PropType<boolean>;
|
|
37
|
+
required: true;
|
|
38
|
+
};
|
|
39
|
+
pageErrorStatus: {
|
|
40
|
+
type: import("vue").PropType<boolean | undefined>;
|
|
41
|
+
required: false;
|
|
42
|
+
};
|
|
43
|
+
enableErrorHandle: {
|
|
44
|
+
type: import("vue").PropType<boolean | undefined>;
|
|
45
|
+
required: false;
|
|
46
|
+
};
|
|
47
|
+
exceptionComp: {
|
|
48
|
+
type: import("vue").PropType<import("vue").Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions> | undefined>;
|
|
49
|
+
required: false;
|
|
50
|
+
};
|
|
51
|
+
}>>, {}>> & Record<string, any>;
|
|
52
|
+
export default VftRouterViewContent;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("../../utils/vue/install.js");require("vue");require("@vue/shared");require("@vft/utils");const r=require("./router-view-content.vue2.js"),e=t.withInstall(r.default);exports.VftRouterViewContent=e;exports.default=e;
|
|
2
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../../packages/components/router-view-content/index.ts"],"sourcesContent":["import { withInstall } from '@vft-ui/utils'\n\nimport RouterViewContent from './router-view-content.vue'\n\nexport const VftRouterViewContent = withInstall(RouterViewContent)\n\nexport default VftRouterViewContent\n"],"names":["VftRouterViewContent","withInstall","RouterViewContent"],"mappings":"uQAIaA,EAAuBC,cAAYC,EAAiB,OAAA"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { PropType as __PropType } from 'vue';
|
|
2
|
+
import { type Component } from 'vue';
|
|
3
|
+
declare const _sfc_main: import("vue").DefineComponent<{
|
|
4
|
+
tabStore: {
|
|
5
|
+
type: __PropType<any>;
|
|
6
|
+
required: false;
|
|
7
|
+
};
|
|
8
|
+
openKeepAlive: {
|
|
9
|
+
type: __PropType<boolean | undefined>;
|
|
10
|
+
required: false;
|
|
11
|
+
};
|
|
12
|
+
isReloadFlag: {
|
|
13
|
+
type: __PropType<boolean>;
|
|
14
|
+
required: true;
|
|
15
|
+
};
|
|
16
|
+
pageErrorStatus: {
|
|
17
|
+
type: __PropType<boolean | undefined>;
|
|
18
|
+
required: false;
|
|
19
|
+
};
|
|
20
|
+
enableErrorHandle: {
|
|
21
|
+
type: __PropType<boolean | undefined>;
|
|
22
|
+
required: false;
|
|
23
|
+
};
|
|
24
|
+
exceptionComp: {
|
|
25
|
+
type: __PropType<Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions> | undefined>;
|
|
26
|
+
required: false;
|
|
27
|
+
};
|
|
28
|
+
}, {}, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
|
|
29
|
+
tabStore: {
|
|
30
|
+
type: __PropType<any>;
|
|
31
|
+
required: false;
|
|
32
|
+
};
|
|
33
|
+
openKeepAlive: {
|
|
34
|
+
type: __PropType<boolean | undefined>;
|
|
35
|
+
required: false;
|
|
36
|
+
};
|
|
37
|
+
isReloadFlag: {
|
|
38
|
+
type: __PropType<boolean>;
|
|
39
|
+
required: true;
|
|
40
|
+
};
|
|
41
|
+
pageErrorStatus: {
|
|
42
|
+
type: __PropType<boolean | undefined>;
|
|
43
|
+
required: false;
|
|
44
|
+
};
|
|
45
|
+
enableErrorHandle: {
|
|
46
|
+
type: __PropType<boolean | undefined>;
|
|
47
|
+
required: false;
|
|
48
|
+
};
|
|
49
|
+
exceptionComp: {
|
|
50
|
+
type: __PropType<Component<any, any, any, import("vue").ComputedOptions, import("vue").MethodOptions> | undefined>;
|
|
51
|
+
required: false;
|
|
52
|
+
};
|
|
53
|
+
}>>, {}>;
|
|
54
|
+
export default _sfc_main;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-view-content.vue.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),s=require("@vft/router"),p=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");require("@vueuse/core");require("@vue/shared");require("@vft/utils");const f=p.useNamespace("router-view-content"),v=e.defineComponent({name:f.b()}),B=e.defineComponent({...v,props:{tabStore:null,openKeepAlive:{type:Boolean,default:!0},isReloadFlag:{type:Boolean},pageErrorStatus:{type:Boolean},enableErrorHandle:{type:Boolean},exceptionComp:null},setup(n){const i=e.computed(()=>n.openKeepAlive?n.tabStore.getCachedTabList:[]),l=e.computed(()=>t=>n.enableErrorHandle&&n.pageErrorStatus&&n.exceptionComp||t),d=e.computed(()=>t=>{var a,o,r;let u=t.name;return(a=t.meta)!=null&&a.currentActivePath&&(u=(r=(o=t.matched)==null?void 0:o.filter(m=>{var c;return m.path===((c=t.meta)==null?void 0:c.currentActivePath)}))==null?void 0:r[0].name),n.isReloadFlag?void 0:u});return(t,u)=>{const a=e.resolveComponent("router-view");return e.openBlock(),e.createBlock(a,null,{default:e.withCtx(({Component:o,route:r})=>[n.openKeepAlive?(e.openBlock(),e.createBlock(e.KeepAlive,{key:0,include:e.unref(i),exclude:e.unref(d)(r)},[n.isReloadFlag?(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(l)(o)),{key:e.unref(s.getRouterKeyPath)(r)})):e.createCommentVNode("",!0)],1032,["include","exclude"])):(e.openBlock(),e.createBlock(e.resolveDynamicComponent(e.unref(l)(o)),{key:r.fullPath}))]),_:1})}}});exports.default=B;
|
|
2
|
+
//# sourceMappingURL=router-view-content.vue2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-view-content.vue2.js","sources":["../../../../../packages/components/router-view-content/router-view-content.vue"],"sourcesContent":["<script lang=\"ts\">\nconst ns = /* hoist-static*/ useNamespace('router-view-content')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n name: ns.b()\n});</script>\n<script lang=\"ts\" setup>\nimport { getRouterKeyPath } from '@vft/router';\nimport { type Component, computed } from 'vue';\nimport { type RouteLocationNormalizedLoaded } from 'vue-router';\nimport { useNamespace } from '@vft-ui/hooks';\n\ninterface LayoutConentProps {\n tabStore?: any\n openKeepAlive?: boolean;\n isReloadFlag: boolean\n pageErrorStatus?: boolean;\n enableErrorHandle?: boolean;\n exceptionComp?: Component;\n}\n\ndefineProps({\n \"tabStore\": null,\n \"openKeepAlive\": { type: Boolean, default: true },\n \"isReloadFlag\": { type: Boolean, },\n \"pageErrorStatus\": { type: Boolean, },\n \"enableErrorHandle\": { type: Boolean, },\n \"exceptionComp\": null\n})\n\n\n\n;\n\nconst getCaches = computed(() => {\n if (!__props.openKeepAlive) {\n return [];\n }\n return __props.tabStore.getCachedTabList;\n});\n\nconst pageComponent = computed(() => {\n return (component: Component) => {\n if (__props.enableErrorHandle) {\n return __props.pageErrorStatus ? (__props.exceptionComp || component) : component;\n } else {\n return component;\n }\n };\n});\n\nconst excludeNames = computed(() => {\n return (route: RouteLocationNormalizedLoaded) => {\n let name = route.name;\n if (route.meta?.currentActivePath) {\n name = route.matched?.filter(item => {\n return item.path === route.meta?.currentActivePath;\n })?.[0].name;\n }\n\n return __props.isReloadFlag ? undefined : name;\n };\n});\n</script>\n\n<template>\n <router-view v-slot=\"{ Component: Comp, route }\">\n <keep-alive v-if=\"openKeepAlive\" :include=\"getCaches\" :exclude=\"excludeNames(route)\">\n <component v-if=\"isReloadFlag\" :is=\"pageComponent(Comp)\"\n :key=\"getRouterKeyPath(route)\" />\n </keep-alive>\n <component v-else :is=\"pageComponent(Comp)\" :key=\"route.fullPath\" />\n </router-view>\n</template>\n"],"names":["ns","useNamespace","__default__","DO_defineComponent","getCaches","computed","__props","pageComponent","component","excludeNames","route","name","_a","_c","_b","item"],"mappings":"yWACA,MAAMA,EAAuBC,EAAAA,aAAa,qBAAqB,EAG/DC,EAA6BC,EAAAA,gBAAmB,CAC9C,KAAMH,EAAG,EAAE,CACb,CAAC,kNA6BK,MAAAI,EAAYC,EAAAA,SAAS,IACpBC,EAAQ,cAGNA,EAAQ,SAAS,iBAFf,EAGV,EAEKC,EAAgBF,EAAAA,SAAS,IACrBG,GACFF,EAAQ,mBACHA,EAAQ,iBAAmBA,EAAQ,eAAiBE,CAKhE,EAEKC,EAAeJ,EAAAA,SAAS,IACpBK,GAAyC,WAC/C,IAAIC,EAAOD,EAAM,KACb,OAAAE,EAAAF,EAAM,OAAN,MAAAE,EAAY,oBACPD,GAAAE,GAAAC,EAAAJ,EAAM,UAAN,YAAAI,EAAe,OAAeC,GAAA,OAC5B,OAAAA,EAAK,SAASH,EAAAF,EAAM,OAAN,YAAAE,EAAY,kBAAA,KAD5B,YAAAC,EAEF,GAAG,MAGHP,EAAQ,aAAe,OAAYK,CAAA,CAE7C"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("vue");require("@vue/shared");const G=require("../../utils/error.js");require("../divider/index.js");const V=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("./index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");const w=require("@vft/utils");require("@vft/use");require("../multiple-tabs/index.js");const R=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");const T=require("@vueuse/core"),x=require("@vft/constants"),J=require("./types.js"),Q=require("./tab-bar.vue2.js"),P=R.useNamespace("tab-nav"),Z=t.defineComponent({name:P.b()}),_=t.defineComponent({...Z,props:{panes:null,editable:{type:Boolean},addable:{type:Boolean},type:null,stretch:{type:Boolean},closeIconCfg:null,addIconCfg:null,arrowLeftIconCfg:null,arrowRightIconCfg:null},emits:["tabClick","tabRemove","tabAdd","tabContextmenu"],setup(l,{expose:A,emit:C}){var E;const D=t.getCurrentInstance(),g=t.inject(J.TabsRootContextKey);g||G.throwError(P.b(),"<vft-tabs><tab-nav /></vft-tabs>");const n=R.useNamespace("tabs"),F=T.useDocumentVisibility(),L=T.useWindowFocus(),N=t.ref(),b=t.ref(),
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("vue");require("@vue/shared");const G=require("../../utils/error.js");require("../divider/index.js");const V=require("../icon/index.js");require("../avatar/index.js");require("../empty/index.js");require("../result/index.js");require("../exception/index.js");require("./index.js");require("../popper/index.js");require("../collapse-transition/index.js");require("../tooltip/index.js");require("../popover/index.js");require("../menu/index.js");const w=require("@vft/utils");require("@vft/use");require("../multiple-tabs/index.js");require("../header-layout/index.js");require("../footer-layout/index.js");require("../iframe-layout/index.js");require("../router-view-content/index.js");require("../logo/index.js");const R=require("../../hooks/use-namespace/index.js");require("@popperjs/core");require("lodash");require("../../hooks/use-z-index/index.js");const T=require("@vueuse/core"),x=require("@vft/constants"),J=require("./types.js"),Q=require("./tab-bar.vue2.js"),P=R.useNamespace("tab-nav"),Z=t.defineComponent({name:P.b()}),_=t.defineComponent({...Z,props:{panes:null,editable:{type:Boolean},addable:{type:Boolean},type:null,stretch:{type:Boolean},closeIconCfg:null,addIconCfg:null,arrowLeftIconCfg:null,arrowRightIconCfg:null},emits:["tabClick","tabRemove","tabAdd","tabContextmenu"],setup(l,{expose:A,emit:C}){var E;const D=t.getCurrentInstance(),g=t.inject(J.TabsRootContextKey);g||G.throwError(P.b(),"<vft-tabs><tab-nav /></vft-tabs>");const n=R.useNamespace("tabs"),F=T.useDocumentVisibility(),L=T.useWindowFocus(),N=t.ref(),b=t.ref(),q=t.ref(),f=t.ref(!1),d=t.ref(0),y=t.ref(!1),p=t.ref(!0),h=t.computed(()=>["top","bottom"].includes(g.props.tabPosition)?"width":"height"),M=t.computed(()=>({transform:`translate${h.value==="width"?"X":"Y"}(-${d.value}px)`})),K=()=>{if(!b.value)return;const o=b.value[`offset${w.capitalize(h.value)}`],e=d.value;e&&(d.value=e>o?e-o:0)},j=()=>{if(!b.value||!q.value)return;const o=q.value[`offset${w.capitalize(h.value)}`],e=b.value[`offset${w.capitalize(h.value)}`],a=d.value;o-a<=e||(d.value=o-a>e*2?a+e:o-e)},$=async()=>{const o=q.value;if(!f.value||!N.value||!b.value||!o)return;await t.nextTick();const e=N.value.querySelector(".is-active");if(!e)return;const a=b.value,m=["top","bottom"].includes(g.props.tabPosition),c=e.getBoundingClientRect(),s=a.getBoundingClientRect(),u=m?o.offsetWidth-s.width:o.offsetHeight-s.height,i=d.value;let r=i;m?(c.left<s.left&&(r=i-(s.left-c.left)),c.right>s.right&&(r=i+c.right-s.right)):(c.top<s.top&&(r=i-(s.top-c.top)),c.bottom>s.bottom&&(r=i+(c.bottom-s.bottom))),r=Math.max(r,0),d.value=Math.min(r,u)},O=()=>{if(!q.value||!b.value)return;const o=q.value[`offset${w.capitalize(h.value)}`],e=b.value[`offset${w.capitalize(h.value)}`],a=d.value;e<o?(f.value=f.value||{},f.value.prev=a,f.value.next=a+e<o,o-a<e&&(d.value=o-e)):(f.value=!1,a>0&&(d.value=0))},H=o=>{const e=o.code,{up:a,down:m,left:c,right:s}=x.EVENT_CODE;if(![a,m,c,s].includes(e))return;const u=Array.from(o.currentTarget.querySelectorAll("[role=tab]:not(.is-disabled)")),i=u.indexOf(o.target);let r;e===c||e===a?i===0?r=u.length-1:r=i-1:i<u.length-1?r=i+1:r=0,u[r].focus(),u[r].click(),z()},z=()=>{p.value&&(y.value=!0)},I=()=>y.value=!1;t.watch(F,o=>{o==="hidden"?p.value=!1:o==="visible"&&setTimeout(()=>p.value=!0,50)}),t.watch(L,o=>{o?setTimeout(()=>p.value=!0,50):p.value=!1}),T.useResizeObserver(N,O),t.onMounted(()=>setTimeout(()=>$(),0)),t.onUpdated(()=>O()),A({scrollToActiveTab:$,removeFocus:I}),t.watch(()=>l.panes,()=>D.update(),{flush:"post"});const W=t.computed(()=>{var o,e;return f.value?[t.createVNode("span",{class:[n.e("nav-prev"),n.is("disabled",!f.value.prev)],onClick:K},[(o=l.arrowLeftIconCfg)!=null&&o.icon?t.createVNode(V.VftIcon,l.arrowLeftIconCfg,null):null]),t.createVNode("span",{class:[n.e("nav-next"),n.is("disabled",!f.value.next)],onClick:j},[(e=l.arrowRightIconCfg)!=null&&e.icon?t.createVNode(V.VftIcon,l.arrowRightIconCfg,null):null])]:null}),U=t.computed(()=>{var o;return(o=l.panes)==null?void 0:o.map((e,a)=>{var S,k,B;const m=e.uid,c=e.props.disabled,s=e.props.name??e.index??`${a}`,u=!c&&(e.isClosable||l.editable);e.index=`${a}`;const i=u?t.createVNode("span",{class:"is-icon-close",onClick:v=>C("tabRemove",e,v)},[(S=l.closeIconCfg)!=null&&S.icon?t.createVNode(V.VftIcon,l.closeIconCfg,null):null]):null,r=((B=(k=e.slots).label)==null?void 0:B.call(k))||e.props.label,Y=!c&&e.active?0:-1;return t.createVNode("div",{ref:`tab-${m}`,class:[n.e("item"),n.is(g.props.tabPosition),n.is("active",e.active),n.is("disabled",c),n.is("closable",u),n.is("focus",y.value)],id:`tab-${s}`,key:`tab-${m}`,"aria-controls":`pane-${s}`,role:"tab","aria-selected":e.active,tabindex:Y,onFocus:()=>z(),onBlur:()=>I(),onClick:v=>{I(),C("tabClick",e,s,v)},onContextmenu:v=>{v.preventDefault(),C("tabContextmenu",{pane:e,index:a,event:v})},onKeydown:v=>{u&&(v.code===x.EVENT_CODE.delete||v.code===x.EVENT_CODE.backspace)&&C("tabRemove",e,v)}},[r,i])})}),X=l.editable||l.addable?t.createVNode("span",{class:n.e("new-tab"),tabindex:"0",onClick:()=>C("tabAdd"),onKeydown:o=>{o.code===x.EVENT_CODE.enter&&C("tabAdd")}},[(E=l.addIconCfg)!=null&&E.icon?t.createVNode(V.VftIcon,l.addIconCfg,null):null]):null;return()=>t.createVNode("div",{ref:N,class:[n.e("nav-wrap"),n.is("scrollable",!!f.value),n.is(g.props.tabPosition)]},[W.value,t.createVNode("div",{class:n.e("nav-scroll"),ref:b},[t.createVNode("div",{class:[n.e("nav"),n.is(g.props.tabPosition),n.is("stretch",l.stretch&&["top","bottom"].includes(g.props.tabPosition))],ref:q,style:M.value,role:"tablist",onKeydown:H},[l.type?null:t.createVNode(Q.default,{tabs:[...l.panes]},null),U.value]),X])])}});exports.default=_;
|
|
2
2
|
//# sourceMappingURL=tab-nav.vue2.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tab-nav.vue2.js","sources":["../../../../../packages/components/tabs/tab-nav.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns_nav = /* hoist-static*/ useNamespace('tab-nav')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: ns_nav.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { throwError } from '@vft-ui/utils';\nimport {\n computed,\n type CSSProperties,\n getCurrentInstance,\n inject,\n nextTick,\n onMounted,\n onUpdated,\n ref,\n watch\n} from 'vue';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { capitalize } from '@vft/utils';\nimport { EVENT_CODE } from '@vft/constants';\nimport { TabsRootContextKey } from './types';\nimport type { TabsPaneContext, TabsType, Scrollable } from './types';\nimport { useDocumentVisibility, useResizeObserver, useWindowFocus } from '@vueuse/core';\nimport TabBar from './tab-bar.vue';\n\ninterface TabNavProps {\n panes: TabsPaneContext[];\n /** 标签是否同时可增加和关闭 */\n editable?: boolean;\n /** 标签是否可增加 */\n addable?: boolean;\n /** tab 类型 */\n type?: TabsType;\n stretch?: boolean;\n /** 图标配置 */\n closeIconCfg?: IconProps;\n addIconCfg?: IconProps;\n arrowLeftIconCfg?: IconProps;\n arrowRightIconCfg?: IconProps;\n}\n\ndefineProps({\n \"panes\": null,\n \"editable\": { type: Boolean, },\n \"addable\": { type: Boolean, },\n \"type\": null,\n \"stretch\": { type: Boolean, },\n \"closeIconCfg\": null,\n \"addIconCfg\": null,\n \"arrowLeftIconCfg\": null,\n \"arrowRightIconCfg\": null\n})\n\nconst emit = defineEmits(['tabClick', 'tabRemove', 'tabAdd', 'tabContextmenu']);\n\n\n\n;\n\nconst vm = getCurrentInstance()!;\n\n// 获取从 index.vue 提供的数据信息\nconst rootTabs = inject(TabsRootContextKey)!;\nif (!rootTabs) throwError(ns_nav.b(), `<vft-tabs><tab-nav /></vft-tabs>`)\n\nconst ns = useNamespace('tabs');\nconst visibility = useDocumentVisibility();\nconst focused = useWindowFocus();\n\n// 整个 nav dom 包含前进后退 btn (vft-tabs__nav-wrap)\nconst el$ = ref<HTMLDivElement>();\n// el$ 子节点 包含 newButton (vft-tabs__nav-scroll)\nconst navScroll$ = ref<HTMLDivElement>();\n// navScroll$ 子节点 (vft-tabs__nav)\nconst nav$ = ref<HTMLDivElement>();\n\n/** 是否展示左右滚动 */\nconst scrollable = ref<false | Scrollable>(false);\n// 记录滚动时的偏移量\nconst navOffset = ref(0);\nconst isFocus = ref(false);\nconst focusable = ref(true);\n\n// 根据 tabPosition 确定 sizeName 是 width or height\nconst sizeName = computed(() => ['top', 'bottom'].includes(rootTabs.props.tabPosition!) ? 'width' : 'height');\n\n// 设置 tab 导航栏的 translateX or translateY 的偏移量\nconst navStyle = computed<CSSProperties>(() => {\n const dir = sizeName.value === 'width' ? 'X' : 'Y';\n return {\n transform: `translate${dir}(-${navOffset.value}px)`\n };\n});\n\n// 向前滚动\nconst scrollPrev = () => {\n if (!navScroll$.value) return;\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n\n if (!currentOffset) return;\n\n navOffset.value = currentOffset > containerSize ? currentOffset - containerSize : 0;\n};\n\n// 向后滚动\nconst scrollNext = () => {\n if (!navScroll$.value || !nav$.value) return;\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n\n if (navSize - currentOffset <= containerSize) return;\n\n navOffset.value = navSize - currentOffset > containerSize * 2\n ? currentOffset + containerSize\n : navSize - containerSize;\n};\n\n// 滚动到激活的 tab 主要是获取 navOffset 的值\nconst scrollToActiveTab = async() => {\n const nav = nav$.value;\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return;\n\n await nextTick();\n\n const activeTab = el$.value.querySelector('.is-active');\n if (!activeTab) return;\n\n const navScroll = navScroll$.value;\n const isHorizontal = ['top', 'bottom'].includes(\n rootTabs.props.tabPosition!\n );\n const activeTabBounding = activeTab.getBoundingClientRect();\n // vft-tabs__nav-scroll\n const navScrollBounding = navScroll.getBoundingClientRect();\n const maxOffset = isHorizontal\n ? nav.offsetWidth - navScrollBounding.width\n : nav.offsetHeight - navScrollBounding.height;\n\n const currentOffset = navOffset.value;\n\n let newOffset = currentOffset;\n\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset =\n currentOffset - (navScrollBounding.left - activeTabBounding.left);\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset =\n currentOffset + activeTabBounding.right - navScrollBounding.right;\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset =\n currentOffset - (navScrollBounding.top - activeTabBounding.top);\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset =\n currentOffset +\n (activeTabBounding.bottom - navScrollBounding.bottom);\n }\n }\n newOffset = Math.max(newOffset, 0);\n navOffset.value = Math.min(newOffset, maxOffset);\n};\n\nconst update = () => {\n if (!nav$.value || !navScroll$.value) return;\n // 根据 position 的不同 获取 nav$(vft-tabs__nav) 的 offsetWidth or offsetHeight\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n // 获取到 navScroll$ 的 offsetWidth or offsetHeight\n const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`];\n // 获取到当前的偏移量\n const currentOffset = navOffset.value;\n // 由于 navScroll$ 的 overflow 是 hidden,所以当 vft-tabs__nav 撑开时其宽度可能会超过 vft-tabs__nav-scroll\n if (containerSize < navSize) {\n scrollable.value = scrollable.value || {};\n scrollable.value.prev = currentOffset;\n scrollable.value.next = currentOffset + containerSize < navSize;\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize;\n }\n } else {\n scrollable.value = false;\n if (currentOffset > 0) {\n navOffset.value = 0;\n }\n }\n};\n\nconst changeTab = (e: KeyboardEvent) => {\n const code = e.code;\n\n const { up, down, left, right } = EVENT_CODE;\n if (![up, down, left, right].includes(code)) return;\n\n // 左右上下键更换tab\n const tabList = Array.from(\n (e.currentTarget as HTMLDivElement).querySelectorAll<HTMLDivElement>(\n '[role=tab]:not(.is-disabled)'\n )\n );\n const currentIndex = tabList.indexOf(e.target as HTMLDivElement);\n\n let nextIndex: number;\n if (code === left || code === up) {\n // left\n if (currentIndex === 0) {\n // first\n nextIndex = tabList.length - 1;\n } else {\n nextIndex = currentIndex - 1;\n }\n } else {\n // right\n if (currentIndex < tabList.length - 1) {\n // not last\n nextIndex = currentIndex + 1;\n } else {\n nextIndex = 0;\n }\n }\n tabList[nextIndex].focus(); // 改变焦点元素\n tabList[nextIndex].click(); // 选中下一个tab\n setFocus();\n};\n\nconst setFocus = () => {\n if (focusable.value) isFocus.value = true;\n};\nconst removeFocus = () => (isFocus.value = false);\n\nwatch(visibility, (visibility) => {\n if (visibility === 'hidden') {\n focusable.value = false;\n } else if (visibility === 'visible') {\n setTimeout(() => (focusable.value = true), 50);\n }\n});\n\nwatch(focused, (focused) => {\n if (focused) {\n setTimeout(() => (focusable.value = true), 50);\n } else {\n focusable.value = false;\n }\n});\n\n// 监听 resize 触发 update\nuseResizeObserver(el$, update);\n\nonMounted(() => setTimeout(() => scrollToActiveTab(), 0));\nonUpdated(() => update());\n\ndefineExpose({\n scrollToActiveTab,\n removeFocus\n});\n\nwatch(\n () => __props.panes,\n () => vm.update(),\n { flush: 'post' }\n);\n\n// 前进后退标签\nconst scrollBtn = computed(() => {\n return scrollable.value\n ? [\n <span\n class={[\n ns.e('nav-prev'),\n ns.is('disabled', !scrollable.value.prev)\n ]}\n onClick={scrollPrev}\n >\n {__props.arrowLeftIconCfg?.icon ? <VftIcon {...__props.arrowLeftIconCfg}></VftIcon> : null}\n </span>,\n <span\n class={[\n ns.e('nav-next'),\n ns.is('disabled', !scrollable.value.next)\n ]}\n onClick={scrollNext}\n >\n {__props.arrowRightIconCfg?.icon ? <VftIcon {...__props.arrowRightIconCfg}></VftIcon> : null}\n </span>\n ]\n : null;\n});\n\n// 渲染 tab-pane\nconst tabs = computed(() => {\n return __props.panes?.map((pane, index) => {\n const uid = pane.uid;\n const disabled = pane.props.disabled;\n const tabName = pane.props.name ?? pane.index ?? `${index}`;\n const closable = !disabled && (pane.isClosable || __props.editable);\n pane.index = `${index}`;\n\n // 关闭标签图标\n const btnClose = closable ? (\n <span class=\"is-icon-close\" onClick={(ev: MouseEvent) => emit('tabRemove', pane, ev)}>\n {__props.closeIconCfg?.icon ? <VftIcon {...__props.closeIconCfg}></VftIcon> : null}\n </span>\n ) : null;\n\n const tabLabelContent = pane.slots.label?.() || pane.props.label;\n const tabindex = !disabled && pane.active ? 0 : -1;\n\n return (\n <div\n ref={`tab-${uid}`}\n class={[\n ns.e('item'),\n ns.is(rootTabs.props.tabPosition!),\n ns.is('active', pane.active),\n ns.is('disabled', disabled),\n ns.is('closable', closable),\n ns.is('focus', isFocus.value)\n ]}\n id={`tab-${tabName}`}\n key={`tab-${uid}`}\n aria-controls={`pane-${tabName}`}\n role=\"tab\"\n aria-selected={pane.active}\n tabindex={tabindex}\n onFocus={() => setFocus()}\n onBlur={() => removeFocus()}\n onClick={(ev: MouseEvent) => {\n removeFocus();\n emit('tabClick', pane, tabName, ev);\n }}\n onContextmenu={(event) => {\n event.preventDefault();\n emit('tabContextmenu', { pane, index, event });\n }}\n onKeydown={(ev: KeyboardEvent) => {\n if (\n closable &&\n (ev.code === EVENT_CODE.delete ||\n ev.code === EVENT_CODE.backspace)\n ) {\n emit('tabRemove', pane, ev);\n }\n }}\n >\n {...[tabLabelContent, btnClose]}\n </div>\n );\n });\n});\n\n// 增加 tab 的 dom\nconst newButton =\n __props.editable || __props.addable ? (\n <span\n class={ns.e('new-tab')}\n tabindex=\"0\"\n onClick={() => emit('tabAdd')}\n onKeydown={(ev: KeyboardEvent) => {\n if (ev.code === EVENT_CODE.enter) emit('tabAdd');\n }}\n >\n {__props.addIconCfg?.icon ? <VftIcon {...__props.addIconCfg}></VftIcon> : null}\n </span>\n ) : null;\n\ndefineRender(() => {\n return (\n <div\n ref={el$}\n class={[\n ns.e('nav-wrap'),\n ns.is('scrollable', !!scrollable.value),\n ns.is(rootTabs.props.tabPosition!)\n ]}\n >\n {scrollBtn.value}\n <div class={ns.e('nav-scroll')} ref={navScroll$}>\n <div\n class={[\n ns.e('nav'),\n ns.is(rootTabs.props.tabPosition!),\n ns.is(\n 'stretch',\n __props.stretch &&\n ['top', 'bottom'].includes(rootTabs.props.tabPosition!)\n )\n ]}\n ref={nav$}\n style={navStyle.value}\n role=\"tablist\"\n onKeydown={changeTab}\n >\n {...[\n !__props.type ? <TabBar tabs={[...__props.panes]} /> : null,\n tabs.value\n ]}\n </div>\n {newButton}\n </div>\n </div>\n );\n});\n</script>\n"],"names":["ns_nav","useNamespace","__default__","DO_defineComponent","name","b","vm","getCurrentInstance","rootTabs","inject","TabsRootContextKey","throwError","ns","visibility","useDocumentVisibility","focused","useWindowFocus","el$","ref","navScroll$","nav$","scrollable","navOffset","isFocus","focusable","sizeName","computed","includes","props","tabPosition","navStyle","transform","value","scrollPrev","containerSize","capitalize","currentOffset","scrollNext","navSize","scrollToActiveTab","nav","nextTick","activeTab","querySelector","navScroll","isHorizontal","activeTabBounding","getBoundingClientRect","navScrollBounding","maxOffset","offsetWidth","width","offsetHeight","height","newOffset","left","right","top","bottom","Math","max","min","update","prev","next","changeTab","e","code","up","down","EVENT_CODE","tabList","Array","from","currentTarget","querySelectorAll","currentIndex","indexOf","target","nextIndex","length","focus","click","setFocus","removeFocus","watch","setTimeout","useResizeObserver","onMounted","onUpdated","expose","__props","panes","flush","scrollBtn","_createVNode","is","arrowLeftIconCfg","icon","VftIcon","arrowRightIconCfg","tabs","map","pane","index","uid","disabled","tabName","closable","isClosable","editable","btnClose","ev","emit","closeIconCfg","tabLabelContent","slots","label","tabindex","active","onFocus","onBlur","event","preventDefault","delete","backspace","newButton","addable","onClick","enter","addIconCfg","stretch","type","TabBar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tab-nav.vue2.js","sources":["../../../../../packages/components/tabs/tab-nav.vue"],"sourcesContent":["<script lang=\"tsx\">\nconst ns_nav = /* hoist-static*/ useNamespace('tab-nav')\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: ns_nav.b()\n});</script>\n<script lang=\"tsx\" setup>\nimport { throwError } from '@vft-ui/utils';\nimport {\n computed,\n type CSSProperties,\n getCurrentInstance,\n inject,\n nextTick,\n onMounted,\n onUpdated,\n ref,\n watch\n} from 'vue';\nimport { type IconProps, VftIcon } from '@vft-ui/components';\nimport { useNamespace } from '@vft-ui/hooks';\nimport { capitalize } from '@vft/utils';\nimport { EVENT_CODE } from '@vft/constants';\nimport { TabsRootContextKey } from './types';\nimport type { TabsPaneContext, TabsType, Scrollable } from './types';\nimport { useDocumentVisibility, useResizeObserver, useWindowFocus } from '@vueuse/core';\nimport TabBar from './tab-bar.vue';\n\ninterface TabNavProps {\n panes: TabsPaneContext[];\n /** 标签是否同时可增加和关闭 */\n editable?: boolean;\n /** 标签是否可增加 */\n addable?: boolean;\n /** tab 类型 */\n type?: TabsType;\n stretch?: boolean;\n /** 图标配置 */\n closeIconCfg?: IconProps;\n addIconCfg?: IconProps;\n arrowLeftIconCfg?: IconProps;\n arrowRightIconCfg?: IconProps;\n}\n\ndefineProps({\n \"panes\": null,\n \"editable\": { type: Boolean, },\n \"addable\": { type: Boolean, },\n \"type\": null,\n \"stretch\": { type: Boolean, },\n \"closeIconCfg\": null,\n \"addIconCfg\": null,\n \"arrowLeftIconCfg\": null,\n \"arrowRightIconCfg\": null\n})\n\nconst emit = defineEmits(['tabClick', 'tabRemove', 'tabAdd', 'tabContextmenu']);\n\n\n\n;\n\nconst vm = getCurrentInstance()!;\n\n// 获取从 index.vue 提供的数据信息\nconst rootTabs = inject(TabsRootContextKey)!;\nif (!rootTabs) throwError(ns_nav.b(), `<vft-tabs><tab-nav /></vft-tabs>`)\n\nconst ns = useNamespace('tabs');\nconst visibility = useDocumentVisibility();\nconst focused = useWindowFocus();\n\n// 整个 nav dom 包含前进后退 btn (vft-tabs__nav-wrap)\nconst el$ = ref<HTMLDivElement>();\n// el$ 子节点 包含 newButton (vft-tabs__nav-scroll)\nconst navScroll$ = ref<HTMLDivElement>();\n// navScroll$ 子节点 (vft-tabs__nav)\nconst nav$ = ref<HTMLDivElement>();\n\n/** 是否展示左右滚动 */\nconst scrollable = ref<false | Scrollable>(false);\n// 记录滚动时的偏移量\nconst navOffset = ref(0);\nconst isFocus = ref(false);\nconst focusable = ref(true);\n\n// 根据 tabPosition 确定 sizeName 是 width or height\nconst sizeName = computed(() => ['top', 'bottom'].includes(rootTabs.props.tabPosition!) ? 'width' : 'height');\n\n// 设置 tab 导航栏的 translateX or translateY 的偏移量\nconst navStyle = computed<CSSProperties>(() => {\n const dir = sizeName.value === 'width' ? 'X' : 'Y';\n return {\n transform: `translate${dir}(-${navOffset.value}px)`\n };\n});\n\n// 向前滚动\nconst scrollPrev = () => {\n if (!navScroll$.value) return;\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n\n if (!currentOffset) return;\n\n navOffset.value = currentOffset > containerSize ? currentOffset - containerSize : 0;\n};\n\n// 向后滚动\nconst scrollNext = () => {\n if (!navScroll$.value || !nav$.value) return;\n\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n const containerSize =\n navScroll$.value[`offset${capitalize(sizeName.value)}`];\n const currentOffset = navOffset.value;\n\n if (navSize - currentOffset <= containerSize) return;\n\n navOffset.value = navSize - currentOffset > containerSize * 2\n ? currentOffset + containerSize\n : navSize - containerSize;\n};\n\n// 滚动到激活的 tab 主要是获取 navOffset 的值\nconst scrollToActiveTab = async() => {\n const nav = nav$.value;\n if (!scrollable.value || !el$.value || !navScroll$.value || !nav) return;\n\n await nextTick();\n\n const activeTab = el$.value.querySelector('.is-active');\n if (!activeTab) return;\n\n const navScroll = navScroll$.value;\n const isHorizontal = ['top', 'bottom'].includes(\n rootTabs.props.tabPosition!\n );\n const activeTabBounding = activeTab.getBoundingClientRect();\n // vft-tabs__nav-scroll\n const navScrollBounding = navScroll.getBoundingClientRect();\n const maxOffset = isHorizontal\n ? nav.offsetWidth - navScrollBounding.width\n : nav.offsetHeight - navScrollBounding.height;\n\n const currentOffset = navOffset.value;\n\n let newOffset = currentOffset;\n\n if (isHorizontal) {\n if (activeTabBounding.left < navScrollBounding.left) {\n newOffset =\n currentOffset - (navScrollBounding.left - activeTabBounding.left);\n }\n if (activeTabBounding.right > navScrollBounding.right) {\n newOffset =\n currentOffset + activeTabBounding.right - navScrollBounding.right;\n }\n } else {\n if (activeTabBounding.top < navScrollBounding.top) {\n newOffset =\n currentOffset - (navScrollBounding.top - activeTabBounding.top);\n }\n if (activeTabBounding.bottom > navScrollBounding.bottom) {\n newOffset =\n currentOffset +\n (activeTabBounding.bottom - navScrollBounding.bottom);\n }\n }\n newOffset = Math.max(newOffset, 0);\n navOffset.value = Math.min(newOffset, maxOffset);\n};\n\nconst update = () => {\n if (!nav$.value || !navScroll$.value) return;\n // 根据 position 的不同 获取 nav$(vft-tabs__nav) 的 offsetWidth or offsetHeight\n const navSize = nav$.value[`offset${capitalize(sizeName.value)}`];\n // 获取到 navScroll$ 的 offsetWidth or offsetHeight\n const containerSize = navScroll$.value[`offset${capitalize(sizeName.value)}`];\n // 获取到当前的偏移量\n const currentOffset = navOffset.value;\n // 由于 navScroll$ 的 overflow 是 hidden,所以当 vft-tabs__nav 撑开时其宽度可能会超过 vft-tabs__nav-scroll\n if (containerSize < navSize) {\n scrollable.value = scrollable.value || {};\n scrollable.value.prev = currentOffset;\n scrollable.value.next = currentOffset + containerSize < navSize;\n if (navSize - currentOffset < containerSize) {\n navOffset.value = navSize - containerSize;\n }\n } else {\n scrollable.value = false;\n if (currentOffset > 0) {\n navOffset.value = 0;\n }\n }\n};\n\nconst changeTab = (e: KeyboardEvent) => {\n const code = e.code;\n\n const { up, down, left, right } = EVENT_CODE;\n if (![up, down, left, right].includes(code)) return;\n\n // 左右上下键更换tab\n const tabList = Array.from(\n (e.currentTarget as HTMLDivElement).querySelectorAll<HTMLDivElement>(\n '[role=tab]:not(.is-disabled)'\n )\n );\n const currentIndex = tabList.indexOf(e.target as HTMLDivElement);\n\n let nextIndex: number;\n if (code === left || code === up) {\n // left\n if (currentIndex === 0) {\n // first\n nextIndex = tabList.length - 1;\n } else {\n nextIndex = currentIndex - 1;\n }\n } else {\n // right\n if (currentIndex < tabList.length - 1) {\n // not last\n nextIndex = currentIndex + 1;\n } else {\n nextIndex = 0;\n }\n }\n tabList[nextIndex].focus(); // 改变焦点元素\n tabList[nextIndex].click(); // 选中下一个tab\n setFocus();\n};\n\nconst setFocus = () => {\n if (focusable.value) isFocus.value = true;\n};\nconst removeFocus = () => (isFocus.value = false);\n\nwatch(visibility, (visibility) => {\n if (visibility === 'hidden') {\n focusable.value = false;\n } else if (visibility === 'visible') {\n setTimeout(() => (focusable.value = true), 50);\n }\n});\n\nwatch(focused, (focused) => {\n if (focused) {\n setTimeout(() => (focusable.value = true), 50);\n } else {\n focusable.value = false;\n }\n});\n\n// 监听 resize 触发 update\nuseResizeObserver(el$, update);\n\nonMounted(() => setTimeout(() => scrollToActiveTab(), 0));\nonUpdated(() => update());\n\ndefineExpose({\n scrollToActiveTab,\n removeFocus\n});\n\nwatch(\n () => __props.panes,\n () => vm.update(),\n { flush: 'post' }\n);\n\n// 前进后退标签\nconst scrollBtn = computed(() => {\n return scrollable.value\n ? [\n <span\n class={[\n ns.e('nav-prev'),\n ns.is('disabled', !scrollable.value.prev)\n ]}\n onClick={scrollPrev}\n >\n {__props.arrowLeftIconCfg?.icon ? <VftIcon {...__props.arrowLeftIconCfg}></VftIcon> : null}\n </span>,\n <span\n class={[\n ns.e('nav-next'),\n ns.is('disabled', !scrollable.value.next)\n ]}\n onClick={scrollNext}\n >\n {__props.arrowRightIconCfg?.icon ? <VftIcon {...__props.arrowRightIconCfg}></VftIcon> : null}\n </span>\n ]\n : null;\n});\n\n// 渲染 tab-pane\nconst tabs = computed(() => {\n return __props.panes?.map((pane, index) => {\n const uid = pane.uid;\n const disabled = pane.props.disabled;\n const tabName = pane.props.name ?? pane.index ?? `${index}`;\n const closable = !disabled && (pane.isClosable || __props.editable);\n pane.index = `${index}`;\n\n // 关闭标签图标\n const btnClose = closable ? (\n <span class=\"is-icon-close\" onClick={(ev: MouseEvent) => emit('tabRemove', pane, ev)}>\n {__props.closeIconCfg?.icon ? <VftIcon {...__props.closeIconCfg}></VftIcon> : null}\n </span>\n ) : null;\n\n const tabLabelContent = pane.slots.label?.() || pane.props.label;\n const tabindex = !disabled && pane.active ? 0 : -1;\n\n return (\n <div\n ref={`tab-${uid}`}\n class={[\n ns.e('item'),\n ns.is(rootTabs.props.tabPosition!),\n ns.is('active', pane.active),\n ns.is('disabled', disabled),\n ns.is('closable', closable),\n ns.is('focus', isFocus.value)\n ]}\n id={`tab-${tabName}`}\n key={`tab-${uid}`}\n aria-controls={`pane-${tabName}`}\n role=\"tab\"\n aria-selected={pane.active}\n tabindex={tabindex}\n onFocus={() => setFocus()}\n onBlur={() => removeFocus()}\n onClick={(ev: MouseEvent) => {\n removeFocus();\n emit('tabClick', pane, tabName, ev);\n }}\n onContextmenu={(event) => {\n event.preventDefault();\n emit('tabContextmenu', { pane, index, event });\n }}\n onKeydown={(ev: KeyboardEvent) => {\n if (\n closable &&\n (ev.code === EVENT_CODE.delete ||\n ev.code === EVENT_CODE.backspace)\n ) {\n emit('tabRemove', pane, ev);\n }\n }}\n >\n {...[tabLabelContent, btnClose]}\n </div>\n );\n });\n});\n\n// 增加 tab 的 dom\nconst newButton =\n __props.editable || __props.addable ? (\n <span\n class={ns.e('new-tab')}\n tabindex=\"0\"\n onClick={() => emit('tabAdd')}\n onKeydown={(ev: KeyboardEvent) => {\n if (ev.code === EVENT_CODE.enter) emit('tabAdd');\n }}\n >\n {__props.addIconCfg?.icon ? <VftIcon {...__props.addIconCfg}></VftIcon> : null}\n </span>\n ) : null;\n\ndefineRender(() => {\n return (\n <div\n ref={el$}\n class={[\n ns.e('nav-wrap'),\n ns.is('scrollable', !!scrollable.value),\n ns.is(rootTabs.props.tabPosition!)\n ]}\n >\n {scrollBtn.value}\n <div class={ns.e('nav-scroll')} ref={navScroll$}>\n <div\n class={[\n ns.e('nav'),\n ns.is(rootTabs.props.tabPosition!),\n ns.is(\n 'stretch',\n __props.stretch &&\n ['top', 'bottom'].includes(rootTabs.props.tabPosition!)\n )\n ]}\n ref={nav$}\n style={navStyle.value}\n role=\"tablist\"\n onKeydown={changeTab}\n >\n {...[\n !__props.type ? <TabBar tabs={[...__props.panes]} /> : null,\n tabs.value\n ]}\n </div>\n {newButton}\n </div>\n </div>\n );\n});\n</script>\n"],"names":["ns_nav","useNamespace","__default__","DO_defineComponent","name","b","vm","getCurrentInstance","rootTabs","inject","TabsRootContextKey","throwError","ns","visibility","useDocumentVisibility","focused","useWindowFocus","el$","ref","navScroll$","nav$","scrollable","navOffset","isFocus","focusable","sizeName","computed","includes","props","tabPosition","navStyle","transform","value","scrollPrev","containerSize","capitalize","currentOffset","scrollNext","navSize","scrollToActiveTab","nav","nextTick","activeTab","querySelector","navScroll","isHorizontal","activeTabBounding","getBoundingClientRect","navScrollBounding","maxOffset","offsetWidth","width","offsetHeight","height","newOffset","left","right","top","bottom","Math","max","min","update","prev","next","changeTab","e","code","up","down","EVENT_CODE","tabList","Array","from","currentTarget","querySelectorAll","currentIndex","indexOf","target","nextIndex","length","focus","click","setFocus","removeFocus","watch","setTimeout","useResizeObserver","onMounted","onUpdated","expose","__props","panes","flush","scrollBtn","_createVNode","is","arrowLeftIconCfg","icon","VftIcon","arrowRightIconCfg","tabs","map","pane","index","uid","disabled","tabName","closable","isClosable","editable","btnClose","ev","emit","closeIconCfg","tabLabelContent","slots","label","tabindex","active","onFocus","onBlur","event","preventDefault","delete","backspace","newButton","addable","onClick","enter","addIconCfg","stretch","type","TabBar"],"mappings":"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"}
|
package/lib/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const r=require("./defaults.js"),V=require("./components/divider/index.js"),E=require("./components/icon/index.js"),T=require("./components/avatar/index.js"),x=require("./components/empty/index.js"),_=require("./components/result/index.js"),q=require("./components/exception/index.js"),i=require("./components/tabs/index.js"),m=require("./components/popper/index.js"),I=require("./components/collapse-transition/index.js"),C=require("./components/tooltip/index.js"),M=require("./components/popover/index.js"),t=require("./components/menu/index.js"),a=require("./components/context-menu/createContextMenu.js"),g=require("./components/context-menu/useContextMenu.js"),y=require("./components/multiple-tabs/index.js"),N=require("./components/header-layout/index.js"),D=require("./components/footer-layout/index.js"),$=require("./components/iframe-layout/index.js"),b=require("./components/router-view-content/index.js"),v=require("./components/logo/index.js"),P=require("./constants/aria.js"),d=require("./constants/date.js"),n=require("./constants/event.js"),R=require("./constants/key.js"),c=require("./constants/size.js"),e=require("./hooks/use-namespace/index.js"),A=require("./hooks/use-popper/index.js"),p=require("./hooks/use-z-index/index.js"),o=require("./hooks/use-forward-ref/index.js"),u=require("./hooks/use-id/index.js"),f=require("./hooks/use-popper-container/index.js"),K=require("./hooks/use-delayed-toggle/index.js"),L=require("./hooks/use-timeout/index.js"),O=require("./hooks/use-ordered-children/index.js"),s=require("./hooks/use-model-toggle/index.js"),S=require("./make-installer.js"),w=require("dayjs"),F=require("./components/empty/constants.js"),Y=require("./components/tabs/types.js"),k=require("./components/popper/arrow.vue2.js"),z=require("./components/popper/trigger.vue2.js"),j=require("./components/popper/content.vue2.js"),G=require("./components/multiple-tabs/use/use-tab-dropdown.js"),l=require("./components/multiple-tabs/use/use-multiple-tabs.js"),H=r.default.install,J=r.default.version;exports.default=r.default;exports.VftDivider=V.VftDivider;exports.VftIcon=E.VftIcon;exports.VftAvatar=T.VftAvatar;exports.VftEmpty=x.VftEmpty;exports.VftResult=_.VftResult;exports.VftException=q.VftException;exports.VftTabPane=i.VftTabPane;exports.VftTabs=i.VftTabs;exports.VftPopper=m.VftPopper;exports.VftCollapseTransition=I.VftCollapseTransition;exports.VftTooltip=C.VftTooltip;exports.VftPopover=M.VftPopover;exports.VftMenu=t.VftMenu;exports.VftMenuItem=t.VftMenuItem;exports.VftMenuItemGroup=t.VftMenuItemGroup;exports.VftSubMenu=t.VftSubMenu;exports.createContextMenu=a.createContextMenu;exports.destroyContextMenu=a.destroyContextMenu;exports.useContextMenu=g.useContextMenu;exports.VftMultipleTabs=y.VftMultipleTabs;exports.VftHeaderLayout=N.VftHeaderLayout;exports.VftFooterLayout=D.VftFooterLayout;exports.VftIframeLayout=$.VftIframeLayout;exports.VftRouterViewContent=b.VftRouterViewContent;exports.VftLogo=v.VftLogo;exports.EVENT_CODE=P.EVENT_CODE;exports.WEEK_DAYS=d.WEEK_DAYS;exports.datePickTypes=d.datePickTypes;exports.CHANGE_EVENT=n.CHANGE_EVENT;exports.INPUT_EVENT=n.INPUT_EVENT;exports.UPDATE_MODEL_EVENT=n.UPDATE_MODEL_EVENT;exports.INSTALLED_KEY=R.INSTALLED_KEY;exports.componentSizeMap=c.componentSizeMap;exports.componentSizes=c.componentSizes;exports._bem=e._bem;exports.defaultNamespace=e.defaultNamespace;exports.namespaceContextKey=e.namespaceContextKey;exports.useGetDerivedNamespace=e.useGetDerivedNamespace;exports.useNamespace=e.useNamespace;exports.usePopper=A.usePopper;exports.useZIndex=p.useZIndex;exports.zIndexContextKey=p.zIndexContextKey;exports.FORWARD_REF_INJECTION_KEY=o.FORWARD_REF_INJECTION_KEY;exports.useForwardRef=o.useForwardRef;exports.useForwardRefDirective=o.useForwardRefDirective;exports.ID_INJECTION_KEY=u.ID_INJECTION_KEY;exports.useId=u.useId;exports.useIdInjection=u.useIdInjection;exports.usePopperContainer=f.usePopperContainer;exports.usePopperContainerId=f.usePopperContainerId;exports.useDelayedToggle=K.useDelayedToggle;exports.useTimeout=L.useTimeout;exports.useOrderedChildren=O.useOrderedChildren;exports.createModelToggleComposable=s.createModelToggleComposable;exports.useModelToggle=s.useModelToggle;exports.useModelToggleEmits=s.useModelToggleEmits;exports.makeInstaller=S.makeInstaller;exports.dayjs=w;exports.EmptyEnum=F.EmptyEnum;exports.TabsRootContextKey=Y.TabsRootContextKey;exports.VftPopperArrow=k.default;exports.VftPopperTrigger=z.default;exports.VftPopperContent=j.default;exports.useTabDropdown=G.useTabDropdown;exports.initAffixTabs=l.initAffixTabs;exports.useTabsDrag=l.useTabsDrag;exports.install=H;exports.version=J;
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../packages/vft/index.ts"],"sourcesContent":["import installer from './defaults'\nexport * from '@vft-ui/components'\nexport * from '@vft-ui/constants'\nexport * from '@vft-ui/hooks'\nexport * from './make-installer'\n\nexport const install = installer.install\nexport const version = installer.version\nexport default installer\n\nexport { default as dayjs } from 'dayjs'\n"],"names":["install","installer","version"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../packages/vft/index.ts"],"sourcesContent":["import installer from './defaults'\nexport * from '@vft-ui/components'\nexport * from '@vft-ui/constants'\nexport * from '@vft-ui/hooks'\nexport * from './make-installer'\n\nexport const install = installer.install\nexport const version = installer.version\nexport default installer\n\nexport { default as dayjs } from 'dayjs'\n"],"names":["install","installer","version"],"mappings":"2iEAMaA,EAAUC,EAAU,QAAA,QACpBC,EAAUD,EAAAA,QAAU"}
|
package/lib/package.json.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.0.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e="0.0.18";exports.version=e;
|
|
2
2
|
//# sourceMappingURL=package.json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer-layout.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header-layout.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iframe-layout.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logo.scss.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
package/package.json
CHANGED
package/theme-style/index.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";:root{--vft-color-white:#fff;--vft-color-black:#000;--vft-theme-color:#fff;--vft-theme-color-reverse:#000;--vft-font-size-extra-large:20px;--vft-font-size-large:18px;--vft-font-size-medium:16px;--vft-font-size-base:14px;--vft-font-size-small:13px;--vft-font-size-extra-small:12px;--vft-font-family:'Helvetica Neue',Helvetica,'PingFang SC','Hiragino Sans GB','Microsoft YaHei','微软雅黑',Arial,sans-serif;--vft-font-weight-primary:500;--vft-font-line-height-primary:24px;--vft-index-normal:1;--vft-index-top:1000;--vft-index-popper:2000;--vft-border-radius-base:4px;--vft-border-radius-small:2px;--vft-border-radius-round:20px;--vft-border-radius-circle:100%;--vft-transition-duration:0.3s;--vft-transition-duration-fast:0.2s;--vft-transition-function-ease-in-out-bezier:cubic-bezier(0.645, 0.045, 0.355, 1);--vft-transition-function-fast-bezier:cubic-bezier(0.23, 1, 0.32, 1);--vft-transition-all:all var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier);--vft-transition-fade:opacity var(--vft-transition-duration) var(--vft-transition-function-fast-bezier);--vft-transition-md-fade:transform var(--vft-transition-duration) var(--vft-transition-function-fast-bezier),opacity var(--vft-transition-duration) var(--vft-transition-function-fast-bezier);--vft-transition-fade-linear:opacity var(--vft-transition-duration-fast) linear;--vft-transition-border:border-color var(--vft-transition-duration-fast) var(--vft-transition-function-ease-in-out-bezier);--vft-transition-box-shadow:box-shadow var(--vft-transition-duration-fast) var(--vft-transition-function-ease-in-out-bezier);--vft-transition-color:color var(--vft-transition-duration-fast) var(--vft-transition-function-ease-in-out-bezier)}:root{color-scheme:light;--vft-primary-color:#2196f3;--vft-primary-color-light-3:#64b6f7;--vft-primary-color-light-5:#90cbf9;--vft-primary-color-light-7:#bce0fb;--vft-primary-color-light-8:#d3eafd;--vft-primary-color-light-9:#e9f5fe;--vft-primary-color-dark-2:#1a78c2;--vft-success-color:#3eaf7c;--vft-success-color-light-3:#78c7a3;--vft-success-color-light-5:#9fd7be;--vft-success-color-light-7:#c5e7d8;--vft-success-color-light-8:#d8efe5;--vft-success-color-light-9:#ecf7f2;--vft-success-color-dark-2:#328c63;--vft-warning-color:#fb9b5f;--vft-warning-color-light-3:#fcb98f;--vft-warning-color-light-5:#fdcdaf;--vft-warning-color-light-7:#fee1cf;--vft-warning-color-light-8:#feebdf;--vft-warning-color-light-9:#fff5ef;--vft-warning-color-dark-2:#c97c4c;--vft-danger-color:#f26d6d;--vft-danger-color-light-3:#f69999;--vft-danger-color-light-5:#f9b6b6;--vft-danger-color-light-7:#fbd3d3;--vft-danger-color-light-8:#fce2e2;--vft-danger-color-light-9:#fef0f0;--vft-danger-color-dark-2:#c25757;--vft-error-color:#f26d6d;--vft-error-color-light-3:#f69999;--vft-error-color-light-5:#f9b6b6;--vft-error-color-light-7:#fbd3d3;--vft-error-color-light-8:#fce2e2;--vft-error-color-light-9:#fef0f0;--vft-error-color-dark-2:#c25757;--vft-info-color:#909399;--vft-info-color-light-3:#b1b3b8;--vft-info-color-light-5:#c8c9cc;--vft-info-color-light-7:#dedfe0;--vft-info-color-light-8:#e9e9eb;--vft-info-color-light-9:#f4f4f5;--vft-info-color-dark-2:#73767a;--vft-bg-color:#fff;--vft-bg-color-page:#f2f3f5;--vft-bg-color-overlay:#fff;--vft-text-primary-color:#303133;--vft-text-regular-color:#606266;--vft-text-secondary-color:#909399;--vft-text-placeholder-color:#a8abb2;--vft-text-disabled-color:#c0c4cc;--vft-border-color:#dcdfe6;--vft-border-color-light:#e4e7ed;--vft-border-color-lighter:#ebeef5;--vft-border-color-extra-light:#f2f6fc;--vft-border-color-dark:#d4d7de;--vft-border-color-darker:#cdd0d6;--vft-fill-color:#f0f2f5;--vft-fill-color-light:#f5f7fa;--vft-fill-color-lighter:#fafafa;--vft-fill-color-extra-light:#fafcff;--vft-fill-color-dark:#ebedf0;--vft-fill-color-darker:#e6e8eb;--vft-fill-color-blank:#fff;--vft-box-shadow:0px 12px 32px 4px rgba(0, 0, 0, 0.04),0px 8px 20px rgba(0, 0, 0, 0.08);--vft-box-shadow-light:0px 0px 12px rgba(0, 0, 0, 0.12);--vft-box-shadow-lighter:0px 0px 6px rgba(0, 0, 0, 0.12);--vft-box-shadow-dark:0px 16px 48px 16px rgba(0, 0, 0, 0.08),0px 12px 32px rgba(0, 0, 0, 0.12),0px 8px 16px -8px rgba(0, 0, 0, 0.16);--vft-disabled-bg-color:var(--vft-fill-color-light);--vft-disabled-text-color:var(--vft-text-color-placeholder);--vft-disabled-border-color:var(--vft-border-color-light);--vft-overlay-color:rgba(0, 0, 0, 0.8);--vft-overlay-color-light:rgba(0, 0, 0, 0.7);--vft-overlay-color-lighter:rgba(0, 0, 0, 0.5);--vft-mask-color:rgba(255, 255, 255, 0.9);--vft-mask-color-extra-light:rgba(255, 255, 255, 0.3);--vft-border-width:1px;--vft-border-style:solid;--vft-border-color-hover:var(--vft-text-disabled-color);--vft-border:var(--vft-border-width) var(--vft-border-style) var(--vft-border-color);--vft-svg-monochrome-grey:var(--vft-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--vft-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.vft-fade-in-linear-enter-active,.vft-fade-in-linear-leave-active{transition:var(--vft-transition-fade-linear)}.vft-fade-in-linear-enter-from,.vft-fade-in-linear-leave-to{opacity:0}.vft-fade-in-enter-active,.vft-fade-in-leave-active{transition:all var(--vft-transition-duration) cubic-bezier(.55,0,.1,1)}.vft-fade-in-enter-from,.vft-fade-in-leave-active{opacity:0}.vft-zoom-in-center-enter-active,.vft-zoom-in-center-leave-active{transition:all var(--vft-transition-duration) cubic-bezier(.55,0,.1,1)}.vft-zoom-in-center-enter-from,.vft-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.vft-zoom-in-top-enter-active,.vft-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--vft-transition-md-fade);transform-origin:center top}.vft-zoom-in-top-enter-active[data-popper-placement^=top],.vft-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.vft-zoom-in-top-enter-from,.vft-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.vft-zoom-in-bottom-enter-active,.vft-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--vft-transition-md-fade);transform-origin:center bottom}.vft-zoom-in-bottom-enter-from,.vft-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.vft-zoom-in-left-enter-active,.vft-zoom-in-left-leave-active{opacity:1;transform:scale(1,1);transition:var(--vft-transition-md-fade);transform-origin:top left}.vft-zoom-in-left-enter-from,.vft-zoom-in-left-leave-active{opacity:0;transform:scale(.45,.45)}.collapse-transition{transition:var(--vft-transition-duration) height ease-in-out,var(--vft-transition-duration) padding-top ease-in-out,var(--vft-transition-duration) padding-bottom ease-in-out}.vft-collapse-transition-enter-active,.vft-collapse-transition-leave-active{transition:var(--vft-transition-duration) max-height ease-in-out,var(--vft-transition-duration) padding-top ease-in-out,var(--vft-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--vft-transition-duration) width ease-in-out,var(--vft-transition-duration) padding-left ease-in-out,var(--vft-transition-duration) padding-right ease-in-out}.vft-list-enter-active,.vft-list-leave-active{transition:all 1s}.vft-list-enter-from,.vft-list-leave-to{opacity:0;transform:translateY(-30px)}.vft-list-leave-active{position:absolute!important}.vft-opacity-transition{transition:opacity var(--vft-transition-duration) cubic-bezier(.55,0,.1,1)}:root{--vft-divider-margin-y:24px;--vft-divider-margin-x:8px;--vft-divider-border-color:#dcdfe6;--vft-divider-border-style:solid}.vft-divider{position:relative}.vft-divider--horizontal{display:block;height:1px;width:100%;margin:var(--vft-divider-margin-y) 0;border-top:1px var(--vft-divider-border-color) var(--vft-divider-border-style)}.vft-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 var(--vft-divider-margin-x);vertical-align:middle;position:relative;border-left:1px var(--vft-divider-border-color) var(--vft-divider-border-style)}.vft-divider__text{position:absolute;background-color:var(--vft-bg-color);padding:0 20px;font-weight:500;color:var(--vft-text-primary-color);font-size:14px}.vft-divider__text.is-left{left:20px;transform:translateY(-50%)}.vft-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.vft-divider__text.is-right{right:20px;transform:translateY(-50%)}:root{--vft-avatar-text-color:var(--vft-color-white);--vft-avatar-bg-color:var(--vft-text-disabled-color);--vft-avatar-text-size:14px;--vft-avatar-icon-size:18px;--vft-avatar-border-radius:var(--vft-border-radius-base)}.vft-avatar{--vft-avatar-size-large:56px;--vft-avatar-size:40px;--vft-avatar-size-small:24px;--vft-avatar-size:40px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--vft-avatar-text-color);background:var(--vft-avatar-bg-color);width:var(--vft-avatar-size);height:var(--vft-avatar-size);font-size:var(--vft-avatar-text-size)}.vft-avatar>img{display:block;height:100%}.vft-avatar--circle{border-radius:50%}.vft-avatar--square{border-radius:var(--vft-avatar-border-radius)}.vft-avatar--icon{font-size:var(--vft-avatar-icon-size)}.vft-avatar--small{--vft-avatar-size:24px}.vft-avatar--large{--vft-avatar-size:56px}.vft-back-top{--vft-backtop-bg-color:var(--vft-bg-color-overlay);--vft-backtop-text-color:var(--vft-primary-color);--vft-backtop-hover-bg-color:var(--vft-border-color-extra-light);position:fixed;background-color:var(--vft-backtop-bg-color);width:40px;height:40px;border-radius:50%;color:var(--vft-backtop-text-color);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:var(--vft-box-shadow-lighter);cursor:pointer;z-index:5}.vft-back-top:hover{background-color:var(--vft-backtop-hover-bg-color)}.vft-back-top__icon{font-size:20px}:root{--vft-empty-img-size:160px;--vft-empty-img-size-small:80px;--vft-empty-img-size-large:240px;--vft-empty-text-color:white;--vft-empty-desc-top:10px;--vft-empty-desc-color:var(--vft-text-placeholder-color);--vft-empty-desc-size:14px}.vft-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;padding:10px 0}.vft-empty__image{width:var(--vft-empty-img-size);height:var(--vft-empty-img-size)}.vft-empty__image img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.vft-empty--large .vft-empty__image{width:var(--vft-empty-img-size-large);height:var(--vft-empty-img-size-large)}.vft-empty--small .vft-empty__image{width:var(--vft-empty-img-size-small);height:var(--vft-empty-img-size-small)}.vft-empty__desc{margin-top:var(--vft-empty-desc-top);color:var(--vft-empty-desc-color);font-size:var(--vft-empty-desc-size)}.vft-empty__bottom{margin-top:5px}:root{--vft-result-padding:40px 30px;--vft-result-icon-font-size:64px;--vft-result-title-font-size:20px;--vft-result-title-margin-top:20px;--vft-result-sub-title-margin-top:10px;--vft-result-extra-margin-top:30px}.vft-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--vft-result-padding)}.vft-result__icon svg{width:var(--vft-result-icon-font-size);height:var(--vft-result-icon-font-size)}.vft-result__icon [class~=vft-icon]{font-size:var(--vft-result-icon-font-size)}.vft-result__title{margin-top:var(--vft-result-title-margin-top)}.vft-result__title p{margin:0;font-size:var(--vft-result-title-font-size);color:var(--vft-text-color-primary);line-height:1.3}.vft-result__sub-title{margin-top:var(--vft-result-sub-title-margin-top)}.vft-result__sub-title p{margin:0;font-size:var(--vft-font-size-base);color:var(--vft-text-color-regular);line-height:1.3}.vft-result__extra{margin-top:var(--vft-result-extra-margin-top)}.vft-result .icon-primary{--vft-result-color:var(--vft-color-primary);color:var(--vft-result-color)}.vft-result .icon-success{--vft-result-color:var(--vft-color-success);color:var(--vft-result-color)}.vft-result .icon-warning{--vft-result-color:var(--vft-color-warning);color:var(--vft-result-color)}.vft-result .icon-danger{--vft-result-color:var(--vft-color-danger);color:var(--vft-result-color)}.vft-result .icon-error{--vft-result-color:var(--vft-color-error);color:var(--vft-result-color)}.vft-result .icon-info{--vft-result-color:var(--vft-color-info);color:var(--vft-result-color)}:root{--vft-tabs-padding:0;--vft-tabs-font-size:14px;--vft-tabs-font-weight:400;--vft-tabs-font-weight-active:500;--vft-tabs-header-height:40px;--vft-tabs-border-bottom:1px solid #eee;--vft-tabs-nav-color:#eee;--vft-tabs-header-margin:0 0 15px;--vft-tabs-header-padding:0;--vft-tabs-header-border-bottom:none;--vft-tabs-item-padding:0 20px;--vft-tabs-item-max-width:100%;--vft-tabs-item-bg-color:white;--vft-tabs-item-bg-color-active:#15b4f1;--vft-tabs-item-bg-color-hover:#15b4f1;--vft-tabs-item-color:black;--vft-tabs-item-color-active:white;--vft-tabs-item-color-hover:white;--vft-tabs-item-border:1px solid #eee;--vft-tabs-item-border-active:0 solid transparent;--vft-tabs-item-border-hover:0 solid transparent;--vft-tabs-item-distance:10px;--vft-tabs-item-border-radius:2px 2px 0 0;--vft-tabs-close-icon-left:5px;--vft-tabs-close-icon-hover-color:white;--vft-tabs-close-icon-hover-bg-color:#a8abb2;--vft-tabs-add-icon-right:30px;--vft-tabs-add-icon-padding-left:20px;--vft-tabs-scroll-padding:0 60px 0 20px;--vft-tabs-active-distance:14px;--vft-tabs-show-border-bottom:block}.vft-tabs{padding:var(--vft-tabs-padding)}.vft-tabs__header{padding:var(--vft-tabs-header-padding);border-bottom:var(--vft-tabs-header-border-bottom);position:relative;margin:var(--vft-tabs-header-margin)}.vft-tabs__item{padding:var(--vft-tabs-item-padding);height:var(--vft-tabs-header-height);box-sizing:border-box;display:inline-flex;justify-content:flex-start;align-items:center;list-style:none;line-height:1;font-size:var(--vft-tabs-font-size);font-weight:var(--vft-tabs-font-weight);color:var(--vft-tabs-item-color);background-color:var(--vft-tabs-item-bg-color);border:var(--vft-tabs-item-border);margin-right:var(--vft-tabs-item-distance)}.vft-tabs__item:focus,.vft-tabs__item:focus:active{outline:0}.vft-tabs__item:focus-visible{box-shadow:0 0 2px 2px var(--vft-primary-color) inset;border-radius:3px}.vft-tabs__item .is-icon-close{transition:all var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier);margin-left:var(--vft-tabs-close-icon-left);display:flex;justify-content:center;align-items:center;height:var(--vft-tabs-active-distance);width:var(--vft-tabs-active-distance);border-radius:50%}.vft-tabs__item .is-icon-close:hover{background-color:var(--vft-tabs-close-icon-hover-bg-color)}.vft-tabs__item .is-icon-close:hover i{color:var(--vft-tabs-close-icon-hover-color)!important}.vft-tabs__item.is-active{color:var(--vft-tabs-item-color-active);background-color:var(--vft-tabs-item-bg-color-active);font-weight:var(--vft-tabs-font-weight-active);border:var(--vft-tabs-item-border-active)}.vft-tabs__item:hover{color:var(--vft-tabs-item-color-hover);background-color:var(--vft-tabs-item-bg-color-hover);border:var(--vft-tabs-item-border-hover);cursor:pointer}.vft-tabs__item.is-disabled{color:var(--vft-disabled-text-color);cursor:not-allowed}.vft-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:var(--vft-primary-color);z-index:1;transition:width var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier),transform var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier);list-style:none}.vft-tabs__new-tab{cursor:pointer;transition:all .15s;position:absolute;right:auto;display:inline-flex;align-items:center;height:100%;padding-left:var(--vft-tabs-add-icon-padding-left)}.vft-tabs__new-tab:hover{color:var(--vft-primary-color)}.vft-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.vft-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:var(--vft-tabs-nav-color);z-index:var(--vft-index-normal);display:var(--vft-tabs-show-border-bottom)}.vft-tabs__nav-wrap.is-scrollable{padding:var(--vft-tabs-scroll-padding);box-sizing:border-box}.vft-tabs__nav-wrap.is-scrollable .vft-tabs__new-tab{right:var(--vft-tabs-add-icon-right)}.vft-tabs__nav-scroll{overflow:hidden}.vft-tabs__nav-next,.vft-tabs__nav-prev{position:absolute;cursor:pointer;display:inline-flex;align-items:center;height:100%}.vft-tabs__nav-next{right:0}.vft-tabs__nav-prev{left:0}.vft-tabs__nav{display:flex;white-space:nowrap;position:relative;transition:transform var(--vft-transition-duration);float:left;z-index:calc(var(--vft-index-normal) + 1)}.vft-tabs__nav.is-stretch{min-width:100%;display:flex}.vft-tabs__nav.is-stretch>*{flex:1;text-align:center}.vft-tabs__content{overflow:hidden;position:relative}.vft-tabs--card>.vft-tabs__header{border-bottom:var(--vft-tabs-border-bottom);height:var(--vft-tabs-header-height)}.vft-tabs--card>.vft-tabs__header .vft-tabs__nav-wrap::after{content:none}.vft-tabs--card>.vft-tabs__header .vft-tabs__nav{border-radius:4px 4px 0 0;box-sizing:border-box}.vft-tabs--card>.vft-tabs__header .vft-tabs__active-bar{display:none}.vft-tabs--card>.vft-tabs__header .vft-tabs__item .is-icon-close{width:0}.vft-tabs--card>.vft-tabs__header .vft-tabs__item{border-radius:var(--vft-tabs-item-border-radius);transition:var(--vft-transition-function-ease-in-out-bezier),padding var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier);max-width:var(--vft-tabs-item-max-width)}.vft-tabs--card>.vft-tabs__header .vft-tabs__item.is-closable:hover .is-icon-close{width:var(--vft-tabs-active-distance)}.vft-tabs--card>.vft-tabs__header .vft-tabs__item.is-active.is-closable .is-icon-close{width:var(--vft-tabs-active-distance)}.vft-tabs--bottom .vft-tabs__item.is-bottom:last-child,.vft-tabs--bottom .vft-tabs__item.is-top:last-child,.vft-tabs--top .vft-tabs__item.is-bottom:last-child,.vft-tabs--top .vft-tabs__item.is-top:last-child{margin-right:0}.vft-tabs--bottom .vft-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.vft-tabs--bottom.vft-tabs--border-card .vft-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--vft-border-color)}.vft-tabs--bottom.vft-tabs--border-card .vft-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.vft-tabs--bottom.vft-tabs--border-card .vft-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.vft-tabs--bottom.vft-tabs--border-card .vft-tabs__item.is-bottom{margin:0 -1px -1px}.vft-tabs--left,.vft-tabs--right{overflow:hidden}.vft-tabs--left .vft-tabs__header.is-left,.vft-tabs--left .vft-tabs__header.is-right,.vft-tabs--left .vft-tabs__nav-scroll,.vft-tabs--left .vft-tabs__nav-wrap.is-left,.vft-tabs--left .vft-tabs__nav-wrap.is-right,.vft-tabs--right .vft-tabs__header.is-left,.vft-tabs--right .vft-tabs__header.is-right,.vft-tabs--right .vft-tabs__nav-scroll,.vft-tabs--right .vft-tabs__nav-wrap.is-left,.vft-tabs--right .vft-tabs__nav-wrap.is-right{height:100%}.vft-tabs--left .vft-tabs__active-bar.is-left,.vft-tabs--left .vft-tabs__active-bar.is-right,.vft-tabs--right .vft-tabs__active-bar.is-left,.vft-tabs--right .vft-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.vft-tabs--left .vft-tabs__nav-wrap.is-left,.vft-tabs--left .vft-tabs__nav-wrap.is-right,.vft-tabs--right .vft-tabs__nav-wrap.is-left,.vft-tabs--right .vft-tabs__nav-wrap.is-right{margin-bottom:0}.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next,.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next i,.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev i,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next i,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev i,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next i,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev i,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next i,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev i{transform:rotateZ(90deg)}.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev{left:auto;top:0}.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next{right:auto;bottom:0}.vft-tabs--left .vft-tabs__nav-wrap.is-left.is-scrollable,.vft-tabs--left .vft-tabs__nav-wrap.is-right.is-scrollable,.vft-tabs--right .vft-tabs__nav-wrap.is-left.is-scrollable,.vft-tabs--right .vft-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.vft-tabs--left .vft-tabs__nav-wrap.is-left::after,.vft-tabs--left .vft-tabs__nav-wrap.is-right::after,.vft-tabs--right .vft-tabs__nav-wrap.is-left::after,.vft-tabs--right .vft-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.vft-tabs--left .vft-tabs__nav.is-left,.vft-tabs--left .vft-tabs__nav.is-right,.vft-tabs--right .vft-tabs__nav.is-left,.vft-tabs--right .vft-tabs__nav.is-right{float:none}.vft-tabs--left .vft-tabs__item.is-left,.vft-tabs--left .vft-tabs__item.is-right,.vft-tabs--right .vft-tabs__item.is-left,.vft-tabs--right .vft-tabs__item.is-right{display:block}.vft-tabs--left .vft-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.vft-tabs--left .vft-tabs__nav-wrap.is-left{margin-right:-1px}.vft-tabs--left .vft-tabs__nav-wrap.is-left::after{left:auto;right:0}.vft-tabs--left .vft-tabs__active-bar.is-left{right:0;left:auto}.vft-tabs--left .vft-tabs__item.is-left{text-align:right}.vft-tabs--left.vft-tabs--card .vft-tabs__active-bar.is-left{display:none}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left{border-left:none;border-right:1px solid var(--vft-border-color-light);border-bottom:none;border-top:1px solid var(--vft-border-color-light);text-align:left}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left:first-child{border-right:1px solid var(--vft-border-color-light);border-top:none}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left.is-active{border:1px solid var(--vft-border-color-light);border-right-color:#fff;border-left:none;border-bottom:none}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left.is-active:first-child{border-top:none}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left.is-active:last-child{border-bottom:none}.vft-tabs--left.vft-tabs--card .vft-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid var(--vft-border-color-light);border-right:none}.vft-tabs--left.vft-tabs--card .vft-tabs__new-tab{float:none}.vft-tabs--left.vft-tabs--border-card .vft-tabs__header.is-left{border-right:1px solid var(--vft-border-color)}.vft-tabs--left.vft-tabs--border-card .vft-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.vft-tabs--left.vft-tabs--border-card .vft-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.vft-tabs--right .vft-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.vft-tabs--right .vft-tabs__nav-wrap.is-right{margin-left:-1px}.vft-tabs--right .vft-tabs__nav-wrap.is-right::after{left:0;right:auto}.vft-tabs--right .vft-tabs__active-bar.is-right{left:0}.vft-tabs--right.vft-tabs--card .vft-tabs__active-bar.is-right{display:none}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--vft-border-color-light)}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right:first-child{border-left:1px solid var(--vft-border-color-light);border-top:none}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right.is-active{border:1px solid var(--vft-border-color-light);border-left-color:#fff;border-right:none;border-bottom:none}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right.is-active:first-child{border-top:none}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right.is-active:last-child{border-bottom:none}.vft-tabs--right.vft-tabs--card .vft-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid var(--vft-border-color-light);border-left:none}.vft-tabs--right.vft-tabs--border-card .vft-tabs__header.is-right{border-left:1px solid var(--vft-border-color)}.vft-tabs--right.vft-tabs--border-card .vft-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.vft-tabs--right.vft-tabs--border-card .vft-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--vft-transition-duration)}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave var(--vft-transition-duration)}.slideInLeft-enter{animation:slideInLeft-enter var(--vft-transition-duration)}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave var(--vft-transition-duration)}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(-100%);opacity:0}}:root{--vft-menu-bg-color:var(--vft-theme-color);--vft-menu-sub-menu-bg-color:var(--vft-theme-color);--vft-menu-active-color:var(--vft-primary-color);--vft-menu-text-color:var(--vft-text-primary-color);--vft-menu-hover-text-color:var(--vft-primary-color);--vft-menu-hover-bg-color:var(--vft-primary-color-light-9);--vft-menu-focus-text-color:var(--vft-primary-color);--vft-menu-focus-bg-color:var(--vft-primary-color-light-9);--vft-menu-item-height:56px;--vft-menu-sub-item-height:calc(var(--vft-menu-item-height) - 6px);--vft-menu-horizontal-sub-item-height:36px;--vft-menu-item-font-size:var(--vft-font-size-base);--vft-menu-item-hover-fill:var(--vft-primary-color-light-9);--vft-menu-border-color:#dcdfe6;--vft-menu-border-bottom:var(--vft-border);--vft-menu-base-level-padding:20px;--vft-menu-level-padding:20px;--vft-menu-icon-mr:8px;--vft-menu-border:0 solid transparent;--vft-menu-border-right:1px solid #dcdfe6;--vft-menu-item-min-width:200px;--vft-menu-popup-border-radius:var(--vft-border-radius)}.vft-menu{border-right:solid 1px var(--vft-menu-border-color);list-style:none;position:relative;margin:0;padding-left:0;background-color:var(--vft-menu-bg-color);box-sizing:border-box}.vft-menu--vertical:not(.vft-menu--collapse):not(.vft-menu--popup-container) .vft-menu-item,.vft-menu--vertical:not(.vft-menu--collapse):not(.vft-menu--popup-container) .vft-menu-item-group__title,.vft-menu--vertical:not(.vft-menu--collapse):not(.vft-menu--popup-container) .vft-sub-menu__title{padding-left:calc(var(--vft-menu-base-level-padding) + var(--vft-menu-level) * var(--vft-menu-level-padding))}.vft-menu--vertical .vft-menu-item{white-space:initial}.vft-menu--horizontal{display:flex;flex-wrap:nowrap;border-bottom:var(--vft-menu-border-bottom);border-right:none}.vft-menu--horizontal>.vft-menu-item{display:inline-flex;justify-content:center;align-items:center;height:100%;margin:0;border-bottom:2px solid transparent;color:var(--vft-menu-text-color)}.vft-menu--horizontal>.vft-menu-item a,.vft-menu--horizontal>.vft-menu-item a:hover{color:inherit}.vft-menu--horizontal>.vft-menu-item:not(.is-disabled):focus,.vft-menu--horizontal>.vft-menu-item:not(.is-disabled):hover{background-color:#fff}.vft-menu--horizontal>.vft-sub-menu:focus,.vft-menu--horizontal>.vft-sub-menu:hover{outline:0}.vft-menu--horizontal>.vft-sub-menu:hover .vft-sub-menu__title{color:var(--vft-menu-hover-text-color)}.vft-menu--horizontal>.vft-sub-menu.is-active .vft-sub-menu__title{border-bottom:2px solid var(--vft-menu-active-color);color:var(--vft-menu-active-color)}.vft-menu--horizontal>.vft-sub-menu.is-active .vft-sub-menu__title:hover{color:var(--vft-menu-hover-text-color)}.vft-menu--horizontal>.vft-sub-menu .vft-sub-menu__title{height:100%;line-height:100%;border-bottom:2px solid transparent;color:var(--vft-menu-text-color)}.vft-menu--horizontal>.vft-sub-menu .vft-sub-menu__title:hover{background-color:var(--vft-menu-hover-bg-color)}.vft-menu--horizontal .vft-menu .vft-menu-item,.vft-menu--horizontal .vft-menu .vft-sub-menu__title{background-color:var(--vft-menu-bg-color);display:flex;align-items:center;height:var(--vft-menu-horizontal-sub-item-height);padding:0 10px;color:var(--vft-menu-text-color)}.vft-menu--horizontal .vft-menu .vft-sub-menu__title{padding-right:40px}.vft-menu--horizontal .vft-menu .vft-menu-item.is-active,.vft-menu--horizontal .vft-menu .vft-sub-menu.is-active>.vft-sub-menu__title{color:var(--vft-menu-active-color)}.vft-menu--horizontal .vft-menu-item:not(.is-disabled):hover{outline:0;color:var(--vft-menu-hover-text-color);background-color:var(--vft-menu-hover-bg-color)}.vft-menu--horizontal .vft-menu-item:not(.is-disabled):focus{outline:0;color:var(--vft-menu-focus-text-color);background-color:var(--vft-menu-focus-bg-color)}.vft-menu--horizontal>.vft-menu-item.is-active{border-bottom:2px solid var(--vft-menu-active-color);color:var(--vft-menu-active-color)}.vft-menu--collapse{width:calc(var(--vft-menu-icon-width) + var(--vft-menu-base-level-padding) * 2)}.vft-menu--collapse>.vft-menu-item [class^=vft-icon],.vft-menu--collapse>.vft-menu-item-group>ul>.vft-sub-menu>.vft-sub-menu__title [class^=vft-icon],.vft-menu--collapse>.vft-sub-menu>.vft-sub-menu__title [class^=vft-icon]{margin:0;vertical-align:middle;width:var(--vft-menu-icon-width);text-align:center}.vft-menu--collapse>.vft-menu-item .vft-sub-menu__icon-arrow,.vft-menu--collapse>.vft-menu-item-group>ul>.vft-sub-menu>.vft-sub-menu__title .vft-sub-menu__icon-arrow,.vft-menu--collapse>.vft-sub-menu>.vft-sub-menu__title .vft-sub-menu__icon-arrow{display:none}.vft-menu--collapse>.vft-menu-item-group>ul>.vft-sub-menu>.vft-sub-menu__title>span,.vft-menu--collapse>.vft-menu-item>span,.vft-menu--collapse>.vft-sub-menu>.vft-sub-menu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.vft-menu--collapse>.vft-menu-item.is-active i{color:inherit}.vft-menu--collapse .vft-menu .vft-sub-menu{min-width:200px}.vft-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;box-shadow:var(--vft-box-shadow-light);border-radius:var(--vft-menu-popup-border-radius)}.vft-menu .vft-icon{flex-shrink:0}.vft-menu-item{display:flex;align-items:center;height:var(--vft-menu-item-height);line-height:var(--vft-menu-item-height);font-size:var(--vft-menu-item-font-size);color:var(--vft-menu-text-color);padding:0 var(--vft-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--vft-transition-duration),background-color var(--vft-transition-duration),color var(--vft-transition-duration);box-sizing:border-box;white-space:nowrap}.vft-menu-item *{vertical-align:bottom}.vft-menu-item i{margin-right:var(--vft-menu-icon-mr)}.vft-menu-item:focus,.vft-menu-item:hover{outline:0}.vft-menu-item:hover{background-color:var(--vft-menu-hover-bg-color)}.vft-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.vft-menu-item span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;word-break:break-all}.vft-menu-item [class^=vft-icon]{margin-right:5px;width:var(--vft-menu-icon-width);text-align:center;font-size:18px;vertical-align:middle}.vft-menu-item.is-active{color:var(--vft-menu-active-color)}.vft-menu-item.is-active i{color:inherit}.vft-menu-item .vft-menu-tooltip__trigger{position:absolute;left:0;top:0;height:100%;width:100%;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 var(--vft-menu-base-level-padding)}.vft-sub-menu{list-style:none;margin:0;padding-left:0;background:var(--vft-menu-sub-menu-bg-color)}.vft-sub-menu__title{display:flex;align-items:center;height:var(--vft-menu-item-height);line-height:var(--vft-menu-item-height);font-size:var(--vft-menu-item-font-size);color:var(--vft-menu-text-color);padding:0 var(--vft-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--vft-transition-duration),background-color var(--vft-transition-duration),color var(--vft-transition-duration);box-sizing:border-box;white-space:nowrap}.vft-sub-menu__title *{vertical-align:bottom}.vft-sub-menu__title i{margin-right:var(--vft-menu-icon-mr)}.vft-sub-menu__title:focus,.vft-sub-menu__title:hover{outline:0}.vft-sub-menu__title:hover{background-color:var(--vft-menu-hover-bg-color)}.vft-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.vft-sub-menu__title span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;word-break:break-all}.vft-sub-menu__title:hover{background-color:var(--vft-menu-hover-bg-color)}.vft-sub-menu__text{padding-right:30px}.vft-sub-menu .vft-menu{border:none}.vft-sub-menu .vft-menu-item{height:var(--vft-menu-sub-item-height);line-height:var(--vft-menu-sub-item-height);min-width:var(--vft-menu-item-min-width)}.vft-sub-menu__hide-arrow .vft-sub-menu__icon-arrow{display:none!important}.vft-sub-menu.is-active .vft-sub-menu__title{border-bottom-color:var(--vft-menu-active-color)}.vft-sub-menu.is-disabled .vft-menu-item,.vft-sub-menu.is-disabled .vft-sub-menu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.vft-sub-menu .vft-icon{vertical-align:middle;margin-right:var(--vft-menu-icon-mr);text-align:center}.vft-sub-menu .vft-icon.vft-sub-menu__icon-more{margin-right:0!important}.vft-sub-menu .vft-sub-menu__icon-arrow{position:absolute;right:var(--vft-menu-base-level-padding);transition:transform var(--vft-transition-duration);color:inherit}.vft-menu-item-group>ul{padding:0}.vft-menu-item-group__title{padding:7px 0 7px var(--vft-menu-base-level-padding);line-height:normal;font-size:12px;color:var(--vft-text-color-secondary)}.horizontal-collapse-transition .vft-sub-menu__title .vft-sub-menu__icon-arrow{transition:var(--vft-transition-duration-fast);opacity:0}.vft-popper{--vft-popper-border-radius:var(--vft-popover-border-radius, 4px)}.vft-popper{position:absolute;border-radius:var(--vft-popper-border-radius);padding:5px 11px;z-index:2000;font-size:12px;line-height:20px;min-width:10px;word-wrap:break-word;visibility:visible}.vft-popper.is-dark{color:var(--vft-bg-color);background:var(--vft-text-primary-color);border:1px solid var(--vft-text-primary-color)}.vft-popper.is-dark .vft-popper__arrow::before{border:1px solid var(--vft-text-primary-color);background:var(--vft-text-primary-color);right:0}.vft-popper.is-light{background:var(--vft-bg-color-overlay);border:1px solid var(--vft-border-color-light)}.vft-popper.is-light .vft-popper__arrow::before{border:1px solid var(--vft-border-color-light);background:var(--vft-bg-color-overlay);right:0}.vft-popper.is-pure{padding:0}.vft-popper__arrow{position:absolute;width:10px;height:10px;z-index:-1}.vft-popper__arrow::before{position:absolute;width:10px;height:10px;z-index:-1;content:" ";transform:rotate(45deg);background:var(--vft-text-primary-color);box-sizing:border-box}.vft-popper[data-popper-placement^=top]>.vft-popper__arrow{bottom:-5px}.vft-popper[data-popper-placement^=top]>.vft-popper__arrow::before{border-bottom-right-radius:2px}.vft-popper[data-popper-placement^=bottom]>.vft-popper__arrow{top:-5px}.vft-popper[data-popper-placement^=bottom]>.vft-popper__arrow::before{border-top-left-radius:2px}.vft-popper[data-popper-placement^=left]>.vft-popper__arrow{right:-5px}.vft-popper[data-popper-placement^=left]>.vft-popper__arrow::before{border-top-right-radius:2px}.vft-popper[data-popper-placement^=right]>.vft-popper__arrow{left:-5px}.vft-popper[data-popper-placement^=right]>.vft-popper__arrow::before{border-bottom-left-radius:2px}.vft-popper[data-popper-placement^=top] .vft-popper__arrow::before{border-top-color:transparent!important;border-left-color:transparent!important}.vft-popper[data-popper-placement^=bottom] .vft-popper__arrow::before{border-bottom-color:transparent!important;border-right-color:transparent!important}.vft-popper[data-popper-placement^=left] .vft-popper__arrow::before{border-left-color:transparent!important;border-bottom-color:transparent!important}.vft-popper[data-popper-placement^=right] .vft-popper__arrow::before{border-right-color:transparent!important;border-top-color:transparent!important}.vft-popover{--vft-popover-bg-color:var(--vft-bg-color-overlay);--vft-popover-font-size:var(--vft-font-size-base);--vft-popover-border-color:var(--vft-border-color-lighter);--vft-popover-padding:12px;--vft-popover-padding-large:18px 20px;--vft-popover-title-font-size:16px;--vft-popover-title-text-color:var(--vft-text-primary-color);--vft-popover-border-radius:4px}.vft-popover.vft-popper{background:var(--vft-popover-bg-color);min-width:150px;border-radius:var(--vft-popover-border-radius);border:1px solid var(--vft-popover-border-color);padding:var(--vft-popover-padding);z-index:var(--vft-index-popper);color:var(--vft-text-color-regular);line-height:1.4;text-align:justify;font-size:var(--vft-popover-font-size);box-shadow:var(--vft-box-shadow-light);word-break:break-all;box-sizing:border-box}.vft-popover.vft-popper--plain{padding:var(--vft-popover-padding-large)}.vft-popover__title{color:var(--vft-popover-title-text-color);font-size:var(--vft-popover-title-font-size);line-height:1;margin-bottom:12px}.vft-popover__reference:focus:hover,.vft-popover__reference:focus:not(.focusing){outline-width:0}.vft-popover.vft-popper.is-dark{--vft-popover-bg-color:var(--vft-text-color-primary);--vft-popover-border-color:var(--vft-text-color-primary);--vft-popover-title-text-color:var(--vft-bg-color);color:var(--vft-bg-color)}.vft-popover.vft-popper:focus,.vft-popover.vft-popper:focus:active{outline-width:0}
|
|
1
|
+
@charset "UTF-8";:root{--vft-color-white:#fff;--vft-color-black:#000;--vft-theme-color:#fff;--vft-theme-color-reverse:#000;--vft-font-size-extra-large:20px;--vft-font-size-large:18px;--vft-font-size-medium:16px;--vft-font-size-base:14px;--vft-font-size-small:13px;--vft-font-size-extra-small:12px;--vft-font-family:'Helvetica Neue',Helvetica,'PingFang SC','Hiragino Sans GB','Microsoft YaHei','微软雅黑',Arial,sans-serif;--vft-font-weight-primary:500;--vft-font-line-height-primary:24px;--vft-index-normal:1;--vft-index-top:1000;--vft-index-popper:2000;--vft-border-radius-base:4px;--vft-border-radius-small:2px;--vft-border-radius-round:20px;--vft-border-radius-circle:100%;--vft-transition-duration:0.3s;--vft-transition-duration-fast:0.2s;--vft-transition-function-ease-in-out-bezier:cubic-bezier(0.645, 0.045, 0.355, 1);--vft-transition-function-fast-bezier:cubic-bezier(0.23, 1, 0.32, 1);--vft-transition-all:all var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier);--vft-transition-fade:opacity var(--vft-transition-duration) var(--vft-transition-function-fast-bezier);--vft-transition-md-fade:transform var(--vft-transition-duration) var(--vft-transition-function-fast-bezier),opacity var(--vft-transition-duration) var(--vft-transition-function-fast-bezier);--vft-transition-fade-linear:opacity var(--vft-transition-duration-fast) linear;--vft-transition-border:border-color var(--vft-transition-duration-fast) var(--vft-transition-function-ease-in-out-bezier);--vft-transition-box-shadow:box-shadow var(--vft-transition-duration-fast) var(--vft-transition-function-ease-in-out-bezier);--vft-transition-color:color var(--vft-transition-duration-fast) var(--vft-transition-function-ease-in-out-bezier)}:root{color-scheme:light;--vft-primary-color:#2196f3;--vft-primary-color-light-3:#64b6f7;--vft-primary-color-light-5:#90cbf9;--vft-primary-color-light-7:#bce0fb;--vft-primary-color-light-8:#d3eafd;--vft-primary-color-light-9:#e9f5fe;--vft-primary-color-dark-2:#1a78c2;--vft-success-color:#3eaf7c;--vft-success-color-light-3:#78c7a3;--vft-success-color-light-5:#9fd7be;--vft-success-color-light-7:#c5e7d8;--vft-success-color-light-8:#d8efe5;--vft-success-color-light-9:#ecf7f2;--vft-success-color-dark-2:#328c63;--vft-warning-color:#fb9b5f;--vft-warning-color-light-3:#fcb98f;--vft-warning-color-light-5:#fdcdaf;--vft-warning-color-light-7:#fee1cf;--vft-warning-color-light-8:#feebdf;--vft-warning-color-light-9:#fff5ef;--vft-warning-color-dark-2:#c97c4c;--vft-danger-color:#f26d6d;--vft-danger-color-light-3:#f69999;--vft-danger-color-light-5:#f9b6b6;--vft-danger-color-light-7:#fbd3d3;--vft-danger-color-light-8:#fce2e2;--vft-danger-color-light-9:#fef0f0;--vft-danger-color-dark-2:#c25757;--vft-error-color:#f26d6d;--vft-error-color-light-3:#f69999;--vft-error-color-light-5:#f9b6b6;--vft-error-color-light-7:#fbd3d3;--vft-error-color-light-8:#fce2e2;--vft-error-color-light-9:#fef0f0;--vft-error-color-dark-2:#c25757;--vft-info-color:#909399;--vft-info-color-light-3:#b1b3b8;--vft-info-color-light-5:#c8c9cc;--vft-info-color-light-7:#dedfe0;--vft-info-color-light-8:#e9e9eb;--vft-info-color-light-9:#f4f4f5;--vft-info-color-dark-2:#73767a;--vft-bg-color:#fff;--vft-bg-color-page:#f2f3f5;--vft-bg-color-overlay:#fff;--vft-text-primary-color:#303133;--vft-text-regular-color:#606266;--vft-text-secondary-color:#909399;--vft-text-placeholder-color:#a8abb2;--vft-text-disabled-color:#c0c4cc;--vft-border-color:#dcdfe6;--vft-border-color-light:#e4e7ed;--vft-border-color-lighter:#ebeef5;--vft-border-color-extra-light:#f2f6fc;--vft-border-color-dark:#d4d7de;--vft-border-color-darker:#cdd0d6;--vft-fill-color:#f0f2f5;--vft-fill-color-light:#f5f7fa;--vft-fill-color-lighter:#fafafa;--vft-fill-color-extra-light:#fafcff;--vft-fill-color-dark:#ebedf0;--vft-fill-color-darker:#e6e8eb;--vft-fill-color-blank:#fff;--vft-box-shadow:0px 12px 32px 4px rgba(0, 0, 0, 0.04),0px 8px 20px rgba(0, 0, 0, 0.08);--vft-box-shadow-light:0px 0px 12px rgba(0, 0, 0, 0.12);--vft-box-shadow-lighter:0px 0px 6px rgba(0, 0, 0, 0.12);--vft-box-shadow-dark:0px 16px 48px 16px rgba(0, 0, 0, 0.08),0px 12px 32px rgba(0, 0, 0, 0.12),0px 8px 16px -8px rgba(0, 0, 0, 0.16);--vft-disabled-bg-color:var(--vft-fill-color-light);--vft-disabled-text-color:var(--vft-text-color-placeholder);--vft-disabled-border-color:var(--vft-border-color-light);--vft-overlay-color:rgba(0, 0, 0, 0.8);--vft-overlay-color-light:rgba(0, 0, 0, 0.7);--vft-overlay-color-lighter:rgba(0, 0, 0, 0.5);--vft-mask-color:rgba(255, 255, 255, 0.9);--vft-mask-color-extra-light:rgba(255, 255, 255, 0.3);--vft-border-width:1px;--vft-border-style:solid;--vft-border-color-hover:var(--vft-text-disabled-color);--vft-border:var(--vft-border-width) var(--vft-border-style) var(--vft-border-color);--vft-svg-monochrome-grey:var(--vft-border-color)}.fade-in-linear-enter-active,.fade-in-linear-leave-active{transition:var(--vft-transition-fade-linear)}.fade-in-linear-enter-from,.fade-in-linear-leave-to{opacity:0}.vft-fade-in-linear-enter-active,.vft-fade-in-linear-leave-active{transition:var(--vft-transition-fade-linear)}.vft-fade-in-linear-enter-from,.vft-fade-in-linear-leave-to{opacity:0}.vft-fade-in-enter-active,.vft-fade-in-leave-active{transition:all var(--vft-transition-duration) cubic-bezier(.55,0,.1,1)}.vft-fade-in-enter-from,.vft-fade-in-leave-active{opacity:0}.vft-zoom-in-center-enter-active,.vft-zoom-in-center-leave-active{transition:all var(--vft-transition-duration) cubic-bezier(.55,0,.1,1)}.vft-zoom-in-center-enter-from,.vft-zoom-in-center-leave-active{opacity:0;transform:scaleX(0)}.vft-zoom-in-top-enter-active,.vft-zoom-in-top-leave-active{opacity:1;transform:scaleY(1);transition:var(--vft-transition-md-fade);transform-origin:center top}.vft-zoom-in-top-enter-active[data-popper-placement^=top],.vft-zoom-in-top-leave-active[data-popper-placement^=top]{transform-origin:center bottom}.vft-zoom-in-top-enter-from,.vft-zoom-in-top-leave-active{opacity:0;transform:scaleY(0)}.vft-zoom-in-bottom-enter-active,.vft-zoom-in-bottom-leave-active{opacity:1;transform:scaleY(1);transition:var(--vft-transition-md-fade);transform-origin:center bottom}.vft-zoom-in-bottom-enter-from,.vft-zoom-in-bottom-leave-active{opacity:0;transform:scaleY(0)}.vft-zoom-in-left-enter-active,.vft-zoom-in-left-leave-active{opacity:1;transform:scale(1,1);transition:var(--vft-transition-md-fade);transform-origin:top left}.vft-zoom-in-left-enter-from,.vft-zoom-in-left-leave-active{opacity:0;transform:scale(.45,.45)}.collapse-transition{transition:var(--vft-transition-duration) height ease-in-out,var(--vft-transition-duration) padding-top ease-in-out,var(--vft-transition-duration) padding-bottom ease-in-out}.vft-collapse-transition-enter-active,.vft-collapse-transition-leave-active{transition:var(--vft-transition-duration) max-height ease-in-out,var(--vft-transition-duration) padding-top ease-in-out,var(--vft-transition-duration) padding-bottom ease-in-out}.horizontal-collapse-transition{transition:var(--vft-transition-duration) width ease-in-out,var(--vft-transition-duration) padding-left ease-in-out,var(--vft-transition-duration) padding-right ease-in-out}.vft-list-enter-active,.vft-list-leave-active{transition:all 1s}.vft-list-enter-from,.vft-list-leave-to{opacity:0;transform:translateY(-30px)}.vft-list-leave-active{position:absolute!important}.vft-opacity-transition{transition:opacity var(--vft-transition-duration) cubic-bezier(.55,0,.1,1)}:root{--vft-divider-margin-y:24px;--vft-divider-margin-x:8px;--vft-divider-border-color:#dcdfe6;--vft-divider-border-style:solid}.vft-divider{position:relative}.vft-divider--horizontal{display:block;height:1px;width:100%;margin:var(--vft-divider-margin-y) 0;border-top:1px var(--vft-divider-border-color) var(--vft-divider-border-style)}.vft-divider--vertical{display:inline-block;width:1px;height:1em;margin:0 var(--vft-divider-margin-x);vertical-align:middle;position:relative;border-left:1px var(--vft-divider-border-color) var(--vft-divider-border-style)}.vft-divider__text{position:absolute;background-color:var(--vft-bg-color);padding:0 20px;font-weight:500;color:var(--vft-text-primary-color);font-size:14px}.vft-divider__text.is-left{left:20px;transform:translateY(-50%)}.vft-divider__text.is-center{left:50%;transform:translateX(-50%) translateY(-50%)}.vft-divider__text.is-right{right:20px;transform:translateY(-50%)}:root{--vft-avatar-text-color:var(--vft-color-white);--vft-avatar-bg-color:var(--vft-text-disabled-color);--vft-avatar-text-size:14px;--vft-avatar-icon-size:18px;--vft-avatar-border-radius:var(--vft-border-radius-base)}.vft-avatar{--vft-avatar-size-large:56px;--vft-avatar-size:40px;--vft-avatar-size-small:24px;--vft-avatar-size:40px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--vft-avatar-text-color);background:var(--vft-avatar-bg-color);width:var(--vft-avatar-size);height:var(--vft-avatar-size);font-size:var(--vft-avatar-text-size)}.vft-avatar>img{display:block;height:100%}.vft-avatar--circle{border-radius:50%}.vft-avatar--square{border-radius:var(--vft-avatar-border-radius)}.vft-avatar--icon{font-size:var(--vft-avatar-icon-size)}.vft-avatar--small{--vft-avatar-size:24px}.vft-avatar--large{--vft-avatar-size:56px}.vft-back-top{--vft-backtop-bg-color:var(--vft-bg-color-overlay);--vft-backtop-text-color:var(--vft-primary-color);--vft-backtop-hover-bg-color:var(--vft-border-color-extra-light);position:fixed;background-color:var(--vft-backtop-bg-color);width:40px;height:40px;border-radius:50%;color:var(--vft-backtop-text-color);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:var(--vft-box-shadow-lighter);cursor:pointer;z-index:5}.vft-back-top:hover{background-color:var(--vft-backtop-hover-bg-color)}.vft-back-top__icon{font-size:20px}:root{--vft-empty-img-size:160px;--vft-empty-img-size-small:80px;--vft-empty-img-size-large:240px;--vft-empty-text-color:white;--vft-empty-desc-top:10px;--vft-empty-desc-color:var(--vft-text-placeholder-color);--vft-empty-desc-size:14px}.vft-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;padding:10px 0}.vft-empty__image{width:var(--vft-empty-img-size);height:var(--vft-empty-img-size)}.vft-empty__image img{width:100%;height:100%;-o-object-fit:contain;object-fit:contain}.vft-empty--large .vft-empty__image{width:var(--vft-empty-img-size-large);height:var(--vft-empty-img-size-large)}.vft-empty--small .vft-empty__image{width:var(--vft-empty-img-size-small);height:var(--vft-empty-img-size-small)}.vft-empty__desc{margin-top:var(--vft-empty-desc-top);color:var(--vft-empty-desc-color);font-size:var(--vft-empty-desc-size)}.vft-empty__bottom{margin-top:5px}:root{--vft-result-padding:40px 30px;--vft-result-icon-font-size:64px;--vft-result-title-font-size:20px;--vft-result-title-margin-top:20px;--vft-result-sub-title-margin-top:10px;--vft-result-extra-margin-top:30px}.vft-result{display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;box-sizing:border-box;padding:var(--vft-result-padding)}.vft-result__icon svg{width:var(--vft-result-icon-font-size);height:var(--vft-result-icon-font-size)}.vft-result__icon [class~=vft-icon]{font-size:var(--vft-result-icon-font-size)}.vft-result__title{margin-top:var(--vft-result-title-margin-top)}.vft-result__title p{margin:0;font-size:var(--vft-result-title-font-size);color:var(--vft-text-color-primary);line-height:1.3}.vft-result__sub-title{margin-top:var(--vft-result-sub-title-margin-top)}.vft-result__sub-title p{margin:0;font-size:var(--vft-font-size-base);color:var(--vft-text-color-regular);line-height:1.3}.vft-result__extra{margin-top:var(--vft-result-extra-margin-top)}.vft-result .icon-primary{--vft-result-color:var(--vft-color-primary);color:var(--vft-result-color)}.vft-result .icon-success{--vft-result-color:var(--vft-color-success);color:var(--vft-result-color)}.vft-result .icon-warning{--vft-result-color:var(--vft-color-warning);color:var(--vft-result-color)}.vft-result .icon-danger{--vft-result-color:var(--vft-color-danger);color:var(--vft-result-color)}.vft-result .icon-error{--vft-result-color:var(--vft-color-error);color:var(--vft-result-color)}.vft-result .icon-info{--vft-result-color:var(--vft-color-info);color:var(--vft-result-color)}:root{--vft-tabs-padding:0;--vft-tabs-font-size:14px;--vft-tabs-font-weight:400;--vft-tabs-font-weight-active:500;--vft-tabs-header-height:40px;--vft-tabs-border-bottom:1px solid #eee;--vft-tabs-nav-color:#eee;--vft-tabs-header-margin:0 0 15px;--vft-tabs-header-padding:0;--vft-tabs-header-border-bottom:none;--vft-tabs-item-padding:0 20px;--vft-tabs-item-max-width:100%;--vft-tabs-item-bg-color:white;--vft-tabs-item-bg-color-active:#15b4f1;--vft-tabs-item-bg-color-hover:#15b4f1;--vft-tabs-item-color:black;--vft-tabs-item-color-active:white;--vft-tabs-item-color-hover:white;--vft-tabs-item-border:1px solid #eee;--vft-tabs-item-border-active:0 solid transparent;--vft-tabs-item-border-hover:0 solid transparent;--vft-tabs-item-distance:10px;--vft-tabs-item-border-radius:2px 2px 0 0;--vft-tabs-close-icon-left:5px;--vft-tabs-close-icon-hover-color:white;--vft-tabs-close-icon-hover-bg-color:#a8abb2;--vft-tabs-add-icon-right:30px;--vft-tabs-add-icon-padding-left:20px;--vft-tabs-scroll-padding:0 60px 0 20px;--vft-tabs-active-distance:14px;--vft-tabs-show-border-bottom:block}.vft-tabs{padding:var(--vft-tabs-padding)}.vft-tabs__header{padding:var(--vft-tabs-header-padding);border-bottom:var(--vft-tabs-header-border-bottom);position:relative;margin:var(--vft-tabs-header-margin)}.vft-tabs__item{padding:var(--vft-tabs-item-padding);height:var(--vft-tabs-header-height);box-sizing:border-box;display:inline-flex;justify-content:flex-start;align-items:center;list-style:none;line-height:1;font-size:var(--vft-tabs-font-size);font-weight:var(--vft-tabs-font-weight);color:var(--vft-tabs-item-color);background-color:var(--vft-tabs-item-bg-color);border:var(--vft-tabs-item-border);margin-right:var(--vft-tabs-item-distance)}.vft-tabs__item:focus,.vft-tabs__item:focus:active{outline:0}.vft-tabs__item:focus-visible{box-shadow:0 0 2px 2px var(--vft-primary-color) inset;border-radius:3px}.vft-tabs__item .is-icon-close{transition:all var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier);margin-left:var(--vft-tabs-close-icon-left);display:flex;justify-content:center;align-items:center;height:var(--vft-tabs-active-distance);width:var(--vft-tabs-active-distance);border-radius:50%}.vft-tabs__item .is-icon-close:hover{background-color:var(--vft-tabs-close-icon-hover-bg-color)}.vft-tabs__item .is-icon-close:hover i{color:var(--vft-tabs-close-icon-hover-color)!important}.vft-tabs__item.is-active{color:var(--vft-tabs-item-color-active);background-color:var(--vft-tabs-item-bg-color-active);font-weight:var(--vft-tabs-font-weight-active);border:var(--vft-tabs-item-border-active)}.vft-tabs__item:hover{color:var(--vft-tabs-item-color-hover);background-color:var(--vft-tabs-item-bg-color-hover);border:var(--vft-tabs-item-border-hover);cursor:pointer}.vft-tabs__item.is-disabled{color:var(--vft-disabled-text-color);cursor:not-allowed}.vft-tabs__active-bar{position:absolute;bottom:0;left:0;height:2px;background-color:var(--vft-primary-color);z-index:1;transition:width var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier),transform var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier);list-style:none}.vft-tabs__new-tab{cursor:pointer;transition:all .15s;position:absolute;right:auto;display:inline-flex;align-items:center;height:100%;padding-left:var(--vft-tabs-add-icon-padding-left)}.vft-tabs__new-tab:hover{color:var(--vft-primary-color)}.vft-tabs__nav-wrap{overflow:hidden;margin-bottom:-1px;position:relative}.vft-tabs__nav-wrap::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:2px;background-color:var(--vft-tabs-nav-color);z-index:var(--vft-index-normal);display:var(--vft-tabs-show-border-bottom)}.vft-tabs__nav-wrap.is-scrollable{padding:var(--vft-tabs-scroll-padding);box-sizing:border-box}.vft-tabs__nav-wrap.is-scrollable .vft-tabs__new-tab{right:var(--vft-tabs-add-icon-right)}.vft-tabs__nav-scroll{overflow:hidden}.vft-tabs__nav-next,.vft-tabs__nav-prev{position:absolute;cursor:pointer;display:inline-flex;align-items:center;height:100%}.vft-tabs__nav-next{right:0}.vft-tabs__nav-prev{left:0}.vft-tabs__nav{display:flex;white-space:nowrap;position:relative;transition:transform var(--vft-transition-duration);float:left;z-index:calc(var(--vft-index-normal) + 1)}.vft-tabs__nav.is-stretch{min-width:100%;display:flex}.vft-tabs__nav.is-stretch>*{flex:1;text-align:center}.vft-tabs__content{overflow:hidden;position:relative}.vft-tabs--card>.vft-tabs__header{border-bottom:var(--vft-tabs-border-bottom);height:var(--vft-tabs-header-height)}.vft-tabs--card>.vft-tabs__header .vft-tabs__nav-wrap::after{content:none}.vft-tabs--card>.vft-tabs__header .vft-tabs__nav{border-radius:4px 4px 0 0;box-sizing:border-box}.vft-tabs--card>.vft-tabs__header .vft-tabs__active-bar{display:none}.vft-tabs--card>.vft-tabs__header .vft-tabs__item .is-icon-close{width:0}.vft-tabs--card>.vft-tabs__header .vft-tabs__item{border-radius:var(--vft-tabs-item-border-radius);transition:var(--vft-transition-function-ease-in-out-bezier),padding var(--vft-transition-duration) var(--vft-transition-function-ease-in-out-bezier);max-width:var(--vft-tabs-item-max-width)}.vft-tabs--card>.vft-tabs__header .vft-tabs__item.is-closable:hover .is-icon-close{width:var(--vft-tabs-active-distance)}.vft-tabs--card>.vft-tabs__header .vft-tabs__item.is-active.is-closable .is-icon-close{width:var(--vft-tabs-active-distance)}.vft-tabs--bottom .vft-tabs__item.is-bottom:last-child,.vft-tabs--bottom .vft-tabs__item.is-top:last-child,.vft-tabs--top .vft-tabs__item.is-bottom:last-child,.vft-tabs--top .vft-tabs__item.is-top:last-child{margin-right:0}.vft-tabs--bottom .vft-tabs__header.is-bottom{margin-bottom:0;margin-top:10px}.vft-tabs--bottom.vft-tabs--border-card .vft-tabs__header.is-bottom{border-bottom:0;border-top:1px solid var(--vft-border-color)}.vft-tabs--bottom.vft-tabs--border-card .vft-tabs__nav-wrap.is-bottom{margin-top:-1px;margin-bottom:0}.vft-tabs--bottom.vft-tabs--border-card .vft-tabs__item.is-bottom:not(.is-active){border:1px solid transparent}.vft-tabs--bottom.vft-tabs--border-card .vft-tabs__item.is-bottom{margin:0 -1px -1px}.vft-tabs--left,.vft-tabs--right{overflow:hidden}.vft-tabs--left .vft-tabs__header.is-left,.vft-tabs--left .vft-tabs__header.is-right,.vft-tabs--left .vft-tabs__nav-scroll,.vft-tabs--left .vft-tabs__nav-wrap.is-left,.vft-tabs--left .vft-tabs__nav-wrap.is-right,.vft-tabs--right .vft-tabs__header.is-left,.vft-tabs--right .vft-tabs__header.is-right,.vft-tabs--right .vft-tabs__nav-scroll,.vft-tabs--right .vft-tabs__nav-wrap.is-left,.vft-tabs--right .vft-tabs__nav-wrap.is-right{height:100%}.vft-tabs--left .vft-tabs__active-bar.is-left,.vft-tabs--left .vft-tabs__active-bar.is-right,.vft-tabs--right .vft-tabs__active-bar.is-left,.vft-tabs--right .vft-tabs__active-bar.is-right{top:0;bottom:auto;width:2px;height:auto}.vft-tabs--left .vft-tabs__nav-wrap.is-left,.vft-tabs--left .vft-tabs__nav-wrap.is-right,.vft-tabs--right .vft-tabs__nav-wrap.is-left,.vft-tabs--right .vft-tabs__nav-wrap.is-right{margin-bottom:0}.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next,.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev{height:30px;line-height:30px;width:100%;text-align:center;cursor:pointer}.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next i,.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev i,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next i,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev i,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next i,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev i,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next i,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev i{transform:rotateZ(90deg)}.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-prev,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-prev{left:auto;top:0}.vft-tabs--left .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next,.vft-tabs--left .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next,.vft-tabs--right .vft-tabs__nav-wrap.is-left>.vft-tabs__nav-next,.vft-tabs--right .vft-tabs__nav-wrap.is-right>.vft-tabs__nav-next{right:auto;bottom:0}.vft-tabs--left .vft-tabs__nav-wrap.is-left.is-scrollable,.vft-tabs--left .vft-tabs__nav-wrap.is-right.is-scrollable,.vft-tabs--right .vft-tabs__nav-wrap.is-left.is-scrollable,.vft-tabs--right .vft-tabs__nav-wrap.is-right.is-scrollable{padding:30px 0}.vft-tabs--left .vft-tabs__nav-wrap.is-left::after,.vft-tabs--left .vft-tabs__nav-wrap.is-right::after,.vft-tabs--right .vft-tabs__nav-wrap.is-left::after,.vft-tabs--right .vft-tabs__nav-wrap.is-right::after{height:100%;width:2px;bottom:auto;top:0}.vft-tabs--left .vft-tabs__nav.is-left,.vft-tabs--left .vft-tabs__nav.is-right,.vft-tabs--right .vft-tabs__nav.is-left,.vft-tabs--right .vft-tabs__nav.is-right{float:none}.vft-tabs--left .vft-tabs__item.is-left,.vft-tabs--left .vft-tabs__item.is-right,.vft-tabs--right .vft-tabs__item.is-left,.vft-tabs--right .vft-tabs__item.is-right{display:block}.vft-tabs--left .vft-tabs__header.is-left{float:left;margin-bottom:0;margin-right:10px}.vft-tabs--left .vft-tabs__nav-wrap.is-left{margin-right:-1px}.vft-tabs--left .vft-tabs__nav-wrap.is-left::after{left:auto;right:0}.vft-tabs--left .vft-tabs__active-bar.is-left{right:0;left:auto}.vft-tabs--left .vft-tabs__item.is-left{text-align:right}.vft-tabs--left.vft-tabs--card .vft-tabs__active-bar.is-left{display:none}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left{border-left:none;border-right:1px solid var(--vft-border-color-light);border-bottom:none;border-top:1px solid var(--vft-border-color-light);text-align:left}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left:first-child{border-right:1px solid var(--vft-border-color-light);border-top:none}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left.is-active{border:1px solid var(--vft-border-color-light);border-right-color:#fff;border-left:none;border-bottom:none}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left.is-active:first-child{border-top:none}.vft-tabs--left.vft-tabs--card .vft-tabs__item.is-left.is-active:last-child{border-bottom:none}.vft-tabs--left.vft-tabs--card .vft-tabs__nav{border-radius:4px 0 0 4px;border-bottom:1px solid var(--vft-border-color-light);border-right:none}.vft-tabs--left.vft-tabs--card .vft-tabs__new-tab{float:none}.vft-tabs--left.vft-tabs--border-card .vft-tabs__header.is-left{border-right:1px solid var(--vft-border-color)}.vft-tabs--left.vft-tabs--border-card .vft-tabs__item.is-left{border:1px solid transparent;margin:-1px 0 -1px -1px}.vft-tabs--left.vft-tabs--border-card .vft-tabs__item.is-left.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.vft-tabs--right .vft-tabs__header.is-right{float:right;margin-bottom:0;margin-left:10px}.vft-tabs--right .vft-tabs__nav-wrap.is-right{margin-left:-1px}.vft-tabs--right .vft-tabs__nav-wrap.is-right::after{left:0;right:auto}.vft-tabs--right .vft-tabs__active-bar.is-right{left:0}.vft-tabs--right.vft-tabs--card .vft-tabs__active-bar.is-right{display:none}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right{border-bottom:none;border-top:1px solid var(--vft-border-color-light)}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right:first-child{border-left:1px solid var(--vft-border-color-light);border-top:none}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right.is-active{border:1px solid var(--vft-border-color-light);border-left-color:#fff;border-right:none;border-bottom:none}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right.is-active:first-child{border-top:none}.vft-tabs--right.vft-tabs--card .vft-tabs__item.is-right.is-active:last-child{border-bottom:none}.vft-tabs--right.vft-tabs--card .vft-tabs__nav{border-radius:0 4px 4px 0;border-bottom:1px solid var(--vft-border-color-light);border-left:none}.vft-tabs--right.vft-tabs--border-card .vft-tabs__header.is-right{border-left:1px solid var(--vft-border-color)}.vft-tabs--right.vft-tabs--border-card .vft-tabs__item.is-right{border:1px solid transparent;margin:-1px -1px -1px 0}.vft-tabs--right.vft-tabs--border-card .vft-tabs__item.is-right.is-active{border-color:transparent;border-top-color:#d1dbe5;border-bottom-color:#d1dbe5}.slideInLeft-transition,.slideInRight-transition{display:inline-block}.slideInRight-enter{animation:slideInRight-enter var(--vft-transition-duration)}.slideInRight-leave{position:absolute;left:0;right:0;animation:slideInRight-leave var(--vft-transition-duration)}.slideInLeft-enter{animation:slideInLeft-enter var(--vft-transition-duration)}.slideInLeft-leave{position:absolute;left:0;right:0;animation:slideInLeft-leave var(--vft-transition-duration)}@keyframes slideInRight-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInRight-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(100%);opacity:0}}@keyframes slideInLeft-enter{0%{opacity:0;transform-origin:0 0;transform:translateX(-100%)}to{opacity:1;transform-origin:0 0;transform:translateX(0)}}@keyframes slideInLeft-leave{0%{transform-origin:0 0;transform:translateX(0);opacity:1}100%{transform-origin:0 0;transform:translateX(-100%);opacity:0}}:root{--vft-menu-bg-color:var(--vft-theme-color);--vft-menu-sub-menu-bg-color:var(--vft-theme-color);--vft-menu-active-color:var(--vft-primary-color);--vft-menu-text-color:var(--vft-text-primary-color);--vft-menu-hover-text-color:var(--vft-primary-color);--vft-menu-hover-bg-color:var(--vft-primary-color-light-9);--vft-menu-focus-text-color:var(--vft-primary-color);--vft-menu-focus-bg-color:var(--vft-primary-color-light-9);--vft-menu-item-height:56px;--vft-menu-sub-item-height:calc(var(--vft-menu-item-height) - 6px);--vft-menu-horizontal-sub-item-height:36px;--vft-menu-item-font-size:var(--vft-font-size-base);--vft-menu-item-hover-fill:var(--vft-primary-color-light-9);--vft-menu-border-color:#dcdfe6;--vft-menu-border-bottom:var(--vft-border);--vft-menu-base-level-padding:20px;--vft-menu-level-padding:20px;--vft-menu-icon-mr:8px;--vft-menu-border:0 solid transparent;--vft-menu-border-right:1px solid #dcdfe6;--vft-menu-item-min-width:200px;--vft-menu-popup-border-radius:var(--vft-border-radius)}.vft-menu{border-right:solid 1px var(--vft-menu-border-color);list-style:none;position:relative;margin:0;padding-left:0;background-color:var(--vft-menu-bg-color);box-sizing:border-box}.vft-menu--vertical:not(.vft-menu--collapse):not(.vft-menu--popup-container) .vft-menu-item,.vft-menu--vertical:not(.vft-menu--collapse):not(.vft-menu--popup-container) .vft-menu-item-group__title,.vft-menu--vertical:not(.vft-menu--collapse):not(.vft-menu--popup-container) .vft-sub-menu__title{padding-left:calc(var(--vft-menu-base-level-padding) + var(--vft-menu-level) * var(--vft-menu-level-padding))}.vft-menu--vertical .vft-menu-item{white-space:initial}.vft-menu--horizontal{display:flex;flex-wrap:nowrap;border-bottom:var(--vft-menu-border-bottom);border-right:none}.vft-menu--horizontal>.vft-menu-item{display:inline-flex;justify-content:center;align-items:center;height:100%;margin:0;border-bottom:2px solid transparent;color:var(--vft-menu-text-color)}.vft-menu--horizontal>.vft-menu-item a,.vft-menu--horizontal>.vft-menu-item a:hover{color:inherit}.vft-menu--horizontal>.vft-menu-item:not(.is-disabled):focus,.vft-menu--horizontal>.vft-menu-item:not(.is-disabled):hover{background-color:#fff}.vft-menu--horizontal>.vft-sub-menu:focus,.vft-menu--horizontal>.vft-sub-menu:hover{outline:0}.vft-menu--horizontal>.vft-sub-menu:hover .vft-sub-menu__title{color:var(--vft-menu-hover-text-color)}.vft-menu--horizontal>.vft-sub-menu.is-active .vft-sub-menu__title{border-bottom:2px solid var(--vft-menu-active-color);color:var(--vft-menu-active-color)}.vft-menu--horizontal>.vft-sub-menu.is-active .vft-sub-menu__title:hover{color:var(--vft-menu-hover-text-color)}.vft-menu--horizontal>.vft-sub-menu .vft-sub-menu__title{height:100%;line-height:100%;border-bottom:2px solid transparent;color:var(--vft-menu-text-color)}.vft-menu--horizontal>.vft-sub-menu .vft-sub-menu__title:hover{background-color:var(--vft-menu-hover-bg-color)}.vft-menu--horizontal .vft-menu .vft-menu-item,.vft-menu--horizontal .vft-menu .vft-sub-menu__title{background-color:var(--vft-menu-bg-color);display:flex;align-items:center;height:var(--vft-menu-horizontal-sub-item-height);padding:0 10px;color:var(--vft-menu-text-color)}.vft-menu--horizontal .vft-menu .vft-sub-menu__title{padding-right:40px}.vft-menu--horizontal .vft-menu .vft-menu-item.is-active,.vft-menu--horizontal .vft-menu .vft-sub-menu.is-active>.vft-sub-menu__title{color:var(--vft-menu-active-color)}.vft-menu--horizontal .vft-menu-item:not(.is-disabled):hover{outline:0;color:var(--vft-menu-hover-text-color);background-color:var(--vft-menu-hover-bg-color)}.vft-menu--horizontal .vft-menu-item:not(.is-disabled):focus{outline:0;color:var(--vft-menu-focus-text-color);background-color:var(--vft-menu-focus-bg-color)}.vft-menu--horizontal>.vft-menu-item.is-active{border-bottom:2px solid var(--vft-menu-active-color);color:var(--vft-menu-active-color)}.vft-menu--collapse{width:calc(var(--vft-menu-icon-width) + var(--vft-menu-base-level-padding) * 2)}.vft-menu--collapse>.vft-menu-item [class^=vft-icon],.vft-menu--collapse>.vft-menu-item-group>ul>.vft-sub-menu>.vft-sub-menu__title [class^=vft-icon],.vft-menu--collapse>.vft-sub-menu>.vft-sub-menu__title [class^=vft-icon]{margin:0;vertical-align:middle;width:var(--vft-menu-icon-width);text-align:center}.vft-menu--collapse>.vft-menu-item .vft-sub-menu__icon-arrow,.vft-menu--collapse>.vft-menu-item-group>ul>.vft-sub-menu>.vft-sub-menu__title .vft-sub-menu__icon-arrow,.vft-menu--collapse>.vft-sub-menu>.vft-sub-menu__title .vft-sub-menu__icon-arrow{display:none}.vft-menu--collapse>.vft-menu-item-group>ul>.vft-sub-menu>.vft-sub-menu__title>span,.vft-menu--collapse>.vft-menu-item>span,.vft-menu--collapse>.vft-sub-menu>.vft-sub-menu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}.vft-menu--collapse>.vft-menu-item.is-active i{color:inherit}.vft-menu--collapse .vft-menu .vft-sub-menu{min-width:200px}.vft-menu--popup{z-index:100;min-width:200px;border:none;padding:5px 0;box-shadow:var(--vft-box-shadow-light);border-radius:var(--vft-menu-popup-border-radius)}.vft-menu .vft-icon{flex-shrink:0}.vft-menu-item{display:flex;align-items:center;height:var(--vft-menu-item-height);line-height:var(--vft-menu-item-height);font-size:var(--vft-menu-item-font-size);color:var(--vft-menu-text-color);padding:0 var(--vft-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--vft-transition-duration),background-color var(--vft-transition-duration),color var(--vft-transition-duration);box-sizing:border-box;white-space:nowrap}.vft-menu-item *{vertical-align:bottom}.vft-menu-item i{margin-right:var(--vft-menu-icon-mr)}.vft-menu-item:focus,.vft-menu-item:hover{outline:0}.vft-menu-item:hover{background-color:var(--vft-menu-hover-bg-color)}.vft-menu-item.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.vft-menu-item span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;word-break:break-all}.vft-menu-item [class^=vft-icon]{margin-right:5px;width:var(--vft-menu-icon-width);text-align:center;font-size:18px;vertical-align:middle}.vft-menu-item.is-active{color:var(--vft-menu-active-color)}.vft-menu-item.is-active i{color:inherit}.vft-menu-item .vft-menu-tooltip__trigger{position:absolute;left:0;top:0;height:100%;width:100%;display:inline-flex;align-items:center;box-sizing:border-box;padding:0 var(--vft-menu-base-level-padding)}.vft-sub-menu{list-style:none;margin:0;padding-left:0;background:var(--vft-menu-sub-menu-bg-color)}.vft-sub-menu__title{display:flex;align-items:center;height:var(--vft-menu-item-height);line-height:var(--vft-menu-item-height);font-size:var(--vft-menu-item-font-size);color:var(--vft-menu-text-color);padding:0 var(--vft-menu-base-level-padding);list-style:none;cursor:pointer;position:relative;transition:border-color var(--vft-transition-duration),background-color var(--vft-transition-duration),color var(--vft-transition-duration);box-sizing:border-box;white-space:nowrap}.vft-sub-menu__title *{vertical-align:bottom}.vft-sub-menu__title i{margin-right:var(--vft-menu-icon-mr)}.vft-sub-menu__title:focus,.vft-sub-menu__title:hover{outline:0}.vft-sub-menu__title:hover{background-color:var(--vft-menu-hover-bg-color)}.vft-sub-menu__title.is-disabled{opacity:.25;cursor:not-allowed;background:0 0!important}.vft-sub-menu__title span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1;line-clamp:1;word-break:break-all}.vft-sub-menu__title:hover{background-color:var(--vft-menu-hover-bg-color)}.vft-sub-menu__text{padding-right:30px}.vft-sub-menu .vft-menu{border:none}.vft-sub-menu .vft-menu-item{height:var(--vft-menu-sub-item-height);line-height:var(--vft-menu-sub-item-height);min-width:var(--vft-menu-item-min-width)}.vft-sub-menu__hide-arrow .vft-sub-menu__icon-arrow{display:none!important}.vft-sub-menu.is-active .vft-sub-menu__title{border-bottom-color:var(--vft-menu-active-color)}.vft-sub-menu.is-disabled .vft-menu-item,.vft-sub-menu.is-disabled .vft-sub-menu__title{opacity:.25;cursor:not-allowed;background:0 0!important}.vft-sub-menu .vft-icon{vertical-align:middle;margin-right:var(--vft-menu-icon-mr);text-align:center}.vft-sub-menu .vft-icon.vft-sub-menu__icon-more{margin-right:0!important}.vft-sub-menu .vft-sub-menu__icon-arrow{position:absolute;right:var(--vft-menu-base-level-padding);transition:transform var(--vft-transition-duration);color:inherit}.vft-menu-item-group>ul{padding:0}.vft-menu-item-group__title{padding:7px 0 7px var(--vft-menu-base-level-padding);line-height:normal;font-size:12px;color:var(--vft-text-color-secondary)}.horizontal-collapse-transition .vft-sub-menu__title .vft-sub-menu__icon-arrow{transition:var(--vft-transition-duration-fast);opacity:0}.vft-popper{--vft-popper-border-radius:var(--vft-popover-border-radius, 4px)}.vft-popper{position:absolute;border-radius:var(--vft-popper-border-radius);padding:5px 11px;z-index:2000;font-size:12px;line-height:20px;min-width:10px;word-wrap:break-word;visibility:visible}.vft-popper.is-dark{color:var(--vft-bg-color);background:var(--vft-text-primary-color);border:1px solid var(--vft-text-primary-color)}.vft-popper.is-dark .vft-popper__arrow::before{border:1px solid var(--vft-text-primary-color);background:var(--vft-text-primary-color);right:0}.vft-popper.is-light{background:var(--vft-bg-color-overlay);border:1px solid var(--vft-border-color-light)}.vft-popper.is-light .vft-popper__arrow::before{border:1px solid var(--vft-border-color-light);background:var(--vft-bg-color-overlay);right:0}.vft-popper.is-pure{padding:0}.vft-popper__arrow{position:absolute;width:10px;height:10px;z-index:-1}.vft-popper__arrow::before{position:absolute;width:10px;height:10px;z-index:-1;content:" ";transform:rotate(45deg);background:var(--vft-text-primary-color);box-sizing:border-box}.vft-popper[data-popper-placement^=top]>.vft-popper__arrow{bottom:-5px}.vft-popper[data-popper-placement^=top]>.vft-popper__arrow::before{border-bottom-right-radius:2px}.vft-popper[data-popper-placement^=bottom]>.vft-popper__arrow{top:-5px}.vft-popper[data-popper-placement^=bottom]>.vft-popper__arrow::before{border-top-left-radius:2px}.vft-popper[data-popper-placement^=left]>.vft-popper__arrow{right:-5px}.vft-popper[data-popper-placement^=left]>.vft-popper__arrow::before{border-top-right-radius:2px}.vft-popper[data-popper-placement^=right]>.vft-popper__arrow{left:-5px}.vft-popper[data-popper-placement^=right]>.vft-popper__arrow::before{border-bottom-left-radius:2px}.vft-popper[data-popper-placement^=top] .vft-popper__arrow::before{border-top-color:transparent!important;border-left-color:transparent!important}.vft-popper[data-popper-placement^=bottom] .vft-popper__arrow::before{border-bottom-color:transparent!important;border-right-color:transparent!important}.vft-popper[data-popper-placement^=left] .vft-popper__arrow::before{border-left-color:transparent!important;border-bottom-color:transparent!important}.vft-popper[data-popper-placement^=right] .vft-popper__arrow::before{border-right-color:transparent!important;border-top-color:transparent!important}.vft-popover{--vft-popover-bg-color:var(--vft-bg-color-overlay);--vft-popover-font-size:var(--vft-font-size-base);--vft-popover-border-color:var(--vft-border-color-lighter);--vft-popover-padding:12px;--vft-popover-padding-large:18px 20px;--vft-popover-title-font-size:16px;--vft-popover-title-text-color:var(--vft-text-primary-color);--vft-popover-border-radius:4px}.vft-popover.vft-popper{background:var(--vft-popover-bg-color);min-width:150px;border-radius:var(--vft-popover-border-radius);border:1px solid var(--vft-popover-border-color);padding:var(--vft-popover-padding);z-index:var(--vft-index-popper);color:var(--vft-text-color-regular);line-height:1.4;text-align:justify;font-size:var(--vft-popover-font-size);box-shadow:var(--vft-box-shadow-light);word-break:break-all;box-sizing:border-box}.vft-popover.vft-popper--plain{padding:var(--vft-popover-padding-large)}.vft-popover__title{color:var(--vft-popover-title-text-color);font-size:var(--vft-popover-title-font-size);line-height:1;margin-bottom:12px}.vft-popover__reference:focus:hover,.vft-popover__reference:focus:not(.focusing){outline-width:0}.vft-popover.vft-popper.is-dark{--vft-popover-bg-color:var(--vft-text-color-primary);--vft-popover-border-color:var(--vft-text-color-primary);--vft-popover-title-text-color:var(--vft-bg-color);color:var(--vft-bg-color)}.vft-popover.vft-popper:focus,.vft-popover.vft-popper:focus:active{outline-width:0}:root{--vft-footer-layout-bg-color:#f7f8fa;--vft-footer-layout-border-top:1px solid #f7f8fa;--vft-footer-layout-left:var(--vft-menu-width);--vft-footer-layout-height:30px;--vft-footer-layout-left-min-width:auto;--vft-footer-layout-right-min-width:auto}.vft-footer-layout{width:calc(100% - var(--vft-footer-layout-left));background-color:var(--vft-footer-layout-bg-color);height:var(--vft-footer-layout-height);border-top:var(--vft-footer-layout-border-top);display:flex;justify-content:space-between;align-items:center;flex:none;overflow:hidden;position:relative;transition:left .5s;left:var(--vft-footer-layout-left)}.vft-footer-layout__left{min-width:var(--vft-footer-layout-left-min-width)}.vft-footer-layout__right{min-width:var(--vft-footer-layout-right-min-width)}:root{--vft-header-layout-height:64px;--vft-header-layout-top-height:40px;--vft-header-layout-bg-color:white;--vft-header-layout-color:black;--vft-header-layout-z-index:2001;--vft-header-layout-border-bottom:1px solid rgb(231, 231, 231)}.vft-header-layout{height:var(--vft-header-layout-height);color:var(--vft-header-layout-color);background-color:var(--vft-header-layout-bg-color);border-bottom:var(--vft-header-layout-border-bottom);box-sizing:border-box}.vft-header-layout--fixed{z-index:var(--vft-header-layout-z-index);width:100%}.vft-header-layout__top{height:var(--vft-header-layout-top-height);display:flex;align-items:center;justify-content:space-between}.vft-header-layout__left{display:flex;height:100%;align-items:center}.vft-iframe-page{height:100%;width:100%;border:none;display:block}:root{--vft-logo-img-width:30px;--vft-logo-img-height:30px;--vft-logo-title-color:black;--vft-logo-title-font-size:16px;--vft-logo-title-font-weight:400;--vft-logo-cursor:pointer}.vft-logo{display:flex;align-items:center;padding-left:20px;cursor:var(--vft-logo-cursor);transition:all .2s ease}.vft-logo__img{width:var(--vft-logo-img-width);height:var(--vft-logo-img-height)}.vft-logo__title{font-size:var(--vft-logo-font-size);font-weight:var(--vft-logo-font-weight);transition:all .5s;line-height:1;color:var(--vft-logo-title-color)}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
@use 'common/var' as *;
|
|
2
|
+
@use 'mixins/mixins' as *;
|
|
3
|
+
|
|
4
|
+
$name: footer-layout;
|
|
5
|
+
|
|
6
|
+
@include set-root-css-vars($name, $layout-footer);
|
|
7
|
+
|
|
8
|
+
@function getCompCssVar($value) {
|
|
9
|
+
@return getCssVar($name, $value);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
@include b($name) {
|
|
13
|
+
// noinspection CssInvalidPropertyValue
|
|
14
|
+
width: calc(100% - getCompCssVar('left'));
|
|
15
|
+
background-color: getCompCssVar('bg-color');
|
|
16
|
+
height: getCompCssVar('height');
|
|
17
|
+
border-top: getCompCssVar('border-top');
|
|
18
|
+
display: flex;
|
|
19
|
+
justify-content: space-between;
|
|
20
|
+
align-items: center;
|
|
21
|
+
flex: none;
|
|
22
|
+
overflow: hidden;
|
|
23
|
+
position: relative;
|
|
24
|
+
transition: left .5s;
|
|
25
|
+
left: getCompCssVar('left');
|
|
26
|
+
|
|
27
|
+
@include e(left) {
|
|
28
|
+
min-width: getCompCssVar('left-min-width');
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@include e(right) {
|
|
32
|
+
min-width: getCompCssVar('right-min-width');
|
|
33
|
+
}
|
|
34
|
+
}
|