@aurodesignsystem-dev/auro-formkit 0.0.0-pr1550.2 → 0.0.0-pr1551.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.
- package/components/checkbox/demo/customize.min.js +1 -1
- package/components/checkbox/demo/getting-started.min.js +1 -1
- package/components/checkbox/demo/index.min.js +1 -1
- package/components/checkbox/dist/index.js +1 -1
- package/components/checkbox/dist/registered.js +1 -1
- package/components/combobox/demo/customize.min.js +46 -207
- package/components/combobox/demo/getting-started.min.js +46 -207
- package/components/combobox/demo/index.min.js +46 -207
- package/components/combobox/dist/index.js +46 -207
- package/components/combobox/dist/registered.js +46 -207
- package/components/counter/demo/customize.min.js +45 -206
- package/components/counter/demo/index.min.js +45 -206
- package/components/counter/dist/index.js +45 -206
- package/components/counter/dist/registered.js +45 -206
- package/components/datepicker/demo/customize.min.js +46 -207
- package/components/datepicker/demo/index.min.js +46 -207
- package/components/datepicker/dist/index.js +46 -207
- package/components/datepicker/dist/registered.js +46 -207
- package/components/dropdown/demo/customize.min.js +44 -205
- package/components/dropdown/demo/getting-started.min.js +44 -205
- package/components/dropdown/demo/index.min.js +44 -205
- package/components/dropdown/dist/index.js +44 -205
- package/components/dropdown/dist/registered.js +44 -205
- package/components/form/demo/customize.min.js +185 -829
- package/components/form/demo/getting-started.min.js +185 -829
- package/components/form/demo/index.min.js +185 -829
- package/components/form/demo/registerDemoDeps.min.js +185 -829
- package/components/input/demo/customize.min.js +1 -1
- package/components/input/demo/getting-started.min.js +1 -1
- package/components/input/demo/index.min.js +1 -1
- package/components/input/dist/index.js +1 -1
- package/components/input/dist/registered.js +1 -1
- package/components/radio/demo/customize.min.js +1 -1
- package/components/radio/demo/getting-started.min.js +1 -1
- package/components/radio/demo/index.min.js +1 -1
- package/components/radio/dist/index.js +1 -1
- package/components/radio/dist/registered.js +1 -1
- package/components/select/demo/customize.min.js +45 -206
- package/components/select/demo/getting-started.min.js +45 -206
- package/components/select/demo/index.min.js +45 -206
- package/components/select/dist/index.js +45 -206
- package/components/select/dist/registered.js +45 -206
- package/package.json +2 -2
|
@@ -13379,7 +13379,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$3 {
|
|
|
13379
13379
|
}
|
|
13380
13380
|
};
|
|
13381
13381
|
|
|
13382
|
-
var formkitVersion$8 = '
|
|
13382
|
+
var formkitVersion$8 = '202607100029';
|
|
13383
13383
|
|
|
13384
13384
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
13385
13385
|
// See LICENSE in the project root for license information.
|
|
@@ -27776,7 +27776,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$3 {
|
|
|
27776
27776
|
}
|
|
27777
27777
|
};
|
|
27778
27778
|
|
|
27779
|
-
var formkitVersion$2$1 = '
|
|
27779
|
+
var formkitVersion$2$1 = '202607100029';
|
|
27780
27780
|
|
|
27781
27781
|
let l$1$2 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$2`${s$3(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1$2 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1$2 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1$3=i$6`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
|
|
27782
27782
|
`,u$4$2=i$6`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
|
|
@@ -32053,12 +32053,40 @@ let AuroFloatingUI$3 = class AuroFloatingUI {
|
|
|
32053
32053
|
return;
|
|
32054
32054
|
}
|
|
32055
32055
|
|
|
32056
|
+
// Chrome-specific: during popover top-layer promotion after a click on a
|
|
32057
|
+
// slotted focusable, :focus-within can briefly evaluate false while the
|
|
32058
|
+
// active element is still structurally inside the trigger/bib. Fall back
|
|
32059
|
+
// to a shadow-piercing ancestry walk from the deep active element before
|
|
32060
|
+
// treating this as a real focus loss.
|
|
32061
|
+
try {
|
|
32062
|
+
let active = document.activeElement;
|
|
32063
|
+
while (active && active.shadowRoot && active.shadowRoot.activeElement) {
|
|
32064
|
+
active = active.shadowRoot.activeElement;
|
|
32065
|
+
}
|
|
32066
|
+
const targets = [element, element.trigger, element.bib].filter(Boolean);
|
|
32067
|
+
let node = active;
|
|
32068
|
+
while (node) {
|
|
32069
|
+
if (targets.includes(node)) {
|
|
32070
|
+
return;
|
|
32071
|
+
}
|
|
32072
|
+
node =
|
|
32073
|
+
node.parentElement ||
|
|
32074
|
+
(node.getRootNode && node.getRootNode().host) ||
|
|
32075
|
+
null;
|
|
32076
|
+
}
|
|
32077
|
+
} catch (e) {
|
|
32078
|
+
// Defensive: fall through to the existing close path if traversal fails.
|
|
32079
|
+
}
|
|
32080
|
+
|
|
32056
32081
|
// if fullscreen bib is in fullscreen mode, do not close
|
|
32057
32082
|
if (element.bib.hasAttribute("isfullscreen")) {
|
|
32058
32083
|
return;
|
|
32059
32084
|
}
|
|
32060
32085
|
|
|
32061
|
-
|
|
32086
|
+
// eventType "focusloss" distinguishes a Tab/click-driven close from an
|
|
32087
|
+
// Escape keydown close. Consumers use this to decide whether to restore
|
|
32088
|
+
// focus to the trigger (Escape) or let it advance naturally (Tab).
|
|
32089
|
+
this.hideBib("focusloss");
|
|
32062
32090
|
}
|
|
32063
32091
|
|
|
32064
32092
|
setupHideHandlers() {
|
|
@@ -32728,199 +32756,6 @@ function getFocusableElements$4(container) {
|
|
|
32728
32756
|
return tabIndexedUniqueElements;
|
|
32729
32757
|
}
|
|
32730
32758
|
|
|
32731
|
-
/**
|
|
32732
|
-
* FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
|
|
32733
|
-
* It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
|
|
32734
|
-
*/
|
|
32735
|
-
let FocusTrap$3 = class FocusTrap {
|
|
32736
|
-
/**
|
|
32737
|
-
* Creates a new FocusTrap instance for the given container element.
|
|
32738
|
-
* Initializes event listeners and prepares the container for focus management.
|
|
32739
|
-
*
|
|
32740
|
-
* @param {HTMLElement} container The DOM element to trap focus within.
|
|
32741
|
-
* @param {boolean} [controlTabOrder=false] If true enables manual control of the tab order by the FocusTrap.
|
|
32742
|
-
* @throws {Error} If the provided container is not a valid HTMLElement.
|
|
32743
|
-
*/
|
|
32744
|
-
constructor(container, controlTabOrder = false) {
|
|
32745
|
-
if (!container || !(container instanceof HTMLElement)) {
|
|
32746
|
-
throw new Error("FocusTrap requires a valid HTMLElement.");
|
|
32747
|
-
}
|
|
32748
|
-
|
|
32749
|
-
this.container = container;
|
|
32750
|
-
this.tabDirection = "forward"; // or 'backward';
|
|
32751
|
-
this.controlTabOrder = controlTabOrder;
|
|
32752
|
-
|
|
32753
|
-
this._init();
|
|
32754
|
-
}
|
|
32755
|
-
|
|
32756
|
-
/**
|
|
32757
|
-
* Initializes the focus trap by setting up event listeners and attributes on the container.
|
|
32758
|
-
* Prepares the container for focus management, including support for shadow DOM and inert attributes.
|
|
32759
|
-
*
|
|
32760
|
-
* @private
|
|
32761
|
-
*/
|
|
32762
|
-
_init() {
|
|
32763
|
-
// Add inert attribute to prevent focusing programmatically as well (if supported)
|
|
32764
|
-
if ("inert" in HTMLElement.prototype) {
|
|
32765
|
-
this.container.inert = false; // Ensure the container isn't inert
|
|
32766
|
-
this.container.setAttribute("data-focus-trap-container", true); // Mark for identification
|
|
32767
|
-
}
|
|
32768
|
-
|
|
32769
|
-
// Track tab direction
|
|
32770
|
-
this.container.addEventListener("keydown", this._onKeydown);
|
|
32771
|
-
}
|
|
32772
|
-
|
|
32773
|
-
/**
|
|
32774
|
-
* Gets an array of currently active (focused) elements in the document and shadow DOM.
|
|
32775
|
-
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
32776
|
-
* @private
|
|
32777
|
-
*/
|
|
32778
|
-
_getActiveElements() {
|
|
32779
|
-
// Get the active element(s) in the document and shadow root
|
|
32780
|
-
// This will include the active element in the shadow DOM if it exists
|
|
32781
|
-
// Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
|
|
32782
|
-
let { activeElement } = document;
|
|
32783
|
-
const actives = [activeElement];
|
|
32784
|
-
while (activeElement?.shadowRoot?.activeElement) {
|
|
32785
|
-
actives.push(activeElement.shadowRoot.activeElement);
|
|
32786
|
-
activeElement = activeElement.shadowRoot.activeElement;
|
|
32787
|
-
}
|
|
32788
|
-
return actives;
|
|
32789
|
-
}
|
|
32790
|
-
|
|
32791
|
-
/**
|
|
32792
|
-
* Gets the next focus index based on the current index and focusable elements.
|
|
32793
|
-
* @param {number} currentIndex The current index of the focused element.
|
|
32794
|
-
* @param {Array<HTMLElement>} focusables The array of focusable elements.
|
|
32795
|
-
* @returns {number|null} The next focus index or null if not determined.
|
|
32796
|
-
*/
|
|
32797
|
-
_getNextFocusIndex(currentIndex, focusables, actives) {
|
|
32798
|
-
if (this.controlTabOrder) {
|
|
32799
|
-
// Calculate the new index based on the current index and tab direction
|
|
32800
|
-
let newFocusIndex =
|
|
32801
|
-
currentIndex + (this.tabDirection === "forward" ? 1 : -1);
|
|
32802
|
-
|
|
32803
|
-
// Wrap-around logic
|
|
32804
|
-
if (newFocusIndex < 0) newFocusIndex = focusables.length - 1;
|
|
32805
|
-
if (newFocusIndex >= focusables.length) newFocusIndex = 0;
|
|
32806
|
-
|
|
32807
|
-
// Early return with the new index
|
|
32808
|
-
return newFocusIndex;
|
|
32809
|
-
}
|
|
32810
|
-
|
|
32811
|
-
// Determine if we need to wrap
|
|
32812
|
-
const atFirst =
|
|
32813
|
-
actives.includes(focusables[0]) || actives.includes(this.container);
|
|
32814
|
-
const atLast = actives.includes(focusables[focusables.length - 1]);
|
|
32815
|
-
|
|
32816
|
-
// Only wrap if at the ends
|
|
32817
|
-
if (this.tabDirection === "backward" && atFirst) {
|
|
32818
|
-
return focusables.length - 1;
|
|
32819
|
-
}
|
|
32820
|
-
|
|
32821
|
-
if (this.tabDirection === "forward" && atLast) {
|
|
32822
|
-
return 0;
|
|
32823
|
-
}
|
|
32824
|
-
|
|
32825
|
-
// No wrap, so don't change focus, return early
|
|
32826
|
-
return null;
|
|
32827
|
-
}
|
|
32828
|
-
|
|
32829
|
-
/**
|
|
32830
|
-
* Handles the Tab key press event to manage focus within the container.
|
|
32831
|
-
* @param {KeyboardEvent} e The keyboard event triggered by the user.
|
|
32832
|
-
* @returns {void}
|
|
32833
|
-
*/
|
|
32834
|
-
_handleTabKey(e) {
|
|
32835
|
-
// Update the focusable elements
|
|
32836
|
-
const focusables = this._getFocusableElements();
|
|
32837
|
-
|
|
32838
|
-
// If there are no focusable elements, exit
|
|
32839
|
-
if (!focusables.length) return;
|
|
32840
|
-
|
|
32841
|
-
// Set the tab direction based on the key pressed
|
|
32842
|
-
this.tabDirection = e.shiftKey ? "backward" : "forward";
|
|
32843
|
-
|
|
32844
|
-
// Get the active elements that are currently focused
|
|
32845
|
-
const actives = this._getActiveElements();
|
|
32846
|
-
|
|
32847
|
-
// If we're at either end of the focusable elements, wrap around to the other end
|
|
32848
|
-
let focusIndex = focusables.findIndex((el) => actives.includes(el));
|
|
32849
|
-
|
|
32850
|
-
// Fallback if we have no focused element
|
|
32851
|
-
if (focusIndex === -1) focusIndex = 0;
|
|
32852
|
-
|
|
32853
|
-
// Get the next focus index based on the current focus index, tab direction, and controlTabOrder setting
|
|
32854
|
-
// Is null if no new focus index is determined
|
|
32855
|
-
const newFocusIndex = this._getNextFocusIndex(
|
|
32856
|
-
focusIndex,
|
|
32857
|
-
focusables,
|
|
32858
|
-
actives,
|
|
32859
|
-
);
|
|
32860
|
-
|
|
32861
|
-
// If we have a new focus index, set focus to that element
|
|
32862
|
-
if (newFocusIndex !== null) {
|
|
32863
|
-
e.preventDefault();
|
|
32864
|
-
focusables[newFocusIndex].focus();
|
|
32865
|
-
}
|
|
32866
|
-
}
|
|
32867
|
-
|
|
32868
|
-
/**
|
|
32869
|
-
* Catches the keydown event
|
|
32870
|
-
* @param {KeyboardEvent} e The keyboard event triggered by user interaction.
|
|
32871
|
-
* @private
|
|
32872
|
-
*/
|
|
32873
|
-
_onKeydown = (e) => {
|
|
32874
|
-
// Handle tab
|
|
32875
|
-
if (e.key === "Tab") this._handleTabKey(e);
|
|
32876
|
-
};
|
|
32877
|
-
|
|
32878
|
-
/**
|
|
32879
|
-
* Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
|
|
32880
|
-
* Returns a unique, ordered array of elements that can receive focus.
|
|
32881
|
-
*
|
|
32882
|
-
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
32883
|
-
* @private
|
|
32884
|
-
*/
|
|
32885
|
-
_getFocusableElements() {
|
|
32886
|
-
// Use the imported utility function to get focusable elements
|
|
32887
|
-
const elements = getFocusableElements$4(this.container);
|
|
32888
|
-
|
|
32889
|
-
// Return the elements found
|
|
32890
|
-
return elements;
|
|
32891
|
-
}
|
|
32892
|
-
|
|
32893
|
-
/**
|
|
32894
|
-
* Moves focus to the first focusable element within the container.
|
|
32895
|
-
* Useful for setting initial focus when activating the focus trap.
|
|
32896
|
-
*/
|
|
32897
|
-
focusFirstElement() {
|
|
32898
|
-
const focusables = this._getFocusableElements();
|
|
32899
|
-
if (focusables.length) focusables[0].focus();
|
|
32900
|
-
}
|
|
32901
|
-
|
|
32902
|
-
/**
|
|
32903
|
-
* Moves focus to the last focusable element within the container.
|
|
32904
|
-
* Useful for setting focus when deactivating or cycling focus in reverse.
|
|
32905
|
-
*/
|
|
32906
|
-
focusLastElement() {
|
|
32907
|
-
const focusables = this._getFocusableElements();
|
|
32908
|
-
if (focusables.length) focusables[focusables.length - 1].focus();
|
|
32909
|
-
}
|
|
32910
|
-
|
|
32911
|
-
/**
|
|
32912
|
-
* Removes event listeners and attributes added by the focus trap.
|
|
32913
|
-
* Call this method to clean up when the focus trap is no longer needed.
|
|
32914
|
-
*/
|
|
32915
|
-
disconnect() {
|
|
32916
|
-
if (this.container.hasAttribute("data-focus-trap-container")) {
|
|
32917
|
-
this.container.removeAttribute("data-focus-trap-container");
|
|
32918
|
-
}
|
|
32919
|
-
|
|
32920
|
-
this.container.removeEventListener("keydown", this._onKeydown);
|
|
32921
|
-
}
|
|
32922
|
-
};
|
|
32923
|
-
|
|
32924
32759
|
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
32925
32760
|
// See LICENSE in the project root for license information.
|
|
32926
32761
|
|
|
@@ -33418,7 +33253,7 @@ let AuroDropdownBib$3 = class AuroDropdownBib extends i$3 {
|
|
|
33418
33253
|
classes[`shape-${this.shape}`] = true;
|
|
33419
33254
|
|
|
33420
33255
|
return u$c`
|
|
33421
|
-
<dialog class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
|
|
33256
|
+
<dialog tabindex="-1" class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
|
|
33422
33257
|
${this.dialogLabel ? u$c`<span id="dialogLabel" class="util_displayHiddenVisually">${this.dialogLabel}</span>` : ''}
|
|
33423
33258
|
<slot></slot>
|
|
33424
33259
|
<span id="srAnnouncement" class="util_displayHiddenVisually" aria-live="polite" role="status"></span>
|
|
@@ -33669,7 +33504,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$3 {
|
|
|
33669
33504
|
}
|
|
33670
33505
|
};
|
|
33671
33506
|
|
|
33672
|
-
var formkitVersion$1$3 = '
|
|
33507
|
+
var formkitVersion$1$3 = '202607100029';
|
|
33673
33508
|
|
|
33674
33509
|
let AuroElement$2$2 = class AuroElement extends i$3 {
|
|
33675
33510
|
static get properties() {
|
|
@@ -34423,7 +34258,10 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
|
|
|
34423
34258
|
}
|
|
34424
34259
|
|
|
34425
34260
|
|
|
34426
|
-
|
|
34261
|
+
// On Tab-driven close (eventType "focusloss"), let focus advance naturally
|
|
34262
|
+
// — restoring to the trigger would trap the user on this dropdown, forcing
|
|
34263
|
+
// an extra Tab to move on. Escape and outside-click still restore.
|
|
34264
|
+
if (!this.isPopoverVisible && eventType !== "focusloss") {
|
|
34427
34265
|
// wait til the bib gets fully closed and rendered
|
|
34428
34266
|
setTimeout(() => {
|
|
34429
34267
|
// Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
|
|
@@ -34653,15 +34491,16 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
|
|
|
34653
34491
|
}
|
|
34654
34492
|
});
|
|
34655
34493
|
} else {
|
|
34656
|
-
// Normal desktop:
|
|
34657
|
-
//
|
|
34658
|
-
//
|
|
34659
|
-
//
|
|
34660
|
-
//
|
|
34661
|
-
|
|
34494
|
+
// Normal desktop (non-modal): move initial focus into the bib but
|
|
34495
|
+
// don't trap Tab. Tab should exit the bib and let the floater's
|
|
34496
|
+
// handleFocusLoss close it, matching native <select>/<details>
|
|
34497
|
+
// behavior. Deferred one frame because Floating UI positions the
|
|
34498
|
+
// popover asynchronously — a synchronous focus() would target
|
|
34499
|
+
// zero-dimension elements and be silently ignored.
|
|
34662
34500
|
requestAnimationFrame(() => {
|
|
34663
|
-
|
|
34664
|
-
|
|
34501
|
+
const focusables = getFocusableElements$4(this.bibContent);
|
|
34502
|
+
if (focusables.length) {
|
|
34503
|
+
focusables[0].focus();
|
|
34665
34504
|
}
|
|
34666
34505
|
});
|
|
34667
34506
|
}
|
|
@@ -47287,7 +47126,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$3 {
|
|
|
47287
47126
|
}
|
|
47288
47127
|
};
|
|
47289
47128
|
|
|
47290
|
-
var formkitVersion$7 = '
|
|
47129
|
+
var formkitVersion$7 = '202607100029';
|
|
47291
47130
|
|
|
47292
47131
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
47293
47132
|
// See LICENSE in the project root for license information.
|
|
@@ -52228,7 +52067,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$3 {
|
|
|
52228
52067
|
}
|
|
52229
52068
|
};
|
|
52230
52069
|
|
|
52231
|
-
var formkitVersion$1$2 = '
|
|
52070
|
+
var formkitVersion$1$2 = '202607100029';
|
|
52232
52071
|
|
|
52233
52072
|
// Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
|
|
52234
52073
|
// See LICENSE in the project root for license information.
|
|
@@ -54940,12 +54779,40 @@ let AuroFloatingUI$2 = class AuroFloatingUI {
|
|
|
54940
54779
|
return;
|
|
54941
54780
|
}
|
|
54942
54781
|
|
|
54782
|
+
// Chrome-specific: during popover top-layer promotion after a click on a
|
|
54783
|
+
// slotted focusable, :focus-within can briefly evaluate false while the
|
|
54784
|
+
// active element is still structurally inside the trigger/bib. Fall back
|
|
54785
|
+
// to a shadow-piercing ancestry walk from the deep active element before
|
|
54786
|
+
// treating this as a real focus loss.
|
|
54787
|
+
try {
|
|
54788
|
+
let active = document.activeElement;
|
|
54789
|
+
while (active && active.shadowRoot && active.shadowRoot.activeElement) {
|
|
54790
|
+
active = active.shadowRoot.activeElement;
|
|
54791
|
+
}
|
|
54792
|
+
const targets = [element, element.trigger, element.bib].filter(Boolean);
|
|
54793
|
+
let node = active;
|
|
54794
|
+
while (node) {
|
|
54795
|
+
if (targets.includes(node)) {
|
|
54796
|
+
return;
|
|
54797
|
+
}
|
|
54798
|
+
node =
|
|
54799
|
+
node.parentElement ||
|
|
54800
|
+
(node.getRootNode && node.getRootNode().host) ||
|
|
54801
|
+
null;
|
|
54802
|
+
}
|
|
54803
|
+
} catch (e) {
|
|
54804
|
+
// Defensive: fall through to the existing close path if traversal fails.
|
|
54805
|
+
}
|
|
54806
|
+
|
|
54943
54807
|
// if fullscreen bib is in fullscreen mode, do not close
|
|
54944
54808
|
if (element.bib.hasAttribute("isfullscreen")) {
|
|
54945
54809
|
return;
|
|
54946
54810
|
}
|
|
54947
54811
|
|
|
54948
|
-
|
|
54812
|
+
// eventType "focusloss" distinguishes a Tab/click-driven close from an
|
|
54813
|
+
// Escape keydown close. Consumers use this to decide whether to restore
|
|
54814
|
+
// focus to the trigger (Escape) or let it advance naturally (Tab).
|
|
54815
|
+
this.hideBib("focusloss");
|
|
54949
54816
|
}
|
|
54950
54817
|
|
|
54951
54818
|
setupHideHandlers() {
|
|
@@ -55615,199 +55482,6 @@ function getFocusableElements$3(container) {
|
|
|
55615
55482
|
return tabIndexedUniqueElements;
|
|
55616
55483
|
}
|
|
55617
55484
|
|
|
55618
|
-
/**
|
|
55619
|
-
* FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
|
|
55620
|
-
* It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
|
|
55621
|
-
*/
|
|
55622
|
-
let FocusTrap$2 = class FocusTrap {
|
|
55623
|
-
/**
|
|
55624
|
-
* Creates a new FocusTrap instance for the given container element.
|
|
55625
|
-
* Initializes event listeners and prepares the container for focus management.
|
|
55626
|
-
*
|
|
55627
|
-
* @param {HTMLElement} container The DOM element to trap focus within.
|
|
55628
|
-
* @param {boolean} [controlTabOrder=false] If true enables manual control of the tab order by the FocusTrap.
|
|
55629
|
-
* @throws {Error} If the provided container is not a valid HTMLElement.
|
|
55630
|
-
*/
|
|
55631
|
-
constructor(container, controlTabOrder = false) {
|
|
55632
|
-
if (!container || !(container instanceof HTMLElement)) {
|
|
55633
|
-
throw new Error("FocusTrap requires a valid HTMLElement.");
|
|
55634
|
-
}
|
|
55635
|
-
|
|
55636
|
-
this.container = container;
|
|
55637
|
-
this.tabDirection = "forward"; // or 'backward';
|
|
55638
|
-
this.controlTabOrder = controlTabOrder;
|
|
55639
|
-
|
|
55640
|
-
this._init();
|
|
55641
|
-
}
|
|
55642
|
-
|
|
55643
|
-
/**
|
|
55644
|
-
* Initializes the focus trap by setting up event listeners and attributes on the container.
|
|
55645
|
-
* Prepares the container for focus management, including support for shadow DOM and inert attributes.
|
|
55646
|
-
*
|
|
55647
|
-
* @private
|
|
55648
|
-
*/
|
|
55649
|
-
_init() {
|
|
55650
|
-
// Add inert attribute to prevent focusing programmatically as well (if supported)
|
|
55651
|
-
if ("inert" in HTMLElement.prototype) {
|
|
55652
|
-
this.container.inert = false; // Ensure the container isn't inert
|
|
55653
|
-
this.container.setAttribute("data-focus-trap-container", true); // Mark for identification
|
|
55654
|
-
}
|
|
55655
|
-
|
|
55656
|
-
// Track tab direction
|
|
55657
|
-
this.container.addEventListener("keydown", this._onKeydown);
|
|
55658
|
-
}
|
|
55659
|
-
|
|
55660
|
-
/**
|
|
55661
|
-
* Gets an array of currently active (focused) elements in the document and shadow DOM.
|
|
55662
|
-
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
55663
|
-
* @private
|
|
55664
|
-
*/
|
|
55665
|
-
_getActiveElements() {
|
|
55666
|
-
// Get the active element(s) in the document and shadow root
|
|
55667
|
-
// This will include the active element in the shadow DOM if it exists
|
|
55668
|
-
// Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
|
|
55669
|
-
let { activeElement } = document;
|
|
55670
|
-
const actives = [activeElement];
|
|
55671
|
-
while (activeElement?.shadowRoot?.activeElement) {
|
|
55672
|
-
actives.push(activeElement.shadowRoot.activeElement);
|
|
55673
|
-
activeElement = activeElement.shadowRoot.activeElement;
|
|
55674
|
-
}
|
|
55675
|
-
return actives;
|
|
55676
|
-
}
|
|
55677
|
-
|
|
55678
|
-
/**
|
|
55679
|
-
* Gets the next focus index based on the current index and focusable elements.
|
|
55680
|
-
* @param {number} currentIndex The current index of the focused element.
|
|
55681
|
-
* @param {Array<HTMLElement>} focusables The array of focusable elements.
|
|
55682
|
-
* @returns {number|null} The next focus index or null if not determined.
|
|
55683
|
-
*/
|
|
55684
|
-
_getNextFocusIndex(currentIndex, focusables, actives) {
|
|
55685
|
-
if (this.controlTabOrder) {
|
|
55686
|
-
// Calculate the new index based on the current index and tab direction
|
|
55687
|
-
let newFocusIndex =
|
|
55688
|
-
currentIndex + (this.tabDirection === "forward" ? 1 : -1);
|
|
55689
|
-
|
|
55690
|
-
// Wrap-around logic
|
|
55691
|
-
if (newFocusIndex < 0) newFocusIndex = focusables.length - 1;
|
|
55692
|
-
if (newFocusIndex >= focusables.length) newFocusIndex = 0;
|
|
55693
|
-
|
|
55694
|
-
// Early return with the new index
|
|
55695
|
-
return newFocusIndex;
|
|
55696
|
-
}
|
|
55697
|
-
|
|
55698
|
-
// Determine if we need to wrap
|
|
55699
|
-
const atFirst =
|
|
55700
|
-
actives.includes(focusables[0]) || actives.includes(this.container);
|
|
55701
|
-
const atLast = actives.includes(focusables[focusables.length - 1]);
|
|
55702
|
-
|
|
55703
|
-
// Only wrap if at the ends
|
|
55704
|
-
if (this.tabDirection === "backward" && atFirst) {
|
|
55705
|
-
return focusables.length - 1;
|
|
55706
|
-
}
|
|
55707
|
-
|
|
55708
|
-
if (this.tabDirection === "forward" && atLast) {
|
|
55709
|
-
return 0;
|
|
55710
|
-
}
|
|
55711
|
-
|
|
55712
|
-
// No wrap, so don't change focus, return early
|
|
55713
|
-
return null;
|
|
55714
|
-
}
|
|
55715
|
-
|
|
55716
|
-
/**
|
|
55717
|
-
* Handles the Tab key press event to manage focus within the container.
|
|
55718
|
-
* @param {KeyboardEvent} e The keyboard event triggered by the user.
|
|
55719
|
-
* @returns {void}
|
|
55720
|
-
*/
|
|
55721
|
-
_handleTabKey(e) {
|
|
55722
|
-
// Update the focusable elements
|
|
55723
|
-
const focusables = this._getFocusableElements();
|
|
55724
|
-
|
|
55725
|
-
// If there are no focusable elements, exit
|
|
55726
|
-
if (!focusables.length) return;
|
|
55727
|
-
|
|
55728
|
-
// Set the tab direction based on the key pressed
|
|
55729
|
-
this.tabDirection = e.shiftKey ? "backward" : "forward";
|
|
55730
|
-
|
|
55731
|
-
// Get the active elements that are currently focused
|
|
55732
|
-
const actives = this._getActiveElements();
|
|
55733
|
-
|
|
55734
|
-
// If we're at either end of the focusable elements, wrap around to the other end
|
|
55735
|
-
let focusIndex = focusables.findIndex((el) => actives.includes(el));
|
|
55736
|
-
|
|
55737
|
-
// Fallback if we have no focused element
|
|
55738
|
-
if (focusIndex === -1) focusIndex = 0;
|
|
55739
|
-
|
|
55740
|
-
// Get the next focus index based on the current focus index, tab direction, and controlTabOrder setting
|
|
55741
|
-
// Is null if no new focus index is determined
|
|
55742
|
-
const newFocusIndex = this._getNextFocusIndex(
|
|
55743
|
-
focusIndex,
|
|
55744
|
-
focusables,
|
|
55745
|
-
actives,
|
|
55746
|
-
);
|
|
55747
|
-
|
|
55748
|
-
// If we have a new focus index, set focus to that element
|
|
55749
|
-
if (newFocusIndex !== null) {
|
|
55750
|
-
e.preventDefault();
|
|
55751
|
-
focusables[newFocusIndex].focus();
|
|
55752
|
-
}
|
|
55753
|
-
}
|
|
55754
|
-
|
|
55755
|
-
/**
|
|
55756
|
-
* Catches the keydown event
|
|
55757
|
-
* @param {KeyboardEvent} e The keyboard event triggered by user interaction.
|
|
55758
|
-
* @private
|
|
55759
|
-
*/
|
|
55760
|
-
_onKeydown = (e) => {
|
|
55761
|
-
// Handle tab
|
|
55762
|
-
if (e.key === "Tab") this._handleTabKey(e);
|
|
55763
|
-
};
|
|
55764
|
-
|
|
55765
|
-
/**
|
|
55766
|
-
* Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
|
|
55767
|
-
* Returns a unique, ordered array of elements that can receive focus.
|
|
55768
|
-
*
|
|
55769
|
-
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
55770
|
-
* @private
|
|
55771
|
-
*/
|
|
55772
|
-
_getFocusableElements() {
|
|
55773
|
-
// Use the imported utility function to get focusable elements
|
|
55774
|
-
const elements = getFocusableElements$3(this.container);
|
|
55775
|
-
|
|
55776
|
-
// Return the elements found
|
|
55777
|
-
return elements;
|
|
55778
|
-
}
|
|
55779
|
-
|
|
55780
|
-
/**
|
|
55781
|
-
* Moves focus to the first focusable element within the container.
|
|
55782
|
-
* Useful for setting initial focus when activating the focus trap.
|
|
55783
|
-
*/
|
|
55784
|
-
focusFirstElement() {
|
|
55785
|
-
const focusables = this._getFocusableElements();
|
|
55786
|
-
if (focusables.length) focusables[0].focus();
|
|
55787
|
-
}
|
|
55788
|
-
|
|
55789
|
-
/**
|
|
55790
|
-
* Moves focus to the last focusable element within the container.
|
|
55791
|
-
* Useful for setting focus when deactivating or cycling focus in reverse.
|
|
55792
|
-
*/
|
|
55793
|
-
focusLastElement() {
|
|
55794
|
-
const focusables = this._getFocusableElements();
|
|
55795
|
-
if (focusables.length) focusables[focusables.length - 1].focus();
|
|
55796
|
-
}
|
|
55797
|
-
|
|
55798
|
-
/**
|
|
55799
|
-
* Removes event listeners and attributes added by the focus trap.
|
|
55800
|
-
* Call this method to clean up when the focus trap is no longer needed.
|
|
55801
|
-
*/
|
|
55802
|
-
disconnect() {
|
|
55803
|
-
if (this.container.hasAttribute("data-focus-trap-container")) {
|
|
55804
|
-
this.container.removeAttribute("data-focus-trap-container");
|
|
55805
|
-
}
|
|
55806
|
-
|
|
55807
|
-
this.container.removeEventListener("keydown", this._onKeydown);
|
|
55808
|
-
}
|
|
55809
|
-
};
|
|
55810
|
-
|
|
55811
55485
|
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
55812
55486
|
// See LICENSE in the project root for license information.
|
|
55813
55487
|
|
|
@@ -56305,7 +55979,7 @@ let AuroDropdownBib$2 = class AuroDropdownBib extends i$3 {
|
|
|
56305
55979
|
classes[`shape-${this.shape}`] = true;
|
|
56306
55980
|
|
|
56307
55981
|
return u$c`
|
|
56308
|
-
<dialog class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
|
|
55982
|
+
<dialog tabindex="-1" class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
|
|
56309
55983
|
${this.dialogLabel ? u$c`<span id="dialogLabel" class="util_displayHiddenVisually">${this.dialogLabel}</span>` : ''}
|
|
56310
55984
|
<slot></slot>
|
|
56311
55985
|
<span id="srAnnouncement" class="util_displayHiddenVisually" aria-live="polite" role="status"></span>
|
|
@@ -56556,7 +56230,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$3 {
|
|
|
56556
56230
|
}
|
|
56557
56231
|
};
|
|
56558
56232
|
|
|
56559
|
-
var formkitVersion$6 = '
|
|
56233
|
+
var formkitVersion$6 = '202607100029';
|
|
56560
56234
|
|
|
56561
56235
|
let AuroElement$1$2 = class AuroElement extends i$3 {
|
|
56562
56236
|
static get properties() {
|
|
@@ -57310,7 +56984,10 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$1$2 {
|
|
|
57310
56984
|
}
|
|
57311
56985
|
|
|
57312
56986
|
|
|
57313
|
-
|
|
56987
|
+
// On Tab-driven close (eventType "focusloss"), let focus advance naturally
|
|
56988
|
+
// — restoring to the trigger would trap the user on this dropdown, forcing
|
|
56989
|
+
// an extra Tab to move on. Escape and outside-click still restore.
|
|
56990
|
+
if (!this.isPopoverVisible && eventType !== "focusloss") {
|
|
57314
56991
|
// wait til the bib gets fully closed and rendered
|
|
57315
56992
|
setTimeout(() => {
|
|
57316
56993
|
// Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
|
|
@@ -57540,15 +57217,16 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$1$2 {
|
|
|
57540
57217
|
}
|
|
57541
57218
|
});
|
|
57542
57219
|
} else {
|
|
57543
|
-
// Normal desktop:
|
|
57544
|
-
//
|
|
57545
|
-
//
|
|
57546
|
-
//
|
|
57547
|
-
//
|
|
57548
|
-
|
|
57220
|
+
// Normal desktop (non-modal): move initial focus into the bib but
|
|
57221
|
+
// don't trap Tab. Tab should exit the bib and let the floater's
|
|
57222
|
+
// handleFocusLoss close it, matching native <select>/<details>
|
|
57223
|
+
// behavior. Deferred one frame because Floating UI positions the
|
|
57224
|
+
// popover asynchronously — a synchronous focus() would target
|
|
57225
|
+
// zero-dimension elements and be silently ignored.
|
|
57549
57226
|
requestAnimationFrame(() => {
|
|
57550
|
-
|
|
57551
|
-
|
|
57227
|
+
const focusables = getFocusableElements$3(this.bibContent);
|
|
57228
|
+
if (focusables.length) {
|
|
57229
|
+
focusables[0].focus();
|
|
57552
57230
|
}
|
|
57553
57231
|
});
|
|
57554
57232
|
}
|
|
@@ -60536,7 +60214,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$3 {
|
|
|
60536
60214
|
}
|
|
60537
60215
|
};
|
|
60538
60216
|
|
|
60539
|
-
var formkitVersion$5 = '
|
|
60217
|
+
var formkitVersion$5 = '202607100029';
|
|
60540
60218
|
|
|
60541
60219
|
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
60542
60220
|
// See LICENSE in the project root for license information.
|
|
@@ -62301,7 +61979,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$3 {
|
|
|
62301
61979
|
}
|
|
62302
61980
|
};
|
|
62303
61981
|
|
|
62304
|
-
var formkitVersion$4 = '
|
|
61982
|
+
var formkitVersion$4 = '202607100029';
|
|
62305
61983
|
|
|
62306
61984
|
// Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
|
|
62307
61985
|
// See LICENSE in the project root for license information.
|
|
@@ -66163,12 +65841,40 @@ let AuroFloatingUI$1 = class AuroFloatingUI {
|
|
|
66163
65841
|
return;
|
|
66164
65842
|
}
|
|
66165
65843
|
|
|
65844
|
+
// Chrome-specific: during popover top-layer promotion after a click on a
|
|
65845
|
+
// slotted focusable, :focus-within can briefly evaluate false while the
|
|
65846
|
+
// active element is still structurally inside the trigger/bib. Fall back
|
|
65847
|
+
// to a shadow-piercing ancestry walk from the deep active element before
|
|
65848
|
+
// treating this as a real focus loss.
|
|
65849
|
+
try {
|
|
65850
|
+
let active = document.activeElement;
|
|
65851
|
+
while (active && active.shadowRoot && active.shadowRoot.activeElement) {
|
|
65852
|
+
active = active.shadowRoot.activeElement;
|
|
65853
|
+
}
|
|
65854
|
+
const targets = [element, element.trigger, element.bib].filter(Boolean);
|
|
65855
|
+
let node = active;
|
|
65856
|
+
while (node) {
|
|
65857
|
+
if (targets.includes(node)) {
|
|
65858
|
+
return;
|
|
65859
|
+
}
|
|
65860
|
+
node =
|
|
65861
|
+
node.parentElement ||
|
|
65862
|
+
(node.getRootNode && node.getRootNode().host) ||
|
|
65863
|
+
null;
|
|
65864
|
+
}
|
|
65865
|
+
} catch (e) {
|
|
65866
|
+
// Defensive: fall through to the existing close path if traversal fails.
|
|
65867
|
+
}
|
|
65868
|
+
|
|
66166
65869
|
// if fullscreen bib is in fullscreen mode, do not close
|
|
66167
65870
|
if (element.bib.hasAttribute("isfullscreen")) {
|
|
66168
65871
|
return;
|
|
66169
65872
|
}
|
|
66170
65873
|
|
|
66171
|
-
|
|
65874
|
+
// eventType "focusloss" distinguishes a Tab/click-driven close from an
|
|
65875
|
+
// Escape keydown close. Consumers use this to decide whether to restore
|
|
65876
|
+
// focus to the trigger (Escape) or let it advance naturally (Tab).
|
|
65877
|
+
this.hideBib("focusloss");
|
|
66172
65878
|
}
|
|
66173
65879
|
|
|
66174
65880
|
setupHideHandlers() {
|
|
@@ -66838,199 +66544,6 @@ function getFocusableElements$2(container) {
|
|
|
66838
66544
|
return tabIndexedUniqueElements;
|
|
66839
66545
|
}
|
|
66840
66546
|
|
|
66841
|
-
/**
|
|
66842
|
-
* FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
|
|
66843
|
-
* It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
|
|
66844
|
-
*/
|
|
66845
|
-
let FocusTrap$1 = class FocusTrap {
|
|
66846
|
-
/**
|
|
66847
|
-
* Creates a new FocusTrap instance for the given container element.
|
|
66848
|
-
* Initializes event listeners and prepares the container for focus management.
|
|
66849
|
-
*
|
|
66850
|
-
* @param {HTMLElement} container The DOM element to trap focus within.
|
|
66851
|
-
* @param {boolean} [controlTabOrder=false] If true enables manual control of the tab order by the FocusTrap.
|
|
66852
|
-
* @throws {Error} If the provided container is not a valid HTMLElement.
|
|
66853
|
-
*/
|
|
66854
|
-
constructor(container, controlTabOrder = false) {
|
|
66855
|
-
if (!container || !(container instanceof HTMLElement)) {
|
|
66856
|
-
throw new Error("FocusTrap requires a valid HTMLElement.");
|
|
66857
|
-
}
|
|
66858
|
-
|
|
66859
|
-
this.container = container;
|
|
66860
|
-
this.tabDirection = "forward"; // or 'backward';
|
|
66861
|
-
this.controlTabOrder = controlTabOrder;
|
|
66862
|
-
|
|
66863
|
-
this._init();
|
|
66864
|
-
}
|
|
66865
|
-
|
|
66866
|
-
/**
|
|
66867
|
-
* Initializes the focus trap by setting up event listeners and attributes on the container.
|
|
66868
|
-
* Prepares the container for focus management, including support for shadow DOM and inert attributes.
|
|
66869
|
-
*
|
|
66870
|
-
* @private
|
|
66871
|
-
*/
|
|
66872
|
-
_init() {
|
|
66873
|
-
// Add inert attribute to prevent focusing programmatically as well (if supported)
|
|
66874
|
-
if ("inert" in HTMLElement.prototype) {
|
|
66875
|
-
this.container.inert = false; // Ensure the container isn't inert
|
|
66876
|
-
this.container.setAttribute("data-focus-trap-container", true); // Mark for identification
|
|
66877
|
-
}
|
|
66878
|
-
|
|
66879
|
-
// Track tab direction
|
|
66880
|
-
this.container.addEventListener("keydown", this._onKeydown);
|
|
66881
|
-
}
|
|
66882
|
-
|
|
66883
|
-
/**
|
|
66884
|
-
* Gets an array of currently active (focused) elements in the document and shadow DOM.
|
|
66885
|
-
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
66886
|
-
* @private
|
|
66887
|
-
*/
|
|
66888
|
-
_getActiveElements() {
|
|
66889
|
-
// Get the active element(s) in the document and shadow root
|
|
66890
|
-
// This will include the active element in the shadow DOM if it exists
|
|
66891
|
-
// Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
|
|
66892
|
-
let { activeElement } = document;
|
|
66893
|
-
const actives = [activeElement];
|
|
66894
|
-
while (activeElement?.shadowRoot?.activeElement) {
|
|
66895
|
-
actives.push(activeElement.shadowRoot.activeElement);
|
|
66896
|
-
activeElement = activeElement.shadowRoot.activeElement;
|
|
66897
|
-
}
|
|
66898
|
-
return actives;
|
|
66899
|
-
}
|
|
66900
|
-
|
|
66901
|
-
/**
|
|
66902
|
-
* Gets the next focus index based on the current index and focusable elements.
|
|
66903
|
-
* @param {number} currentIndex The current index of the focused element.
|
|
66904
|
-
* @param {Array<HTMLElement>} focusables The array of focusable elements.
|
|
66905
|
-
* @returns {number|null} The next focus index or null if not determined.
|
|
66906
|
-
*/
|
|
66907
|
-
_getNextFocusIndex(currentIndex, focusables, actives) {
|
|
66908
|
-
if (this.controlTabOrder) {
|
|
66909
|
-
// Calculate the new index based on the current index and tab direction
|
|
66910
|
-
let newFocusIndex =
|
|
66911
|
-
currentIndex + (this.tabDirection === "forward" ? 1 : -1);
|
|
66912
|
-
|
|
66913
|
-
// Wrap-around logic
|
|
66914
|
-
if (newFocusIndex < 0) newFocusIndex = focusables.length - 1;
|
|
66915
|
-
if (newFocusIndex >= focusables.length) newFocusIndex = 0;
|
|
66916
|
-
|
|
66917
|
-
// Early return with the new index
|
|
66918
|
-
return newFocusIndex;
|
|
66919
|
-
}
|
|
66920
|
-
|
|
66921
|
-
// Determine if we need to wrap
|
|
66922
|
-
const atFirst =
|
|
66923
|
-
actives.includes(focusables[0]) || actives.includes(this.container);
|
|
66924
|
-
const atLast = actives.includes(focusables[focusables.length - 1]);
|
|
66925
|
-
|
|
66926
|
-
// Only wrap if at the ends
|
|
66927
|
-
if (this.tabDirection === "backward" && atFirst) {
|
|
66928
|
-
return focusables.length - 1;
|
|
66929
|
-
}
|
|
66930
|
-
|
|
66931
|
-
if (this.tabDirection === "forward" && atLast) {
|
|
66932
|
-
return 0;
|
|
66933
|
-
}
|
|
66934
|
-
|
|
66935
|
-
// No wrap, so don't change focus, return early
|
|
66936
|
-
return null;
|
|
66937
|
-
}
|
|
66938
|
-
|
|
66939
|
-
/**
|
|
66940
|
-
* Handles the Tab key press event to manage focus within the container.
|
|
66941
|
-
* @param {KeyboardEvent} e The keyboard event triggered by the user.
|
|
66942
|
-
* @returns {void}
|
|
66943
|
-
*/
|
|
66944
|
-
_handleTabKey(e) {
|
|
66945
|
-
// Update the focusable elements
|
|
66946
|
-
const focusables = this._getFocusableElements();
|
|
66947
|
-
|
|
66948
|
-
// If there are no focusable elements, exit
|
|
66949
|
-
if (!focusables.length) return;
|
|
66950
|
-
|
|
66951
|
-
// Set the tab direction based on the key pressed
|
|
66952
|
-
this.tabDirection = e.shiftKey ? "backward" : "forward";
|
|
66953
|
-
|
|
66954
|
-
// Get the active elements that are currently focused
|
|
66955
|
-
const actives = this._getActiveElements();
|
|
66956
|
-
|
|
66957
|
-
// If we're at either end of the focusable elements, wrap around to the other end
|
|
66958
|
-
let focusIndex = focusables.findIndex((el) => actives.includes(el));
|
|
66959
|
-
|
|
66960
|
-
// Fallback if we have no focused element
|
|
66961
|
-
if (focusIndex === -1) focusIndex = 0;
|
|
66962
|
-
|
|
66963
|
-
// Get the next focus index based on the current focus index, tab direction, and controlTabOrder setting
|
|
66964
|
-
// Is null if no new focus index is determined
|
|
66965
|
-
const newFocusIndex = this._getNextFocusIndex(
|
|
66966
|
-
focusIndex,
|
|
66967
|
-
focusables,
|
|
66968
|
-
actives,
|
|
66969
|
-
);
|
|
66970
|
-
|
|
66971
|
-
// If we have a new focus index, set focus to that element
|
|
66972
|
-
if (newFocusIndex !== null) {
|
|
66973
|
-
e.preventDefault();
|
|
66974
|
-
focusables[newFocusIndex].focus();
|
|
66975
|
-
}
|
|
66976
|
-
}
|
|
66977
|
-
|
|
66978
|
-
/**
|
|
66979
|
-
* Catches the keydown event
|
|
66980
|
-
* @param {KeyboardEvent} e The keyboard event triggered by user interaction.
|
|
66981
|
-
* @private
|
|
66982
|
-
*/
|
|
66983
|
-
_onKeydown = (e) => {
|
|
66984
|
-
// Handle tab
|
|
66985
|
-
if (e.key === "Tab") this._handleTabKey(e);
|
|
66986
|
-
};
|
|
66987
|
-
|
|
66988
|
-
/**
|
|
66989
|
-
* Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
|
|
66990
|
-
* Returns a unique, ordered array of elements that can receive focus.
|
|
66991
|
-
*
|
|
66992
|
-
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
66993
|
-
* @private
|
|
66994
|
-
*/
|
|
66995
|
-
_getFocusableElements() {
|
|
66996
|
-
// Use the imported utility function to get focusable elements
|
|
66997
|
-
const elements = getFocusableElements$2(this.container);
|
|
66998
|
-
|
|
66999
|
-
// Return the elements found
|
|
67000
|
-
return elements;
|
|
67001
|
-
}
|
|
67002
|
-
|
|
67003
|
-
/**
|
|
67004
|
-
* Moves focus to the first focusable element within the container.
|
|
67005
|
-
* Useful for setting initial focus when activating the focus trap.
|
|
67006
|
-
*/
|
|
67007
|
-
focusFirstElement() {
|
|
67008
|
-
const focusables = this._getFocusableElements();
|
|
67009
|
-
if (focusables.length) focusables[0].focus();
|
|
67010
|
-
}
|
|
67011
|
-
|
|
67012
|
-
/**
|
|
67013
|
-
* Moves focus to the last focusable element within the container.
|
|
67014
|
-
* Useful for setting focus when deactivating or cycling focus in reverse.
|
|
67015
|
-
*/
|
|
67016
|
-
focusLastElement() {
|
|
67017
|
-
const focusables = this._getFocusableElements();
|
|
67018
|
-
if (focusables.length) focusables[focusables.length - 1].focus();
|
|
67019
|
-
}
|
|
67020
|
-
|
|
67021
|
-
/**
|
|
67022
|
-
* Removes event listeners and attributes added by the focus trap.
|
|
67023
|
-
* Call this method to clean up when the focus trap is no longer needed.
|
|
67024
|
-
*/
|
|
67025
|
-
disconnect() {
|
|
67026
|
-
if (this.container.hasAttribute("data-focus-trap-container")) {
|
|
67027
|
-
this.container.removeAttribute("data-focus-trap-container");
|
|
67028
|
-
}
|
|
67029
|
-
|
|
67030
|
-
this.container.removeEventListener("keydown", this._onKeydown);
|
|
67031
|
-
}
|
|
67032
|
-
};
|
|
67033
|
-
|
|
67034
66547
|
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
67035
66548
|
// See LICENSE in the project root for license information.
|
|
67036
66549
|
|
|
@@ -67528,7 +67041,7 @@ let AuroDropdownBib$1 = class AuroDropdownBib extends i$3 {
|
|
|
67528
67041
|
classes[`shape-${this.shape}`] = true;
|
|
67529
67042
|
|
|
67530
67043
|
return u$c`
|
|
67531
|
-
<dialog class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
|
|
67044
|
+
<dialog tabindex="-1" class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
|
|
67532
67045
|
${this.dialogLabel ? u$c`<span id="dialogLabel" class="util_displayHiddenVisually">${this.dialogLabel}</span>` : ''}
|
|
67533
67046
|
<slot></slot>
|
|
67534
67047
|
<span id="srAnnouncement" class="util_displayHiddenVisually" aria-live="polite" role="status"></span>
|
|
@@ -67779,7 +67292,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
|
|
|
67779
67292
|
}
|
|
67780
67293
|
};
|
|
67781
67294
|
|
|
67782
|
-
var formkitVersion$2 = '
|
|
67295
|
+
var formkitVersion$2 = '202607100029';
|
|
67783
67296
|
|
|
67784
67297
|
let AuroElement$2$1 = class AuroElement extends i$3 {
|
|
67785
67298
|
static get properties() {
|
|
@@ -68533,7 +68046,10 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
|
|
|
68533
68046
|
}
|
|
68534
68047
|
|
|
68535
68048
|
|
|
68536
|
-
|
|
68049
|
+
// On Tab-driven close (eventType "focusloss"), let focus advance naturally
|
|
68050
|
+
// — restoring to the trigger would trap the user on this dropdown, forcing
|
|
68051
|
+
// an extra Tab to move on. Escape and outside-click still restore.
|
|
68052
|
+
if (!this.isPopoverVisible && eventType !== "focusloss") {
|
|
68537
68053
|
// wait til the bib gets fully closed and rendered
|
|
68538
68054
|
setTimeout(() => {
|
|
68539
68055
|
// Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
|
|
@@ -68763,15 +68279,16 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
|
|
|
68763
68279
|
}
|
|
68764
68280
|
});
|
|
68765
68281
|
} else {
|
|
68766
|
-
// Normal desktop:
|
|
68767
|
-
//
|
|
68768
|
-
//
|
|
68769
|
-
//
|
|
68770
|
-
//
|
|
68771
|
-
|
|
68282
|
+
// Normal desktop (non-modal): move initial focus into the bib but
|
|
68283
|
+
// don't trap Tab. Tab should exit the bib and let the floater's
|
|
68284
|
+
// handleFocusLoss close it, matching native <select>/<details>
|
|
68285
|
+
// behavior. Deferred one frame because Floating UI positions the
|
|
68286
|
+
// popover asynchronously — a synchronous focus() would target
|
|
68287
|
+
// zero-dimension elements and be silently ignored.
|
|
68772
68288
|
requestAnimationFrame(() => {
|
|
68773
|
-
|
|
68774
|
-
|
|
68289
|
+
const focusables = getFocusableElements$2(this.bibContent);
|
|
68290
|
+
if (focusables.length) {
|
|
68291
|
+
focusables[0].focus();
|
|
68775
68292
|
}
|
|
68776
68293
|
});
|
|
68777
68294
|
}
|
|
@@ -81397,7 +80914,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$3 {
|
|
|
81397
80914
|
}
|
|
81398
80915
|
};
|
|
81399
80916
|
|
|
81400
|
-
var formkitVersion$1$1 = '
|
|
80917
|
+
var formkitVersion$1$1 = '202607100029';
|
|
81401
80918
|
|
|
81402
80919
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
81403
80920
|
// See LICENSE in the project root for license information.
|
|
@@ -82518,7 +82035,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$3 {
|
|
|
82518
82035
|
}
|
|
82519
82036
|
};
|
|
82520
82037
|
|
|
82521
|
-
var formkitVersion$3 = '
|
|
82038
|
+
var formkitVersion$3 = '202607100029';
|
|
82522
82039
|
|
|
82523
82040
|
var styleCss$1$3 = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
|
|
82524
82041
|
|
|
@@ -89888,12 +89405,40 @@ class AuroFloatingUI {
|
|
|
89888
89405
|
return;
|
|
89889
89406
|
}
|
|
89890
89407
|
|
|
89408
|
+
// Chrome-specific: during popover top-layer promotion after a click on a
|
|
89409
|
+
// slotted focusable, :focus-within can briefly evaluate false while the
|
|
89410
|
+
// active element is still structurally inside the trigger/bib. Fall back
|
|
89411
|
+
// to a shadow-piercing ancestry walk from the deep active element before
|
|
89412
|
+
// treating this as a real focus loss.
|
|
89413
|
+
try {
|
|
89414
|
+
let active = document.activeElement;
|
|
89415
|
+
while (active && active.shadowRoot && active.shadowRoot.activeElement) {
|
|
89416
|
+
active = active.shadowRoot.activeElement;
|
|
89417
|
+
}
|
|
89418
|
+
const targets = [element, element.trigger, element.bib].filter(Boolean);
|
|
89419
|
+
let node = active;
|
|
89420
|
+
while (node) {
|
|
89421
|
+
if (targets.includes(node)) {
|
|
89422
|
+
return;
|
|
89423
|
+
}
|
|
89424
|
+
node =
|
|
89425
|
+
node.parentElement ||
|
|
89426
|
+
(node.getRootNode && node.getRootNode().host) ||
|
|
89427
|
+
null;
|
|
89428
|
+
}
|
|
89429
|
+
} catch (e) {
|
|
89430
|
+
// Defensive: fall through to the existing close path if traversal fails.
|
|
89431
|
+
}
|
|
89432
|
+
|
|
89891
89433
|
// if fullscreen bib is in fullscreen mode, do not close
|
|
89892
89434
|
if (element.bib.hasAttribute("isfullscreen")) {
|
|
89893
89435
|
return;
|
|
89894
89436
|
}
|
|
89895
89437
|
|
|
89896
|
-
|
|
89438
|
+
// eventType "focusloss" distinguishes a Tab/click-driven close from an
|
|
89439
|
+
// Escape keydown close. Consumers use this to decide whether to restore
|
|
89440
|
+
// focus to the trigger (Escape) or let it advance naturally (Tab).
|
|
89441
|
+
this.hideBib("focusloss");
|
|
89897
89442
|
}
|
|
89898
89443
|
|
|
89899
89444
|
setupHideHandlers() {
|
|
@@ -90563,199 +90108,6 @@ function getFocusableElements(container) {
|
|
|
90563
90108
|
return tabIndexedUniqueElements;
|
|
90564
90109
|
}
|
|
90565
90110
|
|
|
90566
|
-
/**
|
|
90567
|
-
* FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
|
|
90568
|
-
* It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
|
|
90569
|
-
*/
|
|
90570
|
-
class FocusTrap {
|
|
90571
|
-
/**
|
|
90572
|
-
* Creates a new FocusTrap instance for the given container element.
|
|
90573
|
-
* Initializes event listeners and prepares the container for focus management.
|
|
90574
|
-
*
|
|
90575
|
-
* @param {HTMLElement} container The DOM element to trap focus within.
|
|
90576
|
-
* @param {boolean} [controlTabOrder=false] If true enables manual control of the tab order by the FocusTrap.
|
|
90577
|
-
* @throws {Error} If the provided container is not a valid HTMLElement.
|
|
90578
|
-
*/
|
|
90579
|
-
constructor(container, controlTabOrder = false) {
|
|
90580
|
-
if (!container || !(container instanceof HTMLElement)) {
|
|
90581
|
-
throw new Error("FocusTrap requires a valid HTMLElement.");
|
|
90582
|
-
}
|
|
90583
|
-
|
|
90584
|
-
this.container = container;
|
|
90585
|
-
this.tabDirection = "forward"; // or 'backward';
|
|
90586
|
-
this.controlTabOrder = controlTabOrder;
|
|
90587
|
-
|
|
90588
|
-
this._init();
|
|
90589
|
-
}
|
|
90590
|
-
|
|
90591
|
-
/**
|
|
90592
|
-
* Initializes the focus trap by setting up event listeners and attributes on the container.
|
|
90593
|
-
* Prepares the container for focus management, including support for shadow DOM and inert attributes.
|
|
90594
|
-
*
|
|
90595
|
-
* @private
|
|
90596
|
-
*/
|
|
90597
|
-
_init() {
|
|
90598
|
-
// Add inert attribute to prevent focusing programmatically as well (if supported)
|
|
90599
|
-
if ("inert" in HTMLElement.prototype) {
|
|
90600
|
-
this.container.inert = false; // Ensure the container isn't inert
|
|
90601
|
-
this.container.setAttribute("data-focus-trap-container", true); // Mark for identification
|
|
90602
|
-
}
|
|
90603
|
-
|
|
90604
|
-
// Track tab direction
|
|
90605
|
-
this.container.addEventListener("keydown", this._onKeydown);
|
|
90606
|
-
}
|
|
90607
|
-
|
|
90608
|
-
/**
|
|
90609
|
-
* Gets an array of currently active (focused) elements in the document and shadow DOM.
|
|
90610
|
-
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
90611
|
-
* @private
|
|
90612
|
-
*/
|
|
90613
|
-
_getActiveElements() {
|
|
90614
|
-
// Get the active element(s) in the document and shadow root
|
|
90615
|
-
// This will include the active element in the shadow DOM if it exists
|
|
90616
|
-
// Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
|
|
90617
|
-
let { activeElement } = document;
|
|
90618
|
-
const actives = [activeElement];
|
|
90619
|
-
while (activeElement?.shadowRoot?.activeElement) {
|
|
90620
|
-
actives.push(activeElement.shadowRoot.activeElement);
|
|
90621
|
-
activeElement = activeElement.shadowRoot.activeElement;
|
|
90622
|
-
}
|
|
90623
|
-
return actives;
|
|
90624
|
-
}
|
|
90625
|
-
|
|
90626
|
-
/**
|
|
90627
|
-
* Gets the next focus index based on the current index and focusable elements.
|
|
90628
|
-
* @param {number} currentIndex The current index of the focused element.
|
|
90629
|
-
* @param {Array<HTMLElement>} focusables The array of focusable elements.
|
|
90630
|
-
* @returns {number|null} The next focus index or null if not determined.
|
|
90631
|
-
*/
|
|
90632
|
-
_getNextFocusIndex(currentIndex, focusables, actives) {
|
|
90633
|
-
if (this.controlTabOrder) {
|
|
90634
|
-
// Calculate the new index based on the current index and tab direction
|
|
90635
|
-
let newFocusIndex =
|
|
90636
|
-
currentIndex + (this.tabDirection === "forward" ? 1 : -1);
|
|
90637
|
-
|
|
90638
|
-
// Wrap-around logic
|
|
90639
|
-
if (newFocusIndex < 0) newFocusIndex = focusables.length - 1;
|
|
90640
|
-
if (newFocusIndex >= focusables.length) newFocusIndex = 0;
|
|
90641
|
-
|
|
90642
|
-
// Early return with the new index
|
|
90643
|
-
return newFocusIndex;
|
|
90644
|
-
}
|
|
90645
|
-
|
|
90646
|
-
// Determine if we need to wrap
|
|
90647
|
-
const atFirst =
|
|
90648
|
-
actives.includes(focusables[0]) || actives.includes(this.container);
|
|
90649
|
-
const atLast = actives.includes(focusables[focusables.length - 1]);
|
|
90650
|
-
|
|
90651
|
-
// Only wrap if at the ends
|
|
90652
|
-
if (this.tabDirection === "backward" && atFirst) {
|
|
90653
|
-
return focusables.length - 1;
|
|
90654
|
-
}
|
|
90655
|
-
|
|
90656
|
-
if (this.tabDirection === "forward" && atLast) {
|
|
90657
|
-
return 0;
|
|
90658
|
-
}
|
|
90659
|
-
|
|
90660
|
-
// No wrap, so don't change focus, return early
|
|
90661
|
-
return null;
|
|
90662
|
-
}
|
|
90663
|
-
|
|
90664
|
-
/**
|
|
90665
|
-
* Handles the Tab key press event to manage focus within the container.
|
|
90666
|
-
* @param {KeyboardEvent} e The keyboard event triggered by the user.
|
|
90667
|
-
* @returns {void}
|
|
90668
|
-
*/
|
|
90669
|
-
_handleTabKey(e) {
|
|
90670
|
-
// Update the focusable elements
|
|
90671
|
-
const focusables = this._getFocusableElements();
|
|
90672
|
-
|
|
90673
|
-
// If there are no focusable elements, exit
|
|
90674
|
-
if (!focusables.length) return;
|
|
90675
|
-
|
|
90676
|
-
// Set the tab direction based on the key pressed
|
|
90677
|
-
this.tabDirection = e.shiftKey ? "backward" : "forward";
|
|
90678
|
-
|
|
90679
|
-
// Get the active elements that are currently focused
|
|
90680
|
-
const actives = this._getActiveElements();
|
|
90681
|
-
|
|
90682
|
-
// If we're at either end of the focusable elements, wrap around to the other end
|
|
90683
|
-
let focusIndex = focusables.findIndex((el) => actives.includes(el));
|
|
90684
|
-
|
|
90685
|
-
// Fallback if we have no focused element
|
|
90686
|
-
if (focusIndex === -1) focusIndex = 0;
|
|
90687
|
-
|
|
90688
|
-
// Get the next focus index based on the current focus index, tab direction, and controlTabOrder setting
|
|
90689
|
-
// Is null if no new focus index is determined
|
|
90690
|
-
const newFocusIndex = this._getNextFocusIndex(
|
|
90691
|
-
focusIndex,
|
|
90692
|
-
focusables,
|
|
90693
|
-
actives,
|
|
90694
|
-
);
|
|
90695
|
-
|
|
90696
|
-
// If we have a new focus index, set focus to that element
|
|
90697
|
-
if (newFocusIndex !== null) {
|
|
90698
|
-
e.preventDefault();
|
|
90699
|
-
focusables[newFocusIndex].focus();
|
|
90700
|
-
}
|
|
90701
|
-
}
|
|
90702
|
-
|
|
90703
|
-
/**
|
|
90704
|
-
* Catches the keydown event
|
|
90705
|
-
* @param {KeyboardEvent} e The keyboard event triggered by user interaction.
|
|
90706
|
-
* @private
|
|
90707
|
-
*/
|
|
90708
|
-
_onKeydown = (e) => {
|
|
90709
|
-
// Handle tab
|
|
90710
|
-
if (e.key === "Tab") this._handleTabKey(e);
|
|
90711
|
-
};
|
|
90712
|
-
|
|
90713
|
-
/**
|
|
90714
|
-
* Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
|
|
90715
|
-
* Returns a unique, ordered array of elements that can receive focus.
|
|
90716
|
-
*
|
|
90717
|
-
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
90718
|
-
* @private
|
|
90719
|
-
*/
|
|
90720
|
-
_getFocusableElements() {
|
|
90721
|
-
// Use the imported utility function to get focusable elements
|
|
90722
|
-
const elements = getFocusableElements(this.container);
|
|
90723
|
-
|
|
90724
|
-
// Return the elements found
|
|
90725
|
-
return elements;
|
|
90726
|
-
}
|
|
90727
|
-
|
|
90728
|
-
/**
|
|
90729
|
-
* Moves focus to the first focusable element within the container.
|
|
90730
|
-
* Useful for setting initial focus when activating the focus trap.
|
|
90731
|
-
*/
|
|
90732
|
-
focusFirstElement() {
|
|
90733
|
-
const focusables = this._getFocusableElements();
|
|
90734
|
-
if (focusables.length) focusables[0].focus();
|
|
90735
|
-
}
|
|
90736
|
-
|
|
90737
|
-
/**
|
|
90738
|
-
* Moves focus to the last focusable element within the container.
|
|
90739
|
-
* Useful for setting focus when deactivating or cycling focus in reverse.
|
|
90740
|
-
*/
|
|
90741
|
-
focusLastElement() {
|
|
90742
|
-
const focusables = this._getFocusableElements();
|
|
90743
|
-
if (focusables.length) focusables[focusables.length - 1].focus();
|
|
90744
|
-
}
|
|
90745
|
-
|
|
90746
|
-
/**
|
|
90747
|
-
* Removes event listeners and attributes added by the focus trap.
|
|
90748
|
-
* Call this method to clean up when the focus trap is no longer needed.
|
|
90749
|
-
*/
|
|
90750
|
-
disconnect() {
|
|
90751
|
-
if (this.container.hasAttribute("data-focus-trap-container")) {
|
|
90752
|
-
this.container.removeAttribute("data-focus-trap-container");
|
|
90753
|
-
}
|
|
90754
|
-
|
|
90755
|
-
this.container.removeEventListener("keydown", this._onKeydown);
|
|
90756
|
-
}
|
|
90757
|
-
}
|
|
90758
|
-
|
|
90759
90111
|
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
90760
90112
|
// See LICENSE in the project root for license information.
|
|
90761
90113
|
|
|
@@ -91253,7 +90605,7 @@ class AuroDropdownBib extends i$3 {
|
|
|
91253
90605
|
classes[`shape-${this.shape}`] = true;
|
|
91254
90606
|
|
|
91255
90607
|
return u$c`
|
|
91256
|
-
<dialog class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
|
|
90608
|
+
<dialog tabindex="-1" class="${e$2(classes)}" part="bibContainer" role="${o$4(this.dialogRole)}" aria-labelledby="${o$4(this.dialogLabel ? 'dialogLabel' : undefined)}">
|
|
91257
90609
|
${this.dialogLabel ? u$c`<span id="dialogLabel" class="util_displayHiddenVisually">${this.dialogLabel}</span>` : ''}
|
|
91258
90610
|
<slot></slot>
|
|
91259
90611
|
<span id="srAnnouncement" class="util_displayHiddenVisually" aria-live="polite" role="status"></span>
|
|
@@ -91504,7 +90856,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
|
|
|
91504
90856
|
}
|
|
91505
90857
|
};
|
|
91506
90858
|
|
|
91507
|
-
var formkitVersion$1 = '
|
|
90859
|
+
var formkitVersion$1 = '202607100029';
|
|
91508
90860
|
|
|
91509
90861
|
class AuroElement extends i$3 {
|
|
91510
90862
|
static get properties() {
|
|
@@ -92258,7 +91610,10 @@ class AuroDropdown extends AuroElement {
|
|
|
92258
91610
|
}
|
|
92259
91611
|
|
|
92260
91612
|
|
|
92261
|
-
|
|
91613
|
+
// On Tab-driven close (eventType "focusloss"), let focus advance naturally
|
|
91614
|
+
// — restoring to the trigger would trap the user on this dropdown, forcing
|
|
91615
|
+
// an extra Tab to move on. Escape and outside-click still restore.
|
|
91616
|
+
if (!this.isPopoverVisible && eventType !== "focusloss") {
|
|
92262
91617
|
// wait til the bib gets fully closed and rendered
|
|
92263
91618
|
setTimeout(() => {
|
|
92264
91619
|
// Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
|
|
@@ -92488,15 +91843,16 @@ class AuroDropdown extends AuroElement {
|
|
|
92488
91843
|
}
|
|
92489
91844
|
});
|
|
92490
91845
|
} else {
|
|
92491
|
-
// Normal desktop:
|
|
92492
|
-
//
|
|
92493
|
-
//
|
|
92494
|
-
//
|
|
92495
|
-
//
|
|
92496
|
-
|
|
91846
|
+
// Normal desktop (non-modal): move initial focus into the bib but
|
|
91847
|
+
// don't trap Tab. Tab should exit the bib and let the floater's
|
|
91848
|
+
// handleFocusLoss close it, matching native <select>/<details>
|
|
91849
|
+
// behavior. Deferred one frame because Floating UI positions the
|
|
91850
|
+
// popover asynchronously — a synchronous focus() would target
|
|
91851
|
+
// zero-dimension elements and be silently ignored.
|
|
92497
91852
|
requestAnimationFrame(() => {
|
|
92498
|
-
|
|
92499
|
-
|
|
91853
|
+
const focusables = getFocusableElements(this.bibContent);
|
|
91854
|
+
if (focusables.length) {
|
|
91855
|
+
focusables[0].focus();
|
|
92500
91856
|
}
|
|
92501
91857
|
});
|
|
92502
91858
|
}
|
|
@@ -93543,7 +92899,7 @@ class AuroHelpText extends i$3 {
|
|
|
93543
92899
|
}
|
|
93544
92900
|
}
|
|
93545
92901
|
|
|
93546
|
-
var formkitVersion = '
|
|
92902
|
+
var formkitVersion = '202607100029';
|
|
93547
92903
|
|
|
93548
92904
|
var styleCss = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 300);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 300);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
|
|
93549
92905
|
|