@@ -8,6 +8,25 @@ import { useGetVersionsQuery } from "../store/apiSlice";
88import { selectAvailableApps } from "../store/auth/authSelectors" ;
99import { useAppSelector } from "../store/hooks" ;
1010
11+ const AppNavLink = ( {
12+ appId,
13+ path,
14+ children,
15+ } : {
16+ appId : string | undefined ;
17+ path : string ;
18+ children : React . ReactNode ;
19+ } ) => {
20+ if ( ! appId ) {
21+ return < span className = "me-3 text-muted nav-link-disabled" > { children } </ span > ;
22+ }
23+ return (
24+ < NavLink className = "me-3" to = { `/${ appId } /${ path } ` } >
25+ { children }
26+ </ NavLink >
27+ ) ;
28+ } ;
29+
1130const TopNav = ( { isConnected } : { isConnected : boolean } ) => {
1231 const location = useLocation ( ) ;
1332 const params = useAppParams ( ) ;
@@ -71,100 +90,19 @@ const TopNav = ({ isConnected }: { isConnected: boolean }) => {
7190 </ Dropdown >
7291 ) }
7392 < Nav className = "me-auto" >
74- < NavLink
75- className = {
76- location . pathname . includes ( `/${ params . appId } /versions` )
77- ? "text-secondary me-3"
78- : "me-3"
79- }
80- to = { `/${ params . appId } /versions` }
81- >
82- Versions
83- </ NavLink >
84- < NavLink
85- className = {
86- location . pathname . includes ( `/${ params . appId } /apiPaths` )
87- ? "text-secondary me-3"
88- : "me-3"
89- }
90- to = { `/${ params . appId } /apiPaths` }
91- >
92- API Paths
93- </ NavLink >
93+ < AppNavLink appId = { params . appId } path = "versions" > Versions</ AppNavLink >
94+ < AppNavLink appId = { params . appId } path = "apiPaths" > API Paths</ AppNavLink >
9495 { showInitializationExceptions && (
95- < NavLink
96- className = {
97- location . pathname . includes (
98- `/${ params . appId } /initializationExceptions` ,
99- )
100- ? "text-secondary me-3"
101- : "me-3"
102- }
103- to = { `/${ params . appId } /initializationExceptions` }
104- >
96+ < AppNavLink appId = { params . appId } path = "initializationExceptions" >
10597 Initialization Exceptions
106- </ NavLink >
98+ </ AppNavLink >
10799 ) }
108- < NavLink
109- className = {
110- location . pathname . includes ( `/${ params . appId } /console` )
111- ? "text-secondary me-3"
112- : "me-3"
113- }
114- to = { `/${ params . appId } /console` }
115- >
116- Debug Console
117- </ NavLink >
118- < NavLink
119- className = {
120- location . pathname . includes ( `/${ params . appId } /config` )
121- ? "text-secondary me-3"
122- : "me-3"
123- }
124- to = { `/${ params . appId } /config` }
125- >
126- Config File
127- </ NavLink >
128- < NavLink
129- className = {
130- location . pathname . includes ( `/${ params . appId } /devices` )
131- ? "text-secondary me-3"
132- : "me-3"
133- }
134- to = { `/${ params . appId } /devices` }
135- >
136- Devices
137- </ NavLink >
138- < NavLink
139- className = {
140- location . pathname . includes ( `/${ params . appId } /types` )
141- ? "text-secondary me-3"
142- : "me-3"
143- }
144- to = { `/${ params . appId } /types` }
145- >
146- Types
147- </ NavLink >
148- < NavLink
149- className = {
150- location . pathname . includes ( `/${ params . appId } /routing` )
151- ? "text-secondary me-3"
152- : "me-3"
153- }
154- to = { `/${ params . appId } /routing` }
155- >
156- Routing
157- </ NavLink >
158- < NavLink
159- className = {
160- location . pathname . includes ( `/${ params . appId } /mobileControl` )
161- ? "text-secondary me-3"
162- : "me-3"
163- }
164- to = { `/${ params . appId } /mobileControl` }
165- >
166- Mobile Control
167- </ NavLink >
100+ < AppNavLink appId = { params . appId } path = "console" > Debug Console</ AppNavLink >
101+ < AppNavLink appId = { params . appId } path = "config" > Config File</ AppNavLink >
102+ < AppNavLink appId = { params . appId } path = "devices" > Devices</ AppNavLink >
103+ < AppNavLink appId = { params . appId } path = "types" > Types</ AppNavLink >
104+ < AppNavLink appId = { params . appId } path = "routing" > Routing</ AppNavLink >
105+ < AppNavLink appId = { params . appId } path = "mobileControl" > Mobile Control</ AppNavLink >
168106 </ Nav >
169107 < div className = "d-flex align-items-center" >
170108 < IconDarkEllipse
0 commit comments