diff options
| author | Henry Jameson <me@hjkos.com> | 2021-03-11 16:55:14 +0200 |
|---|---|---|
| committer | Henry Jameson <me@hjkos.com> | 2021-03-11 16:55:14 +0200 |
| commit | 1f0ac68fcd3f382eedf69d1f5fdcffdc16c3885e (patch) | |
| tree | 28c739e1d7f834e593d72b5de5b6c2fe98f2266b /src/components/settings_modal/helpers | |
| parent | 3870a30aeaeb9ed89e69610f2fc4ca6838fb1558 (diff) | |
implement ChoiceSetting for settings modal similar to BooleanSetting
Diffstat (limited to 'src/components/settings_modal/helpers')
| -rw-r--r-- | src/components/settings_modal/helpers/choice_setting.js | 34 | ||||
| -rw-r--r-- | src/components/settings_modal/helpers/choice_setting.vue | 29 |
2 files changed, 63 insertions, 0 deletions
diff --git a/src/components/settings_modal/helpers/choice_setting.js b/src/components/settings_modal/helpers/choice_setting.js new file mode 100644 index 00000000..042e8106 --- /dev/null +++ b/src/components/settings_modal/helpers/choice_setting.js @@ -0,0 +1,34 @@ +import { get, set } from 'lodash' +import Select from 'src/components/select/select.vue' +import ModifiedIndicator from './modified_indicator.vue' +export default { + components: { + Select, + ModifiedIndicator + }, + props: [ + 'path', + 'disabled', + 'options' + ], + computed: { + pathDefault () { + const [firstSegment, ...rest] = this.path.split('.') + return [firstSegment + 'DefaultValue', ...rest].join('.') + }, + state () { + return get(this.$parent, this.path) + }, + defaultState () { + return get(this.$parent, this.pathDefault) + }, + isChanged () { + return get(this.$parent, this.path) !== get(this.$parent, this.pathDefault) + } + }, + methods: { + update (e) { + set(this.$parent, this.path, e) + } + } +} diff --git a/src/components/settings_modal/helpers/choice_setting.vue b/src/components/settings_modal/helpers/choice_setting.vue new file mode 100644 index 00000000..1a8275b4 --- /dev/null +++ b/src/components/settings_modal/helpers/choice_setting.vue @@ -0,0 +1,29 @@ +<template> + <label + class="ChoiceSetting" + > + <slot /> + <Select + :value="state" + :disabled="disabled" + @change="update" + > + <option + v-for="option in options" + :key="option.key" + :value="option.value" + > + {{ option.label }} + {{ option.value === defaultValue ? $t('settings.instance_default_simple') : '' }} + </option> + </Select> + <ModifiedIndicator :changed="isChanged" /> + </label> +</template> + +<script src="./choice_setting.js"></script> + +<style lang="scss"> +.ChoiceSetting { +} +</style> |
