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

Fix extension cluster menu highlight/routing issues (#1459)

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen 2020-11-20 09:29:38 +02:00 committed by GitHub
parent 43976f5bd9
commit 6e73c8ffc2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 8 deletions

View File

@ -100,7 +100,7 @@ export class App extends React.Component {
const tabRoutes = this.getTabLayoutRoutes(menu); const tabRoutes = this.getTabLayoutRoutes(menu);
if (tabRoutes.length > 0) { if (tabRoutes.length > 0) {
const pageComponent = () => <TabLayout tabs={tabRoutes} />; const pageComponent = () => <TabLayout tabs={tabRoutes} />;
return <Route key={"extension-tab-layout-route-" + index} component={pageComponent}/>; return <Route key={"extension-tab-layout-route-" + index} component={pageComponent} path={tabRoutes.map((tab) => tab.routePath)} />;
} else { } else {
const page = clusterPageRegistry.getByPageMenuTarget(menu.target); const page = clusterPageRegistry.getByPageMenuTarget(menu.target);
if (page) { if (page) {

View File

@ -98,23 +98,30 @@ export class Sidebar extends React.Component<Props> {
} }
renderRegisteredMenus() { renderRegisteredMenus() {
return clusterPageMenuRegistry.getRootItems().map((menuItem) => { return clusterPageMenuRegistry.getRootItems().map((menuItem, index) => {
const registeredPage = clusterPageRegistry.getByPageMenuTarget(menuItem.target); const registeredPage = clusterPageRegistry.getByPageMenuTarget(menuItem.target);
const tabRoutes = this.getTabLayoutRoutes(menuItem);
let pageUrl: string; let pageUrl: string;
let routePath: string;
let isActive = false; let isActive = false;
if (registeredPage) { if (registeredPage) {
const { extensionId, id: pageId } = registeredPage; const { extensionId, id: pageId } = registeredPage;
pageUrl = getExtensionPageUrl({ extensionId, pageId, params: menuItem.target.params }); pageUrl = getExtensionPageUrl({ extensionId, pageId, params: menuItem.target.params });
isActive = pageUrl === navigation.location.pathname; routePath = registeredPage.routePath;
} isActive = isActiveRoute(registeredPage.routePath);
const tabRoutes = this.getTabLayoutRoutes(menuItem); } else if (tabRoutes.length > 0) {
if (!registeredPage && tabRoutes.length == 0) { pageUrl = tabRoutes[0].url;
routePath = tabRoutes[0].routePath;
isActive = isActiveRoute(tabRoutes.map((tab) => tab.routePath));
} else {
return; return;
} }
return ( return (
<SidebarNavItem <SidebarNavItem
key={pageUrl} url={pageUrl} key={"registered-item-" + index}
text={menuItem.title} icon={<menuItem.components.Icon/>} url={pageUrl}
text={menuItem.title}
icon={<menuItem.components.Icon/>}
isActive={isActive} isActive={isActive}
subMenus={tabRoutes} subMenus={tabRoutes}
/> />