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