UNPKG

@primno/core

Version:

Front-end framework for Model-Driven Apps of Power Apps and Dynamics 365.

179 lines (178 loc) 4.91 kB
/// <reference types="xrm" /> import { Component } from "./component"; import { PageType } from "./scope"; /** * Power Apps arguments. * @category Event * @internal */ export interface ExternalArgs { selectedControl: Control; primaryControl: Control | undefined; args: unknown[]; } /** * Event argument base interface. * @category Event */ export interface EventArg { /** * Event type. Eg: "FormLoad", "ColumnChange", etc. */ type: string; /** * Extra arguments. */ extraArgs: unknown[]; } /** * Internal event handler called when a specific event is triggered. * @internal */ export type EventHandler = (targetName?: string, ...args: unknown[]) => unknown; /** * Describes a type of event. * Provides the generation of the event parameter (eventarg) and actions to be performed when subscribing to this event. * @category Event * @internal */ export interface EventType { name: string; controlNameRequired: boolean; supportedPageType: PageType[]; subscribable: boolean; /** * Create the event argument for this event type with the given Power Apps arguments. * @param extArgs Power Apps arguments */ createEventArg(extArgs: ExternalArgs): EventArg; /** * Subscribe at runtime to D365 event. * This method will be called only if subscribable is set to true. * @param selectedControl Control * @param controlName Target name */ subscribe(selectedControl: Control, controlName?: string): void; /** * Unsubscribe at runtime to D365 event. * This method will be called only if subscribable is set to true. * @param selectedControl Control * @param controlName Target name */ unsubscribe(selectedControl: Control, controlName?: string): void; /** * Defines the event handler that should be called when the event occurs. * This method will be called only if subscribable is set to true. * @param eventHandler Callback to Primno */ init(eventHandler: EventHandler): void; } /** * Event argument for a command bar event. * @category Event */ export interface CommandBarEventArg extends EventArg { selectedControl: Control; } /** * Event argument for the populate query event of a command bar. * @category Event */ export interface PopulateQueryEventArg extends CommandBarEventArg { commandProperties: any; } /** * Event argument for a form event. * @param TEventCtx Type of the event context. * @category Event */ export interface FormEventArg<TEventCtx extends Xrm.Events.EventContext = Xrm.Events.EventContext> extends EventArg { /** * Event context transmitted by Power Apps. */ eventCtx: TEventCtx; /** * Form context of the form. * Obtained from the event context. */ formCtx: Xrm.FormContext; } /** * Event argument for a save event. * @category Event */ export type SaveEventArg = FormEventArg<Xrm.Events.SaveEventContext>; /** * Event argument for a process stage selected event. * @category Event */ export type StageSelectedEventArg = FormEventArg<Xrm.Events.StageSelectedEventContext>; /** * Event argument for a process change event. * @category Event */ export type StageChangeEventArg = FormEventArg<Xrm.Events.StageChangeEventContext>; /** * TODO: Explode and put in the event types. * @internal */ export declare enum EventTypes { FormLoad = "FormLoad", DataLoad = "DataLoad", Save = "Save", PostSave = "PostSave", ColumnChange = "ColumnChange", LookupTagClick = "LookupTagClick", TabStateChange = "TabStateChange", PreSearch = "PreSearch", CommandInvoke = "CommandInvoke", StageChange = "StageChange", PreStageChange = "PreStageChange", ProcessStatusChange = "ProcessStatusChange", PreProcessStatusChange = "PreProcessStatusChange", StageSelected = "StageSelected", IframeLoaded = "IframeLoaded", EnableRule = "EnableRule", GridLoad = "GridLoad", GridSave = "GridSave", GridChange = "GridChange", OutputChange = "OutputChange", GridRecordSelect = "GridRecordSelect", PopulateQuery = "PopulateQuery" } /** * Minimalist definition of an event. * @internal */ export interface Event { /** * Event type */ type: string; /** * Event targer. Optional. */ targetName?: string; } /** * Event targeting an event handler of a component. * Registred in {@link EventRegister} * @internal */ export interface ComponentEvent extends Event { propertyName: string; component: Component; } /** * Power Apps control. Can be a form context, an event context or a grid control. * @category Event */ export type Control = Xrm.Events.EventContext | Xrm.FormContext | Xrm.Controls.GridControl; /** * Type of Power Apps control. * @internal */ export declare enum ControlType { form = "form", grid = "grid" }