72 lines
2.3 KiB
TypeScript
72 lines
2.3 KiB
TypeScript
import { createElement, lazy } from "react";
|
|
import type { AdminSectionsUiCapability, OrganizationFunctionPickerUiCapability, PlatformWebModule } from "@govoplan/core-webui";
|
|
import { generatedTranslations } from "./i18n/generatedTranslations";
|
|
import { OrganizationFunctionLabel, OrganizationFunctionPicker } from "./features/organizations/OrganizationFunctionPicker";
|
|
import "./styles/organizations.css";
|
|
|
|
const OrganizationsPage = lazy(() => import("./features/organizations/OrganizationsPage"));
|
|
const OrganizationsAdminPanel = lazy(() => import("./features/organizations/OrganizationsAdminPanel"));
|
|
|
|
const organizationReadScopes = [
|
|
"organizations:model:read",
|
|
"organizations:unit:read",
|
|
"organizations:function:read",
|
|
"admin:settings:read"
|
|
];
|
|
|
|
const translations = {
|
|
en: generatedTranslations.en,
|
|
de: generatedTranslations.de
|
|
};
|
|
|
|
const organizationAdminSections: AdminSectionsUiCapability = {
|
|
sections: [
|
|
{
|
|
id: "tenant-organization-settings",
|
|
label: "i18n:govoplan-organizations.organizations.220edf64",
|
|
group: "TENANT",
|
|
order: 85,
|
|
anyOf: ["organizations:settings:read", "admin:settings:read"],
|
|
render: ({ settings, auth }) => createElement(OrganizationsAdminPanel, { settings, auth })
|
|
}
|
|
]
|
|
};
|
|
|
|
const organizationFunctionPicker: OrganizationFunctionPickerUiCapability = {
|
|
sourceModule: "organizations",
|
|
renderPicker: (context) => createElement(OrganizationFunctionPicker, context),
|
|
renderLabel: (context) => createElement(OrganizationFunctionLabel, context)
|
|
};
|
|
|
|
export const organizationsModule: PlatformWebModule = {
|
|
id: "organizations",
|
|
label: "i18n:govoplan-organizations.organizations.220edf64",
|
|
version: "1.0.0",
|
|
dependencies: ["access"],
|
|
optionalDependencies: ["admin"],
|
|
translations,
|
|
navItems: [
|
|
{
|
|
to: "/organizations",
|
|
label: "i18n:govoplan-organizations.organizations.220edf64",
|
|
iconName: "building-2",
|
|
anyOf: organizationReadScopes,
|
|
order: 70
|
|
}
|
|
],
|
|
routes: [
|
|
{
|
|
path: "/organizations",
|
|
anyOf: organizationReadScopes,
|
|
order: 70,
|
|
render: ({ settings, auth }) => createElement(OrganizationsPage, { settings, auth })
|
|
}
|
|
],
|
|
uiCapabilities: {
|
|
"admin.sections": organizationAdminSections,
|
|
"organizations.functionPicker": organizationFunctionPicker
|
|
}
|
|
};
|
|
|
|
export default organizationsModule;
|