UNPKG

@omnia/fx

Version:

Provide Omnia Fx typings and tooling for clientside Omnia development.

72 lines (71 loc) 3.6 kB
import { EnterprisePropertyDefinition, IExtendApiManifestWithConfiguration, PropertyBindingProviderId, PropertyDataSourceId, PropertyDefinition, PropertyValuePrimitiveConverter } from "@omnia/fx-models"; import { GuidValue } from "../../../shared/models"; import { VueComponentBase } from "../../VueComponentBase"; import { PropertyDefinitionId, PropertySettings } from "./Properties"; import { IPropertyDataSourceRegistrationApi } from "./DataSource"; import { DataSourcePropertyDefintionHandlerId } from "@omnia/fx/services"; import { IPropertyBindingProviderRegistrationApi } from "./PropertyBindingProvider"; export type PropertyRegistrationId = GuidValue; export interface PropertyRegistration { id: PropertyRegistrationId; title: string; settingsElement?: string; properties?: Array<new () => PropertyDefinition<any, any, any>>; enterpriseProperties?: EnterprisePropertyDefinition[]; } export interface PropertyProviderBaseConstructor { componentRef: VueComponentBase; propertyId: PropertyDefinitionId; propertySettings?: PropertySettings; } export interface IPropertyRegistrationApi { register(registration: PropertyRegistration): void; } export interface IPropertyDefinitionRegistrationApi { register<TPropertyDef extends PropertyDefinition<any, any, any>>(propertyDefinitionConstructor: new () => TPropertyDef, readRenderComponentManifestId: GuidValue, editRendererComponentManifestId: GuidValue, propertyValuePrimitiveConverterCtor: new () => PropertyValuePrimitiveConverter, configurationRendererComponentManifestId?: GuidValue): any; getPropertyDefinitionsByIds(propertyDefinitionIds: Array<PropertyDefinitionId>): Promise<Array<ResolvedPropertyDefinition>>; getPropertyDefinitions(): Promise<Array<ResolvedPropertyDefinition>>; } export interface ResolvedPropertyDefinition { omniaServiceId: GuidValue; propertyDefinitionId: GuidValue; propertyDefinition: new () => PropertyDefinition<any, any, any>; readRenderComponentManifestId: GuidValue; editRendererComponentManifestId: GuidValue; propertyValuePrimitiveConverterCtor: new () => PropertyValuePrimitiveConverter; configurationRendererComponentManifestId?: GuidValue; } declare module "@omnia/fx-models" { interface IOmniaUxApi { properties: { definitions: Promise<IPropertyDefinitionRegistrationApi>; dataSources: { registrations: Promise<IPropertyDataSourceRegistrationApi>; }; bindingProviders: { registrations: Promise<IPropertyBindingProviderRegistrationApi>; }; }; } interface IOmniaUxExtendApiManifest { properties: { definitions: IExtendApiManifestWithConfiguration<PropertyDefinitionId>; dataSources: { /** * Register the manifest/bundle that contains the propertydatasource * */ registrations: IExtendApiManifestWithConfiguration<PropertyDataSourceId>; /** * Register any external plugin/dataSourcePropertyDefinitionHandler for a property data source * */ pluginRegistration: IExtendApiManifestWithConfiguration<{ dataSourceId: PropertyDataSourceId; dataSourcePropertyDefinitionHandlerId: DataSourcePropertyDefintionHandlerId; }>; }; bindingProviders: { registrations: IExtendApiManifestWithConfiguration<PropertyBindingProviderId>; }; }; } }