@aurodesignsystem-dev/auro-formkit 0.0.0-pr1497.5 → 0.0.0-pr1498.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/components/checkbox/demo/customize.min.js +2 -2
  2. package/components/checkbox/demo/getting-started.min.js +2 -2
  3. package/components/checkbox/demo/index.min.js +2 -2
  4. package/components/checkbox/dist/index.js +2 -2
  5. package/components/checkbox/dist/registered.js +2 -2
  6. package/components/combobox/demo/customize.md +7 -3
  7. package/components/combobox/demo/customize.min.js +1438 -1668
  8. package/components/combobox/demo/getting-started.min.js +1440 -1670
  9. package/components/combobox/demo/index.min.js +1440 -1670
  10. package/components/combobox/dist/auro-combobox.d.ts +5 -0
  11. package/components/combobox/dist/index.js +485 -140
  12. package/components/combobox/dist/registered.js +485 -140
  13. package/components/counter/demo/customize.min.js +20 -3
  14. package/components/counter/demo/index.min.js +20 -3
  15. package/components/counter/dist/index.js +5447 -192
  16. package/components/counter/dist/registered.js +5447 -192
  17. package/components/datepicker/demo/customize.min.js +149 -58
  18. package/components/datepicker/demo/index.min.js +149 -58
  19. package/components/datepicker/dist/index.js +149 -58
  20. package/components/datepicker/dist/registered.js +149 -58
  21. package/components/dropdown/demo/customize.min.js +18 -1
  22. package/components/dropdown/demo/getting-started.min.js +18 -1
  23. package/components/dropdown/demo/index.min.js +18 -1
  24. package/components/dropdown/dist/auro-dropdown.d.ts +1 -0
  25. package/components/dropdown/dist/index.js +18 -1
  26. package/components/dropdown/dist/registered.js +18 -1
  27. package/components/form/demo/customize.min.js +7910 -7909
  28. package/components/form/demo/getting-started.min.js +7910 -7909
  29. package/components/form/demo/index.min.js +7910 -7909
  30. package/components/form/demo/registerDemoDeps.min.js +7872 -7871
  31. package/components/input/demo/customize.min.js +131 -56
  32. package/components/input/demo/getting-started.min.js +131 -56
  33. package/components/input/demo/index.min.js +131 -56
  34. package/components/input/dist/base-input.d.ts +16 -0
  35. package/components/input/dist/index.js +131 -56
  36. package/components/input/dist/registered.js +131 -56
  37. package/components/menu/demo/api.md +41 -45
  38. package/components/menu/demo/customize.md +0 -28
  39. package/components/menu/demo/index.min.js +779 -1354
  40. package/components/menu/dist/auro-menu.d.ts +95 -110
  41. package/components/menu/dist/auro-menuoption.d.ts +32 -138
  42. package/components/menu/dist/index.js +753 -1308
  43. package/components/menu/dist/registered.js +765 -1308
  44. package/components/radio/demo/customize.min.js +2 -2
  45. package/components/radio/demo/getting-started.min.js +2 -2
  46. package/components/radio/demo/index.min.js +2 -2
  47. package/components/radio/dist/index.js +2 -2
  48. package/components/radio/dist/registered.js +2 -2
  49. package/components/select/demo/customize.md +7 -3
  50. package/components/select/demo/customize.min.js +1088 -1615
  51. package/components/select/demo/getting-started.min.js +1088 -1615
  52. package/components/select/demo/index.min.js +1088 -1615
  53. package/components/select/dist/index.js +63 -15
  54. package/components/select/dist/registered.js +63 -15
  55. package/components/select/dist/selectUtils.d.ts +12 -0
  56. package/custom-elements.json +2296 -2942
  57. package/package.json +1 -1
  58. package/components/menu/dist/auro-menu.context.d.ts +0 -238
@@ -747,7 +747,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
747
747
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
748
748
  const input = elem.renderRoot.querySelector('input');
749
749
 
750
- if (input.validationMessage.length > 0) {
750
+ if (input && input.validationMessage.length > 0) {
751
751
  elem.errorMessage = input.validationMessage;
752
752
  }
753
753
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -10507,7 +10507,6 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10507
10507
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
10508
10508
 
10509
10509
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
10510
- console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
10511
10510
  return undefined;
10512
10511
  }
10513
10512
 
@@ -13389,7 +13388,7 @@ class AuroBibtemplate extends LitElement {
13389
13388
  }
13390
13389
  }
13391
13390
 
13392
- var formkitVersion$2 = '202606082040';
13391
+ var formkitVersion$2 = '202606100232';
13393
13392
 
13394
13393
  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}
13395
13394
  `,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}}
@@ -18902,7 +18901,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
18902
18901
  }
18903
18902
  };
18904
18903
 
18905
- var formkitVersion$1 = '202606082040';
18904
+ var formkitVersion$1 = '202606100232';
18906
18905
 
18907
18906
  let AuroElement$2 = class AuroElement extends LitElement {
18908
18907
  static get properties() {
@@ -19760,6 +19759,15 @@ class AuroDropdown extends AuroElement$2 {
19760
19759
  this.focusTrap = undefined;
19761
19760
  }
19762
19761
 
19762
+ // Restore any focus-loss suppression we installed for a prior trap state.
19763
+ // The desktopModal trap moves focus into the bib via RAF, which would
19764
+ // otherwise trip AuroFloatingUI.handleFocusLoss (a popover-top-layer
19765
+ // timing issue makes its :focus-within guard miss the focused button).
19766
+ if (this._priorNoHideOnFocusLoss !== undefined) {
19767
+ this.noHideOnThisFocusLoss = this._priorNoHideOnFocusLoss;
19768
+ this._priorNoHideOnFocusLoss = undefined;
19769
+ }
19770
+
19763
19771
  if (this.isPopoverVisible) {
19764
19772
  if (!this.isBibFullscreen) {
19765
19773
  if (this.desktopModal) {
@@ -19835,6 +19843,14 @@ class AuroDropdown extends AuroElement$2 {
19835
19843
  };
19836
19844
  this.addEventListener('keydown', this._bibTabHandler);
19837
19845
 
19846
+ // Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
19847
+ // desktopModal trap owns focus management. Without this, the very
19848
+ // first focus move into the bib (from the RAF below) triggers
19849
+ // handleFocusLoss → hideBib, tearing down the trap before the
19850
+ // user can press Tab.
19851
+ this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
19852
+ this.noHideOnThisFocusLoss = true;
19853
+
19838
19854
  // Move initial focus into the bib content, matching FocusTrap behavior
19839
19855
  requestAnimationFrame(() => {
19840
19856
  const focusables = getFocusableElements(this.bibContent);
@@ -24757,7 +24773,7 @@ class AuroFormValidation {
24757
24773
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
24758
24774
  const input = elem.renderRoot.querySelector('input');
24759
24775
 
24760
- if (input.validationMessage.length > 0) {
24776
+ if (input && input.validationMessage.length > 0) {
24761
24777
  elem.errorMessage = input.validationMessage;
24762
24778
  }
24763
24779
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -30594,7 +30610,6 @@ class AuroInputUtilities {
30594
30610
  const maskOptions = this.getMaskOptions('date', normalizedFormat);
30595
30611
 
30596
30612
  if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
30597
- console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
30598
30613
  return undefined;
30599
30614
  }
30600
30615
 
@@ -31297,7 +31312,7 @@ class BaseInput extends AuroElement$1 {
31297
31312
  * @returns {Date|undefined}
31298
31313
  */
31299
31314
  get valueObject() {
31300
- return this._valueObject;
31315
+ return this._valueObject || this._computeDateObjectFallback(this.value);
31301
31316
  }
31302
31317
 
31303
31318
  /**
@@ -31305,7 +31320,7 @@ class BaseInput extends AuroElement$1 {
31305
31320
  * @returns {Date|undefined}
31306
31321
  */
31307
31322
  get minObject() {
31308
- return this._minObject;
31323
+ return this._minObject || this._computeDateObjectFallback(this.min);
31309
31324
  }
31310
31325
 
31311
31326
  /**
@@ -31313,7 +31328,31 @@ class BaseInput extends AuroElement$1 {
31313
31328
  * @returns {Date|undefined}
31314
31329
  */
31315
31330
  get maxObject() {
31316
- return this._maxObject;
31331
+ return this._maxObject || this._computeDateObjectFallback(this.max);
31332
+ }
31333
+
31334
+ /**
31335
+ * Parses a date string into a Date object when the corresponding `_*Object`
31336
+ * field hasn't been synced yet by `updated()`. Returns undefined when the
31337
+ * input type/format isn't a full date or the string is not a valid date.
31338
+ *
31339
+ * Why this exists: a parent (datepicker) can call `inputN.validate()` from
31340
+ * inside its own `updated()` before this input's `updated()` has run
31341
+ * `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
31342
+ * and range checks would otherwise silently no-op (flipping the result to
31343
+ * `valid` or `patternMismatch`).
31344
+ * @private
31345
+ * @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
31346
+ * @returns {Date|undefined}
31347
+ */
31348
+ _computeDateObjectFallback(dateStr) {
31349
+ if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
31350
+ return undefined;
31351
+ }
31352
+ if (!dateFormatter.isValidDate(dateStr)) {
31353
+ return undefined;
31354
+ }
31355
+ return dateFormatter.stringToDateInstance(dateStr);
31317
31356
  }
31318
31357
 
31319
31358
  /**
@@ -31338,8 +31377,30 @@ class BaseInput extends AuroElement$1 {
31338
31377
  connectedCallback() {
31339
31378
  super.connectedCallback();
31340
31379
 
31380
+ // Mark for query selectors when registered under a versioned tag (e.g. inside
31381
+ // a datepicker/combobox). Must run before parent components call validate() on
31382
+ // their inner inputs — the validation framework matches via tag-or-attribute,
31383
+ // and parents trigger validation during their own updated() cycle, which can
31384
+ // precede this input's firstUpdated().
31385
+ if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
31386
+ this.setAttribute('auro-input', '');
31387
+ }
31388
+
31341
31389
  this.locale = this.domHandler.getLocale(this);
31342
31390
  notifyOnLangChange(this);
31391
+
31392
+ // Pre-compute lengthForType and date-object fields so a parent (e.g. datepicker)
31393
+ // calling our validate() synchronously during its own updated() cycle sees
31394
+ // populated values. Without this, range validation silently no-ops because
31395
+ // `max.length === lengthForType` fails when lengthForType is still undefined.
31396
+ // Rebuild util here (constructor seeded with en-US default) so configureDataForType's
31397
+ // locale-derived format lookup uses the actual locale just resolved above.
31398
+ this.util = new AuroInputUtilities({
31399
+ locale: this.locale,
31400
+ format: this.format
31401
+ });
31402
+ this.configureDataForType();
31403
+ this.syncDateValues();
31343
31404
  }
31344
31405
 
31345
31406
  disconnectedCallback() {
@@ -31360,8 +31421,8 @@ class BaseInput extends AuroElement$1 {
31360
31421
  }
31361
31422
 
31362
31423
  // add attribute for query selectors when auro-input is registered under a custom name
31363
- if (this.tagName.toLowerCase() !== 'auro-input') {
31364
- this.setAttribute('auro-input', true);
31424
+ if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
31425
+ this.setAttribute('auro-input', '');
31365
31426
  }
31366
31427
  this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
31367
31428
 
@@ -31409,6 +31470,12 @@ class BaseInput extends AuroElement$1 {
31409
31470
  return;
31410
31471
  }
31411
31472
 
31473
+ // While configureAutoFormatting is running, imask's internal updateControl
31474
+ // writes el.value to align display with the masked value. A synthetic input
31475
+ // event from that write would re-enter handleInput → processCreditCard mid-setup
31476
+ // and clobber a Lit value that was just pushed by the parent combobox.
31477
+ if (component._configuringMask) return;
31478
+
31412
31479
  // If all guard clauses are passed, dispatch the event
31413
31480
  const inputEvent = new InputEvent('input', {
31414
31481
  bubbles: true,
@@ -31527,7 +31594,16 @@ class BaseInput extends AuroElement$1 {
31527
31594
 
31528
31595
  if (formattedValue !== this.inputElement.value) {
31529
31596
  this.skipNextProgrammaticInputEvent = true;
31530
- if (formattedValue) {
31597
+ if (this.maskInstance && this.type === 'credit-card') {
31598
+ // Route through the mask so its _value and el.value stay in lock-step
31599
+ // (set value calls updateControl which writes el.value = displayValue).
31600
+ // Writing el.value directly leaves the mask thinking displayValue is
31601
+ // stale; _saveSelection on the next focus/click then warns. Scoped to
31602
+ // credit-card so date's own formattedValue (raw ISO when calendar-invalid)
31603
+ // isn't re-masked through the mm/dd/yyyy mask, which would truncate it
31604
+ // and flip validity from patternMismatch to tooShort.
31605
+ this.maskInstance.value = formattedValue || '';
31606
+ } else if (formattedValue) {
31531
31607
  this.inputElement.value = formattedValue;
31532
31608
  } else {
31533
31609
  this.inputElement.value = '';
@@ -31636,58 +31712,73 @@ class BaseInput extends AuroElement$1 {
31636
31712
  * @returns {void}
31637
31713
  */
31638
31714
  configureAutoFormatting() {
31639
- if (this.maskInstance) {
31640
- this.maskInstance.destroy();
31641
- }
31715
+ // Re-entrancy guard. The patched-setter's synthetic input event (suppressed
31716
+ // by _configuringMask above) could otherwise trigger handleInput →
31717
+ // processCreditCard → configureAutoFormatting before the outer call's
31718
+ // set value has finished its alignCursor pass.
31719
+ if (this._configuringMask) return;
31720
+ this._configuringMask = true;
31721
+ try {
31722
+ if (this.maskInstance) {
31723
+ this.maskInstance.destroy();
31724
+ }
31642
31725
 
31643
- // Pass new format to util
31644
- this.util.updateFormat(this.format);
31726
+ // Pass new format to util
31727
+ this.util.updateFormat(this.format);
31645
31728
 
31646
- const maskOptions = this.util.getMaskOptions(this.type, this.format);
31729
+ const maskOptions = this.util.getMaskOptions(this.type, this.format);
31647
31730
 
31648
- if (this.inputElement && maskOptions.mask) {
31731
+ if (this.inputElement && maskOptions.mask) {
31649
31732
 
31650
- // Stash and clear any existing value before IMask init.
31651
- // IMask's constructor processes the current input value which requires
31652
- // selection state — clearing first avoids that scenario entirely.
31653
- // When the format changes (e.g. locale switch) and we have a valid ISO
31654
- // model value, compute the display string for the NEW format instead of
31655
- // re-using the old display string, which may be invalid in the new mask.
31656
- let existingValue = this.inputElement.value;
31657
- if (
31658
- this.util.isFullDateFormat(this.type, this.format) &&
31659
- this.value &&
31660
- dateFormatter.isValidDate(this.value) &&
31661
- this.valueObject instanceof Date &&
31662
- !Number.isNaN(this.valueObject.getTime()) &&
31663
- typeof maskOptions.format === 'function'
31664
- ) {
31665
- existingValue = maskOptions.format(this.valueObject);
31666
- }
31667
-
31668
- this.skipNextProgrammaticInputEvent = true;
31669
- this.inputElement.value = '';
31733
+ // Stash and clear any existing value before IMask init.
31734
+ // IMask's constructor processes the current input value which requires
31735
+ // selection state — clearing first avoids that scenario entirely.
31736
+ // When the format changes (e.g. locale switch) and we have a valid ISO
31737
+ // model value, compute the display string for the NEW format instead of
31738
+ // re-using the old display string, which may be invalid in the new mask.
31739
+ let existingValue = this.inputElement.value;
31740
+ if (
31741
+ this.util.isFullDateFormat(this.type, this.format) &&
31742
+ this.value &&
31743
+ dateFormatter.isValidDate(this.value) &&
31744
+ this.valueObject instanceof Date &&
31745
+ !Number.isNaN(this.valueObject.getTime()) &&
31746
+ typeof maskOptions.format === 'function'
31747
+ ) {
31748
+ existingValue = maskOptions.format(this.valueObject);
31749
+ }
31670
31750
 
31671
- this.maskInstance = IMask(this.inputElement, maskOptions);
31751
+ this.skipNextProgrammaticInputEvent = true;
31752
+ this.inputElement.value = '';
31753
+
31754
+ this.maskInstance = IMask(this.inputElement, maskOptions);
31755
+
31756
+ this.maskInstance.on('accept', () => {
31757
+ // Suppress propagation during configureAutoFormatting's own value-restoration
31758
+ // (line below) — the mask emits 'accept' on every value-set, including ours,
31759
+ // and we don't want to overwrite a value the parent just pushed.
31760
+ if (this._configuringMask) return;
31761
+ this.value = this.util.toModelValue(this.maskInstance.value, this.format);
31762
+ if (this.type === "date") {
31763
+ this._rawMaskValue = this.maskInstance.value;
31764
+ }
31765
+ });
31672
31766
 
31673
- this.maskInstance.on('accept', () => {
31674
- this.value = this.util.toModelValue(this.maskInstance.value, this.format);
31675
- if (this.type === "date") {
31676
- this._rawMaskValue = this.maskInstance.value;
31677
- }
31678
- });
31767
+ this.maskInstance.on('complete', () => {
31768
+ if (this._configuringMask) return;
31769
+ this.value = this.util.toModelValue(this.maskInstance.value, this.format);
31770
+ if (this.type === "date") {
31771
+ this._rawMaskValue = this.maskInstance.value;
31772
+ }
31773
+ });
31679
31774
 
31680
- this.maskInstance.on('complete', () => {
31681
- this.value = this.util.toModelValue(this.maskInstance.value, this.format);
31682
- if (this.type === "date") {
31683
- this._rawMaskValue = this.maskInstance.value;
31775
+ // Restore the stashed value through IMask so it's properly masked
31776
+ if (existingValue) {
31777
+ this.maskInstance.value = existingValue;
31684
31778
  }
31685
- });
31686
-
31687
- // Restore the stashed value through IMask so it's properly masked
31688
- if (existingValue) {
31689
- this.maskInstance.value = existingValue;
31690
31779
  }
31780
+ } finally {
31781
+ this._configuringMask = false;
31691
31782
  }
31692
31783
  }
31693
31784
 
@@ -31974,10 +32065,10 @@ class BaseInput extends AuroElement$1 {
31974
32065
  },
31975
32066
  {
31976
32067
  name: 'Diners club',
31977
- regex: /^(?<num>36|38)\d{0}/u,
32068
+ regex: /^(?<num>30[0-5]|36|38)\d{0}/u,
31978
32069
  formatLength: 16,
31979
32070
  errorMessage: CreditCardValidationMessage,
31980
- cardIcon: 'credit-card',
32071
+ cardIcon: 'cc-dinersclub',
31981
32072
  maskFormat: "0000 000000 0000"
31982
32073
  },
31983
32074
  {
@@ -32387,7 +32478,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
32387
32478
  }
32388
32479
  };
32389
32480
 
32390
- var formkitVersion = '202606082040';
32481
+ var formkitVersion = '202606100232';
32391
32482
 
32392
32483
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
32393
32484
  // See LICENSE in the project root for license information.
@@ -3942,7 +3942,7 @@ class AuroHelpText extends i {
3942
3942
  }
3943
3943
  }
3944
3944
 
3945
- var formkitVersion = '202606082040';
3945
+ var formkitVersion = '202606100232';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4800,6 +4800,15 @@ class AuroDropdown extends AuroElement {
4800
4800
  this.focusTrap = undefined;
4801
4801
  }
4802
4802
 
4803
+ // Restore any focus-loss suppression we installed for a prior trap state.
4804
+ // The desktopModal trap moves focus into the bib via RAF, which would
4805
+ // otherwise trip AuroFloatingUI.handleFocusLoss (a popover-top-layer
4806
+ // timing issue makes its :focus-within guard miss the focused button).
4807
+ if (this._priorNoHideOnFocusLoss !== undefined) {
4808
+ this.noHideOnThisFocusLoss = this._priorNoHideOnFocusLoss;
4809
+ this._priorNoHideOnFocusLoss = undefined;
4810
+ }
4811
+
4803
4812
  if (this.isPopoverVisible) {
4804
4813
  if (!this.isBibFullscreen) {
4805
4814
  if (this.desktopModal) {
@@ -4875,6 +4884,14 @@ class AuroDropdown extends AuroElement {
4875
4884
  };
4876
4885
  this.addEventListener('keydown', this._bibTabHandler);
4877
4886
 
4887
+ // Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
4888
+ // desktopModal trap owns focus management. Without this, the very
4889
+ // first focus move into the bib (from the RAF below) triggers
4890
+ // handleFocusLoss → hideBib, tearing down the trap before the
4891
+ // user can press Tab.
4892
+ this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
4893
+ this.noHideOnThisFocusLoss = true;
4894
+
4878
4895
  // Move initial focus into the bib content, matching FocusTrap behavior
4879
4896
  requestAnimationFrame(() => {
4880
4897
  const focusables = getFocusableElements(this.bibContent);
@@ -3942,7 +3942,7 @@ class AuroHelpText extends i {
3942
3942
  }
3943
3943
  }
3944
3944
 
3945
- var formkitVersion = '202606082040';
3945
+ var formkitVersion = '202606100232';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4800,6 +4800,15 @@ class AuroDropdown extends AuroElement {
4800
4800
  this.focusTrap = undefined;
4801
4801
  }
4802
4802
 
4803
+ // Restore any focus-loss suppression we installed for a prior trap state.
4804
+ // The desktopModal trap moves focus into the bib via RAF, which would
4805
+ // otherwise trip AuroFloatingUI.handleFocusLoss (a popover-top-layer
4806
+ // timing issue makes its :focus-within guard miss the focused button).
4807
+ if (this._priorNoHideOnFocusLoss !== undefined) {
4808
+ this.noHideOnThisFocusLoss = this._priorNoHideOnFocusLoss;
4809
+ this._priorNoHideOnFocusLoss = undefined;
4810
+ }
4811
+
4803
4812
  if (this.isPopoverVisible) {
4804
4813
  if (!this.isBibFullscreen) {
4805
4814
  if (this.desktopModal) {
@@ -4875,6 +4884,14 @@ class AuroDropdown extends AuroElement {
4875
4884
  };
4876
4885
  this.addEventListener('keydown', this._bibTabHandler);
4877
4886
 
4887
+ // Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
4888
+ // desktopModal trap owns focus management. Without this, the very
4889
+ // first focus move into the bib (from the RAF below) triggers
4890
+ // handleFocusLoss → hideBib, tearing down the trap before the
4891
+ // user can press Tab.
4892
+ this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
4893
+ this.noHideOnThisFocusLoss = true;
4894
+
4878
4895
  // Move initial focus into the bib content, matching FocusTrap behavior
4879
4896
  requestAnimationFrame(() => {
4880
4897
  const focusables = getFocusableElements(this.bibContent);
@@ -3969,7 +3969,7 @@ class AuroHelpText extends i {
3969
3969
  }
3970
3970
  }
3971
3971
 
3972
- var formkitVersion = '202606082040';
3972
+ var formkitVersion = '202606100232';
3973
3973
 
3974
3974
  class AuroElement extends i {
3975
3975
  static get properties() {
@@ -4827,6 +4827,15 @@ class AuroDropdown extends AuroElement {
4827
4827
  this.focusTrap = undefined;
4828
4828
  }
4829
4829
 
4830
+ // Restore any focus-loss suppression we installed for a prior trap state.
4831
+ // The desktopModal trap moves focus into the bib via RAF, which would
4832
+ // otherwise trip AuroFloatingUI.handleFocusLoss (a popover-top-layer
4833
+ // timing issue makes its :focus-within guard miss the focused button).
4834
+ if (this._priorNoHideOnFocusLoss !== undefined) {
4835
+ this.noHideOnThisFocusLoss = this._priorNoHideOnFocusLoss;
4836
+ this._priorNoHideOnFocusLoss = undefined;
4837
+ }
4838
+
4830
4839
  if (this.isPopoverVisible) {
4831
4840
  if (!this.isBibFullscreen) {
4832
4841
  if (this.desktopModal) {
@@ -4902,6 +4911,14 @@ class AuroDropdown extends AuroElement {
4902
4911
  };
4903
4912
  this.addEventListener('keydown', this._bibTabHandler);
4904
4913
 
4914
+ // Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
4915
+ // desktopModal trap owns focus management. Without this, the very
4916
+ // first focus move into the bib (from the RAF below) triggers
4917
+ // handleFocusLoss → hideBib, tearing down the trap before the
4918
+ // user can press Tab.
4919
+ this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
4920
+ this.noHideOnThisFocusLoss = true;
4921
+
4905
4922
  // Move initial focus into the bib content, matching FocusTrap behavior
4906
4923
  requestAnimationFrame(() => {
4907
4924
  const focusables = getFocusableElements(this.bibContent);
@@ -410,6 +410,7 @@ export class AuroDropdown extends AuroElement {
410
410
  * @private
411
411
  */
412
412
  private updateFocusTrap;
413
+ _priorNoHideOnFocusLoss: any;
413
414
  /**
414
415
  * Returns the chain of active (focused) elements through shadow roots.
415
416
  * @private
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202606082040';
3877
+ var formkitVersion = '202606100232';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4732,6 +4732,15 @@ class AuroDropdown extends AuroElement {
4732
4732
  this.focusTrap = undefined;
4733
4733
  }
4734
4734
 
4735
+ // Restore any focus-loss suppression we installed for a prior trap state.
4736
+ // The desktopModal trap moves focus into the bib via RAF, which would
4737
+ // otherwise trip AuroFloatingUI.handleFocusLoss (a popover-top-layer
4738
+ // timing issue makes its :focus-within guard miss the focused button).
4739
+ if (this._priorNoHideOnFocusLoss !== undefined) {
4740
+ this.noHideOnThisFocusLoss = this._priorNoHideOnFocusLoss;
4741
+ this._priorNoHideOnFocusLoss = undefined;
4742
+ }
4743
+
4735
4744
  if (this.isPopoverVisible) {
4736
4745
  if (!this.isBibFullscreen) {
4737
4746
  if (this.desktopModal) {
@@ -4807,6 +4816,14 @@ class AuroDropdown extends AuroElement {
4807
4816
  };
4808
4817
  this.addEventListener('keydown', this._bibTabHandler);
4809
4818
 
4819
+ // Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
4820
+ // desktopModal trap owns focus management. Without this, the very
4821
+ // first focus move into the bib (from the RAF below) triggers
4822
+ // handleFocusLoss → hideBib, tearing down the trap before the
4823
+ // user can press Tab.
4824
+ this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
4825
+ this.noHideOnThisFocusLoss = true;
4826
+
4810
4827
  // Move initial focus into the bib content, matching FocusTrap behavior
4811
4828
  requestAnimationFrame(() => {
4812
4829
  const focusables = getFocusableElements(this.bibContent);
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202606082040';
3877
+ var formkitVersion = '202606100232';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4732,6 +4732,15 @@ class AuroDropdown extends AuroElement {
4732
4732
  this.focusTrap = undefined;
4733
4733
  }
4734
4734
 
4735
+ // Restore any focus-loss suppression we installed for a prior trap state.
4736
+ // The desktopModal trap moves focus into the bib via RAF, which would
4737
+ // otherwise trip AuroFloatingUI.handleFocusLoss (a popover-top-layer
4738
+ // timing issue makes its :focus-within guard miss the focused button).
4739
+ if (this._priorNoHideOnFocusLoss !== undefined) {
4740
+ this.noHideOnThisFocusLoss = this._priorNoHideOnFocusLoss;
4741
+ this._priorNoHideOnFocusLoss = undefined;
4742
+ }
4743
+
4735
4744
  if (this.isPopoverVisible) {
4736
4745
  if (!this.isBibFullscreen) {
4737
4746
  if (this.desktopModal) {
@@ -4807,6 +4816,14 @@ class AuroDropdown extends AuroElement {
4807
4816
  };
4808
4817
  this.addEventListener('keydown', this._bibTabHandler);
4809
4818
 
4819
+ // Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
4820
+ // desktopModal trap owns focus management. Without this, the very
4821
+ // first focus move into the bib (from the RAF below) triggers
4822
+ // handleFocusLoss → hideBib, tearing down the trap before the
4823
+ // user can press Tab.
4824
+ this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
4825
+ this.noHideOnThisFocusLoss = true;
4826
+
4810
4827
  // Move initial focus into the bib content, matching FocusTrap behavior
4811
4828
  requestAnimationFrame(() => {
4812
4829
  const focusables = getFocusableElements(this.bibContent);