Files
govoplan-idm/webui/src/module.ts

73 lines
1.9 KiB
TypeScript

import { createElement, lazy } from "react";
import { Button, type OrganizationFunctionActionsUiCapability, type PlatformWebModule } from "@govoplan/core-webui";
import { generatedTranslations } from "./i18n/generatedTranslations";
import "./styles/idm.css";
const IdmPage = lazy(() => import("./features/IdmPage"));
const idmReadScopes = [
"idm:organization_assignment:read",
"idm:organization_assignment:write",
"organizations:function:assign"
];
const translations = {
en: generatedTranslations.en,
de: generatedTranslations.de
};
const organizationFunctionActions: OrganizationFunctionActionsUiCapability = {
actions: [
{
id: "idm.view-function-assignments",
label: "i18n:govoplan-idm.assignments.a0d19ec5",
anyOf: idmReadScopes,
order: 40,
render: ({ function: item }) => createElement(
Button,
{
type: "button",
variant: "ghost",
title: "i18n:govoplan-idm.view_assignments.2d40d6a5",
onClick: () => {
if (typeof window !== "undefined") {
window.location.href = `/idm?function_id=${encodeURIComponent(item.id)}`;
}
}
},
"i18n:govoplan-idm.assignments.a0d19ec5"
)
}
]
};
export const idmModule: PlatformWebModule = {
id: "idm",
label: "i18n:govoplan-idm.idm.61f4a7a2",
version: "0.1.6",
dependencies: ["identity", "organizations"],
translations,
navItems: [
{
to: "/idm",
label: "i18n:govoplan-idm.idm.61f4a7a2",
iconName: "users",
anyOf: idmReadScopes,
order: 72
}
],
routes: [
{
path: "/idm",
anyOf: idmReadScopes,
order: 72,
render: ({ settings, auth }) => createElement(IdmPage, { settings, auth })
}
],
uiCapabilities: {
"organizations.functionActions": organizationFunctionActions
}
};
export default idmModule;