From 5e9a205fa796e209c3e74a82202dba6304abb859 Mon Sep 17 00:00:00 2001 From: Theodore Brown Date: Mon, 20 Nov 2023 10:00:59 -0600 Subject: [PATCH] Fix null option being selected when it doesn't match the bound value --- packages/svelte/src/internal/client/render.js | 2 +- .../samples/binding-select-null-placeholder-2/_config.js | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/svelte/src/internal/client/render.js b/packages/svelte/src/internal/client/render.js index c1f03a5114..804840d6c9 100644 --- a/packages/svelte/src/internal/client/render.js +++ b/packages/svelte/src/internal/client/render.js @@ -458,7 +458,7 @@ export function select_option(select, value, mounting) { } } if (!mounting || value !== undefined) { - select.value = ''; + select.selectedIndex = -1; // no option should be selected } } diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder-2/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder-2/_config.js index e8d70675de..497364f1be 100644 --- a/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder-2/_config.js +++ b/packages/svelte/tests/runtime-legacy/samples/binding-select-null-placeholder-2/_config.js @@ -24,5 +24,11 @@ export default test({ component.foo = items[0]; assert.equal(options[0].selected, false); assert.equal(options[1].selected, true); + + component.foo = { id: 'c' }; // doesn't match an option + assert.equal(select.value, ''); + assert.equal(select.selectedIndex, -1); + assert.equal(options[0].selected, false); + assert.equal(options[1].selected, false); } });