diff --git a/.changeset/wicked-ways-reply.md b/.changeset/wicked-ways-reply.md new file mode 100644 index 0000000000..4f71f2ee94 --- /dev/null +++ b/.changeset/wicked-ways-reply.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: improve select handling of dynamic value with placeholders diff --git a/packages/svelte/src/internal/client/dom/elements/bindings/select.js b/packages/svelte/src/internal/client/dom/elements/bindings/select.js index 533e8e9af9..5cd08a598e 100644 --- a/packages/svelte/src/internal/client/dom/elements/bindings/select.js +++ b/packages/svelte/src/internal/client/dom/elements/bindings/select.js @@ -39,10 +39,12 @@ export function select_option(select, value, mounting) { * @param {() => V} [get_value] */ export function init_select(select, get_value) { + let mounting = true; effect(() => { if (get_value) { - select_option(select, untrack(get_value)); + select_option(select, untrack(get_value), mounting); } + mounting = false; var observer = new MutationObserver(() => { // @ts-ignore diff --git a/packages/svelte/tests/runtime-runes/samples/snippet-select/Select.svelte b/packages/svelte/tests/runtime-runes/samples/snippet-select/Select.svelte new file mode 100644 index 0000000000..600a5d933e --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/snippet-select/Select.svelte @@ -0,0 +1,6 @@ + + diff --git a/packages/svelte/tests/runtime-runes/samples/snippet-select/_config.js b/packages/svelte/tests/runtime-runes/samples/snippet-select/_config.js new file mode 100644 index 0000000000..87df873a6b --- /dev/null +++ b/packages/svelte/tests/runtime-runes/samples/snippet-select/_config.js @@ -0,0 +1,7 @@ +import { test } from '../../test'; + +export default test({ + html: `