From 2ceb210ab505742fbe18e0a77241de5b2beca45c Mon Sep 17 00:00:00 2001 From: Derek Finlinson Date: Thu, 14 Sep 2017 10:27:49 -0600 Subject: [PATCH] Add separate process event contexts --- types/xrm/index.d.ts | 86 +++++++++++++++++++++++++++++++++++++----- types/xrm/xrm-tests.ts | 2 +- 2 files changed, 78 insertions(+), 10 deletions(-) diff --git a/types/xrm/index.d.ts b/types/xrm/index.d.ts index d20992e385..f910412942 100644 --- a/types/xrm/index.d.ts +++ b/types/xrm/index.d.ts @@ -935,6 +935,11 @@ declare namespace Xrm { */ type AttributeType = "boolean" | "datetime" | "decimal" | "double" | "integer" | "lookup" | "memo" | "money" | "optionset" | "string"; + /** + * Direction types for a process stage change event + */ + type StageChangeDirection = "next" | "previous"; + /** * Attribute formats for Xrm.Page.Attribute.getFormat(). */ @@ -1074,15 +1079,6 @@ declare namespace Xrm { */ getDepth(): number; - /** - * Gets save-event arguments. - * - * @return The event arguments. - * - * @remarks Returns null for all but the "save" event. - */ - getEventArgs(): SaveEventArguments; - /** * Gets a reference to the object for which event occurred. * @@ -1114,6 +1110,43 @@ declare namespace Xrm { setSharedVariable(key: string, value: T): void; } + /** + * Interface for a save event context + */ + interface SaveEventContext extends EventContext { + /** + * Gets save-event arguments. + * + * @return The event arguments. + * + * @remarks Returns null for all but the "save" event. + */ + getEventArgs(): SaveEventArguments; + } + + /** + * Interface for a process stage change event context + */ + interface StageChangeEventContext extends EventContext { + /** + * Gets process stage change event arguments. + * + * @return The event arguments. + * + */ + getEventArgs(): StageChangeEventArguments; + } + + interface StageSelectedEventContext extends EventContext { + /** + * Gets process stage selected event arguments. + * + * @return The event arguments. + * + */ + getEventArgs(): StageSelectedEventArguments; + } + /** * Type for a context-sensitive handler. * @param {EventContext} context The context. @@ -1916,6 +1949,41 @@ declare namespace Xrm { preventDefault(): void; } + /** + * Interface for process stage change event arguments. + */ + interface StageChangeEventArguments { + /** + * Gets the direction of the stage change. + * + * @return The direction. + * + * @remarks Values returned are: "next" or "previous" + */ + getDirection(): Xrm.Page.StageChangeDirection; + + /** + * Gets the destionation stage object + * + * @return The stage object + * + * @remarks For switching between entities, returns the previous stage object + */ + getStage(): Xrm.Page.Stage; + } + + /** + * Interface for process stage selected event arguments. + */ + interface StageSelectedEventArguments { + /** + * Gets the selected stage object + * + * @return The stage object + */ + getStage(): Xrm.Page.Stage; + } + /** * Module for the Xrm.Page.data API. */ diff --git a/types/xrm/xrm-tests.ts b/types/xrm/xrm-tests.ts index 5b5b12c333..9d5173c5f7 100644 --- a/types/xrm/xrm-tests.ts +++ b/types/xrm/xrm-tests.ts @@ -83,7 +83,7 @@ Xrm.Page.ui.tabs.forEach((tab) => { /// Demonstrate OnSave event context. -Xrm.Page.data.entity.addOnSave((context) => { +Xrm.Page.data.entity.addOnSave((context : Xrm.Page.SaveEventContext) => { const eventArgs = context.getEventArgs(); if (eventArgs.getSaveMode() === XrmEnum.SaveMode.AutoSave || eventArgs.getSaveMode() === XrmEnum.SaveMode.SaveAndClose)