diff --git a/src/components/Layout.tsx b/src/components/Layout.tsx index 4a821a0..f33f94b 100644 --- a/src/components/Layout.tsx +++ b/src/components/Layout.tsx @@ -20,6 +20,7 @@ interface LayoutProps { export const Layout: Component = (props) => { const [isSidebarLocked, setIsSidebarLocked] = createSignal(true); const [isSidebarPeeking, setIsSidebarPeeking] = createSignal(false); + const [isDropdownOpen, setIsDropdownOpen] = createSignal(false); // Lift selectedNoteId up to Layout so it can be passed to NotesSidebar and NotepadView const [selectedNoteId, setSelectedNoteId] = createSignal(null); @@ -64,7 +65,11 @@ export const Layout: Component = (props) => { !isSidebarLocked() && (isSidebarPeeking() || (store.isNotepadMode && !selectedNoteId())) && "translate-x-0 shadow-2xl ring-1 ring-border" )} onMouseEnter={() => !isSidebarLocked() && setIsSidebarPeeking(true)} - onMouseLeave={() => !isSidebarLocked() && setIsSidebarPeeking(false)}> + onMouseLeave={() => { + if (!isSidebarLocked() && !isDropdownOpen()) { + setIsSidebarPeeking(false); + } + }}>
{/* Task Sidebar Wrapper */} @@ -82,6 +87,7 @@ export const Layout: Component = (props) => { isPeeking={isSidebarPeeking()} setIsPeeking={setIsSidebarPeeking} isEmbed={true} + onDropdownOpenChange={setIsDropdownOpen} />
diff --git a/src/components/Navigation.tsx b/src/components/Navigation.tsx index 4d63e70..9c9dd04 100644 --- a/src/components/Navigation.tsx +++ b/src/components/Navigation.tsx @@ -300,6 +300,7 @@ export const Sidebar: Component<{ isPeeking: boolean; setIsPeeking: (v: boolean) => void; isEmbed?: boolean; + onDropdownOpenChange?: (open: boolean) => void; }> = (props) => { const [switcherOpen, setSwitcherOpen] = createSignal(false); @@ -374,7 +375,10 @@ export const Sidebar: Component<{ isLocked={props.isLocked} isPeeking={props.isPeeking} setIsPeeking={props.setIsPeeking} - onOpenChange={setSwitcherOpen} + onOpenChange={(open) => { + setSwitcherOpen(open); + props.onDropdownOpenChange?.(open); + }} />