Skip to content

Commit 30bcc3d

Browse files
authored
fix(transformer-directives): @apply in grouping selectors (#4895)
1 parent 1bcc901 commit 30bcc3d

2 files changed

Lines changed: 26 additions & 2 deletions

File tree

packages-presets/transformer-directives/src/apply.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,10 @@ export async function parseApply({ code, uno, applyVariable }: TransformerDirect
8585
if (parent || (selectorOrGroup && selectorOrGroup !== '.\\-') || meta?.noMerge) {
8686
let newSelector = generate(node.prelude)
8787
const className = code.slice(node.prelude.loc!.start.offset, node.prelude.loc!.end.offset)
88-
if (selectorOrGroup && selectorOrGroup !== '.\\-') {
88+
if (meta?.noMerge) {
89+
newSelector = _selector!
90+
}
91+
else if (selectorOrGroup && selectorOrGroup !== '.\\-') {
8992
// use rule context since it could be a selector(.foo) or a selector group(.foo, .bar)
9093
const ruleAST = parse(`${selectorOrGroup}{}`, {
9194
context: 'rule',
@@ -128,7 +131,6 @@ export async function parseApply({ code, uno, applyVariable }: TransformerDirect
128131
code.appendRight(childNode!.loc!.end.offset + semicolonOffset, body)
129132
}
130133
}
131-
// todo: after transformered remove empty css like `selector{}`
132134
code.remove(
133135
childNode!.loc!.start.offset,
134136
childNode!.loc!.end.offset + semicolonOffset,

test/transformer-directives.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1492,6 +1492,28 @@ describe('wind4', () => {
14921492
`)
14931493
})
14941494

1495+
it('grouping selectors', async () => {
1496+
const result = await transform(
1497+
`.btn:focus-visible, .btn:hover {
1498+
@apply outline;
1499+
}`,
1500+
)
1501+
await expect(result)
1502+
.toMatchInlineSnapshot(`
1503+
".btn:focus-visible,
1504+
.btn:hover {
1505+
outline-style: var(--un-outline-style);
1506+
outline-width: 1px;
1507+
}
1508+
@property --un-outline-style {
1509+
syntax: "*";
1510+
inherits: false;
1511+
initial-value: solid;
1512+
}
1513+
"
1514+
`)
1515+
})
1516+
14951517
it('theme()', async () => {
14961518
const result = await transform(
14971519
`.btn {

0 commit comments

Comments
 (0)