diff --git a/xrm/index.d.ts b/xrm/index.d.ts
index 36bd556c13..2ed4cef363 100644
--- a/xrm/index.d.ts
+++ b/xrm/index.d.ts
@@ -1,6 +1,6 @@
-// Type definitions for Microsoft Dynamics xRM API v8.0
+// Type definitions for Microsoft Dynamics xRM API v8.2
// Project: http://www.microsoft.com/en-us/download/details.aspx?id=44567
-// Definitions by: David Berry , Matt Ngan , Markus Mauch , Daryl LaBar
+// Definitions by: David Berry , Matt Ngan , Markus Mauch , Daryl LaBar , Tully H
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
declare var Xrm: Xrm.XrmStatic;
@@ -93,7 +93,7 @@ declare namespace Xrm
* Gets a control matching controlName.
*
* @tparam T A Control type
- * @param {string} controlName Name of the control.
+ * @param {string} controlName Name of the control.
*
* @return The control.
*/
@@ -102,12 +102,22 @@ declare namespace Xrm
/**
* Gets a control matching controlName.
*
- * @param {string} controlName Name of the control.
+ * @param {string} controlName Name of the control.
*
* @return The control.
*/
getControl( controlName: string ): Page.Control;
+ /**
+ * Gets a control by index.
+ *
+ * @tparam T A Control type
+ * @param {number} index The control index.
+ *
+ * @return The control.
+ */
+ getControl( index: number ): T;
+
/**
* Gets a control by index.
*
@@ -166,11 +176,10 @@ declare namespace Xrm
* @param {OpenParameters} parameters (Optional) A dictionary object that passes extra query string
* parameters to the form. Invalid query string parameters will cause an
* error.
+ * @return {Async.XrmPromise} Returns an asynchronous promise.
*/
- openQuickCreate(
- entityLogicalName: string,
- createFromEntity?: Page.LookupValue,
- parameters?: Utility.OpenParameters ): Async.XrmPromise;
+ openQuickCreate( entityLogicalName: string, createFromEntity?: Page.LookupValue, parameters?: Utility.OpenParameters ):
+ Async.XrmPromise;
/**
* Opens an entity form.
@@ -205,16 +214,194 @@ declare namespace Xrm
*/
openWebResource( webResourceName: string, webResourceData?: string, width?: number, height?: number ): Window;
}
+
+ /**
+ * Provides methods to create and manage records in the mobile clients (for phones tablets).
+ */
+ Mobile: {
+ /**
+ * Provides methods to create and manage records in the mobile clients while working in the offline mode.
+ *
+ * @see {@link https://msdn.microsoft.com/en-us/library/mt787123.aspx} for details.
+ */
+ offline: {
+ /**
+ * Returns whether an entity is offline enabled.
+ *
+ * @param {string} entityType The logical name of the entity.
+ *
+ * @return {boolean} True if the entity is offline enabled; otherwise False.
+ */
+ isOfflineEnabled( entityType: string ): boolean;
+
+ /**
+ * Creates an entity record in mobile clients while working in the offline mode.
+ *
+ * @param {string} entityType The logical name of the entity.
+ * @param {Object} data A dictionary object containing key : value pairs for the record to create.
+ *
+ * @return {Async.XrmPromise} Returns an asynchronous promise.
+ *
+ * @remarks You cannot create intersect and activity party entities.
+ * Only the following attribute types are supported in offline mode: BigInt
+ * Boolean
+ * Customer
+ * DateTime
+ * Decimal
+ * Double
+ * EntityName
+ * Integer
+ * Lookup
+ * Memo
+ * Money
+ * Owner
+ * Picklist
+ * String
+ * State
+ * Status
+ * UniqueIdentifier
+ */
+ createRecord( entityType: string, data: { [attributeName: string]: any } ): Async.XrmPromise;
+
+ /**
+ * Retrieves an entity record in mobile clients while working in the offline mode.
+ *
+ * @param {string} entityType The logical name of the entity.
+ * @param {string} id GUID of the record to retrieve.
+ * @param {string} options (Optional) OData system query options to retrieve your data. Supports $select and $expand
+ * Example: ?$select=name&$expand=primarycontactid($select=contactid,fullname)
+ *
+ * @return {Async.XrmPromise} Returns an asynchronous promise.
+ *
+ * @remarks Only $select option can be specified within $expand.
+ * Only the following attribute types are supported in offline mode: BigInt
+ * Boolean
+ * Customer
+ * DateTime
+ * Decimal
+ * Double
+ * EntityName
+ * Integer
+ * Lookup
+ * Memo
+ * Money
+ * Owner
+ * Picklist
+ * String
+ * State
+ * Status
+ * UniqueIdentifier
+ */
+ retrieveRecord( entityType: string, id: string, options: string ): Async.XrmPromise;
+
+ /**
+ * Retrieves a collection of entity records in mobile clients while working in the offline mode.
+ *
+ * @param {string} entityType The logical name of the entity.
+ * @param {string} options (Optional) The logical name of the enti
+ * @param {string} maxPageSize (Optional) A positive number to indicates the number of entity records to be returned per page.
+ * If you do not specify this parameter, the default value is passed as 5000.
+ * If the number of records being retrieved is more than maxPageSize, an @odata.nextLink property
+ * will be returned, and you can use the value of the @odata.nextLink property with a new GET
+ * request to return next set of records.
+ *
+ * @return {Async.XrmPromise} Returns an asynchronous promise.
+ *
+ * @remarks A maximum of 5000 related records can be retrieved when using $expand.
+ * Only $select option can be specified within $expand.
+ * $skip query option is not supported.
+ * Only the following attribute types are supported in offline mode: BigInt
+ * Boolean
+ * Customer
+ * DateTime
+ * Decimal
+ * Double
+ * EntityName
+ * Integer
+ * Lookup
+ * Memo
+ * Money
+ * Owner
+ * Picklist
+ * String
+ * State
+ * Status
+ * UniqueIdentifier
+ */
+ retrieveMultipleRecords( entityType: string, options: string, maxPageSize: number ): Async.XrmPromise;
+
+ /**
+ * Updates an entity record in mobile clients while working in the offline mode.
+ *
+ * @param {string} entityType The logical name of the entity.
+ * @param {string} id GUID of the record to update.
+ * @param {Object} data A dictionary object containing key : value pairs for the record to update.
+ *
+ * @return {Async.XrmPromise} Returns an asynchronous promise.
+ *
+ * @remarks You cannot update intersect and activity party entities.
+ * Only the following attribute types are supported in offline mode: BigInt
+ * Boolean
+ * Customer
+ * DateTime
+ * Decimal
+ * Double
+ * EntityName
+ * Integer
+ * Lookup
+ * Memo
+ * Money
+ * Owner
+ * Picklist
+ * String
+ * State
+ * Status
+ * UniqueIdentifier
+ */
+ updateRecord( entityType: string, id: string, data: { [attributeName: string]: any } ): Async.XrmPromise;
+
+ /**
+ * Deletes an entity record in mobile clients while working in the offline mode.
+ *
+ * @param {string} entityType The logical name of the entity.
+ * @param {string} id GUID of the record to delete.
+ *
+ * @return {Async.XrmPromise} Returns an asynchronous promise.
+ *
+ * @remarks You cannot delete intersect and activity party entities.
+ */
+ deleteRecord( entityType: string, id: string ): Async.XrmPromise;
+ }
+ }
+
+ /**
+ * Provides methods to display a web page in the side pane of web client.
+ *
+ * @see {@link https://msdn.microsoft.com/en-us/library/mt790281.aspx} for details.
+ */
+ Panel: {
+ /**
+ * Displays the web page represented by a URL in the static area in the side pane, which appears on all pages in the web client.
+ *
+ * @param {string} url URL of the page to be loaded in the side pane static area.
+ * @param {string} url Title of the side pane static area.
+ *
+ * @remarks This method is only supported for the web client.
+ */
+ LoadPanel( url: string, title: string ): void;
+ }
}
/**
* Client Types for Xrm.Page.context.getClient().
*/
export type Client = "Web" | "Outlook" | "Mobile";
+
/**
* Client States for Xrm.Page.context.getClientState().
*/
export type ClientState = "Online" | "Offline";
+
/**
* Themes for Xrm.Page.context.getCurrentTheme().
*/
@@ -254,6 +441,7 @@ declare namespace Xrm
* Gets client's base URL for Dynamics CRM
*
* @return The client's base URL
+ *
* @remarks For Dynamics CRM On-Premises: http(s)://server/org
* For Dynamics CRM Online: https://org.crm.dynamics.com
* For Dynamics CRM for Outlook (Offline): http://localhost:2525
@@ -354,6 +542,20 @@ declare namespace Xrm
prependOrgName( sPath: string ): string;
}
+ /**
+ * Defines save options to control how appointment, recurring appointment, or service activity records are processed.
+ *
+ * @see {@link https://msdn.microsoft.com/en-us/library/dn481607.aspx#Anchor_2} for details.
+ */
+ interface SaveOptions
+ {
+ /**
+ * Indicates whether to use the Book or Reschedule messages rather than the Create or Update messages.
+ * Applicable to appointment, recurring appointment, or service activity records.
+ */
+ UseSchedulingEngine?: boolean;
+ }
+
/**
* Interface for the Xrm.Page.data object.
*/
@@ -364,16 +566,25 @@ declare namespace Xrm
*
* @param {boolean} save true to save the record, after the refresh.
*
- * @return An Async.XrmPromise.
+ * @return {Async.XrmPromise} Returns an asynchronous promise.
*/
- refresh( save: boolean ): Async.XrmPromise;
+ refresh( save: boolean ): Async.XrmPromise;
/**
* Asynchronously saves the record.
*
- * @return An Async.XrmPromise.
+ * @return {Async.XrmPromise} Returns an asynchronous promise.
*/
- save(): Async.XrmPromise;
+ save(): Async.XrmPromise;
+
+ /**
+ * Asynchronously saves the record with the option to set callback functions to be executed after the save operation is completed.
+ *
+ * @param {saveOptions} saveOptions Options to control how appointment, recurring appointment, or service activity records are processed.
+ *
+ * @return {Async.XrmPromise} Returns an asynchronous promise.
+ */
+ save( saveOptions: SaveOptions ): Async.XrmPromise;
/**
* The record context of the form.
@@ -393,12 +604,28 @@ declare namespace Xrm
*/
export interface Ui
{
+ /**
+ * Displays a form level notification. Any number of notifications can be displayed and will remain until removed using clearFormNotification.
+ * The height of the notification area is limited so each new message will be added to the top.
+ *
+ * @param {string} message The text of the notification message.
+ * @param {Page.ui.FormNotificationLevel} level The level of the notification which defines how the message will be displayed, such as the icon.
+ * @param {string} uniqueId Unique identifier for the notification which is used with clearFormNotification to remove the notification.
+ *
+ * @return true if it succeeds, otherwise false.
+ *
+ * @remarks Values for level are: ERROR Notification will use the system error icon.
+ * WARNING Notification will use the system warning icon.
+ * INFO Notification will use the system info icon.
+ */
+ setFormNotification( message: string, level: Page.ui.FormNotificationLevel | string, uniqueId: string ): boolean;
+
/**
* Clears the form notification described by uniqueId.
*
* @param {string} uniqueId Unique identifier.
*
- * @return true if it succeeds, otherwise false.
+ * @return True if it succeeds, otherwise false.
*/
clearFormNotification( uniqueId: string ): boolean;
@@ -441,14 +668,15 @@ declare namespace Xrm
getViewPortWidth(): number;
/**
- * Re-evaluates the ribbon's configured EnableRules
+ * Re-evaluates the ribbon's configured EnableRules.
*
* @remarks This method does not work with Microsoft Dynamics CRM for tablets.
*/
refreshRibbon(): void;
- setFormNotification(message: string, level: Page.ui.FormNotificationLevel | string, uniqueId: string ): boolean;
-
+ /**
+ * The business process flow API, used to interact with the business process flow control in a form.
+ */
process: Page.ui.ProcessManager;
/**
@@ -474,6 +702,11 @@ declare namespace Xrm
* A reference to the collection of tabs on the form.
*/
tabs: Collection.ItemCollection;
+
+ /**
+ * A collection of all the quick view controls on a form using the new form rendering engine (also called "turbo forms").
+ */
+ quickForms: Collection.ItemCollection;
}
/**
@@ -481,38 +714,115 @@ declare namespace Xrm
*/
export module Async
{
- /**
- * Object passed to ErrorCallbackDelegate
- */
- export interface ErrorCallbackObject
- {
- errorCode: number;
- message: string;
- }
-
- export interface SuccessCallbackObject
- {
- savedEntityReference: Page.LookupValue;
- }
-
/**
* Called when the operation is successful.
- * Currently, only the Xrm.Utility.openQuickCreate successCallback
- * is passed a parameter so an optional parameter for it is included
*/
- export type SuccessCallbackDelegate = (object?: SuccessCallbackObject ) => void;
-
+ export type SuccessCallbackDelegate = () => void;
+
/**
* Called when the operation fails.
*
- * @param {ErrorCallbackObject} error The error object
+ * @param {ErrorCallbackObject} error The error object.
*/
export type ErrorCallbackDelegate = ( error: ErrorCallbackObject ) => void;
/**
- * Interface for Xrm.Page.data promises.
+ * Called when the Xrm.Utility.openQuickCreate operation is successful and a new record has been created.
+ *
+ * @param {OpenQuickCreateSuccessCallbackObject} record An object which contains a lookup value which identifies the record which has been created.
+ *
+ * @see {Xrm.Utility.openQuickCreate}
*/
- export interface XrmPromise
+ export type QuickCreateSuccessCallbackDelegate = ( record: OpenQuickCreateSuccessCallbackObject ) => void;
+
+ /**
+ * Called when the offline operation is successful.
+ *
+ * @param {OfflineOperationSuccessCallbackObject} record The record returned from the operation.
+ *
+ * @see {Xrm.Mobile.offline}
+ */
+ export type OfflineOperationSuccessCallbackDelegate = ( record: OfflineOperationSuccessCallbackObject ) => void;
+
+ /**
+ * Called when the offline retrieve multiple operation is successful.
+ *
+ * @param {OfflineRetrieveMultipleSuccessCallbackDelegate} resultSet The dictionary of records retrieved from the operation.
+ *
+ * @see {Xrm.Mobile.offline.retrieveMultipleRecords}
+ */
+ export type OfflineRetrieveMultipleSuccessCallbackDelegate = (resultSet: { [key: string]: any }[]) => void;
+
+ /**
+ * Called when the operation fails.
+ *
+ * @param {OfflineErrorCallbackObject} error The error object.
+ *
+ * @see {Xrm.Mobile.offline}
+ */
+ export type OfflineErrorCallbackDelegate = (error: OfflineErrorCallbackObject) => void;
+
+
+ /**
+ * Object passed to ErrorCallbackDelegate.
+ */
+ export interface ErrorCallbackObject
+ {
+ /**
+ * The error code.
+ */
+ errorCode: number;
+
+ /**
+ * An error message describing the issue.
+ */
+ message: string;
+ }
+
+ /**
+ * Object passed to QuickCreateSuccessCallbackDelegate.
+ */
+ export interface OpenQuickCreateSuccessCallbackObject
+ {
+ /**
+ * A lookup value which identifies the record which has been created.
+ */
+ savedEntityReference: Page.LookupValue;
+ }
+
+ /**
+ * Object passed to OfflineOperationSuccessCallbackDelegate;
+ */
+ export interface OfflineOperationSuccessCallbackObject
+ {
+ /**
+ * GUID of the record;
+ */
+ id: string;
+ /**
+ * Logical name of the entity.
+ */
+ logicalName: string;
+ }
+
+ /**
+ * Object passed to OfflineErrorCallbackDelegate.
+ */
+ export interface OfflineErrorCallbackObject extends ErrorCallbackObject
+ {
+ /**
+ * An internal error message that might contain additional details about the issue.
+ */
+ debugMessage: string;
+ }
+
+ /**
+ * Interface for asynchronous promises used in Xrm.Page.data and Xrm.Utility.openQuickCreate.
+ *
+ * @tparam TSuccessCallback Generic success callback parameter.
+ * @tparam TErrorCallback Generic error callback parameter.
+ */
+ export interface XrmPromise
{
/**
* A basic 'then' promise.
@@ -520,7 +830,7 @@ declare namespace Xrm
* @param {SuccessCallbackDelegate} successCallback The success callback.
* @param {ErrorCallbackDelegate} errorCallback The error callback.
*/
- then( successCallback: SuccessCallbackDelegate, errorCallback: ErrorCallbackDelegate ): void;
+ then( successCallback: TSuccessCallback, errorCallback: TErrorCallback ): void;
}
}
@@ -633,19 +943,57 @@ declare namespace Xrm
* Requirement Level for Xrm.Page.Attribute.getRequiredLevel() and Xrm.Page.Attribute.setRequiredLevel().
*/
export type RequirementLevel = "none" | "recommended" | "required";
+
/**
* Save Modes for Xrm.Page.Entity.save().
*/
export type SaveMode = "saveandclose" | "saveandnew";
+
/**
* Status for Xrm.Page.Stage.getStatus().
*/
export type Status = "active" | "inactive";
+
/**
* Submit Mode for Xrm.Page.Attribute.getSubmitMode() and Xrm.Page.Attribute.setSubmitMode().
*/
export type SubmitMode = "always" | "dirty" | "never";
+
+ /**
+ * Control types for Xrm.Page.Control.getControlType().
+ */
+ export type ControlType = "standard" | "iframe" | "lookup" | "optionset" | "subgrid" | "webresource" | "notes" | "timercontrol" | "kbsearch" | "quickform";
+ /**
+ * Date attribute formats for Xrm.Page.Attribute.getFormat(), used by DateAttribute.
+ */
+ export type DateAttributeFormat = "date" | "datetime";
+
+ /**
+ * Integer attribute formats for Xrm.Page.Attribute.getFormat(), used by NumberAttribute.
+ */
+ export type IntegerAttributeFormat = "duration" | "none";
+
+ /**
+ * OptionSet attribute formats for Xrm.Page.Attribute.getFormat(), used by OptionSetAttribute.
+ */
+ export type OptionSetAttributeFormat = "language" | "timezone";
+
+ /**
+ * String attribute formats for Xrm.Page.Attribute.getFormat(), used by StringAttribute.
+ */
+ export type StringAttributeFormat = "email" | "phone" | "text" | "textarea" | "tickersymbol" | "url";
+
+ /**
+ * Attribute types for Xrm.ui.ProcessMonitor Xrm.Page.Attribute.setDisplayState().
+ */
+ export type AttributeType = "boolean" | "datetime" | "decimal" | "double" | "integer" | "lookup" | "memo" | "money" | "optionset" | "string";
+
+ /**
+ * Attribute formats for Xrm.Page.Attribute.getFormat().
+ */
+ export type AttributeFormat = DateAttributeFormat | IntegerAttributeFormat | OptionSetAttributeFormat | StringAttributeFormat;
+
/**
* Interface for a CRM Business Process Flow instance.
*/
@@ -836,9 +1184,9 @@ declare namespace Xrm
}
/**
- * Base interface for UI elements.
+ * Interface for UI elements with labels.
*/
- export interface UiElement
+ export interface UiLabelElement
{
/**
* Gets the label.
@@ -846,21 +1194,33 @@ declare namespace Xrm
* @return The label.
*/
getLabel(): string;
-
- /**
- * Gets the visibility state.
- *
- * @return true if the tab is visible, otherwise false.
- */
- getVisible(): boolean;
-
+
/**
* Sets the label.
*
* @param {string} label The label.
*/
setLabel( label: string ): void;
+ }
+ /**
+ * Interface for UI elements which can have the visibility value read.
+ */
+ export interface UiCanGetVisibleElement
+ {
+ /**
+ * Gets the visibility state.
+ *
+ * @return true if the tab is visible, otherwise false.
+ */
+ getVisible(): boolean;
+ }
+
+ /**
+ * Base interface for standard UI elements.
+ */
+ export interface UiStandardElement extends UiCanGetVisibleElement, UiLabelElement
+ {
/**
* Sets the visibility state.
*
@@ -879,15 +1239,44 @@ declare namespace Xrm
*/
setFocus(): void;
}
+
+ /**
+ * Interface for controls which methods provide immediate feedback or take actions as user types in a control.
+ * Contains methods which can be used to perform data validations in a control even before the user commits (saves) the value in a form.
+ */
+ export interface UiKeyPressable
+ {
+ /**
+ * Use this to add a function as an event handler for the keypress event so that the function is called when you type a character in the specific text or number field.
+ * For a sample JavaScript code that uses the addOnKeyPress method to configure the auto-completion experience, see Sample: Auto-complete in CRM controls.
+ *
+ * @param {ContextSensitiveHandler} handler The function reference.
+ */
+ addOnKeyPress( handler: ContextSensitiveHandler ): void;
+
+ /**
+ * Use this to manually fire an event handler that you created for a specific text or number field to be executed on the keypress event.
+ */
+ fireOnKeyPress(): void;
+
+ /**
+ * Use this to remove an event handler for a text or number field that you added using addOnKeyPress.
+ *
+ * Remarks: If an anonymous function is set using addOnKeyPress, it can’t be removed using this method.
+ * @param {ContextSensitiveHandler} handler The function reference.
+ */
+ removeOnKeyPress( handler: ContextSensitiveHandler ): void;
+ }
/**
* Interface for Result value of AutoCompleteResultSet
*/
- export interface AutoCompleteResult {
+ export interface AutoCompleteResult
+ {
/**
* The Identifier
*/
- id: string|number;
+ id: string | number;
/**
* Url of the icon to display
@@ -903,7 +1292,8 @@ declare namespace Xrm
/**
* Interface for command of AutoCompleteResultSet. This is displayed at the bottom of the auto complete view
*/
- export interface AutoCompleteCommand {
+ export interface AutoCompleteCommand
+ {
/**
* The Identifier
*/
@@ -928,7 +1318,8 @@ declare namespace Xrm
/**
* Interface for showAutoComplete argument
*/
- export interface AutoCompleteResultSet {
+ export interface AutoCompleteResultSet
+ {
/**
* Results to show
*/
@@ -983,17 +1374,17 @@ declare namespace Xrm
export interface Privilege
{
/**
- * true if the user can read.
+ * True if the user can read.
*/
canRead: boolean;
/**
- * true if the user can update.
+ * True if the user can update.
*/
canUpdate: boolean;
/**
- * true if the user can create.
+ * True if the user can create.
*/
canCreate: boolean;
}
@@ -1032,7 +1423,7 @@ declare namespace Xrm
* string
*/
getAttributeType(): string;
-
+
/**
* Gets the attribute format.
*
@@ -1053,7 +1444,7 @@ declare namespace Xrm
* timezone (optionset)
* url (string)
*/
- getFormat(): string;
+ getFormat(): AttributeFormat;
/**
* Gets a boolean value indicating whether this Attribute has unsaved changes.
@@ -1111,7 +1502,7 @@ declare namespace Xrm
*
* @param {string} requirementLevel The requirement level, as either "none", "required", or "recommended"
*/
- setRequiredLevel(requirementLevel: RequirementLevel | string): void;
+ setRequiredLevel( requirementLevel: RequirementLevel | string ): void;
/**
* Sets the submit mode.
@@ -1120,12 +1511,26 @@ declare namespace Xrm
*
* @remarks The default value is "dirty"
*/
- setSubmitMode(submitMode: SubmitMode | string): void;
+ setSubmitMode( submitMode: SubmitMode | string ): void;
/**
* A collection of all the controls on the form that interface with this attribute.
*/
controls: Collection.ItemCollection;
+
+ /**
+ * Gets the value.
+ *
+ * @return The value.
+ */
+ getValue(): any;
+
+ /**
+ * Sets the value.
+ *
+ * @param {any} value The value.
+ */
+ setValue( value: any ): void;
}
/**
@@ -1135,6 +1540,16 @@ declare namespace Xrm
*/
export interface NumberAttribute extends Attribute
{
+ /**
+ * Gets the attribute format.
+ *
+ * @return The format of the attribute.
+ *
+ * @remarks Values returned are: duration
+ * none
+ */
+ getFormat(): IntegerAttributeFormat;
+
/**
* Gets the maximum value allowed.
*
@@ -1171,6 +1586,11 @@ declare namespace Xrm
* @remarks Attributes on Quick Create Forms will not save values set with this method.
*/
setValue( value: number ): void;
+
+ /**
+ * A collection of all the controls on the form that interface with this attribute.
+ */
+ controls: Collection.ItemCollection;
}
/**
@@ -1180,6 +1600,20 @@ declare namespace Xrm
*/
export interface StringAttribute extends Attribute
{
+ /**
+ * Gets the attribute format.
+ *
+ * @return The format of the attribute.
+ *
+ * @remarks Values returned are: email
+ * phone
+ * text
+ * textarea
+ * tickersymbol
+ * url
+ */
+ getFormat(): StringAttributeFormat;
+
/**
* Gets maximum length allowed.
*
@@ -1206,6 +1640,11 @@ declare namespace Xrm
* with this method.
*/
setValue( value: string ): void;
+
+ /**
+ * A collection of all the controls on the form that interface with this attribute.
+ */
+ controls: Collection.ItemCollection;
}
/**
@@ -1219,7 +1658,8 @@ declare namespace Xrm
* Gets the initial value of the attribute.
*
* @return The initial value.
- * @remarks Valid for optionset and boolean attribute types
+ *
+ * @remarks Valid for OptionSet and boolean attribute types
*/
getInitialValue(): number | boolean;
}
@@ -1255,6 +1695,16 @@ declare namespace Xrm
*/
export interface DateAttribute extends Attribute
{
+ /**
+ * Gets the attribute format.
+ *
+ * @return The format of the attribute.
+ *
+ * @remarks Values returned are: date
+ * datetime
+ */
+ getFormat(): DateAttributeFormat;
+
/**
* Gets the value.
*
@@ -1270,6 +1720,11 @@ declare namespace Xrm
* @remarks Attributes on Quick Create Forms will not save values set with this method.
*/
setValue( value: Date ): void;
+
+ /**
+ * A collection of all the controls on the form that interface with this attribute.
+ */
+ controls: Collection.ItemCollection;
}
/**
@@ -1279,6 +1734,16 @@ declare namespace Xrm
*/
export interface OptionSetAttribute extends EnumAttribute
{
+ /**
+ * Gets the attribute format.
+ *
+ * @return The format of the attribute.
+ *
+ * @remarks Values returned are: language
+ * timezone
+ */
+ getFormat(): OptionSetAttributeFormat;
+
/**
* Gets the option matching a value.
*
@@ -1336,6 +1801,11 @@ declare namespace Xrm
* with this method.
*/
setValue( value: number ): void;
+
+ /**
+ * A collection of all the controls on the form that interface with this attribute.
+ */
+ controls: Collection.ItemCollection;
}
/**
@@ -1367,6 +1837,11 @@ declare namespace Xrm
* @remarks Attributes on Quick Create Forms will not save values set with this method.
*/
setValue( value: LookupValue[] ): void;
+
+ /**
+ * A collection of all the controls on the form that interface with this attribute.
+ */
+ controls: Collection.ItemCollection;
}
/**
@@ -1464,6 +1939,7 @@ declare namespace Xrm
* Gets save mode, as an integer.
*
* @return The save mode.
+ *
* @remarks Values returned are: 1 Save
* 2 Save and Close
* 59 Save and New
@@ -1488,6 +1964,7 @@ declare namespace Xrm
/**
* Prevents the save operation from being submitted to the server.
+ *
* @remarks All remaining "on save" handlers will continue execution.
*/
preventDefault(): void;
@@ -1631,6 +2108,7 @@ declare namespace Xrm
* Called when process change methods have completed.
*
* @param {string} status The result of the process change operation.
+ *
* @remarks Values returned are: success (The operation succeeded.)
* crossEntity (The previous stage is for a different entity.)
* beginning (The active stage is the first stage of the active path.)
@@ -1645,29 +2123,19 @@ declare namespace Xrm
*/
export type ProcessDictionary = { [index: string]: string };
}
-
+
/**
* Interface for Xrm.Page.ui controls.
*
* @sa UiElement
*/
- export interface Control extends UiElement, UiFocusable
+ export interface Control extends UiLabelElement, UiCanGetVisibleElement
{
/**
- * Clears the notification identified by uniqueId.
- *
- * @param {string} uniqueId (Optional) Unique identifier.
- *
- * @return true if it succeeds, false if it fails.
- *
- * @remarks If the uniqueId parameter is not used, the current notification shown will be removed.
- */
- clearNotification( uniqueId?: string ): boolean;
-
- /**
- * Gets the control's type.
+ * Gets the controls type.
*
* @return The control type.
+ *
* @remarks Values returned are: standard
* iframe
* lookup
@@ -1677,16 +2145,12 @@ declare namespace Xrm
* notes
* timercontrol
* kbsearch (CRM Online Only, use parature.d.ts)
+ * quickform (see ui.QuickForm)
+ * customcontrol: . (A custom control for mobile phone and tablet clients).
+ * customsubgrid: . (A custom dataset control for mobile phone and tablet clients).
*/
- getControlType(): string;
-
- /**
- * Gets a boolean value, indicating whether the control is disabled.
- *
- * @return true if it is disabled, otherwise false.
- */
- getDisabled(): boolean;
-
+ getControlType(): ControlType | string;
+
/**
* Gets the name of the control on the form.
*
@@ -1711,7 +2175,33 @@ declare namespace Xrm
* @return The parent Section.
*/
getParent(): Section;
-
+ }
+
+ /**
+ * Interface for a standard control.
+ *
+ * @sa Control
+ */
+ export interface StandardControl extends Control, UiStandardElement, UiFocusable
+ {
+ /**
+ * Clears the notification identified by uniqueId.
+ *
+ * @param {string} uniqueId (Optional) Unique identifier.
+ *
+ * @return true if it succeeds, false if it fails.
+ *
+ * @remarks If the uniqueId parameter is not used, the current notification shown will be removed.
+ */
+ clearNotification( uniqueId?: string ): boolean;
+
+ /**
+ * Gets a boolean value, indicating whether the control is disabled.
+ *
+ * @return true if it is disabled, otherwise false.
+ */
+ getDisabled(): boolean;
+
/**
* Sets the state of the control to either enabled, or disabled.
*
@@ -1731,15 +2221,7 @@ declare namespace Xrm
* appears next to the control. Tapping on the icon will display the message.
*/
setNotification( message: string, uniqueId: string ): boolean;
- }
- /**
- * Interface for a standard control.
- *
- * @sa Control
- */
- export interface StandardControl extends Control
- {
/**
* Gets the control's bound attribute.
*
@@ -1756,28 +2238,17 @@ declare namespace Xrm
*/
getAttribute(): Attribute;
}
-
+
/**
- * Interace for Auto Lookup Control
- * This is not an Entity Lookup, but a control that supports AutoComplete/KeyPress Events (Text)
- * NOTE * This interface is not supported for CRM mobile clients (phones or tablets) and the interactive service hub. It is only available for Updated entities.
+ * Interface for Auto Lookup Control.
+ * This is not an Entity Lookup, but a control that supports AutoComplete / KeyPress Events (Text or Number)
+ *
+ * @remarks This interface is not supported for CRM mobile clients (phones or tablets) and the interactive service hub. It is only available for Updated entities.
*
* @sa StandardControl
*/
- export interface AutoLookupControl extends StandardControl {
- /**
- * Use this to add a function as an event handler for the keypress event so that the function is called when you type a character in the specific text or number field.
- * For a sample JavaScript code that uses the addOnKeyPress method to configure the auto-completion experience, see Sample: Auto-complete in CRM controls.
- *
- * @param {ContextSensitiveHandler} handler The function reference.
- */
- addOnKeyPress(handler: ContextSensitiveHandler): void;
-
- /**
- * Use this to manually fire an event handler that you created for a specific text or number field to be executed on the keypress event.
- */
- fireOnKeyPress(): void;
-
+ export interface AutoLookupControl extends StandardControl, UiKeyPressable
+ {
/**
* Gets the latest value in a control as the user types characters in a specific text or number field.
* This method helps you to build interactive experiences by validating data and alerting users as they type characters in a control.
@@ -1790,15 +2261,7 @@ declare namespace Xrm
* Hides the auto-completion drop-down list configured for a specific text field
*/
hideAutoComplete(): void;
-
- /**
- * Use this to remove an event handler for a text or number field that you added using addOnKeyPress.
- *
- * Remarks: If an anonymous function is set using addOnKeyPress, it can’t be removed using this method.
- * @param {ContextSensitiveHandler} handler The function reference.
- */
- removeOnKeyPress(handler: ContextSensitiveHandler): void;
-
+
/**
* Shows upt to 10 matching strings in a drop-down list as users press keys to type charactrer in a specific text field.
* On selecting an item in the drop-down list, the value in the text field changes to the selected item, the drop-down list disappears, and the OnChange event for the text field is invoked
@@ -1807,6 +2270,36 @@ declare namespace Xrm
showAutoComplete(resultSet: AutoCompleteResultSet): void;
}
+ /**
+ * Interface for a String control.
+ *
+ * @sa StandardControl
+ */
+ export interface StringControl extends AutoLookupControl
+ {
+ /**
+ * Gets the control's bound attribute.
+ *
+ * @return The attribute.
+ */
+ getAttribute(): StringAttribute;
+ }
+
+ /**
+ * Interface for a Number control.
+ *
+ * @sa StandardControl
+ */
+ export interface NumberControl extends AutoLookupControl
+ {
+ /**
+ * Gets the control's bound attribute.
+ *
+ * @return The attribute.
+ */
+ getAttribute(): NumberAttribute;
+ }
+
/**
* Interface for a Date control.
*
@@ -2110,7 +2603,7 @@ declare namespace Xrm
* @sa UiElement
* @sa UiFocusable
*/
- export interface Tab extends UiElement, UiFocusable
+ export interface Tab extends UiStandardElement, UiFocusable
{
/**
* Gets display state of the tab.
@@ -2151,7 +2644,7 @@ declare namespace Xrm
*
* @sa UiElement
*/
- export interface Section extends UiElement
+ export interface Section extends UiStandardElement
{
/**
* Gets the name of the section.
@@ -2183,14 +2676,14 @@ declare namespace Xrm
*/
export type FormNotificationLevel = "ERROR" | "INFO" | "WARNING";
- /**
+ /**
* Display States for Xrm.ui.ProcessMonitor.setDisplayState().
- */
+ */
export type DisplayState = "collapsed" | "expanded";
- /**
+ /**
* Interface for Xrm.Page.ui.process API
- */
+ */
export interface ProcessManager
{
/**
@@ -2198,7 +2691,7 @@ declare namespace Xrm
*
* @param {string} displayState Display state of the process flow control, as either "expanded" or "collapsed"
*/
- setDisplayState(displayState: ui.DisplayState ): void;
+ setDisplayState( displayState: ui.DisplayState ): void;
/**
* Sets the visibility state.
@@ -2330,7 +2823,7 @@ declare namespace Xrm
}
/**
- * Interface for a view selector item. This object contains data that identifies a view. Use this as a parameter to
+ * Interface for a view selector item. This object contains data that identifies a view. Use this as a parameter to
* the ViewSelector.setCurrentView method.
*/
export interface ViewSelectorItem
@@ -2342,6 +2835,93 @@ declare namespace Xrm
*/
getEntityReference(): LookupValue;
}
+
+ /**
+ * Interface for a quick view control instance on a form.
+ *
+ * @see {@link https://msdn.microsoft.com/en-us/library/mt736908.aspx#bkmk_isLoaded} for details.
+ */
+ export interface QuickForm extends Control, UiLabelElement, UiCanGetVisibleElement
+ {
+ /**
+ * Gets the constituent controls in a quick view control.
+ *
+ * @return An array of controls.
+ *
+ * @remarks Constituent controls in a quick view control are read only.
+ */
+ getControl(): Page.Control[];
+
+ /**
+ * Gets the constituent controls in a quick view control.
+ *
+ * @tparam T A Control type
+ * @param {string} controlName Name of the control.
+ *
+ * @return The control.
+ *
+ * @remarks Constituent controls in a quick view control are read only.
+ */
+ getControl( controlName: string ): T;
+
+ /**
+ * Gets the constituent controls in a quick view control.
+ *
+ * @param {string} controlName Name of the control.
+ *
+ * @return The control.
+ *
+ * @remarks Constituent controls in a quick view control are read only.
+ */
+ getControl( controlName: string ): Page.Control;
+
+ /**
+ * Gets a control by index.
+ *
+ * @tparam T A Control type
+ * @param {number} index The control index.
+ *
+ * @return The control.
+ *
+ * @remarks Constituent controls in a quick view control are read only.
+ */
+ getControl( index: number ): T;
+
+ /**
+ * Gets a control by index.
+ *
+ * @param {number} index The control index.
+ *
+ * @return The control.
+ *
+ * @remarks Constituent controls in a quick view control are read only.
+ */
+ getControl( index: number ): Page.Control;
+
+ /**
+ * Gets the controls type.
+ *
+ * @return Returns a string value that categorizes quick view controls.
+ */
+ getControlType(): "quickform";
+
+ /**
+ * Returns whether the data binding for the constituent controls in a quick view control is complete.
+ *
+ * @return True is the data binding for a constituent control is complete, otherwise false.
+ * because the quick view form that the control is bound to may not have loaded completely.
+ * As a result, using the getAttribute or any data-related methods on a constituent control might not work.
+ * The isLoaded method for the quick view control helps determine the data binding status for constituent controls in a quick view control.
+ *
+ * @remarks The data binding for the constituent controls in a quick view control may not be complete during the main form OnLoad event
+ */
+ isLoaded(): boolean;
+
+ /**
+ * Refreshes the data displayed in a quick view control.
+ */
+ refresh(): void;
+ }
}
/**
@@ -2350,7 +2930,7 @@ declare namespace Xrm
* @sa UiElement
* @sa UiFocusable
*/
- export interface NavigationItem extends UiElement, UiFocusable
+ export interface NavigationItem extends UiStandardElement, UiFocusable
{
/**
* Gets the name of the item.
@@ -2427,11 +3007,13 @@ declare namespace Xrm
/**
* Command Bar Display options for Xrm.Url.FormOpenParameters.cmdbar, Xrm.Url.ViewOpenParameters.cmdbar, and Xrm.Utility.FormOpenParameters.cmdbar.
*/
+
export type CmdBarDisplay = "true" | "false";
/**
* Navigation Bar Display options for Xrm.Url.FormOpenParameters.navbar, Xrm.Url.ViewOpenParameters.navbar, and Xrm.Utility.FormOpenParameters.navbar.
*/
export type NavBarDisplay = "entity" | "off" | "on";
+
/**
* Report Open Action options for Xrm.Url.ReportOpenParameters.actions.
*/
diff --git a/xrm/xrm-tests.ts b/xrm/xrm-tests.ts
index 1893b9b89a..56d8f32b3c 100644
--- a/xrm/xrm-tests.ts
+++ b/xrm/xrm-tests.ts
@@ -75,7 +75,8 @@ Xrm.Utility.openQuickCreate("account").then(( object ) => { if (object) alert( `
/// Make all controls visible.
-Xrm.Page.ui.controls.forEach(( control ) => { control.setVisible( true ); });
+// Xrm.Page.ui.controls.forEach(( control ) => { control.setVisible( true ); }); // No longer works
+Xrm.Page.ui.controls.forEach((control: Xrm.Page.StandardControl) => { control.setVisible(true); }); // Must cast to StandardControl
/// Make all tabs and sections visible.
@@ -166,4 +167,28 @@ autoCompleteControl.hideAutoComplete();
+/// Demonstrate v8.2 quick form controls
+
+const quickForm = Xrm.Page.ui.quickForms.get(0);
+quickForm.getControlType(); // == "quickform"
+quickForm.getName();
+quickForm.getParent();
+quickForm.getVisible(); // From UiCanSetVisibleElement
+quickForm.getLabel(); // From UiLabelElement
+quickForm.setLabel("Label"); // From UiLabelElement
+quickForm.refresh();
+
+// Get standard control
+const ctrl = Xrm.Page.getControl("controlName");
+ctrl.getControlType()
+ctrl.getName();
+ctrl.getParent();
+ctrl.getLabel();
+ctrl.setLabel("Label name");
+ctrl.getVisible();
+ctrl.setVisible(true);
+
+
+
+