@aurodesignsystem-dev/auro-formkit 0.0.0-pr1554.12 → 0.0.0-pr1554.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (45) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +32 -39
  7. package/components/combobox/demo/getting-started.min.js +32 -39
  8. package/components/combobox/demo/index.min.js +32 -39
  9. package/components/combobox/dist/index.js +32 -39
  10. package/components/combobox/dist/registered.js +32 -39
  11. package/components/counter/demo/customize.min.js +20 -14
  12. package/components/counter/demo/index.min.js +20 -14
  13. package/components/counter/dist/index.js +20 -14
  14. package/components/counter/dist/registered.js +20 -14
  15. package/components/datepicker/demo/customize.min.js +21 -15
  16. package/components/datepicker/demo/index.min.js +21 -15
  17. package/components/datepicker/dist/index.js +21 -15
  18. package/components/datepicker/dist/registered.js +21 -15
  19. package/components/dropdown/demo/customize.min.js +19 -13
  20. package/components/dropdown/demo/getting-started.min.js +19 -13
  21. package/components/dropdown/demo/index.min.js +19 -13
  22. package/components/dropdown/dist/auro-dropdown.d.ts +8 -0
  23. package/components/dropdown/dist/index.js +19 -13
  24. package/components/dropdown/dist/registered.js +19 -13
  25. package/components/form/demo/customize.min.js +96 -85
  26. package/components/form/demo/getting-started.min.js +96 -85
  27. package/components/form/demo/index.min.js +96 -85
  28. package/components/form/demo/registerDemoDeps.min.js +96 -85
  29. package/components/input/demo/customize.min.js +1 -1
  30. package/components/input/demo/getting-started.min.js +1 -1
  31. package/components/input/demo/index.min.js +1 -1
  32. package/components/input/dist/index.js +1 -1
  33. package/components/input/dist/registered.js +1 -1
  34. package/components/radio/demo/customize.min.js +1 -1
  35. package/components/radio/demo/getting-started.min.js +1 -1
  36. package/components/radio/demo/index.min.js +1 -1
  37. package/components/radio/dist/index.js +1 -1
  38. package/components/radio/dist/registered.js +1 -1
  39. package/components/select/demo/customize.min.js +20 -14
  40. package/components/select/demo/getting-started.min.js +20 -14
  41. package/components/select/demo/index.min.js +20 -14
  42. package/components/select/dist/index.js +20 -14
  43. package/components/select/dist/registered.js +20 -14
  44. package/custom-elements.json +10 -0
  45. package/package.json +1 -1
@@ -4904,7 +4904,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
4904
4904
  }
4905
4905
  };
4906
4906
 
4907
- var formkitVersion$2 = '202607160725';
4907
+ var formkitVersion$2 = '202607160755';
4908
4908
 
4909
4909
  let AuroElement$2 = class AuroElement extends LitElement {
4910
4910
  static get properties() {
@@ -5044,6 +5044,15 @@ class AuroDropdown extends AuroElement$2 {
5044
5044
  this.matchWidth = false;
5045
5045
  this.noHideOnThisFocusLoss = false;
5046
5046
 
5047
+ /**
5048
+ * When true, the dropdown skips its generic focus restoration on close.
5049
+ * Set by consumers (e.g. combobox) that manage their own focus routing
5050
+ * via setClearBtnFocus / setInputFocus / keyboard strategy.
5051
+ * Separate from noHideOnThisFocusLoss (which controls auto-close behavior).
5052
+ * @private
5053
+ */
5054
+ this.noFocusRestoreOnClose = false;
5055
+
5047
5056
  this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
5048
5057
 
5049
5058
  // Layout Config
@@ -5217,25 +5226,22 @@ class AuroDropdown extends AuroElement$2 {
5217
5226
  // getFocusableElements can't find it. Query assigned nodes directly.
5218
5227
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5219
5228
  if (slot) {
5220
- const assigned = slot.assignedElements({ flatten: true });
5229
+ const assigned = slot.assignedElements();
5221
5230
  for (const el of assigned) {
5222
5231
  if (el.hasAttribute('disabled')) {
5223
5232
  continue;
5224
5233
  }
5225
-
5226
- // Try focusing a focusable descendant first (handles non-focusable wrappers).
5234
+ // Try finding a focusable descendant first (handles non-focusable
5235
+ // wrappers like <div> containing a <button>). If none found, try
5236
+ // focusing the element directly (works for custom elements like
5237
+ // auro-input that have delegatesFocus or a custom focus() method).
5227
5238
  const descendants = getFocusableElements(el);
5228
5239
  if (descendants.length > 0) {
5229
5240
  descendants[0].focus();
5230
5241
  return;
5231
5242
  }
5232
-
5233
- // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5234
- const prevActive = document.activeElement;
5235
5243
  el.focus();
5236
- if (document.activeElement !== prevActive) {
5237
- return;
5238
- }
5244
+ return;
5239
5245
  }
5240
5246
  }
5241
5247
  // Fallback: try DOM children (non-slotted content)
@@ -5695,7 +5701,7 @@ class AuroDropdown extends AuroElement$2 {
5695
5701
  }
5696
5702
 
5697
5703
  const eventType = event.detail.eventType || "unknown";
5698
- if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noHideOnThisFocusLoss) {
5704
+ if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
5699
5705
  this.focusTrigger();
5700
5706
  }
5701
5707
 
@@ -5703,9 +5709,9 @@ class AuroDropdown extends AuroElement$2 {
5703
5709
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
5704
5710
  // — restoring to the trigger would trap the user on this dropdown, forcing
5705
5711
  // an extra Tab to move on. Escape and outside-click still restore.
5706
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
5712
+ // When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
5707
5713
  // its own focus restoration — skip the generic trigger focus to avoid races.
5708
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
5714
+ if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
5709
5715
  // wait til the bib gets fully closed and rendered
5710
5716
  setTimeout(() => {
5711
5717
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -18571,7 +18577,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
18571
18577
  }
18572
18578
  };
18573
18579
 
18574
- var formkitVersion$1 = '202607160725';
18580
+ var formkitVersion$1 = '202607160755';
18575
18581
 
18576
18582
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18577
18583
  // See LICENSE in the project root for license information.
@@ -19719,7 +19725,7 @@ class AuroBibtemplate extends LitElement {
19719
19725
  }
19720
19726
  }
19721
19727
 
19722
- var formkitVersion = '202607160725';
19728
+ var formkitVersion = '202607160755';
19723
19729
 
19724
19730
  var styleCss$1 = css`.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}`;
19725
19731
 
@@ -20776,30 +20782,13 @@ class AuroCombobox extends AuroElement {
20776
20782
  // human-readable label (e.g. "Seattle, WA"). For consumers where
20777
20783
  // value ≠ label, this produces a brief flash of the raw value until
20778
20784
  // the option elements load and updateTriggerTextDisplay re-runs with
20779
- // the correct label.
20780
-
20781
- // Avoid adding synthetic content when a consumer already provides
20782
- // displayValue content via the forwarded slot.
20783
- const forwarderSlot = this.input.querySelector('slot[name="displayValue"][slot="displayValue"]');
20784
- const hasSlottedDisplayValue = Boolean(forwarderSlot?.assignedNodes({ flatten: true }).some((node) => {
20785
- if (node.nodeType === Node.TEXT_NODE) {
20786
- return node.textContent.trim().length > 0;
20787
- }
20788
- if (node.nodeType === Node.ELEMENT_NODE) {
20789
- return node.textContent.trim().length > 0 ||
20790
- node.children.length > 0 ||
20791
- node.shadowRoot !== null;
20792
- }
20793
- return false;
20794
- }));
20795
-
20796
- if (!hasSlottedDisplayValue) {
20797
- const syntheticDV = document.createElement('span');
20798
- syntheticDV.setAttribute('slot', 'displayValue');
20799
- syntheticDV.textContent = this.value;
20800
- this.input.appendChild(syntheticDV);
20801
- }
20802
-
20785
+ // the correct label. This is intentionally preferred over a blank
20786
+ // state — the displayValueInTrigger.remove() cleanup above ensures
20787
+ // this placeholder is replaced once the real option is available.
20788
+ const syntheticDV = document.createElement('span');
20789
+ syntheticDV.setAttribute('slot', 'displayValue');
20790
+ syntheticDV.textContent = this.value;
20791
+ this.input.appendChild(syntheticDV);
20803
20792
  if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20804
20793
  this.input.checkDisplayValueSlotChange();
20805
20794
  this.input.requestUpdate();
@@ -20975,6 +20964,10 @@ class AuroCombobox extends AuroElement {
20975
20964
  // from combobox's light DOM and won't be detected by dropdown's contains() check.
20976
20965
  this.dropdown.noHideOnThisFocusLoss = true;
20977
20966
 
20967
+ // Suppress the dropdown's generic focus restoration on close — the combobox
20968
+ // manages its own focus via setClearBtnFocus / setInputFocus / keyboard strategy.
20969
+ this.dropdown.noFocusRestoreOnClose = true;
20970
+
20978
20971
  // Listen for the ID to be added to the dropdown so we can capture it and use it for accessibility.
20979
20972
  this.dropdown.addEventListener('auroDropdown-idAdded', (event) => {
20980
20973
  this.dropdownId = event.detail.id;
@@ -1114,7 +1114,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
1114
1114
  }
1115
1115
  };
1116
1116
 
1117
- var formkitVersion$1 = '202607160725';
1117
+ var formkitVersion$1 = '202607160755';
1118
1118
 
1119
1119
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1120
1120
  // See LICENSE in the project root for license information.
@@ -5280,7 +5280,7 @@ class AuroHelpText extends i$2 {
5280
5280
  }
5281
5281
  }
5282
5282
 
5283
- var formkitVersion = '202607160725';
5283
+ var formkitVersion = '202607160755';
5284
5284
 
5285
5285
  let AuroElement$1 = class AuroElement extends i$2 {
5286
5286
  static get properties() {
@@ -5420,6 +5420,15 @@ class AuroDropdown extends AuroElement$1 {
5420
5420
  this.matchWidth = false;
5421
5421
  this.noHideOnThisFocusLoss = false;
5422
5422
 
5423
+ /**
5424
+ * When true, the dropdown skips its generic focus restoration on close.
5425
+ * Set by consumers (e.g. combobox) that manage their own focus routing
5426
+ * via setClearBtnFocus / setInputFocus / keyboard strategy.
5427
+ * Separate from noHideOnThisFocusLoss (which controls auto-close behavior).
5428
+ * @private
5429
+ */
5430
+ this.noFocusRestoreOnClose = false;
5431
+
5423
5432
  this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
5424
5433
 
5425
5434
  // Layout Config
@@ -5593,25 +5602,22 @@ class AuroDropdown extends AuroElement$1 {
5593
5602
  // getFocusableElements can't find it. Query assigned nodes directly.
5594
5603
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5595
5604
  if (slot) {
5596
- const assigned = slot.assignedElements({ flatten: true });
5605
+ const assigned = slot.assignedElements();
5597
5606
  for (const el of assigned) {
5598
5607
  if (el.hasAttribute('disabled')) {
5599
5608
  continue;
5600
5609
  }
5601
-
5602
- // Try focusing a focusable descendant first (handles non-focusable wrappers).
5610
+ // Try finding a focusable descendant first (handles non-focusable
5611
+ // wrappers like <div> containing a <button>). If none found, try
5612
+ // focusing the element directly (works for custom elements like
5613
+ // auro-input that have delegatesFocus or a custom focus() method).
5603
5614
  const descendants = getFocusableElements(el);
5604
5615
  if (descendants.length > 0) {
5605
5616
  descendants[0].focus();
5606
5617
  return;
5607
5618
  }
5608
-
5609
- // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5610
- const prevActive = document.activeElement;
5611
5619
  el.focus();
5612
- if (document.activeElement !== prevActive) {
5613
- return;
5614
- }
5620
+ return;
5615
5621
  }
5616
5622
  }
5617
5623
  // Fallback: try DOM children (non-slotted content)
@@ -6071,7 +6077,7 @@ class AuroDropdown extends AuroElement$1 {
6071
6077
  }
6072
6078
 
6073
6079
  const eventType = event.detail.eventType || "unknown";
6074
- if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noHideOnThisFocusLoss) {
6080
+ if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
6075
6081
  this.focusTrigger();
6076
6082
  }
6077
6083
 
@@ -6079,9 +6085,9 @@ class AuroDropdown extends AuroElement$1 {
6079
6085
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
6080
6086
  // — restoring to the trigger would trap the user on this dropdown, forcing
6081
6087
  // an extra Tab to move on. Escape and outside-click still restore.
6082
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
6088
+ // When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
6083
6089
  // its own focus restoration — skip the generic trigger focus to avoid races.
6084
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
6090
+ if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
6085
6091
  // wait til the bib gets fully closed and rendered
6086
6092
  setTimeout(() => {
6087
6093
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -1114,7 +1114,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
1114
1114
  }
1115
1115
  };
1116
1116
 
1117
- var formkitVersion$1 = '202607160725';
1117
+ var formkitVersion$1 = '202607160755';
1118
1118
 
1119
1119
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1120
1120
  // See LICENSE in the project root for license information.
@@ -5280,7 +5280,7 @@ class AuroHelpText extends i$2 {
5280
5280
  }
5281
5281
  }
5282
5282
 
5283
- var formkitVersion = '202607160725';
5283
+ var formkitVersion = '202607160755';
5284
5284
 
5285
5285
  let AuroElement$1 = class AuroElement extends i$2 {
5286
5286
  static get properties() {
@@ -5420,6 +5420,15 @@ class AuroDropdown extends AuroElement$1 {
5420
5420
  this.matchWidth = false;
5421
5421
  this.noHideOnThisFocusLoss = false;
5422
5422
 
5423
+ /**
5424
+ * When true, the dropdown skips its generic focus restoration on close.
5425
+ * Set by consumers (e.g. combobox) that manage their own focus routing
5426
+ * via setClearBtnFocus / setInputFocus / keyboard strategy.
5427
+ * Separate from noHideOnThisFocusLoss (which controls auto-close behavior).
5428
+ * @private
5429
+ */
5430
+ this.noFocusRestoreOnClose = false;
5431
+
5423
5432
  this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
5424
5433
 
5425
5434
  // Layout Config
@@ -5593,25 +5602,22 @@ class AuroDropdown extends AuroElement$1 {
5593
5602
  // getFocusableElements can't find it. Query assigned nodes directly.
5594
5603
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5595
5604
  if (slot) {
5596
- const assigned = slot.assignedElements({ flatten: true });
5605
+ const assigned = slot.assignedElements();
5597
5606
  for (const el of assigned) {
5598
5607
  if (el.hasAttribute('disabled')) {
5599
5608
  continue;
5600
5609
  }
5601
-
5602
- // Try focusing a focusable descendant first (handles non-focusable wrappers).
5610
+ // Try finding a focusable descendant first (handles non-focusable
5611
+ // wrappers like <div> containing a <button>). If none found, try
5612
+ // focusing the element directly (works for custom elements like
5613
+ // auro-input that have delegatesFocus or a custom focus() method).
5603
5614
  const descendants = getFocusableElements(el);
5604
5615
  if (descendants.length > 0) {
5605
5616
  descendants[0].focus();
5606
5617
  return;
5607
5618
  }
5608
-
5609
- // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5610
- const prevActive = document.activeElement;
5611
5619
  el.focus();
5612
- if (document.activeElement !== prevActive) {
5613
- return;
5614
- }
5620
+ return;
5615
5621
  }
5616
5622
  }
5617
5623
  // Fallback: try DOM children (non-slotted content)
@@ -6071,7 +6077,7 @@ class AuroDropdown extends AuroElement$1 {
6071
6077
  }
6072
6078
 
6073
6079
  const eventType = event.detail.eventType || "unknown";
6074
- if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noHideOnThisFocusLoss) {
6080
+ if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
6075
6081
  this.focusTrigger();
6076
6082
  }
6077
6083
 
@@ -6079,9 +6085,9 @@ class AuroDropdown extends AuroElement$1 {
6079
6085
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
6080
6086
  // — restoring to the trigger would trap the user on this dropdown, forcing
6081
6087
  // an extra Tab to move on. Escape and outside-click still restore.
6082
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
6088
+ // When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
6083
6089
  // its own focus restoration — skip the generic trigger focus to avoid races.
6084
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
6090
+ if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
6085
6091
  // wait til the bib gets fully closed and rendered
6086
6092
  setTimeout(() => {
6087
6093
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -1064,7 +1064,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
1064
1064
  }
1065
1065
  };
1066
1066
 
1067
- var formkitVersion$1 = '202607160725';
1067
+ var formkitVersion$1 = '202607160755';
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 = '202607160725';
5215
+ var formkitVersion = '202607160755';
5216
5216
 
5217
5217
  let AuroElement$1 = class AuroElement extends LitElement {
5218
5218
  static get properties() {
@@ -5352,6 +5352,15 @@ class AuroDropdown extends AuroElement$1 {
5352
5352
  this.matchWidth = false;
5353
5353
  this.noHideOnThisFocusLoss = false;
5354
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
+
5355
5364
  this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
5356
5365
 
5357
5366
  // Layout Config
@@ -5525,25 +5534,22 @@ class AuroDropdown extends AuroElement$1 {
5525
5534
  // getFocusableElements can't find it. Query assigned nodes directly.
5526
5535
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5527
5536
  if (slot) {
5528
- const assigned = slot.assignedElements({ flatten: true });
5537
+ const assigned = slot.assignedElements();
5529
5538
  for (const el of assigned) {
5530
5539
  if (el.hasAttribute('disabled')) {
5531
5540
  continue;
5532
5541
  }
5533
-
5534
- // Try focusing a focusable descendant first (handles non-focusable wrappers).
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).
5535
5546
  const descendants = getFocusableElements(el);
5536
5547
  if (descendants.length > 0) {
5537
5548
  descendants[0].focus();
5538
5549
  return;
5539
5550
  }
5540
-
5541
- // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5542
- const prevActive = document.activeElement;
5543
5551
  el.focus();
5544
- if (document.activeElement !== prevActive) {
5545
- return;
5546
- }
5552
+ return;
5547
5553
  }
5548
5554
  }
5549
5555
  // Fallback: try DOM children (non-slotted content)
@@ -6003,7 +6009,7 @@ class AuroDropdown extends AuroElement$1 {
6003
6009
  }
6004
6010
 
6005
6011
  const eventType = event.detail.eventType || "unknown";
6006
- if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noHideOnThisFocusLoss) {
6012
+ if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
6007
6013
  this.focusTrigger();
6008
6014
  }
6009
6015
 
@@ -6011,9 +6017,9 @@ class AuroDropdown extends AuroElement$1 {
6011
6017
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
6012
6018
  // — restoring to the trigger would trap the user on this dropdown, forcing
6013
6019
  // an extra Tab to move on. Escape and outside-click still restore.
6014
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
6020
+ // When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
6015
6021
  // its own focus restoration — skip the generic trigger focus to avoid races.
6016
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
6022
+ if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
6017
6023
  // wait til the bib gets fully closed and rendered
6018
6024
  setTimeout(() => {
6019
6025
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -1064,7 +1064,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
1064
1064
  }
1065
1065
  };
1066
1066
 
1067
- var formkitVersion$1 = '202607160725';
1067
+ var formkitVersion$1 = '202607160755';
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 = '202607160725';
5215
+ var formkitVersion = '202607160755';
5216
5216
 
5217
5217
  let AuroElement$1 = class AuroElement extends LitElement {
5218
5218
  static get properties() {
@@ -5352,6 +5352,15 @@ class AuroDropdown extends AuroElement$1 {
5352
5352
  this.matchWidth = false;
5353
5353
  this.noHideOnThisFocusLoss = false;
5354
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
+
5355
5364
  this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
5356
5365
 
5357
5366
  // Layout Config
@@ -5525,25 +5534,22 @@ class AuroDropdown extends AuroElement$1 {
5525
5534
  // getFocusableElements can't find it. Query assigned nodes directly.
5526
5535
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5527
5536
  if (slot) {
5528
- const assigned = slot.assignedElements({ flatten: true });
5537
+ const assigned = slot.assignedElements();
5529
5538
  for (const el of assigned) {
5530
5539
  if (el.hasAttribute('disabled')) {
5531
5540
  continue;
5532
5541
  }
5533
-
5534
- // Try focusing a focusable descendant first (handles non-focusable wrappers).
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).
5535
5546
  const descendants = getFocusableElements(el);
5536
5547
  if (descendants.length > 0) {
5537
5548
  descendants[0].focus();
5538
5549
  return;
5539
5550
  }
5540
-
5541
- // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5542
- const prevActive = document.activeElement;
5543
5551
  el.focus();
5544
- if (document.activeElement !== prevActive) {
5545
- return;
5546
- }
5552
+ return;
5547
5553
  }
5548
5554
  }
5549
5555
  // Fallback: try DOM children (non-slotted content)
@@ -6003,7 +6009,7 @@ class AuroDropdown extends AuroElement$1 {
6003
6009
  }
6004
6010
 
6005
6011
  const eventType = event.detail.eventType || "unknown";
6006
- if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noHideOnThisFocusLoss) {
6012
+ if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
6007
6013
  this.focusTrigger();
6008
6014
  }
6009
6015
 
@@ -6011,9 +6017,9 @@ class AuroDropdown extends AuroElement$1 {
6011
6017
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
6012
6018
  // — restoring to the trigger would trap the user on this dropdown, forcing
6013
6019
  // an extra Tab to move on. Escape and outside-click still restore.
6014
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
6020
+ // When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
6015
6021
  // its own focus restoration — skip the generic trigger focus to avoid races.
6016
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
6022
+ if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
6017
6023
  // wait til the bib gets fully closed and rendered
6018
6024
  setTimeout(() => {
6019
6025
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -13717,7 +13717,7 @@ class AuroBibtemplate extends i$1 {
13717
13717
  }
13718
13718
  }
13719
13719
 
13720
- var formkitVersion$2 = '202607160725';
13720
+ var formkitVersion$2 = '202607160755';
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 = '202607160725';
19472
+ var formkitVersion$1 = '202607160755';
19473
19473
 
19474
19474
  let AuroElement$2 = class AuroElement extends i$1 {
19475
19475
  static get properties() {
@@ -19609,6 +19609,15 @@ class AuroDropdown extends AuroElement$2 {
19609
19609
  this.matchWidth = false;
19610
19610
  this.noHideOnThisFocusLoss = false;
19611
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
+
19612
19621
  this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
19613
19622
 
19614
19623
  // Layout Config
@@ -19782,25 +19791,22 @@ class AuroDropdown extends AuroElement$2 {
19782
19791
  // getFocusableElements can't find it. Query assigned nodes directly.
19783
19792
  const slot = this.trigger.querySelector('slot[name="trigger"]');
19784
19793
  if (slot) {
19785
- const assigned = slot.assignedElements({ flatten: true });
19794
+ const assigned = slot.assignedElements();
19786
19795
  for (const el of assigned) {
19787
19796
  if (el.hasAttribute('disabled')) {
19788
19797
  continue;
19789
19798
  }
19790
-
19791
- // Try focusing a focusable descendant first (handles non-focusable wrappers).
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).
19792
19803
  const descendants = getFocusableElements(el);
19793
19804
  if (descendants.length > 0) {
19794
19805
  descendants[0].focus();
19795
19806
  return;
19796
19807
  }
19797
-
19798
- // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
19799
- const prevActive = document.activeElement;
19800
19808
  el.focus();
19801
- if (document.activeElement !== prevActive) {
19802
- return;
19803
- }
19809
+ return;
19804
19810
  }
19805
19811
  }
19806
19812
  // Fallback: try DOM children (non-slotted content)
@@ -20260,7 +20266,7 @@ class AuroDropdown extends AuroElement$2 {
20260
20266
  }
20261
20267
 
20262
20268
  const eventType = event.detail.eventType || "unknown";
20263
- if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noHideOnThisFocusLoss) {
20269
+ if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
20264
20270
  this.focusTrigger();
20265
20271
  }
20266
20272
 
@@ -20268,9 +20274,9 @@ class AuroDropdown extends AuroElement$2 {
20268
20274
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
20269
20275
  // — restoring to the trigger would trap the user on this dropdown, forcing
20270
20276
  // an extra Tab to move on. Escape and outside-click still restore.
20271
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
20277
+ // When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
20272
20278
  // its own focus restoration — skip the generic trigger focus to avoid races.
20273
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
20279
+ if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
20274
20280
  // wait til the bib gets fully closed and rendered
20275
20281
  setTimeout(() => {
20276
20282
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -33143,7 +33149,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
33143
33149
  }
33144
33150
  };
33145
33151
 
33146
- var formkitVersion = '202607160725';
33152
+ var formkitVersion = '202607160755';
33147
33153
 
33148
33154
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
33149
33155
  // See LICENSE in the project root for license information.