diff --git a/src/renderer/components/+network-ingresses/ingress-class-menu.injectable.tsx b/src/renderer/components/+network-ingresses/ingress-class-menu.injectable.tsx new file mode 100644 index 0000000000..75343eb35e --- /dev/null +++ b/src/renderer/components/+network-ingresses/ingress-class-menu.injectable.tsx @@ -0,0 +1,55 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import React from "react"; +import { getInjectable } from "@ogre-tools/injectable"; +import { withInjectables } from "@ogre-tools/injectable-react"; +import { computed } from "mobx"; +import { + kubeObjectMenuItemInjectionToken, + KubeObjectMenuItemComponent, +} from "../kube-object-menu/kube-object-menu-item-injection-token"; +import { ingressClassSetDefaultInjectable } from "./ingress-class-set-default.injectable"; +import { MenuItem } from "../menu"; +import type { IngressClass } from "../../../common/k8s-api/endpoints/ingress-class.api"; +import type { KubeObjectMenuProps } from "../kube-object-menu"; + +export interface IngressClassMenuProps extends KubeObjectMenuProps { + setDefault(item: IngressClass): void; +} + +export function NonInjectedIngressClassMenu({ object, setDefault }: IngressClassMenuProps) { + return ( + setDefault(object)}> + Set as default + + ); +} + +export const IngressClassMenu = withInjectables<{}, IngressClassMenuProps>(NonInjectedIngressClassMenu, { + getProps: (di, props) => ({ + ...props, + setDefault: di.inject(ingressClassSetDefaultInjectable), + }), +}); + + +const ingressClassMenuInjectable = getInjectable({ + id: "ingress-class-kube-object-menu", + + instantiate: () => { + return { + kind: "IngressClass", + apiVersions: ["networking.k8s.io/v1"], + Component: IngressClassMenu as KubeObjectMenuItemComponent, + enabled: computed(() => true), + orderNumber: 30, + } + }, + + injectionToken: kubeObjectMenuItemInjectionToken, +}); + +export default ingressClassMenuInjectable; diff --git a/src/renderer/components/+network-ingresses/ingress-classes.tsx b/src/renderer/components/+network-ingresses/ingress-classes.tsx index b2b44065d5..291834e410 100644 --- a/src/renderer/components/+network-ingresses/ingress-classes.tsx +++ b/src/renderer/components/+network-ingresses/ingress-classes.tsx @@ -15,7 +15,6 @@ import ingressClassStoreInjectable from "./ingress-class-store.injectable"; import type { IngressClass } from "../../../common/k8s-api/endpoints/ingress-class.api"; import { Icon } from "../icon"; import { cssNames } from "../../utils"; -import { KubeObjectMenu } from "../kube-object-menu"; enum columnId { name = "name", @@ -96,10 +95,6 @@ const NonInjectedIngressClasses = observer((props: Dependencies) => { ingressClass.getScope(), ingressClass.getKind(), ]} - renderItemMenu={item => ( - // TODO: customize menu + add set-default.injectable.ts item (?) - - )} /> );