From dba9b5fc0eafbd5af40ff2b108debeb380ff2edd Mon Sep 17 00:00:00 2001 From: paoloricciuti Date: Wed, 7 Jan 2026 20:00:18 +0100 Subject: [PATCH] feat: customizable select --- .changeset/chubby-dingos-laugh.md | 5 + .../client/visitors/RegularElement.js | 91 +++++++++++++++++++ .../server/visitors/RegularElement.js | 24 ++++- packages/svelte/src/html-tree-validation.js | 3 +- .../client/dom/elements/rich-option.js | 16 ++++ .../src/internal/client/dom/operations.js | 17 ++++ packages/svelte/src/internal/client/index.js | 1 + .../option-rich-content-continues/_config.js | 34 +++++++ .../_expected.html | 1 + .../option-rich-content-continues/main.svelte | 12 +++ .../samples/option-rich-content/_config.js | 37 ++++++++ .../samples/option-rich-content/main.svelte | 15 +++ 12 files changed, 251 insertions(+), 5 deletions(-) create mode 100644 .changeset/chubby-dingos-laugh.md create mode 100644 packages/svelte/src/internal/client/dom/elements/rich-option.js create mode 100644 packages/svelte/tests/hydration/samples/option-rich-content-continues/_config.js create mode 100644 packages/svelte/tests/hydration/samples/option-rich-content-continues/_expected.html create mode 100644 packages/svelte/tests/hydration/samples/option-rich-content-continues/main.svelte create mode 100644 packages/svelte/tests/runtime-runes/samples/option-rich-content/_config.js create mode 100644 packages/svelte/tests/runtime-runes/samples/option-rich-content/main.svelte diff --git a/.changeset/chubby-dingos-laugh.md b/.changeset/chubby-dingos-laugh.md new file mode 100644 index 0000000000..5c55cf3696 --- /dev/null +++ b/.changeset/chubby-dingos-laugh.md @@ -0,0 +1,5 @@ +--- +'svelte': minor +--- + +feat: customizable select diff --git a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js index 690715df84..d5a31eb9d0 100644 --- a/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js +++ b/packages/svelte/src/compiler/phases/3-transform/client/visitors/RegularElement.js @@ -327,11 +327,20 @@ export function RegularElement(node, context) { context.visit(node, child_state); } + // Detect if this is an