1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

responding to comments

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2021-03-19 16:32:49 +02:00
parent 64ae031e20
commit 5b9e788730
2 changed files with 32 additions and 32 deletions

View File

@ -13,11 +13,11 @@ interface SidebarItemProps {
id: string; // unique id, used in storage and integration tests id: string; // unique id, used in storage and integration tests
url: string; url: string;
className?: string; className?: string;
title: React.ReactNode; text: React.ReactNode;
icon?: React.ReactNode; icon?: React.ReactNode;
isHidden?: boolean; isHidden?: boolean;
isActive?: boolean; // marks a link, by default checks `props.url` to identify active state isActive?: boolean; // marks a link, by default checks `props.url` to identify active state
subMenu?: React.ReactNode | React.ComponentType<SidebarItemProps>[]; // props.children could be used too subMenus?: React.ReactNode | React.ComponentType<SidebarItemProps>[]; // props.children could be used too
} }
@observer @observer
@ -48,7 +48,7 @@ export class SidebarItem extends React.Component<SidebarItemProps> {
return false; // not available currently return false; // not available currently
} }
return Boolean(this.props.subMenu || this.props.children); return Boolean(this.props.subMenus || this.props.children);
} }
toggleExpand = () => { toggleExpand = () => {
@ -58,7 +58,7 @@ export class SidebarItem extends React.Component<SidebarItemProps> {
}; };
render() { render() {
const { isHidden, icon, title, children, url, className, subMenu } = this.props; const { isHidden, icon, text, children, url, className, subMenus } = this.props;
if (isHidden) return null; if (isHidden) return null;
@ -75,7 +75,7 @@ export class SidebarItem extends React.Component<SidebarItemProps> {
className={cssNames("nav-item flex gaps align-center", { expandable: isExpandable })} className={cssNames("nav-item flex gaps align-center", { expandable: isExpandable })}
onClick={isExpandable ? prevDefault(toggleExpand) : undefined}> onClick={isExpandable ? prevDefault(toggleExpand) : undefined}>
{icon} {icon}
<span className="link-text box grow">{title}</span> <span className="link-text box grow">{text}</span>
{isExpandable && <Icon {isExpandable && <Icon
className="expand-icon box right" className="expand-icon box right"
material={expanded ? "keyboard_arrow_up" : "keyboard_arrow_down"} material={expanded ? "keyboard_arrow_up" : "keyboard_arrow_down"}
@ -83,7 +83,7 @@ export class SidebarItem extends React.Component<SidebarItemProps> {
</NavLink> </NavLink>
{isExpandable && expanded && ( {isExpandable && expanded && (
<ul className={cssNames("sub-menu", { active: isActive })}> <ul className={cssNames("sub-menu", { active: isActive })}>
{subMenu} {subMenus}
{children} {children}
</ul> </ul>
)} )}

View File

@ -45,8 +45,8 @@ export class Sidebar extends React.Component<Props> {
crdStore.reloadAll(); crdStore.reloadAll();
} }
@computed get crdSubMenu(): React.ReactNode { @computed get crdSubMenus(): React.ReactNode {
if (!crdStore.isLoaded) { if (!crdStore.isLoaded && crdStore.isLoading) {
return <Spinner centerHorizontal/>; return <Spinner centerHorizontal/>;
} }
@ -57,7 +57,7 @@ export class Sidebar extends React.Component<Props> {
key={crd.getResourceApiBase()} key={crd.getResourceApiBase()}
id={`crd-resource:${crd.getResourceApiBase()}`} id={`crd-resource:${crd.getResourceApiBase()}`}
url={crd.getResourceUrl()} url={crd.getResourceUrl()}
title={crd.getResourceTitle()} text={crd.getResourceTitle()}
/> />
); );
}); });
@ -65,10 +65,10 @@ export class Sidebar extends React.Component<Props> {
return ( return (
<SidebarItem <SidebarItem
key={group} key={group}
title={group} text={group}
id={`crd-group:${group}`} id={`crd-group:${group}`}
url={crdURL({ query: { groups: group } })} url={crdURL({ query: { groups: group } })}
subMenu={crdGroupSubMenu} subMenus={crdGroupSubMenu}
/> />
); );
}); });
@ -87,7 +87,7 @@ export class Sidebar extends React.Component<Props> {
key={subMenuItemId} key={subMenuItemId}
id={subMenuItemId} id={subMenuItemId}
url={url} url={url}
title={title} text={title}
isActive={isActiveRoute({ path: routePath, exact })} isActive={isActiveRoute({ path: routePath, exact })}
/> />
); );
@ -145,9 +145,9 @@ export class Sidebar extends React.Component<Props> {
id={id} id={id}
url={pageUrl} url={pageUrl}
isActive={isActive} isActive={isActive}
title={menuItem.title} text={menuItem.title}
icon={<menuItem.components.Icon/>} icon={<menuItem.components.Icon/>}
subMenu={this.renderTreeFromTabRoutes(tabRoutes)} subMenus={this.renderTreeFromTabRoutes(tabRoutes)}
/> />
); );
}); });
@ -175,98 +175,98 @@ export class Sidebar extends React.Component<Props> {
<div className={cssNames("sidebar-nav flex column box grow-fixed", { compact })}> <div className={cssNames("sidebar-nav flex column box grow-fixed", { compact })}>
<SidebarItem <SidebarItem
id="cluster" id="cluster"
title="Cluster"
isActive={isActiveRoute(clusterRoute)} isActive={isActiveRoute(clusterRoute)}
isHidden={!isAllowedResource("nodes")} isHidden={!isAllowedResource("nodes")}
url={clusterURL()} url={clusterURL()}
text="Cluster"
icon={<Icon svg="kube"/>} icon={<Icon svg="kube"/>}
/> />
<SidebarItem <SidebarItem
id="nodes" id="nodes"
title="Nodes"
isActive={isActiveRoute(nodesRoute)} isActive={isActiveRoute(nodesRoute)}
isHidden={!isAllowedResource("nodes")} isHidden={!isAllowedResource("nodes")}
url={nodesURL()} url={nodesURL()}
text="Nodes"
icon={<Icon svg="nodes"/>} icon={<Icon svg="nodes"/>}
/> />
<SidebarItem <SidebarItem
id="workloads" id="workloads"
title="Workloads"
isActive={isActiveRoute(workloadsRoute)} isActive={isActiveRoute(workloadsRoute)}
isHidden={Workloads.tabRoutes.length == 0} isHidden={Workloads.tabRoutes.length == 0}
url={workloadsURL({ query })} url={workloadsURL({ query })}
subMenus={this.renderTreeFromTabRoutes(Workloads.tabRoutes)}
text="Workloads"
icon={<Icon svg="workloads"/>} icon={<Icon svg="workloads"/>}
subMenu={this.renderTreeFromTabRoutes(Workloads.tabRoutes)}
/> />
<SidebarItem <SidebarItem
id="config" id="config"
title="Configuration"
isActive={isActiveRoute(configRoute)} isActive={isActiveRoute(configRoute)}
isHidden={Config.tabRoutes.length == 0} isHidden={Config.tabRoutes.length == 0}
url={configURL({ query })} url={configURL({ query })}
subMenus={this.renderTreeFromTabRoutes(Config.tabRoutes)}
text="Configuration"
icon={<Icon material="list"/>} icon={<Icon material="list"/>}
subMenu={this.renderTreeFromTabRoutes(Config.tabRoutes)}
/> />
<SidebarItem <SidebarItem
id="networks" id="networks"
title="Network"
isActive={isActiveRoute(networkRoute)} isActive={isActiveRoute(networkRoute)}
isHidden={Network.tabRoutes.length == 0} isHidden={Network.tabRoutes.length == 0}
url={networkURL({ query })} url={networkURL({ query })}
subMenus={this.renderTreeFromTabRoutes(Network.tabRoutes)}
text="Network"
icon={<Icon material="device_hub"/>} icon={<Icon material="device_hub"/>}
subMenu={this.renderTreeFromTabRoutes(Network.tabRoutes)}
/> />
<SidebarItem <SidebarItem
id="storage" id="storage"
title="Storage"
isActive={isActiveRoute(storageRoute)} isActive={isActiveRoute(storageRoute)}
isHidden={Storage.tabRoutes.length == 0} isHidden={Storage.tabRoutes.length == 0}
url={storageURL({ query })} url={storageURL({ query })}
subMenus={this.renderTreeFromTabRoutes(Storage.tabRoutes)}
icon={<Icon svg="storage"/>} icon={<Icon svg="storage"/>}
subMenu={this.renderTreeFromTabRoutes(Storage.tabRoutes)} text="Storage"
/> />
<SidebarItem <SidebarItem
id="namespaces" id="namespaces"
title="Namespaces"
isActive={isActiveRoute(namespacesRoute)} isActive={isActiveRoute(namespacesRoute)}
isHidden={!isAllowedResource("namespaces")} isHidden={!isAllowedResource("namespaces")}
url={namespacesURL()} url={namespacesURL()}
icon={<Icon material="layers"/>} icon={<Icon material="layers"/>}
text="Namespaces"
/> />
<SidebarItem <SidebarItem
id="events" id="events"
title="Events"
isActive={isActiveRoute(eventRoute)} isActive={isActiveRoute(eventRoute)}
isHidden={!isAllowedResource("events")} isHidden={!isAllowedResource("events")}
url={eventsURL({ query })} url={eventsURL({ query })}
icon={<Icon material="access_time"/>} icon={<Icon material="access_time"/>}
text="Events"
/> />
<SidebarItem <SidebarItem
id="apps" id="apps"
title="Apps"
isActive={isActiveRoute(appsRoute)} isActive={isActiveRoute(appsRoute)}
url={appsURL({ query })} url={appsURL({ query })}
subMenu={this.renderTreeFromTabRoutes(Apps.tabRoutes)} subMenus={this.renderTreeFromTabRoutes(Apps.tabRoutes)}
icon={<Icon material="apps"/>} icon={<Icon material="apps"/>}
text="Apps"
/> />
<SidebarItem <SidebarItem
id="users" id="users"
title="Access Control"
isActive={isActiveRoute(usersManagementRoute)} isActive={isActiveRoute(usersManagementRoute)}
url={usersManagementURL({ query })} url={usersManagementURL({ query })}
subMenus={this.renderTreeFromTabRoutes(UserManagement.tabRoutes)}
icon={<Icon material="security"/>} icon={<Icon material="security"/>}
subMenu={this.renderTreeFromTabRoutes(UserManagement.tabRoutes)} text="Access Control"
/> />
<SidebarItem <SidebarItem
id="custom-resources" id="custom-resources"
title="Custom Resources" text="Custom Resources"
url={crdURL()} url={crdURL()}
isActive={isActiveRoute(crdRoute)} isActive={isActiveRoute(crdRoute)}
isHidden={!isAllowedResource("customresourcedefinitions")} isHidden={!isAllowedResource("customresourcedefinitions")}
icon={<Icon material="extension"/>} icon={<Icon material="extension"/>}
> >
{this.renderTreeFromTabRoutes(CustomResources.tabRoutes)} {this.renderTreeFromTabRoutes(CustomResources.tabRoutes)}
{this.crdSubMenu} {this.crdSubMenus}
</SidebarItem> </SidebarItem>
{this.renderRegisteredMenus()} {this.renderRegisteredMenus()}
</div> </div>