From 42ffe258c58a8bc8e5a41facaa339f8072f3339e Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Mon, 24 Feb 2025 23:43:39 +0100 Subject: [PATCH] fix: allow double hyphen css selector names --- .changeset/fast-pants-decide.md | 5 +++++ packages/svelte/src/compiler/phases/1-parse/read/style.js | 4 ++-- .../svelte/tests/css/samples/double-hyphen/expected.css | 4 ++++ .../svelte/tests/css/samples/double-hyphen/input.svelte | 7 +++++++ 4 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 .changeset/fast-pants-decide.md create mode 100644 packages/svelte/tests/css/samples/double-hyphen/expected.css create mode 100644 packages/svelte/tests/css/samples/double-hyphen/input.svelte diff --git a/.changeset/fast-pants-decide.md b/.changeset/fast-pants-decide.md new file mode 100644 index 000000000000..396b80c0e049 --- /dev/null +++ b/.changeset/fast-pants-decide.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: allow double hyphen css selector names diff --git a/packages/svelte/src/compiler/phases/1-parse/read/style.js b/packages/svelte/src/compiler/phases/1-parse/read/style.js index 29e8a0e54143..f8c39f1b1dd1 100644 --- a/packages/svelte/src/compiler/phases/1-parse/read/style.js +++ b/packages/svelte/src/compiler/phases/1-parse/read/style.js @@ -566,7 +566,7 @@ function read_attribute_value(parser) { } /** - * https://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + * https://www.w3.org/TR/css-syntax-3/#ident-token-diagram * @param {Parser} parser */ function read_identifier(parser) { @@ -574,7 +574,7 @@ function read_identifier(parser) { let identifier = ''; - if (parser.match('--') || parser.match_regex(REGEX_LEADING_HYPHEN_OR_DIGIT)) { + if (parser.match_regex(REGEX_LEADING_HYPHEN_OR_DIGIT)) { e.css_expected_identifier(start); } diff --git a/packages/svelte/tests/css/samples/double-hyphen/expected.css b/packages/svelte/tests/css/samples/double-hyphen/expected.css new file mode 100644 index 000000000000..ab4921b657ea --- /dev/null +++ b/packages/svelte/tests/css/samples/double-hyphen/expected.css @@ -0,0 +1,4 @@ + + .--foo.svelte-xyz { + color: red; + } diff --git a/packages/svelte/tests/css/samples/double-hyphen/input.svelte b/packages/svelte/tests/css/samples/double-hyphen/input.svelte new file mode 100644 index 000000000000..e2907f9344a4 --- /dev/null +++ b/packages/svelte/tests/css/samples/double-hyphen/input.svelte @@ -0,0 +1,7 @@ +
+ + \ No newline at end of file