From 8e65a0b3236f9d058cb75b7b73ef48aca0fc432b Mon Sep 17 00:00:00 2001 From: Elijah Duffy Date: Wed, 16 Jul 2025 17:42:06 -0700 Subject: [PATCH] combobox: move outer click handlers to onMount --- src/lib/Combobox.svelte | 42 ++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/lib/Combobox.svelte b/src/lib/Combobox.svelte index 537eec3..a681733 100644 --- a/src/lib/Combobox.svelte +++ b/src/lib/Combobox.svelte @@ -310,27 +310,6 @@ } }; - if (browser) { - // update picker position on window resize - window.addEventListener('resize', updatePickerRect); - - // add window click listener to close picker - window.addEventListener('click', (e) => { - if (!searchContainer || !pickerContainer) { - return; - } - - if ( - searchContainer.contains(e.target as Node) || - pickerContainer.contains(e.target as Node) - ) { - return; - } - - closePicker(); - }); - } - // when the value (or, in some circumstances, highlighted item) changes, update the search input $effect(() => { if (!searchInput) return; @@ -357,9 +336,30 @@ }); onMount(() => { + // set initial picker position on load setTimeout(() => { updatePickerRect(); }, 500); + + // update picker position on window resize + window.addEventListener('resize', updatePickerRect); + + // add window click listener to close picker + window.addEventListener('click', (e) => { + if (!searchContainer || !pickerContainer) { + return; + } + + if ( + searchContainer.contains(e.target as Node) || + pickerContainer.contains(e.target as Node) || + !open + ) { + return; + } + + closePicker(); + }); });