diff --git a/frontend/src/lib/components/header/DesktopMenu.svelte b/frontend/src/lib/components/header/DesktopMenu.svelte index 8397dd1..b3c351a 100644 --- a/frontend/src/lib/components/header/DesktopMenu.svelte +++ b/frontend/src/lib/components/header/DesktopMenu.svelte @@ -7,7 +7,16 @@ import { onMount } from 'svelte'; import { beforeNavigate } from '$app/navigation'; + export let isPinned = false; + let isExpanded = false; + + // expose collapseMenu for parent to collapse menu on unpin + export function collapseMenu() { + isExpanded = false; + } + + $: isExpanded = isPinned ? true : isExpanded; let menuElement; let instantCollapse = false; let context = { @@ -16,6 +25,8 @@ }; const appState = AppStateService.instance; + import { createEventDispatcher } from 'svelte'; + const dispatch = createEventDispatcher(); onMount(() => { const unsub = appState.subscribe((s) => { @@ -27,7 +38,7 @@ // handle click outside to collapse menu const handleClickOutside = (event) => { - if (isExpanded && menuElement && !menuElement.contains(event.target)) { + if (!isPinned && isExpanded && menuElement && !menuElement.contains(event.target)) { isExpanded = false; } }; @@ -42,7 +53,7 @@ // handle navigation to collapse menu beforeNavigate(() => { - if (isExpanded) { + if (!isPinned && isExpanded) { instantCollapse = true; isExpanded = false; // reset after a brief moment @@ -156,33 +167,103 @@ class:!max-h-[calc(100vh-6rem)]={hasCompanySelected} >