diff --git a/src/lib/components/ChatSidebar.svelte b/src/lib/components/ChatSidebar.svelte index 35e8f72..65ff73f 100644 --- a/src/lib/components/ChatSidebar.svelte +++ b/src/lib/components/ChatSidebar.svelte @@ -7,68 +7,142 @@ }; let { expanded = false, onToggle }: Props = $props(); + + let asideEl: HTMLElement; + let openMenuId = $state(null); + + function formatTime(iso: string) { + return new Date(iso).toLocaleTimeString([], { + hour: "2-digit", + minute: "2-digit", + }); + } + + $effect(() => { + if (!expanded) return; + function handleClick(e: MouseEvent) { + if (!asideEl.contains(e.target as Node)) onToggle(); + } + document.addEventListener("click", handleClick); + return () => document.removeEventListener("click", handleClick); + }); + + $effect(() => { + if (!openMenuId) return; + function closeMenu() { + openMenuId = null; + } + document.addEventListener("click", closeMenu); + return () => document.removeEventListener("click", closeMenu); + });