[fix] do not collapse whitespace-only css vars (#7303)

Fixes #7152, see also #7288

--foo:; used to be an invalid CSS custom property value, while -foo: ; was valid. By collapsing the whitespace in these declaration values, we were breaking scenarios where an empty custom property was desired. The spec was updated to trim whitespace and treat these values identically, but Chromium browsers still treat --foo; as invalid. This was recently fixed and will be released in Chrome 99, but this would still be a good fix to maintain backwards compatibility.
pull/7336/head
Geoff Rich 3 years ago committed by GitHub
parent 2c629bcc0c
commit 0a3353b671
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -145,6 +145,10 @@ class Declaration {
? this.node.value.children[0]
: this.node.value;
// Don't minify whitespace in custom properties, since some browsers (Chromium < 99)
// treat --foo: ; and --foo:; differently
if (first.type === 'Raw' && /^\s+$/.test(first.value)) return;
let start = first.start;
while (/\s/.test(code.original[start])) start += 1;

@ -1 +1 @@
:root{--root-test:20}div.svelte-xyz{--test:10}
:root{--root-test:20}div.svelte-xyz{--test:10}div.svelte-xyz{--foo: ;--bar: !important}

@ -7,4 +7,9 @@
div {
--test: 10;
}
div {
--foo: ;
--bar: !important;
}
</style>

Loading…
Cancel
Save