From a4a84e6ba478fb4056064987a36f0628e59aa1a1 Mon Sep 17 00:00:00 2001 From: Emmy Leke Date: Sat, 1 Jul 2023 23:50:49 +0100 Subject: [PATCH] Add an option to change toggle type for Bool fields --- .../ModuleFields/Configurator/Bool.vue | 10 ++++ .../components/ModuleFields/Editor/Bool.vue | 59 ++++++++++++++++--- lib/js/src/compose/types/module-field/bool.ts | 3 + .../src/components/input/CInputCheckbox.vue | 53 +++++++++-------- locale/en/corteza-webapp-compose/field.yaml | 6 +- 5 files changed, 96 insertions(+), 35 deletions(-) diff --git a/client/web/compose/src/components/ModuleFields/Configurator/Bool.vue b/client/web/compose/src/components/ModuleFields/Configurator/Bool.vue index 590117c9d..40047c98d 100644 --- a/client/web/compose/src/components/ModuleFields/Configurator/Bool.vue +++ b/client/web/compose/src/components/ModuleFields/Configurator/Bool.vue @@ -8,6 +8,7 @@ v-model="f.options.trueLabel" :placeholder="$t('kind.bool.checkedValuePlaceholder')" /> + + + + + + {{ $t('kind.bool.toggleType') }} + + diff --git a/client/web/compose/src/components/ModuleFields/Editor/Bool.vue b/client/web/compose/src/components/ModuleFields/Editor/Bool.vue index 5b12dee1b..00ae205e9 100644 --- a/client/web/compose/src/components/ModuleFields/Editor/Bool.vue +++ b/client/web/compose/src/components/ModuleFields/Editor/Bool.vue @@ -1,19 +1,51 @@ @@ -21,6 +53,10 @@ import base from './base' export default { + i18nOptions: { + namespaces: 'field', + }, + extends: base, computed: { @@ -34,6 +70,13 @@ export default { this.$emit('change', value) }, }, + + checkboxLabel () { + return { + on: this.field.options.trueLabel || this.$t('general:label.yes'), + off: this.field.options.falseLabel || this.$t('general:label.no'), + } + }, }, } diff --git a/lib/js/src/compose/types/module-field/bool.ts b/lib/js/src/compose/types/module-field/bool.ts index 92b45e73c..5b82d13fc 100644 --- a/lib/js/src/compose/types/module-field/bool.ts +++ b/lib/js/src/compose/types/module-field/bool.ts @@ -6,12 +6,14 @@ const kind = 'Bool' interface BoolOptions extends Options { trueLabel: string; falseLabel: string; + switch: boolean; } const defaults = (): Readonly => Object.freeze({ ...defaultOptions(), trueLabel: '', falseLabel: '', + switch: false, }) export class ModuleFieldBool extends ModuleField { @@ -29,6 +31,7 @@ export class ModuleFieldBool extends ModuleField { super.applyOptions(o) Apply(this.options, o, String, 'trueLabel', 'falseLabel') + Apply(this.options, o, Boolean, 'switch') } /** diff --git a/lib/vue/src/components/input/CInputCheckbox.vue b/lib/vue/src/components/input/CInputCheckbox.vue index bbe723dbe..1a845b8cb 100644 --- a/lib/vue/src/components/input/CInputCheckbox.vue +++ b/lib/vue/src/components/input/CInputCheckbox.vue @@ -1,30 +1,31 @@