@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
@@ -12643,17 +12643,14 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
12643
12643
  * @returns {void}
12644
12644
  */
12645
12645
  notifyValueChanged() {
12646
- // This echoes Lit's reactive value update (and handleClickClear's
12647
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
12648
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
12649
- // it from genuine user typing and skip clobbering their own
12650
- // programmatic state during init-time renders.
12651
- const inputEvent = new Event('input', {
12646
+ let inputEvent = null;
12647
+
12648
+ inputEvent = new Event('input', {
12652
12649
  bubbles: true,
12653
12650
  composed: true,
12654
12651
  });
12655
- inputEvent.isProgrammatic = true;
12656
12652
 
12653
+ // Dispatched event to alert outside shadow DOM context of event firing.
12657
12654
  this.dispatchEvent(inputEvent);
12658
12655
  }
12659
12656
 
@@ -13366,7 +13363,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$3 {
13366
13363
  }
13367
13364
  };
13368
13365
 
13369
- var formkitVersion$8 = '202607022214';
13366
+ var formkitVersion$8 = '202607021905';
13370
13367
 
13371
13368
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
13372
13369
  // See LICENSE in the project root for license information.
@@ -13652,15 +13649,20 @@ let AuroInput$2 = class AuroInput extends BaseInput$2 {
13652
13649
  * @returns {void}
13653
13650
  */
13654
13651
  checkDisplayValueSlotChange() {
13655
- // flatten:true resolves through auro-combobox's forwarding slot
13656
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
13657
- // directly to auro-input's light DOM alongside the forwarder still
13658
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
13659
- // discarded any siblings past the forwarder.
13660
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
13661
- const nodes = slot.assignedNodes({ flatten: true });
13652
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
13653
+
13654
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
13655
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
13656
+ nodes = nodes[0].assignedNodes();
13657
+ }
13658
+
13659
+ let hasContent = false;
13660
+
13661
+ if (nodes.length > 0) {
13662
+ hasContent = true;
13663
+ }
13662
13664
 
13663
- this.hasDisplayValueContent = nodes.length > 0;
13665
+ this.hasDisplayValueContent = hasContent;
13664
13666
  }
13665
13667
 
13666
13668
  firstUpdated() {
@@ -26330,9 +26332,20 @@ class AuroCalendarCell extends i$3 {
26330
26332
  const calendar = this.runtimeUtils.closestElement('auro-formkit-calendar', calendarMonth);
26331
26333
 
26332
26334
  if (!calendar) {
26333
- setTimeout(() => this.firstUpdated(), 0);
26335
+ // Retry on the next event-loop turn to give the ancestor chain a chance
26336
+ // to attach — but cap attempts so a permanently detached cell doesn't
26337
+ // spin forever. 10 turns is far more than any observed race needs.
26338
+ this._firstUpdatedRetries = (this._firstUpdatedRetries || 0) + 1;
26339
+ if (this._firstUpdatedRetries > 10) { // eslint-disable-line no-magic-numbers
26340
+ return;
26341
+ }
26342
+ this._firstUpdatedRetryTimer = setTimeout(() => {
26343
+ this._firstUpdatedRetryTimer = null;
26344
+ this.firstUpdated();
26345
+ }, 0);
26334
26346
  return;
26335
26347
  }
26348
+ this._firstUpdatedRetries = 0;
26336
26349
  this.calendar = calendar;
26337
26350
  this.datepicker = calendar.datepicker;
26338
26351
  this._slotContentHandler = () => {
@@ -26360,6 +26373,10 @@ class AuroCalendarCell extends i$3 {
26360
26373
  if (this.datepicker && this._slotContentHandler) {
26361
26374
  this.datepicker.removeEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
26362
26375
  }
26376
+ if (this._firstUpdatedRetryTimer) {
26377
+ clearTimeout(this._firstUpdatedRetryTimer);
26378
+ this._firstUpdatedRetryTimer = null;
26379
+ }
26363
26380
  }
26364
26381
 
26365
26382
  /**
@@ -27731,7 +27748,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$3 {
27731
27748
  }
27732
27749
  };
27733
27750
 
27734
- var formkitVersion$2$1 = '202607022214';
27751
+ var formkitVersion$2$1 = '202607021905';
27735
27752
 
27736
27753
  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$2`${s$3(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$6`: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}
27737
27754
  `,u$4$2=i$6`.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}}
@@ -28448,8 +28465,19 @@ class AuroCalendar extends RangeDatepicker {
28448
28465
  /**
28449
28466
  * Returns a memoized Set of blackout timestamps (seconds) drawn from both
28450
28467
  * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
28451
- * The cache invalidates when either source array's reference changes, which
28452
- * matches Lit's own reactive identity semantics for array properties.
28468
+ *
28469
+ * The cache invalidates on **reference identity** only when the
28470
+ * consumer reassigns the array (`el.blackoutDates = [...]`), matching
28471
+ * Lit's own reactivity semantics for array properties. In-place mutations
28472
+ * on the existing array (`push`, `splice`, index assignment) will NOT
28473
+ * invalidate the cache and the new entries will be silently ignored.
28474
+ * Consumers must reassign to update — see the JSDoc on
28475
+ * `auro-datepicker.blackoutDates` for the recommended pattern.
28476
+ *
28477
+ * A shallow-equality tier was considered but rejected: it would run
28478
+ * O(N) work on every cell render (this method is called per-cell via
28479
+ * `isBlackout()`) and still wouldn't catch same-length value swaps,
28480
+ * offering a false sense of safety.
28453
28481
  * @private
28454
28482
  * @returns {Set<Number>}
28455
28483
  */
@@ -28630,7 +28658,21 @@ class AuroCalendar extends RangeDatepicker {
28630
28658
  // rendered month(s) first so a single-month calendar does not pick a date
28631
28659
  // that has no DOM cell. Determine the visible range based on centralDate and
28632
28660
  // the number of rendered months.
28633
- const renderedMonths = Math.max(this.numCalendars, 1);
28661
+ //
28662
+ // numCalendars is assigned during renderAllCalendars(), which runs after
28663
+ // updated() — so the visible-change handler's eager computeActiveDate()
28664
+ // call arrives with numCalendars still undefined. Math.max(undefined, 1)
28665
+ // is NaN, which would silently skip the visible-month scan below. Fall
28666
+ // back to maximumRenderableMonths' desktop default (1 for non-range,
28667
+ // 2 for range) so the scan window is correctly sized on first open.
28668
+ let renderedMonths = null;
28669
+
28670
+ if (Number.isFinite(this.numCalendars) && this.numCalendars > 0) {
28671
+ renderedMonths = this.numCalendars;
28672
+ } else {
28673
+ renderedMonths = this.noRange ? 1 : 2;
28674
+ }
28675
+
28634
28676
  const visibleAnchor = this.centralDateObject ?? new Date(now * 1000);
28635
28677
  const visMonthStart = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth(), 1);
28636
28678
  visMonthStart.setHours(0, 0, 0, 0);
@@ -28900,6 +28942,8 @@ class AuroCalendar extends RangeDatepicker {
28900
28942
  let targetIndex = -1;
28901
28943
  if (direction === 'next') {
28902
28944
  targetIndex = currentIndex + 1;
28945
+ } else if (direction === 'prev') {
28946
+ targetIndex = currentIndex - 1;
28903
28947
  }
28904
28948
 
28905
28949
  if (targetIndex >= 0 && targetIndex < allCells.length) {
@@ -29504,6 +29548,10 @@ class AuroCalendar extends RangeDatepicker {
29504
29548
  * originally tried aria-live="polite" here, but VoiceOver treats
29505
29549
  * polite as "wait until idle" — which never happens during active
29506
29550
  * keyboard navigation — so the announcements were silently dropped.
29551
+ *
29552
+ * This is a documented deviation from WCAG 2.1 SC 4.1.3, which
29553
+ * prefers `polite` for status messages. See the "Documented
29554
+ * Deviation" section in components/datepicker/docs/pages/accessibility.md.
29507
29555
  * @private
29508
29556
  * @param {String} dateStr - The localized date string to announce.
29509
29557
  * @returns {void}
@@ -33549,7 +33597,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$3 {
33549
33597
  }
33550
33598
  };
33551
33599
 
33552
- var formkitVersion$1$3 = '202607022214';
33600
+ var formkitVersion$1$3 = '202607021905';
33553
33601
 
33554
33602
  let AuroElement$2$2 = class AuroElement extends i$3 {
33555
33603
  static get properties() {
@@ -46431,17 +46479,14 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
46431
46479
  * @returns {void}
46432
46480
  */
46433
46481
  notifyValueChanged() {
46434
- // This echoes Lit's reactive value update (and handleClickClear's
46435
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
46436
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
46437
- // it from genuine user typing and skip clobbering their own
46438
- // programmatic state during init-time renders.
46439
- const inputEvent = new Event('input', {
46482
+ let inputEvent = null;
46483
+
46484
+ inputEvent = new Event('input', {
46440
46485
  bubbles: true,
46441
46486
  composed: true,
46442
46487
  });
46443
- inputEvent.isProgrammatic = true;
46444
46488
 
46489
+ // Dispatched event to alert outside shadow DOM context of event firing.
46445
46490
  this.dispatchEvent(inputEvent);
46446
46491
  }
46447
46492
 
@@ -47154,7 +47199,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$3 {
47154
47199
  }
47155
47200
  };
47156
47201
 
47157
- var formkitVersion$7 = '202607022214';
47202
+ var formkitVersion$7 = '202607021905';
47158
47203
 
47159
47204
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
47160
47205
  // See LICENSE in the project root for license information.
@@ -47440,15 +47485,20 @@ let AuroInput$1 = class AuroInput extends BaseInput$1 {
47440
47485
  * @returns {void}
47441
47486
  */
47442
47487
  checkDisplayValueSlotChange() {
47443
- // flatten:true resolves through auro-combobox's forwarding slot
47444
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
47445
- // directly to auro-input's light DOM alongside the forwarder still
47446
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
47447
- // discarded any siblings past the forwarder.
47448
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
47449
- const nodes = slot.assignedNodes({ flatten: true });
47488
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
47489
+
47490
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
47491
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
47492
+ nodes = nodes[0].assignedNodes();
47493
+ }
47450
47494
 
47451
- this.hasDisplayValueContent = nodes.length > 0;
47495
+ let hasContent = false;
47496
+
47497
+ if (nodes.length > 0) {
47498
+ hasContent = true;
47499
+ }
47500
+
47501
+ this.hasDisplayValueContent = hasContent;
47452
47502
  }
47453
47503
 
47454
47504
  firstUpdated() {
@@ -48526,6 +48576,15 @@ const datepickerKeyboardStrategy = {
48526
48576
  evt.stopPropagation();
48527
48577
  evt.preventDefault();
48528
48578
 
48579
+ // Signal to the visibility-change handler in auro-datepicker.js that
48580
+ // focus should be restored to the trigger regardless of hasFocus.
48581
+ // hidePopover() (desktop non-modal path) does not auto-restore focus,
48582
+ // and hiding the grid's popover ancestor drops focus to <body>. That
48583
+ // synchronously fires focusout on the datepicker host — clearing
48584
+ // hasFocus — before updated() runs, which would otherwise skip the
48585
+ // input refocus. Native <dialog>.close() (modal path) restores focus
48586
+ // itself, but the flag is harmless there.
48587
+ component._restoreFocusOnClose = true;
48529
48588
  component.hideBib();
48530
48589
  },
48531
48590
 
@@ -48799,6 +48858,14 @@ class AuroDatePicker extends AuroElement$5 {
48799
48858
 
48800
48859
  /**
48801
48860
  * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
48861
+ *
48862
+ * **Immutable update required.** The datepicker treats this array as
48863
+ * immutable and memoizes a lookup Set keyed on the array's reference
48864
+ * identity — matching Lit's own reactivity semantics for array
48865
+ * properties. In-place mutations (`blackoutDates.push(...)`,
48866
+ * `blackoutDates[i] = ...`, `blackoutDates.splice(...)`) will not
48867
+ * invalidate the cache and the new entries will be silently ignored.
48868
+ * To update, reassign the property: `el.blackoutDates = [...el.blackoutDates, '2024-12-25']`.
48802
48869
  */
48803
48870
  blackoutDates: {
48804
48871
  type: Array,
@@ -49684,12 +49751,13 @@ class AuroDatePicker extends AuroElement$5 {
49684
49751
  this.calendar.activeCellDate = null;
49685
49752
 
49686
49753
  // Show the month containing the selected date (or today) instead of
49687
- // whichever month the user last navigated to.
49754
+ // whichever month the user last navigated to. Route through
49755
+ // updateCentralDate so centralDate stays first-of-month.
49688
49756
  // Respect consumer-provided centralDate/calendarStartDate if no value is set.
49689
49757
  if (this.valueObject) {
49690
- this.centralDate = this.value;
49758
+ this.calendarRenderUtil.updateCentralDate(this, this.value);
49691
49759
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
49692
- this.centralDate = dateFormatter$1.toISOFormatString(new Date());
49760
+ this.calendarRenderUtil.updateCentralDate(this, new Date());
49693
49761
  }
49694
49762
  }
49695
49763
 
@@ -49747,8 +49815,15 @@ class AuroDatePicker extends AuroElement$5 {
49747
49815
  // Always clear the inert flag. Only restore focus to the input when the datepicker
49748
49816
  // still has focus (e.g. Escape, date selected) — not when the user tabbed away,
49749
49817
  // which would pull them back and require extra Tab presses to escape.
49818
+ //
49819
+ // `_restoreFocusOnClose` is set by the Escape handler in
49820
+ // datepickerKeyboardStrategy.js to force restore even when hasFocus
49821
+ // has already been cleared — hidePopover() (desktop non-modal path)
49822
+ // can drop focus to <body> before this update fires.
49750
49823
  this.dropdown.trigger.inert = false;
49751
- if (this.hasFocus) {
49824
+ const shouldRestoreFocus = this.hasFocus || this._restoreFocusOnClose;
49825
+ this._restoreFocusOnClose = false;
49826
+ if (shouldRestoreFocus) {
49752
49827
  requestAnimationFrame(() => {
49753
49828
  if (!this.dropdown.isPopoverVisible) {
49754
49829
  this.inputList[0].focus();
@@ -50194,6 +50269,18 @@ class AuroDatePicker extends AuroElement$5 {
50194
50269
  this.calendar.requestUpdate();
50195
50270
  this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
50196
50271
  }
50272
+
50273
+ // Range invariant: if a value change (from click or programmatic) has
50274
+ // moved start past end, clear valueEnd here so both properties land in
50275
+ // the SAME reactive cycle. Doing it in updated() would schedule a
50276
+ // second cycle after cellClickActive/wasCellClick has already been
50277
+ // consumed by the value branch, leaving the valueEnd branch to run
50278
+ // with a stale handshake and racing with any intervening programmatic
50279
+ // value assignments.
50280
+ if ((changedProperties.has('value') || changedProperties.has('valueEnd')) &&
50281
+ this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
50282
+ this.valueEnd = undefined;
50283
+ }
50197
50284
  }
50198
50285
 
50199
50286
  updated(changedProperties) {
@@ -50261,8 +50348,12 @@ class AuroDatePicker extends AuroElement$5 {
50261
50348
 
50262
50349
  if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
50263
50350
  // Skip centralDate update when user clicked a cell in range mode
50264
- // to prevent the displayed months from shifting
50265
- this.centralDate = this.value;
50351
+ // to prevent the displayed months from shifting. Route through
50352
+ // updateCentralDate so centralDate stays first-of-month — direct
50353
+ // assignment of the raw value briefly holds a mid-month string
50354
+ // and violates the invariant that observers (e.g. calendar sync)
50355
+ // rely on.
50356
+ this.calendarRenderUtil.updateCentralDate(this, this.value);
50266
50357
  }
50267
50358
 
50268
50359
  this.setHasValue();
@@ -50320,8 +50411,10 @@ class AuroDatePicker extends AuroElement$5 {
50320
50411
 
50321
50412
  if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
50322
50413
  // Skip centralDate update when user clicked a cell in range mode
50323
- // to prevent the displayed months from shifting
50324
- this.centralDate = this.valueEnd;
50414
+ // to prevent the displayed months from shifting. Route through
50415
+ // updateCentralDate to preserve the first-of-month invariant
50416
+ // (see matching comment in the value branch above).
50417
+ this.calendarRenderUtil.updateCentralDate(this, this.valueEnd);
50325
50418
  }
50326
50419
 
50327
50420
  this.validate();
@@ -50345,10 +50438,6 @@ class AuroDatePicker extends AuroElement$5 {
50345
50438
  this.validation.validate(lastInput, true);
50346
50439
  }
50347
50440
 
50348
- if (this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
50349
- this.valueEnd = undefined;
50350
- }
50351
-
50352
50441
  // This resets the datepicker when the minDate is set to a new value that is
50353
50442
  // a later date than the current value date
50354
50443
  if (changedProperties.has('minDate') && this.minDate) {
@@ -52031,7 +52120,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$3 {
52031
52120
  }
52032
52121
  };
52033
52122
 
52034
- var formkitVersion$1$2 = '202607022214';
52123
+ var formkitVersion$1$2 = '202607021905';
52035
52124
 
52036
52125
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
52037
52126
  // See LICENSE in the project root for license information.
@@ -56359,7 +56448,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$3 {
56359
56448
  }
56360
56449
  };
56361
56450
 
56362
- var formkitVersion$6 = '202607022214';
56451
+ var formkitVersion$6 = '202607021905';
56363
56452
 
56364
56453
  let AuroElement$1$2 = class AuroElement extends i$3 {
56365
56454
  static get properties() {
@@ -60339,7 +60428,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$3 {
60339
60428
  }
60340
60429
  };
60341
60430
 
60342
- var formkitVersion$5 = '202607022214';
60431
+ var formkitVersion$5 = '202607021905';
60343
60432
 
60344
60433
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
60345
60434
  // See LICENSE in the project root for license information.
@@ -62104,7 +62193,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$3 {
62104
62193
  }
62105
62194
  };
62106
62195
 
62107
- var formkitVersion$4 = '202607022214';
62196
+ var formkitVersion$4 = '202607021905';
62108
62197
 
62109
62198
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
62110
62199
  // See LICENSE in the project root for license information.
@@ -67325,7 +67414,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
67325
67414
  }
67326
67415
  };
67327
67416
 
67328
- var formkitVersion$2 = '202607022214';
67417
+ var formkitVersion$2 = '202607021905';
67329
67418
 
67330
67419
  let AuroElement$2$1 = class AuroElement extends i$3 {
67331
67420
  static get properties() {
@@ -80207,17 +80296,14 @@ class BaseInput extends AuroElement$1$1 {
80207
80296
  * @returns {void}
80208
80297
  */
80209
80298
  notifyValueChanged() {
80210
- // This echoes Lit's reactive value update (and handleClickClear's
80211
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
80212
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
80213
- // it from genuine user typing and skip clobbering their own
80214
- // programmatic state during init-time renders.
80215
- const inputEvent = new Event('input', {
80299
+ let inputEvent = null;
80300
+
80301
+ inputEvent = new Event('input', {
80216
80302
  bubbles: true,
80217
80303
  composed: true,
80218
80304
  });
80219
- inputEvent.isProgrammatic = true;
80220
80305
 
80306
+ // Dispatched event to alert outside shadow DOM context of event firing.
80221
80307
  this.dispatchEvent(inputEvent);
80222
80308
  }
80223
80309
 
@@ -80930,7 +81016,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$3 {
80930
81016
  }
80931
81017
  };
80932
81018
 
80933
- var formkitVersion$1$1 = '202607022214';
81019
+ var formkitVersion$1$1 = '202607021905';
80934
81020
 
80935
81021
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
80936
81022
  // See LICENSE in the project root for license information.
@@ -81216,15 +81302,20 @@ class AuroInput extends BaseInput {
81216
81302
  * @returns {void}
81217
81303
  */
81218
81304
  checkDisplayValueSlotChange() {
81219
- // flatten:true resolves through auro-combobox's forwarding slot
81220
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
81221
- // directly to auro-input's light DOM alongside the forwarder still
81222
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
81223
- // discarded any siblings past the forwarder.
81224
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
81225
- const nodes = slot.assignedNodes({ flatten: true });
81305
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
81226
81306
 
81227
- this.hasDisplayValueContent = nodes.length > 0;
81307
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
81308
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
81309
+ nodes = nodes[0].assignedNodes();
81310
+ }
81311
+
81312
+ let hasContent = false;
81313
+
81314
+ if (nodes.length > 0) {
81315
+ hasContent = true;
81316
+ }
81317
+
81318
+ this.hasDisplayValueContent = hasContent;
81228
81319
  }
81229
81320
 
81230
81321
  firstUpdated() {
@@ -82051,7 +82142,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$3 {
82051
82142
  }
82052
82143
  };
82053
82144
 
82054
- var formkitVersion$3 = '202607022214';
82145
+ var formkitVersion$3 = '202607021905';
82055
82146
 
82056
82147
  var styleCss$1$3 = i$6`.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}`;
82057
82148
 
@@ -83150,19 +83241,9 @@ class AuroCombobox extends AuroElement$3 {
83150
83241
  /**
83151
83242
  * Processes hidden state of all menu options and determines if there are any available options not hidden.
83152
83243
  * @private
83153
- * @param {object} [options={}] - Optional flag bag.
83154
- * @param {boolean} [options.preferComboboxValue=false] - When true,
83155
- * handleMenuOptions matches the selected option against `this.value`
83156
- * first instead of `this.input.value`. Needed on mount and re-mount
83157
- * because under `persistInput` the consumer's typedValue prop can drift
83158
- * from the framework value (Svelte `{#key}` re-mount after a swap, or
83159
- * SPA preselect after route change) and the old input-first match would
83160
- * then pick the stale text. Only handleSlotChange passes this; typing
83161
- * and clearing paths keep the input-first match so user clears aren't
83162
- * undone.
83163
83244
  * @returns {void}
83164
83245
  */
83165
- handleMenuOptions({ preferComboboxValue = false } = {}) {
83246
+ handleMenuOptions() {
83166
83247
  this.generateOptionsArray();
83167
83248
  this.availableOptions = [];
83168
83249
  // Single source of truth for the menu's filter/highlight token per call.
@@ -83183,20 +83264,7 @@ class AuroCombobox extends AuroElement$3 {
83183
83264
  option.setAttribute('aria-posinset', index + 1);
83184
83265
  });
83185
83266
 
83186
- // On mount/re-mount (via handleSlotChange), prefer the framework-set
83187
- // `this.value` when it matches a menu option. Covers SPA preselect and
83188
- // consumer swap patterns (e.g. Svelte `{#key}` re-mount) where
83189
- // `this.value` is authoritative but `this.input.value` may be empty or
83190
- // carry stale typed text from another field. Event-driven callers do
83191
- // not pass the flag, otherwise user clears would be undone by
83192
- // re-syncing to the previous combobox.value.
83193
- if (preferComboboxValue &&
83194
- this.value &&
83195
- this.menu.options?.some((opt) => opt.value === this.value)) {
83196
- this.setMenuValue(this.value);
83197
- this.syncValuesAndStates();
83198
- } else if (this.input.value &&
83199
- this.menu.options?.some((opt) => opt.value === this.input.value)) {
83267
+ if (this.input.value && this.menu.options && this.menu.options.some((opt) => opt.value === this.input.value)) {
83200
83268
  this.setMenuValue(this.input.value);
83201
83269
  this.syncValuesAndStates();
83202
83270
  }
@@ -83633,25 +83701,7 @@ class AuroCombobox extends AuroElement$3 {
83633
83701
  this.optionActive = evt.detail;
83634
83702
 
83635
83703
  if (this.input) {
83636
- // setActiveDescendant runs after Lit's update finishes because the
83637
- // template's `.a11yActivedescendant` binding calls setAttribute on
83638
- // the internal <input> in auro-input.updated(), which clears the
83639
- // reflected ariaActiveDescendantElement property. Setting the ref
83640
- // synchronously here would get overwritten by that attribute write.
83641
- // Awaiting updateComplete lets the attribute write finish first,
83642
- // then the ref sticks and screen readers can cross the shadow-DOM
83643
- // boundary to the auro-menuoption in light DOM.
83644
- //
83645
- // The equality check covers the async gap: this.optionActive can
83646
- // change before the callback runs (user arrowed elsewhere, or the
83647
- // menu closed and cleared it to null), so we bail if the target
83648
- // no longer matches to avoid reinstating a stale ref.
83649
- const targetOption = this.optionActive;
83650
- this.updateComplete.then(() => {
83651
- if (this.input && this.optionActive === targetOption) {
83652
- this.input.setActiveDescendant(targetOption);
83653
- }
83654
- });
83704
+ this.input.setActiveDescendant(this.optionActive);
83655
83705
  }
83656
83706
 
83657
83707
  // In fullscreen mode the menu sits inside a nested <dialog> shadow root,
@@ -83788,18 +83838,6 @@ class AuroCombobox extends AuroElement$3 {
83788
83838
  }
83789
83839
  }
83790
83840
 
83791
- // SPA preselect guard: on init render, auro-input's notifyValueChanged
83792
- // echoes an empty value through as an isProgrammatic input event before
83793
- // the framework-set combobox.value has propagated down to the input.
83794
- // Without this bail, the `this.value = this.input.value` below clobbers
83795
- // the framework value with '' and clear() wipes optionSelected. Scoped
83796
- // to the exact shape of that echo (isProgrammatic + non-empty combobox
83797
- // value + empty input.value) so it doesn't affect the swap/typed paths
83798
- // where value/input already track each other through the sync helpers.
83799
- if (event && event.isProgrammatic && this.value && !this.input.value) {
83800
- return;
83801
- }
83802
-
83803
83841
  this.value = this.input.value;
83804
83842
 
83805
83843
  // Ignore re-entrant input events caused by programmatic value sets.
@@ -84232,11 +84270,7 @@ class AuroCombobox extends AuroElement$3 {
84232
84270
  }
84233
84271
  });
84234
84272
 
84235
- // Slot change (mount/re-mount): pass `preferComboboxValue` so that a
84236
- // framework-set `this.value` wins over any stale `input.value` when
84237
- // matching against the newly-available options. Fixes the display
84238
- // for SPA preselect and Svelte `{#key}` re-mount swap patterns.
84239
- this.handleMenuOptions({ preferComboboxValue: true });
84273
+ this.handleMenuOptions();
84240
84274
 
84241
84275
  break;
84242
84276
 
@@ -86885,6 +86919,9 @@ function navigateArrow(component, direction, options = {}) {
86885
86919
  * @param {HTMLElement | null | undefined} menu - The auro-menu element.
86886
86920
  * @returns {Array<HTMLElement>} Non-disabled options, empty array when none.
86887
86921
  */
86922
+ function getEnabledOptions(menu) {
86923
+ return (menu?.options || []).filter((option) => !option.disabled);
86924
+ }
86888
86925
 
86889
86926
  /**
86890
86927
  * Returns the active (selectable + visible) options for type-ahead navigation.
@@ -86954,10 +86991,8 @@ const selectKeyboardStrategy = {
86954
86991
  End(component, evt, ctx) {
86955
86992
  evt.preventDefault();
86956
86993
  evt.stopPropagation();
86957
- // `pop()` is safe here: getActiveOptions returns a fresh filtered array.
86958
- // Uses "active" (not "enabled") so hidden and static rows — which a screen
86959
- // reader must not announce as focused — are skipped.
86960
- const lastOption = getActiveOptions(component.menu).pop();
86994
+ // `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
86995
+ const lastOption = getEnabledOptions(component.menu).pop();
86961
86996
  if (!lastOption) {
86962
86997
  return;
86963
86998
  }
@@ -86988,7 +87023,7 @@ const selectKeyboardStrategy = {
86988
87023
  Home(component, evt, ctx) {
86989
87024
  evt.preventDefault();
86990
87025
  evt.stopPropagation();
86991
- const [firstOption] = getActiveOptions(component.menu);
87026
+ const [firstOption] = getEnabledOptions(component.menu);
86992
87027
  if (!firstOption) {
86993
87028
  return;
86994
87029
  }
@@ -87013,15 +87048,6 @@ const selectKeyboardStrategy = {
87013
87048
  },
87014
87049
 
87015
87050
  default(component, evt, ctx) {
87016
- // Ignore keys chorded with Ctrl/Meta/Alt so browser/OS shortcuts
87017
- // (Cmd+C, Ctrl+V, Alt+X, Cmd+Space, …) don't leak into typeahead
87018
- // or toggle the bib. Native <select> ignores modified keys.
87019
- // ArrowUp/ArrowDown handle modifier+arrow explicitly above; this
87020
- // guard only affects the default (printable/Space) branch.
87021
- if (evt.ctrlKey || evt.metaKey || evt.altKey) {
87022
- return;
87023
- }
87024
-
87025
87051
  // Space resolves to either typeahead-buffer extension or bib toggle
87026
87052
  // depending on whether a type-ahead buffer is active. Mirrors native
87027
87053
  // <select> and the WAI-ARIA APG Listbox guidance: mid-typeahead space
@@ -90952,7 +90978,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
90952
90978
  }
90953
90979
  };
90954
90980
 
90955
- var formkitVersion$1 = '202607022214';
90981
+ var formkitVersion$1 = '202607021905';
90956
90982
 
90957
90983
  class AuroElement extends i$3 {
90958
90984
  static get properties() {
@@ -92991,7 +93017,7 @@ class AuroHelpText extends i$3 {
92991
93017
  }
92992
93018
  }
92993
93019
 
92994
- var formkitVersion = '202607022214';
93020
+ var formkitVersion = '202607021905';
92995
93021
 
92996
93022
  var styleCss = i$6`.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}`;
92997
93023
 
@@ -93555,11 +93581,8 @@ class AuroSelect extends AuroElement$1 {
93555
93581
  } else if (this.multiSelect && Array.isArray(this.optionSelected) && this.optionSelected.length > 0) {
93556
93582
  this.menu.updateActiveOption(this.optionSelected[0]);
93557
93583
  } else {
93558
- // If no activeOption has yet to be set, make the first active option
93559
- // (non-disabled, non-hidden, non-static) active by default. "Active" —
93560
- // not just "enabled" — so hidden rows and static placeholders never
93561
- // land in aria-activedescendant on open.
93562
- const [firstActive] = getActiveOptions(this.menu);
93584
+ // If no activeOption has yet to be set, then make the first enabled option active by default
93585
+ const [firstActive] = getEnabledOptions(this.menu);
93563
93586
  this.menu.updateActiveOption(firstActive);
93564
93587
  }
93565
93588
  }
@@ -93805,12 +93828,6 @@ class AuroSelect extends AuroElement$1 {
93805
93828
 
93806
93829
  /**
93807
93830
  * Binds all behavior needed to the menu after rendering.
93808
- *
93809
- * The `<auro-menu>` reference is captured once and not re-targeted on
93810
- * `slotchange`. Runtime option mutations are covered via
93811
- * `auroMenu-optionsChange`, so swap options inside the menu freely; do not
93812
- * swap the `<auro-menu>` element itself under a live select — remount the
93813
- * parent `<auro-select>` instead.
93814
93831
  * @private
93815
93832
  * @returns {void}
93816
93833
  */
@@ -93869,15 +93886,6 @@ class AuroSelect extends AuroElement$1 {
93869
93886
  if (this.menu.optionSelected !== undefined) {
93870
93887
  return;
93871
93888
  }
93872
- // Skip when the select is already cleared (valueless click with no
93873
- // prior selection): value/optionSelected are already empty and there
93874
- // is no stale trigger text to refresh, so updateDisplayedValue would
93875
- // just churn the DOM and request a needless dropdown re-render.
93876
- const hasStaleState = this.value !== undefined ||
93877
- (this.multiSelect ? this.optionSelected?.length > 0 : this.optionSelected !== undefined);
93878
- if (!hasStaleState) {
93879
- return;
93880
- }
93881
93889
  this.value = undefined;
93882
93890
  this.optionSelected = this.multiSelect ? [] : undefined;
93883
93891
  // The trigger label is rendered imperatively into #value, so a property
@@ -93907,15 +93915,10 @@ class AuroSelect extends AuroElement$1 {
93907
93915
  if (this.dropdown.isPopoverVisible) {
93908
93916
  announceToScreenReader(this._getAnnouncementRoot(), message);
93909
93917
  } else {
93910
- // Typeahead-on-closed calls updateActiveOption() before show(), so
93911
- // this handler runs with isPopoverVisible still false. queueMicrotask
93912
- // is safe because show() showBib() flips isPopoverVisible and
93913
- // dialog.showModal() both run synchronously in the same task; the
93914
- // microtask queue only drains once _handleTypeahead unwinds, by
93915
- // which point _getAnnouncementRoot() resolves to the bib's shadow
93916
- // root inside the now-open modal. Do NOT switch to auroDropdown-toggled
93917
- // — it fires before showModal(), landing the announcement in the
93918
- // host root while the dialog is still not-yet-modal.
93918
+ // Typeahead-on-closed fires this event before `show()` flips
93919
+ // isPopoverVisible. Defer so the announcement targets the bib's
93920
+ // live region once the fullscreen <dialog> opens otherwise it
93921
+ // lands in the host root, which is inert under the active modal.
93919
93922
  queueMicrotask(() => announceToScreenReader(this._getAnnouncementRoot(), message));
93920
93923
  }
93921
93924
  }
@@ -94309,13 +94312,6 @@ class AuroSelect extends AuroElement$1 {
94309
94312
  }
94310
94313
 
94311
94314
  if (changedProperties.has('value')) {
94312
- // A value change ends the current interaction — whether it came from a
94313
- // user commit, programmatic assignment, or reset(). Clear the buffer so
94314
- // a stale prefix does not concatenate onto the next keystroke while the
94315
- // host still has focus (the blur listener would otherwise be the only
94316
- // focus-retained clear point, and hideBib() below does not blur).
94317
- this._clearTypeaheadBuffer();
94318
-
94319
94315
  this.setMenuValue(this.value);
94320
94316
 
94321
94317
  this._updateNativeSelect();
@@ -94371,9 +94367,6 @@ class AuroSelect extends AuroElement$1 {
94371
94367
  * @returns {void}
94372
94368
  */
94373
94369
  reset() {
94374
- // Defense-in-depth: updated()'s value-change branch also clears, but
94375
- // reset-to-same-value (e.g. undefined → undefined) skips that path.
94376
- this._clearTypeaheadBuffer();
94377
94370
  this.menu.reset();
94378
94371
  this.validation.reset(this);
94379
94372
  }
@@ -94396,13 +94389,8 @@ class AuroSelect extends AuroElement$1 {
94396
94389
  // Hidden native <select> has no `multiple` attribute, so any change it fires
94397
94390
  // is a single raw value — applying it in multiSelect mode would collapse the
94398
94391
  // JSON-array `value` shape. Bfcache/autofill can reach this on a name-bearing
94399
- // form control even with aria-hidden/tabindex=-1, so revert to the expected
94400
- // mirror (formattedValue[0]) rather than letting the native select drift and
94401
- // silently submit the autofilled scalar under `name`.
94402
- if (this.multiSelect) {
94403
- this._updateNativeSelect();
94404
- return;
94405
- }
94392
+ // form control even with aria-hidden/tabindex=-1.
94393
+ if (this.multiSelect) return;
94406
94394
 
94407
94395
  const selectedOption = event.target.options[event.target.selectedIndex];
94408
94396
  if (!selectedOption) return;