gancio/components/Footer.vue
2021-12-02 11:14:53 +01:00

55 lines
2 KiB
Vue

<template lang="pug">
v-footer(aria-label='Footer')
v-dialog(v-model='showFollowMe' destroy-on-close max-width='700px' :fullscreen='$vuetify.breakpoint.xsOnly')
FollowMe(@close='showFollowMe=false' is-dialog)
v-btn(color='primary' text href='https://gancio.org' target='_blank') Gancio <small>{{settings.version}}</small>
v-btn.ml-1(v-for='link in footerLinks'
:key='link.label' color='primary' text
:href='link.href' :to='link.to' :target="link.href && '_blank'") {{link.label}}
v-menu(v-if='settings.enable_trusted_instances && settings.trusted_instances && settings.trusted_instances.length'
offset-y bottom open-on-hover transition="slide-y-transition")
template(v-slot:activator="{ on, attrs }")
v-btn.ml-1(v-bind='attrs' v-on='on' color='primary' text) {{$t('common.places')}}
v-list(subheaders two-lines)
v-list-item(v-for='instance in settings.trusted_instances'
:key='instance.name'
target='_blank'
:href='instance.url'
two-line)
v-list-item-avatar
v-img(:src='`${instance.url}/logo.png`')
v-list-item-content
v-list-item-title {{instance.name}}
v-list-item-subtitle {{instance.label}}
v-btn.ml-1(v-if='settings.enable_federation' color='primary' text rel='me' @click.prevent='showFollowMe=true') {{$t('event.interact_with_me')}}
</template>
<script>
import { mapState } from 'vuex'
import FollowMe from '../components/FollowMe'
export default {
components: { FollowMe },
data () {
return {
showFollowMe: false
}
},
computed: {
...mapState(['settings']),
footerLinks () {
if (!this.settings || !this.settings.footerLinks) return []
return this.settings.footerLinks.map(link => {
if (/^https?:\/\//.test(link.href)) {
return { href: link.href, label: link.label }
} else {
return { to: link.href, label: link.label }
}
})
}
}
}
</script>