@aurodesignsystem-dev/auro-formkit 0.0.0-pr1524.1 → 0.0.0-pr1530.0

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 (52) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +24 -79
  7. package/components/combobox/demo/getting-started.min.js +24 -79
  8. package/components/combobox/demo/index.min.js +24 -79
  9. package/components/combobox/dist/auro-combobox.d.ts +0 -10
  10. package/components/combobox/dist/index.js +24 -79
  11. package/components/combobox/dist/registered.js +24 -79
  12. package/components/counter/demo/customize.min.js +2 -2
  13. package/components/counter/demo/index.min.js +2 -2
  14. package/components/counter/dist/index.js +2 -2
  15. package/components/counter/dist/registered.js +2 -2
  16. package/components/datepicker/demo/accessibility.md +12 -3
  17. package/components/datepicker/demo/api.md +1 -1
  18. package/components/datepicker/demo/customize.min.js +121 -34
  19. package/components/datepicker/demo/index.min.js +121 -34
  20. package/components/datepicker/demo/voiceover.md +1 -1
  21. package/components/datepicker/dist/auro-calendar-cell.d.ts +2 -0
  22. package/components/datepicker/dist/auro-calendar.d.ts +17 -2
  23. package/components/datepicker/dist/auro-datepicker.d.ts +9 -1
  24. package/components/datepicker/dist/index.js +121 -34
  25. package/components/datepicker/dist/registered.js +121 -34
  26. package/components/dropdown/demo/customize.min.js +1 -1
  27. package/components/dropdown/demo/getting-started.min.js +1 -1
  28. package/components/dropdown/demo/index.min.js +1 -1
  29. package/components/dropdown/dist/index.js +1 -1
  30. package/components/dropdown/dist/registered.js +1 -1
  31. package/components/form/demo/customize.min.js +183 -195
  32. package/components/form/demo/getting-started.min.js +183 -195
  33. package/components/form/demo/index.min.js +183 -195
  34. package/components/form/demo/registerDemoDeps.min.js +183 -195
  35. package/components/input/demo/customize.min.js +19 -17
  36. package/components/input/demo/getting-started.min.js +19 -17
  37. package/components/input/demo/index.min.js +19 -17
  38. package/components/input/dist/index.js +19 -17
  39. package/components/input/dist/registered.js +19 -17
  40. package/components/radio/demo/customize.min.js +1 -1
  41. package/components/radio/demo/getting-started.min.js +1 -1
  42. package/components/radio/demo/index.min.js +1 -1
  43. package/components/radio/dist/index.js +1 -1
  44. package/components/radio/dist/registered.js +1 -1
  45. package/components/select/demo/customize.min.js +16 -62
  46. package/components/select/demo/getting-started.min.js +16 -62
  47. package/components/select/demo/index.min.js +16 -62
  48. package/components/select/dist/auro-select.d.ts +0 -6
  49. package/components/select/dist/index.js +16 -62
  50. package/components/select/dist/registered.js +16 -62
  51. package/custom-elements.json +567 -581
  52. package/package.json +1 -1
@@ -11602,17 +11602,14 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
11602
11602
  * @returns {void}
11603
11603
  */
11604
11604
  notifyValueChanged() {
11605
- // This echoes Lit's reactive value update (and handleClickClear's
11606
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
11607
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
11608
- // it from genuine user typing and skip clobbering their own
11609
- // programmatic state during init-time renders.
11610
- const inputEvent = new Event('input', {
11605
+ let inputEvent = null;
11606
+
11607
+ inputEvent = new Event('input', {
11611
11608
  bubbles: true,
11612
11609
  composed: true,
11613
11610
  });
11614
- inputEvent.isProgrammatic = true;
11615
11611
 
11612
+ // Dispatched event to alert outside shadow DOM context of event firing.
11616
11613
  this.dispatchEvent(inputEvent);
11617
11614
  }
11618
11615
 
@@ -12325,7 +12322,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$2 {
12325
12322
  }
12326
12323
  };
12327
12324
 
12328
- var formkitVersion$8 = '202607022214';
12325
+ var formkitVersion$8 = '202607021905';
12329
12326
 
12330
12327
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12331
12328
  // See LICENSE in the project root for license information.
@@ -12611,15 +12608,20 @@ let AuroInput$2 = class AuroInput extends BaseInput$2 {
12611
12608
  * @returns {void}
12612
12609
  */
12613
12610
  checkDisplayValueSlotChange() {
12614
- // flatten:true resolves through auro-combobox's forwarding slot
12615
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
12616
- // directly to auro-input's light DOM alongside the forwarder still
12617
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
12618
- // discarded any siblings past the forwarder.
12619
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
12620
- const nodes = slot.assignedNodes({ flatten: true });
12611
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
12612
+
12613
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
12614
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
12615
+ nodes = nodes[0].assignedNodes();
12616
+ }
12617
+
12618
+ let hasContent = false;
12619
+
12620
+ if (nodes.length > 0) {
12621
+ hasContent = true;
12622
+ }
12621
12623
 
12622
- this.hasDisplayValueContent = nodes.length > 0;
12624
+ this.hasDisplayValueContent = hasContent;
12623
12625
  }
12624
12626
 
12625
12627
  firstUpdated() {
@@ -25289,9 +25291,20 @@ class AuroCalendarCell extends i$2 {
25289
25291
  const calendar = this.runtimeUtils.closestElement('auro-formkit-calendar', calendarMonth);
25290
25292
 
25291
25293
  if (!calendar) {
25292
- setTimeout(() => this.firstUpdated(), 0);
25294
+ // Retry on the next event-loop turn to give the ancestor chain a chance
25295
+ // to attach — but cap attempts so a permanently detached cell doesn't
25296
+ // spin forever. 10 turns is far more than any observed race needs.
25297
+ this._firstUpdatedRetries = (this._firstUpdatedRetries || 0) + 1;
25298
+ if (this._firstUpdatedRetries > 10) { // eslint-disable-line no-magic-numbers
25299
+ return;
25300
+ }
25301
+ this._firstUpdatedRetryTimer = setTimeout(() => {
25302
+ this._firstUpdatedRetryTimer = null;
25303
+ this.firstUpdated();
25304
+ }, 0);
25293
25305
  return;
25294
25306
  }
25307
+ this._firstUpdatedRetries = 0;
25295
25308
  this.calendar = calendar;
25296
25309
  this.datepicker = calendar.datepicker;
25297
25310
  this._slotContentHandler = () => {
@@ -25319,6 +25332,10 @@ class AuroCalendarCell extends i$2 {
25319
25332
  if (this.datepicker && this._slotContentHandler) {
25320
25333
  this.datepicker.removeEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
25321
25334
  }
25335
+ if (this._firstUpdatedRetryTimer) {
25336
+ clearTimeout(this._firstUpdatedRetryTimer);
25337
+ this._firstUpdatedRetryTimer = null;
25338
+ }
25322
25339
  }
25323
25340
 
25324
25341
  /**
@@ -26690,7 +26707,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$2 {
26690
26707
  }
26691
26708
  };
26692
26709
 
26693
- var formkitVersion$2$1 = '202607022214';
26710
+ var formkitVersion$2$1 = '202607021905';
26694
26711
 
26695
26712
  let l$1$2 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$5`${s$5(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1$2 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1$2 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1$3=i$4`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
26696
26713
  `,u$4$2=i$4`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
@@ -27407,8 +27424,19 @@ class AuroCalendar extends RangeDatepicker {
27407
27424
  /**
27408
27425
  * Returns a memoized Set of blackout timestamps (seconds) drawn from both
27409
27426
  * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
27410
- * The cache invalidates when either source array's reference changes, which
27411
- * matches Lit's own reactive identity semantics for array properties.
27427
+ *
27428
+ * The cache invalidates on **reference identity** only when the
27429
+ * consumer reassigns the array (`el.blackoutDates = [...]`), matching
27430
+ * Lit's own reactivity semantics for array properties. In-place mutations
27431
+ * on the existing array (`push`, `splice`, index assignment) will NOT
27432
+ * invalidate the cache and the new entries will be silently ignored.
27433
+ * Consumers must reassign to update — see the JSDoc on
27434
+ * `auro-datepicker.blackoutDates` for the recommended pattern.
27435
+ *
27436
+ * A shallow-equality tier was considered but rejected: it would run
27437
+ * O(N) work on every cell render (this method is called per-cell via
27438
+ * `isBlackout()`) and still wouldn't catch same-length value swaps,
27439
+ * offering a false sense of safety.
27412
27440
  * @private
27413
27441
  * @returns {Set<Number>}
27414
27442
  */
@@ -27589,7 +27617,21 @@ class AuroCalendar extends RangeDatepicker {
27589
27617
  // rendered month(s) first so a single-month calendar does not pick a date
27590
27618
  // that has no DOM cell. Determine the visible range based on centralDate and
27591
27619
  // the number of rendered months.
27592
- const renderedMonths = Math.max(this.numCalendars, 1);
27620
+ //
27621
+ // numCalendars is assigned during renderAllCalendars(), which runs after
27622
+ // updated() — so the visible-change handler's eager computeActiveDate()
27623
+ // call arrives with numCalendars still undefined. Math.max(undefined, 1)
27624
+ // is NaN, which would silently skip the visible-month scan below. Fall
27625
+ // back to maximumRenderableMonths' desktop default (1 for non-range,
27626
+ // 2 for range) so the scan window is correctly sized on first open.
27627
+ let renderedMonths = null;
27628
+
27629
+ if (Number.isFinite(this.numCalendars) && this.numCalendars > 0) {
27630
+ renderedMonths = this.numCalendars;
27631
+ } else {
27632
+ renderedMonths = this.noRange ? 1 : 2;
27633
+ }
27634
+
27593
27635
  const visibleAnchor = this.centralDateObject ?? new Date(now * 1000);
27594
27636
  const visMonthStart = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth(), 1);
27595
27637
  visMonthStart.setHours(0, 0, 0, 0);
@@ -27859,6 +27901,8 @@ class AuroCalendar extends RangeDatepicker {
27859
27901
  let targetIndex = -1;
27860
27902
  if (direction === 'next') {
27861
27903
  targetIndex = currentIndex + 1;
27904
+ } else if (direction === 'prev') {
27905
+ targetIndex = currentIndex - 1;
27862
27906
  }
27863
27907
 
27864
27908
  if (targetIndex >= 0 && targetIndex < allCells.length) {
@@ -28463,6 +28507,10 @@ class AuroCalendar extends RangeDatepicker {
28463
28507
  * originally tried aria-live="polite" here, but VoiceOver treats
28464
28508
  * polite as "wait until idle" — which never happens during active
28465
28509
  * keyboard navigation — so the announcements were silently dropped.
28510
+ *
28511
+ * This is a documented deviation from WCAG 2.1 SC 4.1.3, which
28512
+ * prefers `polite` for status messages. See the "Documented
28513
+ * Deviation" section in components/datepicker/docs/pages/accessibility.md.
28466
28514
  * @private
28467
28515
  * @param {String} dateStr - The localized date string to announce.
28468
28516
  * @returns {void}
@@ -32508,7 +32556,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$2 {
32508
32556
  }
32509
32557
  };
32510
32558
 
32511
- var formkitVersion$1$3 = '202607022214';
32559
+ var formkitVersion$1$3 = '202607021905';
32512
32560
 
32513
32561
  let AuroElement$2$2 = class AuroElement extends i$2 {
32514
32562
  static get properties() {
@@ -45390,17 +45438,14 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
45390
45438
  * @returns {void}
45391
45439
  */
45392
45440
  notifyValueChanged() {
45393
- // This echoes Lit's reactive value update (and handleClickClear's
45394
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
45395
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
45396
- // it from genuine user typing and skip clobbering their own
45397
- // programmatic state during init-time renders.
45398
- const inputEvent = new Event('input', {
45441
+ let inputEvent = null;
45442
+
45443
+ inputEvent = new Event('input', {
45399
45444
  bubbles: true,
45400
45445
  composed: true,
45401
45446
  });
45402
- inputEvent.isProgrammatic = true;
45403
45447
 
45448
+ // Dispatched event to alert outside shadow DOM context of event firing.
45404
45449
  this.dispatchEvent(inputEvent);
45405
45450
  }
45406
45451
 
@@ -46113,7 +46158,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$2 {
46113
46158
  }
46114
46159
  };
46115
46160
 
46116
- var formkitVersion$7 = '202607022214';
46161
+ var formkitVersion$7 = '202607021905';
46117
46162
 
46118
46163
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
46119
46164
  // See LICENSE in the project root for license information.
@@ -46399,15 +46444,20 @@ let AuroInput$1 = class AuroInput extends BaseInput$1 {
46399
46444
  * @returns {void}
46400
46445
  */
46401
46446
  checkDisplayValueSlotChange() {
46402
- // flatten:true resolves through auro-combobox's forwarding slot
46403
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
46404
- // directly to auro-input's light DOM alongside the forwarder still
46405
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
46406
- // discarded any siblings past the forwarder.
46407
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
46408
- const nodes = slot.assignedNodes({ flatten: true });
46447
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
46448
+
46449
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
46450
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
46451
+ nodes = nodes[0].assignedNodes();
46452
+ }
46409
46453
 
46410
- this.hasDisplayValueContent = nodes.length > 0;
46454
+ let hasContent = false;
46455
+
46456
+ if (nodes.length > 0) {
46457
+ hasContent = true;
46458
+ }
46459
+
46460
+ this.hasDisplayValueContent = hasContent;
46411
46461
  }
46412
46462
 
46413
46463
  firstUpdated() {
@@ -47485,6 +47535,15 @@ const datepickerKeyboardStrategy = {
47485
47535
  evt.stopPropagation();
47486
47536
  evt.preventDefault();
47487
47537
 
47538
+ // Signal to the visibility-change handler in auro-datepicker.js that
47539
+ // focus should be restored to the trigger regardless of hasFocus.
47540
+ // hidePopover() (desktop non-modal path) does not auto-restore focus,
47541
+ // and hiding the grid's popover ancestor drops focus to <body>. That
47542
+ // synchronously fires focusout on the datepicker host — clearing
47543
+ // hasFocus — before updated() runs, which would otherwise skip the
47544
+ // input refocus. Native <dialog>.close() (modal path) restores focus
47545
+ // itself, but the flag is harmless there.
47546
+ component._restoreFocusOnClose = true;
47488
47547
  component.hideBib();
47489
47548
  },
47490
47549
 
@@ -47758,6 +47817,14 @@ class AuroDatePicker extends AuroElement$5 {
47758
47817
 
47759
47818
  /**
47760
47819
  * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
47820
+ *
47821
+ * **Immutable update required.** The datepicker treats this array as
47822
+ * immutable and memoizes a lookup Set keyed on the array's reference
47823
+ * identity — matching Lit's own reactivity semantics for array
47824
+ * properties. In-place mutations (`blackoutDates.push(...)`,
47825
+ * `blackoutDates[i] = ...`, `blackoutDates.splice(...)`) will not
47826
+ * invalidate the cache and the new entries will be silently ignored.
47827
+ * To update, reassign the property: `el.blackoutDates = [...el.blackoutDates, '2024-12-25']`.
47761
47828
  */
47762
47829
  blackoutDates: {
47763
47830
  type: Array,
@@ -48643,12 +48710,13 @@ class AuroDatePicker extends AuroElement$5 {
48643
48710
  this.calendar.activeCellDate = null;
48644
48711
 
48645
48712
  // Show the month containing the selected date (or today) instead of
48646
- // whichever month the user last navigated to.
48713
+ // whichever month the user last navigated to. Route through
48714
+ // updateCentralDate so centralDate stays first-of-month.
48647
48715
  // Respect consumer-provided centralDate/calendarStartDate if no value is set.
48648
48716
  if (this.valueObject) {
48649
- this.centralDate = this.value;
48717
+ this.calendarRenderUtil.updateCentralDate(this, this.value);
48650
48718
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
48651
- this.centralDate = dateFormatter$1.toISOFormatString(new Date());
48719
+ this.calendarRenderUtil.updateCentralDate(this, new Date());
48652
48720
  }
48653
48721
  }
48654
48722
 
@@ -48706,8 +48774,15 @@ class AuroDatePicker extends AuroElement$5 {
48706
48774
  // Always clear the inert flag. Only restore focus to the input when the datepicker
48707
48775
  // still has focus (e.g. Escape, date selected) — not when the user tabbed away,
48708
48776
  // which would pull them back and require extra Tab presses to escape.
48777
+ //
48778
+ // `_restoreFocusOnClose` is set by the Escape handler in
48779
+ // datepickerKeyboardStrategy.js to force restore even when hasFocus
48780
+ // has already been cleared — hidePopover() (desktop non-modal path)
48781
+ // can drop focus to <body> before this update fires.
48709
48782
  this.dropdown.trigger.inert = false;
48710
- if (this.hasFocus) {
48783
+ const shouldRestoreFocus = this.hasFocus || this._restoreFocusOnClose;
48784
+ this._restoreFocusOnClose = false;
48785
+ if (shouldRestoreFocus) {
48711
48786
  requestAnimationFrame(() => {
48712
48787
  if (!this.dropdown.isPopoverVisible) {
48713
48788
  this.inputList[0].focus();
@@ -49153,6 +49228,18 @@ class AuroDatePicker extends AuroElement$5 {
49153
49228
  this.calendar.requestUpdate();
49154
49229
  this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
49155
49230
  }
49231
+
49232
+ // Range invariant: if a value change (from click or programmatic) has
49233
+ // moved start past end, clear valueEnd here so both properties land in
49234
+ // the SAME reactive cycle. Doing it in updated() would schedule a
49235
+ // second cycle after cellClickActive/wasCellClick has already been
49236
+ // consumed by the value branch, leaving the valueEnd branch to run
49237
+ // with a stale handshake and racing with any intervening programmatic
49238
+ // value assignments.
49239
+ if ((changedProperties.has('value') || changedProperties.has('valueEnd')) &&
49240
+ this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
49241
+ this.valueEnd = undefined;
49242
+ }
49156
49243
  }
49157
49244
 
49158
49245
  updated(changedProperties) {
@@ -49220,8 +49307,12 @@ class AuroDatePicker extends AuroElement$5 {
49220
49307
 
49221
49308
  if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
49222
49309
  // Skip centralDate update when user clicked a cell in range mode
49223
- // to prevent the displayed months from shifting
49224
- this.centralDate = this.value;
49310
+ // to prevent the displayed months from shifting. Route through
49311
+ // updateCentralDate so centralDate stays first-of-month — direct
49312
+ // assignment of the raw value briefly holds a mid-month string
49313
+ // and violates the invariant that observers (e.g. calendar sync)
49314
+ // rely on.
49315
+ this.calendarRenderUtil.updateCentralDate(this, this.value);
49225
49316
  }
49226
49317
 
49227
49318
  this.setHasValue();
@@ -49279,8 +49370,10 @@ class AuroDatePicker extends AuroElement$5 {
49279
49370
 
49280
49371
  if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
49281
49372
  // Skip centralDate update when user clicked a cell in range mode
49282
- // to prevent the displayed months from shifting
49283
- this.centralDate = this.valueEnd;
49373
+ // to prevent the displayed months from shifting. Route through
49374
+ // updateCentralDate to preserve the first-of-month invariant
49375
+ // (see matching comment in the value branch above).
49376
+ this.calendarRenderUtil.updateCentralDate(this, this.valueEnd);
49284
49377
  }
49285
49378
 
49286
49379
  this.validate();
@@ -49304,10 +49397,6 @@ class AuroDatePicker extends AuroElement$5 {
49304
49397
  this.validation.validate(lastInput, true);
49305
49398
  }
49306
49399
 
49307
- if (this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
49308
- this.valueEnd = undefined;
49309
- }
49310
-
49311
49400
  // This resets the datepicker when the minDate is set to a new value that is
49312
49401
  // a later date than the current value date
49313
49402
  if (changedProperties.has('minDate') && this.minDate) {
@@ -50990,7 +51079,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$2 {
50990
51079
  }
50991
51080
  };
50992
51081
 
50993
- var formkitVersion$1$2 = '202607022214';
51082
+ var formkitVersion$1$2 = '202607021905';
50994
51083
 
50995
51084
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
50996
51085
  // See LICENSE in the project root for license information.
@@ -55318,7 +55407,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$2 {
55318
55407
  }
55319
55408
  };
55320
55409
 
55321
- var formkitVersion$6 = '202607022214';
55410
+ var formkitVersion$6 = '202607021905';
55322
55411
 
55323
55412
  let AuroElement$1$2 = class AuroElement extends i$2 {
55324
55413
  static get properties() {
@@ -59298,7 +59387,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$2 {
59298
59387
  }
59299
59388
  };
59300
59389
 
59301
- var formkitVersion$5 = '202607022214';
59390
+ var formkitVersion$5 = '202607021905';
59302
59391
 
59303
59392
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
59304
59393
  // See LICENSE in the project root for license information.
@@ -61063,7 +61152,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$2 {
61063
61152
  }
61064
61153
  };
61065
61154
 
61066
- var formkitVersion$4 = '202607022214';
61155
+ var formkitVersion$4 = '202607021905';
61067
61156
 
61068
61157
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
61069
61158
  // See LICENSE in the project root for license information.
@@ -66284,7 +66373,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$2 {
66284
66373
  }
66285
66374
  };
66286
66375
 
66287
- var formkitVersion$2 = '202607022214';
66376
+ var formkitVersion$2 = '202607021905';
66288
66377
 
66289
66378
  let AuroElement$2$1 = class AuroElement extends i$2 {
66290
66379
  static get properties() {
@@ -79166,17 +79255,14 @@ class BaseInput extends AuroElement$1$1 {
79166
79255
  * @returns {void}
79167
79256
  */
79168
79257
  notifyValueChanged() {
79169
- // This echoes Lit's reactive value update (and handleClickClear's
79170
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
79171
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
79172
- // it from genuine user typing and skip clobbering their own
79173
- // programmatic state during init-time renders.
79174
- const inputEvent = new Event('input', {
79258
+ let inputEvent = null;
79259
+
79260
+ inputEvent = new Event('input', {
79175
79261
  bubbles: true,
79176
79262
  composed: true,
79177
79263
  });
79178
- inputEvent.isProgrammatic = true;
79179
79264
 
79265
+ // Dispatched event to alert outside shadow DOM context of event firing.
79180
79266
  this.dispatchEvent(inputEvent);
79181
79267
  }
79182
79268
 
@@ -79889,7 +79975,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$2 {
79889
79975
  }
79890
79976
  };
79891
79977
 
79892
- var formkitVersion$1$1 = '202607022214';
79978
+ var formkitVersion$1$1 = '202607021905';
79893
79979
 
79894
79980
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
79895
79981
  // See LICENSE in the project root for license information.
@@ -80175,15 +80261,20 @@ class AuroInput extends BaseInput {
80175
80261
  * @returns {void}
80176
80262
  */
80177
80263
  checkDisplayValueSlotChange() {
80178
- // flatten:true resolves through auro-combobox's forwarding slot
80179
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
80180
- // directly to auro-input's light DOM alongside the forwarder still
80181
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
80182
- // discarded any siblings past the forwarder.
80183
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
80184
- const nodes = slot.assignedNodes({ flatten: true });
80264
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
80185
80265
 
80186
- this.hasDisplayValueContent = nodes.length > 0;
80266
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
80267
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
80268
+ nodes = nodes[0].assignedNodes();
80269
+ }
80270
+
80271
+ let hasContent = false;
80272
+
80273
+ if (nodes.length > 0) {
80274
+ hasContent = true;
80275
+ }
80276
+
80277
+ this.hasDisplayValueContent = hasContent;
80187
80278
  }
80188
80279
 
80189
80280
  firstUpdated() {
@@ -81010,7 +81101,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$2 {
81010
81101
  }
81011
81102
  };
81012
81103
 
81013
- var formkitVersion$3 = '202607022214';
81104
+ var formkitVersion$3 = '202607021905';
81014
81105
 
81015
81106
  var styleCss$1$3 = i$4`.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}`;
81016
81107
 
@@ -82109,19 +82200,9 @@ class AuroCombobox extends AuroElement$3 {
82109
82200
  /**
82110
82201
  * Processes hidden state of all menu options and determines if there are any available options not hidden.
82111
82202
  * @private
82112
- * @param {object} [options={}] - Optional flag bag.
82113
- * @param {boolean} [options.preferComboboxValue=false] - When true,
82114
- * handleMenuOptions matches the selected option against `this.value`
82115
- * first instead of `this.input.value`. Needed on mount and re-mount
82116
- * because under `persistInput` the consumer's typedValue prop can drift
82117
- * from the framework value (Svelte `{#key}` re-mount after a swap, or
82118
- * SPA preselect after route change) and the old input-first match would
82119
- * then pick the stale text. Only handleSlotChange passes this; typing
82120
- * and clearing paths keep the input-first match so user clears aren't
82121
- * undone.
82122
82203
  * @returns {void}
82123
82204
  */
82124
- handleMenuOptions({ preferComboboxValue = false } = {}) {
82205
+ handleMenuOptions() {
82125
82206
  this.generateOptionsArray();
82126
82207
  this.availableOptions = [];
82127
82208
  // Single source of truth for the menu's filter/highlight token per call.
@@ -82142,20 +82223,7 @@ class AuroCombobox extends AuroElement$3 {
82142
82223
  option.setAttribute('aria-posinset', index + 1);
82143
82224
  });
82144
82225
 
82145
- // On mount/re-mount (via handleSlotChange), prefer the framework-set
82146
- // `this.value` when it matches a menu option. Covers SPA preselect and
82147
- // consumer swap patterns (e.g. Svelte `{#key}` re-mount) where
82148
- // `this.value` is authoritative but `this.input.value` may be empty or
82149
- // carry stale typed text from another field. Event-driven callers do
82150
- // not pass the flag, otherwise user clears would be undone by
82151
- // re-syncing to the previous combobox.value.
82152
- if (preferComboboxValue &&
82153
- this.value &&
82154
- this.menu.options?.some((opt) => opt.value === this.value)) {
82155
- this.setMenuValue(this.value);
82156
- this.syncValuesAndStates();
82157
- } else if (this.input.value &&
82158
- this.menu.options?.some((opt) => opt.value === this.input.value)) {
82226
+ if (this.input.value && this.menu.options && this.menu.options.some((opt) => opt.value === this.input.value)) {
82159
82227
  this.setMenuValue(this.input.value);
82160
82228
  this.syncValuesAndStates();
82161
82229
  }
@@ -82592,25 +82660,7 @@ class AuroCombobox extends AuroElement$3 {
82592
82660
  this.optionActive = evt.detail;
82593
82661
 
82594
82662
  if (this.input) {
82595
- // setActiveDescendant runs after Lit's update finishes because the
82596
- // template's `.a11yActivedescendant` binding calls setAttribute on
82597
- // the internal <input> in auro-input.updated(), which clears the
82598
- // reflected ariaActiveDescendantElement property. Setting the ref
82599
- // synchronously here would get overwritten by that attribute write.
82600
- // Awaiting updateComplete lets the attribute write finish first,
82601
- // then the ref sticks and screen readers can cross the shadow-DOM
82602
- // boundary to the auro-menuoption in light DOM.
82603
- //
82604
- // The equality check covers the async gap: this.optionActive can
82605
- // change before the callback runs (user arrowed elsewhere, or the
82606
- // menu closed and cleared it to null), so we bail if the target
82607
- // no longer matches to avoid reinstating a stale ref.
82608
- const targetOption = this.optionActive;
82609
- this.updateComplete.then(() => {
82610
- if (this.input && this.optionActive === targetOption) {
82611
- this.input.setActiveDescendant(targetOption);
82612
- }
82613
- });
82663
+ this.input.setActiveDescendant(this.optionActive);
82614
82664
  }
82615
82665
 
82616
82666
  // In fullscreen mode the menu sits inside a nested <dialog> shadow root,
@@ -82747,18 +82797,6 @@ class AuroCombobox extends AuroElement$3 {
82747
82797
  }
82748
82798
  }
82749
82799
 
82750
- // SPA preselect guard: on init render, auro-input's notifyValueChanged
82751
- // echoes an empty value through as an isProgrammatic input event before
82752
- // the framework-set combobox.value has propagated down to the input.
82753
- // Without this bail, the `this.value = this.input.value` below clobbers
82754
- // the framework value with '' and clear() wipes optionSelected. Scoped
82755
- // to the exact shape of that echo (isProgrammatic + non-empty combobox
82756
- // value + empty input.value) so it doesn't affect the swap/typed paths
82757
- // where value/input already track each other through the sync helpers.
82758
- if (event && event.isProgrammatic && this.value && !this.input.value) {
82759
- return;
82760
- }
82761
-
82762
82800
  this.value = this.input.value;
82763
82801
 
82764
82802
  // Ignore re-entrant input events caused by programmatic value sets.
@@ -83191,11 +83229,7 @@ class AuroCombobox extends AuroElement$3 {
83191
83229
  }
83192
83230
  });
83193
83231
 
83194
- // Slot change (mount/re-mount): pass `preferComboboxValue` so that a
83195
- // framework-set `this.value` wins over any stale `input.value` when
83196
- // matching against the newly-available options. Fixes the display
83197
- // for SPA preselect and Svelte `{#key}` re-mount swap patterns.
83198
- this.handleMenuOptions({ preferComboboxValue: true });
83232
+ this.handleMenuOptions();
83199
83233
 
83200
83234
  break;
83201
83235
 
@@ -85844,6 +85878,9 @@ function navigateArrow(component, direction, options = {}) {
85844
85878
  * @param {HTMLElement | null | undefined} menu - The auro-menu element.
85845
85879
  * @returns {Array<HTMLElement>} Non-disabled options, empty array when none.
85846
85880
  */
85881
+ function getEnabledOptions(menu) {
85882
+ return (menu?.options || []).filter((option) => !option.disabled);
85883
+ }
85847
85884
 
85848
85885
  /**
85849
85886
  * Returns the active (selectable + visible) options for type-ahead navigation.
@@ -85913,10 +85950,8 @@ const selectKeyboardStrategy = {
85913
85950
  End(component, evt, ctx) {
85914
85951
  evt.preventDefault();
85915
85952
  evt.stopPropagation();
85916
- // `pop()` is safe here: getActiveOptions returns a fresh filtered array.
85917
- // Uses "active" (not "enabled") so hidden and static rows — which a screen
85918
- // reader must not announce as focused — are skipped.
85919
- const lastOption = getActiveOptions(component.menu).pop();
85953
+ // `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
85954
+ const lastOption = getEnabledOptions(component.menu).pop();
85920
85955
  if (!lastOption) {
85921
85956
  return;
85922
85957
  }
@@ -85947,7 +85982,7 @@ const selectKeyboardStrategy = {
85947
85982
  Home(component, evt, ctx) {
85948
85983
  evt.preventDefault();
85949
85984
  evt.stopPropagation();
85950
- const [firstOption] = getActiveOptions(component.menu);
85985
+ const [firstOption] = getEnabledOptions(component.menu);
85951
85986
  if (!firstOption) {
85952
85987
  return;
85953
85988
  }
@@ -85972,15 +86007,6 @@ const selectKeyboardStrategy = {
85972
86007
  },
85973
86008
 
85974
86009
  default(component, evt, ctx) {
85975
- // Ignore keys chorded with Ctrl/Meta/Alt so browser/OS shortcuts
85976
- // (Cmd+C, Ctrl+V, Alt+X, Cmd+Space, …) don't leak into typeahead
85977
- // or toggle the bib. Native <select> ignores modified keys.
85978
- // ArrowUp/ArrowDown handle modifier+arrow explicitly above; this
85979
- // guard only affects the default (printable/Space) branch.
85980
- if (evt.ctrlKey || evt.metaKey || evt.altKey) {
85981
- return;
85982
- }
85983
-
85984
86010
  // Space resolves to either typeahead-buffer extension or bib toggle
85985
86011
  // depending on whether a type-ahead buffer is active. Mirrors native
85986
86012
  // <select> and the WAI-ARIA APG Listbox guidance: mid-typeahead space
@@ -89911,7 +89937,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
89911
89937
  }
89912
89938
  };
89913
89939
 
89914
- var formkitVersion$1 = '202607022214';
89940
+ var formkitVersion$1 = '202607021905';
89915
89941
 
89916
89942
  class AuroElement extends i$2 {
89917
89943
  static get properties() {
@@ -91950,7 +91976,7 @@ class AuroHelpText extends i$2 {
91950
91976
  }
91951
91977
  }
91952
91978
 
91953
- var formkitVersion = '202607022214';
91979
+ var formkitVersion = '202607021905';
91954
91980
 
91955
91981
  var styleCss = i$4`.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}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
91956
91982
 
@@ -92514,11 +92540,8 @@ class AuroSelect extends AuroElement$1 {
92514
92540
  } else if (this.multiSelect && Array.isArray(this.optionSelected) && this.optionSelected.length > 0) {
92515
92541
  this.menu.updateActiveOption(this.optionSelected[0]);
92516
92542
  } else {
92517
- // If no activeOption has yet to be set, make the first active option
92518
- // (non-disabled, non-hidden, non-static) active by default. "Active" —
92519
- // not just "enabled" — so hidden rows and static placeholders never
92520
- // land in aria-activedescendant on open.
92521
- const [firstActive] = getActiveOptions(this.menu);
92543
+ // If no activeOption has yet to be set, then make the first enabled option active by default
92544
+ const [firstActive] = getEnabledOptions(this.menu);
92522
92545
  this.menu.updateActiveOption(firstActive);
92523
92546
  }
92524
92547
  }
@@ -92764,12 +92787,6 @@ class AuroSelect extends AuroElement$1 {
92764
92787
 
92765
92788
  /**
92766
92789
  * Binds all behavior needed to the menu after rendering.
92767
- *
92768
- * The `<auro-menu>` reference is captured once and not re-targeted on
92769
- * `slotchange`. Runtime option mutations are covered via
92770
- * `auroMenu-optionsChange`, so swap options inside the menu freely; do not
92771
- * swap the `<auro-menu>` element itself under a live select — remount the
92772
- * parent `<auro-select>` instead.
92773
92790
  * @private
92774
92791
  * @returns {void}
92775
92792
  */
@@ -92828,15 +92845,6 @@ class AuroSelect extends AuroElement$1 {
92828
92845
  if (this.menu.optionSelected !== undefined) {
92829
92846
  return;
92830
92847
  }
92831
- // Skip when the select is already cleared (valueless click with no
92832
- // prior selection): value/optionSelected are already empty and there
92833
- // is no stale trigger text to refresh, so updateDisplayedValue would
92834
- // just churn the DOM and request a needless dropdown re-render.
92835
- const hasStaleState = this.value !== undefined ||
92836
- (this.multiSelect ? this.optionSelected?.length > 0 : this.optionSelected !== undefined);
92837
- if (!hasStaleState) {
92838
- return;
92839
- }
92840
92848
  this.value = undefined;
92841
92849
  this.optionSelected = this.multiSelect ? [] : undefined;
92842
92850
  // The trigger label is rendered imperatively into #value, so a property
@@ -92866,15 +92874,10 @@ class AuroSelect extends AuroElement$1 {
92866
92874
  if (this.dropdown.isPopoverVisible) {
92867
92875
  announceToScreenReader(this._getAnnouncementRoot(), message);
92868
92876
  } else {
92869
- // Typeahead-on-closed calls updateActiveOption() before show(), so
92870
- // this handler runs with isPopoverVisible still false. queueMicrotask
92871
- // is safe because show() showBib() flips isPopoverVisible and
92872
- // dialog.showModal() both run synchronously in the same task; the
92873
- // microtask queue only drains once _handleTypeahead unwinds, by
92874
- // which point _getAnnouncementRoot() resolves to the bib's shadow
92875
- // root inside the now-open modal. Do NOT switch to auroDropdown-toggled
92876
- // — it fires before showModal(), landing the announcement in the
92877
- // host root while the dialog is still not-yet-modal.
92877
+ // Typeahead-on-closed fires this event before `show()` flips
92878
+ // isPopoverVisible. Defer so the announcement targets the bib's
92879
+ // live region once the fullscreen <dialog> opens otherwise it
92880
+ // lands in the host root, which is inert under the active modal.
92878
92881
  queueMicrotask(() => announceToScreenReader(this._getAnnouncementRoot(), message));
92879
92882
  }
92880
92883
  }
@@ -93268,13 +93271,6 @@ class AuroSelect extends AuroElement$1 {
93268
93271
  }
93269
93272
 
93270
93273
  if (changedProperties.has('value')) {
93271
- // A value change ends the current interaction — whether it came from a
93272
- // user commit, programmatic assignment, or reset(). Clear the buffer so
93273
- // a stale prefix does not concatenate onto the next keystroke while the
93274
- // host still has focus (the blur listener would otherwise be the only
93275
- // focus-retained clear point, and hideBib() below does not blur).
93276
- this._clearTypeaheadBuffer();
93277
-
93278
93274
  this.setMenuValue(this.value);
93279
93275
 
93280
93276
  this._updateNativeSelect();
@@ -93330,9 +93326,6 @@ class AuroSelect extends AuroElement$1 {
93330
93326
  * @returns {void}
93331
93327
  */
93332
93328
  reset() {
93333
- // Defense-in-depth: updated()'s value-change branch also clears, but
93334
- // reset-to-same-value (e.g. undefined → undefined) skips that path.
93335
- this._clearTypeaheadBuffer();
93336
93329
  this.menu.reset();
93337
93330
  this.validation.reset(this);
93338
93331
  }
@@ -93355,13 +93348,8 @@ class AuroSelect extends AuroElement$1 {
93355
93348
  // Hidden native <select> has no `multiple` attribute, so any change it fires
93356
93349
  // is a single raw value — applying it in multiSelect mode would collapse the
93357
93350
  // JSON-array `value` shape. Bfcache/autofill can reach this on a name-bearing
93358
- // form control even with aria-hidden/tabindex=-1, so revert to the expected
93359
- // mirror (formattedValue[0]) rather than letting the native select drift and
93360
- // silently submit the autofilled scalar under `name`.
93361
- if (this.multiSelect) {
93362
- this._updateNativeSelect();
93363
- return;
93364
- }
93351
+ // form control even with aria-hidden/tabindex=-1.
93352
+ if (this.multiSelect) return;
93365
93353
 
93366
93354
  const selectedOption = event.target.options[event.target.selectedIndex];
93367
93355
  if (!selectedOption) return;