@omnia/fx
Version:
Provide Omnia Fx typings and tooling for clientside Omnia development.
72 lines (71 loc) • 3.6 kB
TypeScript
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>;
};
};
}
}