87 lines
1.9 KiB
TypeScript
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;
|