75 lines
2.7 KiB
TypeScript
75 lines
2.7 KiB
TypeScript
import { createElement, lazy } from "react";
|
|
import { hasScope, type AdminSectionsUiCapability, type FilesConnectorsUiCapability, type FilesFileExplorerUiCapability, type PlatformWebModule } from "@govoplan/core-webui";
|
|
import { FolderTree } from "./features/files/components/FileManagerComponents";
|
|
import FileConnectorSettingsPanel from "./features/files/FileConnectorSettingsPanel";
|
|
import ManagedFileChooser from "./features/files/components/ManagedFileChooser";
|
|
import { listFileSpaces, listFiles, listFilesDelta, listFolders, resolveFilePatterns, shareFilesWithTarget } from "./api/files";
|
|
import { generatedTranslations } from "./i18n/generatedTranslations";
|
|
import "./styles/file-manager.css";
|
|
|
|
const FilesPage = lazy(() => import("./features/files/FilesPage"));
|
|
|
|
const fileRead = ["files:file:read"];
|
|
const translations = {
|
|
en: generatedTranslations.en,
|
|
de: generatedTranslations.de
|
|
};
|
|
const fileConnectorAdminSections: AdminSectionsUiCapability = {
|
|
sections: [
|
|
{
|
|
id: "system-file-connectors",
|
|
label: "i18n:govoplan-files.file_connections.1e362326",
|
|
group: "SYSTEM",
|
|
order: 75,
|
|
anyOf: ["system:settings:read", "files:file:admin"],
|
|
render: ({ settings, auth }) => createElement(FileConnectorSettingsPanel, {
|
|
settings,
|
|
scopeType: "system",
|
|
canWrite: hasScope(auth, "system:settings:write") || hasScope(auth, "files:file:admin")
|
|
})
|
|
},
|
|
{
|
|
id: "tenant-file-connectors",
|
|
label: "i18n:govoplan-files.file_connections.1e362326",
|
|
group: "TENANT",
|
|
order: 65,
|
|
anyOf: ["admin:settings:read", "files:file:admin"],
|
|
render: ({ settings, auth }) => createElement(FileConnectorSettingsPanel, {
|
|
settings,
|
|
scopeType: "tenant",
|
|
canWrite: hasScope(auth, "admin:settings:write") || hasScope(auth, "files:file:admin")
|
|
})
|
|
}]
|
|
|
|
};
|
|
|
|
export const filesModule: PlatformWebModule = {
|
|
id: "files",
|
|
label: "i18n:govoplan-files.files.6ce6c512",
|
|
version: "1.0.0",
|
|
dependencies: ["access"],
|
|
translations,
|
|
navItems: [{ to: "/files", label: "i18n:govoplan-files.files.6ce6c512", iconName: "folder", anyOf: fileRead, order: 40 }],
|
|
routes: [
|
|
{ path: "/files", anyOf: fileRead, order: 40, render: ({ settings, auth }) => createElement(FilesPage, { settings, auth }) }],
|
|
|
|
uiCapabilities: {
|
|
"files.fileExplorer": {
|
|
FolderTree,
|
|
ManagedFileChooser,
|
|
listFileSpaces,
|
|
listFiles,
|
|
listFilesDelta,
|
|
listFolders,
|
|
resolveFilePatterns,
|
|
shareFilesWithTarget
|
|
} satisfies FilesFileExplorerUiCapability,
|
|
"files.connectors": {
|
|
FileConnectorScopeManager: FileConnectorSettingsPanel
|
|
} satisfies FilesConnectorsUiCapability,
|
|
"admin.sections": fileConnectorAdminSections
|
|
}
|
|
};
|
|
|
|
export default filesModule;
|