Browse Source

Fix updating collection symbols overrides in runtime

collection-component
mohamedsalem401 2 years ago
parent
commit
aaa2481087
  1. 9
      packages/core/src/dom_components/model/Component.ts
  2. 13
      packages/core/src/dom_components/model/ComponentDynamicValueWatcher.ts

9
packages/core/src/dom_components/model/Component.ts

@ -510,8 +510,13 @@ export default class Component extends StyleableModel<ComponentProperties> {
* @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,
);
}
/**

13
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() {

Loading…
Cancel
Save