From 5a81b20e5c8576e0a430b521bea68d0c70c8127e Mon Sep 17 00:00:00 2001 From: cagataycivici Date: Sat, 15 Dec 2018 13:00:03 +0300 Subject: [PATCH] Binary selection support for Checkbox --- src/components/checkbox/Checkbox.vue | 17 +++++++++++------ src/views/checkbox/CheckboxDemo.vue | 12 ++++++------ 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/components/checkbox/Checkbox.vue b/src/components/checkbox/Checkbox.vue index b32fa4f93..a813d38d9 100644 --- a/src/components/checkbox/Checkbox.vue +++ b/src/components/checkbox/Checkbox.vue @@ -37,11 +37,16 @@ export default { if (!this.disabled) { let newModelValue; - if (this.checked) - newModelValue = this.modelValue.filter(val => !ObjectUtils.equals(val, this.value)); - else - newModelValue = this.modelValue ? [...this.modelValue, this.value] : [this.value]; - + if (Array.isArray(this.modelValue)) { + if (this.checked) + newModelValue = this.modelValue.filter(val => !ObjectUtils.equals(val, this.value)); + else + newModelValue = this.modelValue ? [...this.modelValue, this.value] : [this.value]; + } + else { + newModelValue = !this.modelValue; + } + this.$emit('click', event); this.$emit('input', newModelValue); this.$emit('change', event); @@ -59,7 +64,7 @@ export default { }, computed: { checked() { - return this.modelValue != null && ObjectUtils.contains(this.value, this.modelValue); + return Array.isArray(this.modelValue) ? ObjectUtils.contains(this.value, this.modelValue) : this.modelValue; } } } diff --git a/src/views/checkbox/CheckboxDemo.vue b/src/views/checkbox/CheckboxDemo.vue index 526e2e2aa..d72fe553d 100644 --- a/src/views/checkbox/CheckboxDemo.vue +++ b/src/views/checkbox/CheckboxDemo.vue @@ -9,6 +9,10 @@

Basic

+ + + +

Multiple

@@ -29,7 +33,7 @@
Selected Cities : {{cities}} -

Advanced with Preselection, Value Binding and Disabled Option

+

Dynamic Values, Preselection, Value Binding and Disabled Option

@@ -57,14 +61,10 @@ export default { data() { return { + checked: false, cities: [], themes: [{brand: 'Serenity', key: 'S'}, {brand: 'Apollo', key: 'A'}] } - }, - methods: { - onChange() { - console.log('change'); - } } }