mirror of
https://github.com/lensapp/lens.git
synced 2024-09-11 09:25:26 +03:00
chore: Convert sidebarItemInjectionToken to use InjectWithMetadata instead of duplicating the IDs
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
04273dcda2
commit
7924ab5504
@ -1,26 +1,21 @@
|
|||||||
/* eslint-disable prettier/prettier */
|
import { getInjectable, InjectionInstanceWithMeta } from "@ogre-tools/injectable";
|
||||||
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
|
||||||
import { computedInjectManyInjectable } from "@ogre-tools/injectable-extension-for-mobx";
|
import { computedInjectManyInjectable } from "@ogre-tools/injectable-extension-for-mobx";
|
||||||
import { HierarchicalSidebarItem, sidebarItemInjectionToken, SidebarItemRegistration } from "./tokens";
|
import { SidebarItemDeclaration, sidebarItemInjectionToken, SidebarItemRegistration } from "./tokens";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
import { byOrderNumber } from "@k8slens/utilities";
|
import { byOrderNumber } from "@k8slens/utilities";
|
||||||
|
|
||||||
const getSidebarItemsHierarchy = (
|
const getSidebarItemsHierarchy = (
|
||||||
registrations: SidebarItemRegistration[],
|
registrations: InjectionInstanceWithMeta<SidebarItemRegistration>[],
|
||||||
parentId: string | null,
|
parentId: string | null,
|
||||||
): HierarchicalSidebarItem[] => (
|
): SidebarItemDeclaration[] =>
|
||||||
registrations
|
registrations
|
||||||
.filter((item) => item.parentId === parentId)
|
.filter(({ instance }) => instance.parentId === parentId)
|
||||||
.map(({
|
.map(({ instance: { isActive, isVisible, ...registration }, meta: { id } }) => {
|
||||||
isActive,
|
const children = getSidebarItemsHierarchy(registrations, id);
|
||||||
isVisible,
|
|
||||||
...registration
|
|
||||||
}) => {
|
|
||||||
const children = getSidebarItemsHierarchy(registrations, registration.id);
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
...registration,
|
...registration,
|
||||||
|
id,
|
||||||
children,
|
children,
|
||||||
isVisible: computed(() => {
|
isVisible: computed(() => {
|
||||||
if (children.length === 0) {
|
if (children.length === 0) {
|
||||||
@ -46,8 +41,7 @@ const getSidebarItemsHierarchy = (
|
|||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
.sort(byOrderNumber)
|
.sort(byOrderNumber);
|
||||||
);
|
|
||||||
|
|
||||||
const sidebarItemsInjectable = getInjectable({
|
const sidebarItemsInjectable = getInjectable({
|
||||||
id: "sidebar-items",
|
id: "sidebar-items",
|
||||||
@ -55,7 +49,11 @@ const sidebarItemsInjectable = getInjectable({
|
|||||||
const computedInjectMany = di.inject(computedInjectManyInjectable);
|
const computedInjectMany = di.inject(computedInjectManyInjectable);
|
||||||
const sidebarItemRegistrations = computedInjectMany(sidebarItemInjectionToken);
|
const sidebarItemRegistrations = computedInjectMany(sidebarItemInjectionToken);
|
||||||
|
|
||||||
return computed(() => getSidebarItemsHierarchy(sidebarItemRegistrations.get(), null));
|
return computed(() => {
|
||||||
|
void sidebarItemRegistrations.get();
|
||||||
|
|
||||||
|
return getSidebarItemsHierarchy(di.injectManyWithMeta(sidebarItemInjectionToken), null);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import type { IComputedValue } from "mobx";
|
|||||||
import type { StrictReactNode } from "@k8slens/utilities";
|
import type { StrictReactNode } from "@k8slens/utilities";
|
||||||
|
|
||||||
export interface SidebarItemRegistration {
|
export interface SidebarItemRegistration {
|
||||||
id: string;
|
id?: undefined;
|
||||||
parentId: string | null;
|
parentId: string | null;
|
||||||
title: StrictReactNode;
|
title: StrictReactNode;
|
||||||
onClick: () => void;
|
onClick: () => void;
|
||||||
@ -18,7 +18,7 @@ export interface SidebarItemRegistration {
|
|||||||
orderNumber: number;
|
orderNumber: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface SidebarItem {
|
export interface SidebarItemDeclaration {
|
||||||
id: string;
|
id: string;
|
||||||
parentId: string | null;
|
parentId: string | null;
|
||||||
title: StrictReactNode;
|
title: StrictReactNode;
|
||||||
@ -26,10 +26,7 @@ export interface SidebarItem {
|
|||||||
getIcon?: () => StrictReactNode;
|
getIcon?: () => StrictReactNode;
|
||||||
isActive: IComputedValue<boolean>;
|
isActive: IComputedValue<boolean>;
|
||||||
isVisible: IComputedValue<boolean>;
|
isVisible: IComputedValue<boolean>;
|
||||||
}
|
children: SidebarItemDeclaration[];
|
||||||
|
|
||||||
export interface HierarchicalSidebarItem extends SidebarItem {
|
|
||||||
children: HierarchicalSidebarItem[];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export const sidebarItemInjectionToken = getInjectionToken<SidebarItemRegistration>({
|
export const sidebarItemInjectionToken = getInjectionToken<SidebarItemRegistration>({
|
||||||
|
@ -37,7 +37,7 @@ describe("disable sidebar items when cluster is not relevant", () => {
|
|||||||
|
|
||||||
clusterPageMenus: [
|
clusterPageMenus: [
|
||||||
{
|
{
|
||||||
id: "some-sidebar-item",
|
id: "sidebar-item-some",
|
||||||
title: "Some sidebar item",
|
title: "Some sidebar item",
|
||||||
|
|
||||||
components: {
|
components: {
|
||||||
@ -60,7 +60,7 @@ describe("disable sidebar items when cluster is not relevant", () => {
|
|||||||
|
|
||||||
it("does not show the sidebar item", () => {
|
it("does not show the sidebar item", () => {
|
||||||
const actual = rendered.queryByTestId(
|
const actual = rendered.queryByTestId(
|
||||||
"sidebar-item-some-extension-name-some-sidebar-item",
|
"sidebar-item-sidebar-item-some-extension-name-some",
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(actual).not.toBeInTheDocument();
|
expect(actual).not.toBeInTheDocument();
|
||||||
@ -78,7 +78,7 @@ describe("disable sidebar items when cluster is not relevant", () => {
|
|||||||
|
|
||||||
it("does not show the sidebar item", () => {
|
it("does not show the sidebar item", () => {
|
||||||
const actual = rendered.queryByTestId(
|
const actual = rendered.queryByTestId(
|
||||||
"sidebar-item-some-extension-name-some-sidebar-item",
|
"sidebar-item-sidebar-item-some-extension-name-some",
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(actual).not.toBeInTheDocument();
|
expect(actual).not.toBeInTheDocument();
|
||||||
@ -96,7 +96,7 @@ describe("disable sidebar items when cluster is not relevant", () => {
|
|||||||
|
|
||||||
it("shows the sidebar item", () => {
|
it("shows the sidebar item", () => {
|
||||||
const actual = rendered.getByTestId(
|
const actual = rendered.getByTestId(
|
||||||
"sidebar-item-test-extension-some-sidebar-item",
|
"sidebar-item-sidebar-item-test-extension-some",
|
||||||
);
|
);
|
||||||
|
|
||||||
expect(actual).toBeInTheDocument();
|
expect(actual).toBeInTheDocument();
|
||||||
|
@ -85,9 +85,8 @@ describe("cluster - order of sidebar items", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const someParentSidebarItemInjectable = getInjectable({
|
const someParentSidebarItemInjectable = getInjectable({
|
||||||
id: "some-parent-sidebar-item",
|
id: "sidebar-item-some-parent",
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "some-parent-id",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
title: "Some parent",
|
title: "Some parent",
|
||||||
onClick: noop,
|
onClick: noop,
|
||||||
@ -97,9 +96,8 @@ const someParentSidebarItemInjectable = getInjectable({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const someOtherParentSidebarItemInjectable = getInjectable({
|
const someOtherParentSidebarItemInjectable = getInjectable({
|
||||||
id: "some-other-parent-sidebar-item",
|
id: "sidebar-item-some-other-parent",
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "some-other-parent-id",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
title: "Some other parent",
|
title: "Some other parent",
|
||||||
onClick: noop,
|
onClick: noop,
|
||||||
@ -109,9 +107,8 @@ const someOtherParentSidebarItemInjectable = getInjectable({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const someAnotherParentSidebarItemInjectable = getInjectable({
|
const someAnotherParentSidebarItemInjectable = getInjectable({
|
||||||
id: "some-another-parent-sidebar-item",
|
id: "sidebar-item-some-another-parent",
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "some-another-parent-id",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
title: "Some another parent",
|
title: "Some another parent",
|
||||||
onClick: noop,
|
onClick: noop,
|
||||||
@ -121,10 +118,9 @@ const someAnotherParentSidebarItemInjectable = getInjectable({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const someChildSidebarItemInjectable = getInjectable({
|
const someChildSidebarItemInjectable = getInjectable({
|
||||||
id: "some-child-sidebar-item",
|
id: "sidebar-item-some-child",
|
||||||
instantiate: (di) => ({
|
instantiate: () => ({
|
||||||
id: "some-child-id",
|
parentId: someParentSidebarItemInjectable.id,
|
||||||
parentId: di.inject(someParentSidebarItemInjectable).id,
|
|
||||||
title: "Some child",
|
title: "Some child",
|
||||||
onClick: noop,
|
onClick: noop,
|
||||||
orderNumber: 168,
|
orderNumber: 168,
|
||||||
@ -133,10 +129,9 @@ const someChildSidebarItemInjectable = getInjectable({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const someOtherChildSidebarItemInjectable = getInjectable({
|
const someOtherChildSidebarItemInjectable = getInjectable({
|
||||||
id: "some-other-child-sidebar-item",
|
id: "sidebar-item-some-other-child",
|
||||||
instantiate: (di) => ({
|
instantiate: () => ({
|
||||||
id: "some-other-child-id",
|
parentId: someParentSidebarItemInjectable.id,
|
||||||
parentId: di.inject(someParentSidebarItemInjectable).id,
|
|
||||||
title: "Some other child",
|
title: "Some other child",
|
||||||
onClick: noop,
|
onClick: noop,
|
||||||
orderNumber: 252,
|
orderNumber: 252,
|
||||||
@ -145,10 +140,9 @@ const someOtherChildSidebarItemInjectable = getInjectable({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const someAnotherChildSidebarItemInjectable = getInjectable({
|
const someAnotherChildSidebarItemInjectable = getInjectable({
|
||||||
id: "some-another-child-sidebar-item",
|
id: "sidebar-item-some-another-child",
|
||||||
instantiate: (di) => ({
|
instantiate: () => ({
|
||||||
id: "some-another-child-id",
|
parentId: someParentSidebarItemInjectable.id,
|
||||||
parentId: di.inject(someParentSidebarItemInjectable).id,
|
|
||||||
title: "Some another child",
|
title: "Some another child",
|
||||||
onClick: noop,
|
onClick: noop,
|
||||||
orderNumber: 210,
|
orderNumber: 210,
|
||||||
|
@ -295,9 +295,8 @@ describe("cluster - sidebar and tab navigation for core", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const someParentSidebarItemInjectable = getInjectable({
|
const someParentSidebarItemInjectable = getInjectable({
|
||||||
id: "some-parent-sidebar-item",
|
id: "sidebar-item-some-parent",
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "some-parent-id",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
title: "Some parent",
|
title: "Some parent",
|
||||||
onClick: noop,
|
onClick: noop,
|
||||||
@ -308,15 +307,14 @@ const someParentSidebarItemInjectable = getInjectable({
|
|||||||
});
|
});
|
||||||
|
|
||||||
const someChildSidebarItemInjectable = getInjectable({
|
const someChildSidebarItemInjectable = getInjectable({
|
||||||
id: "some-child-sidebar-item",
|
id: "sidebar-item-some-child",
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(testRouteInjectable);
|
const route = di.inject(testRouteInjectable);
|
||||||
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
||||||
const routeIsActive = di.inject(routeIsActiveInjectable, route);
|
const routeIsActive = di.inject(routeIsActiveInjectable, route);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "some-child-id",
|
parentId: someParentSidebarItemInjectable.id,
|
||||||
parentId: di.inject(someParentSidebarItemInjectable).id,
|
|
||||||
title: "Some child",
|
title: "Some child",
|
||||||
onClick: () => navigateToRoute(route),
|
onClick: () => navigateToRoute(route),
|
||||||
isActive: routeIsActive,
|
isActive: routeIsActive,
|
||||||
|
@ -27,7 +27,7 @@ describe("cluster - visibility of sidebar items", () => {
|
|||||||
runInAction(() => {
|
runInAction(() => {
|
||||||
windowDi.register(testRouteInjectable);
|
windowDi.register(testRouteInjectable);
|
||||||
windowDi.register(testRouteComponentInjectable);
|
windowDi.register(testRouteComponentInjectable);
|
||||||
windowDi.register(testSidebarItemsInjectable);
|
windowDi.register(testSidebarItemInjectable);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -94,15 +94,14 @@ const testRouteComponentInjectable = getInjectable({
|
|||||||
injectionToken: routeSpecificComponentInjectionToken,
|
injectionToken: routeSpecificComponentInjectionToken,
|
||||||
});
|
});
|
||||||
|
|
||||||
const testSidebarItemsInjectable = getInjectable({
|
const testSidebarItemInjectable = getInjectable({
|
||||||
id: "some-sidebar-item-injectable",
|
id: "sidebar-item-test",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const testRoute = di.inject(testRouteInjectable);
|
const testRoute = di.inject(testRouteInjectable);
|
||||||
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
const navigateToRoute = di.inject(navigateToRouteInjectionToken);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "some-item-id",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
title: "Some item",
|
title: "Some item",
|
||||||
onClick: () => navigateToRoute(testRoute),
|
onClick: () => navigateToRoute(testRoute),
|
||||||
|
@ -11,13 +11,12 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToClusterOverviewInjectable from "../../../common/front-end-routing/routes/cluster/overview/navigate-to-cluster-overview.injectable";
|
import navigateToClusterOverviewInjectable from "../../../common/front-end-routing/routes/cluster/overview/navigate-to-cluster-overview.injectable";
|
||||||
|
|
||||||
const clusterOverviewSidebarItemInjectable = getInjectable({
|
const clusterOverviewSidebarItemInjectable = getInjectable({
|
||||||
id: "cluster-overview-sidebar-item",
|
id: "sidebar-item-cluster-overview",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(clusterOverviewRouteInjectable);
|
const route = di.inject(clusterOverviewRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "cluster-overview",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
title: "Cluster",
|
title: "Cluster",
|
||||||
getIcon: () => <Icon svg="kube" />,
|
getIcon: () => <Icon svg="kube" />,
|
||||||
|
@ -10,14 +10,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToHorizontalPodAutoscalersInjectable from "../../../common/front-end-routing/routes/cluster/config/horizontal-pod-autoscalers/navigate-to-horizontal-pod-autoscalers.injectable";
|
import navigateToHorizontalPodAutoscalersInjectable from "../../../common/front-end-routing/routes/cluster/config/horizontal-pod-autoscalers/navigate-to-horizontal-pod-autoscalers.injectable";
|
||||||
|
|
||||||
const horizontalPodAutoScalersSidebarItemInjectable = getInjectable({
|
const horizontalPodAutoScalersSidebarItemInjectable = getInjectable({
|
||||||
id: "horizontal-pod-auto-scalers-sidebar-item",
|
id: "sidebar-item-horizontal-pod-auto-scalers",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(horizontalPodAutoscalersRouteInjectable);
|
const route = di.inject(horizontalPodAutoscalersRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "horizontal-pod-auto-scalers",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "HPA",
|
title: "HPA",
|
||||||
onClick: di.inject(navigateToHorizontalPodAutoscalersInjectable),
|
onClick: di.inject(navigateToHorizontalPodAutoscalersInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToLeasesInjectable from "../../../common/front-end-routing/routes/cluster/config/leases/navigate-to-leases.injectable";
|
import navigateToLeasesInjectable from "../../../common/front-end-routing/routes/cluster/config/leases/navigate-to-leases.injectable";
|
||||||
|
|
||||||
const leasesSidebarItemInjectable = getInjectable({
|
const leasesSidebarItemInjectable = getInjectable({
|
||||||
id: "leases-sidebar-item",
|
id: "sidebar-item-leases",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(leasesRouteInjectable);
|
const route = di.inject(leasesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "leases",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "Leases",
|
title: "Leases",
|
||||||
onClick: di.inject(navigateToLeasesInjectable),
|
onClick: di.inject(navigateToLeasesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToLimitRangesInjectable from "../../../common/front-end-routing/routes/cluster/config/limit-ranges/navigate-to-limit-ranges.injectable";
|
import navigateToLimitRangesInjectable from "../../../common/front-end-routing/routes/cluster/config/limit-ranges/navigate-to-limit-ranges.injectable";
|
||||||
|
|
||||||
const limitRangesSidebarItemInjectable = getInjectable({
|
const limitRangesSidebarItemInjectable = getInjectable({
|
||||||
id: "limit-ranges-sidebar-item",
|
id: "sidebar-item-limit-ranges",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(limitRangesRouteInjectable);
|
const route = di.inject(limitRangesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "limit-ranges",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "Limit Ranges",
|
title: "Limit Ranges",
|
||||||
onClick: di.inject(navigateToLimitRangesInjectable),
|
onClick: di.inject(navigateToLimitRangesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToConfigMapsInjectable from "../../../common/front-end-routing/routes/cluster/config/config-maps/navigate-to-config-maps.injectable";
|
import navigateToConfigMapsInjectable from "../../../common/front-end-routing/routes/cluster/config/config-maps/navigate-to-config-maps.injectable";
|
||||||
|
|
||||||
const configMapsSidebarItemInjectable = getInjectable({
|
const configMapsSidebarItemInjectable = getInjectable({
|
||||||
id: "config-maps-sidebar-item",
|
id: "sidebar-item-config-maps",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(configMapsRouteInjectable);
|
const route = di.inject(configMapsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "config-maps",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "ConfigMaps",
|
title: "ConfigMaps",
|
||||||
onClick: di.inject(navigateToConfigMapsInjectable),
|
onClick: di.inject(navigateToConfigMapsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -10,14 +10,13 @@ import navigateToMutatingWebhookConfigurationsInjectable from "../../../common/f
|
|||||||
import configSidebarItemInjectable from "../config/config-sidebar-item.injectable";
|
import configSidebarItemInjectable from "../config/config-sidebar-item.injectable";
|
||||||
|
|
||||||
const mutatingWebhookConfigurationsSidebarItemInjectable = getInjectable({
|
const mutatingWebhookConfigurationsSidebarItemInjectable = getInjectable({
|
||||||
id: "mutating-webhook-configurations-sidebar-item",
|
id: "sidebar-item-mutating-webhook-configurations",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(mutatingWebhookConfigurationsRouteInjectable);
|
const route = di.inject(mutatingWebhookConfigurationsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "mutating-webhook-configurations",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "Mutating Webhook Configs",
|
title: "Mutating Webhook Configs",
|
||||||
onClick: di.inject(navigateToMutatingWebhookConfigurationsInjectable),
|
onClick: di.inject(navigateToMutatingWebhookConfigurationsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToPodDisruptionBudgetsInjectable from "../../../common/front-end-routing/routes/cluster/config/pod-disruption-budgets/navigate-to-pod-disruption-budgets.injectable";
|
import navigateToPodDisruptionBudgetsInjectable from "../../../common/front-end-routing/routes/cluster/config/pod-disruption-budgets/navigate-to-pod-disruption-budgets.injectable";
|
||||||
|
|
||||||
const podDisruptionBudgetsSidebarItemInjectable = getInjectable({
|
const podDisruptionBudgetsSidebarItemInjectable = getInjectable({
|
||||||
id: "pod-disruption-budgets-sidebar-item",
|
id: "sidebar-item-pod-disruption-budgets",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(podDisruptionBudgetsRouteInjectable);
|
const route = di.inject(podDisruptionBudgetsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "pod-disruption-budgets",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "Pod Disruption Budgets",
|
title: "Pod Disruption Budgets",
|
||||||
onClick: di.inject(navigateToPodDisruptionBudgetsInjectable),
|
onClick: di.inject(navigateToPodDisruptionBudgetsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToPriorityClassesInjectable from "../../../common/front-end-routing/routes/cluster/config/priority-classes/navigate-to-priority-classes.injectable";
|
import navigateToPriorityClassesInjectable from "../../../common/front-end-routing/routes/cluster/config/priority-classes/navigate-to-priority-classes.injectable";
|
||||||
|
|
||||||
const priorityClassesSidebarItemInjectable = getInjectable({
|
const priorityClassesSidebarItemInjectable = getInjectable({
|
||||||
id: "priority-classes-sidebar-item",
|
id: "sidebar-item-priority-classes",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(priorityClassesRouteInjectable);
|
const route = di.inject(priorityClassesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "priority-classes",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "Priority Classes",
|
title: "Priority Classes",
|
||||||
onClick: di.inject(navigateToPriorityClassesInjectable),
|
onClick: di.inject(navigateToPriorityClassesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToResourceQuotasInjectable from "../../../common/front-end-routing/routes/cluster/config/resource-quotas/navigate-to-resource-quotas.injectable";
|
import navigateToResourceQuotasInjectable from "../../../common/front-end-routing/routes/cluster/config/resource-quotas/navigate-to-resource-quotas.injectable";
|
||||||
|
|
||||||
const resourceQuotasSidebarItemInjectable = getInjectable({
|
const resourceQuotasSidebarItemInjectable = getInjectable({
|
||||||
id: "resource-quotas-sidebar-item",
|
id: "sidebar-item-resource-quotas",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(resourceQuotasRouteInjectable);
|
const route = di.inject(resourceQuotasRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "resource-quotas",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "Resource Quotas",
|
title: "Resource Quotas",
|
||||||
onClick: di.inject(navigateToResourceQuotasInjectable),
|
onClick: di.inject(navigateToResourceQuotasInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToRuntimeClassesInjectable from "../../../common/front-end-routing/routes/cluster/config/runtime-classes/navigate-to-runtime-classes.injectable";
|
import navigateToRuntimeClassesInjectable from "../../../common/front-end-routing/routes/cluster/config/runtime-classes/navigate-to-runtime-classes.injectable";
|
||||||
|
|
||||||
const runtimeClassesSidebarItemInjectable = getInjectable({
|
const runtimeClassesSidebarItemInjectable = getInjectable({
|
||||||
id: "runtime-classes-sidebar-item",
|
id: "sidebar-item-runtime-classes",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(runtimeClassesRouteInjectable);
|
const route = di.inject(runtimeClassesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "runtime-classes",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "Runtime Classes",
|
title: "Runtime Classes",
|
||||||
onClick: di.inject(navigateToRuntimeClassesInjectable),
|
onClick: di.inject(navigateToRuntimeClassesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToSecretsInjectable from "../../../common/front-end-routing/routes/cluster/config/secrets/navigate-to-secrets.injectable";
|
import navigateToSecretsInjectable from "../../../common/front-end-routing/routes/cluster/config/secrets/navigate-to-secrets.injectable";
|
||||||
|
|
||||||
const secretsSidebarItemInjectable = getInjectable({
|
const secretsSidebarItemInjectable = getInjectable({
|
||||||
id: "secrets-sidebar-item",
|
id: "sidebar-item-secrets",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(secretsRouteInjectable);
|
const route = di.inject(secretsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "secrets",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "Secrets",
|
title: "Secrets",
|
||||||
onClick: di.inject(navigateToSecretsInjectable),
|
onClick: di.inject(navigateToSecretsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -10,14 +10,13 @@ import navigateToValidatingWebhookConfigurationsInjectable from "../../../common
|
|||||||
import configSidebarItemInjectable from "../config/config-sidebar-item.injectable";
|
import configSidebarItemInjectable from "../config/config-sidebar-item.injectable";
|
||||||
|
|
||||||
const validatingWebhookConfigurationsSidebarItemInjectable = getInjectable({
|
const validatingWebhookConfigurationsSidebarItemInjectable = getInjectable({
|
||||||
id: "validating-webhook-configurations-sidebar-item",
|
id: "sidebar-item-validating-webhook-configurations",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(validatingWebhookConfigurationsRouteInjectable);
|
const route = di.inject(validatingWebhookConfigurationsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "validating-webhook-configurations",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "Validating Webhook Configs",
|
title: "Validating Webhook Configs",
|
||||||
onClick: di.inject(navigateToValidatingWebhookConfigurationsInjectable),
|
onClick: di.inject(navigateToValidatingWebhookConfigurationsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -10,14 +10,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToVerticalPodAutoscalersInjectable from "../../../common/front-end-routing/routes/cluster/config/vertical-pod-autoscalers/navigate-to-vertical-pod-autoscalers.injectable";
|
import navigateToVerticalPodAutoscalersInjectable from "../../../common/front-end-routing/routes/cluster/config/vertical-pod-autoscalers/navigate-to-vertical-pod-autoscalers.injectable";
|
||||||
|
|
||||||
const verticalPodAutoScalersSidebarItemInjectable = getInjectable({
|
const verticalPodAutoScalersSidebarItemInjectable = getInjectable({
|
||||||
id: "vertical-pod-auto-scalers-sidebar-item",
|
id: "sidebar-item-vertical-pod-auto-scalers",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(verticalPodAutoscalersRouteInjectable);
|
const route = di.inject(verticalPodAutoscalersRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "vertical-pod-auto-scalers",
|
parentId: configSidebarItemInjectable.id,
|
||||||
parentId: di.inject(configSidebarItemInjectable).id,
|
|
||||||
title: "VPA",
|
title: "VPA",
|
||||||
onClick: di.inject(navigateToVerticalPodAutoscalersInjectable),
|
onClick: di.inject(navigateToVerticalPodAutoscalersInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -9,10 +9,9 @@ import { sidebarItemInjectionToken } from "@k8slens/cluster-sidebar";
|
|||||||
import { noop } from "lodash/fp";
|
import { noop } from "lodash/fp";
|
||||||
|
|
||||||
const configSidebarItemInjectable = getInjectable({
|
const configSidebarItemInjectable = getInjectable({
|
||||||
id: "config-sidebar-item",
|
id: "sidebar-item-config",
|
||||||
|
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "config",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
title: "Config",
|
title: "Config",
|
||||||
getIcon: () => <Icon material="list" />,
|
getIcon: () => <Icon material="list" />,
|
||||||
|
@ -27,10 +27,9 @@ const customResourceDefinitionGroupsSidebarItemsComputedInjectable = getInjectab
|
|||||||
|
|
||||||
const toCustomResourceGroupToSidebarItems = ([group, definitions]: [string, CustomResourceDefinition[]], index: number) => {
|
const toCustomResourceGroupToSidebarItems = ([group, definitions]: [string, CustomResourceDefinition[]], index: number) => {
|
||||||
const customResourceGroupSidebarItem = getInjectable({
|
const customResourceGroupSidebarItem = getInjectable({
|
||||||
id: `custom-resource-group-${group}-sidebar-item`,
|
id: `sidebar-item-custom-resource-group-${group}`,
|
||||||
instantiate: (di): SidebarItemRegistration => ({
|
instantiate: (): SidebarItemRegistration => ({
|
||||||
id: `custom-resource-group-${group}`,
|
parentId: customResourcesSidebarItemInjectable.id,
|
||||||
parentId: di.inject(customResourcesSidebarItemInjectable).id,
|
|
||||||
onClick: noop,
|
onClick: noop,
|
||||||
title: group,
|
title: group,
|
||||||
orderNumber: 10 * index,
|
orderNumber: 10 * index,
|
||||||
@ -44,10 +43,9 @@ const customResourceDefinitionGroupsSidebarItemsComputedInjectable = getInjectab
|
|||||||
};
|
};
|
||||||
|
|
||||||
return getInjectable({
|
return getInjectable({
|
||||||
id: `custom-resource-group-${group}/${definition.getPluralName()}-sidebar-item`,
|
id: `sidebar-item-custom-resource-group-${group}/${definition.getPluralName()}`,
|
||||||
instantiate: (di): SidebarItemRegistration => ({
|
instantiate: (di): SidebarItemRegistration => ({
|
||||||
id: `custom-resource-group-${group}/${definition.getPluralName()}`,
|
parentId: customResourceGroupSidebarItem.id,
|
||||||
parentId: di.inject(customResourceGroupSidebarItem).id,
|
|
||||||
onClick: () => navigateToCustomResources(parameters),
|
onClick: () => navigateToCustomResources(parameters),
|
||||||
title: definition.getResourceKind(),
|
title: definition.getResourceKind(),
|
||||||
isActive: computedAnd(
|
isActive: computedAnd(
|
||||||
|
@ -10,13 +10,12 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import customResourcesSidebarItemInjectable from "./custom-resources-sidebar-item.injectable";
|
import customResourcesSidebarItemInjectable from "./custom-resources-sidebar-item.injectable";
|
||||||
|
|
||||||
const customResourceDefinitionsSidebarItemInjectable = getInjectable({
|
const customResourceDefinitionsSidebarItemInjectable = getInjectable({
|
||||||
id: "custom-resource-definitions-sidebar-item",
|
id: "sidebar-item-custom-resource-definitions",
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const customResourceDefinitionsRoute = di.inject(customResourceDefinitionsRouteInjectable);
|
const customResourceDefinitionsRoute = di.inject(customResourceDefinitionsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "custom-resource-definitions",
|
parentId: customResourcesSidebarItemInjectable.id,
|
||||||
parentId: di.inject(customResourcesSidebarItemInjectable).id,
|
|
||||||
title: "Definitions",
|
title: "Definitions",
|
||||||
onClick: di.inject(navigateToCustomResourcesInjectable),
|
onClick: di.inject(navigateToCustomResourcesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, customResourceDefinitionsRoute),
|
isActive: di.inject(routeIsActiveInjectable, customResourceDefinitionsRoute),
|
||||||
|
@ -9,9 +9,8 @@ import React from "react";
|
|||||||
import { Icon } from "../icon";
|
import { Icon } from "../icon";
|
||||||
|
|
||||||
const customResourcesSidebarItemInjectable = getInjectable({
|
const customResourcesSidebarItemInjectable = getInjectable({
|
||||||
id: "custom-resources-sidebar-item",
|
id: "sidebar-item-custom-resources",
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "custom-resources",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
title: "Custom Resources",
|
title: "Custom Resources",
|
||||||
getIcon: () => <Icon material="extension" />,
|
getIcon: () => <Icon material="extension" />,
|
||||||
|
@ -12,13 +12,12 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToEventsInjectable from "../../../common/front-end-routing/routes/cluster/events/navigate-to-events.injectable";
|
import navigateToEventsInjectable from "../../../common/front-end-routing/routes/cluster/events/navigate-to-events.injectable";
|
||||||
|
|
||||||
const eventsSidebarItemInjectable = getInjectable({
|
const eventsSidebarItemInjectable = getInjectable({
|
||||||
id: "events-sidebar-item",
|
id: "sidebar-item-events",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(eventsRouteInjectable);
|
const route = di.inject(eventsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "events",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
getIcon: () => <Icon material="access_time" />,
|
getIcon: () => <Icon material="access_time" />,
|
||||||
title: "Events",
|
title: "Events",
|
||||||
|
@ -10,14 +10,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToHelmChartsInjectable from "../../../common/front-end-routing/routes/cluster/helm/charts/navigate-to-helm-charts.injectable";
|
import navigateToHelmChartsInjectable from "../../../common/front-end-routing/routes/cluster/helm/charts/navigate-to-helm-charts.injectable";
|
||||||
|
|
||||||
const helmChartsSidebarItemInjectable = getInjectable({
|
const helmChartsSidebarItemInjectable = getInjectable({
|
||||||
id: "helm-charts-sidebar-item",
|
id: "sidebar-item-helm-charts",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(helmChartsRouteInjectable);
|
const route = di.inject(helmChartsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "charts",
|
parentId: helmSidebarItemInjectable.id,
|
||||||
parentId: di.inject(helmSidebarItemInjectable).id,
|
|
||||||
title: "Charts",
|
title: "Charts",
|
||||||
onClick: di.inject(navigateToHelmChartsInjectable),
|
onClick: di.inject(navigateToHelmChartsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToHelmReleasesInjectable from "../../../common/front-end-routing/routes/cluster/helm/releases/navigate-to-helm-releases.injectable";
|
import navigateToHelmReleasesInjectable from "../../../common/front-end-routing/routes/cluster/helm/releases/navigate-to-helm-releases.injectable";
|
||||||
|
|
||||||
const helmReleasesSidebarItemInjectable = getInjectable({
|
const helmReleasesSidebarItemInjectable = getInjectable({
|
||||||
id: "helm-releases-sidebar-item",
|
id: "sidebar-item-helm-releases",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(helmReleasesRouteInjectable);
|
const route = di.inject(helmReleasesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "releases",
|
parentId: helmSidebarItemInjectable.id,
|
||||||
parentId: di.inject(helmSidebarItemInjectable).id,
|
|
||||||
title: "Releases",
|
title: "Releases",
|
||||||
onClick: di.inject(navigateToHelmReleasesInjectable),
|
onClick: di.inject(navigateToHelmReleasesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -9,10 +9,9 @@ import { Icon } from "@k8slens/icon";
|
|||||||
import { noop } from "lodash/fp";
|
import { noop } from "lodash/fp";
|
||||||
|
|
||||||
const helmSidebarItemInjectable = getInjectable({
|
const helmSidebarItemInjectable = getInjectable({
|
||||||
id: "helm-sidebar-item",
|
id: "sidebar-item-helm",
|
||||||
|
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "helm",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
getIcon: () => <Icon svg="helm" />,
|
getIcon: () => <Icon svg="helm" />,
|
||||||
title: "Helm",
|
title: "Helm",
|
||||||
|
@ -54,9 +54,8 @@ const extensionSidebarItemRegistratorInjectable = getInjectable({
|
|||||||
: extension.sanitizedExtensionId;
|
: extension.sanitizedExtensionId;
|
||||||
|
|
||||||
return getInjectable({
|
return getInjectable({
|
||||||
id: `${id}-sidebar-item`,
|
id: `sidebar-item-${id}`,
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id,
|
|
||||||
orderNumber: registration.orderNumber ?? 9999,
|
orderNumber: registration.orderNumber ?? 9999,
|
||||||
|
|
||||||
parentId: registration.parentId
|
parentId: registration.parentId
|
||||||
|
@ -8,7 +8,7 @@ import { observer } from "mobx-react";
|
|||||||
import React from "react";
|
import React from "react";
|
||||||
import siblingTabsInjectable from "../../routes/sibling-tabs.injectable";
|
import siblingTabsInjectable from "../../routes/sibling-tabs.injectable";
|
||||||
import { TabLayout } from "./tab-layout-2";
|
import { TabLayout } from "./tab-layout-2";
|
||||||
import type { HierarchicalSidebarItem } from "@k8slens/cluster-sidebar";
|
import type { SidebarItemDeclaration } from "@k8slens/cluster-sidebar";
|
||||||
import type { StrictReactNode } from "@k8slens/utilities";
|
import type { StrictReactNode } from "@k8slens/utilities";
|
||||||
|
|
||||||
interface SiblingTabLayoutProps {
|
interface SiblingTabLayoutProps {
|
||||||
@ -17,7 +17,7 @@ interface SiblingTabLayoutProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
tabs: IComputedValue<HierarchicalSidebarItem[]>;
|
tabs: IComputedValue<SidebarItemDeclaration[]>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const NonInjectedSiblingsInTabLayout = observer(
|
const NonInjectedSiblingsInTabLayout = observer(
|
||||||
|
@ -12,7 +12,7 @@ import { Icon } from "@k8slens/icon";
|
|||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import type { SidebarStorageState } from "./sidebar-storage/sidebar-storage.injectable";
|
import type { SidebarStorageState } from "./sidebar-storage/sidebar-storage.injectable";
|
||||||
import sidebarStorageInjectable from "./sidebar-storage/sidebar-storage.injectable";
|
import sidebarStorageInjectable from "./sidebar-storage/sidebar-storage.injectable";
|
||||||
import type { HierarchicalSidebarItem } from "@k8slens/cluster-sidebar";
|
import type { SidebarItemDeclaration } from "@k8slens/cluster-sidebar";
|
||||||
import type { StorageLayer } from "../../utils/storage-helper";
|
import type { StorageLayer } from "../../utils/storage-helper";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
@ -20,7 +20,7 @@ interface Dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface SidebarItemProps {
|
export interface SidebarItemProps {
|
||||||
item: HierarchicalSidebarItem;
|
item: SidebarItemDeclaration;
|
||||||
}
|
}
|
||||||
|
|
||||||
const NonInjectedSidebarItem = observer((props: SidebarItemProps & Dependencies) => {
|
const NonInjectedSidebarItem = observer((props: SidebarItemProps & Dependencies) => {
|
||||||
@ -56,7 +56,7 @@ const NonInjectedSidebarItem = observer((props: SidebarItemProps & Dependencies)
|
|||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className={styles.SidebarItem}
|
className={styles.SidebarItem}
|
||||||
data-testid={`sidebar-item-${id}`}
|
data-testid={id}
|
||||||
data-is-active-test={isActive}
|
data-is-active-test={isActive}
|
||||||
data-parent-id-test={item.parentId}
|
data-parent-id-test={item.parentId}
|
||||||
>
|
>
|
||||||
@ -74,7 +74,7 @@ const NonInjectedSidebarItem = observer((props: SidebarItemProps & Dependencies)
|
|||||||
item.onClick();
|
item.onClick();
|
||||||
}
|
}
|
||||||
}}
|
}}
|
||||||
data-testid={`sidebar-item-link-for-${id}`}
|
data-testid={`link-for-${id}`}
|
||||||
>
|
>
|
||||||
{item.getIcon?.()}
|
{item.getIcon?.()}
|
||||||
<span>{item.title}</span>
|
<span>{item.title}</span>
|
||||||
@ -82,7 +82,7 @@ const NonInjectedSidebarItem = observer((props: SidebarItemProps & Dependencies)
|
|||||||
<Icon
|
<Icon
|
||||||
className={styles.expandIcon}
|
className={styles.expandIcon}
|
||||||
material={expanded ? "keyboard_arrow_up" : "keyboard_arrow_down"}
|
material={expanded ? "keyboard_arrow_up" : "keyboard_arrow_down"}
|
||||||
data-testid={`sidebar-item-expand-icon-for-${id}`}
|
data-testid={`expand-icon-for-${id}`}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
</NavLink>
|
</NavLink>
|
||||||
|
@ -12,13 +12,13 @@ import { SidebarItem } from "./sidebar-item";
|
|||||||
import type { CatalogEntityRegistry } from "../../api/catalog/entity/registry";
|
import type { CatalogEntityRegistry } from "../../api/catalog/entity/registry";
|
||||||
import { SidebarCluster } from "./sidebar-cluster";
|
import { SidebarCluster } from "./sidebar-cluster";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import type { HierarchicalSidebarItem } from "@k8slens/cluster-sidebar";
|
import type { SidebarItemDeclaration } from "@k8slens/cluster-sidebar";
|
||||||
import { sidebarItemsInjectable } from "@k8slens/cluster-sidebar";
|
import { sidebarItemsInjectable } from "@k8slens/cluster-sidebar";
|
||||||
import type { IComputedValue } from "mobx";
|
import type { IComputedValue } from "mobx";
|
||||||
import catalogEntityRegistryInjectable from "../../api/catalog/entity/registry.injectable";
|
import catalogEntityRegistryInjectable from "../../api/catalog/entity/registry.injectable";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
sidebarItems: IComputedValue<HierarchicalSidebarItem[]>;
|
sidebarItems: IComputedValue<SidebarItemDeclaration[]>;
|
||||||
entityRegistry: CatalogEntityRegistry;
|
entityRegistry: CatalogEntityRegistry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,10 +11,10 @@ import type { StrictReactNode } from "@k8slens/utilities";
|
|||||||
import { cssNames } from "@k8slens/utilities";
|
import { cssNames } from "@k8slens/utilities";
|
||||||
import { Tab, Tabs } from "../tabs";
|
import { Tab, Tabs } from "../tabs";
|
||||||
import { ErrorBoundary } from "@k8slens/error-boundary";
|
import { ErrorBoundary } from "@k8slens/error-boundary";
|
||||||
import type { HierarchicalSidebarItem } from "@k8slens/cluster-sidebar";
|
import type { SidebarItemDeclaration } from "@k8slens/cluster-sidebar";
|
||||||
|
|
||||||
export interface TabLayoutProps {
|
export interface TabLayoutProps {
|
||||||
tabs?: HierarchicalSidebarItem[];
|
tabs?: SidebarItemDeclaration[];
|
||||||
children?: StrictReactNode;
|
children?: StrictReactNode;
|
||||||
scrollable?: boolean;
|
scrollable?: boolean;
|
||||||
}
|
}
|
||||||
|
@ -11,13 +11,12 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToNamespacesInjectable from "../../../common/front-end-routing/routes/cluster/namespaces/navigate-to-namespaces.injectable";
|
import navigateToNamespacesInjectable from "../../../common/front-end-routing/routes/cluster/namespaces/navigate-to-namespaces.injectable";
|
||||||
|
|
||||||
const namespacesSidebarItemInjectable = getInjectable({
|
const namespacesSidebarItemInjectable = getInjectable({
|
||||||
id: "namespaces-sidebar-item",
|
id: "sidebar-item-namespaces",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(namespacesRouteInjectable);
|
const route = di.inject(namespacesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "namespaces",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
getIcon: () => <Icon material="layers" />,
|
getIcon: () => <Icon material="layers" />,
|
||||||
title: "Namespaces",
|
title: "Namespaces",
|
||||||
|
@ -10,14 +10,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToEndpointsInjectable from "../../../common/front-end-routing/routes/cluster/network/endpoints/navigate-to-endpoints.injectable";
|
import navigateToEndpointsInjectable from "../../../common/front-end-routing/routes/cluster/network/endpoints/navigate-to-endpoints.injectable";
|
||||||
|
|
||||||
const endpointsSidebarItemInjectable = getInjectable({
|
const endpointsSidebarItemInjectable = getInjectable({
|
||||||
id: "endpoints-sidebar-item",
|
id: "sidebar-item-endpoints",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(endpointsRouteInjectable);
|
const route = di.inject(endpointsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "endpoints",
|
parentId: networkSidebarItemInjectable.id,
|
||||||
parentId: di.inject(networkSidebarItemInjectable).id,
|
|
||||||
title: "Endpoints",
|
title: "Endpoints",
|
||||||
onClick: di.inject(navigateToEndpointsInjectable),
|
onClick: di.inject(navigateToEndpointsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -10,13 +10,12 @@ import navigateToIngressClassesInjectable from "../../../common/front-end-routin
|
|||||||
import ingressClassesRouteInjectable from "../../../common/front-end-routing/routes/cluster/network/ingress-class/ingress-classes-route.injectable";
|
import ingressClassesRouteInjectable from "../../../common/front-end-routing/routes/cluster/network/ingress-class/ingress-classes-route.injectable";
|
||||||
|
|
||||||
const ingressClassesSidebarItemInjectable = getInjectable({
|
const ingressClassesSidebarItemInjectable = getInjectable({
|
||||||
id: "ingress-classes-sidebar-item",
|
id: "sidebar-item-ingress-classes",
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const ingressClassRoute = di.inject(ingressClassesRouteInjectable);
|
const ingressClassRoute = di.inject(ingressClassesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "ingressclasses",
|
parentId: networkSidebarItemInjectable.id,
|
||||||
parentId: di.inject(networkSidebarItemInjectable).id,
|
|
||||||
title: "Ingress Classes",
|
title: "Ingress Classes",
|
||||||
onClick: di.inject(navigateToIngressClassesInjectable),
|
onClick: di.inject(navigateToIngressClassesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, ingressClassRoute),
|
isActive: di.inject(routeIsActiveInjectable, ingressClassRoute),
|
||||||
|
@ -10,13 +10,12 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import networkSidebarItemInjectable from "../network/network-sidebar-item.injectable";
|
import networkSidebarItemInjectable from "../network/network-sidebar-item.injectable";
|
||||||
|
|
||||||
const ingressesSidebarItemInjectable = getInjectable({
|
const ingressesSidebarItemInjectable = getInjectable({
|
||||||
id: "ingresses-sidebar-item",
|
id: "sidebar-item-ingresses",
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const ingressRoute = di.inject(ingressesRouteInjectable);
|
const ingressRoute = di.inject(ingressesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "ingresses",
|
parentId: networkSidebarItemInjectable.id,
|
||||||
parentId: di.inject(networkSidebarItemInjectable).id,
|
|
||||||
title: "Ingresses",
|
title: "Ingresses",
|
||||||
onClick: di.inject(navigateToIngressesInjectable),
|
onClick: di.inject(navigateToIngressesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, ingressRoute),
|
isActive: di.inject(routeIsActiveInjectable, ingressRoute),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToNetworkPoliciesInjectable from "../../../common/front-end-routing/routes/cluster/network/network-policies/navigate-to-network-policies.injectable";
|
import navigateToNetworkPoliciesInjectable from "../../../common/front-end-routing/routes/cluster/network/network-policies/navigate-to-network-policies.injectable";
|
||||||
|
|
||||||
const networkPoliciesSidebarItemInjectable = getInjectable({
|
const networkPoliciesSidebarItemInjectable = getInjectable({
|
||||||
id: "network-policies-sidebar-item",
|
id: "sidebar-item-network-policies",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(networkPoliciesRouteInjectable);
|
const route = di.inject(networkPoliciesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "network-policies",
|
parentId: networkSidebarItemInjectable.id,
|
||||||
parentId: di.inject(networkSidebarItemInjectable).id,
|
|
||||||
title: "Network Policies",
|
title: "Network Policies",
|
||||||
onClick: di.inject(navigateToNetworkPoliciesInjectable),
|
onClick: di.inject(navigateToNetworkPoliciesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToPortForwardsInjectable from "../../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable";
|
import navigateToPortForwardsInjectable from "../../../common/front-end-routing/routes/cluster/network/port-forwards/navigate-to-port-forwards.injectable";
|
||||||
|
|
||||||
const portForwardsSidebarItemInjectable = getInjectable({
|
const portForwardsSidebarItemInjectable = getInjectable({
|
||||||
id: "port-forwards-sidebar-item",
|
id: "sidebar-item-port-forwards",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(portForwardsRouteInjectable);
|
const route = di.inject(portForwardsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "port-forwards",
|
parentId: networkSidebarItemInjectable.id,
|
||||||
parentId: di.inject(networkSidebarItemInjectable).id,
|
|
||||||
title: "Port Forwarding",
|
title: "Port Forwarding",
|
||||||
onClick: di.inject(navigateToPortForwardsInjectable),
|
onClick: di.inject(navigateToPortForwardsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToServicesInjectable from "../../../common/front-end-routing/routes/cluster/network/services/navigate-to-services.injectable";
|
import navigateToServicesInjectable from "../../../common/front-end-routing/routes/cluster/network/services/navigate-to-services.injectable";
|
||||||
|
|
||||||
const servicesSidebarItemInjectable = getInjectable({
|
const servicesSidebarItemInjectable = getInjectable({
|
||||||
id: "services-sidebar-item",
|
id: "sidebar-item-services",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(servicesRouteInjectable);
|
const route = di.inject(servicesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "services",
|
parentId: networkSidebarItemInjectable.id,
|
||||||
parentId: di.inject(networkSidebarItemInjectable).id,
|
|
||||||
title: "Services",
|
title: "Services",
|
||||||
onClick: di.inject(navigateToServicesInjectable),
|
onClick: di.inject(navigateToServicesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -9,10 +9,9 @@ import React from "react";
|
|||||||
import { noop } from "lodash/fp";
|
import { noop } from "lodash/fp";
|
||||||
|
|
||||||
const networkSidebarItemInjectable = getInjectable({
|
const networkSidebarItemInjectable = getInjectable({
|
||||||
id: "network-sidebar-item",
|
id: "sidebar-item-network",
|
||||||
|
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "network",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
getIcon: () => <Icon material="device_hub" />,
|
getIcon: () => <Icon material="device_hub" />,
|
||||||
title: "Network",
|
title: "Network",
|
||||||
|
@ -12,13 +12,12 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToNodesInjectable from "../../../common/front-end-routing/routes/cluster/nodes/navigate-to-nodes.injectable";
|
import navigateToNodesInjectable from "../../../common/front-end-routing/routes/cluster/nodes/navigate-to-nodes.injectable";
|
||||||
|
|
||||||
const nodesSidebarItemInjectable = getInjectable({
|
const nodesSidebarItemInjectable = getInjectable({
|
||||||
id: "nodes-sidebar-item",
|
id: "sidebar-item-nodes",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(nodesRouteInjectable);
|
const route = di.inject(nodesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "nodes",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
getIcon: () => <Icon svg="nodes" />,
|
getIcon: () => <Icon svg="nodes" />,
|
||||||
title: "Nodes",
|
title: "Nodes",
|
||||||
|
@ -11,14 +11,13 @@ import navigateToPodSecurityPoliciesInjectable from "../../../common/front-end-r
|
|||||||
import userManagementSidebarItemInjectable from "../user-management/user-management-sidebar-item.injectable";
|
import userManagementSidebarItemInjectable from "../user-management/user-management-sidebar-item.injectable";
|
||||||
|
|
||||||
const podSecurityPoliciesSidebarItemInjectable = getInjectable({
|
const podSecurityPoliciesSidebarItemInjectable = getInjectable({
|
||||||
id: "pod-security-policies-sidebar-item",
|
id: "sidebar-item-pod-security-policies",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(podSecurityPoliciesRouteInjectable);
|
const route = di.inject(podSecurityPoliciesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "pod-security-policies",
|
parentId: userManagementSidebarItemInjectable.id,
|
||||||
parentId: di.inject(userManagementSidebarItemInjectable).id,
|
|
||||||
title: "Pod Security Policies",
|
title: "Pod Security Policies",
|
||||||
onClick: di.inject(navigateToPodSecurityPoliciesInjectable),
|
onClick: di.inject(navigateToPodSecurityPoliciesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToStorageClassesInjectable from "../../../common/front-end-routing/routes/cluster/storage/storage-classes/navigate-to-storage-classes.injectable";
|
import navigateToStorageClassesInjectable from "../../../common/front-end-routing/routes/cluster/storage/storage-classes/navigate-to-storage-classes.injectable";
|
||||||
|
|
||||||
const storageClassesSidebarItemInjectable = getInjectable({
|
const storageClassesSidebarItemInjectable = getInjectable({
|
||||||
id: "storage-classes-sidebar-item",
|
id: "sidebar-item-storage-classes",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(storageClassesRouteInjectable);
|
const route = di.inject(storageClassesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "storage-classes",
|
parentId: storageSidebarItemInjectable.id,
|
||||||
parentId: di.inject(storageSidebarItemInjectable).id,
|
|
||||||
title: "Storage Classes",
|
title: "Storage Classes",
|
||||||
onClick: di.inject(navigateToStorageClassesInjectable),
|
onClick: di.inject(navigateToStorageClassesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToPersistentVolumeClaimsInjectable from "../../../common/front-end-routing/routes/cluster/storage/persistent-volume-claims/navigate-to-persistent-volume-claims.injectable";
|
import navigateToPersistentVolumeClaimsInjectable from "../../../common/front-end-routing/routes/cluster/storage/persistent-volume-claims/navigate-to-persistent-volume-claims.injectable";
|
||||||
|
|
||||||
const persistentVolumeClaimsSidebarItemInjectable = getInjectable({
|
const persistentVolumeClaimsSidebarItemInjectable = getInjectable({
|
||||||
id: "persistent-volume-claims-sidebar-item",
|
id: "sidebar-item-persistent-volume-claims",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(persistentVolumeClaimsRouteInjectable);
|
const route = di.inject(persistentVolumeClaimsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "persistent-volume-claims",
|
parentId: storageSidebarItemInjectable.id,
|
||||||
parentId: di.inject(storageSidebarItemInjectable).id,
|
|
||||||
title: "Persistent Volume Claims",
|
title: "Persistent Volume Claims",
|
||||||
onClick: di.inject(navigateToPersistentVolumeClaimsInjectable),
|
onClick: di.inject(navigateToPersistentVolumeClaimsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToPersistentVolumesInjectable from "../../../common/front-end-routing/routes/cluster/storage/persistent-volumes/navigate-to-persistent-volumes.injectable";
|
import navigateToPersistentVolumesInjectable from "../../../common/front-end-routing/routes/cluster/storage/persistent-volumes/navigate-to-persistent-volumes.injectable";
|
||||||
|
|
||||||
const persistentVolumesSidebarItemInjectable = getInjectable({
|
const persistentVolumesSidebarItemInjectable = getInjectable({
|
||||||
id: "persistent-volumes-sidebar-item",
|
id: "sidebar-item-persistent-volumes",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(persistentVolumesRouteInjectable);
|
const route = di.inject(persistentVolumesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "persistent-volumes",
|
parentId: storageSidebarItemInjectable.id,
|
||||||
parentId: di.inject(storageSidebarItemInjectable).id,
|
|
||||||
title: "Persistent Volumes",
|
title: "Persistent Volumes",
|
||||||
onClick: di.inject(navigateToPersistentVolumesInjectable),
|
onClick: di.inject(navigateToPersistentVolumesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -9,10 +9,9 @@ import React from "react";
|
|||||||
import { noop } from "lodash/fp";
|
import { noop } from "lodash/fp";
|
||||||
|
|
||||||
const storageSidebarItemInjectable = getInjectable({
|
const storageSidebarItemInjectable = getInjectable({
|
||||||
id: "storage-sidebar-item",
|
id: "sidebar-item-storage",
|
||||||
|
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "storage",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
getIcon: () => <Icon material="storage" />,
|
getIcon: () => <Icon material="storage" />,
|
||||||
title: "Storage",
|
title: "Storage",
|
||||||
|
@ -11,14 +11,13 @@ import navigateToClusterRoleBindingsInjectable from "../../../../common/front-en
|
|||||||
import userManagementSidebarItemInjectable from "../user-management-sidebar-item.injectable";
|
import userManagementSidebarItemInjectable from "../user-management-sidebar-item.injectable";
|
||||||
|
|
||||||
const clusterRoleBindingsSidebarItemInjectable = getInjectable({
|
const clusterRoleBindingsSidebarItemInjectable = getInjectable({
|
||||||
id: "cluster-role-bindings-sidebar-item",
|
id: "sidebar-item-cluster-role-bindings",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(clusterRoleBindingsRouteInjectable);
|
const route = di.inject(clusterRoleBindingsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "cluster-role-bindings",
|
parentId: userManagementSidebarItemInjectable.id,
|
||||||
parentId: di.inject(userManagementSidebarItemInjectable).id,
|
|
||||||
title: "Cluster Role Bindings",
|
title: "Cluster Role Bindings",
|
||||||
onClick: di.inject(navigateToClusterRoleBindingsInjectable),
|
onClick: di.inject(navigateToClusterRoleBindingsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../../routes/route-is-active.injectable"
|
|||||||
import navigateToClusterRolesInjectable from "../../../../common/front-end-routing/routes/cluster/user-management/cluster-roles/navigate-to-cluster-roles.injectable";
|
import navigateToClusterRolesInjectable from "../../../../common/front-end-routing/routes/cluster/user-management/cluster-roles/navigate-to-cluster-roles.injectable";
|
||||||
|
|
||||||
const clusterRolesSidebarItemInjectable = getInjectable({
|
const clusterRolesSidebarItemInjectable = getInjectable({
|
||||||
id: "cluster-roles-sidebar-item",
|
id: "sidebar-item-cluster-roles",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(clusterRolesRouteInjectable);
|
const route = di.inject(clusterRolesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "cluster-roles",
|
parentId: userManagementSidebarItemInjectable.id,
|
||||||
parentId: di.inject(userManagementSidebarItemInjectable).id,
|
|
||||||
title: "Cluster Roles",
|
title: "Cluster Roles",
|
||||||
onClick: di.inject(navigateToClusterRolesInjectable),
|
onClick: di.inject(navigateToClusterRolesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../../routes/route-is-active.injectable"
|
|||||||
import navigateToRoleBindingsInjectable from "../../../../common/front-end-routing/routes/cluster/user-management/role-bindings/navigate-to-role-bindings.injectable";
|
import navigateToRoleBindingsInjectable from "../../../../common/front-end-routing/routes/cluster/user-management/role-bindings/navigate-to-role-bindings.injectable";
|
||||||
|
|
||||||
const roleBindingsSidebarItemInjectable = getInjectable({
|
const roleBindingsSidebarItemInjectable = getInjectable({
|
||||||
id: "role-bindings-sidebar-item",
|
id: "sidebar-item-role-bindings",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(roleBindingsRouteInjectable);
|
const route = di.inject(roleBindingsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "role-bindings",
|
parentId: userManagementSidebarItemInjectable.id,
|
||||||
parentId: di.inject(userManagementSidebarItemInjectable).id,
|
|
||||||
title: "Role Bindings",
|
title: "Role Bindings",
|
||||||
onClick: di.inject(navigateToRoleBindingsInjectable),
|
onClick: di.inject(navigateToRoleBindingsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -10,14 +10,13 @@ import routeIsActiveInjectable from "../../../routes/route-is-active.injectable"
|
|||||||
import navigateToRolesInjectable from "../../../../common/front-end-routing/routes/cluster/user-management/roles/navigate-to-roles.injectable";
|
import navigateToRolesInjectable from "../../../../common/front-end-routing/routes/cluster/user-management/roles/navigate-to-roles.injectable";
|
||||||
|
|
||||||
const rolesSidebarItemInjectable = getInjectable({
|
const rolesSidebarItemInjectable = getInjectable({
|
||||||
id: "roles-sidebar-item",
|
id: "sidebar-item-roles",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(rolesRouteInjectable);
|
const route = di.inject(rolesRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "roles",
|
parentId: userManagementSidebarItemInjectable.id,
|
||||||
parentId: di.inject(userManagementSidebarItemInjectable).id,
|
|
||||||
title: "Roles",
|
title: "Roles",
|
||||||
onClick: di.inject(navigateToRolesInjectable),
|
onClick: di.inject(navigateToRolesInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../../routes/route-is-active.injectable"
|
|||||||
import navigateToServiceAccountsInjectable from "../../../../common/front-end-routing/routes/cluster/user-management/service-accounts/navigate-to-service-accounts.injectable";
|
import navigateToServiceAccountsInjectable from "../../../../common/front-end-routing/routes/cluster/user-management/service-accounts/navigate-to-service-accounts.injectable";
|
||||||
|
|
||||||
const serviceAccountsSidebarItemInjectable = getInjectable({
|
const serviceAccountsSidebarItemInjectable = getInjectable({
|
||||||
id: "service-accounts-sidebar-item",
|
id: "sidebar-item-service-accounts",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(serviceAccountsRouteInjectable);
|
const route = di.inject(serviceAccountsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "service-accounts",
|
parentId: userManagementSidebarItemInjectable.id,
|
||||||
parentId: di.inject(userManagementSidebarItemInjectable).id,
|
|
||||||
title: "Service Accounts",
|
title: "Service Accounts",
|
||||||
onClick: di.inject(navigateToServiceAccountsInjectable),
|
onClick: di.inject(navigateToServiceAccountsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -9,10 +9,9 @@ import React from "react";
|
|||||||
import { noop } from "lodash/fp";
|
import { noop } from "lodash/fp";
|
||||||
|
|
||||||
const userManagementSidebarItemInjectable = getInjectable({
|
const userManagementSidebarItemInjectable = getInjectable({
|
||||||
id: "user-management-sidebar-item",
|
id: "sidebar-item-user-management",
|
||||||
|
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "user-management",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
getIcon: () => <Icon material="security" />,
|
getIcon: () => <Icon material="security" />,
|
||||||
title: "Access Control",
|
title: "Access Control",
|
||||||
|
@ -10,14 +10,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToCronJobsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/cron-jobs/navigate-to-cron-jobs.injectable";
|
import navigateToCronJobsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/cron-jobs/navigate-to-cron-jobs.injectable";
|
||||||
|
|
||||||
const cronJobsSidebarItemInjectable = getInjectable({
|
const cronJobsSidebarItemInjectable = getInjectable({
|
||||||
id: "cron-jobs-sidebar-item",
|
id: "sidebar-item-cron-jobs",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(cronJobsRouteInjectable);
|
const route = di.inject(cronJobsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "cron-jobs",
|
parentId: workloadsSidebarItemInjectable.id,
|
||||||
parentId: di.inject(workloadsSidebarItemInjectable).id,
|
|
||||||
title: "CronJobs",
|
title: "CronJobs",
|
||||||
onClick: di.inject(navigateToCronJobsInjectable),
|
onClick: di.inject(navigateToCronJobsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToDaemonsetsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/daemonsets/navigate-to-daemonsets.injectable";
|
import navigateToDaemonsetsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/daemonsets/navigate-to-daemonsets.injectable";
|
||||||
|
|
||||||
const daemonsetsSidebarItemInjectable = getInjectable({
|
const daemonsetsSidebarItemInjectable = getInjectable({
|
||||||
id: "daemonsets-sidebar-item",
|
id: "sidebar-item-daemonsets",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(daemonsetsRouteInjectable);
|
const route = di.inject(daemonsetsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "daemon-sets",
|
parentId: workloadsSidebarItemInjectable.id,
|
||||||
parentId: di.inject(workloadsSidebarItemInjectable).id,
|
|
||||||
title: "DaemonSets",
|
title: "DaemonSets",
|
||||||
onClick: di.inject(navigateToDaemonsetsInjectable),
|
onClick: di.inject(navigateToDaemonsetsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToDeploymentsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
import navigateToDeploymentsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
||||||
|
|
||||||
const deploymentsSidebarItemInjectable = getInjectable({
|
const deploymentsSidebarItemInjectable = getInjectable({
|
||||||
id: "deployments-sidebar-item",
|
id: "sidebar-item-deployments",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(deploymentsRouteInjectable);
|
const route = di.inject(deploymentsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "deployments",
|
parentId: workloadsSidebarItemInjectable.id,
|
||||||
parentId: di.inject(workloadsSidebarItemInjectable).id,
|
|
||||||
title: "Deployments",
|
title: "Deployments",
|
||||||
onClick: di.inject(navigateToDeploymentsInjectable),
|
onClick: di.inject(navigateToDeploymentsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToJobsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/jobs/navigate-to-jobs.injectable";
|
import navigateToJobsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/jobs/navigate-to-jobs.injectable";
|
||||||
|
|
||||||
const jobsSidebarItemInjectable = getInjectable({
|
const jobsSidebarItemInjectable = getInjectable({
|
||||||
id: "jobs-sidebar-item",
|
id: "sidebar-item-jobs",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(jobsRouteInjectable);
|
const route = di.inject(jobsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "jobs",
|
parentId: workloadsSidebarItemInjectable.id,
|
||||||
parentId: di.inject(workloadsSidebarItemInjectable).id,
|
|
||||||
title: "Jobs",
|
title: "Jobs",
|
||||||
onClick: di.inject(navigateToJobsInjectable),
|
onClick: di.inject(navigateToJobsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToWorkloadsOverviewInjectable from "../../../common/front-end-routing/routes/cluster/workloads/overview/navigate-to-workloads-overview.injectable";
|
import navigateToWorkloadsOverviewInjectable from "../../../common/front-end-routing/routes/cluster/workloads/overview/navigate-to-workloads-overview.injectable";
|
||||||
|
|
||||||
const workloadsOverviewSidebarItemInjectable = getInjectable({
|
const workloadsOverviewSidebarItemInjectable = getInjectable({
|
||||||
id: "workloads-overview-sidebar-item",
|
id: "sidebar-item-workloads-overview",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(workloadsOverviewRouteInjectable);
|
const route = di.inject(workloadsOverviewRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "overview",
|
parentId: workloadsSidebarItemInjectable.id,
|
||||||
parentId: di.inject(workloadsSidebarItemInjectable).id,
|
|
||||||
title: "Overview",
|
title: "Overview",
|
||||||
onClick: di.inject(navigateToWorkloadsOverviewInjectable),
|
onClick: di.inject(navigateToWorkloadsOverviewInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToPodsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/pods/navigate-to-pods.injectable";
|
import navigateToPodsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/pods/navigate-to-pods.injectable";
|
||||||
|
|
||||||
const podsSidebarItemInjectable = getInjectable({
|
const podsSidebarItemInjectable = getInjectable({
|
||||||
id: "pods-sidebar-item",
|
id: "sidebar-item-pods",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(podsRouteInjectable);
|
const route = di.inject(podsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "pods",
|
parentId: workloadsSidebarItemInjectable.id,
|
||||||
parentId: di.inject(workloadsSidebarItemInjectable).id,
|
|
||||||
title: "Pods",
|
title: "Pods",
|
||||||
onClick: di.inject(navigateToPodsInjectable),
|
onClick: di.inject(navigateToPodsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToReplicasetsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/replicasets/navigate-to-replicasets.injectable";
|
import navigateToReplicasetsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/replicasets/navigate-to-replicasets.injectable";
|
||||||
|
|
||||||
const replicasetsSidebarItemInjectable = getInjectable({
|
const replicasetsSidebarItemInjectable = getInjectable({
|
||||||
id: "replicasets-sidebar-item",
|
id: "sidebar-item-replicasets",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(replicasetsRouteInjectable);
|
const route = di.inject(replicasetsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "replica-sets",
|
parentId: workloadsSidebarItemInjectable.id,
|
||||||
parentId: di.inject(workloadsSidebarItemInjectable).id,
|
|
||||||
title: "ReplicaSets",
|
title: "ReplicaSets",
|
||||||
onClick: di.inject(navigateToReplicasetsInjectable),
|
onClick: di.inject(navigateToReplicasetsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -10,14 +10,13 @@ import replicationControllersRouteInjectable from "../../../common/front-end-rou
|
|||||||
import navigateToReplicationControllersInjectable from "../../../common/front-end-routing/routes/cluster/workloads/replication-controllers/navigate-to.injectable";
|
import navigateToReplicationControllersInjectable from "../../../common/front-end-routing/routes/cluster/workloads/replication-controllers/navigate-to.injectable";
|
||||||
|
|
||||||
const replicationControllerSidebarItemInjectable = getInjectable({
|
const replicationControllerSidebarItemInjectable = getInjectable({
|
||||||
id: "replication-controller-sidebar-item",
|
id: "sidebar-item-replication-controller",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(replicationControllersRouteInjectable);
|
const route = di.inject(replicationControllersRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "replication-controllers",
|
parentId: workloadsSidebarItemInjectable.id,
|
||||||
parentId: di.inject(workloadsSidebarItemInjectable).id,
|
|
||||||
title: "Replication Controllers",
|
title: "Replication Controllers",
|
||||||
onClick: di.inject(navigateToReplicationControllersInjectable),
|
onClick: di.inject(navigateToReplicationControllersInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -11,14 +11,13 @@ import routeIsActiveInjectable from "../../routes/route-is-active.injectable";
|
|||||||
import navigateToStatefulsetsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/statefulsets/navigate-to-statefulsets.injectable";
|
import navigateToStatefulsetsInjectable from "../../../common/front-end-routing/routes/cluster/workloads/statefulsets/navigate-to-statefulsets.injectable";
|
||||||
|
|
||||||
const statefulsetsSidebarItemInjectable = getInjectable({
|
const statefulsetsSidebarItemInjectable = getInjectable({
|
||||||
id: "statefulsets-sidebar-item",
|
id: "sidebar-item-statefulsets",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
const route = di.inject(statefulsetsRouteInjectable);
|
const route = di.inject(statefulsetsRouteInjectable);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
id: "stateful-sets",
|
parentId: workloadsSidebarItemInjectable.id,
|
||||||
parentId: di.inject(workloadsSidebarItemInjectable).id,
|
|
||||||
title: "StatefulSets",
|
title: "StatefulSets",
|
||||||
onClick: di.inject(navigateToStatefulsetsInjectable),
|
onClick: di.inject(navigateToStatefulsetsInjectable),
|
||||||
isActive: di.inject(routeIsActiveInjectable, route),
|
isActive: di.inject(routeIsActiveInjectable, route),
|
||||||
|
@ -9,10 +9,9 @@ import React from "react";
|
|||||||
import { noop } from "lodash/fp";
|
import { noop } from "lodash/fp";
|
||||||
|
|
||||||
const workloadsSidebarItemInjectable = getInjectable({
|
const workloadsSidebarItemInjectable = getInjectable({
|
||||||
id: "workloads-sidebar-item",
|
id: "sidebar-item-workloads",
|
||||||
|
|
||||||
instantiate: () => ({
|
instantiate: () => ({
|
||||||
id: "workloads",
|
|
||||||
parentId: null,
|
parentId: null,
|
||||||
title: "Workloads",
|
title: "Workloads",
|
||||||
getIcon: () => <Icon svg="workloads" />,
|
getIcon: () => <Icon svg="workloads" />,
|
||||||
|
Loading…
Reference in New Issue
Block a user