Browse Source

Updated `SelectorManager.get` method, now it can receive an array of selectors to get

pull/1730/head
Artur Arseniev 7 years ago
parent
commit
ad0efce891
  1. 1
      src/css_composer/index.js
  2. 36
      src/selector_manager/index.js
  3. 2
      test/specs/css_composer/index.js
  4. 20
      test/specs/selector_manager/index.js

1
src/css_composer/index.js

@ -393,7 +393,6 @@ module.exports = () => {
const selector = sm.add(node.selectors);
const rule = this.add(selector, node.state);
rule.setStyle(style, opts);
throw rule.toCSS();
return rule;
},

36
src/selector_manager/index.js

@ -150,6 +150,17 @@ module.exports = config => {
return selector;
},
getSelector(name, type = Selector.TYPE_CLASS) {
if (isId(name)) {
name = name.substr(1);
type = Selector.TYPE_ID;
} else if (isClass(name)) {
name = name.substr(1);
}
return selectors.where({ name, type })[0];
},
/**
* Add a new selector to collection if it's not already exists. Class type is a default one
* @param {String|Array} name Selector/s name
@ -205,18 +216,27 @@ module.exports = config => {
/**
* Get the selector by its name
* @param {String} name Selector name
* @param {String|Array} name Selector name
* @param {String} tyoe Selector type
* @return {Model|null}
* @return {Model|Array}
* @example
* var selector = selectorManager.get('selectorName');
* const selector = selectorManager.get('selectorName');
* // or get an array
* const selectors = selectorManager.get(['class1', 'class2']);
* */
get(name, type = Selector.TYPE_CLASS) {
if (isId(name)) {
name = name.substr(1);
type = Selector.TYPE_ID;
get(name, type) {
if (isArray(name)) {
const result = [];
const selectors = name
.map(item => this.getSelector(item))
.filter(item => item);
selectors.forEach(
item => result.indexOf(item) < 0 && result.push(item)
);
return result;
} else {
return this.getSelector(name, type);
}
return selectors.where({ name, type })[0];
},
/**

2
test/specs/css_composer/index.js

@ -210,7 +210,7 @@ describe('Css Composer', () => {
test('Create a simple class-based rule with setRule', () => {
const selector = '.test';
obj.setRule(selector, { color: 'red' });
const result = obj.setRule(selector, { color: 'red' });
expect(obj.getAll().length).toEqual(1);
const rule = obj.getRule(selector);
expect(rule.selectorsToString()).toEqual(selector);

20
test/specs/selector_manager/index.js

@ -7,7 +7,7 @@ var e2e = require('./e2e/ClassManager');
var Editor = require('editor/model/Editor');
describe('SelectorManager', () => {
describe('Main', () => {
describe.only('Main', () => {
var obj;
let em;
@ -80,7 +80,7 @@ describe('SelectorManager', () => {
});
test('Add multiple selectors', () => {
const result = obj.add([
const cls = [
'.test1',
'test1',
'.test2',
@ -89,8 +89,14 @@ describe('SelectorManager', () => {
'test3',
'test3',
'#test3'
]);
];
const result = obj.add(cls);
expect(Array.isArray(result)).toEqual(true);
const concat = obj
.getAll()
.map(item => item.getFullName())
.join('');
expect(concat).toEqual('.test1.test2#test3.test3');
expect(obj.getAll().length).toEqual(4);
expect(
obj
@ -116,6 +122,14 @@ describe('SelectorManager', () => {
.at(3)
.getFullName()
).toEqual('.test3');
expect(obj.get(cls).length).toEqual(4);
expect(
obj
.get(cls)
.map(item => item.getFullName())
.join('')
).toEqual(concat);
});
test('Get selector', () => {

Loading…
Cancel
Save