From 0203693d075a357f9931f76ecf8fd194fca6ac78 Mon Sep 17 00:00:00 2001 From: Stephanie Jauss Date: Mon, 22 Jun 2026 16:44:45 +0200 Subject: [PATCH 1/3] Add optional fuzzy search to searchable select component --- components/package.json | 1 + components/src/Select/Select.stories.svelte | 57 +++++++++++++++++++++ components/src/Select/Select.svelte | 40 +++++++++++++++ package-lock.json | 14 +++++ 4 files changed, 112 insertions(+) diff --git a/components/package.json b/components/package.json index 78b59808..349f4bb5 100644 --- a/components/package.json +++ b/components/package.json @@ -36,6 +36,7 @@ "dependencies": { "@maplibre/maplibre-gl-geocoder": "1.9.1", "@maplibre/maplibre-gl-inspect": "1.7.1", + "fuse.js": "^7.4.2", "maplibre-gl": "5.20.0", "svelte-select": "5.8.3" }, diff --git a/components/src/Select/Select.stories.svelte b/components/src/Select/Select.stories.svelte index 882bcaa8..1835e1b0 100644 --- a/components/src/Select/Select.stories.svelte +++ b/components/src/Select/Select.stories.svelte @@ -183,6 +183,63 @@ + { + const canvas = within(canvasElement); + const select = canvas.getByLabelText('Berufe'); + + await step('An exact title still selects that item with fuzzy enabled', async () => { + await userEvent.type(select, 'Tierpflege{enter}'); + expect(selectedItem?.details.title).toEqual('Tierpflege'); + }); + + await step('A typo in the title still matches the closest item', async () => { + await userEvent.type(select, 'Journlismus{enter}'); + expect(selectedItem?.details.title).toEqual('Journalismus'); + }); + + await step('A typo in the add-on still matches the closest item', async () => { + await userEvent.type(select, 'Hundetrener{enter}'); + expect(selectedItem?.details.title).toEqual('Tierpflege'); + }); + }} +> + + {#snippet demoComponent()} + Berufe + + {/snippet} + + + From a2fb69e00cfde965b6130e140bd2e1eeeb582faf Mon Sep 17 00:00:00 2001 From: Stephanie Jauss Date: Tue, 23 Jun 2026 08:31:11 +0200 Subject: [PATCH 3/3] Add missing dependency to mock-sveltekit --- mock-sveltekit/package.json | 1 + package-lock.json | 1 + 2 files changed, 2 insertions(+) diff --git a/mock-sveltekit/package.json b/mock-sveltekit/package.json index 9bb14a27..d3e9f00c 100644 --- a/mock-sveltekit/package.json +++ b/mock-sveltekit/package.json @@ -16,6 +16,7 @@ "dependencies": { "@maplibre/maplibre-gl-geocoder": "1.9.1", "@maplibre/maplibre-gl-inspect": "1.7.1", + "fuse.js": "7.4.2", "maplibre-gl": "5.20.0", "svelte-select": "5.8.3" }, diff --git a/package-lock.json b/package-lock.json index c8ec7beb..22ce41fc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -314,6 +314,7 @@ "dependencies": { "@maplibre/maplibre-gl-geocoder": "1.9.1", "@maplibre/maplibre-gl-inspect": "1.7.1", + "fuse.js": "7.4.2", "maplibre-gl": "5.20.0", "svelte-select": "5.8.3" },