diff --git a/src/renderer/components/+config/sidebar-item.tsx b/src/renderer/components/+config/sidebar-item.tsx
index 5298ae251a..4bd8d7b719 100644
--- a/src/renderer/components/+config/sidebar-item.tsx
+++ b/src/renderer/components/+config/sidebar-item.tsx
@@ -11,7 +11,7 @@ import { isActiveRoute } from "../../navigation";
import { Icon } from "../icon";
import { SidebarItem } from "../layout/sidebar-item";
import type { TabLayoutRoute } from "../layout/tab-layout";
-import { TabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
+import { renderTabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
import configRoutesInjectable from "./route-tabs.injectable";
export interface ConfigSidebarItemProps {}
@@ -32,7 +32,7 @@ const NonInjectedConfigSidebarItem = observer(({ routes }: Dependencies & Config
url={configURL()}
icon={}
>
-
+ {renderTabRoutesSidebarItems(tabRoutes)}
);
});
diff --git a/src/renderer/components/+helm/sidebar-item.tsx b/src/renderer/components/+helm/sidebar-item.tsx
index 2893d369a9..af81b77884 100644
--- a/src/renderer/components/+helm/sidebar-item.tsx
+++ b/src/renderer/components/+helm/sidebar-item.tsx
@@ -10,7 +10,7 @@ import { isActiveRoute } from "../../navigation";
import { Icon } from "../icon";
import { SidebarItem } from "../layout/sidebar-item";
import type { TabLayoutRoute } from "../layout/tab-layout";
-import { TabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
+import { renderTabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
import { helmRoute, helmURL } from "../../../common/routes";
import networkRouteTabsInjectable from "./route-tabs.injectable";
@@ -31,7 +31,7 @@ const NonInjectedHelmSidebarItem = observer(({ routes }: Dependencies & HelmSide
url={helmURL()}
icon={}
>
-
+ {renderTabRoutesSidebarItems(tabRoutes)}
);
});
diff --git a/src/renderer/components/+network/sidebar-item.tsx b/src/renderer/components/+network/sidebar-item.tsx
index 2dcf056a97..6189ef3b13 100644
--- a/src/renderer/components/+network/sidebar-item.tsx
+++ b/src/renderer/components/+network/sidebar-item.tsx
@@ -10,7 +10,7 @@ import { isActiveRoute } from "../../navigation";
import { Icon } from "../icon";
import { SidebarItem } from "../layout/sidebar-item";
import type { TabLayoutRoute } from "../layout/tab-layout";
-import { TabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
+import { renderTabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
import { networkRoute, networkURL } from "../../../common/routes";
import networkRouteTabsInjectable from "./route-tabs.injectable";
@@ -32,7 +32,7 @@ const NonInjectedNetworkSidebarItem = observer(({ routes }: Dependencies & Netwo
url={networkURL()}
icon={}
>
-
+ {renderTabRoutesSidebarItems(tabRoutes)}
);
});
diff --git a/src/renderer/components/+storage/sidebar-item.tsx b/src/renderer/components/+storage/sidebar-item.tsx
index 11c598a622..96447ab5de 100644
--- a/src/renderer/components/+storage/sidebar-item.tsx
+++ b/src/renderer/components/+storage/sidebar-item.tsx
@@ -11,7 +11,7 @@ import { isActiveRoute } from "../../navigation";
import { Icon } from "../icon";
import { SidebarItem } from "../layout/sidebar-item";
import type { TabLayoutRoute } from "../layout/tab-layout";
-import { TabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
+import { renderTabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
import storageRouteTabsInjectable from "./route-tabs.injectable";
export interface StorageSidebarItemProps {}
@@ -32,7 +32,7 @@ const NonInjectedStorageSidebarItem = observer(({ routes }: Dependencies & Stora
url={storageURL()}
icon={}
>
-
+ {renderTabRoutesSidebarItems(tabRoutes)}
);
});
diff --git a/src/renderer/components/+user-management/sidebar-item.tsx b/src/renderer/components/+user-management/sidebar-item.tsx
index 47977cc3c1..20d9500e2b 100644
--- a/src/renderer/components/+user-management/sidebar-item.tsx
+++ b/src/renderer/components/+user-management/sidebar-item.tsx
@@ -11,7 +11,7 @@ import { isActiveRoute } from "../../navigation";
import { Icon } from "../icon";
import { SidebarItem } from "../layout/sidebar-item";
import type { TabLayoutRoute } from "../layout/tab-layout";
-import { TabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
+import { renderTabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
import userManagementRouteTabsInjectable from "./route-tabs.injectable";
export interface UserManagementSidebarItemProps {}
@@ -32,7 +32,7 @@ const NonInjectedUserManagementSidebarItem = observer(({ routes }: Dependencies
url={usersManagementURL()}
icon={}
>
-
+ {renderTabRoutesSidebarItems(tabRoutes)}
);
});
diff --git a/src/renderer/components/+workloads/sidebar-item.tsx b/src/renderer/components/+workloads/sidebar-item.tsx
index 36b9728bc7..4301994990 100644
--- a/src/renderer/components/+workloads/sidebar-item.tsx
+++ b/src/renderer/components/+workloads/sidebar-item.tsx
@@ -11,7 +11,7 @@ import { isActiveRoute } from "../../navigation";
import { Icon } from "../icon";
import { SidebarItem } from "../layout/sidebar-item";
import type { TabLayoutRoute } from "../layout/tab-layout";
-import { TabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
+import { renderTabRoutesSidebarItems } from "../layout/tab-routes-sidebar-items";
import workloadsRouteTabsInjectable from "./route-tabs.injectable";
export interface WorkloadSidebarItemProps {}
@@ -32,7 +32,7 @@ const NonInjectedWorkloadsSidebarItem = observer(({ routes }: Dependencies & Wor
url={workloadsURL()}
icon={}
>
-
+ {renderTabRoutesSidebarItems(tabRoutes)}
);
});
diff --git a/src/renderer/components/layout/sidebar-item.tsx b/src/renderer/components/layout/sidebar-item.tsx
index 9a09e6ea19..91099602f6 100644
--- a/src/renderer/components/layout/sidebar-item.tsx
+++ b/src/renderer/components/layout/sidebar-item.tsx
@@ -63,7 +63,7 @@ class NonInjectedSidebarItem extends React.Component 0;
}
toggleExpand = () => {
diff --git a/src/renderer/components/layout/sidebar.tsx b/src/renderer/components/layout/sidebar.tsx
index 69d3cbfda4..e0239c541d 100644
--- a/src/renderer/components/layout/sidebar.tsx
+++ b/src/renderer/components/layout/sidebar.tsx
@@ -14,7 +14,7 @@ import { ClusterPageMenuRegistration, ClusterPageMenuRegistry, ClusterPageRegist
import { SidebarItem } from "./sidebar-item";
import { catalogEntityRegistry } from "../../api/catalog-entity-registry";
import { SidebarCluster } from "./sidebar-cluster";
-import { TabRoutesSidebarItems } from "./tab-routes-sidebar-items";
+import { renderTabRoutesSidebarItems } from "./tab-routes-sidebar-items";
import { ConfigSidebarItem } from "../+config/sidebar-item";
import { ClusterSidebarItem } from "../+cluster/sidebar-item";
import { NodesSidebarItem } from "../+nodes/sidebar-item";
@@ -104,7 +104,7 @@ export class Sidebar extends React.Component {
text={menuItem.title}
icon={}
>
-
+ {renderTabRoutesSidebarItems(tabRoutes)}
);
});
diff --git a/src/renderer/components/layout/tab-routes-sidebar-items.tsx b/src/renderer/components/layout/tab-routes-sidebar-items.tsx
index 8445cae1f1..fdc0e37165 100644
--- a/src/renderer/components/layout/tab-routes-sidebar-items.tsx
+++ b/src/renderer/components/layout/tab-routes-sidebar-items.tsx
@@ -8,10 +8,6 @@ import { isActiveRoute } from "../../navigation";
import { SidebarItem } from "./sidebar-item";
import type { TabLayoutRoute } from "./tab-layout";
-export interface SidebarTreeProps {
- routes: TabLayoutRoute[];
-}
-
function withId(src: TabLayoutRoute) {
return {
...src,
@@ -19,19 +15,23 @@ function withId(src: TabLayoutRoute) {
};
}
-export const TabRoutesSidebarItems = ({ routes }: SidebarTreeProps) => (
- <>
- {
- routes
- .map(withId)
- .map(({ title, routePath, url = routePath, exact = true, id }) => (
-
- ))
- }
- >
+/**
+ * Renders a sidebar item for each route
+ *
+ * NOTE: this cannot be a component because then the `.isExandable`
+ * check will always return true because a component that renders to `null` is
+ * still a present child to the parent ``
+ */
+export const renderTabRoutesSidebarItems = (routes: TabLayoutRoute[]) => (
+ routes
+ .map(withId)
+ .map(({ title, routePath, url = routePath, exact = true, id }) => (
+
+ ))
);