Files
app/src/layouts/ProfileLayout.vue
T

85 lines
2.4 KiB
Vue

<template>
<q-layout view="hhh lpR lff">
<q-header reveal elevated class="bg-primary text-white">
<q-toolbar>
<q-btn
flat
dense
round
icon="menu"
aria-label="Menu"
@click="toggleLeftDrawer"
/>
<q-toolbar-title>
{{ pageTitle || "Polétání.cz" }}
</q-toolbar-title>
<TopMenuButton v-if="!isQueryRunning && user" :logged-user="user" @logout="logout"/>
</q-toolbar>
</q-header>
<q-drawer
v-model="leftDrawerOpen"
show-if-above
bordered
>
<q-img class="absolute-top" v-if="!isQueryRunning && user" :src="user.titleImageUrl" style="height: 150px"/>
<q-spinner v-else/>
<q-scroll-area style="height: calc(100% - 150px); margin-top: 150px; border-right: 1px solid #ddd">
<SidebarNavigation/>
</q-scroll-area>
</q-drawer>
<q-page-container>
<BreadcrumbsNavigation :items="breadcrumbs" v-if="breadcrumbs !== null"/>
<BreadcrumbsSkeleton v-if="breadcrumbs === null" />
<div class="q-mx-md q-my-md">
<router-view/>
</div>
</q-page-container>
</q-layout>
</template>
<script setup>
import {onMounted, ref} from 'vue'
import {useUserStore} from "stores/User";
import {storeToRefs} from "pinia";
import BreadcrumbsNavigation from "components/navigation/BreadcrumbsNavigation.vue";
import {useAppStore} from "stores/App";
import {useMeta, useQuasar} from "quasar";
import {useRouter} from "vue-router";
import {successObject} from "src/composables/dialog";
import SidebarNavigation from "components/navigation/SidebarNavigation.vue";
import TopMenuButton from "components/navigation/TopMenuButton.vue";
import {metaData} from "src/composables/meta";
import BreadcrumbsSkeleton from "components/navigation/BreadcrumbsSkeleton.vue";
const $q = useQuasar();
const $router = useRouter();
const {pageTitle, breadcrumbs} = storeToRefs(useAppStore());
useMeta(() => metaData({
title: pageTitle.value
}));
const leftDrawerOpen = ref(false)
const toggleLeftDrawer = () => {
leftDrawerOpen.value = !leftDrawerOpen.value
};
onMounted(() => {
useUserStore().fetchLoggedUserDetail({refresh: true});
})
const {isQueryRunning, user} = storeToRefs(useUserStore());
const logout = () => {
useUserStore().logout().then(() => {
$q.notify(successObject("Odhlášení bylo úspěšné"));
$router.push({name: "homepage"});
})
}
</script>