Files
govoplan-search/webui/src/module.ts
T

87 lines
1.9 KiB
TypeScript

import { createElement, lazy } from "react";
import type {
AdminSectionsUiCapability,
PlatformWebModule,
SearchRuntimeUiCapability
} from "@govoplan/core-webui";
import GlobalSearch from "./components/GlobalSearch";
import "./styles/search.css";
const SearchPage = lazy(() => import("./features/search/SearchPage"));
const SearchAdminPanel = lazy(() => import("./features/search/SearchAdminPanel"));
const searchRuntime: SearchRuntimeUiCapability = {
GlobalSearch,
anyOf: ["search:result:read"]
};
const searchAdminSections: AdminSectionsUiCapability = {
sections: [
{
id: "tenant-search-index",
moduleId: "search",
kind: "operations",
surfaceId: "search.admin.index",
label: "Search index",
group: "TENANT",
order: 69,
allOf: ["search:index:admin"],
render: ({ settings }) => createElement(SearchAdminPanel, { settings })
}
]
};
export const searchModule: PlatformWebModule = {
id: "search",
label: "Search",
version: "0.1.14",
optionalDependencies: [
"access",
"views",
"connectors",
"wiki",
"projects",
"tickets",
"cases"
],
routes: [
{
path: "/search",
anyOf: ["search:result:read"],
order: 12,
surfaceId: "search.results",
render: (context) => createElement(SearchPage, context)
}
],
viewSurfaces: [
{
id: "search.global",
moduleId: "search",
kind: "selector",
label: "Global search",
order: 10
},
{
id: "search.results",
moduleId: "search",
kind: "route",
label: "Search results",
order: 20
},
{
id: "search.admin.index",
moduleId: "search",
kind: "section",
label: "Search index administration",
order: 30
}
],
uiCapabilities: {
"search.runtime": searchRuntime,
"admin.sections": searchAdminSections
}
};
export default searchModule;