72 lines
1.6 KiB
Vue
72 lines
1.6 KiB
Vue
<template>
|
|
<div class="interface-language-dropdown">
|
|
<img :title="imgTitle" v-on:click="toggleShow()" class="interface-language" src="/img/interface-languages.svg" alt="Change interface language">
|
|
|
|
<div v-if="showMenu" class="menu">
|
|
<a v-for="(lang, locale) in $language.available" :key="locale" :href="'/' + locale + '/'" class="menu-item">
|
|
{{lang}}
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<style lang="scss">
|
|
.interface-language-dropdown {
|
|
img {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.menu {
|
|
background-color: #fff;
|
|
background-clip: padding-box;
|
|
border: 1px solid rgba(0,0,0,.15);
|
|
border-radius: .25rem;
|
|
color: #212529;
|
|
cursor: pointer;
|
|
display: flex;
|
|
flex-direction: column;
|
|
font-size: 1rem;
|
|
list-style: none;
|
|
margin: .125rem 0 0;
|
|
padding: .5rem 0;
|
|
position: absolute;
|
|
text-align: left;
|
|
}
|
|
|
|
.menu-item {
|
|
color: #212529;
|
|
padding: .25rem 1.5rem;
|
|
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
|
|
}
|
|
|
|
.menu-item:hover {
|
|
background-color: #F4F6F6;
|
|
cursor: pointer;
|
|
}
|
|
}
|
|
</style>
|
|
|
|
<script lang="ts">
|
|
import Vue, { PropType } from 'vue'
|
|
|
|
export default Vue.extend({
|
|
data () {
|
|
return {
|
|
showMenu: false
|
|
}
|
|
},
|
|
|
|
computed: {
|
|
imgTitle () {
|
|
return this.$gettext('Change interface language')
|
|
}
|
|
},
|
|
|
|
methods: {
|
|
toggleShow () {
|
|
this.showMenu = !this.showMenu;
|
|
}
|
|
}
|
|
})
|
|
</script>
|