@aurodesignsystem-dev/auro-formkit 0.0.0-pr1346.13 → 0.0.0-pr1346.14

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 (37) hide show
  1. package/components/checkbox/demo/api.min.js +1 -1
  2. package/components/checkbox/demo/index.min.js +1 -1
  3. package/components/checkbox/dist/index.js +1 -1
  4. package/components/checkbox/dist/registered.js +1 -1
  5. package/components/combobox/demo/api.min.js +59 -42
  6. package/components/combobox/demo/index.min.js +59 -42
  7. package/components/combobox/dist/index.js +59 -42
  8. package/components/combobox/dist/registered.js +59 -42
  9. package/components/counter/demo/api.min.js +58 -41
  10. package/components/counter/demo/index.min.js +58 -41
  11. package/components/counter/dist/index.js +58 -41
  12. package/components/counter/dist/registered.js +58 -41
  13. package/components/datepicker/demo/api.min.js +59 -42
  14. package/components/datepicker/demo/index.min.js +59 -42
  15. package/components/datepicker/dist/index.js +59 -42
  16. package/components/datepicker/dist/registered.js +59 -42
  17. package/components/dropdown/demo/api.min.js +57 -40
  18. package/components/dropdown/demo/index.min.js +57 -40
  19. package/components/dropdown/dist/auro-dropdownBib.d.ts +42 -0
  20. package/components/dropdown/dist/index.js +57 -40
  21. package/components/dropdown/dist/registered.js +57 -40
  22. package/components/form/demo/api.min.js +237 -169
  23. package/components/form/demo/index.min.js +237 -169
  24. package/components/input/demo/api.min.js +1 -1
  25. package/components/input/demo/index.min.js +1 -1
  26. package/components/input/dist/index.js +1 -1
  27. package/components/input/dist/registered.js +1 -1
  28. package/components/radio/demo/api.min.js +1 -1
  29. package/components/radio/demo/index.min.js +1 -1
  30. package/components/radio/dist/index.js +1 -1
  31. package/components/radio/dist/registered.js +1 -1
  32. package/components/select/demo/api.min.js +58 -41
  33. package/components/select/demo/index.min.js +58 -41
  34. package/components/select/dist/index.js +58 -41
  35. package/components/select/dist/registered.js +58 -41
  36. package/custom-elements.json +1418 -1390
  37. package/package.json +1 -1
@@ -9242,7 +9242,7 @@ class AuroBibtemplate extends LitElement {
9242
9242
  }
9243
9243
  }
9244
9244
 
9245
- var formkitVersion$2 = '202603091734';
9245
+ var formkitVersion$2 = '202603091748';
9246
9246
 
9247
9247
  let l$1 = 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=literal`${unsafeStatic(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = 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 = 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=css`: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}
9248
9248
  `,u$4=css`.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}}
@@ -12776,45 +12776,70 @@ class AuroDropdownBib extends LitElement {
12776
12776
  firstUpdated(changedProperties) {
12777
12777
  super.firstUpdated(changedProperties);
12778
12778
 
12779
- // Handle ESC key via dialog's cancel event
12780
12779
  const dialog = this.shadowRoot.querySelector('dialog');
12780
+ this._setupCancelHandler(dialog);
12781
+ this._setupKeyboardBridge(dialog);
12782
+
12783
+ this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
12784
+ bubbles: true,
12785
+ composed: true,
12786
+ detail: {
12787
+ element: this
12788
+ }
12789
+ }));
12790
+ }
12791
+
12792
+ /**
12793
+ * Forwards the dialog's native `cancel` event (fired on ESC) as
12794
+ * an `auro-bib-cancel` custom event so parent components can close.
12795
+ * @param {HTMLDialogElement} dialog
12796
+ * @private
12797
+ */
12798
+ _setupCancelHandler(dialog) {
12781
12799
  dialog.addEventListener('cancel', (event) => {
12782
- // Let parent handle closing
12783
12800
  event.preventDefault();
12784
12801
  this.dispatchEvent(new CustomEvent('auro-bib-cancel', {
12785
12802
  bubbles: true,
12786
12803
  composed: true
12787
12804
  }));
12788
12805
  });
12806
+ }
12789
12807
 
12790
- // showModal() creates a closed focus scope — keyboard events inside
12791
- // the dialog's shadow DOM do NOT bubble out to the combobox/select
12792
- // keydown handlers in the parent shadow DOM. This handler bridges
12793
- // that gap by re-dispatching navigation keys so they cross the
12794
- // shadow boundary and reach the menu navigation logic in the parent
12795
- // component.
12796
- //
12797
- // The trade-off: intercepting these keys means native keyboard
12798
- // behaviors that would normally "just work" must be manually
12799
- // re-implemented here:
12800
- //
12801
- // - Enter on buttons: Custom elements (auro-button) don't get the
12802
- // native Enter→click that <button> provides, so we call .click()
12803
- // directly when Enter is pressed on a button-like element.
12804
- //
12805
- // - Tab: Intercepted and re-dispatched so parent components
12806
- // (select/combobox) can select the active option and close the
12807
- // dialog. The <dialog> provides containment and isolation
12808
- // (inert background, VoiceOver focus trapping, top layer), while
12809
- // the content inside is a role="listbox" navigated via
12810
- // aria-activedescendant (options are not focusable). Tab keyboard
12811
- // behavior follows listbox conventions (select + close) because
12812
- // the dialog's native Tab trap only cycles between the close
12813
- // button and browser chrome.
12814
- //
12815
- // - Escape: The native <dialog> fires a `cancel` event on ESC
12816
- // (handled above), so the re-dispatched Escape is a secondary
12817
- // path for parent components that also listen for Escape keydown.
12808
+ /**
12809
+ * showModal() creates a closed focus scope keyboard events inside
12810
+ * the dialog's shadow DOM do NOT bubble out to the combobox/select
12811
+ * keydown handlers in the parent shadow DOM. This handler bridges
12812
+ * that gap by re-dispatching navigation keys so they cross the
12813
+ * shadow boundary and reach the menu navigation logic in the parent
12814
+ * component.
12815
+ *
12816
+ * The trade-off: intercepting these keys means native keyboard
12817
+ * behaviors that would normally "just work" must be manually
12818
+ * re-implemented here:
12819
+ *
12820
+ * - Enter on buttons: Custom elements (auro-button) don't get the
12821
+ * native Enter→click that <button> provides, so we call .click()
12822
+ * directly when Enter is pressed on a button-like element.
12823
+ *
12824
+ * - Tab: Intercepted and re-dispatched so parent components
12825
+ * (select/combobox) can select the active option and close the
12826
+ * dialog. The <dialog> provides containment and isolation
12827
+ * (inert background, VoiceOver focus trapping, top layer), while
12828
+ * the content inside is a role="listbox" navigated via
12829
+ * aria-activedescendant (options are not focusable). Tab keyboard
12830
+ * behavior follows listbox conventions (select + close) because
12831
+ * the dialog's native Tab trap only cycles between the close
12832
+ * button and browser chrome.
12833
+ *
12834
+ * - Escape: The native <dialog> fires a `cancel` event on ESC
12835
+ * (handled by _setupCancelHandler), so the re-dispatched Escape
12836
+ * is a secondary path for parent components that also listen for
12837
+ * Escape keydown.
12838
+ *
12839
+ * @param {HTMLDialogElement} dialog
12840
+ * @private
12841
+ */
12842
+ _setupKeyboardBridge(dialog) {
12818
12843
  const navKeys = new Set([
12819
12844
  'ArrowUp',
12820
12845
  'ArrowDown',
@@ -12822,6 +12847,7 @@ class AuroDropdownBib extends LitElement {
12822
12847
  'Escape',
12823
12848
  'Tab'
12824
12849
  ]);
12850
+
12825
12851
  dialog.addEventListener('keydown', (event) => {
12826
12852
  if (!navKeys.has(event.key)) {
12827
12853
  return;
@@ -12856,15 +12882,6 @@ class AuroDropdownBib extends LitElement {
12856
12882
  });
12857
12883
  this.dispatchEvent(newEvent);
12858
12884
  });
12859
-
12860
- // Dispatch a custom event when the component is connected
12861
- this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
12862
- bubbles: true,
12863
- composed: true,
12864
- detail: {
12865
- element: this
12866
- }
12867
- }));
12868
12885
  }
12869
12886
 
12870
12887
  /**
@@ -13216,7 +13233,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
13216
13233
  }
13217
13234
  };
13218
13235
 
13219
- var formkitVersion$1 = '202603091734';
13236
+ var formkitVersion$1 = '202603091748';
13220
13237
 
13221
13238
  let AuroElement$2 = class AuroElement extends LitElement {
13222
13239
  static get properties() {
@@ -20953,7 +20970,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
20953
20970
  }
20954
20971
  };
20955
20972
 
20956
- var formkitVersion = '202603091734';
20973
+ var formkitVersion = '202603091748';
20957
20974
 
20958
20975
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
20959
20976
  // See LICENSE in the project root for license information.
@@ -9242,7 +9242,7 @@ class AuroBibtemplate extends LitElement {
9242
9242
  }
9243
9243
  }
9244
9244
 
9245
- var formkitVersion$2 = '202603091734';
9245
+ var formkitVersion$2 = '202603091748';
9246
9246
 
9247
9247
  let l$1 = 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=literal`${unsafeStatic(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = 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 = 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=css`: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}
9248
9248
  `,u$4=css`.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}}
@@ -12776,45 +12776,70 @@ class AuroDropdownBib extends LitElement {
12776
12776
  firstUpdated(changedProperties) {
12777
12777
  super.firstUpdated(changedProperties);
12778
12778
 
12779
- // Handle ESC key via dialog's cancel event
12780
12779
  const dialog = this.shadowRoot.querySelector('dialog');
12780
+ this._setupCancelHandler(dialog);
12781
+ this._setupKeyboardBridge(dialog);
12782
+
12783
+ this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
12784
+ bubbles: true,
12785
+ composed: true,
12786
+ detail: {
12787
+ element: this
12788
+ }
12789
+ }));
12790
+ }
12791
+
12792
+ /**
12793
+ * Forwards the dialog's native `cancel` event (fired on ESC) as
12794
+ * an `auro-bib-cancel` custom event so parent components can close.
12795
+ * @param {HTMLDialogElement} dialog
12796
+ * @private
12797
+ */
12798
+ _setupCancelHandler(dialog) {
12781
12799
  dialog.addEventListener('cancel', (event) => {
12782
- // Let parent handle closing
12783
12800
  event.preventDefault();
12784
12801
  this.dispatchEvent(new CustomEvent('auro-bib-cancel', {
12785
12802
  bubbles: true,
12786
12803
  composed: true
12787
12804
  }));
12788
12805
  });
12806
+ }
12789
12807
 
12790
- // showModal() creates a closed focus scope — keyboard events inside
12791
- // the dialog's shadow DOM do NOT bubble out to the combobox/select
12792
- // keydown handlers in the parent shadow DOM. This handler bridges
12793
- // that gap by re-dispatching navigation keys so they cross the
12794
- // shadow boundary and reach the menu navigation logic in the parent
12795
- // component.
12796
- //
12797
- // The trade-off: intercepting these keys means native keyboard
12798
- // behaviors that would normally "just work" must be manually
12799
- // re-implemented here:
12800
- //
12801
- // - Enter on buttons: Custom elements (auro-button) don't get the
12802
- // native Enter→click that <button> provides, so we call .click()
12803
- // directly when Enter is pressed on a button-like element.
12804
- //
12805
- // - Tab: Intercepted and re-dispatched so parent components
12806
- // (select/combobox) can select the active option and close the
12807
- // dialog. The <dialog> provides containment and isolation
12808
- // (inert background, VoiceOver focus trapping, top layer), while
12809
- // the content inside is a role="listbox" navigated via
12810
- // aria-activedescendant (options are not focusable). Tab keyboard
12811
- // behavior follows listbox conventions (select + close) because
12812
- // the dialog's native Tab trap only cycles between the close
12813
- // button and browser chrome.
12814
- //
12815
- // - Escape: The native <dialog> fires a `cancel` event on ESC
12816
- // (handled above), so the re-dispatched Escape is a secondary
12817
- // path for parent components that also listen for Escape keydown.
12808
+ /**
12809
+ * showModal() creates a closed focus scope keyboard events inside
12810
+ * the dialog's shadow DOM do NOT bubble out to the combobox/select
12811
+ * keydown handlers in the parent shadow DOM. This handler bridges
12812
+ * that gap by re-dispatching navigation keys so they cross the
12813
+ * shadow boundary and reach the menu navigation logic in the parent
12814
+ * component.
12815
+ *
12816
+ * The trade-off: intercepting these keys means native keyboard
12817
+ * behaviors that would normally "just work" must be manually
12818
+ * re-implemented here:
12819
+ *
12820
+ * - Enter on buttons: Custom elements (auro-button) don't get the
12821
+ * native Enter→click that <button> provides, so we call .click()
12822
+ * directly when Enter is pressed on a button-like element.
12823
+ *
12824
+ * - Tab: Intercepted and re-dispatched so parent components
12825
+ * (select/combobox) can select the active option and close the
12826
+ * dialog. The <dialog> provides containment and isolation
12827
+ * (inert background, VoiceOver focus trapping, top layer), while
12828
+ * the content inside is a role="listbox" navigated via
12829
+ * aria-activedescendant (options are not focusable). Tab keyboard
12830
+ * behavior follows listbox conventions (select + close) because
12831
+ * the dialog's native Tab trap only cycles between the close
12832
+ * button and browser chrome.
12833
+ *
12834
+ * - Escape: The native <dialog> fires a `cancel` event on ESC
12835
+ * (handled by _setupCancelHandler), so the re-dispatched Escape
12836
+ * is a secondary path for parent components that also listen for
12837
+ * Escape keydown.
12838
+ *
12839
+ * @param {HTMLDialogElement} dialog
12840
+ * @private
12841
+ */
12842
+ _setupKeyboardBridge(dialog) {
12818
12843
  const navKeys = new Set([
12819
12844
  'ArrowUp',
12820
12845
  'ArrowDown',
@@ -12822,6 +12847,7 @@ class AuroDropdownBib extends LitElement {
12822
12847
  'Escape',
12823
12848
  'Tab'
12824
12849
  ]);
12850
+
12825
12851
  dialog.addEventListener('keydown', (event) => {
12826
12852
  if (!navKeys.has(event.key)) {
12827
12853
  return;
@@ -12856,15 +12882,6 @@ class AuroDropdownBib extends LitElement {
12856
12882
  });
12857
12883
  this.dispatchEvent(newEvent);
12858
12884
  });
12859
-
12860
- // Dispatch a custom event when the component is connected
12861
- this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
12862
- bubbles: true,
12863
- composed: true,
12864
- detail: {
12865
- element: this
12866
- }
12867
- }));
12868
12885
  }
12869
12886
 
12870
12887
  /**
@@ -13216,7 +13233,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
13216
13233
  }
13217
13234
  };
13218
13235
 
13219
- var formkitVersion$1 = '202603091734';
13236
+ var formkitVersion$1 = '202603091748';
13220
13237
 
13221
13238
  let AuroElement$2 = class AuroElement extends LitElement {
13222
13239
  static get properties() {
@@ -20953,7 +20970,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
20953
20970
  }
20954
20971
  };
20955
20972
 
20956
- var formkitVersion = '202603091734';
20973
+ var formkitVersion = '202603091748';
20957
20974
 
20958
20975
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
20959
20976
  // See LICENSE in the project root for license information.
@@ -3216,45 +3216,70 @@ class AuroDropdownBib extends i {
3216
3216
  firstUpdated(changedProperties) {
3217
3217
  super.firstUpdated(changedProperties);
3218
3218
 
3219
- // Handle ESC key via dialog's cancel event
3220
3219
  const dialog = this.shadowRoot.querySelector('dialog');
3220
+ this._setupCancelHandler(dialog);
3221
+ this._setupKeyboardBridge(dialog);
3222
+
3223
+ this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
3224
+ bubbles: true,
3225
+ composed: true,
3226
+ detail: {
3227
+ element: this
3228
+ }
3229
+ }));
3230
+ }
3231
+
3232
+ /**
3233
+ * Forwards the dialog's native `cancel` event (fired on ESC) as
3234
+ * an `auro-bib-cancel` custom event so parent components can close.
3235
+ * @param {HTMLDialogElement} dialog
3236
+ * @private
3237
+ */
3238
+ _setupCancelHandler(dialog) {
3221
3239
  dialog.addEventListener('cancel', (event) => {
3222
- // Let parent handle closing
3223
3240
  event.preventDefault();
3224
3241
  this.dispatchEvent(new CustomEvent('auro-bib-cancel', {
3225
3242
  bubbles: true,
3226
3243
  composed: true
3227
3244
  }));
3228
3245
  });
3246
+ }
3229
3247
 
3230
- // showModal() creates a closed focus scope — keyboard events inside
3231
- // the dialog's shadow DOM do NOT bubble out to the combobox/select
3232
- // keydown handlers in the parent shadow DOM. This handler bridges
3233
- // that gap by re-dispatching navigation keys so they cross the
3234
- // shadow boundary and reach the menu navigation logic in the parent
3235
- // component.
3236
- //
3237
- // The trade-off: intercepting these keys means native keyboard
3238
- // behaviors that would normally "just work" must be manually
3239
- // re-implemented here:
3240
- //
3241
- // - Enter on buttons: Custom elements (auro-button) don't get the
3242
- // native Enter→click that <button> provides, so we call .click()
3243
- // directly when Enter is pressed on a button-like element.
3244
- //
3245
- // - Tab: Intercepted and re-dispatched so parent components
3246
- // (select/combobox) can select the active option and close the
3247
- // dialog. The <dialog> provides containment and isolation
3248
- // (inert background, VoiceOver focus trapping, top layer), while
3249
- // the content inside is a role="listbox" navigated via
3250
- // aria-activedescendant (options are not focusable). Tab keyboard
3251
- // behavior follows listbox conventions (select + close) because
3252
- // the dialog's native Tab trap only cycles between the close
3253
- // button and browser chrome.
3254
- //
3255
- // - Escape: The native <dialog> fires a `cancel` event on ESC
3256
- // (handled above), so the re-dispatched Escape is a secondary
3257
- // path for parent components that also listen for Escape keydown.
3248
+ /**
3249
+ * showModal() creates a closed focus scope keyboard events inside
3250
+ * the dialog's shadow DOM do NOT bubble out to the combobox/select
3251
+ * keydown handlers in the parent shadow DOM. This handler bridges
3252
+ * that gap by re-dispatching navigation keys so they cross the
3253
+ * shadow boundary and reach the menu navigation logic in the parent
3254
+ * component.
3255
+ *
3256
+ * The trade-off: intercepting these keys means native keyboard
3257
+ * behaviors that would normally "just work" must be manually
3258
+ * re-implemented here:
3259
+ *
3260
+ * - Enter on buttons: Custom elements (auro-button) don't get the
3261
+ * native Enter→click that <button> provides, so we call .click()
3262
+ * directly when Enter is pressed on a button-like element.
3263
+ *
3264
+ * - Tab: Intercepted and re-dispatched so parent components
3265
+ * (select/combobox) can select the active option and close the
3266
+ * dialog. The <dialog> provides containment and isolation
3267
+ * (inert background, VoiceOver focus trapping, top layer), while
3268
+ * the content inside is a role="listbox" navigated via
3269
+ * aria-activedescendant (options are not focusable). Tab keyboard
3270
+ * behavior follows listbox conventions (select + close) because
3271
+ * the dialog's native Tab trap only cycles between the close
3272
+ * button and browser chrome.
3273
+ *
3274
+ * - Escape: The native <dialog> fires a `cancel` event on ESC
3275
+ * (handled by _setupCancelHandler), so the re-dispatched Escape
3276
+ * is a secondary path for parent components that also listen for
3277
+ * Escape keydown.
3278
+ *
3279
+ * @param {HTMLDialogElement} dialog
3280
+ * @private
3281
+ */
3282
+ _setupKeyboardBridge(dialog) {
3258
3283
  const navKeys = new Set([
3259
3284
  'ArrowUp',
3260
3285
  'ArrowDown',
@@ -3262,6 +3287,7 @@ class AuroDropdownBib extends i {
3262
3287
  'Escape',
3263
3288
  'Tab'
3264
3289
  ]);
3290
+
3265
3291
  dialog.addEventListener('keydown', (event) => {
3266
3292
  if (!navKeys.has(event.key)) {
3267
3293
  return;
@@ -3296,15 +3322,6 @@ class AuroDropdownBib extends i {
3296
3322
  });
3297
3323
  this.dispatchEvent(newEvent);
3298
3324
  });
3299
-
3300
- // Dispatch a custom event when the component is connected
3301
- this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
3302
- bubbles: true,
3303
- composed: true,
3304
- detail: {
3305
- element: this
3306
- }
3307
- }));
3308
3325
  }
3309
3326
 
3310
3327
  /**
@@ -3656,7 +3673,7 @@ class AuroHelpText extends i {
3656
3673
  }
3657
3674
  }
3658
3675
 
3659
- var formkitVersion = '202603091734';
3676
+ var formkitVersion = '202603091748';
3660
3677
 
3661
3678
  class AuroElement extends i {
3662
3679
  static get properties() {