From d4d2da1d281de9fa92c2e57bcf9330ab6c8b0958 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Tue, 8 Feb 2022 13:21:54 -0500 Subject: [PATCH] Fix extension sidebar items sometimes being expandable (#4835) * Fix extension sidebar items sometimes being expandable - Change to be just a helper function Signed-off-by: Sebastian Malton * Actual fix Signed-off-by: Sebastian Malton --- .../components/+config/sidebar-item.tsx | 4 +- .../components/+helm/sidebar-item.tsx | 4 +- .../components/+network/sidebar-item.tsx | 4 +- .../components/+storage/sidebar-item.tsx | 4 +- .../+user-management/sidebar-item.tsx | 4 +- .../components/+workloads/sidebar-item.tsx | 4 +- .../components/layout/sidebar-item.tsx | 2 +- src/renderer/components/layout/sidebar.tsx | 4 +- .../layout/tab-routes-sidebar-items.tsx | 38 +++++++++---------- 9 files changed, 34 insertions(+), 34 deletions(-) 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 }) => ( + + )) );