Skip to content

Commit 0067874

Browse files
committed
feat: add support for base specifier
1 parent d36df20 commit 0067874

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed

src/__tests__/index-test.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,20 @@ Label {
4343
color: black;
4444
}
4545
}
46+
}
47+
`, {requestCSS: 'react-css-components?css!styles.react.css'});
48+
console.log('--- js');
49+
console.log(js);
50+
console.log('--- css');
51+
console.log(css);
52+
});
53+
54+
it('renders react components based on specified DOM component', function() {
55+
let {js, css} = render(`
56+
57+
Label {
58+
base: span;
59+
color: red;
4660
}
4761
`, {requestCSS: 'react-css-components?css!styles.react.css'});
4862
console.log('--- js');

src/index.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ function renderToCSS(source: string, config: RenderConfig): string {
3838
let root = postcss.parse(source);
3939
root = transformVariants(root);
4040
root.walkRules(node => {
41+
node.eachDecl(decl => {
42+
if (decl.prop === 'base') {
43+
decl.remove();
44+
}
45+
});
4146
let cssNode = node.clone();
4247
cssNode.selector = `:local(.${node.selector})`;
4348
node.replaceWith(cssNode);
@@ -48,11 +53,17 @@ function renderToCSS(source: string, config: RenderConfig): string {
4853
function renderToJS(source: string, config: RenderConfig): string {
4954
let root = postcss.parse(source);
5055
let statements = [];
56+
let component = 'div';
5157
root.walkRules(node => {
5258
if (isVariant(node)) {
5359
return;
5460
}
55-
statements.push(exportComponent(node.selector, 'div', node.selector));
61+
node.eachDecl(decl => {
62+
if (decl.prop === 'base') {
63+
component = decl.value;
64+
}
65+
});
66+
statements.push(exportComponent(node.selector, component, node.selector));
5667
});
5768
statements.unshift(
5869
types.importDeclaration(

0 commit comments

Comments
 (0)