From 41385c324e7246fbe530497418b91af64710565b Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Fri, 11 Dec 2020 12:56:59 +0300 Subject: [PATCH] Using id prop to preserve expanding state Signed-off-by: Alex Andreev --- .../components/layout/sidebar-nav-item.tsx | 16 ++++------- src/renderer/components/layout/sidebar.tsx | 27 ++++++++++--------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/src/renderer/components/layout/sidebar-nav-item.tsx b/src/renderer/components/layout/sidebar-nav-item.tsx index c3940af4ba..7dfcbb50e6 100644 --- a/src/renderer/components/layout/sidebar-nav-item.tsx +++ b/src/renderer/components/layout/sidebar-nav-item.tsx @@ -13,6 +13,7 @@ import type { TabLayoutRoute } from "./tab-layout"; import type { SidebarContextValue } from "./sidebar-context"; interface SidebarNavItemProps { + id: string; // Used to save nav item collapse/expand state in local storage url: string; text: React.ReactNode | string; className?: string; @@ -20,7 +21,6 @@ interface SidebarNavItemProps { isHidden?: boolean; isActive?: boolean; subMenus?: TabLayoutRoute[]; - testId?: string; // data-test-id="" property for integration tests } const navItemStorage = createStorage<[string, boolean][]>("sidebar_menu_item", []); @@ -33,22 +33,16 @@ export class SidebarNavItem extends React.Component { static contextType = SidebarContext; public context: SidebarContextValue; - get itemId() { - const url = new URL(this.props.url, `${window.location.protocol}//${window.location.host}`); - - return url.pathname; // pathname without get params - } - @computed get isExpanded() { - return navItemState.get(this.itemId); + return navItemState.get(this.props.id); } toggleSubMenu = () => { - navItemState.set(this.itemId, !this.isExpanded); + navItemState.set(this.props.id, !this.isExpanded); }; render() { - const { isHidden, isActive, subMenus = [], icon, text, url, children, className, testId } = this.props; + const { isHidden, isActive, subMenus = [], icon, text, url, children, className, id } = this.props; if (isHidden) { return null; @@ -57,7 +51,7 @@ export class SidebarNavItem extends React.Component { if (extendedView) { return ( -
+
{icon} {text} diff --git a/src/renderer/components/layout/sidebar.tsx b/src/renderer/components/layout/sidebar.tsx index 491054a611..5386d9fb52 100644 --- a/src/renderer/components/layout/sidebar.tsx +++ b/src/renderer/components/layout/sidebar.tsx @@ -64,6 +64,7 @@ export class Sidebar extends React.Component { return ( { return clusterPageMenuRegistry.getRootItems().map((menuItem, index) => { const registeredPage = clusterPageRegistry.getByPageMenuTarget(menuItem.target); const tabRoutes = this.getTabLayoutRoutes(menuItem); + const id = `registered-item-${index}`; let pageUrl: string; let isActive = false; @@ -117,7 +119,8 @@ export class Sidebar extends React.Component { return ( } @@ -150,7 +153,7 @@ export class Sidebar extends React.Component {
{ icon={} /> { icon={} /> { icon={} /> { icon={} /> { icon={} /> { text={Storage} /> { text={Namespaces} /> { text={Events} /> { text={Apps} /> { text={Access Control} />