Compare commits

...

4 Commits

Author SHA1 Message Date
edison 2deaa97cce
Merge bfd11af474 into c16f8a94c7 2025-10-07 16:04:54 +02:00
王二狗 c16f8a94c7
chore: fix typo. (#13948)
ci / test (push) Has been cancelled Details
ci / continuous-release (push) Has been cancelled Details
size data / upload (push) Has been cancelled Details
2025-10-04 09:46:30 +08:00
daiwei bfd11af474 chore: update 2025-04-05 10:51:50 +08:00
daiwei 6f0f944d83 fix(compile-sfc): auto add nesting combinators for ::v-deep in scoped CSS 2025-04-05 10:27:27 +08:00
3 changed files with 35 additions and 1 deletions

View File

@ -158,6 +158,24 @@ color: red
} }
}" }"
`) `)
expect(compileScoped(`.foo { :deep(.bar) { color: red; }}`))
.toMatchInlineSnapshot(`
".foo {
&[data-v-test] .bar { color: red;
}}"
`)
expect(compileScoped(`.foo { :deep(.bar),:deep(.baz) { color: red; }}`))
.toMatchInlineSnapshot(`
".foo {
&[data-v-test] .bar,&[data-v-test] .baz { color: red;
}}"
`)
expect(compileScoped(`.foo { & :deep(.bar) { color: red; }}`))
.toMatchInlineSnapshot(`
".foo {
&[data-v-test] .bar { color: red;
}}"
`)
}) })
test('::v-slotted', () => { test('::v-slotted', () => {

View File

@ -131,6 +131,22 @@ function rewriteSelector(
selector.insertAfter(last, ss) selector.insertAfter(last, ss)
last = ss last = ss
}) })
// if css nesting is used, we need to insert a nesting selector
// before the ::v-deep's inner selector.
// .foo { ::v-deep(.bar) } -> .foo { &[xxxxxxx] .bar }
const isNestedRule = rule.parent && rule.parent.type === 'rule'
if (isNestedRule && n.parent) {
const hasNestingSelector = n.parent.nodes
.slice(0, n.parent.index(n))
.some(node => node.type === 'nesting')
if (!hasNestingSelector) {
node = selectorParser.nesting()
selector.insertBefore(n, node)
}
}
// insert a space combinator before if it doesn't already have one // insert a space combinator before if it doesn't already have one
const prev = selector.at(selector.index(n) - 1) const prev = selector.at(selector.index(n) - 1)
if (!prev || !isSpaceCombinator(prev)) { if (!prev || !isSpaceCombinator(prev)) {

View File

@ -311,7 +311,7 @@ function prepareDeps(sub: Subscriber) {
} }
function cleanupDeps(sub: Subscriber) { function cleanupDeps(sub: Subscriber) {
// Cleanup unsued deps // Cleanup unused deps
let head let head
let tail = sub.depsTail let tail = sub.depsTail
let link = tail let link = tail