diff --git a/src/client/theme-default/Layout.vue b/src/client/theme-default/Layout.vue index 30ebe4912b91..8f90dc68aa94 100644 --- a/src/client/theme-default/Layout.vue +++ b/src/client/theme-default/Layout.vue @@ -8,15 +8,18 @@ import VPNav from './components/VPNav.vue' import VPSidebar from './components/VPSidebar.vue' import VPSkipLink from './components/VPSkipLink.vue' import { useData } from './composables/data' -import { registerWatchers } from './composables/layout' +import { registerWatchers, useLayout } from './composables/layout' import { useSidebarControl } from './composables/sidebar' const { isOpen: isSidebarOpen, open: openSidebar, - close: closeSidebar + close: closeSidebar, + isCollapsed } = useSidebarControl() +const { hasSidebar } = useLayout() + registerWatchers({ closeSidebar }) const { frontmatter } = useData() @@ -25,13 +28,21 @@ const slots = useSlots() const heroImageSlotExists = computed(() => !!slots['home-hero-image']) provide('hero-image-slot-exists', heroImageSlotExists) + +const layoutClasses = computed(() => { + return { + [String(frontmatter.value.pageClass || '')]: !!frontmatter.value.pageClass, + 'has-sidebar': hasSidebar.value, + 'sidebar-collapsed': isCollapsed.value && hasSidebar.value + } +})