diff --git a/.changeset/good-roses-argue.md b/.changeset/good-roses-argue.md new file mode 100644 index 0000000000..2191aeb6ef --- /dev/null +++ b/.changeset/good-roses-argue.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: correctly handle falsy values of style directives in SSR mode diff --git a/packages/svelte/src/internal/server/index.js b/packages/svelte/src/internal/server/index.js index 6c2a2b5791..a1eaab0f97 100644 --- a/packages/svelte/src/internal/server/index.js +++ b/packages/svelte/src/internal/server/index.js @@ -354,7 +354,7 @@ export function stringify(value) { /** @param {Record} style_object */ function style_object_to_string(style_object) { return Object.keys(style_object) - .filter(/** @param {any} key */ (key) => style_object[key]) + .filter(/** @param {any} key */ (key) => style_object[key] != null && style_object[key] !== '') .map(/** @param {any} key */ (key) => `${key}: ${escape_html(style_object[key], true)};`) .join(' '); } diff --git a/packages/svelte/tests/runtime-legacy/samples/inline-style-directive-falsy-value/_config.js b/packages/svelte/tests/runtime-legacy/samples/inline-style-directive-falsy-value/_config.js new file mode 100644 index 0000000000..bb7f4518d9 --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/inline-style-directive-falsy-value/_config.js @@ -0,0 +1,11 @@ +import { test } from '../../test'; + +export default test({ + html: ` +

+

+

+

+

+ ` +}); diff --git a/packages/svelte/tests/runtime-legacy/samples/inline-style-directive-falsy-value/main.svelte b/packages/svelte/tests/runtime-legacy/samples/inline-style-directive-falsy-value/main.svelte new file mode 100644 index 0000000000..bed3e7c0b5 --- /dev/null +++ b/packages/svelte/tests/runtime-legacy/samples/inline-style-directive-falsy-value/main.svelte @@ -0,0 +1,5 @@ +

+

+

+

+