Files
bab-app/src/components/LeftDrawer.vue

81 lines
2.1 KiB
Vue

<template>
<q-drawer
:model-value="drawer"
show-if-above
:width="200"
:breakpoint="1024"
@update:model-value="$emit('drawer-toggle')">
<q-scroll-area class="fit">
<q-list
padding
class="menu-list">
<template
v-for="link in enabledLinks"
:key="link.name">
<!-- TODO: Template this to be DRY -->
<q-item
clickable
v-ripple
:to="link.to">
<q-item-section avatar>
<q-icon :name="link.icon" />
</q-item-section>
<q-item-section>
<span :class="link.color ? `text-${link.color}` : ''">
{{ link.name }}
</span>
</q-item-section>
</q-item>
<q-list v-if="link.sublinks">
<div
v-for="sublink in link.sublinks"
:key="sublink.name">
<q-item
clickable
v-ripple
:to="sublink.to"
class="q-ml-md">
<q-item-section avatar>
<q-icon :name="sublink.icon" />
</q-item-section>
<q-item-section>
<span :class="sublink.color ? `text-${sublink.color}` : ''">
{{ sublink.name }}
</span>
</q-item-section>
</q-item>
</div>
</q-list>
</template>
<q-item
clickable
v-ripple
@click="logout()">
<q-item-section avatar><q-icon name="logout" /></q-item-section>
<q-item-section>Logout</q-item-section>
</q-item>
</q-list>
</q-scroll-area>
</q-drawer>
</template>
<script lang="ts" setup>
import { defineComponent } from 'vue';
import { enabledLinks } from 'src/router/navlinks.js';
import { logout } from 'boot/appwrite';
defineProps(['drawer']);
defineEmits(['drawer-toggle']);
defineComponent({
name: 'LeftDrawer',
});
</script>
<style lang="sass" scoped>
.menu-list .q-item
border-radius: 0 32px 32px 0
</style>