@aurodesignsystem-dev/auro-formkit 0.0.0-pr1552.0 → 0.0.0-pr1553.1

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 (45) 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 +46 -207
  7. package/components/combobox/demo/getting-started.min.js +46 -207
  8. package/components/combobox/demo/index.min.js +46 -207
  9. package/components/combobox/dist/index.js +46 -207
  10. package/components/combobox/dist/registered.js +46 -207
  11. package/components/counter/demo/customize.min.js +59 -222
  12. package/components/counter/demo/index.min.js +59 -222
  13. package/components/counter/dist/auro-counter.d.ts +0 -8
  14. package/components/counter/dist/index.js +59 -222
  15. package/components/counter/dist/registered.js +59 -222
  16. package/components/datepicker/demo/customize.min.js +46 -207
  17. package/components/datepicker/demo/index.min.js +46 -207
  18. package/components/datepicker/dist/index.js +46 -207
  19. package/components/datepicker/dist/registered.js +46 -207
  20. package/components/dropdown/demo/customize.min.js +44 -205
  21. package/components/dropdown/demo/getting-started.min.js +44 -205
  22. package/components/dropdown/demo/index.min.js +44 -205
  23. package/components/dropdown/dist/index.js +44 -205
  24. package/components/dropdown/dist/registered.js +44 -205
  25. package/components/form/demo/customize.min.js +199 -845
  26. package/components/form/demo/getting-started.min.js +199 -845
  27. package/components/form/demo/index.min.js +199 -845
  28. package/components/form/demo/registerDemoDeps.min.js +199 -845
  29. package/components/input/demo/customize.min.js +1 -1
  30. package/components/input/demo/getting-started.min.js +1 -1
  31. package/components/input/demo/index.min.js +1 -1
  32. package/components/input/dist/index.js +1 -1
  33. package/components/input/dist/registered.js +1 -1
  34. package/components/radio/demo/customize.min.js +1 -1
  35. package/components/radio/demo/getting-started.min.js +1 -1
  36. package/components/radio/demo/index.min.js +1 -1
  37. package/components/radio/dist/index.js +1 -1
  38. package/components/radio/dist/registered.js +1 -1
  39. package/components/select/demo/customize.min.js +45 -206
  40. package/components/select/demo/getting-started.min.js +45 -206
  41. package/components/select/demo/index.min.js +45 -206
  42. package/components/select/dist/index.js +45 -206
  43. package/components/select/dist/registered.js +45 -206
  44. package/custom-elements.json +1499 -1514
  45. package/package.json +2 -2
@@ -12338,7 +12338,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$2 {
12338
12338
  }
12339
12339
  };
12340
12340
 
12341
- var formkitVersion$8 = '202607092329';
12341
+ var formkitVersion$8 = '202607102138';
12342
12342
 
12343
12343
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12344
12344
  // See LICENSE in the project root for license information.
@@ -26735,7 +26735,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$2 {
26735
26735
  }
26736
26736
  };
26737
26737
 
26738
- var formkitVersion$2$1 = '202607092329';
26738
+ var formkitVersion$2$1 = '202607102138';
26739
26739
 
26740
26740
  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}
26741
26741
  `,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}}
@@ -31012,12 +31012,40 @@ let AuroFloatingUI$3 = class AuroFloatingUI {
31012
31012
  return;
31013
31013
  }
31014
31014
 
31015
+ // Chrome-specific: during popover top-layer promotion after a click on a
31016
+ // slotted focusable, :focus-within can briefly evaluate false while the
31017
+ // active element is still structurally inside the trigger/bib. Fall back
31018
+ // to a shadow-piercing ancestry walk from the deep active element before
31019
+ // treating this as a real focus loss.
31020
+ try {
31021
+ let active = document.activeElement;
31022
+ while (active && active.shadowRoot && active.shadowRoot.activeElement) {
31023
+ active = active.shadowRoot.activeElement;
31024
+ }
31025
+ const targets = [element, element.trigger, element.bib].filter(Boolean);
31026
+ let node = active;
31027
+ while (node) {
31028
+ if (targets.includes(node)) {
31029
+ return;
31030
+ }
31031
+ node =
31032
+ node.parentElement ||
31033
+ (node.getRootNode && node.getRootNode().host) ||
31034
+ null;
31035
+ }
31036
+ } catch (e) {
31037
+ // Defensive: fall through to the existing close path if traversal fails.
31038
+ }
31039
+
31015
31040
  // if fullscreen bib is in fullscreen mode, do not close
31016
31041
  if (element.bib.hasAttribute("isfullscreen")) {
31017
31042
  return;
31018
31043
  }
31019
31044
 
31020
- this.hideBib("keydown");
31045
+ // eventType "focusloss" distinguishes a Tab/click-driven close from an
31046
+ // Escape keydown close. Consumers use this to decide whether to restore
31047
+ // focus to the trigger (Escape) or let it advance naturally (Tab).
31048
+ this.hideBib("focusloss");
31021
31049
  }
31022
31050
 
31023
31051
  setupHideHandlers() {
@@ -31687,199 +31715,6 @@ function getFocusableElements$4(container) {
31687
31715
  return tabIndexedUniqueElements;
31688
31716
  }
31689
31717
 
31690
- /**
31691
- * FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
31692
- * It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
31693
- */
31694
- let FocusTrap$3 = class FocusTrap {
31695
- /**
31696
- * Creates a new FocusTrap instance for the given container element.
31697
- * Initializes event listeners and prepares the container for focus management.
31698
- *
31699
- * @param {HTMLElement} container The DOM element to trap focus within.
31700
- * @param {boolean} [controlTabOrder=false] If true enables manual control of the tab order by the FocusTrap.
31701
- * @throws {Error} If the provided container is not a valid HTMLElement.
31702
- */
31703
- constructor(container, controlTabOrder = false) {
31704
- if (!container || !(container instanceof HTMLElement)) {
31705
- throw new Error("FocusTrap requires a valid HTMLElement.");
31706
- }
31707
-
31708
- this.container = container;
31709
- this.tabDirection = "forward"; // or 'backward';
31710
- this.controlTabOrder = controlTabOrder;
31711
-
31712
- this._init();
31713
- }
31714
-
31715
- /**
31716
- * Initializes the focus trap by setting up event listeners and attributes on the container.
31717
- * Prepares the container for focus management, including support for shadow DOM and inert attributes.
31718
- *
31719
- * @private
31720
- */
31721
- _init() {
31722
- // Add inert attribute to prevent focusing programmatically as well (if supported)
31723
- if ("inert" in HTMLElement.prototype) {
31724
- this.container.inert = false; // Ensure the container isn't inert
31725
- this.container.setAttribute("data-focus-trap-container", true); // Mark for identification
31726
- }
31727
-
31728
- // Track tab direction
31729
- this.container.addEventListener("keydown", this._onKeydown);
31730
- }
31731
-
31732
- /**
31733
- * Gets an array of currently active (focused) elements in the document and shadow DOM.
31734
- * @returns {Array<HTMLElement>} An array of focusable elements within the container.
31735
- * @private
31736
- */
31737
- _getActiveElements() {
31738
- // Get the active element(s) in the document and shadow root
31739
- // This will include the active element in the shadow DOM if it exists
31740
- // Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
31741
- let { activeElement } = document;
31742
- const actives = [activeElement];
31743
- while (activeElement?.shadowRoot?.activeElement) {
31744
- actives.push(activeElement.shadowRoot.activeElement);
31745
- activeElement = activeElement.shadowRoot.activeElement;
31746
- }
31747
- return actives;
31748
- }
31749
-
31750
- /**
31751
- * Gets the next focus index based on the current index and focusable elements.
31752
- * @param {number} currentIndex The current index of the focused element.
31753
- * @param {Array<HTMLElement>} focusables The array of focusable elements.
31754
- * @returns {number|null} The next focus index or null if not determined.
31755
- */
31756
- _getNextFocusIndex(currentIndex, focusables, actives) {
31757
- if (this.controlTabOrder) {
31758
- // Calculate the new index based on the current index and tab direction
31759
- let newFocusIndex =
31760
- currentIndex + (this.tabDirection === "forward" ? 1 : -1);
31761
-
31762
- // Wrap-around logic
31763
- if (newFocusIndex < 0) newFocusIndex = focusables.length - 1;
31764
- if (newFocusIndex >= focusables.length) newFocusIndex = 0;
31765
-
31766
- // Early return with the new index
31767
- return newFocusIndex;
31768
- }
31769
-
31770
- // Determine if we need to wrap
31771
- const atFirst =
31772
- actives.includes(focusables[0]) || actives.includes(this.container);
31773
- const atLast = actives.includes(focusables[focusables.length - 1]);
31774
-
31775
- // Only wrap if at the ends
31776
- if (this.tabDirection === "backward" && atFirst) {
31777
- return focusables.length - 1;
31778
- }
31779
-
31780
- if (this.tabDirection === "forward" && atLast) {
31781
- return 0;
31782
- }
31783
-
31784
- // No wrap, so don't change focus, return early
31785
- return null;
31786
- }
31787
-
31788
- /**
31789
- * Handles the Tab key press event to manage focus within the container.
31790
- * @param {KeyboardEvent} e The keyboard event triggered by the user.
31791
- * @returns {void}
31792
- */
31793
- _handleTabKey(e) {
31794
- // Update the focusable elements
31795
- const focusables = this._getFocusableElements();
31796
-
31797
- // If there are no focusable elements, exit
31798
- if (!focusables.length) return;
31799
-
31800
- // Set the tab direction based on the key pressed
31801
- this.tabDirection = e.shiftKey ? "backward" : "forward";
31802
-
31803
- // Get the active elements that are currently focused
31804
- const actives = this._getActiveElements();
31805
-
31806
- // If we're at either end of the focusable elements, wrap around to the other end
31807
- let focusIndex = focusables.findIndex((el) => actives.includes(el));
31808
-
31809
- // Fallback if we have no focused element
31810
- if (focusIndex === -1) focusIndex = 0;
31811
-
31812
- // Get the next focus index based on the current focus index, tab direction, and controlTabOrder setting
31813
- // Is null if no new focus index is determined
31814
- const newFocusIndex = this._getNextFocusIndex(
31815
- focusIndex,
31816
- focusables,
31817
- actives,
31818
- );
31819
-
31820
- // If we have a new focus index, set focus to that element
31821
- if (newFocusIndex !== null) {
31822
- e.preventDefault();
31823
- focusables[newFocusIndex].focus();
31824
- }
31825
- }
31826
-
31827
- /**
31828
- * Catches the keydown event
31829
- * @param {KeyboardEvent} e The keyboard event triggered by user interaction.
31830
- * @private
31831
- */
31832
- _onKeydown = (e) => {
31833
- // Handle tab
31834
- if (e.key === "Tab") this._handleTabKey(e);
31835
- };
31836
-
31837
- /**
31838
- * Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
31839
- * Returns a unique, ordered array of elements that can receive focus.
31840
- *
31841
- * @returns {Array<HTMLElement>} An array of focusable elements within the container.
31842
- * @private
31843
- */
31844
- _getFocusableElements() {
31845
- // Use the imported utility function to get focusable elements
31846
- const elements = getFocusableElements$4(this.container);
31847
-
31848
- // Return the elements found
31849
- return elements;
31850
- }
31851
-
31852
- /**
31853
- * Moves focus to the first focusable element within the container.
31854
- * Useful for setting initial focus when activating the focus trap.
31855
- */
31856
- focusFirstElement() {
31857
- const focusables = this._getFocusableElements();
31858
- if (focusables.length) focusables[0].focus();
31859
- }
31860
-
31861
- /**
31862
- * Moves focus to the last focusable element within the container.
31863
- * Useful for setting focus when deactivating or cycling focus in reverse.
31864
- */
31865
- focusLastElement() {
31866
- const focusables = this._getFocusableElements();
31867
- if (focusables.length) focusables[focusables.length - 1].focus();
31868
- }
31869
-
31870
- /**
31871
- * Removes event listeners and attributes added by the focus trap.
31872
- * Call this method to clean up when the focus trap is no longer needed.
31873
- */
31874
- disconnect() {
31875
- if (this.container.hasAttribute("data-focus-trap-container")) {
31876
- this.container.removeAttribute("data-focus-trap-container");
31877
- }
31878
-
31879
- this.container.removeEventListener("keydown", this._onKeydown);
31880
- }
31881
- };
31882
-
31883
31718
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
31884
31719
  // See LICENSE in the project root for license information.
31885
31720
 
@@ -32377,7 +32212,7 @@ let AuroDropdownBib$3 = class AuroDropdownBib extends i$2 {
32377
32212
  classes[`shape-${this.shape}`] = true;
32378
32213
 
32379
32214
  return u$d`
32380
- <dialog class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
32215
+ <dialog tabindex="-1" class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
32381
32216
  ${this.dialogLabel ? u$d`<span id="dialogLabel" class="util_displayHiddenVisually">${this.dialogLabel}</span>` : ''}
32382
32217
  <slot></slot>
32383
32218
  <span id="srAnnouncement" class="util_displayHiddenVisually" aria-live="polite" role="status"></span>
@@ -32628,7 +32463,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$2 {
32628
32463
  }
32629
32464
  };
32630
32465
 
32631
- var formkitVersion$1$3 = '202607092329';
32466
+ var formkitVersion$1$3 = '202607102138';
32632
32467
 
32633
32468
  let AuroElement$2$2 = class AuroElement extends i$2 {
32634
32469
  static get properties() {
@@ -33382,7 +33217,10 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
33382
33217
  }
33383
33218
 
33384
33219
 
33385
- if (!this.isPopoverVisible) {
33220
+ // On Tab-driven close (eventType "focusloss"), let focus advance naturally
33221
+ // — restoring to the trigger would trap the user on this dropdown, forcing
33222
+ // an extra Tab to move on. Escape and outside-click still restore.
33223
+ if (!this.isPopoverVisible && eventType !== "focusloss") {
33386
33224
  // wait til the bib gets fully closed and rendered
33387
33225
  setTimeout(() => {
33388
33226
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -33612,15 +33450,16 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
33612
33450
  }
33613
33451
  });
33614
33452
  } else {
33615
- // Normal desktop: use FocusTrap on the bib element.
33616
- // Defer focusFirstElement to the next frame because the popover
33617
- // is positioned asynchronously by Floating UI — calling focus()
33618
- // synchronously here would target elements with zero dimensions
33619
- // and the focus call would be silently ignored.
33620
- this.focusTrap = new FocusTrap$3(this.bibContent);
33453
+ // Normal desktop (non-modal): move initial focus into the bib but
33454
+ // don't trap Tab. Tab should exit the bib and let the floater's
33455
+ // handleFocusLoss close it, matching native <select>/<details>
33456
+ // behavior. Deferred one frame because Floating UI positions the
33457
+ // popover asynchronously a synchronous focus() would target
33458
+ // zero-dimension elements and be silently ignored.
33621
33459
  requestAnimationFrame(() => {
33622
- if (this.focusTrap) {
33623
- this.focusTrap.focusFirstElement();
33460
+ const focusables = getFocusableElements$4(this.bibContent);
33461
+ if (focusables.length) {
33462
+ focusables[0].focus();
33624
33463
  }
33625
33464
  });
33626
33465
  }
@@ -46246,7 +46085,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$2 {
46246
46085
  }
46247
46086
  };
46248
46087
 
46249
- var formkitVersion$7 = '202607092329';
46088
+ var formkitVersion$7 = '202607102138';
46250
46089
 
46251
46090
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
46252
46091
  // See LICENSE in the project root for license information.
@@ -51187,7 +51026,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$2 {
51187
51026
  }
51188
51027
  };
51189
51028
 
51190
- var formkitVersion$1$2 = '202607092329';
51029
+ var formkitVersion$1$2 = '202607102138';
51191
51030
 
51192
51031
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
51193
51032
  // See LICENSE in the project root for license information.
@@ -51528,21 +51367,6 @@ class AuroCounter extends i$2 {
51528
51367
  }
51529
51368
  }
51530
51369
 
51531
- /**
51532
- * Handles the slotchange event for the description slot.
51533
- * Updates ariaDescribedByElements on the spinbutton.
51534
- *
51535
- * @param {Event} event - The slotchange event.
51536
- * @private
51537
- */
51538
- onDescriptionSlotChange(event) {
51539
- const spinbutton = this.shadowRoot.querySelector('[role="spinbutton"]');
51540
- if (spinbutton) {
51541
- const assigned = event.target.assignedElements();
51542
- spinbutton.ariaDescribedByElements = assigned.length > 0 ? assigned : [];
51543
- }
51544
- }
51545
-
51546
51370
  updated(changedProperties) {
51547
51371
  if (changedProperties.has("value")) {
51548
51372
  this.validate();
@@ -51598,7 +51422,7 @@ class AuroCounter extends i$2 {
51598
51422
  <label class="label">
51599
51423
  <slot @slotchange="${this.onDefaultSlotChange}"></slot>
51600
51424
  </label>
51601
- <slot name="description" class="body-xs" @slotchange="${this.onDescriptionSlotChange}"></slot>
51425
+ <slot name="description" class="body-xs"></slot>
51602
51426
  </div>
51603
51427
  <div
51604
51428
  part="counterControl"
@@ -53899,12 +53723,40 @@ let AuroFloatingUI$2 = class AuroFloatingUI {
53899
53723
  return;
53900
53724
  }
53901
53725
 
53726
+ // Chrome-specific: during popover top-layer promotion after a click on a
53727
+ // slotted focusable, :focus-within can briefly evaluate false while the
53728
+ // active element is still structurally inside the trigger/bib. Fall back
53729
+ // to a shadow-piercing ancestry walk from the deep active element before
53730
+ // treating this as a real focus loss.
53731
+ try {
53732
+ let active = document.activeElement;
53733
+ while (active && active.shadowRoot && active.shadowRoot.activeElement) {
53734
+ active = active.shadowRoot.activeElement;
53735
+ }
53736
+ const targets = [element, element.trigger, element.bib].filter(Boolean);
53737
+ let node = active;
53738
+ while (node) {
53739
+ if (targets.includes(node)) {
53740
+ return;
53741
+ }
53742
+ node =
53743
+ node.parentElement ||
53744
+ (node.getRootNode && node.getRootNode().host) ||
53745
+ null;
53746
+ }
53747
+ } catch (e) {
53748
+ // Defensive: fall through to the existing close path if traversal fails.
53749
+ }
53750
+
53902
53751
  // if fullscreen bib is in fullscreen mode, do not close
53903
53752
  if (element.bib.hasAttribute("isfullscreen")) {
53904
53753
  return;
53905
53754
  }
53906
53755
 
53907
- this.hideBib("keydown");
53756
+ // eventType "focusloss" distinguishes a Tab/click-driven close from an
53757
+ // Escape keydown close. Consumers use this to decide whether to restore
53758
+ // focus to the trigger (Escape) or let it advance naturally (Tab).
53759
+ this.hideBib("focusloss");
53908
53760
  }
53909
53761
 
53910
53762
  setupHideHandlers() {
@@ -54574,199 +54426,6 @@ function getFocusableElements$3(container) {
54574
54426
  return tabIndexedUniqueElements;
54575
54427
  }
54576
54428
 
54577
- /**
54578
- * FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
54579
- * It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
54580
- */
54581
- let FocusTrap$2 = class FocusTrap {
54582
- /**
54583
- * Creates a new FocusTrap instance for the given container element.
54584
- * Initializes event listeners and prepares the container for focus management.
54585
- *
54586
- * @param {HTMLElement} container The DOM element to trap focus within.
54587
- * @param {boolean} [controlTabOrder=false] If true enables manual control of the tab order by the FocusTrap.
54588
- * @throws {Error} If the provided container is not a valid HTMLElement.
54589
- */
54590
- constructor(container, controlTabOrder = false) {
54591
- if (!container || !(container instanceof HTMLElement)) {
54592
- throw new Error("FocusTrap requires a valid HTMLElement.");
54593
- }
54594
-
54595
- this.container = container;
54596
- this.tabDirection = "forward"; // or 'backward';
54597
- this.controlTabOrder = controlTabOrder;
54598
-
54599
- this._init();
54600
- }
54601
-
54602
- /**
54603
- * Initializes the focus trap by setting up event listeners and attributes on the container.
54604
- * Prepares the container for focus management, including support for shadow DOM and inert attributes.
54605
- *
54606
- * @private
54607
- */
54608
- _init() {
54609
- // Add inert attribute to prevent focusing programmatically as well (if supported)
54610
- if ("inert" in HTMLElement.prototype) {
54611
- this.container.inert = false; // Ensure the container isn't inert
54612
- this.container.setAttribute("data-focus-trap-container", true); // Mark for identification
54613
- }
54614
-
54615
- // Track tab direction
54616
- this.container.addEventListener("keydown", this._onKeydown);
54617
- }
54618
-
54619
- /**
54620
- * Gets an array of currently active (focused) elements in the document and shadow DOM.
54621
- * @returns {Array<HTMLElement>} An array of focusable elements within the container.
54622
- * @private
54623
- */
54624
- _getActiveElements() {
54625
- // Get the active element(s) in the document and shadow root
54626
- // This will include the active element in the shadow DOM if it exists
54627
- // Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
54628
- let { activeElement } = document;
54629
- const actives = [activeElement];
54630
- while (activeElement?.shadowRoot?.activeElement) {
54631
- actives.push(activeElement.shadowRoot.activeElement);
54632
- activeElement = activeElement.shadowRoot.activeElement;
54633
- }
54634
- return actives;
54635
- }
54636
-
54637
- /**
54638
- * Gets the next focus index based on the current index and focusable elements.
54639
- * @param {number} currentIndex The current index of the focused element.
54640
- * @param {Array<HTMLElement>} focusables The array of focusable elements.
54641
- * @returns {number|null} The next focus index or null if not determined.
54642
- */
54643
- _getNextFocusIndex(currentIndex, focusables, actives) {
54644
- if (this.controlTabOrder) {
54645
- // Calculate the new index based on the current index and tab direction
54646
- let newFocusIndex =
54647
- currentIndex + (this.tabDirection === "forward" ? 1 : -1);
54648
-
54649
- // Wrap-around logic
54650
- if (newFocusIndex < 0) newFocusIndex = focusables.length - 1;
54651
- if (newFocusIndex >= focusables.length) newFocusIndex = 0;
54652
-
54653
- // Early return with the new index
54654
- return newFocusIndex;
54655
- }
54656
-
54657
- // Determine if we need to wrap
54658
- const atFirst =
54659
- actives.includes(focusables[0]) || actives.includes(this.container);
54660
- const atLast = actives.includes(focusables[focusables.length - 1]);
54661
-
54662
- // Only wrap if at the ends
54663
- if (this.tabDirection === "backward" && atFirst) {
54664
- return focusables.length - 1;
54665
- }
54666
-
54667
- if (this.tabDirection === "forward" && atLast) {
54668
- return 0;
54669
- }
54670
-
54671
- // No wrap, so don't change focus, return early
54672
- return null;
54673
- }
54674
-
54675
- /**
54676
- * Handles the Tab key press event to manage focus within the container.
54677
- * @param {KeyboardEvent} e The keyboard event triggered by the user.
54678
- * @returns {void}
54679
- */
54680
- _handleTabKey(e) {
54681
- // Update the focusable elements
54682
- const focusables = this._getFocusableElements();
54683
-
54684
- // If there are no focusable elements, exit
54685
- if (!focusables.length) return;
54686
-
54687
- // Set the tab direction based on the key pressed
54688
- this.tabDirection = e.shiftKey ? "backward" : "forward";
54689
-
54690
- // Get the active elements that are currently focused
54691
- const actives = this._getActiveElements();
54692
-
54693
- // If we're at either end of the focusable elements, wrap around to the other end
54694
- let focusIndex = focusables.findIndex((el) => actives.includes(el));
54695
-
54696
- // Fallback if we have no focused element
54697
- if (focusIndex === -1) focusIndex = 0;
54698
-
54699
- // Get the next focus index based on the current focus index, tab direction, and controlTabOrder setting
54700
- // Is null if no new focus index is determined
54701
- const newFocusIndex = this._getNextFocusIndex(
54702
- focusIndex,
54703
- focusables,
54704
- actives,
54705
- );
54706
-
54707
- // If we have a new focus index, set focus to that element
54708
- if (newFocusIndex !== null) {
54709
- e.preventDefault();
54710
- focusables[newFocusIndex].focus();
54711
- }
54712
- }
54713
-
54714
- /**
54715
- * Catches the keydown event
54716
- * @param {KeyboardEvent} e The keyboard event triggered by user interaction.
54717
- * @private
54718
- */
54719
- _onKeydown = (e) => {
54720
- // Handle tab
54721
- if (e.key === "Tab") this._handleTabKey(e);
54722
- };
54723
-
54724
- /**
54725
- * Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
54726
- * Returns a unique, ordered array of elements that can receive focus.
54727
- *
54728
- * @returns {Array<HTMLElement>} An array of focusable elements within the container.
54729
- * @private
54730
- */
54731
- _getFocusableElements() {
54732
- // Use the imported utility function to get focusable elements
54733
- const elements = getFocusableElements$3(this.container);
54734
-
54735
- // Return the elements found
54736
- return elements;
54737
- }
54738
-
54739
- /**
54740
- * Moves focus to the first focusable element within the container.
54741
- * Useful for setting initial focus when activating the focus trap.
54742
- */
54743
- focusFirstElement() {
54744
- const focusables = this._getFocusableElements();
54745
- if (focusables.length) focusables[0].focus();
54746
- }
54747
-
54748
- /**
54749
- * Moves focus to the last focusable element within the container.
54750
- * Useful for setting focus when deactivating or cycling focus in reverse.
54751
- */
54752
- focusLastElement() {
54753
- const focusables = this._getFocusableElements();
54754
- if (focusables.length) focusables[focusables.length - 1].focus();
54755
- }
54756
-
54757
- /**
54758
- * Removes event listeners and attributes added by the focus trap.
54759
- * Call this method to clean up when the focus trap is no longer needed.
54760
- */
54761
- disconnect() {
54762
- if (this.container.hasAttribute("data-focus-trap-container")) {
54763
- this.container.removeAttribute("data-focus-trap-container");
54764
- }
54765
-
54766
- this.container.removeEventListener("keydown", this._onKeydown);
54767
- }
54768
- };
54769
-
54770
54429
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
54771
54430
  // See LICENSE in the project root for license information.
54772
54431
 
@@ -55264,7 +54923,7 @@ let AuroDropdownBib$2 = class AuroDropdownBib extends i$2 {
55264
54923
  classes[`shape-${this.shape}`] = true;
55265
54924
 
55266
54925
  return u$d`
55267
- <dialog class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
54926
+ <dialog tabindex="-1" class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
55268
54927
  ${this.dialogLabel ? u$d`<span id="dialogLabel" class="util_displayHiddenVisually">${this.dialogLabel}</span>` : ''}
55269
54928
  <slot></slot>
55270
54929
  <span id="srAnnouncement" class="util_displayHiddenVisually" aria-live="polite" role="status"></span>
@@ -55515,7 +55174,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$2 {
55515
55174
  }
55516
55175
  };
55517
55176
 
55518
- var formkitVersion$6 = '202607092329';
55177
+ var formkitVersion$6 = '202607102138';
55519
55178
 
55520
55179
  let AuroElement$1$2 = class AuroElement extends i$2 {
55521
55180
  static get properties() {
@@ -56269,7 +55928,10 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$1$2 {
56269
55928
  }
56270
55929
 
56271
55930
 
56272
- if (!this.isPopoverVisible) {
55931
+ // On Tab-driven close (eventType "focusloss"), let focus advance naturally
55932
+ // — restoring to the trigger would trap the user on this dropdown, forcing
55933
+ // an extra Tab to move on. Escape and outside-click still restore.
55934
+ if (!this.isPopoverVisible && eventType !== "focusloss") {
56273
55935
  // wait til the bib gets fully closed and rendered
56274
55936
  setTimeout(() => {
56275
55937
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -56499,15 +56161,16 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$1$2 {
56499
56161
  }
56500
56162
  });
56501
56163
  } else {
56502
- // Normal desktop: use FocusTrap on the bib element.
56503
- // Defer focusFirstElement to the next frame because the popover
56504
- // is positioned asynchronously by Floating UI — calling focus()
56505
- // synchronously here would target elements with zero dimensions
56506
- // and the focus call would be silently ignored.
56507
- this.focusTrap = new FocusTrap$2(this.bibContent);
56164
+ // Normal desktop (non-modal): move initial focus into the bib but
56165
+ // don't trap Tab. Tab should exit the bib and let the floater's
56166
+ // handleFocusLoss close it, matching native <select>/<details>
56167
+ // behavior. Deferred one frame because Floating UI positions the
56168
+ // popover asynchronously a synchronous focus() would target
56169
+ // zero-dimension elements and be silently ignored.
56508
56170
  requestAnimationFrame(() => {
56509
- if (this.focusTrap) {
56510
- this.focusTrap.focusFirstElement();
56171
+ const focusables = getFocusableElements$3(this.bibContent);
56172
+ if (focusables.length) {
56173
+ focusables[0].focus();
56511
56174
  }
56512
56175
  });
56513
56176
  }
@@ -58105,6 +57768,19 @@ class AuroCounterGroup extends AuroElement$4 {
58105
57768
 
58106
57769
  if (this.isDropdown) {
58107
57770
  applyKeyboardStrategy$1$2(this, counterGroupKeyboardStrategy);
57771
+
57772
+ // noHideOnThisFocusLoss=true on the dropdown prevents handleFocusLoss from
57773
+ // closing the bib when focus moves out via Tab. Close explicitly via focusout:
57774
+ // if relatedTarget is outside the counter-group's light DOM, focus has left.
57775
+ this.addEventListener('focusout', (event) => {
57776
+ if (!this.dropdown?.isPopoverVisible || this.dropdown?.isBibFullscreen) {
57777
+ return;
57778
+ }
57779
+ if (event.relatedTarget && this.contains(event.relatedTarget)) {
57780
+ return;
57781
+ }
57782
+ this.hideBib();
57783
+ });
58108
57784
  }
58109
57785
  }
58110
57786
 
@@ -59495,7 +59171,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$2 {
59495
59171
  }
59496
59172
  };
59497
59173
 
59498
- var formkitVersion$5 = '202607092329';
59174
+ var formkitVersion$5 = '202607102138';
59499
59175
 
59500
59176
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
59501
59177
  // See LICENSE in the project root for license information.
@@ -61260,7 +60936,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$2 {
61260
60936
  }
61261
60937
  };
61262
60938
 
61263
- var formkitVersion$4 = '202607092329';
60939
+ var formkitVersion$4 = '202607102138';
61264
60940
 
61265
60941
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
61266
60942
  // See LICENSE in the project root for license information.
@@ -65122,12 +64798,40 @@ let AuroFloatingUI$1 = class AuroFloatingUI {
65122
64798
  return;
65123
64799
  }
65124
64800
 
64801
+ // Chrome-specific: during popover top-layer promotion after a click on a
64802
+ // slotted focusable, :focus-within can briefly evaluate false while the
64803
+ // active element is still structurally inside the trigger/bib. Fall back
64804
+ // to a shadow-piercing ancestry walk from the deep active element before
64805
+ // treating this as a real focus loss.
64806
+ try {
64807
+ let active = document.activeElement;
64808
+ while (active && active.shadowRoot && active.shadowRoot.activeElement) {
64809
+ active = active.shadowRoot.activeElement;
64810
+ }
64811
+ const targets = [element, element.trigger, element.bib].filter(Boolean);
64812
+ let node = active;
64813
+ while (node) {
64814
+ if (targets.includes(node)) {
64815
+ return;
64816
+ }
64817
+ node =
64818
+ node.parentElement ||
64819
+ (node.getRootNode && node.getRootNode().host) ||
64820
+ null;
64821
+ }
64822
+ } catch (e) {
64823
+ // Defensive: fall through to the existing close path if traversal fails.
64824
+ }
64825
+
65125
64826
  // if fullscreen bib is in fullscreen mode, do not close
65126
64827
  if (element.bib.hasAttribute("isfullscreen")) {
65127
64828
  return;
65128
64829
  }
65129
64830
 
65130
- this.hideBib("keydown");
64831
+ // eventType "focusloss" distinguishes a Tab/click-driven close from an
64832
+ // Escape keydown close. Consumers use this to decide whether to restore
64833
+ // focus to the trigger (Escape) or let it advance naturally (Tab).
64834
+ this.hideBib("focusloss");
65131
64835
  }
65132
64836
 
65133
64837
  setupHideHandlers() {
@@ -65797,199 +65501,6 @@ function getFocusableElements$2(container) {
65797
65501
  return tabIndexedUniqueElements;
65798
65502
  }
65799
65503
 
65800
- /**
65801
- * FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
65802
- * It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
65803
- */
65804
- let FocusTrap$1 = class FocusTrap {
65805
- /**
65806
- * Creates a new FocusTrap instance for the given container element.
65807
- * Initializes event listeners and prepares the container for focus management.
65808
- *
65809
- * @param {HTMLElement} container The DOM element to trap focus within.
65810
- * @param {boolean} [controlTabOrder=false] If true enables manual control of the tab order by the FocusTrap.
65811
- * @throws {Error} If the provided container is not a valid HTMLElement.
65812
- */
65813
- constructor(container, controlTabOrder = false) {
65814
- if (!container || !(container instanceof HTMLElement)) {
65815
- throw new Error("FocusTrap requires a valid HTMLElement.");
65816
- }
65817
-
65818
- this.container = container;
65819
- this.tabDirection = "forward"; // or 'backward';
65820
- this.controlTabOrder = controlTabOrder;
65821
-
65822
- this._init();
65823
- }
65824
-
65825
- /**
65826
- * Initializes the focus trap by setting up event listeners and attributes on the container.
65827
- * Prepares the container for focus management, including support for shadow DOM and inert attributes.
65828
- *
65829
- * @private
65830
- */
65831
- _init() {
65832
- // Add inert attribute to prevent focusing programmatically as well (if supported)
65833
- if ("inert" in HTMLElement.prototype) {
65834
- this.container.inert = false; // Ensure the container isn't inert
65835
- this.container.setAttribute("data-focus-trap-container", true); // Mark for identification
65836
- }
65837
-
65838
- // Track tab direction
65839
- this.container.addEventListener("keydown", this._onKeydown);
65840
- }
65841
-
65842
- /**
65843
- * Gets an array of currently active (focused) elements in the document and shadow DOM.
65844
- * @returns {Array<HTMLElement>} An array of focusable elements within the container.
65845
- * @private
65846
- */
65847
- _getActiveElements() {
65848
- // Get the active element(s) in the document and shadow root
65849
- // This will include the active element in the shadow DOM if it exists
65850
- // Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
65851
- let { activeElement } = document;
65852
- const actives = [activeElement];
65853
- while (activeElement?.shadowRoot?.activeElement) {
65854
- actives.push(activeElement.shadowRoot.activeElement);
65855
- activeElement = activeElement.shadowRoot.activeElement;
65856
- }
65857
- return actives;
65858
- }
65859
-
65860
- /**
65861
- * Gets the next focus index based on the current index and focusable elements.
65862
- * @param {number} currentIndex The current index of the focused element.
65863
- * @param {Array<HTMLElement>} focusables The array of focusable elements.
65864
- * @returns {number|null} The next focus index or null if not determined.
65865
- */
65866
- _getNextFocusIndex(currentIndex, focusables, actives) {
65867
- if (this.controlTabOrder) {
65868
- // Calculate the new index based on the current index and tab direction
65869
- let newFocusIndex =
65870
- currentIndex + (this.tabDirection === "forward" ? 1 : -1);
65871
-
65872
- // Wrap-around logic
65873
- if (newFocusIndex < 0) newFocusIndex = focusables.length - 1;
65874
- if (newFocusIndex >= focusables.length) newFocusIndex = 0;
65875
-
65876
- // Early return with the new index
65877
- return newFocusIndex;
65878
- }
65879
-
65880
- // Determine if we need to wrap
65881
- const atFirst =
65882
- actives.includes(focusables[0]) || actives.includes(this.container);
65883
- const atLast = actives.includes(focusables[focusables.length - 1]);
65884
-
65885
- // Only wrap if at the ends
65886
- if (this.tabDirection === "backward" && atFirst) {
65887
- return focusables.length - 1;
65888
- }
65889
-
65890
- if (this.tabDirection === "forward" && atLast) {
65891
- return 0;
65892
- }
65893
-
65894
- // No wrap, so don't change focus, return early
65895
- return null;
65896
- }
65897
-
65898
- /**
65899
- * Handles the Tab key press event to manage focus within the container.
65900
- * @param {KeyboardEvent} e The keyboard event triggered by the user.
65901
- * @returns {void}
65902
- */
65903
- _handleTabKey(e) {
65904
- // Update the focusable elements
65905
- const focusables = this._getFocusableElements();
65906
-
65907
- // If there are no focusable elements, exit
65908
- if (!focusables.length) return;
65909
-
65910
- // Set the tab direction based on the key pressed
65911
- this.tabDirection = e.shiftKey ? "backward" : "forward";
65912
-
65913
- // Get the active elements that are currently focused
65914
- const actives = this._getActiveElements();
65915
-
65916
- // If we're at either end of the focusable elements, wrap around to the other end
65917
- let focusIndex = focusables.findIndex((el) => actives.includes(el));
65918
-
65919
- // Fallback if we have no focused element
65920
- if (focusIndex === -1) focusIndex = 0;
65921
-
65922
- // Get the next focus index based on the current focus index, tab direction, and controlTabOrder setting
65923
- // Is null if no new focus index is determined
65924
- const newFocusIndex = this._getNextFocusIndex(
65925
- focusIndex,
65926
- focusables,
65927
- actives,
65928
- );
65929
-
65930
- // If we have a new focus index, set focus to that element
65931
- if (newFocusIndex !== null) {
65932
- e.preventDefault();
65933
- focusables[newFocusIndex].focus();
65934
- }
65935
- }
65936
-
65937
- /**
65938
- * Catches the keydown event
65939
- * @param {KeyboardEvent} e The keyboard event triggered by user interaction.
65940
- * @private
65941
- */
65942
- _onKeydown = (e) => {
65943
- // Handle tab
65944
- if (e.key === "Tab") this._handleTabKey(e);
65945
- };
65946
-
65947
- /**
65948
- * Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
65949
- * Returns a unique, ordered array of elements that can receive focus.
65950
- *
65951
- * @returns {Array<HTMLElement>} An array of focusable elements within the container.
65952
- * @private
65953
- */
65954
- _getFocusableElements() {
65955
- // Use the imported utility function to get focusable elements
65956
- const elements = getFocusableElements$2(this.container);
65957
-
65958
- // Return the elements found
65959
- return elements;
65960
- }
65961
-
65962
- /**
65963
- * Moves focus to the first focusable element within the container.
65964
- * Useful for setting initial focus when activating the focus trap.
65965
- */
65966
- focusFirstElement() {
65967
- const focusables = this._getFocusableElements();
65968
- if (focusables.length) focusables[0].focus();
65969
- }
65970
-
65971
- /**
65972
- * Moves focus to the last focusable element within the container.
65973
- * Useful for setting focus when deactivating or cycling focus in reverse.
65974
- */
65975
- focusLastElement() {
65976
- const focusables = this._getFocusableElements();
65977
- if (focusables.length) focusables[focusables.length - 1].focus();
65978
- }
65979
-
65980
- /**
65981
- * Removes event listeners and attributes added by the focus trap.
65982
- * Call this method to clean up when the focus trap is no longer needed.
65983
- */
65984
- disconnect() {
65985
- if (this.container.hasAttribute("data-focus-trap-container")) {
65986
- this.container.removeAttribute("data-focus-trap-container");
65987
- }
65988
-
65989
- this.container.removeEventListener("keydown", this._onKeydown);
65990
- }
65991
- };
65992
-
65993
65504
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
65994
65505
  // See LICENSE in the project root for license information.
65995
65506
 
@@ -66487,7 +65998,7 @@ let AuroDropdownBib$1 = class AuroDropdownBib extends i$2 {
66487
65998
  classes[`shape-${this.shape}`] = true;
66488
65999
 
66489
66000
  return u$d`
66490
- <dialog class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
66001
+ <dialog tabindex="-1" class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
66491
66002
  ${this.dialogLabel ? u$d`<span id="dialogLabel" class="util_displayHiddenVisually">${this.dialogLabel}</span>` : ''}
66492
66003
  <slot></slot>
66493
66004
  <span id="srAnnouncement" class="util_displayHiddenVisually" aria-live="polite" role="status"></span>
@@ -66738,7 +66249,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$2 {
66738
66249
  }
66739
66250
  };
66740
66251
 
66741
- var formkitVersion$2 = '202607092329';
66252
+ var formkitVersion$2 = '202607102138';
66742
66253
 
66743
66254
  let AuroElement$2$1 = class AuroElement extends i$2 {
66744
66255
  static get properties() {
@@ -67492,7 +67003,10 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
67492
67003
  }
67493
67004
 
67494
67005
 
67495
- if (!this.isPopoverVisible) {
67006
+ // On Tab-driven close (eventType "focusloss"), let focus advance naturally
67007
+ // — restoring to the trigger would trap the user on this dropdown, forcing
67008
+ // an extra Tab to move on. Escape and outside-click still restore.
67009
+ if (!this.isPopoverVisible && eventType !== "focusloss") {
67496
67010
  // wait til the bib gets fully closed and rendered
67497
67011
  setTimeout(() => {
67498
67012
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -67722,15 +67236,16 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
67722
67236
  }
67723
67237
  });
67724
67238
  } else {
67725
- // Normal desktop: use FocusTrap on the bib element.
67726
- // Defer focusFirstElement to the next frame because the popover
67727
- // is positioned asynchronously by Floating UI — calling focus()
67728
- // synchronously here would target elements with zero dimensions
67729
- // and the focus call would be silently ignored.
67730
- this.focusTrap = new FocusTrap$1(this.bibContent);
67239
+ // Normal desktop (non-modal): move initial focus into the bib but
67240
+ // don't trap Tab. Tab should exit the bib and let the floater's
67241
+ // handleFocusLoss close it, matching native <select>/<details>
67242
+ // behavior. Deferred one frame because Floating UI positions the
67243
+ // popover asynchronously a synchronous focus() would target
67244
+ // zero-dimension elements and be silently ignored.
67731
67245
  requestAnimationFrame(() => {
67732
- if (this.focusTrap) {
67733
- this.focusTrap.focusFirstElement();
67246
+ const focusables = getFocusableElements$2(this.bibContent);
67247
+ if (focusables.length) {
67248
+ focusables[0].focus();
67734
67249
  }
67735
67250
  });
67736
67251
  }
@@ -80356,7 +79871,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$2 {
80356
79871
  }
80357
79872
  };
80358
79873
 
80359
- var formkitVersion$1$1 = '202607092329';
79874
+ var formkitVersion$1$1 = '202607102138';
80360
79875
 
80361
79876
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
80362
79877
  // See LICENSE in the project root for license information.
@@ -81477,7 +80992,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$2 {
81477
80992
  }
81478
80993
  };
81479
80994
 
81480
- var formkitVersion$3 = '202607092329';
80995
+ var formkitVersion$3 = '202607102138';
81481
80996
 
81482
80997
  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}`;
81483
80998
 
@@ -88847,12 +88362,40 @@ class AuroFloatingUI {
88847
88362
  return;
88848
88363
  }
88849
88364
 
88365
+ // Chrome-specific: during popover top-layer promotion after a click on a
88366
+ // slotted focusable, :focus-within can briefly evaluate false while the
88367
+ // active element is still structurally inside the trigger/bib. Fall back
88368
+ // to a shadow-piercing ancestry walk from the deep active element before
88369
+ // treating this as a real focus loss.
88370
+ try {
88371
+ let active = document.activeElement;
88372
+ while (active && active.shadowRoot && active.shadowRoot.activeElement) {
88373
+ active = active.shadowRoot.activeElement;
88374
+ }
88375
+ const targets = [element, element.trigger, element.bib].filter(Boolean);
88376
+ let node = active;
88377
+ while (node) {
88378
+ if (targets.includes(node)) {
88379
+ return;
88380
+ }
88381
+ node =
88382
+ node.parentElement ||
88383
+ (node.getRootNode && node.getRootNode().host) ||
88384
+ null;
88385
+ }
88386
+ } catch (e) {
88387
+ // Defensive: fall through to the existing close path if traversal fails.
88388
+ }
88389
+
88850
88390
  // if fullscreen bib is in fullscreen mode, do not close
88851
88391
  if (element.bib.hasAttribute("isfullscreen")) {
88852
88392
  return;
88853
88393
  }
88854
88394
 
88855
- this.hideBib("keydown");
88395
+ // eventType "focusloss" distinguishes a Tab/click-driven close from an
88396
+ // Escape keydown close. Consumers use this to decide whether to restore
88397
+ // focus to the trigger (Escape) or let it advance naturally (Tab).
88398
+ this.hideBib("focusloss");
88856
88399
  }
88857
88400
 
88858
88401
  setupHideHandlers() {
@@ -89522,199 +89065,6 @@ function getFocusableElements(container) {
89522
89065
  return tabIndexedUniqueElements;
89523
89066
  }
89524
89067
 
89525
- /**
89526
- * FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
89527
- * It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
89528
- */
89529
- class FocusTrap {
89530
- /**
89531
- * Creates a new FocusTrap instance for the given container element.
89532
- * Initializes event listeners and prepares the container for focus management.
89533
- *
89534
- * @param {HTMLElement} container The DOM element to trap focus within.
89535
- * @param {boolean} [controlTabOrder=false] If true enables manual control of the tab order by the FocusTrap.
89536
- * @throws {Error} If the provided container is not a valid HTMLElement.
89537
- */
89538
- constructor(container, controlTabOrder = false) {
89539
- if (!container || !(container instanceof HTMLElement)) {
89540
- throw new Error("FocusTrap requires a valid HTMLElement.");
89541
- }
89542
-
89543
- this.container = container;
89544
- this.tabDirection = "forward"; // or 'backward';
89545
- this.controlTabOrder = controlTabOrder;
89546
-
89547
- this._init();
89548
- }
89549
-
89550
- /**
89551
- * Initializes the focus trap by setting up event listeners and attributes on the container.
89552
- * Prepares the container for focus management, including support for shadow DOM and inert attributes.
89553
- *
89554
- * @private
89555
- */
89556
- _init() {
89557
- // Add inert attribute to prevent focusing programmatically as well (if supported)
89558
- if ("inert" in HTMLElement.prototype) {
89559
- this.container.inert = false; // Ensure the container isn't inert
89560
- this.container.setAttribute("data-focus-trap-container", true); // Mark for identification
89561
- }
89562
-
89563
- // Track tab direction
89564
- this.container.addEventListener("keydown", this._onKeydown);
89565
- }
89566
-
89567
- /**
89568
- * Gets an array of currently active (focused) elements in the document and shadow DOM.
89569
- * @returns {Array<HTMLElement>} An array of focusable elements within the container.
89570
- * @private
89571
- */
89572
- _getActiveElements() {
89573
- // Get the active element(s) in the document and shadow root
89574
- // This will include the active element in the shadow DOM if it exists
89575
- // Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
89576
- let { activeElement } = document;
89577
- const actives = [activeElement];
89578
- while (activeElement?.shadowRoot?.activeElement) {
89579
- actives.push(activeElement.shadowRoot.activeElement);
89580
- activeElement = activeElement.shadowRoot.activeElement;
89581
- }
89582
- return actives;
89583
- }
89584
-
89585
- /**
89586
- * Gets the next focus index based on the current index and focusable elements.
89587
- * @param {number} currentIndex The current index of the focused element.
89588
- * @param {Array<HTMLElement>} focusables The array of focusable elements.
89589
- * @returns {number|null} The next focus index or null if not determined.
89590
- */
89591
- _getNextFocusIndex(currentIndex, focusables, actives) {
89592
- if (this.controlTabOrder) {
89593
- // Calculate the new index based on the current index and tab direction
89594
- let newFocusIndex =
89595
- currentIndex + (this.tabDirection === "forward" ? 1 : -1);
89596
-
89597
- // Wrap-around logic
89598
- if (newFocusIndex < 0) newFocusIndex = focusables.length - 1;
89599
- if (newFocusIndex >= focusables.length) newFocusIndex = 0;
89600
-
89601
- // Early return with the new index
89602
- return newFocusIndex;
89603
- }
89604
-
89605
- // Determine if we need to wrap
89606
- const atFirst =
89607
- actives.includes(focusables[0]) || actives.includes(this.container);
89608
- const atLast = actives.includes(focusables[focusables.length - 1]);
89609
-
89610
- // Only wrap if at the ends
89611
- if (this.tabDirection === "backward" && atFirst) {
89612
- return focusables.length - 1;
89613
- }
89614
-
89615
- if (this.tabDirection === "forward" && atLast) {
89616
- return 0;
89617
- }
89618
-
89619
- // No wrap, so don't change focus, return early
89620
- return null;
89621
- }
89622
-
89623
- /**
89624
- * Handles the Tab key press event to manage focus within the container.
89625
- * @param {KeyboardEvent} e The keyboard event triggered by the user.
89626
- * @returns {void}
89627
- */
89628
- _handleTabKey(e) {
89629
- // Update the focusable elements
89630
- const focusables = this._getFocusableElements();
89631
-
89632
- // If there are no focusable elements, exit
89633
- if (!focusables.length) return;
89634
-
89635
- // Set the tab direction based on the key pressed
89636
- this.tabDirection = e.shiftKey ? "backward" : "forward";
89637
-
89638
- // Get the active elements that are currently focused
89639
- const actives = this._getActiveElements();
89640
-
89641
- // If we're at either end of the focusable elements, wrap around to the other end
89642
- let focusIndex = focusables.findIndex((el) => actives.includes(el));
89643
-
89644
- // Fallback if we have no focused element
89645
- if (focusIndex === -1) focusIndex = 0;
89646
-
89647
- // Get the next focus index based on the current focus index, tab direction, and controlTabOrder setting
89648
- // Is null if no new focus index is determined
89649
- const newFocusIndex = this._getNextFocusIndex(
89650
- focusIndex,
89651
- focusables,
89652
- actives,
89653
- );
89654
-
89655
- // If we have a new focus index, set focus to that element
89656
- if (newFocusIndex !== null) {
89657
- e.preventDefault();
89658
- focusables[newFocusIndex].focus();
89659
- }
89660
- }
89661
-
89662
- /**
89663
- * Catches the keydown event
89664
- * @param {KeyboardEvent} e The keyboard event triggered by user interaction.
89665
- * @private
89666
- */
89667
- _onKeydown = (e) => {
89668
- // Handle tab
89669
- if (e.key === "Tab") this._handleTabKey(e);
89670
- };
89671
-
89672
- /**
89673
- * Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
89674
- * Returns a unique, ordered array of elements that can receive focus.
89675
- *
89676
- * @returns {Array<HTMLElement>} An array of focusable elements within the container.
89677
- * @private
89678
- */
89679
- _getFocusableElements() {
89680
- // Use the imported utility function to get focusable elements
89681
- const elements = getFocusableElements(this.container);
89682
-
89683
- // Return the elements found
89684
- return elements;
89685
- }
89686
-
89687
- /**
89688
- * Moves focus to the first focusable element within the container.
89689
- * Useful for setting initial focus when activating the focus trap.
89690
- */
89691
- focusFirstElement() {
89692
- const focusables = this._getFocusableElements();
89693
- if (focusables.length) focusables[0].focus();
89694
- }
89695
-
89696
- /**
89697
- * Moves focus to the last focusable element within the container.
89698
- * Useful for setting focus when deactivating or cycling focus in reverse.
89699
- */
89700
- focusLastElement() {
89701
- const focusables = this._getFocusableElements();
89702
- if (focusables.length) focusables[focusables.length - 1].focus();
89703
- }
89704
-
89705
- /**
89706
- * Removes event listeners and attributes added by the focus trap.
89707
- * Call this method to clean up when the focus trap is no longer needed.
89708
- */
89709
- disconnect() {
89710
- if (this.container.hasAttribute("data-focus-trap-container")) {
89711
- this.container.removeAttribute("data-focus-trap-container");
89712
- }
89713
-
89714
- this.container.removeEventListener("keydown", this._onKeydown);
89715
- }
89716
- }
89717
-
89718
89068
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
89719
89069
  // See LICENSE in the project root for license information.
89720
89070
 
@@ -90212,7 +89562,7 @@ class AuroDropdownBib extends i$2 {
90212
89562
  classes[`shape-${this.shape}`] = true;
90213
89563
 
90214
89564
  return u$d`
90215
- <dialog class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
89565
+ <dialog tabindex="-1" class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
90216
89566
  ${this.dialogLabel ? u$d`<span id="dialogLabel" class="util_displayHiddenVisually">${this.dialogLabel}</span>` : ''}
90217
89567
  <slot></slot>
90218
89568
  <span id="srAnnouncement" class="util_displayHiddenVisually" aria-live="polite" role="status"></span>
@@ -90463,7 +89813,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
90463
89813
  }
90464
89814
  };
90465
89815
 
90466
- var formkitVersion$1 = '202607092329';
89816
+ var formkitVersion$1 = '202607102138';
90467
89817
 
90468
89818
  class AuroElement extends i$2 {
90469
89819
  static get properties() {
@@ -91217,7 +90567,10 @@ class AuroDropdown extends AuroElement {
91217
90567
  }
91218
90568
 
91219
90569
 
91220
- if (!this.isPopoverVisible) {
90570
+ // On Tab-driven close (eventType "focusloss"), let focus advance naturally
90571
+ // — restoring to the trigger would trap the user on this dropdown, forcing
90572
+ // an extra Tab to move on. Escape and outside-click still restore.
90573
+ if (!this.isPopoverVisible && eventType !== "focusloss") {
91221
90574
  // wait til the bib gets fully closed and rendered
91222
90575
  setTimeout(() => {
91223
90576
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -91447,15 +90800,16 @@ class AuroDropdown extends AuroElement {
91447
90800
  }
91448
90801
  });
91449
90802
  } else {
91450
- // Normal desktop: use FocusTrap on the bib element.
91451
- // Defer focusFirstElement to the next frame because the popover
91452
- // is positioned asynchronously by Floating UI — calling focus()
91453
- // synchronously here would target elements with zero dimensions
91454
- // and the focus call would be silently ignored.
91455
- this.focusTrap = new FocusTrap(this.bibContent);
90803
+ // Normal desktop (non-modal): move initial focus into the bib but
90804
+ // don't trap Tab. Tab should exit the bib and let the floater's
90805
+ // handleFocusLoss close it, matching native <select>/<details>
90806
+ // behavior. Deferred one frame because Floating UI positions the
90807
+ // popover asynchronously a synchronous focus() would target
90808
+ // zero-dimension elements and be silently ignored.
91456
90809
  requestAnimationFrame(() => {
91457
- if (this.focusTrap) {
91458
- this.focusTrap.focusFirstElement();
90810
+ const focusables = getFocusableElements(this.bibContent);
90811
+ if (focusables.length) {
90812
+ focusables[0].focus();
91459
90813
  }
91460
90814
  });
91461
90815
  }
@@ -92502,7 +91856,7 @@ class AuroHelpText extends i$2 {
92502
91856
  }
92503
91857
  }
92504
91858
 
92505
- var formkitVersion = '202607092329';
91859
+ var formkitVersion = '202607102138';
92506
91860
 
92507
91861
  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}`;
92508
91862