/** * Copyright (c) 2021 OpenLens Authors * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of * the Software, and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ 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 type { CatalogEntityItem } from "./catalog-entity-item"; import { isDevelopment } from "../../../common/vars"; import { cssNames } from "../../utils"; import { Avatar } from "../avatar"; interface Props { item: CatalogEntityItem | null | undefined; hideDetails(): void; } @observer export class CatalogEntityDetails extends Component> { categoryIcon(category: CatalogCategory) { if (category.metadata.icon.includes("; } else { return ; } } renderContent(item: CatalogEntityItem) { const detailItems = CatalogEntityDetailRegistry.getInstance().getItemsForKind(item.kind, item.apiVersion); const details = detailItems.map(({ components }, index) => { return ; }); const showDetails = detailItems.find((item) => item.priority > 999) === undefined; return ( <> {showDetails && (
item.onRun()} className={styles.avatar} > {item.entity.spec.icon?.material && } {item?.enabled && (
Click to open
)}
{item.name} {item.kind} {item.source} {item.phase} {...item.getLabelBadges(this.props.hideDetails)} {isDevelopment && ( {item.getId()} )}
)}
{details}
); } render() { const { item, hideDetails } = this.props; const title = `${item.kind}: ${item.name}`; return ( } onClose={hideDetails} > {item && this.renderContent(item)} ); } }