Browse Source

Add `component:remove:before` event

pull/3281/head
Artur Arseniev 6 years ago
parent
commit
0697c7c3f9
  1. 4
      src/commands/view/ComponentDelete.js
  2. 9
      src/dom_components/model/Component.js

4
src/commands/view/ComponentDelete.js

@ -2,6 +2,7 @@ import { isArray } from 'underscore';
export default { export default {
run(ed, sender, opts = {}) { run(ed, sender, opts = {}) {
const toSelect = [];
let components = opts.component || ed.getSelectedAll(); let components = opts.component || ed.getSelectedAll();
components = isArray(components) ? [...components] : [components]; components = isArray(components) ? [...components] : [components];
@ -16,8 +17,11 @@ export default {
}); });
} }
component.remove(); component.remove();
component.collection && toSelect.push(component);
}); });
toSelect.length && ed.select(toSelect);
return components; return components;
} }
}; };

9
src/dom_components/model/Component.js

@ -1470,8 +1470,15 @@ const Component = Backbone.Model.extend(Styleable).extend(
* @return {this} * @return {this}
*/ */
remove(opts = {}) { remove(opts = {}) {
const { em } = this;
const coll = this.collection; const coll = this.collection;
return coll && coll.remove(this, opts); const remove = () => coll && coll.remove(this, opts);
const rmOpts = {};
[this, em].map(i =>
i.trigger('component:remove:before', this, remove, rmOpts)
);
!rmOpts.abort && remove();
return this;
}, },
/** /**

Loading…
Cancel
Save