Browse Source

Add propertyMap on SelectorManager module

This allows to intercept new selectors and add custom properties on them
pull/261/head
Artur Arseniev 9 years ago
parent
commit
a4c67e1237
  1. 3
      index.html
  2. 4
      src/selector_manager/config/config.js
  3. 21
      src/selector_manager/index.js
  4. 19
      src/selector_manager/model/Selector.js

3
index.html

@ -1331,6 +1331,9 @@
editor.on('selector:add', function(model) {
if(model.get('name') == 'row')
console.log('added .row class', model);
if(model.get('name') == 'cell')
console.log('added .cell class', model);
});
editor.render();

4
src/selector_manager/config/config.js

@ -25,12 +25,12 @@ module.exports = {
// // not visible by the user
// propertyMap: {
// '.row, .cell': {
// private: false,
// private: true,
// }
// },
propertyMap: {
'.row, .cell': {
private: false,
private: true,
}
},

21
src/selector_manager/index.js

@ -98,13 +98,28 @@ module.exports = config => {
config: c,
});
selectors.on('add', (model) => {
em.trigger('selector:add', model);
});
selectors.on('add', this.selectorAdded);
return this;
},
selectorAdded(model) {
const em = c.em;
const propertyMap = c.propertyMap;
let props = {};
Object.keys(propertyMap).forEach((selectors) => {
selectors.split(',').forEach((selector) => {
if (selector.trim() == model.getFullName()) {
props = Object.assign(props, propertyMap[selectors]);
}
});
});
model.set(props);
em.trigger('selector:add', model);
},
/**
* Add a new selector to collection if it's not already exists. Class type is a default one
* @param {String} name Selector name

19
src/selector_manager/model/Selector.js

@ -39,4 +39,23 @@ module.exports = Backbone.Model.extend({
return name.replace(/([^a-z0-9\w]+)/gi, '-');
},
/**
* Get full selector name
* @return {string}
*/
getFullName() {
let init = '';
switch (this.get('type')) {
case 'class':
init = '.';
break;
case 'id':
init = '#';
break;
}
return init + this.get('name');
}
});

Loading…
Cancel
Save