@aurodesignsystem-dev/auro-formkit 0.0.0-pr1554.11 → 0.0.0-pr1554.13

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 (43) 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 +41 -17
  7. package/components/combobox/demo/getting-started.min.js +41 -17
  8. package/components/combobox/demo/index.min.js +41 -17
  9. package/components/combobox/dist/index.js +41 -17
  10. package/components/combobox/dist/registered.js +41 -17
  11. package/components/counter/demo/customize.min.js +11 -8
  12. package/components/counter/demo/index.min.js +11 -8
  13. package/components/counter/dist/index.js +11 -8
  14. package/components/counter/dist/registered.js +11 -8
  15. package/components/datepicker/demo/customize.min.js +17 -10
  16. package/components/datepicker/demo/index.min.js +17 -10
  17. package/components/datepicker/dist/index.js +17 -10
  18. package/components/datepicker/dist/registered.js +17 -10
  19. package/components/dropdown/demo/customize.min.js +10 -7
  20. package/components/dropdown/demo/getting-started.min.js +10 -7
  21. package/components/dropdown/demo/index.min.js +10 -7
  22. package/components/dropdown/dist/index.js +10 -7
  23. package/components/dropdown/dist/registered.js +10 -7
  24. package/components/form/demo/customize.min.js +88 -47
  25. package/components/form/demo/getting-started.min.js +88 -47
  26. package/components/form/demo/index.min.js +88 -47
  27. package/components/form/demo/registerDemoDeps.min.js +88 -47
  28. package/components/input/demo/customize.min.js +6 -2
  29. package/components/input/demo/getting-started.min.js +6 -2
  30. package/components/input/demo/index.min.js +6 -2
  31. package/components/input/dist/index.js +6 -2
  32. package/components/input/dist/registered.js +6 -2
  33. package/components/radio/demo/customize.min.js +1 -1
  34. package/components/radio/demo/getting-started.min.js +1 -1
  35. package/components/radio/demo/index.min.js +1 -1
  36. package/components/radio/dist/index.js +1 -1
  37. package/components/radio/dist/registered.js +1 -1
  38. package/components/select/demo/customize.min.js +11 -8
  39. package/components/select/demo/getting-started.min.js +11 -8
  40. package/components/select/demo/index.min.js +11 -8
  41. package/components/select/dist/index.js +11 -8
  42. package/components/select/dist/registered.js +11 -8
  43. package/package.json +1 -1
@@ -1275,7 +1275,7 @@ class AuroHelpText extends i$2 {
1275
1275
  }
1276
1276
  }
1277
1277
 
1278
- var formkitVersion = '202607160709';
1278
+ var formkitVersion = '202607160738';
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 = '202607160709';
1278
+ var formkitVersion = '202607160738';
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 = '202607160709';
1278
+ var formkitVersion = '202607160738';
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 = '202607160709';
1231
+ var formkitVersion = '202607160738';
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 = '202607160709';
1231
+ var formkitVersion = '202607160738';
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 = '202607160709';
4974
+ var formkitVersion$2 = '202607160738';
4975
4975
 
4976
4976
  let AuroElement$2 = class AuroElement extends i$3 {
4977
4977
  static get properties() {
@@ -5284,22 +5284,25 @@ class AuroDropdown extends AuroElement$2 {
5284
5284
  // getFocusableElements can't find it. Query assigned nodes directly.
5285
5285
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5286
5286
  if (slot) {
5287
- const assigned = slot.assignedElements();
5287
+ const assigned = slot.assignedElements({ flatten: true });
5288
5288
  for (const el of assigned) {
5289
5289
  if (el.hasAttribute('disabled')) {
5290
5290
  continue;
5291
5291
  }
5292
- // Try finding a focusable descendant first (handles non-focusable
5293
- // wrappers like <div> containing a <button>). If none found, try
5294
- // focusing the element directly (works for custom elements like
5295
- // auro-input that have delegatesFocus or a custom focus() method).
5292
+
5293
+ // Try focusing a focusable descendant first (handles non-focusable wrappers).
5296
5294
  const descendants = getFocusableElements(el);
5297
5295
  if (descendants.length > 0) {
5298
5296
  descendants[0].focus();
5299
5297
  return;
5300
5298
  }
5299
+
5300
+ // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5301
+ const prevActive = document.activeElement;
5301
5302
  el.focus();
5302
- return;
5303
+ if (document.activeElement !== prevActive) {
5304
+ return;
5305
+ }
5303
5306
  }
5304
5307
  }
5305
5308
  // Fallback: try DOM children (non-slotted content)
@@ -18642,7 +18645,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18642
18645
  }
18643
18646
  };
18644
18647
 
18645
- var formkitVersion$1 = '202607160709';
18648
+ var formkitVersion$1 = '202607160738';
18646
18649
 
18647
18650
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18648
18651
  // See LICENSE in the project root for license information.
@@ -18936,11 +18939,15 @@ class AuroInput extends BaseInput {
18936
18939
  // Check for any element (including custom elements like <auro-icon>
18937
18940
  // that render via shadow DOM with no text content).
18938
18941
  const lightDomContent = this.querySelector('[slot="displayValue"]:not(slot)');
18939
- this.hasDisplayValueContent = Boolean(lightDomContent && (
18942
+ const nextHasDisplayValueContent = Boolean(lightDomContent && (
18940
18943
  lightDomContent.textContent.trim().length > 0 ||
18941
18944
  lightDomContent.children.length > 0 ||
18942
18945
  lightDomContent.shadowRoot !== null
18943
18946
  ));
18947
+ if (nextHasDisplayValueContent !== this.hasDisplayValueContent) {
18948
+ this.hasDisplayValueContent = nextHasDisplayValueContent;
18949
+ this.requestUpdate();
18950
+ }
18944
18951
  return;
18945
18952
  }
18946
18953
  const nodes = slot.assignedNodes({ flatten: true });
@@ -19790,7 +19797,7 @@ class AuroBibtemplate extends i$3 {
19790
19797
  }
19791
19798
  }
19792
19799
 
19793
- var formkitVersion = '202607160709';
19800
+ var formkitVersion = '202607160738';
19794
19801
 
19795
19802
  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}`;
19796
19803
 
@@ -20847,13 +20854,30 @@ class AuroCombobox extends AuroElement {
20847
20854
  // human-readable label (e.g. "Seattle, WA"). For consumers where
20848
20855
  // value ≠ label, this produces a brief flash of the raw value until
20849
20856
  // the option elements load and updateTriggerTextDisplay re-runs with
20850
- // the correct label. This is intentionally preferred over a blank
20851
- // state — the displayValueInTrigger.remove() cleanup above ensures
20852
- // this placeholder is replaced once the real option is available.
20853
- const syntheticDV = document.createElement('span');
20854
- syntheticDV.setAttribute('slot', 'displayValue');
20855
- syntheticDV.textContent = this.value;
20856
- this.input.appendChild(syntheticDV);
20857
+ // the correct label.
20858
+
20859
+ // Avoid adding synthetic content when a consumer already provides
20860
+ // displayValue content via the forwarded slot.
20861
+ const forwarderSlot = this.input.querySelector('slot[name="displayValue"][slot="displayValue"]');
20862
+ const hasSlottedDisplayValue = Boolean(forwarderSlot?.assignedNodes({ flatten: true }).some((node) => {
20863
+ if (node.nodeType === Node.TEXT_NODE) {
20864
+ return node.textContent.trim().length > 0;
20865
+ }
20866
+ if (node.nodeType === Node.ELEMENT_NODE) {
20867
+ return node.textContent.trim().length > 0 ||
20868
+ node.children.length > 0 ||
20869
+ node.shadowRoot !== null;
20870
+ }
20871
+ return false;
20872
+ }));
20873
+
20874
+ if (!hasSlottedDisplayValue) {
20875
+ const syntheticDV = document.createElement('span');
20876
+ syntheticDV.setAttribute('slot', 'displayValue');
20877
+ syntheticDV.textContent = this.value;
20878
+ this.input.appendChild(syntheticDV);
20879
+ }
20880
+
20857
20881
  if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20858
20882
  this.input.checkDisplayValueSlotChange();
20859
20883
  this.input.requestUpdate();
@@ -4971,7 +4971,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4971
4971
  }
4972
4972
  };
4973
4973
 
4974
- var formkitVersion$2 = '202607160709';
4974
+ var formkitVersion$2 = '202607160738';
4975
4975
 
4976
4976
  let AuroElement$2 = class AuroElement extends i$3 {
4977
4977
  static get properties() {
@@ -5284,22 +5284,25 @@ class AuroDropdown extends AuroElement$2 {
5284
5284
  // getFocusableElements can't find it. Query assigned nodes directly.
5285
5285
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5286
5286
  if (slot) {
5287
- const assigned = slot.assignedElements();
5287
+ const assigned = slot.assignedElements({ flatten: true });
5288
5288
  for (const el of assigned) {
5289
5289
  if (el.hasAttribute('disabled')) {
5290
5290
  continue;
5291
5291
  }
5292
- // Try finding a focusable descendant first (handles non-focusable
5293
- // wrappers like <div> containing a <button>). If none found, try
5294
- // focusing the element directly (works for custom elements like
5295
- // auro-input that have delegatesFocus or a custom focus() method).
5292
+
5293
+ // Try focusing a focusable descendant first (handles non-focusable wrappers).
5296
5294
  const descendants = getFocusableElements(el);
5297
5295
  if (descendants.length > 0) {
5298
5296
  descendants[0].focus();
5299
5297
  return;
5300
5298
  }
5299
+
5300
+ // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5301
+ const prevActive = document.activeElement;
5301
5302
  el.focus();
5302
- return;
5303
+ if (document.activeElement !== prevActive) {
5304
+ return;
5305
+ }
5303
5306
  }
5304
5307
  }
5305
5308
  // Fallback: try DOM children (non-slotted content)
@@ -18642,7 +18645,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18642
18645
  }
18643
18646
  };
18644
18647
 
18645
- var formkitVersion$1 = '202607160709';
18648
+ var formkitVersion$1 = '202607160738';
18646
18649
 
18647
18650
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18648
18651
  // See LICENSE in the project root for license information.
@@ -18936,11 +18939,15 @@ class AuroInput extends BaseInput {
18936
18939
  // Check for any element (including custom elements like <auro-icon>
18937
18940
  // that render via shadow DOM with no text content).
18938
18941
  const lightDomContent = this.querySelector('[slot="displayValue"]:not(slot)');
18939
- this.hasDisplayValueContent = Boolean(lightDomContent && (
18942
+ const nextHasDisplayValueContent = Boolean(lightDomContent && (
18940
18943
  lightDomContent.textContent.trim().length > 0 ||
18941
18944
  lightDomContent.children.length > 0 ||
18942
18945
  lightDomContent.shadowRoot !== null
18943
18946
  ));
18947
+ if (nextHasDisplayValueContent !== this.hasDisplayValueContent) {
18948
+ this.hasDisplayValueContent = nextHasDisplayValueContent;
18949
+ this.requestUpdate();
18950
+ }
18944
18951
  return;
18945
18952
  }
18946
18953
  const nodes = slot.assignedNodes({ flatten: true });
@@ -19790,7 +19797,7 @@ class AuroBibtemplate extends i$3 {
19790
19797
  }
19791
19798
  }
19792
19799
 
19793
- var formkitVersion = '202607160709';
19800
+ var formkitVersion = '202607160738';
19794
19801
 
19795
19802
  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}`;
19796
19803
 
@@ -20847,13 +20854,30 @@ class AuroCombobox extends AuroElement {
20847
20854
  // human-readable label (e.g. "Seattle, WA"). For consumers where
20848
20855
  // value ≠ label, this produces a brief flash of the raw value until
20849
20856
  // the option elements load and updateTriggerTextDisplay re-runs with
20850
- // the correct label. This is intentionally preferred over a blank
20851
- // state — the displayValueInTrigger.remove() cleanup above ensures
20852
- // this placeholder is replaced once the real option is available.
20853
- const syntheticDV = document.createElement('span');
20854
- syntheticDV.setAttribute('slot', 'displayValue');
20855
- syntheticDV.textContent = this.value;
20856
- this.input.appendChild(syntheticDV);
20857
+ // the correct label.
20858
+
20859
+ // Avoid adding synthetic content when a consumer already provides
20860
+ // displayValue content via the forwarded slot.
20861
+ const forwarderSlot = this.input.querySelector('slot[name="displayValue"][slot="displayValue"]');
20862
+ const hasSlottedDisplayValue = Boolean(forwarderSlot?.assignedNodes({ flatten: true }).some((node) => {
20863
+ if (node.nodeType === Node.TEXT_NODE) {
20864
+ return node.textContent.trim().length > 0;
20865
+ }
20866
+ if (node.nodeType === Node.ELEMENT_NODE) {
20867
+ return node.textContent.trim().length > 0 ||
20868
+ node.children.length > 0 ||
20869
+ node.shadowRoot !== null;
20870
+ }
20871
+ return false;
20872
+ }));
20873
+
20874
+ if (!hasSlottedDisplayValue) {
20875
+ const syntheticDV = document.createElement('span');
20876
+ syntheticDV.setAttribute('slot', 'displayValue');
20877
+ syntheticDV.textContent = this.value;
20878
+ this.input.appendChild(syntheticDV);
20879
+ }
20880
+
20857
20881
  if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20858
20882
  this.input.checkDisplayValueSlotChange();
20859
20883
  this.input.requestUpdate();
@@ -4986,7 +4986,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$3 {
4986
4986
  }
4987
4987
  };
4988
4988
 
4989
- var formkitVersion$2 = '202607160709';
4989
+ var formkitVersion$2 = '202607160738';
4990
4990
 
4991
4991
  let AuroElement$2 = class AuroElement extends i$3 {
4992
4992
  static get properties() {
@@ -5299,22 +5299,25 @@ class AuroDropdown extends AuroElement$2 {
5299
5299
  // getFocusableElements can't find it. Query assigned nodes directly.
5300
5300
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5301
5301
  if (slot) {
5302
- const assigned = slot.assignedElements();
5302
+ const assigned = slot.assignedElements({ flatten: true });
5303
5303
  for (const el of assigned) {
5304
5304
  if (el.hasAttribute('disabled')) {
5305
5305
  continue;
5306
5306
  }
5307
- // Try finding a focusable descendant first (handles non-focusable
5308
- // wrappers like <div> containing a <button>). If none found, try
5309
- // focusing the element directly (works for custom elements like
5310
- // auro-input that have delegatesFocus or a custom focus() method).
5307
+
5308
+ // Try focusing a focusable descendant first (handles non-focusable wrappers).
5311
5309
  const descendants = getFocusableElements(el);
5312
5310
  if (descendants.length > 0) {
5313
5311
  descendants[0].focus();
5314
5312
  return;
5315
5313
  }
5314
+
5315
+ // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5316
+ const prevActive = document.activeElement;
5316
5317
  el.focus();
5317
- return;
5318
+ if (document.activeElement !== prevActive) {
5319
+ return;
5320
+ }
5318
5321
  }
5319
5322
  }
5320
5323
  // Fallback: try DOM children (non-slotted content)
@@ -18657,7 +18660,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
18657
18660
  }
18658
18661
  };
18659
18662
 
18660
- var formkitVersion$1 = '202607160709';
18663
+ var formkitVersion$1 = '202607160738';
18661
18664
 
18662
18665
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18663
18666
  // See LICENSE in the project root for license information.
@@ -18951,11 +18954,15 @@ class AuroInput extends BaseInput {
18951
18954
  // Check for any element (including custom elements like <auro-icon>
18952
18955
  // that render via shadow DOM with no text content).
18953
18956
  const lightDomContent = this.querySelector('[slot="displayValue"]:not(slot)');
18954
- this.hasDisplayValueContent = Boolean(lightDomContent && (
18957
+ const nextHasDisplayValueContent = Boolean(lightDomContent && (
18955
18958
  lightDomContent.textContent.trim().length > 0 ||
18956
18959
  lightDomContent.children.length > 0 ||
18957
18960
  lightDomContent.shadowRoot !== null
18958
18961
  ));
18962
+ if (nextHasDisplayValueContent !== this.hasDisplayValueContent) {
18963
+ this.hasDisplayValueContent = nextHasDisplayValueContent;
18964
+ this.requestUpdate();
18965
+ }
18959
18966
  return;
18960
18967
  }
18961
18968
  const nodes = slot.assignedNodes({ flatten: true });
@@ -19805,7 +19812,7 @@ class AuroBibtemplate extends i$3 {
19805
19812
  }
19806
19813
  }
19807
19814
 
19808
- var formkitVersion = '202607160709';
19815
+ var formkitVersion = '202607160738';
19809
19816
 
19810
19817
  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}`;
19811
19818
 
@@ -20862,13 +20869,30 @@ class AuroCombobox extends AuroElement {
20862
20869
  // human-readable label (e.g. "Seattle, WA"). For consumers where
20863
20870
  // value ≠ label, this produces a brief flash of the raw value until
20864
20871
  // the option elements load and updateTriggerTextDisplay re-runs with
20865
- // the correct label. This is intentionally preferred over a blank
20866
- // state — the displayValueInTrigger.remove() cleanup above ensures
20867
- // this placeholder is replaced once the real option is available.
20868
- const syntheticDV = document.createElement('span');
20869
- syntheticDV.setAttribute('slot', 'displayValue');
20870
- syntheticDV.textContent = this.value;
20871
- this.input.appendChild(syntheticDV);
20872
+ // the correct label.
20873
+
20874
+ // Avoid adding synthetic content when a consumer already provides
20875
+ // displayValue content via the forwarded slot.
20876
+ const forwarderSlot = this.input.querySelector('slot[name="displayValue"][slot="displayValue"]');
20877
+ const hasSlottedDisplayValue = Boolean(forwarderSlot?.assignedNodes({ flatten: true }).some((node) => {
20878
+ if (node.nodeType === Node.TEXT_NODE) {
20879
+ return node.textContent.trim().length > 0;
20880
+ }
20881
+ if (node.nodeType === Node.ELEMENT_NODE) {
20882
+ return node.textContent.trim().length > 0 ||
20883
+ node.children.length > 0 ||
20884
+ node.shadowRoot !== null;
20885
+ }
20886
+ return false;
20887
+ }));
20888
+
20889
+ if (!hasSlottedDisplayValue) {
20890
+ const syntheticDV = document.createElement('span');
20891
+ syntheticDV.setAttribute('slot', 'displayValue');
20892
+ syntheticDV.textContent = this.value;
20893
+ this.input.appendChild(syntheticDV);
20894
+ }
20895
+
20872
20896
  if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20873
20897
  this.input.checkDisplayValueSlotChange();
20874
20898
  this.input.requestUpdate();
@@ -4904,7 +4904,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
4904
4904
  }
4905
4905
  };
4906
4906
 
4907
- var formkitVersion$2 = '202607160709';
4907
+ var formkitVersion$2 = '202607160738';
4908
4908
 
4909
4909
  let AuroElement$2 = class AuroElement extends LitElement {
4910
4910
  static get properties() {
@@ -5217,22 +5217,25 @@ class AuroDropdown extends AuroElement$2 {
5217
5217
  // getFocusableElements can't find it. Query assigned nodes directly.
5218
5218
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5219
5219
  if (slot) {
5220
- const assigned = slot.assignedElements();
5220
+ const assigned = slot.assignedElements({ flatten: true });
5221
5221
  for (const el of assigned) {
5222
5222
  if (el.hasAttribute('disabled')) {
5223
5223
  continue;
5224
5224
  }
5225
- // Try finding a focusable descendant first (handles non-focusable
5226
- // wrappers like <div> containing a <button>). If none found, try
5227
- // focusing the element directly (works for custom elements like
5228
- // auro-input that have delegatesFocus or a custom focus() method).
5225
+
5226
+ // Try focusing a focusable descendant first (handles non-focusable wrappers).
5229
5227
  const descendants = getFocusableElements(el);
5230
5228
  if (descendants.length > 0) {
5231
5229
  descendants[0].focus();
5232
5230
  return;
5233
5231
  }
5232
+
5233
+ // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5234
+ const prevActive = document.activeElement;
5234
5235
  el.focus();
5235
- return;
5236
+ if (document.activeElement !== prevActive) {
5237
+ return;
5238
+ }
5236
5239
  }
5237
5240
  }
5238
5241
  // Fallback: try DOM children (non-slotted content)
@@ -18568,7 +18571,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
18568
18571
  }
18569
18572
  };
18570
18573
 
18571
- var formkitVersion$1 = '202607160709';
18574
+ var formkitVersion$1 = '202607160738';
18572
18575
 
18573
18576
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18574
18577
  // See LICENSE in the project root for license information.
@@ -18862,11 +18865,15 @@ class AuroInput extends BaseInput {
18862
18865
  // Check for any element (including custom elements like <auro-icon>
18863
18866
  // that render via shadow DOM with no text content).
18864
18867
  const lightDomContent = this.querySelector('[slot="displayValue"]:not(slot)');
18865
- this.hasDisplayValueContent = Boolean(lightDomContent && (
18868
+ const nextHasDisplayValueContent = Boolean(lightDomContent && (
18866
18869
  lightDomContent.textContent.trim().length > 0 ||
18867
18870
  lightDomContent.children.length > 0 ||
18868
18871
  lightDomContent.shadowRoot !== null
18869
18872
  ));
18873
+ if (nextHasDisplayValueContent !== this.hasDisplayValueContent) {
18874
+ this.hasDisplayValueContent = nextHasDisplayValueContent;
18875
+ this.requestUpdate();
18876
+ }
18870
18877
  return;
18871
18878
  }
18872
18879
  const nodes = slot.assignedNodes({ flatten: true });
@@ -19716,7 +19723,7 @@ class AuroBibtemplate extends LitElement {
19716
19723
  }
19717
19724
  }
19718
19725
 
19719
- var formkitVersion = '202607160709';
19726
+ var formkitVersion = '202607160738';
19720
19727
 
19721
19728
  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}`;
19722
19729
 
@@ -20773,13 +20780,30 @@ class AuroCombobox extends AuroElement {
20773
20780
  // human-readable label (e.g. "Seattle, WA"). For consumers where
20774
20781
  // value ≠ label, this produces a brief flash of the raw value until
20775
20782
  // the option elements load and updateTriggerTextDisplay re-runs with
20776
- // the correct label. This is intentionally preferred over a blank
20777
- // state — the displayValueInTrigger.remove() cleanup above ensures
20778
- // this placeholder is replaced once the real option is available.
20779
- const syntheticDV = document.createElement('span');
20780
- syntheticDV.setAttribute('slot', 'displayValue');
20781
- syntheticDV.textContent = this.value;
20782
- this.input.appendChild(syntheticDV);
20783
+ // the correct label.
20784
+
20785
+ // Avoid adding synthetic content when a consumer already provides
20786
+ // displayValue content via the forwarded slot.
20787
+ const forwarderSlot = this.input.querySelector('slot[name="displayValue"][slot="displayValue"]');
20788
+ const hasSlottedDisplayValue = Boolean(forwarderSlot?.assignedNodes({ flatten: true }).some((node) => {
20789
+ if (node.nodeType === Node.TEXT_NODE) {
20790
+ return node.textContent.trim().length > 0;
20791
+ }
20792
+ if (node.nodeType === Node.ELEMENT_NODE) {
20793
+ return node.textContent.trim().length > 0 ||
20794
+ node.children.length > 0 ||
20795
+ node.shadowRoot !== null;
20796
+ }
20797
+ return false;
20798
+ }));
20799
+
20800
+ if (!hasSlottedDisplayValue) {
20801
+ const syntheticDV = document.createElement('span');
20802
+ syntheticDV.setAttribute('slot', 'displayValue');
20803
+ syntheticDV.textContent = this.value;
20804
+ this.input.appendChild(syntheticDV);
20805
+ }
20806
+
20783
20807
  if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20784
20808
  this.input.checkDisplayValueSlotChange();
20785
20809
  this.input.requestUpdate();
@@ -4904,7 +4904,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
4904
4904
  }
4905
4905
  };
4906
4906
 
4907
- var formkitVersion$2 = '202607160709';
4907
+ var formkitVersion$2 = '202607160738';
4908
4908
 
4909
4909
  let AuroElement$2 = class AuroElement extends LitElement {
4910
4910
  static get properties() {
@@ -5217,22 +5217,25 @@ class AuroDropdown extends AuroElement$2 {
5217
5217
  // getFocusableElements can't find it. Query assigned nodes directly.
5218
5218
  const slot = this.trigger.querySelector('slot[name="trigger"]');
5219
5219
  if (slot) {
5220
- const assigned = slot.assignedElements();
5220
+ const assigned = slot.assignedElements({ flatten: true });
5221
5221
  for (const el of assigned) {
5222
5222
  if (el.hasAttribute('disabled')) {
5223
5223
  continue;
5224
5224
  }
5225
- // Try finding a focusable descendant first (handles non-focusable
5226
- // wrappers like <div> containing a <button>). If none found, try
5227
- // focusing the element directly (works for custom elements like
5228
- // auro-input that have delegatesFocus or a custom focus() method).
5225
+
5226
+ // Try focusing a focusable descendant first (handles non-focusable wrappers).
5229
5227
  const descendants = getFocusableElements(el);
5230
5228
  if (descendants.length > 0) {
5231
5229
  descendants[0].focus();
5232
5230
  return;
5233
5231
  }
5232
+
5233
+ // Otherwise, try focusing the assigned element itself. Only stop if focus moved.
5234
+ const prevActive = document.activeElement;
5234
5235
  el.focus();
5235
- return;
5236
+ if (document.activeElement !== prevActive) {
5237
+ return;
5238
+ }
5236
5239
  }
5237
5240
  }
5238
5241
  // Fallback: try DOM children (non-slotted content)
@@ -18568,7 +18571,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
18568
18571
  }
18569
18572
  };
18570
18573
 
18571
- var formkitVersion$1 = '202607160709';
18574
+ var formkitVersion$1 = '202607160738';
18572
18575
 
18573
18576
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
18574
18577
  // See LICENSE in the project root for license information.
@@ -18862,11 +18865,15 @@ class AuroInput extends BaseInput {
18862
18865
  // Check for any element (including custom elements like <auro-icon>
18863
18866
  // that render via shadow DOM with no text content).
18864
18867
  const lightDomContent = this.querySelector('[slot="displayValue"]:not(slot)');
18865
- this.hasDisplayValueContent = Boolean(lightDomContent && (
18868
+ const nextHasDisplayValueContent = Boolean(lightDomContent && (
18866
18869
  lightDomContent.textContent.trim().length > 0 ||
18867
18870
  lightDomContent.children.length > 0 ||
18868
18871
  lightDomContent.shadowRoot !== null
18869
18872
  ));
18873
+ if (nextHasDisplayValueContent !== this.hasDisplayValueContent) {
18874
+ this.hasDisplayValueContent = nextHasDisplayValueContent;
18875
+ this.requestUpdate();
18876
+ }
18870
18877
  return;
18871
18878
  }
18872
18879
  const nodes = slot.assignedNodes({ flatten: true });
@@ -19716,7 +19723,7 @@ class AuroBibtemplate extends LitElement {
19716
19723
  }
19717
19724
  }
19718
19725
 
19719
- var formkitVersion = '202607160709';
19726
+ var formkitVersion = '202607160738';
19720
19727
 
19721
19728
  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}`;
19722
19729
 
@@ -20773,13 +20780,30 @@ class AuroCombobox extends AuroElement {
20773
20780
  // human-readable label (e.g. "Seattle, WA"). For consumers where
20774
20781
  // value ≠ label, this produces a brief flash of the raw value until
20775
20782
  // the option elements load and updateTriggerTextDisplay re-runs with
20776
- // the correct label. This is intentionally preferred over a blank
20777
- // state — the displayValueInTrigger.remove() cleanup above ensures
20778
- // this placeholder is replaced once the real option is available.
20779
- const syntheticDV = document.createElement('span');
20780
- syntheticDV.setAttribute('slot', 'displayValue');
20781
- syntheticDV.textContent = this.value;
20782
- this.input.appendChild(syntheticDV);
20783
+ // the correct label.
20784
+
20785
+ // Avoid adding synthetic content when a consumer already provides
20786
+ // displayValue content via the forwarded slot.
20787
+ const forwarderSlot = this.input.querySelector('slot[name="displayValue"][slot="displayValue"]');
20788
+ const hasSlottedDisplayValue = Boolean(forwarderSlot?.assignedNodes({ flatten: true }).some((node) => {
20789
+ if (node.nodeType === Node.TEXT_NODE) {
20790
+ return node.textContent.trim().length > 0;
20791
+ }
20792
+ if (node.nodeType === Node.ELEMENT_NODE) {
20793
+ return node.textContent.trim().length > 0 ||
20794
+ node.children.length > 0 ||
20795
+ node.shadowRoot !== null;
20796
+ }
20797
+ return false;
20798
+ }));
20799
+
20800
+ if (!hasSlottedDisplayValue) {
20801
+ const syntheticDV = document.createElement('span');
20802
+ syntheticDV.setAttribute('slot', 'displayValue');
20803
+ syntheticDV.textContent = this.value;
20804
+ this.input.appendChild(syntheticDV);
20805
+ }
20806
+
20783
20807
  if (typeof this.input.checkDisplayValueSlotChange === 'function') {
20784
20808
  this.input.checkDisplayValueSlotChange();
20785
20809
  this.input.requestUpdate();