@omnia/fx-models
Version:
Provide Omnia Fx Models Stuffs.
90 lines (89 loc) • 3.67 kB
TypeScript
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 {};