Change-Id: I1a30b5dfd68c5fb255e66e95d9601c6f9e2ebe67mr10.0
parent
b45da7aad6
commit
ac204b353b
@ -1,56 +0,0 @@
|
|||||||
<template>
|
|
||||||
<q-list
|
|
||||||
no-border
|
|
||||||
>
|
|
||||||
<q-expansion-item
|
|
||||||
ref="languageCollapsible"
|
|
||||||
v-model="expanded"
|
|
||||||
:label="languageLabel"
|
|
||||||
>
|
|
||||||
<q-list
|
|
||||||
no-border
|
|
||||||
>
|
|
||||||
<q-item
|
|
||||||
v-for="(language, index) in languageLabels"
|
|
||||||
:key="index"
|
|
||||||
v-close-popup
|
|
||||||
clickable
|
|
||||||
@click="changeSessionLanguage(language[0])"
|
|
||||||
>
|
|
||||||
<q-item-section>
|
|
||||||
<q-item-label>{{ language[1] }}</q-item-label>
|
|
||||||
</q-item-section>
|
|
||||||
</q-item>
|
|
||||||
</q-list>
|
|
||||||
</q-expansion-item>
|
|
||||||
</q-list>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import {
|
|
||||||
mapActions
|
|
||||||
} from 'vuex'
|
|
||||||
export default {
|
|
||||||
name: 'CscLanguageMenu',
|
|
||||||
props: {
|
|
||||||
languageLabel: {
|
|
||||||
type: String,
|
|
||||||
required: true
|
|
||||||
},
|
|
||||||
languageLabels: {
|
|
||||||
type: Array,
|
|
||||||
required: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data () {
|
|
||||||
return {
|
|
||||||
expanded: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
...mapActions('user', [
|
|
||||||
'changeSessionLanguage'
|
|
||||||
])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
@ -0,0 +1,60 @@
|
|||||||
|
<template>
|
||||||
|
<q-btn
|
||||||
|
icon="language"
|
||||||
|
:color="iconColor"
|
||||||
|
round
|
||||||
|
small
|
||||||
|
flat
|
||||||
|
>
|
||||||
|
<q-menu>
|
||||||
|
<q-item
|
||||||
|
v-close-popup
|
||||||
|
>
|
||||||
|
<q-item-section
|
||||||
|
class="text-weight-medium"
|
||||||
|
>
|
||||||
|
{{ languageLabel }}
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
<q-separator />
|
||||||
|
<q-item
|
||||||
|
v-for="(language, index) in options"
|
||||||
|
:key="index"
|
||||||
|
v-close-popup
|
||||||
|
clickable
|
||||||
|
@click="changeLanguage(language.value)"
|
||||||
|
>
|
||||||
|
<q-item-section>{{ language.label }}</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
</q-menu>
|
||||||
|
</q-btn>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import _ from 'lodash'
|
||||||
|
import { i18n } from 'boot/i18n'
|
||||||
|
import { getLanguageLabels, setLanguage } from 'src/i18n'
|
||||||
|
export default {
|
||||||
|
name: 'CscSelectionLanguage',
|
||||||
|
props: {
|
||||||
|
iconColor: {
|
||||||
|
type: String,
|
||||||
|
default: 'primary'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
languageLabel () {
|
||||||
|
const lang = _.first(this.options.filter(item => item.value === i18n.locale))
|
||||||
|
return this.$t('Language') + ' (' + lang.label + ')'
|
||||||
|
},
|
||||||
|
options () {
|
||||||
|
return getLanguageLabels()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeLanguage (lang) {
|
||||||
|
setLanguage(lang)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
@ -0,0 +1,57 @@
|
|||||||
|
<template>
|
||||||
|
<q-list
|
||||||
|
no-border
|
||||||
|
>
|
||||||
|
<q-expansion-item
|
||||||
|
ref="languageCollapsible"
|
||||||
|
v-model="expanded"
|
||||||
|
:label="languageLabel"
|
||||||
|
>
|
||||||
|
<q-list
|
||||||
|
no-border
|
||||||
|
>
|
||||||
|
<q-item
|
||||||
|
v-for="(language, index) in options"
|
||||||
|
:key="index"
|
||||||
|
v-close-popup
|
||||||
|
clickable
|
||||||
|
@click="changeLanguage(language.value)"
|
||||||
|
>
|
||||||
|
<q-item-section>
|
||||||
|
<q-item-label>{{ language.label }}</q-item-label>
|
||||||
|
</q-item-section>
|
||||||
|
</q-item>
|
||||||
|
</q-list>
|
||||||
|
</q-expansion-item>
|
||||||
|
</q-list>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import _ from 'lodash'
|
||||||
|
import { i18n } from 'boot/i18n'
|
||||||
|
import { getLanguageLabels, setLanguage } from 'src/i18n'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
// TODO: this component has some duplicated code with "CscSelectionLanguage" component. Please recheck do we still need to have a separate UI for Mobile users
|
||||||
|
name: 'CscSelectionLanguageMobile',
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
expanded: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
languageLabel () {
|
||||||
|
const lang = _.first(this.options.filter(item => item.value === i18n.locale))
|
||||||
|
return this.$t('Language') + ' (' + lang.label + ')'
|
||||||
|
},
|
||||||
|
options () {
|
||||||
|
return getLanguageLabels()
|
||||||
|
}
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
changeLanguage (lang) {
|
||||||
|
setLanguage(lang)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
Loading…
Reference in new issue