Browse Source

Fix RTE update in text components. Closes #3069

pull/3147/head
Artur Arseniev 6 years ago
parent
commit
3aeb1fa213
  1. 5
      src/dom_components/model/Component.js
  2. 18
      src/dom_components/model/Components.js

5
src/dom_components/model/Component.js

@ -579,7 +579,10 @@ const Component = Backbone.Model.extend(Styleable).extend(
const addChild = !this.opt.avoidChildren;
this.set('components', comps);
addChild &&
comps.add(isFunction(components) ? components(this) : components);
comps.add(
isFunction(components) ? components(this) : components,
this.opt
);
this.listenTo(...toListen);
return this;
},

18
src/dom_components/model/Components.js

@ -11,9 +11,21 @@ import {
let Component;
const getIdsToKeep = prev => {
const getIdsToKeep = (prev, res = []) => {
const pr = prev || [];
return pr.map(comp => comp.getId());
pr.forEach(comp => {
res.push(comp.getId());
getIdsToKeep(comp.components(), res);
});
return res;
};
const getNewIds = (items, res = []) => {
items.map(item => {
res.push(item.getId());
getNewIds(item.components(), res);
});
return res;
};
export default Backbone.Collection.extend({
@ -31,7 +43,7 @@ export default Backbone.Collection.extend({
const coll = this;
const prev = opts.previousModels || [];
const toRemove = prev.filter(prev => !models.get(prev.cid));
const newIds = models.map(i => i.getId());
const newIds = getNewIds(models);
opts.keepIds = getIdsToKeep(prev).filter(pr => newIds.indexOf(pr) >= 0);
toRemove.forEach(md => this.removeChildren(md, coll, opts));
models.each(model => this.onAdd(model));

Loading…
Cancel
Save