From 40e0e338835950a9b8fb407b59d9342edf3b8ddf Mon Sep 17 00:00:00 2001 From: Paolo Ricciuti Date: Thu, 29 May 2025 00:33:40 +0200 Subject: [PATCH] feat: ssr select value (#16017) * feat: ssr select value * fix: adjust test output * minor aesthetic OCD tweak - the normalizer takes care of this * fix: handle implicit values * chore: implicit value test * fix: deal with spreads on select AND option * fix: spreading * chore: add test for cross component * fix: test * chore: add failing test * fix: runtime valueless option selection * tweak * fix: snapshots * fix (options are erroneously being marked as valueless * simplify a bit (pass callback direct to valueless_option) * tweak * tweak ("execute the child" is the sort of thing that gets you visited by the FBI) * lint * changeset --------- Co-authored-by: Rich Harris --- .changeset/new-turkeys-exercise.md | 5 + .../server/visitors/RegularElement.js | 100 ++++++++++++++++-- .../server/visitors/shared/element.js | 85 ++++++++++++--- packages/svelte/src/internal/server/index.js | 27 +++++ .../svelte/src/internal/server/payload.js | 1 + .../samples/binding-circular/_config.js | 4 +- .../samples/binding-indirect/_config.js | 31 +++++- .../_config.js | 20 +++- .../binding-select-in-each-block/_config.js | 22 +++- .../_config.js | 2 +- .../binding-select-initial-value/_config.js | 20 +++- .../samples/binding-select/_config.js | 22 +++- .../samples/select-in-each/_config.js | 23 ++-- .../samples/bindings-form-reset/main.svelte | 8 +- .../select-value-component/Option.svelte | 5 + .../select-value-component/_expected.html | 1 + .../select-value-component/main.svelte | 8 ++ .../_expected.html | 1 + .../main.svelte | 13 +++ .../_expected.html | 1 + .../select-value-implicit-value/main.svelte | 5 + .../samples/select-value/_expected.html | 1 + .../samples/select-value/main.svelte | 5 + .../_expected/server/index.svelte.js | 2 +- 24 files changed, 351 insertions(+), 61 deletions(-) create mode 100644 .changeset/new-turkeys-exercise.md create mode 100644 packages/svelte/tests/server-side-rendering/samples/select-value-component/Option.svelte create mode 100644 packages/svelte/tests/server-side-rendering/samples/select-value-component/_expected.html create mode 100644 packages/svelte/tests/server-side-rendering/samples/select-value-component/main.svelte create mode 100644 packages/svelte/tests/server-side-rendering/samples/select-value-implicit-value-complex/_expected.html create mode 100644 packages/svelte/tests/server-side-rendering/samples/select-value-implicit-value-complex/main.svelte create mode 100644 packages/svelte/tests/server-side-rendering/samples/select-value-implicit-value/_expected.html create mode 100644 packages/svelte/tests/server-side-rendering/samples/select-value-implicit-value/main.svelte create mode 100644 packages/svelte/tests/server-side-rendering/samples/select-value/_expected.html create mode 100644 packages/svelte/tests/server-side-rendering/samples/select-value/main.svelte diff --git a/.changeset/new-turkeys-exercise.md b/.changeset/new-turkeys-exercise.md new file mode 100644 index 0000000000..d00a5dd832 --- /dev/null +++ b/.changeset/new-turkeys-exercise.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: correctly mark