From cb0773b03e1ede99569b16bcc629e80b607386c5 Mon Sep 17 00:00:00 2001 From: Josh Creek <8179928+jcreek@users.noreply.github.com> Date: Fri, 9 Jan 2026 22:21:01 +0000 Subject: [PATCH 1/2] feat(#57): Replace 'mark box as' buttons with dropdown for better ux --- .../pokedex/PokedexViewBoxes.svelte | 107 +++++++++++++++--- 1 file changed, 91 insertions(+), 16 deletions(-) diff --git a/src/lib/components/pokedex/PokedexViewBoxes.svelte b/src/lib/components/pokedex/PokedexViewBoxes.svelte index f7d6837..fcbd22a 100644 --- a/src/lib/components/pokedex/PokedexViewBoxes.svelte +++ b/src/lib/components/pokedex/PokedexViewBoxes.svelte @@ -25,6 +25,17 @@ let filterInHome = false; let filterNotInHome = false; + // Bulk actions menu state (one open menu at a time) + let openBulkMenuForBox: number | null = null; + + onMount(() => { + const close = () => { + openBulkMenuForBox = null; + }; + window.addEventListener('click', close); + return () => window.removeEventListener('click', close); + }); + let filteredCombinedData: CombinedData[] = []; let filteredTotal = 0; let overallTotal = 0; @@ -336,22 +347,86 @@ > {#each boxNumbers as boxNumber}
-

Box {boxNumber}

- - - - - +
+

Box {boxNumber}

+
+ + + {#if openBulkMenuForBox === boxNumber} + + {/if} +
+
{#each combinedData as { pokedexEntry, catchRecord }, index} {@const placement = calculateBoxPlacement(index)} From 789321ce0357224a7475078ceefd34f2e21f7348 Mon Sep 17 00:00:00 2001 From: Josh Creek <8179928+jcreek@users.noreply.github.com> Date: Sat, 10 Jan 2026 10:12:22 +0000 Subject: [PATCH 2/2] feat(#57): Improve accessibility of dropdown --- src/lib/components/pokedex/PokedexViewBoxes.svelte | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/lib/components/pokedex/PokedexViewBoxes.svelte b/src/lib/components/pokedex/PokedexViewBoxes.svelte index fcbd22a..0ace37e 100644 --- a/src/lib/components/pokedex/PokedexViewBoxes.svelte +++ b/src/lib/components/pokedex/PokedexViewBoxes.svelte @@ -346,6 +346,7 @@ style="--boxes-per-row: {boxesPerRow}; --cell-padding: {cellPaddingRem}rem; --sprite-size: {spriteSizePx}px;" > {#each boxNumbers as boxNumber} + {@const bulkMenuId = `box-${boxNumber}-bulk-menu`}

Box {boxNumber}

@@ -355,6 +356,7 @@ class="btn btn-sm btn-outline relative z-[210]" aria-label="Open bulk actions menu" aria-haspopup="menu" + aria-controls={bulkMenuId} aria-expanded={openBulkMenuForBox === boxNumber} on:click={(event) => { event.stopPropagation(); @@ -369,12 +371,13 @@ {#if openBulkMenuForBox === boxNumber}