@aurodesignsystem-dev/auro-formkit 0.0.0-pr1318.0 → 0.0.0-pr1318.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/components/checkbox/demo/api.min.js +1 -1
  2. package/components/checkbox/demo/index.min.js +1 -1
  3. package/components/checkbox/dist/index.js +1 -1
  4. package/components/checkbox/dist/registered.js +1 -1
  5. package/components/combobox/demo/api.min.js +63 -7
  6. package/components/combobox/demo/index.min.js +63 -7
  7. package/components/combobox/dist/auro-combobox.d.ts +1 -1
  8. package/components/combobox/dist/index.js +63 -7
  9. package/components/combobox/dist/registered.js +63 -7
  10. package/components/counter/demo/api.min.js +17 -3
  11. package/components/counter/demo/index.min.js +17 -3
  12. package/components/counter/dist/index.js +17 -3
  13. package/components/counter/dist/registered.js +17 -3
  14. package/components/datepicker/demo/api.min.js +43 -5
  15. package/components/datepicker/demo/index.min.js +43 -5
  16. package/components/datepicker/dist/index.js +43 -5
  17. package/components/datepicker/dist/registered.js +43 -5
  18. package/components/dropdown/demo/api.min.js +16 -2
  19. package/components/dropdown/demo/index.min.js +16 -2
  20. package/components/dropdown/dist/auro-dropdown.d.ts +9 -0
  21. package/components/dropdown/dist/index.js +16 -2
  22. package/components/dropdown/dist/registered.js +16 -2
  23. package/components/input/demo/api.md +5 -3
  24. package/components/input/demo/api.min.js +26 -2
  25. package/components/input/demo/index.min.js +26 -2
  26. package/components/input/dist/auro-input.d.ts +1 -0
  27. package/components/input/dist/base-input.d.ts +10 -0
  28. package/components/input/dist/index.js +26 -2
  29. package/components/input/dist/registered.js +26 -2
  30. package/components/radio/demo/api.min.js +1 -1
  31. package/components/radio/demo/index.min.js +1 -1
  32. package/components/radio/dist/index.js +1 -1
  33. package/components/radio/dist/registered.js +1 -1
  34. package/components/select/demo/api.min.js +56 -11
  35. package/components/select/demo/index.min.js +56 -11
  36. package/components/select/dist/auro-select.d.ts +7 -0
  37. package/components/select/dist/index.js +56 -11
  38. package/components/select/dist/registered.js +56 -11
  39. package/custom-elements.json +92 -5
  40. package/package.json +9 -3
@@ -1687,7 +1687,7 @@ class AuroHelpText extends i$2 {
1687
1687
  }
1688
1688
  }
1689
1689
 
1690
- var formkitVersion = '202602031735';
1690
+ var formkitVersion = '202602112105';
1691
1691
 
1692
1692
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1693
1693
  // See LICENSE in the project root for license information.
@@ -1679,7 +1679,7 @@ class AuroHelpText extends i$2 {
1679
1679
  }
1680
1680
  }
1681
1681
 
1682
- var formkitVersion = '202602031735';
1682
+ var formkitVersion = '202602112105';
1683
1683
 
1684
1684
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1685
1685
  // See LICENSE in the project root for license information.
@@ -1632,7 +1632,7 @@ class AuroHelpText extends LitElement {
1632
1632
  }
1633
1633
  }
1634
1634
 
1635
- var formkitVersion = '202602031735';
1635
+ var formkitVersion = '202602112105';
1636
1636
 
1637
1637
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1638
1638
  // See LICENSE in the project root for license information.
@@ -1632,7 +1632,7 @@ class AuroHelpText extends LitElement {
1632
1632
  }
1633
1633
  }
1634
1634
 
1635
- var formkitVersion = '202602031735';
1635
+ var formkitVersion = '202602112105';
1636
1636
 
1637
1637
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1638
1638
  // See LICENSE in the project root for license information.
@@ -4375,7 +4375,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$4 {
4375
4375
  }
4376
4376
  };
4377
4377
 
4378
- var formkitVersion$2 = '202602031735';
4378
+ var formkitVersion$2 = '202602112105';
4379
4379
 
4380
4380
  let AuroElement$2 = class AuroElement extends i$4 {
4381
4381
  static get properties() {
@@ -4662,6 +4662,20 @@ class AuroDropdown extends AuroElement$2 {
4662
4662
  }
4663
4663
  }
4664
4664
 
4665
+ /**
4666
+ * Sets the active descendant element for accessibility.
4667
+ * Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
4668
+ * This function is used in components that contain `auro-dropdown` to set the active descendant.
4669
+ * @private
4670
+ * @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
4671
+ * @returns {void}
4672
+ */
4673
+ setActiveDescendant(element) {
4674
+ if (this.trigger) {
4675
+ this.trigger.ariaActiveDescendantElement = element;
4676
+ }
4677
+ }
4678
+
4665
4679
  // function to define props used within the scope of this component
4666
4680
  static get properties() {
4667
4681
  return {
@@ -5305,7 +5319,7 @@ class AuroDropdown extends AuroElement$2 {
5305
5319
  tabindex="${o(this.triggerContentFocusable ? undefined : this.tabIndex)}"
5306
5320
  role="${o(this.triggerContentFocusable ? undefined : this.a11yRole)}"
5307
5321
  aria-expanded="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
5308
- aria-controls="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
5322
+ aria-controls="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : `${this.dropdownId}-floater-bib`)}"
5309
5323
  aria-labelledby="${o(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
5310
5324
  @focusin="${this.handleFocusin}"
5311
5325
  @blur="${this.handleFocusOut}">
@@ -10768,6 +10782,7 @@ class BaseInput extends AuroElement$1 {
10768
10782
 
10769
10783
  /**
10770
10784
  * The maximum number of characters the user can enter into the text input. This must be an integer value `0` or higher.
10785
+ * **Note**: This attribute is not intended to be used with a `type` or `format` that already has a defined length, such as credit-cards, dates or phone numbers.
10771
10786
  */
10772
10787
  maxLength: {
10773
10788
  type: Number,
@@ -11293,6 +11308,11 @@ class BaseInput extends AuroElement$1 {
11293
11308
  * @returns {void}
11294
11309
  */
11295
11310
  handleInput(event) {
11311
+ // Process credit card type detection and formatting during input
11312
+ if (this.type === 'credit-card') {
11313
+ this.processCreditCard();
11314
+ }
11315
+
11296
11316
  // Sets value property to value of element value (el.value).
11297
11317
  this.value = this.inputElement.value;
11298
11318
 
@@ -11372,6 +11392,20 @@ class BaseInput extends AuroElement$1 {
11372
11392
  return activeEl;
11373
11393
  }
11374
11394
 
11395
+ /**
11396
+ * Sets the active descendant element for accessibility.
11397
+ * Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
11398
+ * This function is used in components that contain `auro-input` to set the active descendant.
11399
+ * @private
11400
+ * @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
11401
+ * @returns {void}
11402
+ */
11403
+ setActiveDescendant(element) {
11404
+ if (this.inputElement) {
11405
+ this.inputElement.ariaActiveDescendantElement = element;
11406
+ }
11407
+ }
11408
+
11375
11409
  /**
11376
11410
  * Validates value.
11377
11411
  * @param {boolean} [force=false] - Whether to force validation.
@@ -11410,6 +11444,7 @@ class BaseInput extends AuroElement$1 {
11410
11444
 
11411
11445
  if (this.type in defaultLengths) {
11412
11446
  this.lengthForType = this.format ? this.format.length : defaultLengths[this.type];
11447
+ this.maxLength = this.lengthForType;
11413
11448
  this.inputmode = this.inputmode || 'numeric';
11414
11449
  } else if (this.type === 'number') {
11415
11450
  this.inputmode = this.inputmode || 'numeric';
@@ -11520,6 +11555,7 @@ class BaseInput extends AuroElement$1 {
11520
11555
  */
11521
11556
  processCreditCard() {
11522
11557
  const creditCard = this.matchInputValueToCreditCard();
11558
+ const previousFormat = this.format;
11523
11559
 
11524
11560
  this.format = creditCard.maskFormat;
11525
11561
 
@@ -11532,7 +11568,8 @@ class BaseInput extends AuroElement$1 {
11532
11568
  this.inputIconName = creditCard.cardIcon;
11533
11569
  }
11534
11570
 
11535
- if (this.inputElement) {
11571
+ // Only reconfigure the mask if the format has changed
11572
+ if (this.inputElement && previousFormat !== this.format) {
11536
11573
  this.configureAutoFormatting();
11537
11574
  }
11538
11575
  }
@@ -11993,7 +12030,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$4 {
11993
12030
  }
11994
12031
  };
11995
12032
 
11996
- var formkitVersion$1 = '202602031735';
12033
+ var formkitVersion$1 = '202602112105';
11997
12034
 
11998
12035
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
11999
12036
  // See LICENSE in the project root for license information.
@@ -12195,6 +12232,7 @@ class AuroInput extends BaseInput {
12195
12232
  /**
12196
12233
  * Common display value wrapper classes.
12197
12234
  * @private
12235
+ * @returns {Record<string, boolean>}
12198
12236
  */
12199
12237
  get commonDisplayValueWrapperClasses() {
12200
12238
  return {
@@ -13018,7 +13056,7 @@ class AuroBibtemplate extends i$4 {
13018
13056
  }
13019
13057
  }
13020
13058
 
13021
- var formkitVersion = '202602031735';
13059
+ var formkitVersion = '202602112105';
13022
13060
 
13023
13061
  var styleCss$3 = i$7`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
13024
13062
 
@@ -13782,7 +13820,7 @@ class AuroCombobox extends AuroElement {
13782
13820
  },
13783
13821
 
13784
13822
  /**
13785
- * Specifies the currently active option.
13823
+ * Specifies the currently active/highlighted `auro-menuoption`.
13786
13824
  * @private
13787
13825
  */
13788
13826
  optionActive: {
@@ -14019,6 +14057,12 @@ class AuroCombobox extends AuroElement {
14019
14057
  this.dropdownOpen = ev.detail.expanded;
14020
14058
  this.updateMenuShapeSize();
14021
14059
 
14060
+ // Clear aria-activedescendant when dropdown closes
14061
+ if (!this.dropdownOpen && this.input) {
14062
+ this.input.setActiveDescendant(null);
14063
+ this.optionActive = null;
14064
+ }
14065
+
14022
14066
  // wait a frame in case the bib gets hide immediately after showing because there is no value
14023
14067
  setTimeout(() => {
14024
14068
  if (this.componentHasFocus) {
@@ -14118,6 +14162,13 @@ class AuroCombobox extends AuroElement {
14118
14162
  */
14119
14163
  configureMenu() {
14120
14164
  this.menu = this.querySelector('auro-menu, [auro-menu]');
14165
+
14166
+ const labelElement = this.querySelector('span[slot="label"]');
14167
+
14168
+ if (labelElement) {
14169
+ this.menu.setAttribute('aria-label', labelElement.textContent);
14170
+ }
14171
+
14121
14172
  this.defaultMenuShape = this.menu.getAttribute('shape');
14122
14173
 
14123
14174
  // racing condition on custom-combobox with custom-menu
@@ -14174,6 +14225,10 @@ class AuroCombobox extends AuroElement {
14174
14225
  this.menu.addEventListener('auroMenu-activatedOption', (evt) => {
14175
14226
  this.optionActive = evt.detail;
14176
14227
 
14228
+ if (this.input) {
14229
+ this.input.setActiveDescendant(this.optionActive);
14230
+ }
14231
+
14177
14232
  this.optionActive.scrollIntoView({
14178
14233
  alignToTop: false,
14179
14234
  block: "nearest",
@@ -14241,6 +14296,7 @@ class AuroCombobox extends AuroElement {
14241
14296
 
14242
14297
  this.menu.matchWord = this.input.value;
14243
14298
  this.optionActive = null;
14299
+ this.input.setActiveDescendant(null);
14244
14300
 
14245
14301
  if (!this.input.value) {
14246
14302
  this.clear();
@@ -14669,7 +14725,7 @@ class AuroCombobox extends AuroElement {
14669
14725
  <${this.inputTag}
14670
14726
  id="inputInBib"
14671
14727
  @input="${this.handleInputValueChange}"
14672
- .a11yControls="${this.dropdownId}"
14728
+ .a11yControls=${`${this.dropdownId}-floater-bib`}
14673
14729
  .autocomplete="${this.autocomplete}"
14674
14730
  .format="${this.format}"
14675
14731
  .inputmode="${this.inputmode}"
@@ -4312,7 +4312,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$4 {
4312
4312
  }
4313
4313
  };
4314
4314
 
4315
- var formkitVersion$2 = '202602031735';
4315
+ var formkitVersion$2 = '202602112105';
4316
4316
 
4317
4317
  let AuroElement$2 = class AuroElement extends i$4 {
4318
4318
  static get properties() {
@@ -4599,6 +4599,20 @@ class AuroDropdown extends AuroElement$2 {
4599
4599
  }
4600
4600
  }
4601
4601
 
4602
+ /**
4603
+ * Sets the active descendant element for accessibility.
4604
+ * Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
4605
+ * This function is used in components that contain `auro-dropdown` to set the active descendant.
4606
+ * @private
4607
+ * @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
4608
+ * @returns {void}
4609
+ */
4610
+ setActiveDescendant(element) {
4611
+ if (this.trigger) {
4612
+ this.trigger.ariaActiveDescendantElement = element;
4613
+ }
4614
+ }
4615
+
4602
4616
  // function to define props used within the scope of this component
4603
4617
  static get properties() {
4604
4618
  return {
@@ -5242,7 +5256,7 @@ class AuroDropdown extends AuroElement$2 {
5242
5256
  tabindex="${o(this.triggerContentFocusable ? undefined : this.tabIndex)}"
5243
5257
  role="${o(this.triggerContentFocusable ? undefined : this.a11yRole)}"
5244
5258
  aria-expanded="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
5245
- aria-controls="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
5259
+ aria-controls="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : `${this.dropdownId}-floater-bib`)}"
5246
5260
  aria-labelledby="${o(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
5247
5261
  @focusin="${this.handleFocusin}"
5248
5262
  @blur="${this.handleFocusOut}">
@@ -10705,6 +10719,7 @@ class BaseInput extends AuroElement$1 {
10705
10719
 
10706
10720
  /**
10707
10721
  * The maximum number of characters the user can enter into the text input. This must be an integer value `0` or higher.
10722
+ * **Note**: This attribute is not intended to be used with a `type` or `format` that already has a defined length, such as credit-cards, dates or phone numbers.
10708
10723
  */
10709
10724
  maxLength: {
10710
10725
  type: Number,
@@ -11230,6 +11245,11 @@ class BaseInput extends AuroElement$1 {
11230
11245
  * @returns {void}
11231
11246
  */
11232
11247
  handleInput(event) {
11248
+ // Process credit card type detection and formatting during input
11249
+ if (this.type === 'credit-card') {
11250
+ this.processCreditCard();
11251
+ }
11252
+
11233
11253
  // Sets value property to value of element value (el.value).
11234
11254
  this.value = this.inputElement.value;
11235
11255
 
@@ -11309,6 +11329,20 @@ class BaseInput extends AuroElement$1 {
11309
11329
  return activeEl;
11310
11330
  }
11311
11331
 
11332
+ /**
11333
+ * Sets the active descendant element for accessibility.
11334
+ * Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
11335
+ * This function is used in components that contain `auro-input` to set the active descendant.
11336
+ * @private
11337
+ * @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
11338
+ * @returns {void}
11339
+ */
11340
+ setActiveDescendant(element) {
11341
+ if (this.inputElement) {
11342
+ this.inputElement.ariaActiveDescendantElement = element;
11343
+ }
11344
+ }
11345
+
11312
11346
  /**
11313
11347
  * Validates value.
11314
11348
  * @param {boolean} [force=false] - Whether to force validation.
@@ -11347,6 +11381,7 @@ class BaseInput extends AuroElement$1 {
11347
11381
 
11348
11382
  if (this.type in defaultLengths) {
11349
11383
  this.lengthForType = this.format ? this.format.length : defaultLengths[this.type];
11384
+ this.maxLength = this.lengthForType;
11350
11385
  this.inputmode = this.inputmode || 'numeric';
11351
11386
  } else if (this.type === 'number') {
11352
11387
  this.inputmode = this.inputmode || 'numeric';
@@ -11457,6 +11492,7 @@ class BaseInput extends AuroElement$1 {
11457
11492
  */
11458
11493
  processCreditCard() {
11459
11494
  const creditCard = this.matchInputValueToCreditCard();
11495
+ const previousFormat = this.format;
11460
11496
 
11461
11497
  this.format = creditCard.maskFormat;
11462
11498
 
@@ -11469,7 +11505,8 @@ class BaseInput extends AuroElement$1 {
11469
11505
  this.inputIconName = creditCard.cardIcon;
11470
11506
  }
11471
11507
 
11472
- if (this.inputElement) {
11508
+ // Only reconfigure the mask if the format has changed
11509
+ if (this.inputElement && previousFormat !== this.format) {
11473
11510
  this.configureAutoFormatting();
11474
11511
  }
11475
11512
  }
@@ -11930,7 +11967,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$4 {
11930
11967
  }
11931
11968
  };
11932
11969
 
11933
- var formkitVersion$1 = '202602031735';
11970
+ var formkitVersion$1 = '202602112105';
11934
11971
 
11935
11972
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
11936
11973
  // See LICENSE in the project root for license information.
@@ -12132,6 +12169,7 @@ class AuroInput extends BaseInput {
12132
12169
  /**
12133
12170
  * Common display value wrapper classes.
12134
12171
  * @private
12172
+ * @returns {Record<string, boolean>}
12135
12173
  */
12136
12174
  get commonDisplayValueWrapperClasses() {
12137
12175
  return {
@@ -12955,7 +12993,7 @@ class AuroBibtemplate extends i$4 {
12955
12993
  }
12956
12994
  }
12957
12995
 
12958
- var formkitVersion = '202602031735';
12996
+ var formkitVersion = '202602112105';
12959
12997
 
12960
12998
  var styleCss$3 = i$7`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
12961
12999
 
@@ -13719,7 +13757,7 @@ class AuroCombobox extends AuroElement {
13719
13757
  },
13720
13758
 
13721
13759
  /**
13722
- * Specifies the currently active option.
13760
+ * Specifies the currently active/highlighted `auro-menuoption`.
13723
13761
  * @private
13724
13762
  */
13725
13763
  optionActive: {
@@ -13956,6 +13994,12 @@ class AuroCombobox extends AuroElement {
13956
13994
  this.dropdownOpen = ev.detail.expanded;
13957
13995
  this.updateMenuShapeSize();
13958
13996
 
13997
+ // Clear aria-activedescendant when dropdown closes
13998
+ if (!this.dropdownOpen && this.input) {
13999
+ this.input.setActiveDescendant(null);
14000
+ this.optionActive = null;
14001
+ }
14002
+
13959
14003
  // wait a frame in case the bib gets hide immediately after showing because there is no value
13960
14004
  setTimeout(() => {
13961
14005
  if (this.componentHasFocus) {
@@ -14055,6 +14099,13 @@ class AuroCombobox extends AuroElement {
14055
14099
  */
14056
14100
  configureMenu() {
14057
14101
  this.menu = this.querySelector('auro-menu, [auro-menu]');
14102
+
14103
+ const labelElement = this.querySelector('span[slot="label"]');
14104
+
14105
+ if (labelElement) {
14106
+ this.menu.setAttribute('aria-label', labelElement.textContent);
14107
+ }
14108
+
14058
14109
  this.defaultMenuShape = this.menu.getAttribute('shape');
14059
14110
 
14060
14111
  // racing condition on custom-combobox with custom-menu
@@ -14111,6 +14162,10 @@ class AuroCombobox extends AuroElement {
14111
14162
  this.menu.addEventListener('auroMenu-activatedOption', (evt) => {
14112
14163
  this.optionActive = evt.detail;
14113
14164
 
14165
+ if (this.input) {
14166
+ this.input.setActiveDescendant(this.optionActive);
14167
+ }
14168
+
14114
14169
  this.optionActive.scrollIntoView({
14115
14170
  alignToTop: false,
14116
14171
  block: "nearest",
@@ -14178,6 +14233,7 @@ class AuroCombobox extends AuroElement {
14178
14233
 
14179
14234
  this.menu.matchWord = this.input.value;
14180
14235
  this.optionActive = null;
14236
+ this.input.setActiveDescendant(null);
14181
14237
 
14182
14238
  if (!this.input.value) {
14183
14239
  this.clear();
@@ -14606,7 +14662,7 @@ class AuroCombobox extends AuroElement {
14606
14662
  <${this.inputTag}
14607
14663
  id="inputInBib"
14608
14664
  @input="${this.handleInputValueChange}"
14609
- .a11yControls="${this.dropdownId}"
14665
+ .a11yControls=${`${this.dropdownId}-floater-bib`}
14610
14666
  .autocomplete="${this.autocomplete}"
14611
14667
  .format="${this.format}"
14612
14668
  .inputmode="${this.inputmode}"
@@ -293,7 +293,7 @@ export class AuroCombobox extends AuroElement {
293
293
  */
294
294
  fullscreenBreakpoint: "xs" | "sm" | "md" | "lg" | "xl" | "disabled";
295
295
  /**
296
- * Specifies the currently active option.
296
+ * Specifies the currently active/highlighted `auro-menuoption`.
297
297
  * @private
298
298
  */
299
299
  optionActive: {
@@ -4249,7 +4249,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
4249
4249
  }
4250
4250
  };
4251
4251
 
4252
- var formkitVersion$2 = '202602031735';
4252
+ var formkitVersion$2 = '202602112105';
4253
4253
 
4254
4254
  let AuroElement$2 = class AuroElement extends LitElement {
4255
4255
  static get properties() {
@@ -4536,6 +4536,20 @@ class AuroDropdown extends AuroElement$2 {
4536
4536
  }
4537
4537
  }
4538
4538
 
4539
+ /**
4540
+ * Sets the active descendant element for accessibility.
4541
+ * Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
4542
+ * This function is used in components that contain `auro-dropdown` to set the active descendant.
4543
+ * @private
4544
+ * @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
4545
+ * @returns {void}
4546
+ */
4547
+ setActiveDescendant(element) {
4548
+ if (this.trigger) {
4549
+ this.trigger.ariaActiveDescendantElement = element;
4550
+ }
4551
+ }
4552
+
4539
4553
  // function to define props used within the scope of this component
4540
4554
  static get properties() {
4541
4555
  return {
@@ -5179,7 +5193,7 @@ class AuroDropdown extends AuroElement$2 {
5179
5193
  tabindex="${ifDefined(this.triggerContentFocusable ? undefined : this.tabIndex)}"
5180
5194
  role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
5181
5195
  aria-expanded="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
5182
- aria-controls="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
5196
+ aria-controls="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : `${this.dropdownId}-floater-bib`)}"
5183
5197
  aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
5184
5198
  @focusin="${this.handleFocusin}"
5185
5199
  @blur="${this.handleFocusOut}">
@@ -10635,6 +10649,7 @@ class BaseInput extends AuroElement$1 {
10635
10649
 
10636
10650
  /**
10637
10651
  * The maximum number of characters the user can enter into the text input. This must be an integer value `0` or higher.
10652
+ * **Note**: This attribute is not intended to be used with a `type` or `format` that already has a defined length, such as credit-cards, dates or phone numbers.
10638
10653
  */
10639
10654
  maxLength: {
10640
10655
  type: Number,
@@ -11160,6 +11175,11 @@ class BaseInput extends AuroElement$1 {
11160
11175
  * @returns {void}
11161
11176
  */
11162
11177
  handleInput(event) {
11178
+ // Process credit card type detection and formatting during input
11179
+ if (this.type === 'credit-card') {
11180
+ this.processCreditCard();
11181
+ }
11182
+
11163
11183
  // Sets value property to value of element value (el.value).
11164
11184
  this.value = this.inputElement.value;
11165
11185
 
@@ -11239,6 +11259,20 @@ class BaseInput extends AuroElement$1 {
11239
11259
  return activeEl;
11240
11260
  }
11241
11261
 
11262
+ /**
11263
+ * Sets the active descendant element for accessibility.
11264
+ * Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
11265
+ * This function is used in components that contain `auro-input` to set the active descendant.
11266
+ * @private
11267
+ * @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
11268
+ * @returns {void}
11269
+ */
11270
+ setActiveDescendant(element) {
11271
+ if (this.inputElement) {
11272
+ this.inputElement.ariaActiveDescendantElement = element;
11273
+ }
11274
+ }
11275
+
11242
11276
  /**
11243
11277
  * Validates value.
11244
11278
  * @param {boolean} [force=false] - Whether to force validation.
@@ -11277,6 +11311,7 @@ class BaseInput extends AuroElement$1 {
11277
11311
 
11278
11312
  if (this.type in defaultLengths) {
11279
11313
  this.lengthForType = this.format ? this.format.length : defaultLengths[this.type];
11314
+ this.maxLength = this.lengthForType;
11280
11315
  this.inputmode = this.inputmode || 'numeric';
11281
11316
  } else if (this.type === 'number') {
11282
11317
  this.inputmode = this.inputmode || 'numeric';
@@ -11387,6 +11422,7 @@ class BaseInput extends AuroElement$1 {
11387
11422
  */
11388
11423
  processCreditCard() {
11389
11424
  const creditCard = this.matchInputValueToCreditCard();
11425
+ const previousFormat = this.format;
11390
11426
 
11391
11427
  this.format = creditCard.maskFormat;
11392
11428
 
@@ -11399,7 +11435,8 @@ class BaseInput extends AuroElement$1 {
11399
11435
  this.inputIconName = creditCard.cardIcon;
11400
11436
  }
11401
11437
 
11402
- if (this.inputElement) {
11438
+ // Only reconfigure the mask if the format has changed
11439
+ if (this.inputElement && previousFormat !== this.format) {
11403
11440
  this.configureAutoFormatting();
11404
11441
  }
11405
11442
  }
@@ -11860,7 +11897,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
11860
11897
  }
11861
11898
  };
11862
11899
 
11863
- var formkitVersion$1 = '202602031735';
11900
+ var formkitVersion$1 = '202602112105';
11864
11901
 
11865
11902
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
11866
11903
  // See LICENSE in the project root for license information.
@@ -12062,6 +12099,7 @@ class AuroInput extends BaseInput {
12062
12099
  /**
12063
12100
  * Common display value wrapper classes.
12064
12101
  * @private
12102
+ * @returns {Record<string, boolean>}
12065
12103
  */
12066
12104
  get commonDisplayValueWrapperClasses() {
12067
12105
  return {
@@ -12885,7 +12923,7 @@ class AuroBibtemplate extends LitElement {
12885
12923
  }
12886
12924
  }
12887
12925
 
12888
- var formkitVersion = '202602031735';
12926
+ var formkitVersion = '202602112105';
12889
12927
 
12890
12928
  var styleCss$1 = css`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
12891
12929
 
@@ -13649,7 +13687,7 @@ class AuroCombobox extends AuroElement {
13649
13687
  },
13650
13688
 
13651
13689
  /**
13652
- * Specifies the currently active option.
13690
+ * Specifies the currently active/highlighted `auro-menuoption`.
13653
13691
  * @private
13654
13692
  */
13655
13693
  optionActive: {
@@ -13886,6 +13924,12 @@ class AuroCombobox extends AuroElement {
13886
13924
  this.dropdownOpen = ev.detail.expanded;
13887
13925
  this.updateMenuShapeSize();
13888
13926
 
13927
+ // Clear aria-activedescendant when dropdown closes
13928
+ if (!this.dropdownOpen && this.input) {
13929
+ this.input.setActiveDescendant(null);
13930
+ this.optionActive = null;
13931
+ }
13932
+
13889
13933
  // wait a frame in case the bib gets hide immediately after showing because there is no value
13890
13934
  setTimeout(() => {
13891
13935
  if (this.componentHasFocus) {
@@ -13985,6 +14029,13 @@ class AuroCombobox extends AuroElement {
13985
14029
  */
13986
14030
  configureMenu() {
13987
14031
  this.menu = this.querySelector('auro-menu, [auro-menu]');
14032
+
14033
+ const labelElement = this.querySelector('span[slot="label"]');
14034
+
14035
+ if (labelElement) {
14036
+ this.menu.setAttribute('aria-label', labelElement.textContent);
14037
+ }
14038
+
13988
14039
  this.defaultMenuShape = this.menu.getAttribute('shape');
13989
14040
 
13990
14041
  // racing condition on custom-combobox with custom-menu
@@ -14041,6 +14092,10 @@ class AuroCombobox extends AuroElement {
14041
14092
  this.menu.addEventListener('auroMenu-activatedOption', (evt) => {
14042
14093
  this.optionActive = evt.detail;
14043
14094
 
14095
+ if (this.input) {
14096
+ this.input.setActiveDescendant(this.optionActive);
14097
+ }
14098
+
14044
14099
  this.optionActive.scrollIntoView({
14045
14100
  alignToTop: false,
14046
14101
  block: "nearest",
@@ -14108,6 +14163,7 @@ class AuroCombobox extends AuroElement {
14108
14163
 
14109
14164
  this.menu.matchWord = this.input.value;
14110
14165
  this.optionActive = null;
14166
+ this.input.setActiveDescendant(null);
14111
14167
 
14112
14168
  if (!this.input.value) {
14113
14169
  this.clear();
@@ -14536,7 +14592,7 @@ class AuroCombobox extends AuroElement {
14536
14592
  <${this.inputTag}
14537
14593
  id="inputInBib"
14538
14594
  @input="${this.handleInputValueChange}"
14539
- .a11yControls="${this.dropdownId}"
14595
+ .a11yControls=${`${this.dropdownId}-floater-bib`}
14540
14596
  .autocomplete="${this.autocomplete}"
14541
14597
  .format="${this.format}"
14542
14598
  .inputmode="${this.inputmode}"