UNPKG

@omnia/fx-models

Version:
90 lines (89 loc) 3.67 kB
import { AppInstance, VersionedLayout, VersionedLayoutDefinition, AppTemplate, GuidValue, IIcon, RolePermissionSetting } from "@omnia/fx/models"; import { VersionedLayoutDefinitionEditorItem, VersionedLayoutEditorApi } from "@omnia/fx/ux"; import { ApiPath, IExtendApiManifestWithConfiguration } from "../Extends"; export interface ElementRenderer { id: GuidValue; icon: IIcon; title: string; renderManifestId: GuidValue; order?: number; } interface AppInstanceBladeRouteSettings { routePrefix: string; } interface InactiveTabSettings { active: boolean; syncLastActivityButtonManifestId?: GuidValue; } export type GetTemplateFunctionType = (appTemplate: AppTemplate) => { icon: IIcon; label: string; }; export interface AppInstanceTabSettings { appEditingManifestId: GuidValue; advancedColumns?: { showLastActivity?: boolean; }; activeOrphanedTab?: boolean; activeInactiveTab?: InactiveTabSettings; onPermissionsUpdated?: (rolePermissionSetting: RolePermissionSetting[], appInstance: AppInstance) => Promise<void>; customPermissionRenderManifestId?: GuidValue; attachSiteButtonManifestId?: GuidValue; routeSettings: AppInstanceBladeRouteSettings; } interface ValidationResult { isValid: boolean; message: string; } interface TemplatePoliciesConfiguration { enable: boolean; enableNamingPolicy?: boolean; renderManifestId?: GuidValue; } export interface AppTemplateTabSettings { appendMenuItems?: ElementRenderer[]; policies?: TemplatePoliciesConfiguration; validator?: (template: AppTemplate) => Promise<ValidationResult>; beforeCreate?: <T extends AppTemplate = AppTemplate>(template: T) => void; } export interface AppLayoutTabSettings<T extends VersionedLayoutDefinition = VersionedLayoutDefinition> { layoutDefinition: new () => T; appInstanceId: GuidValue; onBeforeCreate?: (layout: VersionedLayoutDefinition) => VersionedLayoutDefinition | Promise<VersionedLayoutDefinition>; enableAlias?: boolean; setAppLayoutDefinitionEditorItem?: (api: VersionedLayoutEditorApi, layout: VersionedLayout) => Promise<VersionedLayoutDefinitionEditorItem>; enableBlockLockSettings?: boolean; } export interface AppNamingPolicyTabSettings { } export interface IAppManagementInstanceConfigurationApi { addAppInstanceTab: (settings: AppInstanceTabSettings) => IAppManagementInstanceConfigurationApi; addAppTemplateTab: (settings: AppTemplateTabSettings) => IAppManagementInstanceConfigurationApi; addAppLayoutTab: (settings: AppLayoutTabSettings) => IAppManagementInstanceConfigurationApi; addNamingPolicyTab: (settings: AppNamingPolicyTabSettings) => IAppManagementInstanceConfigurationApi; addCustomTab: (items: ElementRenderer | ElementRenderer[]) => IAppManagementInstanceConfigurationApi; } export interface IAppManagementInstanceHandler { onConfigure: (api: IAppManagementInstanceConfigurationApi) => Promise<void>; } export interface IAppManagementUsageApi { openStandalone: (appDefinition: GuidValue, closable: boolean) => void; } export interface IAppManagementRegistrationApi { registerHandler: (appDefinitionId: GuidValue, handler: new () => IAppManagementInstanceHandler) => void; } declare module "./UxApi" { interface IOmniaUxApi { appManagement: { use: Promise<IAppManagementUsageApi>; registration: Promise<IAppManagementRegistrationApi>; }; } interface IOmniaUxExtendApiManifest { appManagement: { use: ApiPath; registration: IExtendApiManifestWithConfiguration<GuidValue>; }; } } export {};