From d3bd6080262cba822383e8eef89cdfeb04197d14 Mon Sep 17 00:00:00 2001 From: Artur Arseniev Date: Mon, 21 Aug 2023 13:30:46 +0400 Subject: [PATCH] Update setStyle --- src/domain_abstract/model/StyleableModel.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/domain_abstract/model/StyleableModel.ts b/src/domain_abstract/model/StyleableModel.ts index a90c2999f..d878db6e2 100644 --- a/src/domain_abstract/model/StyleableModel.ts +++ b/src/domain_abstract/model/StyleableModel.ts @@ -6,6 +6,10 @@ import { shallowDiff } from '../../utils/mixins'; export type StyleProps = Record; +export type UpdateStyleOptions = ObjectAny & { + partial?: boolean; +}; + const parserHtml = ParserHtml(); export const getLastStyleValue = (value: string | string[]) => { @@ -48,12 +52,20 @@ export default class StyleableModel extends Model * @param {Object} opts * @return {Object} Applied properties */ - setStyle(prop: string | ObjectAny = {}, opts: ObjectAny = {}) { + setStyle(prop: string | ObjectAny = {}, opts: UpdateStyleOptions = {}) { if (isString(prop)) { prop = this.parseStyle(prop); } const propOrig = this.getStyle(opts); + + if (opts.partial) { + opts.avoidStore = true; + prop.__p = true; + } else { + delete prop.__p; + } + const propNew = { ...prop }; const newStyle = { ...propNew }; // Remove empty style properties @@ -62,7 +74,7 @@ export default class StyleableModel extends Model delete newStyle[prop]; } }); - this.set('style', newStyle, opts); + this.set('style', newStyle, opts as any); const diff = shallowDiff(propOrig, propNew); // Delete the property used for partial updates delete diff.__p; @@ -88,7 +100,7 @@ export default class StyleableModel extends Model * this.addStyle({color: 'red'}); * this.addStyle('color', 'blue'); */ - addStyle(prop: string | ObjectAny, value: any = '', opts: ObjectAny = {}) { + addStyle(prop: string | ObjectAny, value: any = '', opts: UpdateStyleOptions = {}) { if (typeof prop == 'string') { prop = { [prop]: value,