Skip to content

Commit e65c029

Browse files
Fix multiple top-level conditional styles in runtime version (#284)
1 parent f9b8ebc commit e65c029

File tree

6 files changed

+282
-11
lines changed

6 files changed

+282
-11
lines changed

.changeset/many-dingos-bake.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@vanilla-extract/css': patch
3+
---
4+
5+
Fix multiple top-level conditional styles in runtime version

fixtures/themed/src/styles.css.ts

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,13 @@ export const button = composeStyles(
6565
'"THIS FALLBACK VALUE SHOULD NEVER BE USED"',
6666
),
6767
color: vars.colors.text,
68+
borderRadius: '9999px',
6869
'@media': {
6970
'only screen and (min-width: 500px)': {
70-
borderRadius: '9999px',
71+
padding: vars.space[1],
72+
},
73+
'only screen and (min-width: 1000px)': {
74+
padding: vars.space[2],
7175
},
7276
},
7377
selectors: {

packages/css/src/conditionalRulesets.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -182,22 +182,24 @@ export class ConditionalRuleset {
182182
});
183183
}
184184

185-
renderToObj() {
185+
renderToArray() {
186186
// Sort rulesets according to required rule order
187187
this.sort();
188188

189-
const target: any = {};
189+
const arr: any = [];
190190

191191
for (const { query, rules, children } of this.ruleset) {
192-
target[query] = {};
192+
const selectors: any = {};
193193

194194
for (const rule of rules) {
195-
target[query][rule.selector] = rule.rule;
195+
selectors[rule.selector] = rule.rule;
196196
}
197197

198-
Object.assign(target[query], children.renderToObj());
198+
Object.assign(selectors, ...children.renderToArray());
199+
200+
arr.push({ [query]: selectors });
199201
}
200202

201-
return target;
203+
return arr;
202204
}
203205
}

packages/css/src/transformCss.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,9 @@ class Stylesheet {
407407

408408
// Render conditional rules
409409
for (const conditionalRuleset of this.conditionalRulesets) {
410-
css.push(renderCss(conditionalRuleset.renderToObj()));
410+
for (const conditionalRule of conditionalRuleset.renderToArray()) {
411+
css.push(renderCss(conditionalRule));
412+
}
411413
}
412414

413415
return css.filter(Boolean);

0 commit comments

Comments
 (0)