From aaa24810873e23915f61cf921a33e37002112de9 Mon Sep 17 00:00:00 2001 From: mohamedsalem401 Date: Tue, 7 Jan 2025 15:07:30 +0200 Subject: [PATCH] Fix updating collection symbols overrides in runtime --- packages/core/src/dom_components/model/Component.ts | 9 +++++++-- .../model/ComponentDynamicValueWatcher.ts | 13 +++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/core/src/dom_components/model/Component.ts b/packages/core/src/dom_components/model/Component.ts index 60ff780a6..52854383f 100644 --- a/packages/core/src/dom_components/model/Component.ts +++ b/packages/core/src/dom_components/model/Component.ts @@ -510,8 +510,13 @@ export default class Component extends StyleableModel { * @example * component.setSymbolOverride(['children', 'classes']); */ - setSymbolOverride(value?: boolean | string | string[]) { - this.set(keySymbolOvrd, (isString(value) ? [value] : value) ?? 0); + setSymbolOverride(value: boolean | string | string[], options: DynamicWatchersOptions = {}) { + this.set( + { + [keySymbolOvrd]: (isString(value) ? [value] : value) ?? 0, + }, + options, + ); } /** diff --git a/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts b/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts index 59ed335e5..7a93fb3b6 100644 --- a/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts +++ b/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts @@ -42,18 +42,23 @@ export class ComponentDynamicValueWatcher { this.updateSymbolOverride(); } - addProps(props: ObjectAny, options?: DynamicWatchersOptions) { + addProps(props: ObjectAny, options: DynamicWatchersOptions = {}) { const evaluatedProps = this.propertyWatcher.addDynamicValues(props, options); + const shouldSkipOverridUpdates = options.skipWatcherUpdates || options.fromDataSource; + if (!shouldSkipOverridUpdates) { + this.updateSymbolOverride(); + } + return evaluatedProps; } - addAttributes(attributes: ObjectAny, options?: DynamicWatchersOptions) { + addAttributes(attributes: ObjectAny, options: DynamicWatchersOptions = {}) { const evaluatedAttributes = this.attributeWatcher.addDynamicValues(attributes, options); this.updateSymbolOverride(); return evaluatedAttributes; } - setAttributes(attributes: ObjectAny, options?: DynamicWatchersOptions) { + setAttributes(attributes: ObjectAny, options: DynamicWatchersOptions = {}) { const evaluatedAttributes = this.attributeWatcher.setDynamicValues(attributes, options); this.updateSymbolOverride(); return evaluatedAttributes; @@ -75,7 +80,7 @@ export class ComponentDynamicValueWatcher { if (haveOverridenAttributes) combinedKeys.push('attributes'); if (!combinedKeys.length && !this.component.getSymbolOverride()) return; - this.component.setSymbolOverride(combinedKeys); + this.component.setSymbolOverride(combinedKeys, { fromDataSource: true }); } getDynamicPropsDefs() {