diff --git a/packages/core/src/renderer/components/+namespaces/delete-namespace.injectable.ts b/packages/core/src/renderer/components/+namespaces/delete-namespace.injectable.ts deleted file mode 100644 index 2fb91006cc..0000000000 --- a/packages/core/src/renderer/components/+namespaces/delete-namespace.injectable.ts +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import { getInjectable } from "@ogre-tools/injectable"; -import type { Namespace } from "../../../common/k8s-api/endpoints"; -import removeSubnamespaceInjectable from "./remove-subnamespace.injectable"; -import namespaceStoreInjectable from "./store.injectable"; - -const deleteNamespaceInjectable = getInjectable({ - id: "delete-namespace", - - instantiate: (di) => { - const namespaceStore = di.inject(namespaceStoreInjectable); - const removeSubnamespace = di.inject(removeSubnamespaceInjectable); - - return async (namespace: Namespace) => { - if (namespace.isSubnamespace()) { - return await removeSubnamespace(namespace.getName()); - } - - return await namespaceStore.remove(namespace); - } - } -}); - -export default deleteNamespaceInjectable; \ No newline at end of file diff --git a/packages/core/src/renderer/components/+namespaces/namespace-menu.tsx b/packages/core/src/renderer/components/+namespaces/namespace-menu.tsx deleted file mode 100644 index fe7819563a..0000000000 --- a/packages/core/src/renderer/components/+namespaces/namespace-menu.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -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"; -import type { MenuActionsProps } from "../menu/menu-actions"; -import { MenuActions } from "../menu/menu-actions"; -import deleteNamespaceInjectable from "./delete-namespace.injectable"; -import type { NamespaceStore } from "./store"; -import namespaceStoreInjectable from "./store.injectable"; - -export interface NamespaceMenuProps extends MenuActionsProps { - namespace: Namespace; -} - -interface Dependencies { - readonly namespaceStore: NamespaceStore; - readonly createEditResourceTab: (kubeObject: KubeObject) => void; - readonly withConfirmation: WithConfirmation; - readonly deleteNamespace: (namespace: Namespace) => Promise; -} - -function NonInjectedNamespaceMenu(props: NamespaceMenuProps & Dependencies) { - const { namespace, namespaceStore, deleteNamespace, createEditResourceTab, withConfirmation } = props; - - const remove = async () => { - deleteNamespace(namespace); - namespaceStore.clearSelected(); - }; - - const renderRemoveMessage = (object: KubeObject) => { - return ( -

- Remove {object.getName()}? -

- ); - } - - return ( - - createEditResourceTab(namespace)}> - - Edit - - - - Delete - - - ); -} - -export const NamespaceMenu = withInjectables(NonInjectedNamespaceMenu, { - getProps: (di, props) => ({ - ...props, - namespaceStore: di.inject(namespaceStoreInjectable), - createEditResourceTab: di.inject(createEditResourceTabInjectable), - withConfirmation: di.inject(withConfirmationInjectable), - deleteNamespace: di.inject(deleteNamespaceInjectable), - }), -}); \ 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 ad7929068e..cf0b24fb51 100644 --- a/packages/core/src/renderer/components/+namespaces/route.tsx +++ b/packages/core/src/renderer/components/+namespaces/route.tsx @@ -17,12 +17,6 @@ import namespaceStoreInjectable from "./store.injectable"; import { KubeObjectAge } from "../kube-object/age"; import openAddNamepaceDialogInjectable from "./add-dialog/open.injectable"; import { SubnamespaceBadge } from "./subnamespace-badge"; -import { NamespaceMenu } from "./namespace-menu"; -import type { OpenConfirmDialog } from "../confirm-dialog/open.injectable"; -import openConfirmDialogInjectable from "../confirm-dialog/open.injectable"; -import type { Namespace } from "../../../common/k8s-api/endpoints"; -import deleteNamespaceInjectable from "./delete-namespace.injectable"; -import { observer } from "mobx-react"; enum columnId { name = "name", @@ -34,105 +28,64 @@ enum columnId { interface Dependencies { namespaceStore: NamespaceStore; openAddNamespaceDialog: () => void; - openConfirmDialog: OpenConfirmDialog; - deleteNamespace: (namespace: Namespace) => Promise; } -const NonInjectedNamespacesRoute = observer(({ namespaceStore, openAddNamespaceDialog, openConfirmDialog, deleteNamespace }: Dependencies) => { - function onConfirm() { - const namespaces = namespaceStore.selectedItems; - - namespaces.forEach(deleteNamespace); - } - - const openRemoveNamespaceDialog = () => { - const namespaces = namespaceStore.selectedItems; - const message = ( -
+const NonInjectedNamespacesRoute = ({ namespaceStore, openAddNamespaceDialog }: Dependencies) => ( + + namespace.getName(), + [columnId.labels]: namespace => namespace.getLabels(), + [columnId.age]: namespace => -namespace.getCreationTimestamp(), + [columnId.status]: namespace => namespace.getStatus(), + }} + searchFilters={[ + namespace => namespace.getSearchFields(), + namespace => namespace.getStatus(), + ]} + renderHeaderTitle="Namespaces" + renderTableHeader={[ + { title: "Name", className: "name", sortBy: columnId.name, id: columnId.name }, + { className: "warning", showWithColumn: columnId.name }, + { title: "Labels", className: "labels scrollable", sortBy: columnId.labels, id: columnId.labels }, + { title: "Age", className: "age", sortBy: columnId.age, id: columnId.age }, + { title: "Status", className: "status", sortBy: columnId.status, id: columnId.status }, + ]} + renderTableContents={namespace => [ <> - Remove following namespaces? - {" "} -
- {namespaces.map(namespace => ( -
  • {namespace.getName()}
  • - ))} -
    - -
    - ); - - openConfirmDialog({ - ok: onConfirm, - labelOk: "Remove", - message, - }); - } - - return ( - - namespace.getName(), - [columnId.labels]: namespace => namespace.getLabels(), - [columnId.age]: namespace => -namespace.getCreationTimestamp(), - [columnId.status]: namespace => namespace.getStatus(), - }} - searchFilters={[ - namespace => namespace.getSearchFields(), - namespace => namespace.getStatus(), - ]} - renderHeaderTitle="Namespaces" - renderTableHeader={[ - { title: "Name", className: "name", sortBy: columnId.name, id: columnId.name }, - { className: "warning", showWithColumn: columnId.name }, - { title: "Labels", className: "labels scrollable", sortBy: columnId.labels, id: columnId.labels }, - { title: "Age", className: "age", sortBy: columnId.age, id: columnId.age }, - { title: "Status", className: "status", sortBy: columnId.status, id: columnId.status }, - ]} - renderTableContents={namespace => [ - <> - {namespace.getName()} - {namespace.isSubnamespace() && ( - - )} - , - , - namespace.getLabels().map(label => ( - - )), - , - { title: namespace.getStatus(), className: namespace.getStatus().toLowerCase() }, - ]} - addRemoveButtons={{ - addTooltip: "Add Namespace", - onAdd: openAddNamespaceDialog, - onRemove: namespaceStore.selectedItems.length > 0 ? openRemoveNamespaceDialog : undefined, - }} - renderItemMenu={namespace => ( - + )} + , + , + namespace.getLabels().map(label => ( + - )} - /> - - - ); -}); + )), + , + { title: namespace.getStatus(), className: namespace.getStatus().toLowerCase() }, + ]} + addRemoveButtons={{ + addTooltip: "Add Namespace", + onAdd: openAddNamespaceDialog, + }} + /> + + +); export const NamespacesRoute = withInjectables(NonInjectedNamespacesRoute, { getProps: (di) => ({ namespaceStore: di.inject(namespaceStoreInjectable), openAddNamespaceDialog: di.inject(openAddNamepaceDialogInjectable), - openConfirmDialog: di.inject(openConfirmDialogInjectable), - deleteNamespace: di.inject(deleteNamespaceInjectable), }), -}); +}); \ No newline at end of file diff --git a/packages/core/src/renderer/components/confirm-dialog/confirm-dialog.scss b/packages/core/src/renderer/components/confirm-dialog/confirm-dialog.scss index bc201e6f68..274ab127e0 100644 --- a/packages/core/src/renderer/components/confirm-dialog/confirm-dialog.scss +++ b/packages/core/src/renderer/components/confirm-dialog/confirm-dialog.scss @@ -41,11 +41,6 @@ font-size: small; margin-top: $margin; } - - .confirm-dialog-scrollable-content { - overflow: auto; - max-height: 200px; - } } .confirm-buttons {