Skip to content

Commit f28aea4

Browse files
authored
fix(aurora-portal): expand active nav section on navigation (#847)
* fix(aurora-portal): expand active nav section on navigation When navigating to a service whose parent section was collapsed, automatically expand that section so the active item is visible. * refactor(aurora-portal): replace useEffect with derived open state in SideNavBar Derive nav section open state during render instead of syncing via useEffect, removing the side effect in favor of a pure computation.
1 parent 977e992 commit f28aea4

1 file changed

Lines changed: 5 additions & 4 deletions

File tree

  • apps/aurora-portal/src/client/routes/_auth/projects/-components

apps/aurora-portal/src/client/routes/_auth/projects/-components/SideNavBar.tsx

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ export const SideNavBar = ({ projectId, projectName, availableServices }: SideNa
107107
]
108108

109109
const isOverviewActive = activeSection === null
110+
const isOpen = (section: string) => openSections[section as keyof typeof openSections] || activeSection === section
110111

111112
return (
112113
<SideNavigation ariaLabel="Project Side Navigation" onActiveItemChange={() => {}}>
@@ -120,7 +121,7 @@ export const SideNavBar = ({ projectId, projectName, availableServices }: SideNa
120121
/>
121122
<SideNavigationItem
122123
label={t`Compute`}
123-
open={openSections.compute}
124+
open={isOpen("compute")}
124125
onClick={() => setOpenSections((prev) => ({ ...prev, compute: !prev.compute }))}
125126
>
126127
{computeServices.map(({ service, label, to, params }) => (
@@ -136,7 +137,7 @@ export const SideNavBar = ({ projectId, projectName, availableServices }: SideNa
136137
{networkServices.length > 0 && (
137138
<SideNavigationItem
138139
label={t`Network`}
139-
open={openSections.network}
140+
open={isOpen("network")}
140141
onClick={() => setOpenSections((prev) => ({ ...prev, network: !prev.network }))}
141142
>
142143
{networkServices.map(({ service, label, to, params }) => (
@@ -153,7 +154,7 @@ export const SideNavBar = ({ projectId, projectName, availableServices }: SideNa
153154
{storageServices.length > 0 && (
154155
<SideNavigationItem
155156
label={t`Storage`}
156-
open={openSections.storage}
157+
open={isOpen("storage")}
157158
onClick={() => setOpenSections((prev) => ({ ...prev, storage: !prev.storage }))}
158159
>
159160
{storageServices.map(({ service, label, to, params }) => {
@@ -176,7 +177,7 @@ export const SideNavBar = ({ projectId, projectName, availableServices }: SideNa
176177
{clavisServices.length > 0 && (
177178
<SideNavigationItem
178179
label={t`Services`}
179-
open={openSections.services}
180+
open={isOpen("services")}
180181
onClick={() => setOpenSections((prev) => ({ ...prev, services: !prev.services }))}
181182
>
182183
{clavisServices.map(({ service, label, to, params }) => (

0 commit comments

Comments
 (0)