diff --git a/packages/app/src/components/catalog/EntityPage.tsx b/packages/app/src/components/catalog/EntityPage.tsx index 7986146d16..e30d28cf35 100644 --- a/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/app/src/components/catalog/EntityPage.tsx @@ -388,9 +388,7 @@ const overviewContent = ( const serviceEntityPage = ( - - {overviewContent} - + {overviewContent} {cicdContent} @@ -488,9 +486,7 @@ const serviceEntityPage = ( const websiteEntityPage = ( - - {overviewContent} - + {overviewContent} {cicdContent} @@ -567,9 +563,7 @@ const websiteEntityPage = ( const defaultEntityPage = ( - - {overviewContent} - + {overviewContent} {techdocsContent} @@ -597,7 +591,7 @@ const componentPage = ( const apiPage = ( - + {entityWarningContent} @@ -631,7 +625,7 @@ const apiPage = ( const userPage = ( - + {entityWarningContent} @@ -650,7 +644,7 @@ const userPage = ( const groupPage = ( - + {entityWarningContent} @@ -672,7 +666,7 @@ const groupPage = ( const systemPage = ( - + {entityWarningContent} @@ -716,7 +710,7 @@ const systemPage = ( const domainPage = ( - + {entityWarningContent} diff --git a/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx b/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx index eb17fac045..18564cfedc 100644 --- a/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx +++ b/packages/core-components/src/components/TabbedLayout/RoutedTabs.tsx @@ -29,7 +29,7 @@ export function useSelectedSubRoute(subRoutes: SubRoute[]): { const routes = subRoutes.map(({ path, children }) => ({ caseSensitive: false, - path: `${path}/*`, + path: path ? `${path}/*` : '.', element: children, })); @@ -68,20 +68,23 @@ export function RoutedTabs(props: { routes: SubRoute[] }) { const headerTabs = useMemo( () => routes.map(t => ({ - id: t.path, + id: t.path ?? '.', label: t.title, tabProps: t.tabProps, })), [routes], ); - const onTabChange = (tabIndex: number) => + const onTabChange = (tabIndex: number) => { + let { path = '.' } = routes[tabIndex]; // Remove trailing /* + path = path.replace(/\/\*$/, ''); // And remove leading / for relative navigation + path = path.replace(/^\//, ''); // Note! route resolves relative to the position in the React tree, // not relative to current location - navigate(routes[tabIndex].path.replace(/\/\*$/, '').replace(/^\//, '')); - + navigate(path); + }; return ( <> ; diff --git a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx index f6825b1b6c..266b6656f0 100644 --- a/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx +++ b/packages/create-app/templates/default-app/packages/app/src/components/catalog/EntityPage.tsx @@ -147,7 +147,7 @@ const overviewContent = ( const serviceEntityPage = ( - + {overviewContent} @@ -185,7 +185,7 @@ const serviceEntityPage = ( const websiteEntityPage = ( - + {overviewContent} @@ -219,7 +219,7 @@ const websiteEntityPage = ( const defaultEntityPage = ( - + {overviewContent} @@ -245,7 +245,7 @@ const componentPage = ( const apiPage = ( - + {entityWarningContent} @@ -280,7 +280,7 @@ const apiPage = ( const userPage = ( - + {entityWarningContent} @@ -296,7 +296,7 @@ const userPage = ( const groupPage = ( - + {entityWarningContent} @@ -315,7 +315,7 @@ const groupPage = ( const systemPage = ( - + {entityWarningContent} @@ -362,7 +362,7 @@ const systemPage = ( const domainPage = ( - + {entityWarningContent} diff --git a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx index 2295034905..5dcbd702f5 100644 --- a/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx +++ b/plugins/catalog/src/components/EntityLayout/EntityLayout.tsx @@ -52,7 +52,7 @@ import { EntityContextMenu } from '../EntityContextMenu/EntityContextMenu'; /** @public */ export type EntityLayoutRouteProps = { - path: string; + path?: string; title: string; children: JSX.Element; if?: (entity: Entity) => boolean;