@aurodesignsystem-dev/auro-formkit 0.0.0-pr1431.3 → 0.0.0-pr1433.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/components/checkbox/demo/api.min.js +1 -1
  2. package/components/checkbox/demo/index.min.js +1 -1
  3. package/components/checkbox/dist/index.js +1 -1
  4. package/components/checkbox/dist/registered.js +1 -1
  5. package/components/combobox/demo/api.min.js +230 -44
  6. package/components/combobox/demo/index.min.js +230 -44
  7. package/components/combobox/dist/auro-combobox copy.d.ts +578 -0
  8. package/components/combobox/dist/auro-combobox.d.ts +4 -0
  9. package/components/combobox/dist/index.js +142 -22
  10. package/components/combobox/dist/registered.js +142 -22
  11. package/components/counter/demo/api.min.js +30 -2
  12. package/components/counter/demo/index.min.js +30 -2
  13. package/components/counter/dist/index.js +30 -2
  14. package/components/counter/dist/registered.js +30 -2
  15. package/components/datepicker/demo/api.min.js +33 -3
  16. package/components/datepicker/demo/index.min.js +33 -3
  17. package/components/datepicker/dist/index.js +33 -3
  18. package/components/datepicker/dist/registered.js +33 -3
  19. package/components/dropdown/demo/api.min.js +29 -1
  20. package/components/dropdown/demo/index.min.js +29 -1
  21. package/components/dropdown/dist/index.js +29 -1
  22. package/components/dropdown/dist/keyboardUtils.d.ts +18 -0
  23. package/components/dropdown/dist/registered.js +29 -1
  24. package/components/form/demo/api.min.js +326 -54
  25. package/components/form/demo/index.min.js +326 -54
  26. package/components/input/demo/api.min.js +1 -1
  27. package/components/input/demo/index.min.js +1 -1
  28. package/components/input/dist/index.js +1 -1
  29. package/components/input/dist/registered.js +1 -1
  30. package/components/menu/demo/api.min.js +88 -22
  31. package/components/menu/demo/index.min.js +88 -22
  32. package/components/menu/dist/index.js +88 -22
  33. package/components/menu/dist/registered.js +88 -22
  34. package/components/radio/demo/api.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/api.min.js +118 -24
  39. package/components/select/demo/index.min.js +118 -24
  40. package/components/select/dist/index.js +30 -2
  41. package/components/select/dist/registered.js +30 -2
  42. package/custom-elements.json +1906 -1897
  43. package/package.json +3 -3
@@ -3345,6 +3345,7 @@ class AuroFloatingUI {
3345
3345
  this.focusHandler = null;
3346
3346
  this.clickHandler = null;
3347
3347
  this.keyDownHandler = null;
3348
+ this.touchHandler = null;
3348
3349
 
3349
3350
  /**
3350
3351
  * @private
@@ -3762,6 +3763,28 @@ class AuroFloatingUI {
3762
3763
  setTimeout(() => {
3763
3764
  window.addEventListener("click", this.clickHandler);
3764
3765
  }, 0);
3766
+
3767
+ // iOS Safari does not fire `click` on non-interactive elements, so
3768
+ // tapping an inert backdrop never reaches the click handler above.
3769
+ // Mirror the same outside-tap logic with a passive touchstart listener.
3770
+ this.touchHandler = (evt) => {
3771
+ const element = this.element;
3772
+ if (!element?.bib) {
3773
+ return;
3774
+ }
3775
+
3776
+ // fullscreen (modal) dialog handles its own dismissal
3777
+ if (element.bib.hasAttribute("isfullscreen")) {
3778
+ return;
3779
+ }
3780
+
3781
+ const path = evt.composedPath();
3782
+ if (!path.includes(element.trigger) && !path.includes(element.bib)) {
3783
+ this.hideBib("click");
3784
+ }
3785
+ };
3786
+
3787
+ window.addEventListener("touchstart", this.touchHandler, { passive: true });
3765
3788
  }
3766
3789
 
3767
3790
  cleanupHideHandlers() {
@@ -3777,6 +3800,11 @@ class AuroFloatingUI {
3777
3800
  this.clickHandler = null;
3778
3801
  }
3779
3802
 
3803
+ if (this.touchHandler) {
3804
+ window.removeEventListener("touchstart", this.touchHandler);
3805
+ this.touchHandler = null;
3806
+ }
3807
+
3780
3808
  if (this.keyDownHandler) {
3781
3809
  document.removeEventListener("keydown", this.keyDownHandler);
3782
3810
  this.keyDownHandler = null;
@@ -5251,7 +5279,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
5251
5279
  }
5252
5280
  };
5253
5281
 
5254
- var formkitVersion$1 = '202604091453';
5282
+ var formkitVersion$1 = '202604101700';
5255
5283
 
5256
5284
  class AuroElement extends i$3 {
5257
5285
  static get properties() {
@@ -7004,7 +7032,7 @@ class AuroHelpText extends i$3 {
7004
7032
  }
7005
7033
  }
7006
7034
 
7007
- var formkitVersion = '202604091453';
7035
+ var formkitVersion = '202604101700';
7008
7036
 
7009
7037
  var styleCss$2 = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);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, 0.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, 0.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, 0.625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 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, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
7010
7038
 
@@ -8867,7 +8895,7 @@ class AuroMenuOption extends AuroElement$1 {
8867
8895
  this.setAttribute('aria-selected', this.selected.toString());
8868
8896
 
8869
8897
  // Update menu service selection state if this isn't an internal update
8870
- if (this.internalUpdateInProgress !== true) {
8898
+ if (this.internalUpdateInProgress !== true && this.menuService) {
8871
8899
  this.menuService[this.selected ? 'selectOption' : 'deselectOption'](this);
8872
8900
  }
8873
8901
  }
@@ -8902,9 +8930,10 @@ class AuroMenuOption extends AuroElement$1 {
8902
8930
  }
8903
8931
 
8904
8932
  disconnectedCallback() {
8905
- if (this.menuService) {
8906
- this.menuService.unsubscribe(this.handleMenuChange);
8907
- this.menuService.removeMenuOption(this);
8933
+ const { menuService } = this;
8934
+ if (menuService) {
8935
+ menuService.unsubscribe(this.handleMenuChange);
8936
+ menuService.removeMenuOption(this);
8908
8937
  }
8909
8938
  }
8910
8939
 
@@ -9073,9 +9102,11 @@ class AuroMenuOption extends AuroElement$1 {
9073
9102
  * @private
9074
9103
  */
9075
9104
  handleMouseEnter() {
9076
- if (!this.disabled) {
9077
- this.menuService.setHighlightedOption(this);
9105
+ const { menuService } = this;
9106
+ if (!menuService || this.disabled) {
9107
+ return;
9078
9108
  }
9109
+ menuService.setHighlightedOption(this);
9079
9110
  }
9080
9111
 
9081
9112
  /**
@@ -9479,10 +9510,15 @@ class MenuService {
9479
9510
  return;
9480
9511
  }
9481
9512
 
9513
+ const before = this.selectedOptions || [];
9482
9514
  const optionsSet = new Set(optionsToDeselect);
9483
- this.selectedOptions = (this.selectedOptions || [])
9484
- .filter(opt => !optionsSet.has(opt));
9515
+ const after = before.filter(opt => !optionsSet.has(opt));
9485
9516
 
9517
+ if (this.optionsArraysMatch(after, before)) {
9518
+ return;
9519
+ }
9520
+
9521
+ this.selectedOptions = after;
9486
9522
  this.stageUpdate();
9487
9523
  }
9488
9524
 
@@ -9578,6 +9614,16 @@ class MenuService {
9578
9614
  return;
9579
9615
  }
9580
9616
 
9617
+ const hostValue = this.host && this.host.value;
9618
+ const hostHasValue = hostValue !== undefined &&
9619
+ hostValue !== null &&
9620
+ (!Array.isArray(hostValue) || hostValue.length > 0) &&
9621
+ (typeof hostValue !== 'string' || hostValue.trim() !== '');
9622
+
9623
+ if (hostHasValue && this._pendingValue != null) {
9624
+ return;
9625
+ }
9626
+
9581
9627
  this.clearPendingValue();
9582
9628
 
9583
9629
  if (this.selectedOptions.length > 0) {
@@ -9758,6 +9804,9 @@ class MenuService {
9758
9804
  this.notify({ type: 'optionsChange', options: this._menuOptions });
9759
9805
 
9760
9806
  if (this._pendingValue != null) {
9807
+ // Reset the retry count so a new option registration gives a fresh
9808
+ // budget — the initial retries fired before delayed options arrived.
9809
+ this._pendingRetryCount = 0;
9761
9810
  this.queuePendingValue(this._pendingValue);
9762
9811
  }
9763
9812
  }
@@ -10102,7 +10151,11 @@ class AuroMenu extends AuroElement$1 {
10102
10151
  * @returns {string} - Returns the label of the currently selected option(s).
10103
10152
  */
10104
10153
  get currentLabel() {
10105
- return this.menuService.currentLabel;
10154
+ const { menuService } = this;
10155
+ if (!menuService) {
10156
+ return '';
10157
+ }
10158
+ return menuService.currentLabel;
10106
10159
  };
10107
10160
 
10108
10161
  /**
@@ -10125,7 +10178,12 @@ class AuroMenu extends AuroElement$1 {
10125
10178
  * @param {number} value - Sets the index of the currently active option.
10126
10179
  */
10127
10180
  set index(value) {
10128
- this.menuService.setHighlightedIndex(value);
10181
+ const { menuService } = this;
10182
+ if (!menuService) {
10183
+ return;
10184
+ }
10185
+
10186
+ menuService.setHighlightedIndex(value);
10129
10187
  }
10130
10188
 
10131
10189
  /**
@@ -10147,7 +10205,11 @@ class AuroMenu extends AuroElement$1 {
10147
10205
  * @returns {String|Array<String>}
10148
10206
  */
10149
10207
  get formattedValue() {
10150
- return this.menuService.currentValue;
10208
+ const { menuService } = this;
10209
+ if (!menuService) {
10210
+ return '';
10211
+ }
10212
+ return menuService.currentValue;
10151
10213
  }
10152
10214
 
10153
10215
  /**
@@ -10191,7 +10253,11 @@ class AuroMenu extends AuroElement$1 {
10191
10253
  * @param {HTMLElement} option - The option to set as active.
10192
10254
  */
10193
10255
  updateActiveOption(option) {
10194
- this.menuService.setHighlightedOption(option);
10256
+ const { menuService } = this;
10257
+ if (!menuService) {
10258
+ return;
10259
+ }
10260
+ menuService.setHighlightedOption(option);
10195
10261
  }
10196
10262
 
10197
10263
  /**
@@ -10219,7 +10285,8 @@ class AuroMenu extends AuroElement$1 {
10219
10285
  if (event.type === 'valueChange') {
10220
10286
 
10221
10287
  // New option is array value or first option with fallback to undefined for empty array in all cases
10222
- const newOption = this.multiSelect && event.options.length ? event.options : event.options[0] || undefined;
10288
+ const options = event.options || [];
10289
+ const newOption = this.multiSelect && options.length ? options : options[0] || undefined;
10223
10290
  const newValue = event.stringValue;
10224
10291
 
10225
10292
  // Check if the option or value has actually changed
@@ -10228,8 +10295,11 @@ class AuroMenu extends AuroElement$1 {
10228
10295
  this.setInternalValue(newValue);
10229
10296
  }
10230
10297
 
10231
- // Notify components of selection change
10232
- this.notifySelectionChange(event);
10298
+ // Notify components of selection change (pass normalized options to avoid undefined iterability errors)
10299
+ this.notifySelectionChange({
10300
+ ...event,
10301
+ options
10302
+ });
10233
10303
  }
10234
10304
 
10235
10305
  if (event.type === 'highlightChange') {
@@ -10252,7 +10322,11 @@ class AuroMenu extends AuroElement$1 {
10252
10322
  * @returns {Array<HTMLElement>}
10253
10323
  */
10254
10324
  get selectedOptions() {
10255
- return this.menuService ? this.menuService.selectedOptions : [];
10325
+ const { menuService } = this;
10326
+ if (!menuService) {
10327
+ return [];
10328
+ }
10329
+ return menuService.selectedOptions;
10256
10330
  }
10257
10331
 
10258
10332
  /**
@@ -10260,7 +10334,11 @@ class AuroMenu extends AuroElement$1 {
10260
10334
  * @returns {HTMLElement|null}
10261
10335
  */
10262
10336
  get selectedOption() {
10263
- return this.menuService ? this.menuService.selectedOptions[0] : null;
10337
+ const { menuService } = this;
10338
+ if (!menuService) {
10339
+ return null;
10340
+ }
10341
+ return menuService.selectedOptions[0] || null;
10264
10342
  }
10265
10343
 
10266
10344
  // Lifecycle Methods
@@ -10304,7 +10382,11 @@ class AuroMenu extends AuroElement$1 {
10304
10382
  // keys are not yet resolved (framework mount-order race), selectByValue
10305
10383
  // queues a bounded retry automatically via queuePendingValue.
10306
10384
  if (changedProperties.has('value') && !this.internalUpdateInProgress) {
10307
- this.menuService.selectByValue(this.value);
10385
+ const { menuService } = this;
10386
+ if (!menuService) {
10387
+ return;
10388
+ }
10389
+ menuService.selectByValue(this.value);
10308
10390
  }
10309
10391
 
10310
10392
  // Handle loading state changes
@@ -10369,7 +10451,11 @@ class AuroMenu extends AuroElement$1 {
10369
10451
  * @protected
10370
10452
  */
10371
10453
  makeSelection() {
10372
- this.menuService.selectHighlightedOption();
10454
+ const { menuService } = this;
10455
+ if (!menuService) {
10456
+ return;
10457
+ }
10458
+ menuService.selectHighlightedOption();
10373
10459
  }
10374
10460
 
10375
10461
  /**
@@ -10388,7 +10474,11 @@ class AuroMenu extends AuroElement$1 {
10388
10474
  * @public
10389
10475
  */
10390
10476
  reset() {
10391
- this.menuService.reset();
10477
+ const { menuService } = this;
10478
+ if (!menuService) {
10479
+ return;
10480
+ }
10481
+ menuService.reset();
10392
10482
 
10393
10483
  // Dispatch reset event
10394
10484
  dispatchMenuEvent(this, 'auroMenu-selectValueReset');
@@ -10423,10 +10513,14 @@ class AuroMenu extends AuroElement$1 {
10423
10513
  * @protected
10424
10514
  */
10425
10515
  navigateOptions(direction) {
10516
+ const { menuService } = this;
10517
+ if (!menuService) {
10518
+ return;
10519
+ }
10426
10520
  if (direction === 'up') {
10427
- this.menuService.highlightPrevious();
10521
+ menuService.highlightPrevious();
10428
10522
  } else if (direction === 'down') {
10429
- this.menuService.highlightNext();
10523
+ menuService.highlightNext();
10430
10524
  }
10431
10525
  }
10432
10526
 
@@ -3261,6 +3261,7 @@ class AuroFloatingUI {
3261
3261
  this.focusHandler = null;
3262
3262
  this.clickHandler = null;
3263
3263
  this.keyDownHandler = null;
3264
+ this.touchHandler = null;
3264
3265
 
3265
3266
  /**
3266
3267
  * @private
@@ -3678,6 +3679,28 @@ class AuroFloatingUI {
3678
3679
  setTimeout(() => {
3679
3680
  window.addEventListener("click", this.clickHandler);
3680
3681
  }, 0);
3682
+
3683
+ // iOS Safari does not fire `click` on non-interactive elements, so
3684
+ // tapping an inert backdrop never reaches the click handler above.
3685
+ // Mirror the same outside-tap logic with a passive touchstart listener.
3686
+ this.touchHandler = (evt) => {
3687
+ const element = this.element;
3688
+ if (!element?.bib) {
3689
+ return;
3690
+ }
3691
+
3692
+ // fullscreen (modal) dialog handles its own dismissal
3693
+ if (element.bib.hasAttribute("isfullscreen")) {
3694
+ return;
3695
+ }
3696
+
3697
+ const path = evt.composedPath();
3698
+ if (!path.includes(element.trigger) && !path.includes(element.bib)) {
3699
+ this.hideBib("click");
3700
+ }
3701
+ };
3702
+
3703
+ window.addEventListener("touchstart", this.touchHandler, { passive: true });
3681
3704
  }
3682
3705
 
3683
3706
  cleanupHideHandlers() {
@@ -3693,6 +3716,11 @@ class AuroFloatingUI {
3693
3716
  this.clickHandler = null;
3694
3717
  }
3695
3718
 
3719
+ if (this.touchHandler) {
3720
+ window.removeEventListener("touchstart", this.touchHandler);
3721
+ this.touchHandler = null;
3722
+ }
3723
+
3696
3724
  if (this.keyDownHandler) {
3697
3725
  document.removeEventListener("keydown", this.keyDownHandler);
3698
3726
  this.keyDownHandler = null;
@@ -5167,7 +5195,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
5167
5195
  }
5168
5196
  };
5169
5197
 
5170
- var formkitVersion$1 = '202604091453';
5198
+ var formkitVersion$1 = '202604101700';
5171
5199
 
5172
5200
  class AuroElement extends i$3 {
5173
5201
  static get properties() {
@@ -6920,7 +6948,7 @@ class AuroHelpText extends i$3 {
6920
6948
  }
6921
6949
  }
6922
6950
 
6923
- var formkitVersion = '202604091453';
6951
+ var formkitVersion = '202604101700';
6924
6952
 
6925
6953
  var styleCss$2 = i$6`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);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, 0.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, 0.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, 0.625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 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, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
6926
6954
 
@@ -8783,7 +8811,7 @@ class AuroMenuOption extends AuroElement$1 {
8783
8811
  this.setAttribute('aria-selected', this.selected.toString());
8784
8812
 
8785
8813
  // Update menu service selection state if this isn't an internal update
8786
- if (this.internalUpdateInProgress !== true) {
8814
+ if (this.internalUpdateInProgress !== true && this.menuService) {
8787
8815
  this.menuService[this.selected ? 'selectOption' : 'deselectOption'](this);
8788
8816
  }
8789
8817
  }
@@ -8818,9 +8846,10 @@ class AuroMenuOption extends AuroElement$1 {
8818
8846
  }
8819
8847
 
8820
8848
  disconnectedCallback() {
8821
- if (this.menuService) {
8822
- this.menuService.unsubscribe(this.handleMenuChange);
8823
- this.menuService.removeMenuOption(this);
8849
+ const { menuService } = this;
8850
+ if (menuService) {
8851
+ menuService.unsubscribe(this.handleMenuChange);
8852
+ menuService.removeMenuOption(this);
8824
8853
  }
8825
8854
  }
8826
8855
 
@@ -8989,9 +9018,11 @@ class AuroMenuOption extends AuroElement$1 {
8989
9018
  * @private
8990
9019
  */
8991
9020
  handleMouseEnter() {
8992
- if (!this.disabled) {
8993
- this.menuService.setHighlightedOption(this);
9021
+ const { menuService } = this;
9022
+ if (!menuService || this.disabled) {
9023
+ return;
8994
9024
  }
9025
+ menuService.setHighlightedOption(this);
8995
9026
  }
8996
9027
 
8997
9028
  /**
@@ -9395,10 +9426,15 @@ class MenuService {
9395
9426
  return;
9396
9427
  }
9397
9428
 
9429
+ const before = this.selectedOptions || [];
9398
9430
  const optionsSet = new Set(optionsToDeselect);
9399
- this.selectedOptions = (this.selectedOptions || [])
9400
- .filter(opt => !optionsSet.has(opt));
9431
+ const after = before.filter(opt => !optionsSet.has(opt));
9401
9432
 
9433
+ if (this.optionsArraysMatch(after, before)) {
9434
+ return;
9435
+ }
9436
+
9437
+ this.selectedOptions = after;
9402
9438
  this.stageUpdate();
9403
9439
  }
9404
9440
 
@@ -9494,6 +9530,16 @@ class MenuService {
9494
9530
  return;
9495
9531
  }
9496
9532
 
9533
+ const hostValue = this.host && this.host.value;
9534
+ const hostHasValue = hostValue !== undefined &&
9535
+ hostValue !== null &&
9536
+ (!Array.isArray(hostValue) || hostValue.length > 0) &&
9537
+ (typeof hostValue !== 'string' || hostValue.trim() !== '');
9538
+
9539
+ if (hostHasValue && this._pendingValue != null) {
9540
+ return;
9541
+ }
9542
+
9497
9543
  this.clearPendingValue();
9498
9544
 
9499
9545
  if (this.selectedOptions.length > 0) {
@@ -9674,6 +9720,9 @@ class MenuService {
9674
9720
  this.notify({ type: 'optionsChange', options: this._menuOptions });
9675
9721
 
9676
9722
  if (this._pendingValue != null) {
9723
+ // Reset the retry count so a new option registration gives a fresh
9724
+ // budget — the initial retries fired before delayed options arrived.
9725
+ this._pendingRetryCount = 0;
9677
9726
  this.queuePendingValue(this._pendingValue);
9678
9727
  }
9679
9728
  }
@@ -10018,7 +10067,11 @@ class AuroMenu extends AuroElement$1 {
10018
10067
  * @returns {string} - Returns the label of the currently selected option(s).
10019
10068
  */
10020
10069
  get currentLabel() {
10021
- return this.menuService.currentLabel;
10070
+ const { menuService } = this;
10071
+ if (!menuService) {
10072
+ return '';
10073
+ }
10074
+ return menuService.currentLabel;
10022
10075
  };
10023
10076
 
10024
10077
  /**
@@ -10041,7 +10094,12 @@ class AuroMenu extends AuroElement$1 {
10041
10094
  * @param {number} value - Sets the index of the currently active option.
10042
10095
  */
10043
10096
  set index(value) {
10044
- this.menuService.setHighlightedIndex(value);
10097
+ const { menuService } = this;
10098
+ if (!menuService) {
10099
+ return;
10100
+ }
10101
+
10102
+ menuService.setHighlightedIndex(value);
10045
10103
  }
10046
10104
 
10047
10105
  /**
@@ -10063,7 +10121,11 @@ class AuroMenu extends AuroElement$1 {
10063
10121
  * @returns {String|Array<String>}
10064
10122
  */
10065
10123
  get formattedValue() {
10066
- return this.menuService.currentValue;
10124
+ const { menuService } = this;
10125
+ if (!menuService) {
10126
+ return '';
10127
+ }
10128
+ return menuService.currentValue;
10067
10129
  }
10068
10130
 
10069
10131
  /**
@@ -10107,7 +10169,11 @@ class AuroMenu extends AuroElement$1 {
10107
10169
  * @param {HTMLElement} option - The option to set as active.
10108
10170
  */
10109
10171
  updateActiveOption(option) {
10110
- this.menuService.setHighlightedOption(option);
10172
+ const { menuService } = this;
10173
+ if (!menuService) {
10174
+ return;
10175
+ }
10176
+ menuService.setHighlightedOption(option);
10111
10177
  }
10112
10178
 
10113
10179
  /**
@@ -10135,7 +10201,8 @@ class AuroMenu extends AuroElement$1 {
10135
10201
  if (event.type === 'valueChange') {
10136
10202
 
10137
10203
  // New option is array value or first option with fallback to undefined for empty array in all cases
10138
- const newOption = this.multiSelect && event.options.length ? event.options : event.options[0] || undefined;
10204
+ const options = event.options || [];
10205
+ const newOption = this.multiSelect && options.length ? options : options[0] || undefined;
10139
10206
  const newValue = event.stringValue;
10140
10207
 
10141
10208
  // Check if the option or value has actually changed
@@ -10144,8 +10211,11 @@ class AuroMenu extends AuroElement$1 {
10144
10211
  this.setInternalValue(newValue);
10145
10212
  }
10146
10213
 
10147
- // Notify components of selection change
10148
- this.notifySelectionChange(event);
10214
+ // Notify components of selection change (pass normalized options to avoid undefined iterability errors)
10215
+ this.notifySelectionChange({
10216
+ ...event,
10217
+ options
10218
+ });
10149
10219
  }
10150
10220
 
10151
10221
  if (event.type === 'highlightChange') {
@@ -10168,7 +10238,11 @@ class AuroMenu extends AuroElement$1 {
10168
10238
  * @returns {Array<HTMLElement>}
10169
10239
  */
10170
10240
  get selectedOptions() {
10171
- return this.menuService ? this.menuService.selectedOptions : [];
10241
+ const { menuService } = this;
10242
+ if (!menuService) {
10243
+ return [];
10244
+ }
10245
+ return menuService.selectedOptions;
10172
10246
  }
10173
10247
 
10174
10248
  /**
@@ -10176,7 +10250,11 @@ class AuroMenu extends AuroElement$1 {
10176
10250
  * @returns {HTMLElement|null}
10177
10251
  */
10178
10252
  get selectedOption() {
10179
- return this.menuService ? this.menuService.selectedOptions[0] : null;
10253
+ const { menuService } = this;
10254
+ if (!menuService) {
10255
+ return null;
10256
+ }
10257
+ return menuService.selectedOptions[0] || null;
10180
10258
  }
10181
10259
 
10182
10260
  // Lifecycle Methods
@@ -10220,7 +10298,11 @@ class AuroMenu extends AuroElement$1 {
10220
10298
  // keys are not yet resolved (framework mount-order race), selectByValue
10221
10299
  // queues a bounded retry automatically via queuePendingValue.
10222
10300
  if (changedProperties.has('value') && !this.internalUpdateInProgress) {
10223
- this.menuService.selectByValue(this.value);
10301
+ const { menuService } = this;
10302
+ if (!menuService) {
10303
+ return;
10304
+ }
10305
+ menuService.selectByValue(this.value);
10224
10306
  }
10225
10307
 
10226
10308
  // Handle loading state changes
@@ -10285,7 +10367,11 @@ class AuroMenu extends AuroElement$1 {
10285
10367
  * @protected
10286
10368
  */
10287
10369
  makeSelection() {
10288
- this.menuService.selectHighlightedOption();
10370
+ const { menuService } = this;
10371
+ if (!menuService) {
10372
+ return;
10373
+ }
10374
+ menuService.selectHighlightedOption();
10289
10375
  }
10290
10376
 
10291
10377
  /**
@@ -10304,7 +10390,11 @@ class AuroMenu extends AuroElement$1 {
10304
10390
  * @public
10305
10391
  */
10306
10392
  reset() {
10307
- this.menuService.reset();
10393
+ const { menuService } = this;
10394
+ if (!menuService) {
10395
+ return;
10396
+ }
10397
+ menuService.reset();
10308
10398
 
10309
10399
  // Dispatch reset event
10310
10400
  dispatchMenuEvent(this, 'auroMenu-selectValueReset');
@@ -10339,10 +10429,14 @@ class AuroMenu extends AuroElement$1 {
10339
10429
  * @protected
10340
10430
  */
10341
10431
  navigateOptions(direction) {
10432
+ const { menuService } = this;
10433
+ if (!menuService) {
10434
+ return;
10435
+ }
10342
10436
  if (direction === 'up') {
10343
- this.menuService.highlightPrevious();
10437
+ menuService.highlightPrevious();
10344
10438
  } else if (direction === 'down') {
10345
- this.menuService.highlightNext();
10439
+ menuService.highlightNext();
10346
10440
  }
10347
10441
  }
10348
10442