Browse Source

Allow to stop property propagation

pull/4103/head
Artur Arseniev 5 years ago
parent
commit
307d2e4365
  1. 12
      src/dom_components/model/Component.js

12
src/dom_components/model/Component.js

@ -116,19 +116,17 @@ export default class Component extends Model.extend(Styleable) {
// Propagate properties from parent if indicated // Propagate properties from parent if indicated
const parent = this.parent(); const parent = this.parent();
const parentAttr = parent && parent.attributes; const parentAttr = parent && parent.attributes;
const propagate = this.get('propagate');
propagate && this.set('propagate', isArray(propagate) ? propagate : [propagate]);
if (parentAttr && parentAttr.propagate) { if (parentAttr && parentAttr.propagate && !propagate) {
let newAttr = {}; const newAttr = {};
const toPropagate = parentAttr.propagate; const toPropagate = parentAttr.propagate;
toPropagate.forEach(prop => (newAttr[prop] = parent.get(prop))); toPropagate.forEach(prop => (newAttr[prop] = parent.get(prop)));
newAttr.propagate = toPropagate; newAttr.propagate = toPropagate;
newAttr = { ...newAttr, ...props }; this.set({ ...newAttr, ...props });
this.set(newAttr);
} }
const propagate = this.get('propagate');
propagate && this.set('propagate', isArray(propagate) ? propagate : [propagate]);
// Check void elements // Check void elements
if (opt && opt.config && opt.config.voidElements.indexOf(this.get('tagName')) >= 0) { if (opt && opt.config && opt.config.voidElements.indexOf(this.get('tagName')) >= 0) {
this.set('void', true); this.set('void', true);

Loading…
Cancel
Save