1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

display close button on deleted kube details page

Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
Sebastian Malton 2021-03-31 16:30:13 -04:00
parent 33c405bdcf
commit 1f02949aac
2 changed files with 27 additions and 18 deletions

View File

@ -53,9 +53,7 @@ export class KubeObjectListLayout extends React.Component<KubeObjectListLayoutPr
preloadStores={false} // loading handled in kubeWatchApi.subscribeStores() preloadStores={false} // loading handled in kubeWatchApi.subscribeStores()
detailsItem={this.selectedItem} detailsItem={this.selectedItem}
onDetails={this.onDetails} onDetails={this.onDetails}
renderItemMenu={(item) => { renderItemMenu={(item) => <KubeObjectMenu object={item as KubeObject} />} // safe because we are dealing with KubeObjects here
return <KubeObjectMenu object={item}/>;
}}
/> />
); );
} }

View File

@ -7,13 +7,13 @@ import { hideDetails } from "./kube-object-details";
import { apiManager } from "../../api/api-manager"; import { apiManager } from "../../api/api-manager";
import { kubeObjectMenuRegistry } from "../../../extensions/registries/kube-object-menu-registry"; import { kubeObjectMenuRegistry } from "../../../extensions/registries/kube-object-menu-registry";
export interface KubeObjectMenuProps<T extends KubeObject = any> extends MenuActionsProps { export interface KubeObjectMenuProps<T> extends MenuActionsProps {
object: T; object: T | null | undefined;
editable?: boolean; editable?: boolean;
removable?: boolean; removable?: boolean;
} }
export class KubeObjectMenu extends React.Component<KubeObjectMenuProps> { export class KubeObjectMenu<T extends KubeObject> extends React.Component<KubeObjectMenuProps<T>> {
get store() { get store() {
const { object } = this.props; const { object } = this.props;
@ -52,23 +52,35 @@ export class KubeObjectMenu extends React.Component<KubeObjectMenuProps> {
@autobind() @autobind()
renderRemoveMessage() { renderRemoveMessage() {
const { object } = this.props; const { object } = this.props;
const resourceKind = object.kind;
const resourceName = object.getName(); if (!object) {
return null;
}
return ( return (
<p>Remove {resourceKind} <b>{resourceName}</b>?</p> <p>Remove {object.kind} <b>{object.getName()}</b>?</p>
); );
} }
getMenuItems(object: T): React.ReactChild[] {
if (!object) {
return [];
}
return kubeObjectMenuRegistry
.getItemsForKind(object.kind, object.apiVersion)
.map(({components: { MenuItem }}, index) => (
<MenuItem
object={object}
key={`menu-item-${index}`}
toolbar={toolbar}
/>
));
}
render() { render() {
const { remove, update, renderRemoveMessage, isEditable, isRemovable } = this; const { remove, update, renderRemoveMessage, isEditable, isRemovable } = this;
const { className, object, editable, removable, toolbar, ...menuProps } = this.props; const { className, object, editable, removable, ...menuProps } = this.props;
if (!object) return null;
const menuItems = kubeObjectMenuRegistry.getItemsForKind(object.kind, object.apiVersion).map((item, index) => {
return <item.components.MenuItem object={object} key={`menu-item-${index}`} toolbar={toolbar} />;
});
return ( return (
<MenuActions <MenuActions
@ -76,10 +88,9 @@ export class KubeObjectMenu extends React.Component<KubeObjectMenuProps> {
updateAction={isEditable ? update : undefined} updateAction={isEditable ? update : undefined}
removeAction={isRemovable ? remove : undefined} removeAction={isRemovable ? remove : undefined}
removeConfirmationMessage={renderRemoveMessage} removeConfirmationMessage={renderRemoveMessage}
toolbar={toolbar}
{...menuProps} {...menuProps}
> >
{menuItems} {this.getMenuItems(object)}
</MenuActions> </MenuActions>
); );
} }