Skip to content

Commit 4ca8331

Browse files
committed
Fix deep
1 parent c3d77f4 commit 4ca8331

File tree

3 files changed

+44
-8
lines changed

3 files changed

+44
-8
lines changed

src/Utils/StyleBuilder.php

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,22 @@ public function compile(?DOMElement $styleElement, ?string $path = null): ?strin
107107
if (++$count < $selectorsCount) {
108108
$selector .= ',';
109109
}
110-
$regex = strpos($selector, '::v-deep') !== false
111-
? '/((?:^|\s)\s*[^@\s][a-z0-9-_]+?)((?::{1,2}[a-z-]+)?\s*)(?:::v-deep)/i'
112-
: '/((?:^|\s)\s*[^@\s][a-z0-9-_]+?)((?::{1,2}[a-z-]+)?\s*(?:[,{]|$))/i';
113-
$style = str_replace(
114-
$selector,
115-
preg_replace($regex, '$1[' . $this->scopedAttribute . ']$2', $selector),
116-
$style
117-
);
110+
if (preg_match('/^[\s}]*::v-deep/', $selector)) {
111+
$style = str_replace(
112+
$selector,
113+
str_replace('::v-deep', '[' . $this->scopedAttribute . ']', $selector),
114+
$style
115+
);
116+
} else {
117+
$regex = strpos($selector, '::v-deep') !== false
118+
? '/((?:^|\s)\s*[^@\s][a-z0-9-_]+?)((?::{1,2}[a-z-]+)?\s*)(?:::v-deep)/i'
119+
: '/((?:^|\s)\s*[^@\s][a-z0-9-_]+?)((?::{1,2}[a-z-]+)?\s*(?:[,{]|$))/i';
120+
$style = str_replace(
121+
$selector,
122+
preg_replace($regex, '$1[' . $this->scopedAttribute . ']$2', $selector),
123+
$style
124+
);
125+
}
118126
}
119127
}
120128
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<style>.foo[data-v-a75773abe77e60d5eec0d774b5e2deab] { color: black;}[data-v-a75773abe77e60d5eec0d774b5e2deab] .foo__bar { color: purple;}</style>
2+
<div class="foo {{ class|default('') }}" data-v-a75773abe77e60d5eec0d774b5e2deab {{ dataScopedStyleAttribute|default('') }} style="{{ style|default('') }}">
3+
<span class="foo__bar" data-v-a75773abe77e60d5eec0d774b5e2deab>
4+
test
5+
</span>
6+
</div>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<template>
2+
<div class="foo">
3+
<span class="foo__bar">
4+
test
5+
</span>
6+
</div>
7+
</template>
8+
9+
<style lang="scss" scoped>
10+
.foo {
11+
color: black;
12+
13+
/deep/ &__bar {
14+
color: purple;
15+
}
16+
}
17+
</style>
18+
19+
<script>
20+
export default {
21+
}
22+
</script>

0 commit comments

Comments
 (0)