diff --git a/src/components/interface_language_switcher/interface_language_switcher.js b/src/components/interface_language_switcher/interface_language_switcher.js new file mode 100644 index 000000000..bd7b641a5 --- /dev/null +++ b/src/components/interface_language_switcher/interface_language_switcher.js @@ -0,0 +1,58 @@ +import localeService from '../../services/locale/locale.service.js' + +import Select from '../select/select.vue' +import ProfileSettingIndicator from 'src/components/settings_modal/helpers/profile_setting_indicator.vue' + +export default { + components: { + Select, + ProfileSettingIndicator + }, + props: { + // List of languages (or just one language) + modelValue: { + type: [Array, String], + required: true + }, + // Is this setting stored in user profile (true) or elsewhere (false) + // Doesn't affect storage, just shows an icon if true + profile: { + type: Boolean, + default: false + } + }, + emits: ['update:modelValue'], + computed: { + languages () { + return localeService.languages + }, + + controlledLanguage: { + get: function () { + return Array.isArray(this.modelValue) ? this.modelValue : [this.modelValue] + }, + set: function (val) { + this.$emit('update:modelValue', val) + } + } + }, + + methods: { + getLanguageName (code) { + return localeService.getLanguageName(code) + }, + addLanguage () { + this.controlledLanguage = [...this.controlledLanguage, ''] + }, + setLanguageAt (index, val) { + const lang = [...this.controlledLanguage] + lang[index] = val + this.controlledLanguage = lang + }, + removeLanguageAt (index) { + const lang = [...this.controlledLanguage] + lang.splice(index, 1) + this.controlledLanguage = lang + } + } +} diff --git a/src/components/interface_language_switcher/interface_language_switcher.vue b/src/components/interface_language_switcher/interface_language_switcher.vue index 46837b018..8b300d43b 100644 --- a/src/components/interface_language_switcher/interface_language_switcher.vue +++ b/src/components/interface_language_switcher/interface_language_switcher.vue @@ -1,7 +1,7 @@ - +