@aurodesignsystem/auro-formkit 6.0.0 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +5 -240
- 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 +172 -46
- package/components/combobox/demo/getting-started.min.js +172 -46
- package/components/combobox/demo/index.min.js +172 -46
- package/components/combobox/dist/index.js +172 -46
- package/components/combobox/dist/registered.js +172 -46
- package/components/counter/demo/customize.min.js +59 -7
- package/components/counter/demo/index.min.js +59 -7
- package/components/counter/dist/index.js +59 -7
- package/components/counter/dist/registered.js +59 -7
- package/components/datepicker/demo/customize.min.js +106 -18
- package/components/datepicker/demo/index.min.js +106 -18
- package/components/datepicker/dist/index.js +106 -18
- package/components/datepicker/dist/registered.js +106 -18
- package/components/dropdown/demo/customize.min.js +58 -6
- package/components/dropdown/demo/getting-started.min.js +58 -6
- package/components/dropdown/demo/index.min.js +58 -6
- package/components/dropdown/dist/auro-dropdown.d.ts +16 -1
- package/components/dropdown/dist/index.js +58 -6
- package/components/dropdown/dist/registered.js +58 -6
- package/components/form/demo/customize.min.js +445 -91
- package/components/form/demo/getting-started.min.js +445 -91
- package/components/form/demo/index.min.js +445 -91
- package/components/form/demo/registerDemoDeps.min.js +445 -91
- package/components/input/demo/customize.min.js +47 -11
- package/components/input/demo/getting-started.min.js +47 -11
- package/components/input/demo/index.min.js +47 -11
- package/components/input/dist/index.js +47 -11
- package/components/input/dist/registered.js +47 -11
- 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 +59 -7
- package/components/select/demo/getting-started.min.js +59 -7
- package/components/select/demo/index.min.js +59 -7
- package/components/select/dist/index.js +59 -7
- package/components/select/dist/registered.js +59 -7
- package/custom-elements.json +1500 -1484
- package/package.json +1 -1
|
@@ -1064,7 +1064,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
1064
1064
|
}
|
|
1065
1065
|
};
|
|
1066
1066
|
|
|
1067
|
-
var formkitVersion$1 = '
|
|
1067
|
+
var formkitVersion$1 = '202607161943';
|
|
1068
1068
|
|
|
1069
1069
|
// Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
|
|
1070
1070
|
// See LICENSE in the project root for license information.
|
|
@@ -5212,7 +5212,7 @@ class AuroHelpText extends LitElement {
|
|
|
5212
5212
|
}
|
|
5213
5213
|
}
|
|
5214
5214
|
|
|
5215
|
-
var formkitVersion = '
|
|
5215
|
+
var formkitVersion = '202607161943';
|
|
5216
5216
|
|
|
5217
5217
|
let AuroElement$1 = class AuroElement extends LitElement {
|
|
5218
5218
|
static get properties() {
|
|
@@ -5341,7 +5341,6 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5341
5341
|
static get shadowRootOptions() {
|
|
5342
5342
|
return {
|
|
5343
5343
|
...AuroElement$1.shadowRootOptions,
|
|
5344
|
-
delegatesFocus: true,
|
|
5345
5344
|
};
|
|
5346
5345
|
}
|
|
5347
5346
|
|
|
@@ -5353,6 +5352,15 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5353
5352
|
this.matchWidth = false;
|
|
5354
5353
|
this.noHideOnThisFocusLoss = false;
|
|
5355
5354
|
|
|
5355
|
+
/**
|
|
5356
|
+
* When true, the dropdown skips its generic focus restoration on close.
|
|
5357
|
+
* Set by consumers (e.g. combobox) that manage their own focus routing
|
|
5358
|
+
* via setClearBtnFocus / setInputFocus / keyboard strategy.
|
|
5359
|
+
* Separate from noHideOnThisFocusLoss (which controls auto-close behavior).
|
|
5360
|
+
* @private
|
|
5361
|
+
*/
|
|
5362
|
+
this.noFocusRestoreOnClose = false;
|
|
5363
|
+
|
|
5356
5364
|
this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
|
|
5357
5365
|
|
|
5358
5366
|
// Layout Config
|
|
@@ -5508,7 +5516,49 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5508
5516
|
focusables[0].focus();
|
|
5509
5517
|
}
|
|
5510
5518
|
} else {
|
|
5519
|
+
this.focusTrigger();
|
|
5520
|
+
}
|
|
5521
|
+
}
|
|
5522
|
+
|
|
5523
|
+
/**
|
|
5524
|
+
* Focus the trigger content. When the trigger wrapper itself is focusable
|
|
5525
|
+
* (has tabindex), focus it directly. Otherwise, focus the first focusable
|
|
5526
|
+
* element slotted into the trigger slot (e.g. the auro-input).
|
|
5527
|
+
* @private
|
|
5528
|
+
*/
|
|
5529
|
+
focusTrigger() {
|
|
5530
|
+
if (this.trigger.hasAttribute('tabindex')) {
|
|
5511
5531
|
this.trigger.focus();
|
|
5532
|
+
} else {
|
|
5533
|
+
// Slotted content isn't a DOM child of the trigger div, so
|
|
5534
|
+
// getFocusableElements can't find it. Query assigned nodes directly.
|
|
5535
|
+
const slot = this.trigger.querySelector('slot[name="trigger"]');
|
|
5536
|
+
if (slot) {
|
|
5537
|
+
const assigned = slot.assignedElements();
|
|
5538
|
+
for (const el of assigned) {
|
|
5539
|
+
if (el.hasAttribute('disabled')) {
|
|
5540
|
+
continue;
|
|
5541
|
+
}
|
|
5542
|
+
// Try finding a focusable descendant first (handles non-focusable
|
|
5543
|
+
// wrappers like <div> containing a <button>). If none found, try
|
|
5544
|
+
// focusing the element directly (works for custom elements like
|
|
5545
|
+
// auro-input that have delegatesFocus or a custom focus() method).
|
|
5546
|
+
const descendants = getFocusableElements(el);
|
|
5547
|
+
if (descendants.length > 0) {
|
|
5548
|
+
descendants[0].focus();
|
|
5549
|
+
return;
|
|
5550
|
+
}
|
|
5551
|
+
el.focus();
|
|
5552
|
+
if (document.activeElement === el) {
|
|
5553
|
+
return;
|
|
5554
|
+
}
|
|
5555
|
+
}
|
|
5556
|
+
}
|
|
5557
|
+
// Fallback: try DOM children (non-slotted content)
|
|
5558
|
+
const focusables = getFocusableElements(this.trigger);
|
|
5559
|
+
if (focusables.length > 0) {
|
|
5560
|
+
focusables[0].focus();
|
|
5561
|
+
}
|
|
5512
5562
|
}
|
|
5513
5563
|
}
|
|
5514
5564
|
|
|
@@ -5961,15 +6011,17 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5961
6011
|
}
|
|
5962
6012
|
|
|
5963
6013
|
const eventType = event.detail.eventType || "unknown";
|
|
5964
|
-
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
|
|
5965
|
-
this.
|
|
6014
|
+
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
|
|
6015
|
+
this.focusTrigger();
|
|
5966
6016
|
}
|
|
5967
6017
|
|
|
5968
6018
|
|
|
5969
6019
|
// On Tab-driven close (eventType "focusloss"), let focus advance naturally
|
|
5970
6020
|
// — restoring to the trigger would trap the user on this dropdown, forcing
|
|
5971
6021
|
// an extra Tab to move on. Escape and outside-click still restore.
|
|
5972
|
-
|
|
6022
|
+
// When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
|
|
6023
|
+
// its own focus restoration — skip the generic trigger focus to avoid races.
|
|
6024
|
+
if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
|
|
5973
6025
|
// wait til the bib gets fully closed and rendered
|
|
5974
6026
|
setTimeout(() => {
|
|
5975
6027
|
// Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
|
|
@@ -5981,7 +6033,7 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5981
6033
|
return;
|
|
5982
6034
|
}
|
|
5983
6035
|
// Restore focus to the trigger.
|
|
5984
|
-
this.
|
|
6036
|
+
this.focusTrigger();
|
|
5985
6037
|
});
|
|
5986
6038
|
}
|
|
5987
6039
|
}
|
|
@@ -1064,7 +1064,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
1064
1064
|
}
|
|
1065
1065
|
};
|
|
1066
1066
|
|
|
1067
|
-
var formkitVersion$1 = '
|
|
1067
|
+
var formkitVersion$1 = '202607161943';
|
|
1068
1068
|
|
|
1069
1069
|
// Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
|
|
1070
1070
|
// See LICENSE in the project root for license information.
|
|
@@ -5212,7 +5212,7 @@ class AuroHelpText extends LitElement {
|
|
|
5212
5212
|
}
|
|
5213
5213
|
}
|
|
5214
5214
|
|
|
5215
|
-
var formkitVersion = '
|
|
5215
|
+
var formkitVersion = '202607161943';
|
|
5216
5216
|
|
|
5217
5217
|
let AuroElement$1 = class AuroElement extends LitElement {
|
|
5218
5218
|
static get properties() {
|
|
@@ -5341,7 +5341,6 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5341
5341
|
static get shadowRootOptions() {
|
|
5342
5342
|
return {
|
|
5343
5343
|
...AuroElement$1.shadowRootOptions,
|
|
5344
|
-
delegatesFocus: true,
|
|
5345
5344
|
};
|
|
5346
5345
|
}
|
|
5347
5346
|
|
|
@@ -5353,6 +5352,15 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5353
5352
|
this.matchWidth = false;
|
|
5354
5353
|
this.noHideOnThisFocusLoss = false;
|
|
5355
5354
|
|
|
5355
|
+
/**
|
|
5356
|
+
* When true, the dropdown skips its generic focus restoration on close.
|
|
5357
|
+
* Set by consumers (e.g. combobox) that manage their own focus routing
|
|
5358
|
+
* via setClearBtnFocus / setInputFocus / keyboard strategy.
|
|
5359
|
+
* Separate from noHideOnThisFocusLoss (which controls auto-close behavior).
|
|
5360
|
+
* @private
|
|
5361
|
+
*/
|
|
5362
|
+
this.noFocusRestoreOnClose = false;
|
|
5363
|
+
|
|
5356
5364
|
this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
|
|
5357
5365
|
|
|
5358
5366
|
// Layout Config
|
|
@@ -5508,7 +5516,49 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5508
5516
|
focusables[0].focus();
|
|
5509
5517
|
}
|
|
5510
5518
|
} else {
|
|
5519
|
+
this.focusTrigger();
|
|
5520
|
+
}
|
|
5521
|
+
}
|
|
5522
|
+
|
|
5523
|
+
/**
|
|
5524
|
+
* Focus the trigger content. When the trigger wrapper itself is focusable
|
|
5525
|
+
* (has tabindex), focus it directly. Otherwise, focus the first focusable
|
|
5526
|
+
* element slotted into the trigger slot (e.g. the auro-input).
|
|
5527
|
+
* @private
|
|
5528
|
+
*/
|
|
5529
|
+
focusTrigger() {
|
|
5530
|
+
if (this.trigger.hasAttribute('tabindex')) {
|
|
5511
5531
|
this.trigger.focus();
|
|
5532
|
+
} else {
|
|
5533
|
+
// Slotted content isn't a DOM child of the trigger div, so
|
|
5534
|
+
// getFocusableElements can't find it. Query assigned nodes directly.
|
|
5535
|
+
const slot = this.trigger.querySelector('slot[name="trigger"]');
|
|
5536
|
+
if (slot) {
|
|
5537
|
+
const assigned = slot.assignedElements();
|
|
5538
|
+
for (const el of assigned) {
|
|
5539
|
+
if (el.hasAttribute('disabled')) {
|
|
5540
|
+
continue;
|
|
5541
|
+
}
|
|
5542
|
+
// Try finding a focusable descendant first (handles non-focusable
|
|
5543
|
+
// wrappers like <div> containing a <button>). If none found, try
|
|
5544
|
+
// focusing the element directly (works for custom elements like
|
|
5545
|
+
// auro-input that have delegatesFocus or a custom focus() method).
|
|
5546
|
+
const descendants = getFocusableElements(el);
|
|
5547
|
+
if (descendants.length > 0) {
|
|
5548
|
+
descendants[0].focus();
|
|
5549
|
+
return;
|
|
5550
|
+
}
|
|
5551
|
+
el.focus();
|
|
5552
|
+
if (document.activeElement === el) {
|
|
5553
|
+
return;
|
|
5554
|
+
}
|
|
5555
|
+
}
|
|
5556
|
+
}
|
|
5557
|
+
// Fallback: try DOM children (non-slotted content)
|
|
5558
|
+
const focusables = getFocusableElements(this.trigger);
|
|
5559
|
+
if (focusables.length > 0) {
|
|
5560
|
+
focusables[0].focus();
|
|
5561
|
+
}
|
|
5512
5562
|
}
|
|
5513
5563
|
}
|
|
5514
5564
|
|
|
@@ -5961,15 +6011,17 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5961
6011
|
}
|
|
5962
6012
|
|
|
5963
6013
|
const eventType = event.detail.eventType || "unknown";
|
|
5964
|
-
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
|
|
5965
|
-
this.
|
|
6014
|
+
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
|
|
6015
|
+
this.focusTrigger();
|
|
5966
6016
|
}
|
|
5967
6017
|
|
|
5968
6018
|
|
|
5969
6019
|
// On Tab-driven close (eventType "focusloss"), let focus advance naturally
|
|
5970
6020
|
// — restoring to the trigger would trap the user on this dropdown, forcing
|
|
5971
6021
|
// an extra Tab to move on. Escape and outside-click still restore.
|
|
5972
|
-
|
|
6022
|
+
// When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
|
|
6023
|
+
// its own focus restoration — skip the generic trigger focus to avoid races.
|
|
6024
|
+
if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
|
|
5973
6025
|
// wait til the bib gets fully closed and rendered
|
|
5974
6026
|
setTimeout(() => {
|
|
5975
6027
|
// Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
|
|
@@ -5981,7 +6033,7 @@ class AuroDropdown extends AuroElement$1 {
|
|
|
5981
6033
|
return;
|
|
5982
6034
|
}
|
|
5983
6035
|
// Restore focus to the trigger.
|
|
5984
|
-
this.
|
|
6036
|
+
this.focusTrigger();
|
|
5985
6037
|
});
|
|
5986
6038
|
}
|
|
5987
6039
|
}
|
|
@@ -13717,7 +13717,7 @@ class AuroBibtemplate extends i$1 {
|
|
|
13717
13717
|
}
|
|
13718
13718
|
}
|
|
13719
13719
|
|
|
13720
|
-
var formkitVersion$2 = '
|
|
13720
|
+
var formkitVersion$2 = '202607161943';
|
|
13721
13721
|
|
|
13722
13722
|
let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$5`${s$5(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$4 = 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$3=i$3`: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}
|
|
13723
13723
|
`,u$6=i$3`.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}}
|
|
@@ -19469,7 +19469,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
|
|
|
19469
19469
|
}
|
|
19470
19470
|
};
|
|
19471
19471
|
|
|
19472
|
-
var formkitVersion$1 = '
|
|
19472
|
+
var formkitVersion$1 = '202607161943';
|
|
19473
19473
|
|
|
19474
19474
|
let AuroElement$2 = class AuroElement extends i$1 {
|
|
19475
19475
|
static get properties() {
|
|
@@ -19598,7 +19598,6 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
19598
19598
|
static get shadowRootOptions() {
|
|
19599
19599
|
return {
|
|
19600
19600
|
...AuroElement$2.shadowRootOptions,
|
|
19601
|
-
delegatesFocus: true,
|
|
19602
19601
|
};
|
|
19603
19602
|
}
|
|
19604
19603
|
|
|
@@ -19610,6 +19609,15 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
19610
19609
|
this.matchWidth = false;
|
|
19611
19610
|
this.noHideOnThisFocusLoss = false;
|
|
19612
19611
|
|
|
19612
|
+
/**
|
|
19613
|
+
* When true, the dropdown skips its generic focus restoration on close.
|
|
19614
|
+
* Set by consumers (e.g. combobox) that manage their own focus routing
|
|
19615
|
+
* via setClearBtnFocus / setInputFocus / keyboard strategy.
|
|
19616
|
+
* Separate from noHideOnThisFocusLoss (which controls auto-close behavior).
|
|
19617
|
+
* @private
|
|
19618
|
+
*/
|
|
19619
|
+
this.noFocusRestoreOnClose = false;
|
|
19620
|
+
|
|
19613
19621
|
this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
|
|
19614
19622
|
|
|
19615
19623
|
// Layout Config
|
|
@@ -19765,7 +19773,49 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
19765
19773
|
focusables[0].focus();
|
|
19766
19774
|
}
|
|
19767
19775
|
} else {
|
|
19776
|
+
this.focusTrigger();
|
|
19777
|
+
}
|
|
19778
|
+
}
|
|
19779
|
+
|
|
19780
|
+
/**
|
|
19781
|
+
* Focus the trigger content. When the trigger wrapper itself is focusable
|
|
19782
|
+
* (has tabindex), focus it directly. Otherwise, focus the first focusable
|
|
19783
|
+
* element slotted into the trigger slot (e.g. the auro-input).
|
|
19784
|
+
* @private
|
|
19785
|
+
*/
|
|
19786
|
+
focusTrigger() {
|
|
19787
|
+
if (this.trigger.hasAttribute('tabindex')) {
|
|
19768
19788
|
this.trigger.focus();
|
|
19789
|
+
} else {
|
|
19790
|
+
// Slotted content isn't a DOM child of the trigger div, so
|
|
19791
|
+
// getFocusableElements can't find it. Query assigned nodes directly.
|
|
19792
|
+
const slot = this.trigger.querySelector('slot[name="trigger"]');
|
|
19793
|
+
if (slot) {
|
|
19794
|
+
const assigned = slot.assignedElements();
|
|
19795
|
+
for (const el of assigned) {
|
|
19796
|
+
if (el.hasAttribute('disabled')) {
|
|
19797
|
+
continue;
|
|
19798
|
+
}
|
|
19799
|
+
// Try finding a focusable descendant first (handles non-focusable
|
|
19800
|
+
// wrappers like <div> containing a <button>). If none found, try
|
|
19801
|
+
// focusing the element directly (works for custom elements like
|
|
19802
|
+
// auro-input that have delegatesFocus or a custom focus() method).
|
|
19803
|
+
const descendants = getFocusableElements(el);
|
|
19804
|
+
if (descendants.length > 0) {
|
|
19805
|
+
descendants[0].focus();
|
|
19806
|
+
return;
|
|
19807
|
+
}
|
|
19808
|
+
el.focus();
|
|
19809
|
+
if (document.activeElement === el) {
|
|
19810
|
+
return;
|
|
19811
|
+
}
|
|
19812
|
+
}
|
|
19813
|
+
}
|
|
19814
|
+
// Fallback: try DOM children (non-slotted content)
|
|
19815
|
+
const focusables = getFocusableElements(this.trigger);
|
|
19816
|
+
if (focusables.length > 0) {
|
|
19817
|
+
focusables[0].focus();
|
|
19818
|
+
}
|
|
19769
19819
|
}
|
|
19770
19820
|
}
|
|
19771
19821
|
|
|
@@ -20218,15 +20268,17 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
20218
20268
|
}
|
|
20219
20269
|
|
|
20220
20270
|
const eventType = event.detail.eventType || "unknown";
|
|
20221
|
-
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
|
|
20222
|
-
this.
|
|
20271
|
+
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
|
|
20272
|
+
this.focusTrigger();
|
|
20223
20273
|
}
|
|
20224
20274
|
|
|
20225
20275
|
|
|
20226
20276
|
// On Tab-driven close (eventType "focusloss"), let focus advance naturally
|
|
20227
20277
|
// — restoring to the trigger would trap the user on this dropdown, forcing
|
|
20228
20278
|
// an extra Tab to move on. Escape and outside-click still restore.
|
|
20229
|
-
|
|
20279
|
+
// When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
|
|
20280
|
+
// its own focus restoration — skip the generic trigger focus to avoid races.
|
|
20281
|
+
if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
|
|
20230
20282
|
// wait til the bib gets fully closed and rendered
|
|
20231
20283
|
setTimeout(() => {
|
|
20232
20284
|
// Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
|
|
@@ -20238,7 +20290,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
20238
20290
|
return;
|
|
20239
20291
|
}
|
|
20240
20292
|
// Restore focus to the trigger.
|
|
20241
|
-
this.
|
|
20293
|
+
this.focusTrigger();
|
|
20242
20294
|
});
|
|
20243
20295
|
}
|
|
20244
20296
|
}
|
|
@@ -31419,9 +31471,10 @@ class DomHandler {
|
|
|
31419
31471
|
class BaseInput extends AuroElement$1 {
|
|
31420
31472
|
|
|
31421
31473
|
// Delegate focus to the native <input> inside the shadow root so that
|
|
31422
|
-
//
|
|
31423
|
-
//
|
|
31424
|
-
//
|
|
31474
|
+
// clicking anywhere on the input wrapper focuses the native input, and
|
|
31475
|
+
// programmatic .focus() calls on elements in the shadow DOM work correctly.
|
|
31476
|
+
// The initial-load focus theft was caused by the static `autofocus`
|
|
31477
|
+
// attribute on the bib input (now conditional), not by delegatesFocus.
|
|
31425
31478
|
static get shadowRootOptions() {
|
|
31426
31479
|
return {
|
|
31427
31480
|
...AuroElement$1.shadowRootOptions,
|
|
@@ -33098,7 +33151,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
|
|
|
33098
33151
|
}
|
|
33099
33152
|
};
|
|
33100
33153
|
|
|
33101
|
-
var formkitVersion = '
|
|
33154
|
+
var formkitVersion = '202607161943';
|
|
33102
33155
|
|
|
33103
33156
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
33104
33157
|
// See LICENSE in the project root for license information.
|
|
@@ -33384,15 +33437,50 @@ class AuroInput extends BaseInput {
|
|
|
33384
33437
|
* @returns {void}
|
|
33385
33438
|
*/
|
|
33386
33439
|
checkDisplayValueSlotChange() {
|
|
33387
|
-
|
|
33388
|
-
|
|
33389
|
-
|
|
33390
|
-
|
|
33391
|
-
|
|
33392
|
-
|
|
33440
|
+
const slot = this.shadowRoot?.querySelector('slot[name="displayValue"]');
|
|
33441
|
+
if (!slot) {
|
|
33442
|
+
// Shadow slot not yet rendered — fall back to checking light-DOM
|
|
33443
|
+
// children so hasDisplayValueContent isn't stuck false when called
|
|
33444
|
+
// before firstUpdated (e.g. from auro-combobox during mount).
|
|
33445
|
+
// Check for any element (including custom elements like <auro-icon>
|
|
33446
|
+
// that render via shadow DOM with no text content).
|
|
33447
|
+
const lightDomNodes = Array.from(this.querySelectorAll('[slot="displayValue"]:not(slot)'));
|
|
33448
|
+
const hasContent = lightDomNodes.some((node) => (
|
|
33449
|
+
node.textContent.trim().length > 0 ||
|
|
33450
|
+
node.children.length > 0 ||
|
|
33451
|
+
node.shadowRoot !== null
|
|
33452
|
+
));
|
|
33453
|
+
if (this.hasDisplayValueContent !== hasContent) {
|
|
33454
|
+
this.hasDisplayValueContent = hasContent;
|
|
33455
|
+
this.requestUpdate();
|
|
33456
|
+
}
|
|
33457
|
+
return;
|
|
33458
|
+
}
|
|
33393
33459
|
const nodes = slot.assignedNodes({ flatten: true });
|
|
33394
33460
|
|
|
33395
|
-
|
|
33461
|
+
// Check for actual visible content, not just node existence.
|
|
33462
|
+
// An empty <span slot="displayValue"></span> forwarded from the
|
|
33463
|
+
// consumer should not be treated as "has content" — it causes the
|
|
33464
|
+
// displayValue wrapper to render (with hasContent class) but show
|
|
33465
|
+
// nothing, blocking the combobox's synthetic displayValue from
|
|
33466
|
+
// being visible on preset/deeplink load.
|
|
33467
|
+
// Custom elements (e.g. <auro-icon>) that render via shadow DOM are
|
|
33468
|
+
// treated as content even when they have no text or light-DOM children.
|
|
33469
|
+
const hasContent = nodes.some((node) => {
|
|
33470
|
+
if (node.nodeType === Node.TEXT_NODE) {
|
|
33471
|
+
return node.textContent.trim().length > 0;
|
|
33472
|
+
}
|
|
33473
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
33474
|
+
return node.textContent.trim().length > 0 ||
|
|
33475
|
+
node.children.length > 0 ||
|
|
33476
|
+
node.shadowRoot !== null;
|
|
33477
|
+
}
|
|
33478
|
+
return false;
|
|
33479
|
+
});
|
|
33480
|
+
if (this.hasDisplayValueContent !== hasContent) {
|
|
33481
|
+
this.hasDisplayValueContent = hasContent;
|
|
33482
|
+
this.requestUpdate();
|
|
33483
|
+
}
|
|
33396
33484
|
}
|
|
33397
33485
|
|
|
33398
33486
|
firstUpdated() {
|