diff --git a/src/lib/auth/CountryPicker.svelte b/src/lib/auth/CountryPicker.svelte index a58ea24..f4d5aca 100644 --- a/src/lib/auth/CountryPicker.svelte +++ b/src/lib/auth/CountryPicker.svelte @@ -7,36 +7,32 @@ const countries = $derived.by(() => { if (!worldData?.objects?.countries?.geometries) return []; - const names = worldData.objects.countries.geometries - .map(g => g.properties?.name) - .filter(Boolean); - return [...new Set(names)].sort(); + return worldData.objects.countries.geometries + .map(g => ({ name: g.properties?.name, code: g.id })) + .filter(c => c.name && c.code) + .sort((a, b) => a.name.localeCompare(b.name)); }); let search = $state(''); - let selectedCountry = $state(''); + let selectedCountry = $state(null); let filtered = $derived( search - ? countries.filter(c => c.toLowerCase().includes(search.toLowerCase())) + ? countries.filter(c => c.name.toLowerCase().includes(search.toLowerCase())) : countries ); let open = $state(false); - function toggleDropdown() { - open = !open; - } - function select(c) { selectedCountry = c; - search = c; + search = c.name; open = false; } function handleSubmit() { if (selectedCountry) { - setHomeCountry(selectedCountry); + setHomeCountry(selectedCountry.name, selectedCountry.code); } } @@ -61,7 +57,7 @@ placeholder="Search for a country..." bind:value={search} onfocus={() => { open = true; }} - oninput={() => { open = true; selectedCountry = ''; }} + oninput={() => { open = true; selectedCountry = null; }} onkeydown={handleKeydown} class="search-input" /> @@ -70,13 +66,13 @@ {#each filtered as country}