Browse Source

Take in account singleAtRule in CSS generator

pull/1446/head
Artur Arseniev 8 years ago
parent
commit
1a4ecd6e01
  1. 13
      src/code_manager/model/CssGenerator.js
  2. 2
      src/parser/model/ParserCss.js
  3. 9
      test/specs/grapesjs/index.js

13
src/code_manager/model/CssGenerator.js

@ -72,9 +72,16 @@ module.exports = require('backbone').Model.extend({
for (let atRule in atRules) { for (let atRule in atRules) {
let rulesStr = ''; let rulesStr = '';
const mRules = atRules[atRule]; const mRules = atRules[atRule];
mRules.forEach(
rule => (rulesStr += this.buildFromRule(rule, dump, opts)) mRules.forEach(rule => {
); const ruleStr = this.buildFromRule(rule, dump, opts);
if (rule.get('singleAtRule')) {
code += `${atRule}{${ruleStr}}`;
} else {
rulesStr += ruleStr;
}
});
if (rulesStr) { if (rulesStr) {
code += `${atRule}{${rulesStr}}`; code += `${atRule}{${rulesStr}}`;

2
src/parser/model/ParserCss.js

@ -13,7 +13,7 @@ module.exports = (config = {}) => ({
parse(str) { parse(str) {
let result = []; let result = [];
const { parserCss, em = {} } = config; const { parserCss, em = {} } = config;
const editor = em && em.get('Editor'); const editor = em && em.get && em.get('Editor');
const nodes = parserCss ? parserCss(str, editor) : BrowserCssParser(str); const nodes = parserCss ? parserCss(str, editor) : BrowserCssParser(str);
nodes.forEach(node => (result = result.concat(this.checkNode(node)))); nodes.forEach(node => (result = result.concat(this.checkNode(node))));

9
test/specs/grapesjs/index.js

@ -164,18 +164,19 @@ describe('GrapesJS', () => {
` `
<style> <style>
@font-face { @font-face {
font-family: 'Glyphicons Halflings'; font-family: 'A';
src: url(https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/fonts/glyphicons-halflings-regular.woff2) format('woff2'); src: url('http://a.link') format('woff2');
} }
@font-face { @font-face {
font-family: 'Droid Sans'; font-family: 'B';
src: url(https://fonts.gstatic.com/s/droidsans/v8/SlGVmQWMvZQIdix7AFxXkHNSbRYXags.woff2) format('woff2'); src: url('http://b.link') format('woff2');
} }
</style>` + htmlString; </style>` + htmlString;
const editor = obj.init(config); const editor = obj.init(config);
const css = editor.getCss(); const css = editor.getCss();
const styles = editor.getStyle(); const styles = editor.getStyle();
expect(styles.length).toEqual(2); expect(styles.length).toEqual(2);
expect((css.match(/@font-face/g) || []).length).toEqual(2);
}); });
test('Set components as HTML', () => { test('Set components as HTML', () => {

Loading…
Cancel
Save