diff --git a/src/extensions/lens-renderer-extension.ts b/src/extensions/lens-renderer-extension.ts index cc2143ec83..9c1f54dd75 100644 --- a/src/extensions/lens-renderer-extension.ts +++ b/src/extensions/lens-renderer-extension.ts @@ -28,9 +28,7 @@ import extensionPageParametersInjectable from "../renderer/routes/extension-page import { pipeline } from "@ogre-tools/fp"; import { getExtensionRoutePath } from "../renderer/routes/get-extension-route-path"; import { navigateToRouteInjectionToken } from "../common/front-end-routing/navigate-to-route-injection-token"; -import type { - CatalogEntityDetailRegistration, -} from "../renderer/components/+catalog/catalog-entity-detail-items/extension-registration"; +import type { CatalogEntityDetailRegistration } from "../renderer/components/+catalog/catalog-entity-detail-items/extension-registration"; export class LensRendererExtension extends LensExtension { globalPages: registries.PageRegistration[] = []; diff --git a/src/renderer/components/+catalog/catalog-entity-details.tsx b/src/renderer/components/+catalog/catalog-entity-details.tsx index b544b1da99..86b3d9414f 100644 --- a/src/renderer/components/+catalog/catalog-entity-details.tsx +++ b/src/renderer/components/+catalog/catalog-entity-details.tsx @@ -18,6 +18,7 @@ import catalogEntityDetailItemsInjectable from "./catalog-entity-detail-items/ca import { withInjectables } from "@ogre-tools/injectable-react"; import type { CatalogEntityDetailItem } from "./catalog-entity-detail-items/catalog-entity-detail-item-injection-token"; import type { IComputedValue } from "mobx"; +import showDefaultCatalogEntityDetailItemsInjectable from "./show-default-catalog-entity-detail-items.injectable"; export interface CatalogEntityDetailsProps { entity: T; @@ -26,59 +27,62 @@ export interface CatalogEntityDetailsProps { } interface Dependencies { - detailItems: IComputedValue[]>; + detailItems: IComputedValue[]>; + showDefaultCatalogEntityDetailItems: IComputedValue; } @observer class NonInjectedCatalogEntityDetails extends Component & Dependencies> { renderContent(entity: T) { - const { onRun, hideDetails } = this.props; + const { onRun, hideDetails, showDefaultCatalogEntityDetailItems } = this.props; return ( <> -
-
- - {entity.spec.icon?.material && } - - {entity.isEnabled() && ( -
- Click to open -
- )} -
-
- - {entity.getName()} - - - {entity.kind} - - - {entity.getSource()} - - - {entity.status.phase} - - - {getLabelBadges(entity, hideDetails)} - - {isDevelopment && ( - - {entity.getId()} + {showDefaultCatalogEntityDetailItems.get() && ( +
+
+ + {entity.spec.icon?.material && } + + {entity.isEnabled() && ( +
+ Click to open +
+ )} +
+
+ + {entity.getName()} - )} + + {entity.kind} + + + {entity.getSource()} + + + {entity.status.phase} + + + {getLabelBadges(entity, hideDetails)} + + {isDevelopment && ( + + {entity.getId()} + + )} +
-
+ )}
{this.props.detailItems.get().map(({ components: { Details }}, index) =>
)}
@@ -104,12 +108,20 @@ class NonInjectedCatalogEntityDetails extends Component } } -const InjectedCatalogEntityDetails = withInjectables>( +const InjectedCatalogEntityDetails = withInjectables< + Dependencies, + CatalogEntityDetailsProps +>( NonInjectedCatalogEntityDetails, { getProps: (di, props) => ({ detailItems: di.inject(catalogEntityDetailItemsInjectable, props.entity), + + showDefaultCatalogEntityDetailItems: di.inject( + showDefaultCatalogEntityDetailItemsInjectable, + props.entity, + ), ...props, }), }, diff --git a/src/renderer/components/+catalog/show-default-catalog-entity-detail-items.injectable.ts b/src/renderer/components/+catalog/show-default-catalog-entity-detail-items.injectable.ts new file mode 100644 index 0000000000..c101997aac --- /dev/null +++ b/src/renderer/components/+catalog/show-default-catalog-entity-detail-items.injectable.ts @@ -0,0 +1,31 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; +import { computed } from "mobx"; +import type { CatalogEntity } from "../../../common/catalog"; +import catalogEntityDetailItemsInjectable from "./catalog-entity-detail-items/catalog-entity-detail-items.injectable"; + +// TODO: Extract "default" entity detail items from components to same level than other items are +const showDefaultCatalogEntityDetailItemsInjectable = getInjectable({ + id: "show-default-catalog-entity-detail-items", + + instantiate: (di, catalogEntity: CatalogEntity) => { + const catalogEntityDetailItems = di.inject( + catalogEntityDetailItemsInjectable, + catalogEntity, + ); + + return computed(() => + !catalogEntityDetailItems.get().find((item) => item.orderNumber < -999), + ); + }, + + lifecycle: lifecycleEnum.keyedSingleton({ + getInstanceKey: (di, catalogEntity: CatalogEntity) => + `${catalogEntity.kind}/${catalogEntity.apiVersion}`, + }), +}); + +export default showDefaultCatalogEntityDetailItemsInjectable;