mirror of https://github.com/vuejs/core.git
parent
d58d133b1c
commit
54a6afa75a
|
@ -429,4 +429,23 @@ describe('SFC style preprocessors', () => {
|
|||
|
||||
expect(res.errors.length).toBe(0)
|
||||
})
|
||||
|
||||
test('should mount scope on correct selector when have universal selector', () => {
|
||||
expect(compileScoped(`* { color: red; }`)).toMatchInlineSnapshot(`
|
||||
"[data-v-test] { color: red;
|
||||
}"
|
||||
`)
|
||||
expect(compileScoped('* .foo { color: red; }')).toMatchInlineSnapshot(`
|
||||
".foo[data-v-test] { color: red;
|
||||
}"
|
||||
`)
|
||||
expect(compileScoped(`*.foo { color: red; }`)).toMatchInlineSnapshot(`
|
||||
".foo[data-v-test] { color: red;
|
||||
}"
|
||||
`)
|
||||
expect(compileScoped(`.foo * { color: red; }`)).toMatchInlineSnapshot(`
|
||||
".foo[data-v-test] * { color: red;
|
||||
}"
|
||||
`)
|
||||
})
|
||||
})
|
||||
|
|
|
@ -170,6 +170,32 @@ function rewriteSelector(
|
|||
}
|
||||
}
|
||||
|
||||
if (n.type === 'universal') {
|
||||
const prev = selector.at(selector.index(n) - 1)
|
||||
const next = selector.at(selector.index(n) + 1)
|
||||
// * ... {}
|
||||
if (!prev) {
|
||||
// * .foo {} -> .foo[xxxxxxx] {}
|
||||
if (next) {
|
||||
if (next.type === 'combinator' && next.value === ' ') {
|
||||
selector.removeChild(next)
|
||||
}
|
||||
selector.removeChild(n)
|
||||
return
|
||||
} else {
|
||||
// * {} -> [xxxxxxx] {}
|
||||
node = selectorParser.combinator({
|
||||
value: '',
|
||||
})
|
||||
selector.insertBefore(n, node)
|
||||
selector.removeChild(n)
|
||||
return false
|
||||
}
|
||||
}
|
||||
// .foo * -> .foo[xxxxxxx] *
|
||||
if (node) return
|
||||
}
|
||||
|
||||
if (
|
||||
(n.type !== 'pseudo' && n.type !== 'combinator') ||
|
||||
(n.type === 'pseudo' &&
|
||||
|
|
Loading…
Reference in New Issue