From 41bdfcde92e390865301b40abc64e99e873ef94e Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Wed, 18 Jan 2023 15:37:25 +0400 Subject: [PATCH] Move checkbox trait value logic to the model --- src/trait_manager/model/Trait.ts | 14 +++++++++++++- src/trait_manager/view/TraitCheckboxView.ts | 18 +----------------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/trait_manager/model/Trait.ts b/src/trait_manager/model/Trait.ts index 8fffa8819..029a61562 100644 --- a/src/trait_manager/model/Trait.ts +++ b/src/trait_manager/model/Trait.ts @@ -195,7 +195,7 @@ export default class Trait extends Model { } setTargetValue(value: any, opts: SetOptions = {}) { - const target = this.target; + const { target, attributes } = this; const name = this.getName(); if (isUndefined(value)) return; let valueToSet = value; @@ -206,6 +206,18 @@ export default class Trait extends Model { valueToSet = true; } + if (this.getType() === 'checkbox') { + const { valueTrue, valueFalse } = attributes; + + if (valueToSet && !isUndefined(valueTrue)) { + valueToSet = valueTrue; + } + + if (!valueToSet && !isUndefined(valueFalse)) { + valueToSet = valueFalse; + } + } + if (this.get('changeProp')) { target.set(name, valueToSet, opts); } else { diff --git a/src/trait_manager/view/TraitCheckboxView.ts b/src/trait_manager/view/TraitCheckboxView.ts index 526b7af20..c1d27a9b1 100644 --- a/src/trait_manager/view/TraitCheckboxView.ts +++ b/src/trait_manager/view/TraitCheckboxView.ts @@ -16,23 +16,7 @@ export default class TraitCheckboxView extends TraitView { * @private */ onChange() { - const value = this.getInputElem().checked; - this.model.set('value', this.getCheckedValue(value)); - } - - getCheckedValue(checked: boolean) { - let result: boolean | string = checked; - const { valueTrue, valueFalse } = this.model.attributes; - - if (result && !isUndefined(valueTrue)) { - result = valueTrue; - } - - if (!result && !isUndefined(valueFalse)) { - result = valueFalse; - } - - return result; + this.model.set('value', this.getInputElem().checked); } /**