@aurodesignsystem-dev/auro-formkit 0.0.0-pr1524.1 → 0.0.0-pr1530.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 (52) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +24 -79
  7. package/components/combobox/demo/getting-started.min.js +24 -79
  8. package/components/combobox/demo/index.min.js +24 -79
  9. package/components/combobox/dist/auro-combobox.d.ts +0 -10
  10. package/components/combobox/dist/index.js +24 -79
  11. package/components/combobox/dist/registered.js +24 -79
  12. package/components/counter/demo/customize.min.js +2 -2
  13. package/components/counter/demo/index.min.js +2 -2
  14. package/components/counter/dist/index.js +2 -2
  15. package/components/counter/dist/registered.js +2 -2
  16. package/components/datepicker/demo/accessibility.md +13 -4
  17. package/components/datepicker/demo/api.md +1 -1
  18. package/components/datepicker/demo/customize.min.js +192 -44
  19. package/components/datepicker/demo/index.min.js +192 -44
  20. package/components/datepicker/demo/voiceover.md +1 -1
  21. package/components/datepicker/dist/auro-calendar-cell.d.ts +11 -0
  22. package/components/datepicker/dist/auro-calendar.d.ts +26 -2
  23. package/components/datepicker/dist/auro-datepicker.d.ts +9 -1
  24. package/components/datepicker/dist/index.js +192 -44
  25. package/components/datepicker/dist/registered.js +192 -44
  26. package/components/dropdown/demo/customize.min.js +1 -1
  27. package/components/dropdown/demo/getting-started.min.js +1 -1
  28. package/components/dropdown/demo/index.min.js +1 -1
  29. package/components/dropdown/dist/index.js +1 -1
  30. package/components/dropdown/dist/registered.js +1 -1
  31. package/components/form/demo/customize.min.js +254 -205
  32. package/components/form/demo/getting-started.min.js +254 -205
  33. package/components/form/demo/index.min.js +254 -205
  34. package/components/form/demo/registerDemoDeps.min.js +254 -205
  35. package/components/input/demo/customize.min.js +19 -17
  36. package/components/input/demo/getting-started.min.js +19 -17
  37. package/components/input/demo/index.min.js +19 -17
  38. package/components/input/dist/index.js +19 -17
  39. package/components/input/dist/registered.js +19 -17
  40. package/components/radio/demo/customize.min.js +1 -1
  41. package/components/radio/demo/getting-started.min.js +1 -1
  42. package/components/radio/demo/index.min.js +1 -1
  43. package/components/radio/dist/index.js +1 -1
  44. package/components/radio/dist/registered.js +1 -1
  45. package/components/select/demo/customize.min.js +16 -62
  46. package/components/select/demo/getting-started.min.js +16 -62
  47. package/components/select/demo/index.min.js +16 -62
  48. package/components/select/dist/auro-select.d.ts +0 -6
  49. package/components/select/dist/index.js +16 -62
  50. package/components/select/dist/registered.js +16 -62
  51. package/custom-elements.json +38 -22
  52. package/package.json +1 -1
@@ -11531,17 +11531,14 @@ class BaseInput extends AuroElement {
11531
11531
  * @returns {void}
11532
11532
  */
11533
11533
  notifyValueChanged() {
11534
- // This echoes Lit's reactive value update (and handleClickClear's
11535
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
11536
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
11537
- // it from genuine user typing and skip clobbering their own
11538
- // programmatic state during init-time renders.
11539
- const inputEvent = new Event('input', {
11534
+ let inputEvent = null;
11535
+
11536
+ inputEvent = new Event('input', {
11540
11537
  bubbles: true,
11541
11538
  composed: true,
11542
11539
  });
11543
- inputEvent.isProgrammatic = true;
11544
11540
 
11541
+ // Dispatched event to alert outside shadow DOM context of event firing.
11545
11542
  this.dispatchEvent(inputEvent);
11546
11543
  }
11547
11544
 
@@ -12254,7 +12251,7 @@ class AuroHelpText extends i$3 {
12254
12251
  }
12255
12252
  }
12256
12253
 
12257
- var formkitVersion = '202607022214';
12254
+ var formkitVersion = '202607022134';
12258
12255
 
12259
12256
  /**
12260
12257
  * @license
@@ -12552,15 +12549,20 @@ class AuroInput extends BaseInput {
12552
12549
  * @returns {void}
12553
12550
  */
12554
12551
  checkDisplayValueSlotChange() {
12555
- // flatten:true resolves through auro-combobox's forwarding slot
12556
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
12557
- // directly to auro-input's light DOM alongside the forwarder still
12558
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
12559
- // discarded any siblings past the forwarder.
12560
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
12561
- const nodes = slot.assignedNodes({ flatten: true });
12562
-
12563
- this.hasDisplayValueContent = nodes.length > 0;
12552
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
12553
+
12554
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
12555
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
12556
+ nodes = nodes[0].assignedNodes();
12557
+ }
12558
+
12559
+ let hasContent = false;
12560
+
12561
+ if (nodes.length > 0) {
12562
+ hasContent = true;
12563
+ }
12564
+
12565
+ this.hasDisplayValueContent = hasContent;
12564
12566
  }
12565
12567
 
12566
12568
  firstUpdated() {
@@ -11531,17 +11531,14 @@ class BaseInput extends AuroElement {
11531
11531
  * @returns {void}
11532
11532
  */
11533
11533
  notifyValueChanged() {
11534
- // This echoes Lit's reactive value update (and handleClickClear's
11535
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
11536
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
11537
- // it from genuine user typing and skip clobbering their own
11538
- // programmatic state during init-time renders.
11539
- const inputEvent = new Event('input', {
11534
+ let inputEvent = null;
11535
+
11536
+ inputEvent = new Event('input', {
11540
11537
  bubbles: true,
11541
11538
  composed: true,
11542
11539
  });
11543
- inputEvent.isProgrammatic = true;
11544
11540
 
11541
+ // Dispatched event to alert outside shadow DOM context of event firing.
11545
11542
  this.dispatchEvent(inputEvent);
11546
11543
  }
11547
11544
 
@@ -12254,7 +12251,7 @@ class AuroHelpText extends i$3 {
12254
12251
  }
12255
12252
  }
12256
12253
 
12257
- var formkitVersion = '202607022214';
12254
+ var formkitVersion = '202607022134';
12258
12255
 
12259
12256
  /**
12260
12257
  * @license
@@ -12552,15 +12549,20 @@ class AuroInput extends BaseInput {
12552
12549
  * @returns {void}
12553
12550
  */
12554
12551
  checkDisplayValueSlotChange() {
12555
- // flatten:true resolves through auro-combobox's forwarding slot
12556
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
12557
- // directly to auro-input's light DOM alongside the forwarder still
12558
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
12559
- // discarded any siblings past the forwarder.
12560
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
12561
- const nodes = slot.assignedNodes({ flatten: true });
12562
-
12563
- this.hasDisplayValueContent = nodes.length > 0;
12552
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
12553
+
12554
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
12555
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
12556
+ nodes = nodes[0].assignedNodes();
12557
+ }
12558
+
12559
+ let hasContent = false;
12560
+
12561
+ if (nodes.length > 0) {
12562
+ hasContent = true;
12563
+ }
12564
+
12565
+ this.hasDisplayValueContent = hasContent;
12564
12566
  }
12565
12567
 
12566
12568
  firstUpdated() {
@@ -11531,17 +11531,14 @@ class BaseInput extends AuroElement {
11531
11531
  * @returns {void}
11532
11532
  */
11533
11533
  notifyValueChanged() {
11534
- // This echoes Lit's reactive value update (and handleClickClear's
11535
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
11536
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
11537
- // it from genuine user typing and skip clobbering their own
11538
- // programmatic state during init-time renders.
11539
- const inputEvent = new Event('input', {
11534
+ let inputEvent = null;
11535
+
11536
+ inputEvent = new Event('input', {
11540
11537
  bubbles: true,
11541
11538
  composed: true,
11542
11539
  });
11543
- inputEvent.isProgrammatic = true;
11544
11540
 
11541
+ // Dispatched event to alert outside shadow DOM context of event firing.
11545
11542
  this.dispatchEvent(inputEvent);
11546
11543
  }
11547
11544
 
@@ -12254,7 +12251,7 @@ class AuroHelpText extends i$3 {
12254
12251
  }
12255
12252
  }
12256
12253
 
12257
- var formkitVersion = '202607022214';
12254
+ var formkitVersion = '202607022134';
12258
12255
 
12259
12256
  /**
12260
12257
  * @license
@@ -12552,15 +12549,20 @@ class AuroInput extends BaseInput {
12552
12549
  * @returns {void}
12553
12550
  */
12554
12551
  checkDisplayValueSlotChange() {
12555
- // flatten:true resolves through auro-combobox's forwarding slot
12556
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
12557
- // directly to auro-input's light DOM alongside the forwarder still
12558
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
12559
- // discarded any siblings past the forwarder.
12560
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
12561
- const nodes = slot.assignedNodes({ flatten: true });
12562
-
12563
- this.hasDisplayValueContent = nodes.length > 0;
12552
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
12553
+
12554
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
12555
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
12556
+ nodes = nodes[0].assignedNodes();
12557
+ }
12558
+
12559
+ let hasContent = false;
12560
+
12561
+ if (nodes.length > 0) {
12562
+ hasContent = true;
12563
+ }
12564
+
12565
+ this.hasDisplayValueContent = hasContent;
12564
12566
  }
12565
12567
 
12566
12568
  firstUpdated() {
@@ -11473,17 +11473,14 @@ class BaseInput extends AuroElement {
11473
11473
  * @returns {void}
11474
11474
  */
11475
11475
  notifyValueChanged() {
11476
- // This echoes Lit's reactive value update (and handleClickClear's
11477
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
11478
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
11479
- // it from genuine user typing and skip clobbering their own
11480
- // programmatic state during init-time renders.
11481
- const inputEvent = new Event('input', {
11476
+ let inputEvent = null;
11477
+
11478
+ inputEvent = new Event('input', {
11482
11479
  bubbles: true,
11483
11480
  composed: true,
11484
11481
  });
11485
- inputEvent.isProgrammatic = true;
11486
11482
 
11483
+ // Dispatched event to alert outside shadow DOM context of event firing.
11487
11484
  this.dispatchEvent(inputEvent);
11488
11485
  }
11489
11486
 
@@ -12196,7 +12193,7 @@ class AuroHelpText extends LitElement {
12196
12193
  }
12197
12194
  }
12198
12195
 
12199
- var formkitVersion = '202607022214';
12196
+ var formkitVersion = '202607022134';
12200
12197
 
12201
12198
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12202
12199
  // See LICENSE in the project root for license information.
@@ -12482,15 +12479,20 @@ class AuroInput extends BaseInput {
12482
12479
  * @returns {void}
12483
12480
  */
12484
12481
  checkDisplayValueSlotChange() {
12485
- // flatten:true resolves through auro-combobox's forwarding slot
12486
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
12487
- // directly to auro-input's light DOM alongside the forwarder still
12488
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
12489
- // discarded any siblings past the forwarder.
12490
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
12491
- const nodes = slot.assignedNodes({ flatten: true });
12492
-
12493
- this.hasDisplayValueContent = nodes.length > 0;
12482
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
12483
+
12484
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
12485
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
12486
+ nodes = nodes[0].assignedNodes();
12487
+ }
12488
+
12489
+ let hasContent = false;
12490
+
12491
+ if (nodes.length > 0) {
12492
+ hasContent = true;
12493
+ }
12494
+
12495
+ this.hasDisplayValueContent = hasContent;
12494
12496
  }
12495
12497
 
12496
12498
  firstUpdated() {
@@ -11473,17 +11473,14 @@ class BaseInput extends AuroElement {
11473
11473
  * @returns {void}
11474
11474
  */
11475
11475
  notifyValueChanged() {
11476
- // This echoes Lit's reactive value update (and handleClickClear's
11477
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
11478
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
11479
- // it from genuine user typing and skip clobbering their own
11480
- // programmatic state during init-time renders.
11481
- const inputEvent = new Event('input', {
11476
+ let inputEvent = null;
11477
+
11478
+ inputEvent = new Event('input', {
11482
11479
  bubbles: true,
11483
11480
  composed: true,
11484
11481
  });
11485
- inputEvent.isProgrammatic = true;
11486
11482
 
11483
+ // Dispatched event to alert outside shadow DOM context of event firing.
11487
11484
  this.dispatchEvent(inputEvent);
11488
11485
  }
11489
11486
 
@@ -12196,7 +12193,7 @@ class AuroHelpText extends LitElement {
12196
12193
  }
12197
12194
  }
12198
12195
 
12199
- var formkitVersion = '202607022214';
12196
+ var formkitVersion = '202607022134';
12200
12197
 
12201
12198
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12202
12199
  // See LICENSE in the project root for license information.
@@ -12482,15 +12479,20 @@ class AuroInput extends BaseInput {
12482
12479
  * @returns {void}
12483
12480
  */
12484
12481
  checkDisplayValueSlotChange() {
12485
- // flatten:true resolves through auro-combobox's forwarding slot
12486
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
12487
- // directly to auro-input's light DOM alongside the forwarder still
12488
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
12489
- // discarded any siblings past the forwarder.
12490
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
12491
- const nodes = slot.assignedNodes({ flatten: true });
12492
-
12493
- this.hasDisplayValueContent = nodes.length > 0;
12482
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
12483
+
12484
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
12485
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
12486
+ nodes = nodes[0].assignedNodes();
12487
+ }
12488
+
12489
+ let hasContent = false;
12490
+
12491
+ if (nodes.length > 0) {
12492
+ hasContent = true;
12493
+ }
12494
+
12495
+ this.hasDisplayValueContent = hasContent;
12494
12496
  }
12495
12497
 
12496
12498
  firstUpdated() {
@@ -1227,7 +1227,7 @@ class AuroHelpText extends i$2 {
1227
1227
  }
1228
1228
  }
1229
1229
 
1230
- var formkitVersion = '202607022214';
1230
+ var formkitVersion = '202607022134';
1231
1231
 
1232
1232
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1233
1233
  // See LICENSE in the project root for license information.
@@ -1227,7 +1227,7 @@ class AuroHelpText extends i$2 {
1227
1227
  }
1228
1228
  }
1229
1229
 
1230
- var formkitVersion = '202607022214';
1230
+ var formkitVersion = '202607022134';
1231
1231
 
1232
1232
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1233
1233
  // See LICENSE in the project root for license information.
@@ -1227,7 +1227,7 @@ class AuroHelpText extends i$2 {
1227
1227
  }
1228
1228
  }
1229
1229
 
1230
- var formkitVersion = '202607022214';
1230
+ var formkitVersion = '202607022134';
1231
1231
 
1232
1232
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1233
1233
  // See LICENSE in the project root for license information.
@@ -1166,7 +1166,7 @@ class AuroHelpText extends LitElement {
1166
1166
  }
1167
1167
  }
1168
1168
 
1169
- var formkitVersion = '202607022214';
1169
+ var formkitVersion = '202607022134';
1170
1170
 
1171
1171
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1172
1172
  // See LICENSE in the project root for license information.
@@ -1166,7 +1166,7 @@ class AuroHelpText extends LitElement {
1166
1166
  }
1167
1167
  }
1168
1168
 
1169
- var formkitVersion = '202607022214';
1169
+ var formkitVersion = '202607022134';
1170
1170
 
1171
1171
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1172
1172
  // See LICENSE in the project root for license information.
@@ -904,6 +904,9 @@ function navigateArrow(component, direction, options = {}) {
904
904
  * @param {HTMLElement | null | undefined} menu - The auro-menu element.
905
905
  * @returns {Array<HTMLElement>} Non-disabled options, empty array when none.
906
906
  */
907
+ function getEnabledOptions(menu) {
908
+ return (menu?.options || []).filter((option) => !option.disabled);
909
+ }
907
910
 
908
911
  /**
909
912
  * Returns the active (selectable + visible) options for type-ahead navigation.
@@ -973,10 +976,8 @@ const selectKeyboardStrategy = {
973
976
  End(component, evt, ctx) {
974
977
  evt.preventDefault();
975
978
  evt.stopPropagation();
976
- // `pop()` is safe here: getActiveOptions returns a fresh filtered array.
977
- // Uses "active" (not "enabled") so hidden and static rows — which a screen
978
- // reader must not announce as focused — are skipped.
979
- const lastOption = getActiveOptions(component.menu).pop();
979
+ // `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
980
+ const lastOption = getEnabledOptions(component.menu).pop();
980
981
  if (!lastOption) {
981
982
  return;
982
983
  }
@@ -1007,7 +1008,7 @@ const selectKeyboardStrategy = {
1007
1008
  Home(component, evt, ctx) {
1008
1009
  evt.preventDefault();
1009
1010
  evt.stopPropagation();
1010
- const [firstOption] = getActiveOptions(component.menu);
1011
+ const [firstOption] = getEnabledOptions(component.menu);
1011
1012
  if (!firstOption) {
1012
1013
  return;
1013
1014
  }
@@ -1032,15 +1033,6 @@ const selectKeyboardStrategy = {
1032
1033
  },
1033
1034
 
1034
1035
  default(component, evt, ctx) {
1035
- // Ignore keys chorded with Ctrl/Meta/Alt so browser/OS shortcuts
1036
- // (Cmd+C, Ctrl+V, Alt+X, Cmd+Space, …) don't leak into typeahead
1037
- // or toggle the bib. Native <select> ignores modified keys.
1038
- // ArrowUp/ArrowDown handle modifier+arrow explicitly above; this
1039
- // guard only affects the default (printable/Space) branch.
1040
- if (evt.ctrlKey || evt.metaKey || evt.altKey) {
1041
- return;
1042
- }
1043
-
1044
1036
  // Space resolves to either typeahead-buffer extension or bib toggle
1045
1037
  // depending on whether a type-ahead buffer is active. Mirrors native
1046
1038
  // <select> and the WAI-ARIA APG Listbox guidance: mid-typeahead space
@@ -4995,7 +4987,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
4995
4987
  }
4996
4988
  };
4997
4989
 
4998
- var formkitVersion$1 = '202607022214';
4990
+ var formkitVersion$1 = '202607022134';
4999
4991
 
5000
4992
  class AuroElement extends i$2 {
5001
4993
  static get properties() {
@@ -7034,7 +7026,7 @@ class AuroHelpText extends i$2 {
7034
7026
  }
7035
7027
  }
7036
7028
 
7037
- var formkitVersion = '202607022214';
7029
+ var formkitVersion = '202607022134';
7038
7030
 
7039
7031
  var styleCss$2 = i$5`.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}`;
7040
7032
 
@@ -7598,11 +7590,8 @@ class AuroSelect extends AuroElement$1 {
7598
7590
  } else if (this.multiSelect && Array.isArray(this.optionSelected) && this.optionSelected.length > 0) {
7599
7591
  this.menu.updateActiveOption(this.optionSelected[0]);
7600
7592
  } else {
7601
- // If no activeOption has yet to be set, make the first active option
7602
- // (non-disabled, non-hidden, non-static) active by default. "Active" —
7603
- // not just "enabled" — so hidden rows and static placeholders never
7604
- // land in aria-activedescendant on open.
7605
- const [firstActive] = getActiveOptions(this.menu);
7593
+ // If no activeOption has yet to be set, then make the first enabled option active by default
7594
+ const [firstActive] = getEnabledOptions(this.menu);
7606
7595
  this.menu.updateActiveOption(firstActive);
7607
7596
  }
7608
7597
  }
@@ -7848,12 +7837,6 @@ class AuroSelect extends AuroElement$1 {
7848
7837
 
7849
7838
  /**
7850
7839
  * Binds all behavior needed to the menu after rendering.
7851
- *
7852
- * The `<auro-menu>` reference is captured once and not re-targeted on
7853
- * `slotchange`. Runtime option mutations are covered via
7854
- * `auroMenu-optionsChange`, so swap options inside the menu freely; do not
7855
- * swap the `<auro-menu>` element itself under a live select — remount the
7856
- * parent `<auro-select>` instead.
7857
7840
  * @private
7858
7841
  * @returns {void}
7859
7842
  */
@@ -7912,15 +7895,6 @@ class AuroSelect extends AuroElement$1 {
7912
7895
  if (this.menu.optionSelected !== undefined) {
7913
7896
  return;
7914
7897
  }
7915
- // Skip when the select is already cleared (valueless click with no
7916
- // prior selection): value/optionSelected are already empty and there
7917
- // is no stale trigger text to refresh, so updateDisplayedValue would
7918
- // just churn the DOM and request a needless dropdown re-render.
7919
- const hasStaleState = this.value !== undefined ||
7920
- (this.multiSelect ? this.optionSelected?.length > 0 : this.optionSelected !== undefined);
7921
- if (!hasStaleState) {
7922
- return;
7923
- }
7924
7898
  this.value = undefined;
7925
7899
  this.optionSelected = this.multiSelect ? [] : undefined;
7926
7900
  // The trigger label is rendered imperatively into #value, so a property
@@ -7950,15 +7924,10 @@ class AuroSelect extends AuroElement$1 {
7950
7924
  if (this.dropdown.isPopoverVisible) {
7951
7925
  announceToScreenReader(this._getAnnouncementRoot(), message);
7952
7926
  } else {
7953
- // Typeahead-on-closed calls updateActiveOption() before show(), so
7954
- // this handler runs with isPopoverVisible still false. queueMicrotask
7955
- // is safe because show() showBib() flips isPopoverVisible and
7956
- // dialog.showModal() both run synchronously in the same task; the
7957
- // microtask queue only drains once _handleTypeahead unwinds, by
7958
- // which point _getAnnouncementRoot() resolves to the bib's shadow
7959
- // root inside the now-open modal. Do NOT switch to auroDropdown-toggled
7960
- // — it fires before showModal(), landing the announcement in the
7961
- // host root while the dialog is still not-yet-modal.
7927
+ // Typeahead-on-closed fires this event before `show()` flips
7928
+ // isPopoverVisible. Defer so the announcement targets the bib's
7929
+ // live region once the fullscreen <dialog> opens otherwise it
7930
+ // lands in the host root, which is inert under the active modal.
7962
7931
  queueMicrotask(() => announceToScreenReader(this._getAnnouncementRoot(), message));
7963
7932
  }
7964
7933
  }
@@ -8352,13 +8321,6 @@ class AuroSelect extends AuroElement$1 {
8352
8321
  }
8353
8322
 
8354
8323
  if (changedProperties.has('value')) {
8355
- // A value change ends the current interaction — whether it came from a
8356
- // user commit, programmatic assignment, or reset(). Clear the buffer so
8357
- // a stale prefix does not concatenate onto the next keystroke while the
8358
- // host still has focus (the blur listener would otherwise be the only
8359
- // focus-retained clear point, and hideBib() below does not blur).
8360
- this._clearTypeaheadBuffer();
8361
-
8362
8324
  this.setMenuValue(this.value);
8363
8325
 
8364
8326
  this._updateNativeSelect();
@@ -8414,9 +8376,6 @@ class AuroSelect extends AuroElement$1 {
8414
8376
  * @returns {void}
8415
8377
  */
8416
8378
  reset() {
8417
- // Defense-in-depth: updated()'s value-change branch also clears, but
8418
- // reset-to-same-value (e.g. undefined → undefined) skips that path.
8419
- this._clearTypeaheadBuffer();
8420
8379
  this.menu.reset();
8421
8380
  this.validation.reset(this);
8422
8381
  }
@@ -8439,13 +8398,8 @@ class AuroSelect extends AuroElement$1 {
8439
8398
  // Hidden native <select> has no `multiple` attribute, so any change it fires
8440
8399
  // is a single raw value — applying it in multiSelect mode would collapse the
8441
8400
  // JSON-array `value` shape. Bfcache/autofill can reach this on a name-bearing
8442
- // form control even with aria-hidden/tabindex=-1, so revert to the expected
8443
- // mirror (formattedValue[0]) rather than letting the native select drift and
8444
- // silently submit the autofilled scalar under `name`.
8445
- if (this.multiSelect) {
8446
- this._updateNativeSelect();
8447
- return;
8448
- }
8401
+ // form control even with aria-hidden/tabindex=-1.
8402
+ if (this.multiSelect) return;
8449
8403
 
8450
8404
  const selectedOption = event.target.options[event.target.selectedIndex];
8451
8405
  if (!selectedOption) return;