From e9fbde7213ba1ce5afe2fd6960f5e45b77603ac9 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Thu, 2 Mar 2023 15:01:20 +0300 Subject: [PATCH] Custom remove namespaces methods Signed-off-by: Alex Andreev --- .../components/+namespaces/namespace-menu.tsx | 19 +++++++++++++++++-- .../renderer/components/+namespaces/route.tsx | 3 +++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/packages/core/src/renderer/components/+namespaces/namespace-menu.tsx b/packages/core/src/renderer/components/+namespaces/namespace-menu.tsx index f82acdd578..9153959d72 100644 --- a/packages/core/src/renderer/components/+namespaces/namespace-menu.tsx +++ b/packages/core/src/renderer/components/+namespaces/namespace-menu.tsx @@ -7,6 +7,7 @@ import { withInjectables } from "@ogre-tools/injectable-react"; import React from "react"; import type { Namespace } from "../../../common/k8s-api/endpoints"; import type { KubeObject } from "../../../common/k8s-api/kube-object"; +import withConfirmationInjectable, { WithConfirmation } from "../confirm-dialog/with-confirm.injectable"; import createEditResourceTabInjectable from "../dock/edit-resource/edit-resource-tab.injectable"; import { Icon } from "../icon"; import { MenuItem } from "../menu"; @@ -24,10 +25,11 @@ interface Dependencies { readonly removeSubnamespace: (name: string) => Promise; readonly namespaceStore: NamespaceStore; readonly createEditResourceTab: (kubeObject: KubeObject) => void; + readonly withConfirmation: WithConfirmation; } function NonInjectedNamespaceMenu(props: NamespaceMenuProps & Dependencies) { - const { namespace, removeSubnamespace, namespaceStore, createEditResourceTab } = props; + const { namespace, removeSubnamespace, namespaceStore, createEditResourceTab, withConfirmation } = props; const remove = async () => { if (namespace.isSubnamespace()) { @@ -39,13 +41,25 @@ function NonInjectedNamespaceMenu(props: NamespaceMenuProps & Dependencies) { namespaceStore.clearSelected(); }; + const renderRemoveMessage = (object: KubeObject) => { + return ( +

+ Remove {object.getName()}? +

+ ); + } + return ( createEditResourceTab(namespace)}> Edit - + Delete @@ -59,5 +73,6 @@ export const NamespaceMenu = withInjectables(N removeSubnamespace: di.inject(removeSubnamespaceInjectable), namespaceStore: di.inject(namespaceStoreInjectable), createEditResourceTab: di.inject(createEditResourceTabInjectable), + withConfirmation: di.inject(withConfirmationInjectable), }), }); \ No newline at end of file diff --git a/packages/core/src/renderer/components/+namespaces/route.tsx b/packages/core/src/renderer/components/+namespaces/route.tsx index 78c6396c15..bc22e837d0 100644 --- a/packages/core/src/renderer/components/+namespaces/route.tsx +++ b/packages/core/src/renderer/components/+namespaces/route.tsx @@ -77,6 +77,9 @@ const NonInjectedNamespacesRoute = ({ namespaceStore, openAddNamespaceDialog }: addRemoveButtons={{ addTooltip: "Add Namespace", onAdd: openAddNamespaceDialog, + onRemove: () => { + namespaceStore.selectedItems.forEach(namespace => namespaceStore.remove(namespace)); + }, }} renderItemMenu={namespace => (