@aurodesignsystem-dev/auro-formkit 0.0.0-pr1497.6 → 0.0.0-pr1498.0

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 (58) hide show
  1. package/components/checkbox/demo/customize.min.js +2 -2
  2. package/components/checkbox/demo/getting-started.min.js +2 -2
  3. package/components/checkbox/demo/index.min.js +2 -2
  4. package/components/checkbox/dist/index.js +2 -2
  5. package/components/checkbox/dist/registered.js +2 -2
  6. package/components/combobox/demo/customize.md +7 -3
  7. package/components/combobox/demo/customize.min.js +1438 -1668
  8. package/components/combobox/demo/getting-started.min.js +1440 -1670
  9. package/components/combobox/demo/index.min.js +1440 -1670
  10. package/components/combobox/dist/auro-combobox.d.ts +5 -0
  11. package/components/combobox/dist/index.js +485 -140
  12. package/components/combobox/dist/registered.js +485 -140
  13. package/components/counter/demo/customize.min.js +20 -3
  14. package/components/counter/demo/index.min.js +20 -3
  15. package/components/counter/dist/index.js +5447 -192
  16. package/components/counter/dist/registered.js +5447 -192
  17. package/components/datepicker/demo/customize.min.js +149 -58
  18. package/components/datepicker/demo/index.min.js +149 -58
  19. package/components/datepicker/dist/index.js +149 -58
  20. package/components/datepicker/dist/registered.js +149 -58
  21. package/components/dropdown/demo/customize.min.js +18 -1
  22. package/components/dropdown/demo/getting-started.min.js +18 -1
  23. package/components/dropdown/demo/index.min.js +18 -1
  24. package/components/dropdown/dist/auro-dropdown.d.ts +1 -0
  25. package/components/dropdown/dist/index.js +18 -1
  26. package/components/dropdown/dist/registered.js +18 -1
  27. package/components/form/demo/customize.min.js +7910 -7909
  28. package/components/form/demo/getting-started.min.js +7910 -7909
  29. package/components/form/demo/index.min.js +7910 -7909
  30. package/components/form/demo/registerDemoDeps.min.js +7872 -7871
  31. package/components/input/demo/customize.min.js +131 -56
  32. package/components/input/demo/getting-started.min.js +131 -56
  33. package/components/input/demo/index.min.js +131 -56
  34. package/components/input/dist/base-input.d.ts +16 -0
  35. package/components/input/dist/index.js +131 -56
  36. package/components/input/dist/registered.js +131 -56
  37. package/components/menu/demo/api.md +41 -45
  38. package/components/menu/demo/customize.md +0 -28
  39. package/components/menu/demo/index.min.js +779 -1354
  40. package/components/menu/dist/auro-menu.d.ts +95 -110
  41. package/components/menu/dist/auro-menuoption.d.ts +32 -138
  42. package/components/menu/dist/index.js +753 -1308
  43. package/components/menu/dist/registered.js +765 -1308
  44. package/components/radio/demo/customize.min.js +2 -2
  45. package/components/radio/demo/getting-started.min.js +2 -2
  46. package/components/radio/demo/index.min.js +2 -2
  47. package/components/radio/dist/index.js +2 -2
  48. package/components/radio/dist/registered.js +2 -2
  49. package/components/select/demo/customize.md +7 -3
  50. package/components/select/demo/customize.min.js +1088 -1615
  51. package/components/select/demo/getting-started.min.js +1088 -1615
  52. package/components/select/demo/index.min.js +1088 -1615
  53. package/components/select/dist/index.js +63 -15
  54. package/components/select/dist/registered.js +63 -15
  55. package/components/select/dist/selectUtils.d.ts +12 -0
  56. package/custom-elements.json +379 -1025
  57. package/package.json +1 -1
  58. package/components/menu/dist/auro-menu.context.d.ts +0 -238
@@ -623,7 +623,7 @@ class AuroFormValidation {
623
623
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
624
624
  const input = elem.renderRoot.querySelector('input');
625
625
 
626
- if (input.validationMessage.length > 0) {
626
+ if (input && input.validationMessage.length > 0) {
627
627
  elem.errorMessage = input.validationMessage;
628
628
  }
629
629
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -835,6 +835,21 @@ function navigateArrow(component, direction, options = {}) {
835
835
  }
836
836
  }
837
837
 
838
+ /**
839
+ * Returns the enabled (non-disabled) options for a menu, safely.
840
+ *
841
+ * Auro-menu's `options` getter returns `undefined` when the menu has no items
842
+ * (initItems sets `items` to undefined for empty menus). Callers that reach for
843
+ * `.find()` / `[...spread]` would otherwise crash; this helper normalizes the
844
+ * empty case to `[]` so array methods are always safe.
845
+ *
846
+ * @param {HTMLElement | null | undefined} menu - The auro-menu element.
847
+ * @returns {Array<HTMLElement>} Non-disabled options, empty array when none.
848
+ */
849
+ function getEnabledOptions(menu) {
850
+ return (menu?.options || []).filter((option) => !option.disabled);
851
+ }
852
+
838
853
  /* eslint-disable new-cap */
839
854
 
840
855
  const selectKeyboardStrategy = {
@@ -883,7 +898,8 @@ const selectKeyboardStrategy = {
883
898
  }
884
899
  evt.preventDefault();
885
900
  evt.stopPropagation();
886
- const lastOption = [...component.menu.menuService.menuOptions].reverse().find((option) => !option.disabled);
901
+ // `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
902
+ const lastOption = getEnabledOptions(component.menu).pop();
887
903
  if (lastOption) {
888
904
  component.menu.updateActiveOption(lastOption);
889
905
  }
@@ -905,7 +921,7 @@ const selectKeyboardStrategy = {
905
921
  }
906
922
  evt.preventDefault();
907
923
  evt.stopPropagation();
908
- const firstOption = component.menu.menuService.menuOptions.find((option) => !option.disabled);
924
+ const [firstOption] = getEnabledOptions(component.menu);
909
925
  if (firstOption) {
910
926
  component.menu.updateActiveOption(firstOption);
911
927
  }
@@ -4846,7 +4862,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
4846
4862
  }
4847
4863
  };
4848
4864
 
4849
- var formkitVersion$1 = '202606082053';
4865
+ var formkitVersion$1 = '202606100232';
4850
4866
 
4851
4867
  class AuroElement extends LitElement {
4852
4868
  static get properties() {
@@ -5704,6 +5720,15 @@ class AuroDropdown extends AuroElement {
5704
5720
  this.focusTrap = undefined;
5705
5721
  }
5706
5722
 
5723
+ // Restore any focus-loss suppression we installed for a prior trap state.
5724
+ // The desktopModal trap moves focus into the bib via RAF, which would
5725
+ // otherwise trip AuroFloatingUI.handleFocusLoss (a popover-top-layer
5726
+ // timing issue makes its :focus-within guard miss the focused button).
5727
+ if (this._priorNoHideOnFocusLoss !== undefined) {
5728
+ this.noHideOnThisFocusLoss = this._priorNoHideOnFocusLoss;
5729
+ this._priorNoHideOnFocusLoss = undefined;
5730
+ }
5731
+
5707
5732
  if (this.isPopoverVisible) {
5708
5733
  if (!this.isBibFullscreen) {
5709
5734
  if (this.desktopModal) {
@@ -5779,6 +5804,14 @@ class AuroDropdown extends AuroElement {
5779
5804
  };
5780
5805
  this.addEventListener('keydown', this._bibTabHandler);
5781
5806
 
5807
+ // Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
5808
+ // desktopModal trap owns focus management. Without this, the very
5809
+ // first focus move into the bib (from the RAF below) triggers
5810
+ // handleFocusLoss → hideBib, tearing down the trap before the
5811
+ // user can press Tab.
5812
+ this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
5813
+ this.noHideOnThisFocusLoss = true;
5814
+
5782
5815
  // Move initial focus into the bib content, matching FocusTrap behavior
5783
5816
  requestAnimationFrame(() => {
5784
5817
  const focusables = getFocusableElements(this.bibContent);
@@ -6841,7 +6874,7 @@ class AuroHelpText extends LitElement {
6841
6874
  }
6842
6875
  }
6843
6876
 
6844
- var formkitVersion = '202606082053';
6877
+ var formkitVersion = '202606100232';
6845
6878
 
6846
6879
  var styleCss = 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}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-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, 300);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, 300);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}`;
6847
6880
 
@@ -7393,7 +7426,7 @@ class AuroSelect extends AuroElement$1 {
7393
7426
  this.menu.updateActiveOption(this.optionSelected[0]);
7394
7427
  } else {
7395
7428
  // If no activeOption has yet to be set, then make the first enabled option active by default
7396
- const firstActive = this.menu.menuService.menuOptions.find((option) => !option.disabled);
7429
+ const [firstActive] = getEnabledOptions(this.menu);
7397
7430
  this.menu.updateActiveOption(firstActive);
7398
7431
  }
7399
7432
  }
@@ -7617,12 +7650,23 @@ class AuroSelect extends AuroElement$1 {
7617
7650
  this.menu.multiSelect = this.multiSelect;
7618
7651
  }
7619
7652
 
7653
+ // Menu's items are populated by initItems() during its firstUpdated/slotchange.
7654
+ // Since the parent select's firstUpdated runs before the child menu's, call initItems()
7655
+ // here so renderNativeSelect can render the native <option> list on first paint.
7656
+ if (typeof this.menu.initItems === 'function') {
7657
+ this.menu.initItems();
7658
+ }
7620
7659
  this.options = this.menu.options;
7621
7660
  this.updateOptionPositions();
7622
7661
  this.menu.addEventListener("auroMenu-loadingChange", (event) => this.handleMenuLoadingChange(event));
7623
7662
 
7624
- this.menu.addEventListener("auroMenu-deselectPrevented", () => {
7625
- this.hideBib();
7663
+ this.menu.addEventListener("auroMenu-selectValueFailure", () => {
7664
+ this.value = undefined;
7665
+ this.optionSelected = this.multiSelect ? [] : undefined;
7666
+ // The trigger label is rendered imperatively into #value, so a property
7667
+ // change alone won't clear it. Refresh so stale text doesn't linger when
7668
+ // a runtime value change fails to match any option.
7669
+ this.updateDisplayedValue();
7626
7670
  });
7627
7671
 
7628
7672
  this.menu.addEventListener('auroMenu-activatedOption', (evt) => {
@@ -7644,16 +7688,20 @@ class AuroSelect extends AuroElement$1 {
7644
7688
  }
7645
7689
  });
7646
7690
 
7647
- this.menu.addEventListener('auroMenu-selectedOption', (event) => {
7691
+ this.menu.addEventListener('auroMenu-selectedOption', () => {
7648
7692
 
7649
7693
  // Update the displayed value
7650
7694
  this.updateDisplayedValue();
7651
7695
 
7652
- const options = event.detail.options || [];
7653
-
7654
- this.value = event.detail.stringValue;
7696
+ this.value = this.menu.value;
7655
7697
 
7656
- this.optionSelected = this.multiSelect ? options : options[0];
7698
+ // Clone the multiselect array so external mutation of select.optionSelected
7699
+ // can't reach back into menu's internal state through a shared reference.
7700
+ let nextSelected = this.menu.optionSelected;
7701
+ if (this.multiSelect) {
7702
+ nextSelected = Array.isArray(nextSelected) ? [...nextSelected] : [];
7703
+ }
7704
+ this.optionSelected = nextSelected;
7657
7705
 
7658
7706
  if (this.dropdown.isPopoverVisible && !this.multiSelect) {
7659
7707
  this.dropdown.hide();
@@ -7662,7 +7710,7 @@ class AuroSelect extends AuroElement$1 {
7662
7710
 
7663
7711
  // Announce the selection after the dropdown closes so it isn't
7664
7712
  // overridden by VoiceOver's "collapsed" announcement from aria-expanded.
7665
- const selectedValue = event.detail.stringValue;
7713
+ const selectedValue = this.menu.currentLabel;
7666
7714
  const announcementDelay = 300;
7667
7715
  setTimeout(() => {
7668
7716
  announceToScreenReader(this._getAnnouncementRoot(), `${selectedValue}, selected`);
@@ -7858,7 +7906,7 @@ class AuroSelect extends AuroElement$1 {
7858
7906
 
7859
7907
  setMenuValue(value) {
7860
7908
  if (!this.menu) return;
7861
- this.menu.value = value;
7909
+ this.menu.selectByValue(value);
7862
7910
  }
7863
7911
 
7864
7912
  /**
@@ -623,7 +623,7 @@ class AuroFormValidation {
623
623
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
624
624
  const input = elem.renderRoot.querySelector('input');
625
625
 
626
- if (input.validationMessage.length > 0) {
626
+ if (input && input.validationMessage.length > 0) {
627
627
  elem.errorMessage = input.validationMessage;
628
628
  }
629
629
  } else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
@@ -835,6 +835,21 @@ function navigateArrow(component, direction, options = {}) {
835
835
  }
836
836
  }
837
837
 
838
+ /**
839
+ * Returns the enabled (non-disabled) options for a menu, safely.
840
+ *
841
+ * Auro-menu's `options` getter returns `undefined` when the menu has no items
842
+ * (initItems sets `items` to undefined for empty menus). Callers that reach for
843
+ * `.find()` / `[...spread]` would otherwise crash; this helper normalizes the
844
+ * empty case to `[]` so array methods are always safe.
845
+ *
846
+ * @param {HTMLElement | null | undefined} menu - The auro-menu element.
847
+ * @returns {Array<HTMLElement>} Non-disabled options, empty array when none.
848
+ */
849
+ function getEnabledOptions(menu) {
850
+ return (menu?.options || []).filter((option) => !option.disabled);
851
+ }
852
+
838
853
  /* eslint-disable new-cap */
839
854
 
840
855
  const selectKeyboardStrategy = {
@@ -883,7 +898,8 @@ const selectKeyboardStrategy = {
883
898
  }
884
899
  evt.preventDefault();
885
900
  evt.stopPropagation();
886
- const lastOption = [...component.menu.menuService.menuOptions].reverse().find((option) => !option.disabled);
901
+ // `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
902
+ const lastOption = getEnabledOptions(component.menu).pop();
887
903
  if (lastOption) {
888
904
  component.menu.updateActiveOption(lastOption);
889
905
  }
@@ -905,7 +921,7 @@ const selectKeyboardStrategy = {
905
921
  }
906
922
  evt.preventDefault();
907
923
  evt.stopPropagation();
908
- const firstOption = component.menu.menuService.menuOptions.find((option) => !option.disabled);
924
+ const [firstOption] = getEnabledOptions(component.menu);
909
925
  if (firstOption) {
910
926
  component.menu.updateActiveOption(firstOption);
911
927
  }
@@ -4846,7 +4862,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
4846
4862
  }
4847
4863
  };
4848
4864
 
4849
- var formkitVersion$1 = '202606082053';
4865
+ var formkitVersion$1 = '202606100232';
4850
4866
 
4851
4867
  class AuroElement extends LitElement {
4852
4868
  static get properties() {
@@ -5704,6 +5720,15 @@ class AuroDropdown extends AuroElement {
5704
5720
  this.focusTrap = undefined;
5705
5721
  }
5706
5722
 
5723
+ // Restore any focus-loss suppression we installed for a prior trap state.
5724
+ // The desktopModal trap moves focus into the bib via RAF, which would
5725
+ // otherwise trip AuroFloatingUI.handleFocusLoss (a popover-top-layer
5726
+ // timing issue makes its :focus-within guard miss the focused button).
5727
+ if (this._priorNoHideOnFocusLoss !== undefined) {
5728
+ this.noHideOnThisFocusLoss = this._priorNoHideOnFocusLoss;
5729
+ this._priorNoHideOnFocusLoss = undefined;
5730
+ }
5731
+
5707
5732
  if (this.isPopoverVisible) {
5708
5733
  if (!this.isBibFullscreen) {
5709
5734
  if (this.desktopModal) {
@@ -5779,6 +5804,14 @@ class AuroDropdown extends AuroElement {
5779
5804
  };
5780
5805
  this.addEventListener('keydown', this._bibTabHandler);
5781
5806
 
5807
+ // Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
5808
+ // desktopModal trap owns focus management. Without this, the very
5809
+ // first focus move into the bib (from the RAF below) triggers
5810
+ // handleFocusLoss → hideBib, tearing down the trap before the
5811
+ // user can press Tab.
5812
+ this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
5813
+ this.noHideOnThisFocusLoss = true;
5814
+
5782
5815
  // Move initial focus into the bib content, matching FocusTrap behavior
5783
5816
  requestAnimationFrame(() => {
5784
5817
  const focusables = getFocusableElements(this.bibContent);
@@ -6841,7 +6874,7 @@ class AuroHelpText extends LitElement {
6841
6874
  }
6842
6875
  }
6843
6876
 
6844
- var formkitVersion = '202606082053';
6877
+ var formkitVersion = '202606100232';
6845
6878
 
6846
6879
  var styleCss = 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}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );line-height:var(--wcss-body-2xs-emphasized-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, 300);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, 300);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}`;
6847
6880
 
@@ -7393,7 +7426,7 @@ class AuroSelect extends AuroElement$1 {
7393
7426
  this.menu.updateActiveOption(this.optionSelected[0]);
7394
7427
  } else {
7395
7428
  // If no activeOption has yet to be set, then make the first enabled option active by default
7396
- const firstActive = this.menu.menuService.menuOptions.find((option) => !option.disabled);
7429
+ const [firstActive] = getEnabledOptions(this.menu);
7397
7430
  this.menu.updateActiveOption(firstActive);
7398
7431
  }
7399
7432
  }
@@ -7617,12 +7650,23 @@ class AuroSelect extends AuroElement$1 {
7617
7650
  this.menu.multiSelect = this.multiSelect;
7618
7651
  }
7619
7652
 
7653
+ // Menu's items are populated by initItems() during its firstUpdated/slotchange.
7654
+ // Since the parent select's firstUpdated runs before the child menu's, call initItems()
7655
+ // here so renderNativeSelect can render the native <option> list on first paint.
7656
+ if (typeof this.menu.initItems === 'function') {
7657
+ this.menu.initItems();
7658
+ }
7620
7659
  this.options = this.menu.options;
7621
7660
  this.updateOptionPositions();
7622
7661
  this.menu.addEventListener("auroMenu-loadingChange", (event) => this.handleMenuLoadingChange(event));
7623
7662
 
7624
- this.menu.addEventListener("auroMenu-deselectPrevented", () => {
7625
- this.hideBib();
7663
+ this.menu.addEventListener("auroMenu-selectValueFailure", () => {
7664
+ this.value = undefined;
7665
+ this.optionSelected = this.multiSelect ? [] : undefined;
7666
+ // The trigger label is rendered imperatively into #value, so a property
7667
+ // change alone won't clear it. Refresh so stale text doesn't linger when
7668
+ // a runtime value change fails to match any option.
7669
+ this.updateDisplayedValue();
7626
7670
  });
7627
7671
 
7628
7672
  this.menu.addEventListener('auroMenu-activatedOption', (evt) => {
@@ -7644,16 +7688,20 @@ class AuroSelect extends AuroElement$1 {
7644
7688
  }
7645
7689
  });
7646
7690
 
7647
- this.menu.addEventListener('auroMenu-selectedOption', (event) => {
7691
+ this.menu.addEventListener('auroMenu-selectedOption', () => {
7648
7692
 
7649
7693
  // Update the displayed value
7650
7694
  this.updateDisplayedValue();
7651
7695
 
7652
- const options = event.detail.options || [];
7653
-
7654
- this.value = event.detail.stringValue;
7696
+ this.value = this.menu.value;
7655
7697
 
7656
- this.optionSelected = this.multiSelect ? options : options[0];
7698
+ // Clone the multiselect array so external mutation of select.optionSelected
7699
+ // can't reach back into menu's internal state through a shared reference.
7700
+ let nextSelected = this.menu.optionSelected;
7701
+ if (this.multiSelect) {
7702
+ nextSelected = Array.isArray(nextSelected) ? [...nextSelected] : [];
7703
+ }
7704
+ this.optionSelected = nextSelected;
7657
7705
 
7658
7706
  if (this.dropdown.isPopoverVisible && !this.multiSelect) {
7659
7707
  this.dropdown.hide();
@@ -7662,7 +7710,7 @@ class AuroSelect extends AuroElement$1 {
7662
7710
 
7663
7711
  // Announce the selection after the dropdown closes so it isn't
7664
7712
  // overridden by VoiceOver's "collapsed" announcement from aria-expanded.
7665
- const selectedValue = event.detail.stringValue;
7713
+ const selectedValue = this.menu.currentLabel;
7666
7714
  const announcementDelay = 300;
7667
7715
  setTimeout(() => {
7668
7716
  announceToScreenReader(this._getAnnouncementRoot(), `${selectedValue}, selected`);
@@ -7858,7 +7906,7 @@ class AuroSelect extends AuroElement$1 {
7858
7906
 
7859
7907
  setMenuValue(value) {
7860
7908
  if (!this.menu) return;
7861
- this.menu.value = value;
7909
+ this.menu.selectByValue(value);
7862
7910
  }
7863
7911
 
7864
7912
  /**
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Returns the enabled (non-disabled) options for a menu, safely.
3
+ *
4
+ * Auro-menu's `options` getter returns `undefined` when the menu has no items
5
+ * (initItems sets `items` to undefined for empty menus). Callers that reach for
6
+ * `.find()` / `[...spread]` would otherwise crash; this helper normalizes the
7
+ * empty case to `[]` so array methods are always safe.
8
+ *
9
+ * @param {HTMLElement | null | undefined} menu - The auro-menu element.
10
+ * @returns {Array<HTMLElement>} Non-disabled options, empty array when none.
11
+ */
12
+ export function getEnabledOptions(menu: HTMLElement | null | undefined): Array<HTMLElement>;