Skip to content

Commit 27e50b4

Browse files
committed
perf(tabs): perf multiple-tabs
1 parent ed41e50 commit 27e50b4

35 files changed

+593
-401
lines changed

src/components/Dropdown/index.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { withInstall } from '../util';
22

3-
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
4-
export const Dropdown = createAsyncComponent(() => import('./src/Dropdown'));
3+
import Dropdown from './src/Dropdown';
54

65
withInstall(Dropdown);
76
export * from './src/types';
7+
export { Dropdown };

src/components/Menu/src/BasicMenu.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ export default defineComponent({
243243
onOpenChange={handleOpenChange}
244244
class={unref(getMenuClass)}
245245
onClick={handleMenuClick}
246+
subMenuOpenDelay={0.2}
246247
{...unref(getInlineCollapseOptions)}
247248
>
248249
{{

src/hooks/setting/useMenuSetting.ts

+11
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { appStore } from '/@/store/modules/app';
66

77
import { SIDE_BAR_MINI_WIDTH, SIDE_BAR_SHOW_TIT_MINI_WIDTH } from '/@/enums/appEnum';
88
import { MenuModeEnum, MenuTypeEnum, TriggerEnum } from '/@/enums/menuEnum';
9+
import { useFullContent } from '/@/hooks/web/useFullContent';
910

1011
// Get menu configuration
1112
const getMenuSetting = computed(() => appStore.getProjectConfig.menuSetting);
@@ -78,6 +79,15 @@ const getCalcContentWidth = computed(() => {
7879
return `calc(100% - ${unref(width)}px)`;
7980
});
8081

82+
const { getFullContent: fullContent } = useFullContent();
83+
84+
const getShowSidebar = computed(() => {
85+
return (
86+
unref(getSplit) ||
87+
(unref(getShowMenu) && unref(getMenuMode) !== MenuModeEnum.HORIZONTAL && !unref(fullContent))
88+
);
89+
});
90+
8191
// Set menu configuration
8292
function setMenuSetting(menuSetting: Partial<MenuSetting>): void {
8393
appStore.commitProjectConfigState({ menuSetting });
@@ -119,5 +129,6 @@ export function useMenuSetting() {
119129
getMenuHidden,
120130
getIsTopMenu,
121131
getMenuBgColor,
132+
getShowSidebar,
122133
};
123134
}

src/layouts/default/LayoutTrigger.tsx

-42
This file was deleted.

src/layouts/default/content/index.vue

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
:loading="getPageLoading"
77
background="rgba(240, 242, 245, 0.6)"
88
absolute
9-
:class="`${prefixCls}__loading`"
9+
:class="`${prefixCls}-loading`"
1010
/>
1111
</transition>
1212
<PageLayout />
@@ -53,7 +53,7 @@
5353
margin: 0 auto;
5454
}
5555
56-
&__loading {
56+
&-loading {
5757
position: absolute;
5858
top: 200px;
5959
z-index: @page-loading-z-index;

src/layouts/default/feature/index.vue

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<template>
2+
<LayoutLockPage />
3+
<BackTop v-if="getUseOpenBackTop" :target="getTarget" />
4+
<SettingDrawer v-if="getShowSettingButton" />
5+
</template>
6+
<script lang="ts">
7+
import { defineComponent } from 'vue';
8+
import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
9+
import { BackTop } from 'ant-design-vue';
10+
import { useRootSetting } from '/@/hooks/setting/useRootSetting';
11+
12+
export default defineComponent({
13+
name: 'LayoutFeatures',
14+
components: {
15+
BackTop,
16+
LayoutLockPage: createAsyncComponent(() => import('/@/views/sys/lock/index.vue')),
17+
SettingDrawer: createAsyncComponent(() => import('/@/layouts/default/setting/index.vue')),
18+
},
19+
setup() {
20+
const { getUseOpenBackTop, getShowSettingButton } = useRootSetting();
21+
22+
return {
23+
getTarget: () => document.body,
24+
getUseOpenBackTop,
25+
getShowSettingButton,
26+
};
27+
},
28+
});
29+
</script>

src/layouts/default/footer/index.less

-28
This file was deleted.

src/layouts/default/footer/index.tsx

-34
This file was deleted.

src/layouts/default/footer/index.vue

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<template>
2+
<Footer :class="prefixCls" v-if="getShowLayoutFooter">
3+
<div :class="`${prefixCls}__links`">
4+
<a @click="openWindow(SITE_URL)">{{ t('layout.footer.onlinePreview') }}</a>
5+
<GithubFilled @click="openWindow(GITHUB_URL)" :class="`${prefixCls}__github`" />
6+
<a @click="openWindow(DOC_URL)">{{ t('layout.footer.onlineDocument') }}</a>
7+
</div>
8+
<div>Copyright &copy;2020 Vben Admin</div>
9+
</Footer>
10+
</template>
11+
12+
<script lang="ts">
13+
import { computed, defineComponent, unref } from 'vue';
14+
import { Layout } from 'ant-design-vue';
15+
16+
import { GithubFilled } from '@ant-design/icons-vue';
17+
18+
import { DOC_URL, GITHUB_URL, SITE_URL } from '/@/settings/siteSetting';
19+
import { openWindow } from '/@/utils';
20+
21+
import { useI18n } from '/@/hooks/web/useI18n';
22+
import { useRootSetting } from '/@/hooks/setting/useRootSetting';
23+
import { useRouter } from 'vue-router';
24+
import { useDesign } from '/@/hooks/web/useDesign';
25+
26+
export default defineComponent({
27+
name: 'LayoutFooter',
28+
components: { Footer: Layout.Footer, GithubFilled },
29+
setup() {
30+
const { t } = useI18n();
31+
const { getShowFooter } = useRootSetting();
32+
const { currentRoute } = useRouter();
33+
const { prefixCls } = useDesign('layout-footer');
34+
35+
const getShowLayoutFooter = computed(() => {
36+
return unref(getShowFooter) && !unref(currentRoute).meta?.hiddenFooter;
37+
});
38+
return { getShowLayoutFooter, prefixCls, t, DOC_URL, GITHUB_URL, SITE_URL, openWindow };
39+
},
40+
});
41+
</script>
42+
<style lang="less" scoped>
43+
@import (reference) '../../../design/index.less';
44+
@prefix-cls: ~'@{namespace}-layout-footer';
45+
46+
@normal-color: rgba(0, 0, 0, 0.45);
47+
48+
@hover-color: rgba(0, 0, 0, 0.85);
49+
50+
.@{prefix-cls} {
51+
color: @normal-color;
52+
text-align: center;
53+
54+
&__links {
55+
margin-bottom: 8px;
56+
57+
a {
58+
color: @normal-color;
59+
60+
&:hover {
61+
color: @hover-color;
62+
}
63+
}
64+
}
65+
66+
&__github {
67+
margin: 0 30px;
68+
69+
&:hover {
70+
color: @hover-color;
71+
}
72+
}
73+
}
74+
</style>

src/layouts/default/header/LayoutHeader.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import UserDropdown from './UserDropdown';
1919
import LayoutMenu from '../menu';
2020
import LayoutBreadcrumb from './LayoutBreadcrumb.vue';
2121
import LockAction from './actions/LockAction';
22-
import LayoutTrigger from '../LayoutTrigger';
22+
import LayoutTrigger from '../trigger/index.vue';
2323
import NoticeAction from './notice/NoticeActionItem.vue';
2424
import {
2525
RedoOutlined,

src/layouts/default/header/LayoutMultipleHeader.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import './LayoutMultipleHeader.less';
33
import { defineComponent, unref, computed, ref, watch, nextTick, CSSProperties } from 'vue';
44

55
import LayoutHeader from './LayoutHeader';
6-
import MultipleTabs from '../multitabs/index';
6+
import MultipleTabs from '../tabs/index.vue';
77

88
import { useHeaderSetting } from '/@/hooks/setting/useHeaderSetting';
99
import { useMenuSetting } from '/@/hooks/setting/useMenuSetting';

src/layouts/default/header/index.less

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
@import (reference) '../../../design/index.less';
2+
@header-trigger-prefix-cls: ~'@{namespace}-layout-header-trigger';
23

34
.layout-header {
45
display: flex;
@@ -24,7 +25,7 @@
2425
height: 100%;
2526
align-items: center;
2627

27-
.layout-trigger {
28+
.@{header-trigger-prefix-cls} {
2829
display: flex;
2930
height: 100%;
3031
padding: 1px 10px 0 16px;

0 commit comments

Comments
 (0)