@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
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202607160725';
1278
+ var formkitVersion = '202607160755';
1279
1279
 
1280
1280
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1281
1281
  // See LICENSE in the project root for license information.
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202607160725';
1278
+ var formkitVersion = '202607160755';
1279
1279
 
1280
1280
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1281
1281
  // See LICENSE in the project root for license information.
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202607160725';
1278
+ var formkitVersion = '202607160755';
1279
1279
 
1280
1280
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1281
1281
  // See LICENSE in the project root for license information.
@@ -1228,7 +1228,7 @@ class AuroHelpText extends LitElement {
1228
1228
  }
1229
1229
  }
1230
1230
 
1231
- var formkitVersion = '202607160725';
1231
+ var formkitVersion = '202607160755';
1232
1232
 
1233
1233
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1234
1234
  // See LICENSE in the project root for license information.
@@ -1228,7 +1228,7 @@ class AuroHelpText extends LitElement {
1228
1228
  }
1229
1229
  }
1230
1230
 
1231
- var formkitVersion = '202607160725';
1231
+ var formkitVersion = '202607160755';
1232
1232
 
1233
1233
  // Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
1234
1234
  // See LICENSE in the project root for license information.
@@ -4971,7 +4971,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4971
4971
  }
4972
4972
  };
4973
4973
 
4974
- var formkitVersion$2 = '202607160725';
4974
+ var formkitVersion$2 = '202607160755';
4975
4975
 
4976
4976
  let AuroElement$2 = class AuroElement extends i$3 {
4977
4977
  static get properties() {
@@ -5111,6 +5111,15 @@ class AuroDropdown extends AuroElement$2 {
5111
5111
  this.matchWidth = false;
5112
5112
  this.noHideOnThisFocusLoss = false;
5113
5113
 
5114
+ /**
5115
+ * When true, the dropdown skips its generic focus restoration on close.
5116
+ * Set by consumers (e.g. combobox) that manage their own focus routing
5117
+ * via setClearBtnFocus / setInputFocus / keyboard strategy.
5118
+ * Separate from noHideOnThisFocusLoss (which controls auto-close behavior).
5119
+ * @private
5120
+ */
5121
+ this.noFocusRestoreOnClose = false;
5122
+
5114
5123
  this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
5115
5124
 
5116
5125
  // Layout Config
@@ -5284,25 +5293,22 @@ class AuroDropdown extends AuroElement$2 {
5284
5293
  // getFocusableElements can't find it. Query assigned nodes directly.
5285
5294
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5286
5295
  if (slot) {
5287
- const assigned = slot.assignedElements({ flatten: true });
5296
+ const assigned = slot.assignedElements();
5288
5297
  for (const el of assigned) {
5289
5298
  if (el.hasAttribute('disabled')) {
5290
5299
  continue;
5291
5300
  }
5292
-
5293
- // Try focusing a focusable descendant first (handles non-focusable wrappers).
5301
+ // Try finding a focusable descendant first (handles non-focusable
5302
+ // wrappers like <div> containing a <button>). If none found, try
5303
+ // focusing the element directly (works for custom elements like
5304
+ // auro-input that have delegatesFocus or a custom focus() method).
5294
5305
  const descendants = getFocusableElements(el);
5295
5306
  if (descendants.length > 0) {
5296
5307
  descendants[0].focus();
5297
5308
  return;
5298
5309
  }
5299
-
5300
- // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5301
- const prevActive = document.activeElement;
5302
5310
  el.focus();
5303
- if (document.activeElement !== prevActive) {
5304
- return;
5305
- }
5311
+ return;
5306
5312
  }
5307
5313
  }
5308
5314
  // Fallback: try DOM children (non-slotted content)
@@ -5762,7 +5768,7 @@ class AuroDropdown extends AuroElement$2 {
5762
5768
  }
5763
5769
 
5764
5770
  const eventType = event.detail.eventType || "unknown";
5765
- if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noHideOnThisFocusLoss) {
5771
+ if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
5766
5772
  this.focusTrigger();
5767
5773
  }
5768
5774
 
@@ -5770,9 +5776,9 @@ class AuroDropdown extends AuroElement$2 {
5770
5776
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
5771
5777
  // — restoring to the trigger would trap the user on this dropdown, forcing
5772
5778
  // an extra Tab to move on. Escape and outside-click still restore.
5773
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
5779
+ // When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
5774
5780
  // its own focus restoration — skip the generic trigger focus to avoid races.
5775
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
5781
+ if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
5776
5782
  // wait til the bib gets fully closed and rendered
5777
5783
  setTimeout(() => {
5778
5784
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -18645,7 +18651,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18645
18651
  }
18646
18652
  };
18647
18653
 
18648
- var formkitVersion$1 = '202607160725';
18654
+ var formkitVersion$1 = '202607160755';
18649
18655
 
18650
18656
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18651
18657
  // See LICENSE in the project root for license information.
@@ -19793,7 +19799,7 @@ class AuroBibtemplate extends i$3 {
19793
19799
  }
19794
19800
  }
19795
19801
 
19796
- var formkitVersion = '202607160725';
19802
+ var formkitVersion = '202607160755';
19797
19803
 
19798
19804
  var styleCss$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}`;
19799
19805
 
@@ -20850,30 +20856,13 @@ class AuroCombobox extends AuroElement {
20850
20856
  // human-readable label (e.g. "Seattle, WA"). For consumers where
20851
20857
  // value ≠ label, this produces a brief flash of the raw value until
20852
20858
  // the option elements load and updateTriggerTextDisplay re-runs with
20853
- // the correct label.
20854
-
20855
- // Avoid adding synthetic content when a consumer already provides
20856
- // displayValue content via the forwarded slot.
20857
- const forwarderSlot = this.input.querySelector('slot[name="displayValue"][slot="displayValue"]');
20858
- const hasSlottedDisplayValue = Boolean(forwarderSlot?.assignedNodes({ flatten: true }).some((node) => {
20859
- if (node.nodeType === Node.TEXT_NODE) {
20860
- return node.textContent.trim().length > 0;
20861
- }
20862
- if (node.nodeType === Node.ELEMENT_NODE) {
20863
- return node.textContent.trim().length > 0 ||
20864
- node.children.length > 0 ||
20865
- node.shadowRoot !== null;
20866
- }
20867
- return false;
20868
- }));
20869
-
20870
- if (!hasSlottedDisplayValue) {
20871
- const syntheticDV = document.createElement('span');
20872
- syntheticDV.setAttribute('slot', 'displayValue');
20873
- syntheticDV.textContent = this.value;
20874
- this.input.appendChild(syntheticDV);
20875
- }
20876
-
20859
+ // the correct label. This is intentionally preferred over a blank
20860
+ // state — the displayValueInTrigger.remove() cleanup above ensures
20861
+ // this placeholder is replaced once the real option is available.
20862
+ const syntheticDV = document.createElement('span');
20863
+ syntheticDV.setAttribute('slot', 'displayValue');
20864
+ syntheticDV.textContent = this.value;
20865
+ this.input.appendChild(syntheticDV);
20877
20866
  if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20878
20867
  this.input.checkDisplayValueSlotChange();
20879
20868
  this.input.requestUpdate();
@@ -21049,6 +21038,10 @@ class AuroCombobox extends AuroElement {
21049
21038
  // from combobox's light DOM and won't be detected by dropdown's contains() check.
21050
21039
  this.dropdown.noHideOnThisFocusLoss = true;
21051
21040
 
21041
+ // Suppress the dropdown's generic focus restoration on close — the combobox
21042
+ // manages its own focus via setClearBtnFocus / setInputFocus / keyboard strategy.
21043
+ this.dropdown.noFocusRestoreOnClose = true;
21044
+
21052
21045
  // Listen for the ID to be added to the dropdown so we can capture it and use it for accessibility.
21053
21046
  this.dropdown.addEventListener('auroDropdown-idAdded', (event) => {
21054
21047
  this.dropdownId = event.detail.id;
@@ -4971,7 +4971,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4971
4971
  }
4972
4972
  };
4973
4973
 
4974
- var formkitVersion$2 = '202607160725';
4974
+ var formkitVersion$2 = '202607160755';
4975
4975
 
4976
4976
  let AuroElement$2 = class AuroElement extends i$3 {
4977
4977
  static get properties() {
@@ -5111,6 +5111,15 @@ class AuroDropdown extends AuroElement$2 {
5111
5111
  this.matchWidth = false;
5112
5112
  this.noHideOnThisFocusLoss = false;
5113
5113
 
5114
+ /**
5115
+ * When true, the dropdown skips its generic focus restoration on close.
5116
+ * Set by consumers (e.g. combobox) that manage their own focus routing
5117
+ * via setClearBtnFocus / setInputFocus / keyboard strategy.
5118
+ * Separate from noHideOnThisFocusLoss (which controls auto-close behavior).
5119
+ * @private
5120
+ */
5121
+ this.noFocusRestoreOnClose = false;
5122
+
5114
5123
  this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
5115
5124
 
5116
5125
  // Layout Config
@@ -5284,25 +5293,22 @@ class AuroDropdown extends AuroElement$2 {
5284
5293
  // getFocusableElements can't find it. Query assigned nodes directly.
5285
5294
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5286
5295
  if (slot) {
5287
- const assigned = slot.assignedElements({ flatten: true });
5296
+ const assigned = slot.assignedElements();
5288
5297
  for (const el of assigned) {
5289
5298
  if (el.hasAttribute('disabled')) {
5290
5299
  continue;
5291
5300
  }
5292
-
5293
- // Try focusing a focusable descendant first (handles non-focusable wrappers).
5301
+ // Try finding a focusable descendant first (handles non-focusable
5302
+ // wrappers like <div> containing a <button>). If none found, try
5303
+ // focusing the element directly (works for custom elements like
5304
+ // auro-input that have delegatesFocus or a custom focus() method).
5294
5305
  const descendants = getFocusableElements(el);
5295
5306
  if (descendants.length > 0) {
5296
5307
  descendants[0].focus();
5297
5308
  return;
5298
5309
  }
5299
-
5300
- // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5301
- const prevActive = document.activeElement;
5302
5310
  el.focus();
5303
- if (document.activeElement !== prevActive) {
5304
- return;
5305
- }
5311
+ return;
5306
5312
  }
5307
5313
  }
5308
5314
  // Fallback: try DOM children (non-slotted content)
@@ -5762,7 +5768,7 @@ class AuroDropdown extends AuroElement$2 {
5762
5768
  }
5763
5769
 
5764
5770
  const eventType = event.detail.eventType || "unknown";
5765
- if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noHideOnThisFocusLoss) {
5771
+ if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
5766
5772
  this.focusTrigger();
5767
5773
  }
5768
5774
 
@@ -5770,9 +5776,9 @@ class AuroDropdown extends AuroElement$2 {
5770
5776
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
5771
5777
  // — restoring to the trigger would trap the user on this dropdown, forcing
5772
5778
  // an extra Tab to move on. Escape and outside-click still restore.
5773
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
5779
+ // When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
5774
5780
  // its own focus restoration — skip the generic trigger focus to avoid races.
5775
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
5781
+ if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
5776
5782
  // wait til the bib gets fully closed and rendered
5777
5783
  setTimeout(() => {
5778
5784
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -18645,7 +18651,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18645
18651
  }
18646
18652
  };
18647
18653
 
18648
- var formkitVersion$1 = '202607160725';
18654
+ var formkitVersion$1 = '202607160755';
18649
18655
 
18650
18656
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18651
18657
  // See LICENSE in the project root for license information.
@@ -19793,7 +19799,7 @@ class AuroBibtemplate extends i$3 {
19793
19799
  }
19794
19800
  }
19795
19801
 
19796
- var formkitVersion = '202607160725';
19802
+ var formkitVersion = '202607160755';
19797
19803
 
19798
19804
  var styleCss$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}`;
19799
19805
 
@@ -20850,30 +20856,13 @@ class AuroCombobox extends AuroElement {
20850
20856
  // human-readable label (e.g. "Seattle, WA"). For consumers where
20851
20857
  // value ≠ label, this produces a brief flash of the raw value until
20852
20858
  // the option elements load and updateTriggerTextDisplay re-runs with
20853
- // the correct label.
20854
-
20855
- // Avoid adding synthetic content when a consumer already provides
20856
- // displayValue content via the forwarded slot.
20857
- const forwarderSlot = this.input.querySelector('slot[name="displayValue"][slot="displayValue"]');
20858
- const hasSlottedDisplayValue = Boolean(forwarderSlot?.assignedNodes({ flatten: true }).some((node) => {
20859
- if (node.nodeType === Node.TEXT_NODE) {
20860
- return node.textContent.trim().length > 0;
20861
- }
20862
- if (node.nodeType === Node.ELEMENT_NODE) {
20863
- return node.textContent.trim().length > 0 ||
20864
- node.children.length > 0 ||
20865
- node.shadowRoot !== null;
20866
- }
20867
- return false;
20868
- }));
20869
-
20870
- if (!hasSlottedDisplayValue) {
20871
- const syntheticDV = document.createElement('span');
20872
- syntheticDV.setAttribute('slot', 'displayValue');
20873
- syntheticDV.textContent = this.value;
20874
- this.input.appendChild(syntheticDV);
20875
- }
20876
-
20859
+ // the correct label. This is intentionally preferred over a blank
20860
+ // state — the displayValueInTrigger.remove() cleanup above ensures
20861
+ // this placeholder is replaced once the real option is available.
20862
+ const syntheticDV = document.createElement('span');
20863
+ syntheticDV.setAttribute('slot', 'displayValue');
20864
+ syntheticDV.textContent = this.value;
20865
+ this.input.appendChild(syntheticDV);
20877
20866
  if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20878
20867
  this.input.checkDisplayValueSlotChange();
20879
20868
  this.input.requestUpdate();
@@ -21049,6 +21038,10 @@ class AuroCombobox extends AuroElement {
21049
21038
  // from combobox's light DOM and won't be detected by dropdown's contains() check.
21050
21039
  this.dropdown.noHideOnThisFocusLoss = true;
21051
21040
 
21041
+ // Suppress the dropdown's generic focus restoration on close — the combobox
21042
+ // manages its own focus via setClearBtnFocus / setInputFocus / keyboard strategy.
21043
+ this.dropdown.noFocusRestoreOnClose = true;
21044
+
21052
21045
  // Listen for the ID to be added to the dropdown so we can capture it and use it for accessibility.
21053
21046
  this.dropdown.addEventListener('auroDropdown-idAdded', (event) => {
21054
21047
  this.dropdownId = event.detail.id;
@@ -4986,7 +4986,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4986
4986
  }
4987
4987
  };
4988
4988
 
4989
- var formkitVersion$2 = '202607160725';
4989
+ var formkitVersion$2 = '202607160755';
4990
4990
 
4991
4991
  let AuroElement$2 = class AuroElement extends i$3 {
4992
4992
  static get properties() {
@@ -5126,6 +5126,15 @@ class AuroDropdown extends AuroElement$2 {
5126
5126
  this.matchWidth = false;
5127
5127
  this.noHideOnThisFocusLoss = false;
5128
5128
 
5129
+ /**
5130
+ * When true, the dropdown skips its generic focus restoration on close.
5131
+ * Set by consumers (e.g. combobox) that manage their own focus routing
5132
+ * via setClearBtnFocus / setInputFocus / keyboard strategy.
5133
+ * Separate from noHideOnThisFocusLoss (which controls auto-close behavior).
5134
+ * @private
5135
+ */
5136
+ this.noFocusRestoreOnClose = false;
5137
+
5129
5138
  this.errorMessage = undefined; // TODO - check with Doug if there is still more to do here
5130
5139
 
5131
5140
  // Layout Config
@@ -5299,25 +5308,22 @@ class AuroDropdown extends AuroElement$2 {
5299
5308
  // getFocusableElements can't find it. Query assigned nodes directly.
5300
5309
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5301
5310
  if (slot) {
5302
- const assigned = slot.assignedElements({ flatten: true });
5311
+ const assigned = slot.assignedElements();
5303
5312
  for (const el of assigned) {
5304
5313
  if (el.hasAttribute('disabled')) {
5305
5314
  continue;
5306
5315
  }
5307
-
5308
- // Try focusing a focusable descendant first (handles non-focusable wrappers).
5316
+ // Try finding a focusable descendant first (handles non-focusable
5317
+ // wrappers like <div> containing a <button>). If none found, try
5318
+ // focusing the element directly (works for custom elements like
5319
+ // auro-input that have delegatesFocus or a custom focus() method).
5309
5320
  const descendants = getFocusableElements(el);
5310
5321
  if (descendants.length > 0) {
5311
5322
  descendants[0].focus();
5312
5323
  return;
5313
5324
  }
5314
-
5315
- // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5316
- const prevActive = document.activeElement;
5317
5325
  el.focus();
5318
- if (document.activeElement !== prevActive) {
5319
- return;
5320
- }
5326
+ return;
5321
5327
  }
5322
5328
  }
5323
5329
  // Fallback: try DOM children (non-slotted content)
@@ -5777,7 +5783,7 @@ class AuroDropdown extends AuroElement$2 {
5777
5783
  }
5778
5784
 
5779
5785
  const eventType = event.detail.eventType || "unknown";
5780
- if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noHideOnThisFocusLoss) {
5786
+ if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown" && !this.noFocusRestoreOnClose) {
5781
5787
  this.focusTrigger();
5782
5788
  }
5783
5789
 
@@ -5785,9 +5791,9 @@ class AuroDropdown extends AuroElement$2 {
5785
5791
  // On Tab-driven close (eventType "focusloss"), let focus advance naturally
5786
5792
  // — restoring to the trigger would trap the user on this dropdown, forcing
5787
5793
  // an extra Tab to move on. Escape and outside-click still restore.
5788
- // When noHideOnThisFocusLoss is true, the consumer (e.g. combobox) manages
5794
+ // When noFocusRestoreOnClose is true, the consumer (e.g. combobox) manages
5789
5795
  // its own focus restoration — skip the generic trigger focus to avoid races.
5790
- if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noHideOnThisFocusLoss) {
5796
+ if (!this.isPopoverVisible && eventType !== "focusloss" && !this.noFocusRestoreOnClose) {
5791
5797
  // wait til the bib gets fully closed and rendered
5792
5798
  setTimeout(() => {
5793
5799
  // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
@@ -18660,7 +18666,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18660
18666
  }
18661
18667
  };
18662
18668
 
18663
- var formkitVersion$1 = '202607160725';
18669
+ var formkitVersion$1 = '202607160755';
18664
18670
 
18665
18671
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18666
18672
  // See LICENSE in the project root for license information.
@@ -19808,7 +19814,7 @@ class AuroBibtemplate extends i$3 {
19808
19814
  }
19809
19815
  }
19810
19816
 
19811
- var formkitVersion = '202607160725';
19817
+ var formkitVersion = '202607160755';
19812
19818
 
19813
19819
  var styleCss$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}`;
19814
19820
 
@@ -20865,30 +20871,13 @@ class AuroCombobox extends AuroElement {
20865
20871
  // human-readable label (e.g. "Seattle, WA"). For consumers where
20866
20872
  // value ≠ label, this produces a brief flash of the raw value until
20867
20873
  // the option elements load and updateTriggerTextDisplay re-runs with
20868
- // the correct label.
20869
-
20870
- // Avoid adding synthetic content when a consumer already provides
20871
- // displayValue content via the forwarded slot.
20872
- const forwarderSlot = this.input.querySelector('slot[name="displayValue"][slot="displayValue"]');
20873
- const hasSlottedDisplayValue = Boolean(forwarderSlot?.assignedNodes({ flatten: true }).some((node) => {
20874
- if (node.nodeType === Node.TEXT_NODE) {
20875
- return node.textContent.trim().length > 0;
20876
- }
20877
- if (node.nodeType === Node.ELEMENT_NODE) {
20878
- return node.textContent.trim().length > 0 ||
20879
- node.children.length > 0 ||
20880
- node.shadowRoot !== null;
20881
- }
20882
- return false;
20883
- }));
20884
-
20885
- if (!hasSlottedDisplayValue) {
20886
- const syntheticDV = document.createElement('span');
20887
- syntheticDV.setAttribute('slot', 'displayValue');
20888
- syntheticDV.textContent = this.value;
20889
- this.input.appendChild(syntheticDV);
20890
- }
20891
-
20874
+ // the correct label. This is intentionally preferred over a blank
20875
+ // state — the displayValueInTrigger.remove() cleanup above ensures
20876
+ // this placeholder is replaced once the real option is available.
20877
+ const syntheticDV = document.createElement('span');
20878
+ syntheticDV.setAttribute('slot', 'displayValue');
20879
+ syntheticDV.textContent = this.value;
20880
+ this.input.appendChild(syntheticDV);
20892
20881
  if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20893
20882
  this.input.checkDisplayValueSlotChange();
20894
20883
  this.input.requestUpdate();
@@ -21064,6 +21053,10 @@ class AuroCombobox extends AuroElement {
21064
21053
  // from combobox's light DOM and won't be detected by dropdown's contains() check.
21065
21054
  this.dropdown.noHideOnThisFocusLoss = true;
21066
21055
 
21056
+ // Suppress the dropdown's generic focus restoration on close — the combobox
21057
+ // manages its own focus via setClearBtnFocus / setInputFocus / keyboard strategy.
21058
+ this.dropdown.noFocusRestoreOnClose = true;
21059
+
21067
21060
  // Listen for the ID to be added to the dropdown so we can capture it and use it for accessibility.
21068
21061
  this.dropdown.addEventListener('auroDropdown-idAdded', (event) => {
21069
21062
  this.dropdownId = event.detail.id;
@@ -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;