diff --git a/src/generators/extractSelectors.ts b/src/generators/extractSelectors.ts index 86222438b3..7dbf7b27ca 100644 --- a/src/generators/extractSelectors.ts +++ b/src/generators/extractSelectors.ts @@ -74,6 +74,7 @@ function selectorAppliesTo(parts: Node[], node: Node, stack: Node[]): boolean { } else if (part.type === 'TypeSelector') { + if (part.name === '*') return true; if (node.name !== part.name) return false; } diff --git a/src/generators/shared/processCss.ts b/src/generators/shared/processCss.ts index 77c1d4a420..15719e7b8f 100644 --- a/src/generators/shared/processCss.ts +++ b/src/generators/shared/processCss.ts @@ -44,7 +44,12 @@ export default function processCss( const child = block[i]; if (child.type === 'PseudoElementSelector' || child.type === 'PseudoClassSelector') continue; - code.appendLeft(child.end, attr); + if (child.type === 'TypeSelector' && child.name === '*') { + code.overwrite(child.start, child.end, attr); + } else { + code.appendLeft(child.end, attr); + } + return; } } @@ -64,7 +69,7 @@ export default function processCss( if (firstToken.type === 'TypeSelector') { const insert = firstToken.end - offset; - const head = css.slice(start, insert); + const head = firstToken.name === '*' ? css.slice(firstToken.end - offset, insert) : css.slice(start, insert); const tail = css.slice(insert, end); transformed = `${head}${attr}${tail}, ${attr} ${selectorString}`; diff --git a/test/css/samples/cascade-false-universal-selector/_config.js b/test/css/samples/cascade-false-universal-selector/_config.js new file mode 100644 index 0000000000..b37866f9b6 --- /dev/null +++ b/test/css/samples/cascade-false-universal-selector/_config.js @@ -0,0 +1,3 @@ +export default { + cascade: false +}; \ No newline at end of file diff --git a/test/css/samples/cascade-false-universal-selector/expected.css b/test/css/samples/cascade-false-universal-selector/expected.css new file mode 100644 index 0000000000..bb9155feb0 --- /dev/null +++ b/test/css/samples/cascade-false-universal-selector/expected.css @@ -0,0 +1,4 @@ + + [svelte-2950902288] { + color: red; + } diff --git a/test/css/samples/cascade-false-universal-selector/expected.html b/test/css/samples/cascade-false-universal-selector/expected.html new file mode 100644 index 0000000000..732e063d51 --- /dev/null +++ b/test/css/samples/cascade-false-universal-selector/expected.html @@ -0,0 +1 @@ +
\ No newline at end of file diff --git a/test/css/samples/cascade-false-universal-selector/input.html b/test/css/samples/cascade-false-universal-selector/input.html new file mode 100644 index 0000000000..36a65e23e6 --- /dev/null +++ b/test/css/samples/cascade-false-universal-selector/input.html @@ -0,0 +1,7 @@ +
+ + \ No newline at end of file diff --git a/test/css/samples/universal-selector/expected.css b/test/css/samples/universal-selector/expected.css new file mode 100644 index 0000000000..53f57d9083 --- /dev/null +++ b/test/css/samples/universal-selector/expected.css @@ -0,0 +1,4 @@ + + [svelte-2950902288], [svelte-2950902288] * { + color: red; + } diff --git a/test/css/samples/universal-selector/input.html b/test/css/samples/universal-selector/input.html new file mode 100644 index 0000000000..36a65e23e6 --- /dev/null +++ b/test/css/samples/universal-selector/input.html @@ -0,0 +1,7 @@ +
+ + \ No newline at end of file