vp-sidebar.vue 925 B

12345678910111213141516171819202122232425262728
  1. <script lang="ts" setup>
  2. import { useSidebar } from '../composables/sidebar'
  3. import VPSidebarLink from './sidebar/vp-sidebar-link.vue'
  4. defineProps<{ open: boolean }>()
  5. defineEmits(['close'])
  6. // const isHome = useIsHome()
  7. const { sidebars, hasSidebar } = useSidebar()
  8. </script>
  9. <template>
  10. <el-scrollbar v-if="hasSidebar" :class="{ sidebar: true, open }">
  11. <aside>
  12. <slot name="top" />
  13. <div class="sidebar-groups">
  14. <section v-for="(item, key) of sidebars" :key="key" class="sidebar-group">
  15. <p class="sidebar-group__title">
  16. {{ item.text }}
  17. </p>
  18. <VPSidebarLink v-for="(child, childKey) in item.children" :key="childKey" :item="child" @close="$emit('close')" />
  19. </section>
  20. </div>
  21. <slot name="bottom" />
  22. </aside>
  23. </el-scrollbar>
  24. </template>