/** * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ import styles from "./catalog-entity-details.module.scss"; import React, { Component } from "react"; import { observer } from "mobx-react"; import { Drawer, DrawerItem } from "../drawer"; import type { CatalogCategory, CatalogEntity } from "../../../common/catalog"; import { Icon } from "../icon"; import { CatalogEntityDrawerMenu } from "./catalog-entity-drawer-menu"; import { CatalogEntityDetailRegistry } from "../../../extensions/registries"; import { isDevelopment } from "../../../common/vars"; import { cssNames } from "../../utils"; import { Avatar } from "../avatar"; import { getLabelBadges } from "./helpers"; export interface CatalogEntityDetailsProps { entity: T; hideDetails(): void; onRun: () => void; } @observer export class CatalogEntityDetails extends Component> { categoryIcon(category: CatalogCategory) { if (Icon.isSvg(category.metadata.icon)) { return ; } else { return ; } } renderContent(entity: T) { const { onRun, hideDetails } = this.props; const detailItems = CatalogEntityDetailRegistry.getInstance().getItemsForKind(entity.kind, entity.apiVersion); const details = detailItems.map(({ components }, index) => ); const showDefaultDetails = detailItems.find((item) => item.priority > 999) === undefined; return ( <> {showDefaultDetails && (
{entity.spec.icon?.material && } {entity.isEnabled() && (
Click to open
)}
{entity.getName()} {entity.kind} {entity.getSource()} {entity.status.phase} {getLabelBadges(entity, hideDetails)} {isDevelopment && ( {entity.getId()} )}
)}
{details}
); } render() { const { entity, hideDetails } = this.props; return ( } onClose={hideDetails} > {this.renderContent(entity)} ); } }