Skip to content

Commit

Permalink
feat: implement ::v-deep as a shadow piercing combinator (#54)
Browse files Browse the repository at this point in the history
  • Loading branch information
haoqunjiang authored and yyx990803 committed Feb 21, 2019
1 parent cf596f8 commit 8b2c646
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 0 deletions.
8 changes: 8 additions & 0 deletions lib/stylePlugins/scoped.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export default postcss.plugin('add-id', (options: any) => (root: Root) => {
selectors.each((selector: any) => {
let node: any = null

// find the last child node to insert attribute selector
selector.each((n: any) => {
// ">>>" combinator
// and /deep/ alias for >>>, since >>> doesn't work in SASS
Expand All @@ -35,6 +36,13 @@ export default postcss.plugin('add-id', (options: any) => (root: Root) => {
n.spaces.before = n.spaces.after = ''
return false
}

// in newer versions of sass, /deep/ support is also dropped, so add a ::v-deep alias
if (n.type === 'pseudo' && n.value === '::v-deep') {
n.value = n.spaces.before = n.spaces.after = ''
return false
}

if (n.type !== 'pseudo' && n.type !== 'combinator') {
node = n
}
Expand Down
6 changes: 6 additions & 0 deletions test/stylePluginScoped.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ h1 {
.foo div /deep/ .bar {
color: red;
}
.foo span ::v-deep .bar {
color: red;
}
`
})

Expand Down Expand Up @@ -107,6 +111,8 @@ h1 {
expect(style).toContain(`.foo p[v-scope-xxx] .bar {\n color: red;\n}`)
// /deep/ alias for >>>
expect(style).toContain(`.foo div[v-scope-xxx] .bar {\n color: red;\n}`)
// ::-v-deep alias for >>>
expect(style).toContain(`.foo span[v-scope-xxx] .bar {\n color: red;\n}`)
})

test('pseudo element', () => {
Expand Down

2 comments on commit 8b2c646

@G1King
Copy link

@G1King G1King commented on 8b2c646 Sep 30, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice

@Tutao1995
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

还是没得效果

Please sign in to comment.