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()
detailsItem={this.selectedItem}
onDetails={this.onDetails}
renderItemMenu={(item) => {
return <KubeObjectMenu object={item}/>;
}}
renderItemMenu={(item) => <KubeObjectMenu object={item as KubeObject} />} // safe because we are dealing with KubeObjects here
/>
);
}

View File

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