diff --git a/apps/web/src/components/navigation-menu/index.tsx b/apps/web/src/components/navigation-menu/index.tsx
index fef9a1303..6a8c38345 100644
--- a/apps/web/src/components/navigation-menu/index.tsx
+++ b/apps/web/src/components/navigation-menu/index.tsx
@@ -230,6 +230,7 @@ function NavigationMenu({ onExpand }: { onExpand?: () => void }) {
clearTimeout(mouseHoverTimeout.current);
if (!isNavPaneCollapsed) return;
mouseHoverTimeout.current = setTimeout(() => {
+ if (!isNavPaneCollapsed) return;
setExpanded(false);
}, 500) as unknown as number;
}}
@@ -377,14 +378,23 @@ function NavigationMenu({ onExpand }: { onExpand?: () => void }) {
suppressScrollX={true}
>
-
-
+ isNavPaneCollapsed && setExpanded(false)}
+ />
+ isNavPaneCollapsed && setExpanded(false)}
+ />
-
+ isNavPaneCollapsed && setExpanded(false)}
+ />
@@ -395,7 +405,13 @@ function NavigationMenu({ onExpand }: { onExpand?: () => void }) {
}
export default React.memo(NavigationMenu);
-function Routes({ isCollapsed }: { isCollapsed?: boolean }) {
+function Routes({
+ isCollapsed,
+ collapse
+}: {
+ isCollapsed: boolean;
+ collapse: () => void;
+}) {
const hiddenRoutes = useAppStore((store) => store.hiddenRoutes);
return (
db.settings.getSideBarOrder("routes")}
onOrderChanged={(order) => db.settings.setSideBarOrder("routes", order)}
- context={{ isCollapsed }}
+ context={{ isCollapsed, collapse }}
renderItem={RouteItem}
/>
);
@@ -414,7 +430,7 @@ function RouteItem({
context
}: {
item: Route;
- context?: { isCollapsed: boolean };
+ context?: { isCollapsed: boolean; collapse: () => void };
}) {
const [location] = useLocation();
@@ -441,7 +457,7 @@ function RouteItem({
: location.startsWith(item.path)
}
onClick={() => {
- navigateToRoute(item.path);
+ if (navigateToRoute(item.path)) context?.collapse();
}}
menuItems={[
{
@@ -456,7 +472,13 @@ function RouteItem({
);
}
-function Colors({ isCollapsed }: { isCollapsed?: boolean }) {
+function Colors({
+ isCollapsed,
+ collapse
+}: {
+ isCollapsed: boolean;
+ collapse: () => void;
+}) {
const colors = useAppStore((store) => store.colors);
const refreshNavItems = useAppStore((store) => store.refreshNavItems);
const context = useNoteStore((store) =>
@@ -480,7 +502,7 @@ function Colors({ isCollapsed }: { isCollapsed?: boolean }) {
selected={context?.id === color.id}
color={color.colorCode}
onClick={() => {
- navigateToRoute(`/colors/${color.id}`);
+ if (navigateToRoute(`/colors/${color.id}`)) collapse();
}}
onDrop={(e) => handleDrop(e.dataTransfer, color)}
menuItems={[
@@ -519,7 +541,13 @@ function Colors({ isCollapsed }: { isCollapsed?: boolean }) {
);
}
-function Shortcuts({ isCollapsed }: { isCollapsed?: boolean }) {
+function Shortcuts({
+ isCollapsed,
+ collapse
+}: {
+ isCollapsed: boolean;
+ collapse: () => void;
+}) {
const shortcuts = useAppStore((store) => store.shortcuts);
const refreshNavItems = useAppStore((store) => store.refreshNavItems);
const context = useNoteStore((store) =>
@@ -563,11 +591,14 @@ function Shortcuts({ isCollapsed }: { isCollapsed?: boolean }) {
selected={context?.id === item.id}
onDrop={(e) => handleDrop(e.dataTransfer, item)}
onClick={async () => {
- if (item.type === "notebook") {
- navigateToRoute(`/notebooks/${item.id}`);
- } else if (item.type === "tag") {
- navigateToRoute(`/tags/${item.id}`);
- }
+ if (
+ navigateToRoute(
+ item.type === "notebook"
+ ? `/notebooks/${item.id}`
+ : `/tags/${item.id}`
+ )
+ )
+ collapse();
}}
>
@@ -928,4 +959,5 @@ function navigateToRoute(path: string) {
return useAppStore.getState().toggleListPane();
}
navigate(path);
+ return true;
}