Browse Source

Move checkbox trait value logic to the model

ts-components
Artur Arseniev 3 years ago
parent
commit
41bdfcde92
  1. 14
      src/trait_manager/model/Trait.ts
  2. 18
      src/trait_manager/view/TraitCheckboxView.ts

14
src/trait_manager/model/Trait.ts

@ -195,7 +195,7 @@ export default class Trait extends Model<TraitProperties> {
} }
setTargetValue(value: any, opts: SetOptions = {}) { setTargetValue(value: any, opts: SetOptions = {}) {
const target = this.target; const { target, attributes } = this;
const name = this.getName(); const name = this.getName();
if (isUndefined(value)) return; if (isUndefined(value)) return;
let valueToSet = value; let valueToSet = value;
@ -206,6 +206,18 @@ export default class Trait extends Model<TraitProperties> {
valueToSet = true; 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')) { if (this.get('changeProp')) {
target.set(name, valueToSet, opts); target.set(name, valueToSet, opts);
} else { } else {

18
src/trait_manager/view/TraitCheckboxView.ts

@ -16,23 +16,7 @@ export default class TraitCheckboxView extends TraitView {
* @private * @private
*/ */
onChange() { onChange() {
const value = this.getInputElem().checked; this.model.set('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;
} }
/** /**

Loading…
Cancel
Save