Skip to content

Commit 880802c

Browse files
authored
🤖 Merge PR DefinitelyTyped#72181 Allow MultiSelect Attribute to use enum in XRM by @aquacash5
1 parent 6811a6e commit 880802c

File tree

2 files changed

+38
-3
lines changed

2 files changed

+38
-3
lines changed

‎types/xrm/index.d.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2923,7 +2923,7 @@ declare namespace Xrm {
29232923
* Interface an OptionSet attribute.
29242924
* @see {@link EnumAttribute}
29252925
*/
2926-
interface MultiSelectOptionSetAttribute extends EnumAttribute<number[]> {
2926+
interface MultiSelectOptionSetAttribute<T extends number = number> extends EnumAttribute<T[]> {
29272927
/**
29282928
* Gets the attribute format.
29292929
* @returns The format of the attribute.

‎types/xrm/xrm-tests.ts‎

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ alert(`The current form type is: ${formContext.ui.getFormType()}`);
153153

154154
alert(`The current entity type is: ${formContext.data.entity.getEntityName()}`);
155155

156-
/// Demonstrate Optionset Value as int in Turbo Forms
156+
/// Demonstrate OptionSet Value as int
157157

158158
const optionSetAttribute = formContext.getAttribute<Xrm.Attributes.OptionSetAttribute>("statuscode");
159159
if (optionSetAttribute !== null) {
@@ -170,6 +170,41 @@ if (optionSetAttribute !== null) {
170170
}
171171
}
172172

173+
/// Demonstrate OptionSet Value as enum
174+
175+
enum TestOptionSet {
176+
Option1 = 56666000,
177+
Option2 = 56666001,
178+
}
179+
180+
const optionSetAttributeEnum = formContext.getAttribute<Xrm.Attributes.OptionSetAttribute<TestOptionSet>>("statuscode");
181+
if (optionSetAttributeEnum !== null) {
182+
const optionEnumValue: TestOptionSet | null = optionSetAttributeEnum.getValue();
183+
}
184+
185+
/// Demonstrate MultiSelectOptionSet Value as int
186+
187+
const multiSelectOptionSetAttribute = formContext.getAttribute<Xrm.Attributes.MultiSelectOptionSetAttribute>(
188+
"statuscode",
189+
);
190+
if (multiSelectOptionSetAttribute !== null) {
191+
const multiSelectOptionValue: number = multiSelectOptionSetAttribute.getOptions()[0].value;
192+
}
193+
194+
/// Demonstrate MultiSelectOptionSet Value as enum
195+
196+
enum TestMultiSelectOptionSet {
197+
Option1 = 56666000,
198+
Option2 = 56666001,
199+
}
200+
201+
const multiSelectOptionSetAttributeEnum = formContext.getAttribute<
202+
Xrm.Attributes.MultiSelectOptionSetAttribute<TestMultiSelectOptionSet>
203+
>("statuscode");
204+
if (multiSelectOptionSetAttributeEnum !== null) {
205+
const multiSelectOptionEnumValue: TestMultiSelectOptionSet[] | null = multiSelectOptionSetAttributeEnum.getValue();
206+
}
207+
173208
/// Demonstrate setFormNotification
174209

175210
let level: Xrm.FormNotificationLevel;
@@ -634,7 +669,7 @@ const multiSelectOptionSetControl = formContext.getControl<Xrm.Controls.MultiSel
634669
if (multiSelectOptionSetControl === null) {
635670
throw new Error("Control does not exist!");
636671
}
637-
// $ExpectType MultiSelectOptionSetAttribute
672+
// $ExpectType MultiSelectOptionSetAttribute<number>
638673
multiSelectOptionSetControl.getAttribute();
639674

640675
// Demonstrates getWebResourceUrl

0 commit comments

Comments
 (0)