vp-nav.vue 895 B

12345678910111213141516171819202122232425262728
  1. <script setup lang="ts">
  2. import { isClient } from '@vueuse/core'
  3. import { useSidebar } from '../composables/sidebar'
  4. import { useFullScreen } from '../composables/fullscreen'
  5. import { useToggleWidgets } from '../composables/toggle-widgets'
  6. import { breakpoints } from '../constant'
  7. import VpNavbar from './vp-navbar.vue'
  8. import VpNavFull from './vp-nav-full.vue'
  9. const { hasSidebar } = useSidebar()
  10. const { toggleFullScreen, isFullScreen } = useFullScreen()
  11. const close = () => toggleFullScreen(false)
  12. useToggleWidgets(isFullScreen, () => {
  13. if (!isClient) return
  14. if (window.outerWidth >= breakpoints.md) {
  15. close()
  16. }
  17. })
  18. </script>
  19. <template>
  20. <header :class="{ navbar: true, 'has-sidebar': hasSidebar }">
  21. <VpNavbar :full-screen="isFullScreen" @toggle="toggleFullScreen" />
  22. <VpNavFull :full-screen="isFullScreen" class="full-screen" @close="close" />
  23. </header>
  24. </template>