From 0084af56d6afc9b1c90181c87c106cdfe532d1df Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Tue, 7 Mar 2023 07:10:14 -0800 Subject: [PATCH] Allow CatalogEntityDetails to be opened anywhere (#6939) * Extract CatalogEntityDetails to seperate root component Signed-off-by: Sebastian Malton * Expose entity details to extension API Signed-off-by: Sebastian Malton * Add behavioural tests Signed-off-by: Sebastian Malton * Fixup catalog technical tests to use ApplicationBuilder Signed-off-by: Sebastian Malton * Update snapshot Signed-off-by: Sebastian Malton * Update test and then fix it Signed-off-by: Sebastian Malton --------- Signed-off-by: Sebastian Malton --- .../src/common/catalog/category-registry.ts | 4 + .../src/extensions/renderer-api/navigation.ts | 5 + .../entity-running.test.tsx.snap | 1608 +++++++++++++++++ .../opening-entity-details.test.tsx.snap | 464 ++++- .../features/catalog/entity-running.test.tsx | 234 +++ .../catalog/opening-entity-details.test.tsx | 27 +- .../catalog/entity/get-by-id.injectable.ts | 20 + .../renderer/api/catalog/entity/registry.ts | 36 +- .../__tests__/catalog-entity-store.test.ts | 43 +- .../catalog-entity-store.injectable.ts | 74 + .../catalog-entity-store.injectable.ts | 19 - .../catalog-entity.store.tsx | 86 - .../components/+catalog/catalog.test.tsx | 229 --- .../renderer/components/+catalog/catalog.tsx | 54 +- .../entity-details/component.injectable.tsx | 65 + .../entity-details/hide.injectable.ts | 20 + .../on-catalog-click.injectable.ts | 31 + .../selected-entity.injectable.ts | 28 + .../entity-details/selected-uid.injectable.ts | 19 + .../entity-details/show.injectable.ts | 19 + 20 files changed, 2680 insertions(+), 405 deletions(-) create mode 100644 packages/core/src/features/catalog/__snapshots__/entity-running.test.tsx.snap create mode 100644 packages/core/src/features/catalog/entity-running.test.tsx create mode 100644 packages/core/src/renderer/api/catalog/entity/get-by-id.injectable.ts create mode 100644 packages/core/src/renderer/components/+catalog/catalog-entity-store.injectable.ts delete mode 100644 packages/core/src/renderer/components/+catalog/catalog-entity-store/catalog-entity-store.injectable.ts delete mode 100644 packages/core/src/renderer/components/+catalog/catalog-entity-store/catalog-entity.store.tsx delete mode 100644 packages/core/src/renderer/components/+catalog/catalog.test.tsx create mode 100644 packages/core/src/renderer/components/+catalog/entity-details/component.injectable.tsx create mode 100644 packages/core/src/renderer/components/+catalog/entity-details/hide.injectable.ts create mode 100644 packages/core/src/renderer/components/+catalog/entity-details/on-catalog-click.injectable.ts create mode 100644 packages/core/src/renderer/components/+catalog/entity-details/selected-entity.injectable.ts create mode 100644 packages/core/src/renderer/components/+catalog/entity-details/selected-uid.injectable.ts create mode 100644 packages/core/src/renderer/components/+catalog/entity-details/show.injectable.ts diff --git a/packages/core/src/common/catalog/category-registry.ts b/packages/core/src/common/catalog/category-registry.ts index 75c33d8a10..e4de26b322 100644 --- a/packages/core/src/common/catalog/category-registry.ts +++ b/packages/core/src/common/catalog/category-registry.ts @@ -34,6 +34,10 @@ export class CatalogCategoryRegistry { }; } + getById(id: string) { + return iter.find(this.categories.values(), (category) => category.getId() === id); + } + @computed get items() { return Array.from(this.categories); } diff --git a/packages/core/src/extensions/renderer-api/navigation.ts b/packages/core/src/extensions/renderer-api/navigation.ts index ec7081c948..4b7dcd5d39 100644 --- a/packages/core/src/extensions/renderer-api/navigation.ts +++ b/packages/core/src/extensions/renderer-api/navigation.ts @@ -3,6 +3,8 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ +import hideEntityDetailsInjectable from "../../renderer/components/+catalog/entity-details/hide.injectable"; +import showEntityDetailsInjectable from "../../renderer/components/+catalog/entity-details/show.injectable"; import getDetailsUrlInjectable from "../../renderer/components/kube-detail-params/get-details-url.injectable"; import hideDetailsInjectable from "../../renderer/components/kube-detail-params/hide-details.injectable"; import showDetailsInjectable from "../../renderer/components/kube-detail-params/show-details.injectable"; @@ -20,3 +22,6 @@ export const hideDetails = asLegacyGlobalFunctionForExtensionApi(hideDetailsInje export const createPageParam = asLegacyGlobalFunctionForExtensionApi(createPageParamInjectable); export const isActiveRoute = asLegacyGlobalFunctionForExtensionApi(isActiveRouteInjectable); export const navigate = asLegacyGlobalFunctionForExtensionApi(navigateInjectable); + +export const showEntityDetails = asLegacyGlobalFunctionForExtensionApi(showEntityDetailsInjectable); +export const hideEntityDetails = asLegacyGlobalFunctionForExtensionApi(hideEntityDetailsInjectable); diff --git a/packages/core/src/features/catalog/__snapshots__/entity-running.test.tsx.snap b/packages/core/src/features/catalog/__snapshots__/entity-running.test.tsx.snap new file mode 100644 index 0000000000..2d5653372c --- /dev/null +++ b/packages/core/src/features/catalog/__snapshots__/entity-running.test.tsx.snap @@ -0,0 +1,1608 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`entity running technical tests when navigated to catalog renders 1`] = ` + +
+
+
+
+
+ + + home + + +
+
+
+ + + arrow_back + + +
+
+
+ + + arrow_forward + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ca +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + arrow_left + + +
+
+ 1 +
+
+ + + arrow_right + + +
+
+
+
+
+
+
+
+
+ +`; + +exports[`entity running technical tests when navigated to catalog when details panel is opened renders 1`] = ` + +
+
+
+
+
+ + + home + + +
+
+
+ + + arrow_back + + +
+
+
+ + + arrow_forward + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Ca +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ + + arrow_left + + +
+
+ 1 +
+
+ + + arrow_right + + +
+
+
+
+
+
+
+
+
+ +
+
+
+
+ Mock: a catalog entity + + + content_copy + + +
+ Copy +
+
+ + + close + + +
+ Close +
+
+
+
+
+
+ ace +
+
+ Click to open +
+
+ +
+
+
+
+
+
+ +`; diff --git a/packages/core/src/features/catalog/__snapshots__/opening-entity-details.test.tsx.snap b/packages/core/src/features/catalog/__snapshots__/opening-entity-details.test.tsx.snap index c7b284a08e..69f175cfcd 100644 --- a/packages/core/src/features/catalog/__snapshots__/opening-entity-details.test.tsx.snap +++ b/packages/core/src/features/catalog/__snapshots__/opening-entity-details.test.tsx.snap @@ -1925,10 +1925,10 @@ exports[`opening catalog entity details panel when navigated to the catalog when />