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
*/
removeTag(e) {
const em = this.em;
const model = this.model;
const coll = this.coll;
const el = this.el;
const { em, model } = this;
const sel = em && em.getSelected();
sel && sel.get & sel.get('classes').remove(model);
coll && coll.remove(model);
setTimeout(() => this.remove(), 0);
sel && setTimeout(() => sel.getSelectors().remove(model));
},
/**

17
src/selector_manager/view/ClassTagsView.js

@ -274,16 +274,10 @@ module.exports = Backbone.View.extend({
* @private
*/
renderClasses() {
var fragment = document.createDocumentFragment();
this.collection.each(function(model) {
this.addToClasses(model, fragment);
}, this);
if (this.getClasses())
this.getClasses()
.empty()
.append(fragment);
const frag = document.createDocumentFragment();
const classes = this.getClasses();
this.collection.each(model => this.addToClasses(model, frag));
classes.get(0) && classes.empty().append(frag);
return this;
},
@ -294,8 +288,7 @@ module.exports = Backbone.View.extend({
* @private
*/
getClasses() {
if (!this.$classes)
this.$classes = this.$el.find('#' + this.pfx + 'tags-c');
if (!this.$classes) this.$classes = this.$el.find(`#${this.pfx}tags-c`);
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');
});
test.only('Removing from container removes also from selected component', () => {
test('Removing from container removes also from selected component', () => {
var model = components.add({});
gjs.editor.setSelected(model);
tagEl.addNewTag('test');
@ -105,7 +105,7 @@ module.exports = {
.getClasses()
.find('.tag #close')
.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', () => {

Loading…
Cancel
Save