diff --git a/frontend/src/lib/components/CategoryDropdown.svelte b/frontend/src/lib/components/CategoryDropdown.svelte index 62f5f1ab..61b2a779 100644 --- a/frontend/src/lib/components/CategoryDropdown.svelte +++ b/frontend/src/lib/components/CategoryDropdown.svelte @@ -101,9 +101,10 @@ loadData(); - const handlePointerDown = (event: PointerEvent) => { + const handleOutside = (event: Event) => { if (!dropdownRef) return; - if (!dropdownRef.contains(event.target as Node)) { + const target = event.target as Node | null; + if (target && !dropdownRef.contains(target)) { closeDropdown(); } }; @@ -114,17 +115,18 @@ } }; - document.addEventListener('pointerdown', handlePointerDown); + const outsideEvents: Array = ['pointerdown', 'mousedown', 'touchstart']; + outsideEvents.forEach((eventName) => document.addEventListener(eventName, handleOutside)); document.addEventListener('keydown', handleKeyDown); return () => { - document.removeEventListener('pointerdown', handlePointerDown); + outsideEvents.forEach((eventName) => document.removeEventListener(eventName, handleOutside)); document.removeEventListener('keydown', handleKeyDown); }; }); -