From fffdc62ccbaa5b200f582e0967c8e5ac340eac28 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 27 Dec 2022 14:40:18 +0200 Subject: [PATCH] added icon-marker to see default ingress class in the list Signed-off-by: Roman --- .../ingress-class-set-default.injectable.ts | 19 +++++++++++++++++ .../ingress-classes.module.scss | 11 ++++++++++ .../+network-ingresses/ingress-classes.tsx | 21 +++++++++++++++++-- 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 src/renderer/components/+network-ingresses/ingress-class-set-default.injectable.ts diff --git a/src/renderer/components/+network-ingresses/ingress-class-set-default.injectable.ts b/src/renderer/components/+network-ingresses/ingress-class-set-default.injectable.ts new file mode 100644 index 0000000000..3bf96da322 --- /dev/null +++ b/src/renderer/components/+network-ingresses/ingress-class-set-default.injectable.ts @@ -0,0 +1,19 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; +import type { IngressClass } from "../../../common/k8s-api/endpoints/ingress-class.api"; + +// TODO: figure out if this needs to be injectable +export const ingressClassSetDefaultInjectable = getInjectable({ + id: "ingressClassSetDefaultInjectable", + + instantiate() { + return (item: IngressClass) => { + console.log("TODO: implement set-default ingress-class api call(s)", item); + }; + }, + + lifecycle: lifecycleEnum.singleton, +}); diff --git a/src/renderer/components/+network-ingresses/ingress-classes.module.scss b/src/renderer/components/+network-ingresses/ingress-classes.module.scss index 2081c6f0a2..3756468ef8 100644 --- a/src/renderer/components/+network-ingresses/ingress-classes.module.scss +++ b/src/renderer/components/+network-ingresses/ingress-classes.module.scss @@ -29,4 +29,15 @@ &.kind { } } + + :global(.Icon) { + &.set_default_icon { + filter: brightness(.75); + + &:hover { + filter: brightness(1.5); + } + } + } + } diff --git a/src/renderer/components/+network-ingresses/ingress-classes.tsx b/src/renderer/components/+network-ingresses/ingress-classes.tsx index 5a908ccf7a..b2b44065d5 100644 --- a/src/renderer/components/+network-ingresses/ingress-classes.tsx +++ b/src/renderer/components/+network-ingresses/ingress-classes.tsx @@ -13,6 +13,9 @@ import { withInjectables } from "@ogre-tools/injectable-react"; import type { IngressClassStore } from "./ingress-class-store"; 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", @@ -75,14 +78,28 @@ const NonInjectedIngressClasses = observer((props: Dependencies) => { { title: "Kind", className: styles.kind, sortBy: columnId.kind, id: columnId.kind }, ]} renderTableContents={(ingressClass: IngressClass) => [ - // TODO: add "is-default" icon/marker + some actions how to "set as default" for each IngressClass - ingressClass.getName(), +
+ {ingressClass.getName()} + {" "} + {ingressClass.isDefault && ( + + )} +
, ingressClass.getController(), ingressClass.getNs(), ingressClass.getApiGroup(), ingressClass.getScope(), ingressClass.getKind(), ]} + renderItemMenu={item => ( + // TODO: customize menu + add set-default.injectable.ts item (?) + + )} /> );