diff --git a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx
index f04add7cc1..bea9caf273 100644
--- a/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx
+++ b/plugins/catalog/src/components/CatalogTable/CatalogTable.tsx
@@ -31,7 +31,12 @@ const columns: TableColumn[] = [
diff --git a/plugins/catalog/src/components/ComponentPage/ComponentPage.test.tsx b/plugins/catalog/src/components/ComponentPage/ComponentPage.test.tsx
index ee5e7348b1..98fa6b4408 100644
--- a/plugins/catalog/src/components/ComponentPage/ComponentPage.test.tsx
+++ b/plugins/catalog/src/components/ComponentPage/ComponentPage.test.tsx
@@ -24,7 +24,7 @@ const getTestProps = (name: string) => {
return {
match: {
params: {
- name: name,
+ optionalNamespaceAndName: name,
kind: 'Component',
},
},
diff --git a/plugins/catalog/src/components/ComponentPage/ComponentPage.tsx b/plugins/catalog/src/components/ComponentPage/ComponentPage.tsx
index a410be2bf4..72aef7fe16 100644
--- a/plugins/catalog/src/components/ComponentPage/ComponentPage.tsx
+++ b/plugins/catalog/src/components/ComponentPage/ComponentPage.tsx
@@ -40,8 +40,7 @@ const REDIRECT_DELAY = 1000;
type ComponentPageProps = {
match: {
params: {
- name: string;
- namespace?: string;
+ optionalNamespaceAndName: string;
kind: string;
};
};
@@ -55,7 +54,8 @@ const ComponentPage: FC = ({ match, history }) => {
const [removingPending, setRemovingPending] = useState(false);
const showRemovalDialog = () => setConfirmationDialogOpen(true);
const hideRemovalDialog = () => setConfirmationDialogOpen(false);
- const { name, namespace, kind } = match.params;
+ const { optionalNamespaceAndName, kind } = match.params;
+ const [name, namespace] = optionalNamespaceAndName.split(':').reverse();
const errorApi = useApi(errorApiRef);
const catalogApi = useApi(catalogApiRef);
diff --git a/plugins/catalog/src/data/component.ts b/plugins/catalog/src/data/component.ts
index 86749c6faa..68be7588f0 100644
--- a/plugins/catalog/src/data/component.ts
+++ b/plugins/catalog/src/data/component.ts
@@ -18,6 +18,7 @@ import { ReactNode } from 'react';
export type Component = {
name: string;
+ namespace?: string;
kind: string;
metadata: EntityMeta;
description: ReactNode;
diff --git a/plugins/catalog/src/data/utils.ts b/plugins/catalog/src/data/utils.ts
index b731268c41..f84bfee73f 100644
--- a/plugins/catalog/src/data/utils.ts
+++ b/plugins/catalog/src/data/utils.ts
@@ -24,6 +24,7 @@ import { Component } from './component';
export function entityToComponent(envelope: Entity): Component {
return {
name: envelope.metadata.name,
+ namespace: envelope.metadata.namespace,
kind: envelope.kind,
metadata: envelope.metadata,
description: envelope.metadata.annotations?.description ?? 'placeholder',
diff --git a/plugins/catalog/src/routes.ts b/plugins/catalog/src/routes.ts
index f5bb319a88..69c4e651b4 100644
--- a/plugins/catalog/src/routes.ts
+++ b/plugins/catalog/src/routes.ts
@@ -25,6 +25,6 @@ export const rootRoute = createRouteRef({
});
export const entityRoute = createRouteRef({
icon: NoIcon,
- path: '/catalog/:namespace?/:kind/:name/',
+ path: '/catalog/:kind/:optionalNamespaceAndName/',
title: 'Entity',
});
diff --git a/plugins/register-component/src/components/RegisterComponentResultDialog/RegisterComponentResultDialog.tsx b/plugins/register-component/src/components/RegisterComponentResultDialog/RegisterComponentResultDialog.tsx
index 7c6e335f6e..68b06d1751 100644
--- a/plugins/register-component/src/components/RegisterComponentResultDialog/RegisterComponentResultDialog.tsx
+++ b/plugins/register-component/src/components/RegisterComponentResultDialog/RegisterComponentResultDialog.tsx
@@ -54,36 +54,39 @@ export const RegisterComponentResultDialog: FC = ({
The following components have been succefully created:
- {entities.map((entity: any, index: number) => (
-
-
-
- {generatePath(entityRoute.path, {
- name: entity.metadata.name,
- kind: entity.kind,
- })}
-
- ),
- }}
- />
-
- {index < entities.length - 1 && }
-
- ))}
+ {entities.map((entity: any, index: number) => {
+ const entityPath = generatePath(entityRoute.path, {
+ optionalNamespaceAndName: [
+ entity.metadata.namespace,
+ entity.metadata.name,
+ ]
+ .filter(Boolean)
+ .join(':'),
+ kind: entity.kind,
+ });
+
+ return (
+
+
+
+ {entityPath}
+
+ ),
+ }}
+ />
+
+ {index < entities.length - 1 && }
+
+ );
+ })}