vp-sidebar.vue 928 B

12345678910111213141516171819202122232425262728293031323334353637
  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
  15. v-for="(item, key) of sidebars"
  16. :key="key"
  17. class="sidebar-group"
  18. >
  19. <p class="sidebar-group__title">
  20. {{ item.text }}
  21. </p>
  22. <VPSidebarLink
  23. v-for="(child, childKey) in item.children"
  24. :key="childKey"
  25. :item="child"
  26. @close="$emit('close')"
  27. />
  28. </section>
  29. </div>
  30. <slot name="bottom" />
  31. </aside>
  32. </el-scrollbar>
  33. </template>