| | |
| | | import type { SetupContext } from 'vue'; |
| | | import type { RouteLocationNormalizedLoaded } from 'vue-router'; |
| | | |
| | | import type { MenuRecordRaw } from '..\..\..\..\types\src'; |
| | | import type { MenuRecordRaw } from '../../../../types/src'; |
| | | |
| | | import { computed, onMounted, useSlots, watch } from 'vue'; |
| | | import { useRoute } from 'vue-router'; |
| | | |
| | | import { useRefresh } from '..\..\..\hooks\src'; |
| | | import { $t, i18n } from '..\..\..\..\locales\src'; |
| | | import { useRefresh } from '../../../hooks/src'; |
| | | import { $t, i18n } from '../../../../locales/src'; |
| | | import { |
| | | preferences, |
| | | updatePreferences, |
| | | usePreferences, |
| | | } from '..\..\..\..\preferences\src'; |
| | | import { useAccessStore, useTabbarStore, useTimezoneStore } from '..\..\..\..\stores\src'; |
| | | import { cloneDeep, mapTree } from '..\..\..\..\utils\src'; |
| | | } from '../../../../preferences/src'; |
| | | import { useAccessStore, useTabbarStore, useTimezoneStore } from '../../../../stores/src'; |
| | | import { cloneDeep, mapTree } from '../../../../utils/src'; |
| | | |
| | | import { VbenAdminLayout } from '..\..\..\..\@core\ui-kit\layout-ui\src'; |
| | | import { VbenBackTop, VbenLogo } from '..\..\..\..\@core\ui-kit\shadcn-ui\src'; |
| | | import { VbenAdminLayout } from '../../../../@core/ui-kit/layout-ui/src'; |
| | | import { VbenBackTop, VbenLogo } from '../../../../@core/ui-kit/shadcn-ui/src'; |
| | | |
| | | import { Breadcrumb, CheckUpdates, Preferences } from '../widgets'; |
| | | import { LayoutContent, LayoutContentSpinner } from './content'; |
| | |
| | | } |
| | | |
| | | const route = useRoute(); |
| | | const isPortalHome = computed(() => route.path === '/analytics'); |
| | | |
| | | onMounted(() => { |
| | | autoCollapseMenuByRouteMeta(route); |
| | |
| | | |
| | | <template> |
| | | <VbenAdminLayout |
| | | :class="{ 'is-portal-home': isPortalHome }" |
| | | v-model:sidebar-extra-visible="sidebarExtraVisible" |
| | | :content-compact="preferences.app.contentCompact" |
| | | :content-compact-width="preferences.app.contentCompactWidth" |
| | | :content-padding="preferences.app.contentPadding" |
| | | :content-padding-bottom="preferences.app.contentPaddingBottom" |
| | | :content-padding-left="preferences.app.contentPaddingLeft" |
| | | :content-padding-right="preferences.app.contentPaddingRight" |
| | | :content-padding-top="preferences.app.contentPaddingTop" |
| | | :content-padding="isPortalHome ? 0 : preferences.app.contentPadding" |
| | | :content-padding-bottom="isPortalHome ? 0 : preferences.app.contentPaddingBottom" |
| | | :content-padding-left="isPortalHome ? 0 : preferences.app.contentPaddingLeft" |
| | | :content-padding-right="isPortalHome ? 0 : preferences.app.contentPaddingRight" |
| | | :content-padding-top="isPortalHome ? 0 : preferences.app.contentPaddingTop" |
| | | :footer-enable="preferences.footer.enable" |
| | | :footer-fixed="preferences.footer.fixed" |
| | | :footer-height="preferences.footer.height" |
| | | :header-height="preferences.header.height" |
| | | :header-height="isMixedNav && !isMobile ? 158 : preferences.header.height" |
| | | :header-hidden="preferences.header.hidden" |
| | | :header-mode="preferences.header.mode" |
| | | :header-theme="headerTheme" |
| | |
| | | :sidebar-theme-sub="sidebarThemeSub" |
| | | :sidebar-width="preferences.sidebar.width" |
| | | :side-collapse-width="preferences.sidebar.collapseWidth" |
| | | :tabbar-enable="preferences.tabbar.enable" |
| | | :tabbar-enable="preferences.tabbar.enable && !isPortalHome" |
| | | :tabbar-height="preferences.tabbar.height" |
| | | :z-index="preferences.app.zIndex" |
| | | @side-mouse-leave="handleSideMouseLeave" |
| | |
| | | <VbenLogo |
| | | v-if="preferences.logo.enable" |
| | | :fit="preferences.logo.fit" |
| | | :logo-size="isMixedNav && !isMobile ? 56 : 32" |
| | | :class="logoClass" |
| | | :collapsed="logoCollapsed" |
| | | :src="preferences.logo.source" |
| | | :src-dark="preferences.logo.sourceDark" |
| | | :text="preferences.app.name" |
| | | :text="preferences.copyright.companyName" |
| | | :theme="logoTheme" |
| | | @click="clickLogo" |
| | | > |
| | |
| | | :menus="wrapperMenus(headerMenus)" |
| | | :rounded="isMenuRounded" |
| | | :theme="headerTheme" |
| | | class="w-full" |
| | | class="portal-header-menu w-full" |
| | | mode="horizontal" |
| | | overflow-label="更多" |
| | | @select="handleMenuSelect" |
| | | /> |
| | | </template> |
| | |
| | | <VbenLogo |
| | | v-if="preferences.logo.enable" |
| | | :fit="preferences.logo.fit" |
| | | :text="preferences.app.name" |
| | | :text="preferences.copyright.companyName" |
| | | :theme="sidebarThemeSub" |
| | | > |
| | | <template v-if="$slots['logo-text']" #text> |