<template> <div> <q-tabs v-model="tab" v-if="$q.screen.gt.sm"> <q-tab v-for="(tabindex, index) in tabs" :key="'tab' + index" :name="tabindex.name" :label="tabindex.label" /> </q-tabs> <div class="fit row justify-end" v-else> <q-btn flat round icon="mdi-menu" @click="showDrawer = !showDrawer"></q-btn> </div> <q-drawer side="right" v-model="showDrawer" @click="showDrawer = !showDrawer" behavior="mobile"> <q-list v-model="tab"> <q-item v-for="(tabindex, index) in tabs" :key="'tab' + index" :active="tab == tabindex.name" clickable @click="tab = tabindex.name" > <q-item-label>{{ tabindex.label }}</q-item-label> </q-item> </q-list> </q-drawer> <q-page paddding class="fit row justify-center content-start items-start q-gutter-sm"> <q-tab-panels v-model="tab" style="background-color: transparent;" animated class="q-ma-none q-pa-none fit row justify-center content-start items-start" > <q-tab-panel name="pricelist"> <CalculationTable /> </q-tab-panel> <q-tab-panel name="new_drink"> <Drink /> </q-tab-panel> <q-tab-panel name="drink_types"> <DrinkTypes /> </q-tab-panel> </q-tab-panels> </q-page> </div> </template> <script lang="ts"> import { computed, defineComponent, ref } from '@vue/composition-api'; import { Screen } from 'quasar'; import DrinkTypes from 'src/plugins/pricelist/components/DrinkTypes.vue'; import Drink from 'src/plugins/pricelist/components/Drink.vue'; import CalculationTable from 'src/plugins/pricelist/components/CalculationTable.vue'; export default defineComponent({ name: 'Settings', components: { DrinkTypes, Drink, CalculationTable }, setup(_) { interface Tab { name: string; label: string; } const drawer = ref<boolean>(false); const showDrawer = computed({ get: () => { return !Screen.gt.sm && drawer.value; }, set: (val: boolean) => { drawer.value = val; } }); const tabs: Tab[] = [ { name: 'pricelist', label: 'Getränke' }, { name: 'new_drink', label: 'Neues Getränk' }, { name: 'drink_types', label: 'Getränketypen' } ]; const tab = ref<string>('pricelist'); return { tabs, tab, showDrawer }; } }); </script> <style scoped></style>