diff options
Diffstat (limited to 'apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue')
-rw-r--r-- | apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue b/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue new file mode 100644 index 00000000000..4e92436fd63 --- /dev/null +++ b/apps/settings/src/components/PersonalInfo/LanguageSection/LanguageSection.vue @@ -0,0 +1,72 @@ +<!-- + - SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors + - SPDX-License-Identifier: AGPL-3.0-or-later +--> + +<template> + <section> + <HeaderBar :input-id="inputId" + :readable="propertyReadable" /> + + <Language v-if="isEditable" + :input-id="inputId" + :common-languages="commonLanguages" + :other-languages="otherLanguages" + :language.sync="language" /> + + <span v-else> + {{ t('settings', 'No language set') }} + </span> + </section> +</template> + +<script> +import { loadState } from '@nextcloud/initial-state' + +import Language from './Language.vue' +import HeaderBar from '../shared/HeaderBar.vue' + +import { ACCOUNT_SETTING_PROPERTY_ENUM, ACCOUNT_SETTING_PROPERTY_READABLE_ENUM } from '../../../constants/AccountPropertyConstants.js' + +const { languageMap: { activeLanguage, commonLanguages, otherLanguages } } = loadState('settings', 'personalInfoParameters', {}) + +export default { + name: 'LanguageSection', + + components: { + Language, + HeaderBar, + }, + + setup() { + // Non reactive instance properties + return { + commonLanguages, + otherLanguages, + propertyReadable: ACCOUNT_SETTING_PROPERTY_READABLE_ENUM.LANGUAGE, + } + }, + + data() { + return { + language: activeLanguage, + } + }, + + computed: { + inputId() { + return `account-setting-${ACCOUNT_SETTING_PROPERTY_ENUM.LANGUAGE}` + }, + + isEditable() { + return Boolean(this.language) + }, + }, +} +</script> + +<style lang="scss" scoped> +section { + padding: 10px 10px; +} +</style> |