diff --git a/documentation/blog/2023-09-20-runes.md b/documentation/blog/2023-09-20-runes.md index cb72feda067a..e5139f1e13c3 100644 --- a/documentation/blog/2023-09-20-runes.md +++ b/documentation/blog/2023-09-20-runes.md @@ -8,6 +8,7 @@ authorURL: / In 2019, Svelte 3 turned JavaScript into a [reactive language](/blog/svelte-3-rethinking-reactivity). Svelte is a web UI framework that uses a compiler to turn declarative component code like this... ```svelte + @@ -143,6 +151,8 @@ export function createCounter() { ``` +> Outside `.svelte` components, runes can only be used in `.svelte.js` and `.svelte.ts` modules. + Note that we're using a [get property](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get) in the returned object, so that `counter.count` always refers to the current value rather than the value at the time the function was called. ## Runtime reactivity diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index 159c15d24e84..c2fa7111b8ee 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte +## 4.2.17 + +### Patch Changes + +- fix: correctly handle falsy values of style directives in SSR mode ([#11584](https://github.com/sveltejs/svelte/pull/11584)) + ## 4.2.16 ### Patch Changes diff --git a/packages/svelte/package.json b/packages/svelte/package.json index b3d800de615b..d48530137592 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "4.2.16", + "version": "4.2.17", "description": "Cybernetically enhanced web apps", "type": "module", "module": "src/runtime/index.js", diff --git a/packages/svelte/src/runtime/internal/ssr.js b/packages/svelte/src/runtime/internal/ssr.js index 85d6f443df44..1917f0cfbc69 100644 --- a/packages/svelte/src/runtime/internal/ssr.js +++ b/packages/svelte/src/runtime/internal/ssr.js @@ -193,7 +193,7 @@ export function add_classes(classes) { /** @returns {string} */ function style_object_to_string(style_object) { return Object.keys(style_object) - .filter((key) => style_object[key]) + .filter((key) => style_object[key] != null && style_object[key] !== '') .map((key) => `${key}: ${escape_attribute_value(style_object[key])};`) .join(' '); } diff --git a/packages/svelte/src/shared/version.js b/packages/svelte/src/shared/version.js index 2fc7259808cf..067fc853a2c2 100644 --- a/packages/svelte/src/shared/version.js +++ b/packages/svelte/src/shared/version.js @@ -6,5 +6,5 @@ * https://svelte.dev/docs/svelte-compiler#svelte-version * @type {string} */ -export const VERSION = '4.2.16'; +export const VERSION = '4.2.17'; export const PUBLIC_VERSION = '4'; diff --git a/packages/svelte/test/runtime/samples/inline-style-directive-falsy-value/_config.js b/packages/svelte/test/runtime/samples/inline-style-directive-falsy-value/_config.js new file mode 100644 index 000000000000..695b63f584ed --- /dev/null +++ b/packages/svelte/test/runtime/samples/inline-style-directive-falsy-value/_config.js @@ -0,0 +1,9 @@ +export default { + html: ` +

+

+

+

+

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

+

+

+

+