Browse Source

Update Css TS

pull/4830/head
Artur Arseniev 4 years ago
parent
commit
de1cdc2e3c
  1. 13
      src/css_composer/index.ts
  2. 53
      test/specs/dom_components/index.ts

13
src/css_composer/index.ts

@ -307,13 +307,12 @@ export default class CssComposer extends ItemManagerModule<CssComposerConfig & {
const selector = sm.get(node.selectors); const selector = sm.get(node.selectors);
const { state, selectorsAdd } = node; const { state, selectorsAdd } = node;
const { atRuleType, atRuleParams } = opts; const { atRuleType, atRuleParams } = opts;
return ( return selector
selector && ? this.get(selector, state, atRuleParams, {
this.get(selector, state, atRuleParams, { selectorsAdd,
selectorsAdd, atRuleType,
atRuleType, })
}) : undefined;
);
} }
/** /**

53
test/specs/dom_components/index.ts

@ -1,7 +1,7 @@
import DomComponents from '../../../src/dom_components'; import DomComponents from '../../../src/dom_components';
import Components from '../../../src/dom_components/model/Components'; import Components from '../../../src/dom_components/model/Components';
import EditorModel from '../../../src/editor/model/Editor'; import EditorModel from '../../../src/editor/model/Editor';
import Editor from '../../../src/editor/model/Editor'; import Editor from '../../../src/editor';
import utils from './../../test_utils.js'; import utils from './../../test_utils.js';
describe('DOM Components', () => { describe('DOM Components', () => {
@ -46,16 +46,16 @@ describe('DOM Components', () => {
}; };
beforeEach(() => { beforeEach(() => {
em = new Editor({ const editor = new Editor({
avoidInlineStyle: true, avoidInlineStyle: true,
}); });
em = editor.getModel();
em.loadOnStart(); em.loadOnStart();
config = { config = {
em, em,
storeWrapper: 1, storeWrapper: 1,
}; };
obj = em.get('DomComponents'); obj = em.Components;
// obj = new DomComponents(em).init(config);
}); });
afterEach(() => { afterEach(() => {
@ -274,9 +274,50 @@ describe('DOM Components', () => {
}); });
}); });
describe('Custom components with styles', () => { describe.only('Custom components with styles', () => {
const cmpId = 'cmp-with-style';
beforeEach(() => { beforeEach(() => {
em.Components; obj.addType(cmpId, {
model: {
defaults: {
attributes: { class: cmpId },
styles: `
.${cmpId} {
color: red;
}
`,
},
},
});
});
test('Custom style properly added', () => {
const cmp = obj.addComponent({ type: cmpId });
expect(cmp.is(cmpId)).toBe(true);
const rule = em.Css.getRule(`.${cmpId}`);
expect(rule?.getStyle()).toEqual({ color: 'red' });
});
test('Clean custom style when the related component is removed', () => {
const cmp = obj.addComponent({ type: cmpId });
expect(obj.getComponents().length).toBe(1);
expect(em.Css.getAll().length).toBe(1);
cmp.remove();
expect(obj.getComponents().length).toBe(0);
expect(em.Css.getAll().length).toBe(0);
});
test('Custom style is not updated if already exists', () => {
obj.addComponent({ type: cmpId });
const rule = em.Css.getRule(`.${cmpId}`)!;
const newStyle = { color: 'blue', 'font-size': '20px' };
rule.addStyle(newStyle);
expect(rule.getStyle()).toEqual(newStyle);
obj.addComponent({ type: cmpId });
expect(obj.getComponents().length).toBe(2);
expect(em.Css.getAll().length).toBe(1);
expect(rule.getStyle()).toEqual(newStyle);
}); });
}); });
}); });

Loading…
Cancel
Save