@omnia/fx-models
Version:
Provide Omnia Fx Models Stuffs.
94 lines (93 loc) • 3.86 kB
TypeScript
import { GuidValue } from "@omnia/fx-models/internal-do-not-import-from-here/shared/models";
import { AppInstance, AppTemplate, AppDefinition, AppInstanceCreateInfo } from ".";
import { MultilingualString } from "@omnia/fx-models";
export interface AppProvisioningStepRegistration {
/**
* The title of the app provisioning step
*/
info: AppProvisioningStepInfo;
/**
* This influence the order of the app provisioning steps displayed in Provisioning Template flow, be nice, use ordering with gap -100, 0, 100, 200
So other extensions etc can inject between
Note: Users can still be able to change the order in Provisioning Template flow
*/
weight: number;
madantory?: boolean;
}
export interface AppProvisioningStepContext {
stepId: GuidValue;
stepTitle: string;
appInstance: AppInstance;
appTemplate: AppTemplate;
appDefinition: AppDefinition;
/**
* Omnia will render a default input ui for app title/description/showInPublicListings.
* If we want to get rid of the default ui to have full control on the ux,
* we can define a web component and put the ManifestId into this property
*
* */
overriddenInformationInputManifestId?: GuidValue;
/**
* In case we want to append extra ui to configure more information,
* we can define a web component and put the ManifestId into this property
*
* */
appendInformationInputManifestId?: GuidValue;
}
export interface AppProvisioningStepInfo {
id: GuidValue;
title: MultilingualString;
elementToRender: string;
summaryElementToRender?: string;
appDefinitionId: GuidValue;
isFeature: boolean;
shouldRender?: (appTemplate: AppTemplate) => boolean;
isDefaultStep?: boolean;
}
export interface IAppProvisioningStepComponent {
context: AppProvisioningStepContext;
registerOnGoToNext: (onGoToNext: () => Promise<boolean>) => void;
registerOnGoToPrev: (onGoToPrev: () => Promise<boolean>) => void;
allowMultipleAppAdministrators?: boolean;
allowMemberAndGroup?: boolean;
isJourneyProvisioning?: boolean;
}
export interface InformationSummaryRenderer {
/**
* There is default UI for information summary i.e. show title, description, image and public listing...
* Hide it to render the whole UI itself
* */
hideDefaultUI?: boolean;
/**
* The web-component to render information summary.
* If the default UI is not hidden, this will be rendered under that.
*
* */
element: string;
}
export interface AppProvisioningHandler {
/**
* Register callback to run right before app instance provisioning flow is triggered
*/
onBeforeCreateAppInstance: (appInstance: AppInstance, appInstanceCreateInfo: AppInstanceCreateInfo) => Promise<AppInstanceCreateInfo>;
/**
* Manifest Id for the approval blade for the app definition in Omnia Admin
*/
adminApprovalBladeManifestId?: GuidValue;
/**
* Get overrideen information input manifest id
*/
getOverriddenInformationInputManifestId?: (appInstance: AppInstance, appTemplate: AppTemplate) => GuidValue;
/**
* Get append information input manifest id
*/
getAppendInformationInputManifestId?: (appInstance: AppInstance, appTemplate: AppTemplate) => GuidValue;
/**
* Get information summary renderer
* */
getInformationSummaryRenderer?: (appInstance: AppInstance, appTemplate: AppTemplate) => InformationSummaryRenderer;
getPendingRequestUrl?: (appInstance: AppInstance) => string;
}
export declare const AppProvisioningEnterprisePropertiesStepId = "9330B10C-1473-475B-8AFA-AB03686058FA";
export declare const AppProvisioningUserStepId = "992857a6-0c9f-4ee4-a9ae-aa9b0d9ee998";
export declare const AppProvisioningDefaultSteps: AppProvisioningStepRegistration[];