Browse Source

Avoid errors on selector remove

pull/1551/head
Artur Arseniev 8 years ago
parent
commit
648ecb5b80
  1. 9
      src/selector_manager/view/ClassTagView.js
  2. 17
      src/selector_manager/view/ClassTagsView.js
  3. 4
      test/specs/selector_manager/e2e/ClassManager.js

9
src/selector_manager/view/ClassTagView.js

@ -93,14 +93,9 @@ module.exports = require('backbone').View.extend({
* @private * @private
*/ */
removeTag(e) { removeTag(e) {
const em = this.em; const { em, model } = this;
const model = this.model;
const coll = this.coll;
const el = this.el;
const sel = em && em.getSelected(); const sel = em && em.getSelected();
sel && sel.get & sel.get('classes').remove(model); sel && setTimeout(() => sel.getSelectors().remove(model));
coll && coll.remove(model);
setTimeout(() => this.remove(), 0);
}, },
/** /**

17
src/selector_manager/view/ClassTagsView.js

@ -274,16 +274,10 @@ module.exports = Backbone.View.extend({
* @private * @private
*/ */
renderClasses() { renderClasses() {
var fragment = document.createDocumentFragment(); const frag = document.createDocumentFragment();
const classes = this.getClasses();
this.collection.each(function(model) { this.collection.each(model => this.addToClasses(model, frag));
this.addToClasses(model, fragment); classes.get(0) && classes.empty().append(frag);
}, this);
if (this.getClasses())
this.getClasses()
.empty()
.append(fragment);
return this; return this;
}, },
@ -294,8 +288,7 @@ module.exports = Backbone.View.extend({
* @private * @private
*/ */
getClasses() { getClasses() {
if (!this.$classes) if (!this.$classes) this.$classes = this.$el.find(`#${this.pfx}tags-c`);
this.$classes = this.$el.find('#' + this.pfx + 'tags-c');
return this.$classes; return this.$classes;
}, },

4
test/specs/selector_manager/e2e/ClassManager.js

@ -97,7 +97,7 @@ module.exports = {
expect(tagEl.collection.at(0).get('name')).toEqual('test'); expect(tagEl.collection.at(0).get('name')).toEqual('test');
}); });
test.only('Removing from container removes also from selected component', () => { test('Removing from container removes also from selected component', () => {
var model = components.add({}); var model = components.add({});
gjs.editor.setSelected(model); gjs.editor.setSelected(model);
tagEl.addNewTag('test'); tagEl.addNewTag('test');
@ -105,7 +105,7 @@ module.exports = {
.getClasses() .getClasses()
.find('.tag #close') .find('.tag #close')
.trigger('click'); .trigger('click');
expect(model.get('classes').length).toEqual(0); setTimeout(() => expect(model.get('classes').length).toEqual(0));
}); });
test('Trigger correctly event on target with new class add', () => { test('Trigger correctly event on target with new class add', () => {

Loading…
Cancel
Save