`)
})
+ test(':is() and :where() with multiple selectors', () => {
+ expect(compileScoped(`:is(.foo) { color: red; }`)).toMatchInlineSnapshot(`
+ ":is(.foo[data-v-test]) { color: red;
+ }"
+ `)
+ expect(compileScoped(`:where(.foo, .bar) { color: red; }`))
+ .toMatchInlineSnapshot(`
+ ":where(.foo[data-v-test], .bar[data-v-test]) { color: red;
+ }"
+ `)
+ expect(compileScoped(`:is(.foo, .bar) div { color: red; }`))
+ .toMatchInlineSnapshot(`
+ ":is(.foo, .bar) div[data-v-test] { color: red;
+ }"
+ `)
+ })
+
test('media query', () => {
expect(compileScoped(`@media print { .foo { color: red }}`))
.toMatchInlineSnapshot(`
}
}
- if (n.type !== 'pseudo' && n.type !== 'combinator') {
+ if (
+ (n.type !== 'pseudo' && n.type !== 'combinator') ||
+ (n.type === 'pseudo' && (n.value === ':is' || n.value === ':where'))
+ ) {
node = n
}
+ })
- if (n.type === 'pseudo' && (n.value === ':is' || n.value === ':where')) {
- rewriteSelector(id, n.nodes[0], selectorRoot, slotted)
+ if (node) {
+ const { type, value } = node as selectorParser.Node
+ if (type === 'pseudo' && (value === ':is' || value === ':where')) {
+ ;(node as selectorParser.Pseudo).nodes.forEach(value =>
+ rewriteSelector(id, value, selectorRoot, slotted)
+ )
shouldInject = false
}
- })
+ }
if (node) {
;(node as selectorParser.Node).spaces.after = ''