<template> <q-item v-if="isGranted" clickable tag="a" target="self" :to="{ name: entry.link }"> <q-item-section v-if="entry.icon" avatar> <q-icon :name="entry.icon" /> </q-item-section> <q-item-section> <q-item-label>{{ title }}</q-item-label> </q-item-section> </q-item> </template> <script lang="ts"> import { computed, defineComponent, PropType } from 'vue'; import { hasPermissions } from 'src/utils/permission'; import { FG_Plugin } from '@flaschengeist/typings'; export default defineComponent({ name: 'EssentialLink', props: { entry: { type: Object as PropType<FG_Plugin.MenuLink>, required: true, }, }, setup(props) { const isGranted = computed(() => hasPermissions(props.entry.permissions || [])); const title = computed(() => typeof props.entry.title === 'function' ? props.entry.title() : props.entry.title ); return { isGranted, title }; }, }); </script>