From 5587e44812173b3eb3a6cbf57df395e4ae59bd2a Mon Sep 17 00:00:00 2001 From: mohamedsalem401 Date: Wed, 8 Jan 2025 15:38:41 +0200 Subject: [PATCH] Refactor setting dynamic attributes --- .../src/dom_components/model/Component.ts | 6 ++---- .../model/ComponentDynamicValueWatcher.ts | 21 +++++++------------ 2 files changed, 9 insertions(+), 18 deletions(-) diff --git a/packages/core/src/dom_components/model/Component.ts b/packages/core/src/dom_components/model/Component.ts index bfc882e36..c20e69708 100644 --- a/packages/core/src/dom_components/model/Component.ts +++ b/packages/core/src/dom_components/model/Component.ts @@ -306,9 +306,8 @@ export default class Component extends StyleableModel { }; this.em = em!; this.config = opt.config || {}; - this.setAttributes({ + this.addAttributes({ ...(result(this, 'defaults').attributes || {}), - ...(this.get('attributes') || {}), }); this.ccid = Component.createId(this, opt); this.preInit(); @@ -696,8 +695,7 @@ export default class Component extends StyleableModel { * component.setAttributes({ id: 'test', 'data-key': 'value' }); */ setAttributes(attrs: ObjectAny, opts: SetAttrOptions = { skipWatcherUpdates: false, fromDataSource: false }) { - const evaluatedAttributes = this.componentDVListener.setAttributes(attrs, opts); - this.set('attributes', { ...evaluatedAttributes }, opts); + this.set('attributes', { ...attrs }, opts); return this; } diff --git a/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts b/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts index 4ad259d94..3c465dec7 100644 --- a/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts +++ b/packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts @@ -45,26 +45,19 @@ export class ComponentDynamicValueWatcher { addProps(props: ObjectAny, options: DynamicWatchersOptions = {}) { const evaluatedProps = this.propertyWatcher.addDynamicValues(props, options); - const shouldSkipOverridUpdates = options.skipWatcherUpdates || options.fromDataSource; - if (!shouldSkipOverridUpdates) { + if (props.attributes) { + const evaluatedAttributes = this.attributeWatcher.setDynamicValues({ ...props.attributes }, options); + evaluatedProps['attributes'] = evaluatedAttributes; + } + + const skipOverridUpdates = options.skipWatcherUpdates || options.fromDataSource; + if (!skipOverridUpdates) { this.updateSymbolOverride(); } return evaluatedProps; } - addAttributes(attributes: ObjectAny, options: DynamicWatchersOptions = {}) { - const evaluatedAttributes = this.attributeWatcher.addDynamicValues(attributes, options); - this.updateSymbolOverride(); - return evaluatedAttributes; - } - - setAttributes(attributes: ObjectAny, options: DynamicWatchersOptions = {}) { - const evaluatedAttributes = this.attributeWatcher.setDynamicValues(attributes, options); - this.updateSymbolOverride(); - return evaluatedAttributes; - } - removeAttributes(attributes: string[]) { this.attributeWatcher.removeListeners(attributes); this.updateSymbolOverride();