Browse Source

Skip rules without selectors in Styles.getParentRules

pull/5716/head
Artur Arseniev 3 years ago
parent
commit
d64f7f0980
  1. 10
      src/style_manager/index.ts
  2. 6
      test/specs/style_manager/index.ts

10
src/style_manager/index.ts

@ -601,10 +601,12 @@ export default class StyleManager extends ItemManagerModule<
let rules: CssRule[] = []; let rules: CssRule[] = [];
const rulesBySelectors = (values: string[]) => { const rulesBySelectors = (values: string[]) => {
return cssC.getRules().filter(rule => { return !values.length
const rSels = rule.getSelectors().map(s => s.getFullName()); ? []
return rSels.every(rSel => values.indexOf(rSel) >= 0); : cssC.getRules().filter(rule => {
}); const rSels = rule.getSelectors().map(s => s.getFullName());
return !!rSels.length && rSels.every(rSel => values.indexOf(rSel) >= 0);
});
}; };
// Componente related rule // Componente related rule

6
test/specs/style_manager/index.ts

@ -213,11 +213,15 @@ describe('StyleManager', () => {
test('Mixed classes', () => { test('Mixed classes', () => {
const cmp = domc.addComponent('<div class="cls1 cls2"></div>'); const cmp = domc.addComponent('<div class="cls1 cls2"></div>');
const [rule1, rule2] = cssc.addRules(` const [a, b, rule1, rule2] = cssc.addRules(`
h1 { color: white; }
h1 .test { color: black; }
.cls1 { color: red; } .cls1 { color: red; }
.cls1.cls2 { color: blue; } .cls1.cls2 { color: blue; }
.cls2 { color: green; } .cls2 { color: green; }
.cls1.cls3 { color: green; } .cls1.cls3 { color: green; }
h2 { color: white; }
h2 .test { color: black; }
`); `);
em.setSelected(cmp); em.setSelected(cmp);
obj.__upSel(); obj.__upSel();

Loading…
Cancel
Save