@aurodesignsystem-dev/auro-formkit 0.0.0-pr1541.5 → 0.0.0-pr1542.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 (71) 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/api.md +2 -2
  7. package/components/combobox/demo/customize.md +1 -1
  8. package/components/combobox/demo/customize.min.js +41 -91
  9. package/components/combobox/demo/getting-started.min.js +41 -91
  10. package/components/combobox/demo/index.md +0 -1
  11. package/components/combobox/demo/index.min.js +41 -91
  12. package/components/combobox/demo/keyboard-behavior.md +1 -4
  13. package/components/combobox/dist/auro-combobox.d.ts +3 -1
  14. package/components/combobox/dist/index.js +23 -4
  15. package/components/combobox/dist/registered.js +23 -4
  16. package/components/counter/demo/customize.min.js +2 -2
  17. package/components/counter/demo/index.min.js +2 -2
  18. package/components/counter/dist/index.js +2 -2
  19. package/components/counter/dist/registered.js +2 -2
  20. package/components/datepicker/demo/customize.min.js +3 -3
  21. package/components/datepicker/demo/index.min.js +3 -3
  22. package/components/datepicker/dist/index.js +3 -3
  23. package/components/datepicker/dist/registered.js +3 -3
  24. package/components/dropdown/demo/customize.min.js +1 -1
  25. package/components/dropdown/demo/getting-started.min.js +1 -1
  26. package/components/dropdown/demo/index.min.js +1 -1
  27. package/components/dropdown/dist/index.js +1 -1
  28. package/components/dropdown/dist/registered.js +1 -1
  29. package/components/form/demo/customize.min.js +52 -106
  30. package/components/form/demo/getting-started.min.js +52 -106
  31. package/components/form/demo/index.min.js +52 -106
  32. package/components/form/demo/registerDemoDeps.min.js +52 -106
  33. package/components/input/demo/customize.min.js +1 -1
  34. package/components/input/demo/getting-started.min.js +1 -1
  35. package/components/input/demo/index.min.js +1 -1
  36. package/components/input/dist/index.js +1 -1
  37. package/components/input/dist/registered.js +1 -1
  38. package/components/menu/demo/accessibility.md +4 -4
  39. package/components/menu/demo/api.md +19 -26
  40. package/components/menu/demo/css-only.md +19 -26
  41. package/components/menu/demo/customize.md +47 -307
  42. package/components/menu/demo/design.md +1 -1
  43. package/components/menu/demo/getting-started.md +7 -144
  44. package/components/menu/demo/index.min.js +19 -214
  45. package/components/menu/demo/keyboard-behavior.md +4 -83
  46. package/components/menu/demo/voiceover.md +8 -12
  47. package/components/menu/demo/why-menu.md +9 -8
  48. package/components/menu/dist/auro-menu-utils.d.ts +0 -19
  49. package/components/menu/dist/auro-menu.d.ts +8 -4
  50. package/components/menu/dist/auro-menuoption.d.ts +0 -12
  51. package/components/menu/dist/index.js +18 -87
  52. package/components/menu/dist/registered.js +18 -87
  53. package/components/radio/demo/customize.min.js +1 -1
  54. package/components/radio/demo/getting-started.min.js +1 -1
  55. package/components/radio/demo/index.min.js +1 -1
  56. package/components/radio/dist/index.js +1 -1
  57. package/components/radio/dist/registered.js +1 -1
  58. package/components/select/demo/api.md +2 -2
  59. package/components/select/demo/customize.md +2 -5
  60. package/components/select/demo/customize.min.js +21 -94
  61. package/components/select/demo/design.md +10 -10
  62. package/components/select/demo/getting-started.md +1 -1
  63. package/components/select/demo/getting-started.min.js +21 -94
  64. package/components/select/demo/index.md +2 -2
  65. package/components/select/demo/index.min.js +21 -94
  66. package/components/select/demo/keyboard-behavior.md +18 -49
  67. package/components/select/dist/auro-select.d.ts +2 -6
  68. package/components/select/dist/index.js +3 -7
  69. package/components/select/dist/registered.js +3 -7
  70. package/custom-elements.json +1540 -1614
  71. package/package.json +1 -1
@@ -54,28 +54,26 @@
54
54
  &lt;/ul&gt;</code></pre>
55
55
  <auro-header level="2">What you lose without auro-menu</auro-header>
56
56
  <p>While the CSS above replicates the <strong>visual styling</strong> of <code>auro-menu</code>, the following functionality built into the <code>auro-menu</code> and <code>auro-menuoption</code> web components is <strong>not available</strong> when using plain HTML:</p>
57
- <auro-header level="3">Active-option tracking</auro-header>
58
- <p><code>auro-menu</code> tracks the active option internally (via an <code>active</code> CSS class on the current <code>auro-menuoption</code>) rather than moving DOM focus between options. In typical integrations (<code>&lt;auro-select&gt;</code>, <code>&lt;auro-combobox&gt;</code>), focus remains on the parent trigger/input and <code>aria-activedescendant</code> points at the active option; if you make <code>&lt;auro-menu&gt;</code> focusable (e.g., <code>tabindex="0"</code>), the same active-option model applies while focus is on the menu host. With plain HTML, you must pick one focus model either roving <code>tabindex="0"</code>/<code>tabindex="-1"</code>, or <code>aria-activedescendant</code> on the container and wire up the DOM writes yourself on every key event.</p>
57
+ <auro-header level="3">Roving tabindex</auro-header>
58
+ <p><code>auro-menu</code> manages a roving <code>tabindex</code> so that only the currently active option is in the tab order, and focus moves between options without leaving the menu. With plain HTML, you must implement the roving-tabindex pattern yourself by maintaining the <code>tabindex="0"</code>/<code>tabindex="-1"</code> state across all options on every focus and key event.</p>
59
59
  <auro-header level="3">Arrow-key navigation</auro-header>
60
- <p><code>auro-menu</code> handles <code>ArrowUp</code>, <code>ArrowDown</code>, <code>Enter</code>, and <code>Tab</code> to move the highlight and commit selections. Native <code>&lt;ul&gt;</code> elements have no built-in keyboard model — you must wire up <code>keydown</code> listeners, track the highlighted index, and prevent default browser scrolling on the arrow keys yourself.</p>
61
- <auro-header level="3">matchWord highlighting</auro-header>
62
- <p><code>auro-menu</code> supports a <code>matchWord</code> attribute that highlights matched substrings within option labels used by <code>auro-combobox</code> to visually mark the user's typed input inside each filtered option. Plain HTML provides no equivalent; you must walk each option and wrap matched substrings yourself.</p>
63
- <auro-header level="3">Type-ahead navigation</auro-header>
64
- <p>Type-ahead — jumping the active option to whichever entry starts with the letters the user typed — is <strong>not</strong> handled by <code>auro-menu</code> itself. It is provided by the parent selection component (<code>auro-select</code>, <code>auro-combobox</code>) which captures printable characters on its trigger and calls back into the menu. A plain-HTML listbox has no such wiring and would need a bespoke keydown handler that tracks a rolling character buffer and resolves it against the option list.</p>
60
+ <p><code>auro-menu</code> handles <code>ArrowUp</code>, <code>ArrowDown</code>, <code>Home</code>, <code>End</code>, <code>Enter</code>, and <code>Space</code> to move the highlight and commit selections. Native <code>&lt;ul&gt;</code> elements have no built-in keyboard model — you must wire up <code>keydown</code> listeners, track the highlighted index, and prevent default browser scrolling on the arrow keys yourself.</p>
61
+ <auro-header level="3">Type-ahead search</auro-header>
62
+ <p><code>auro-menu</code> supports a <code>matchword</code> attribute that highlights matched substrings within option labels, and the listbox supports type-ahead focus jumping. Plain HTML provides neither both behaviors must be implemented manually with string matching and DOM manipulation.</p>
65
63
  <auro-header level="3">Nested submenu support</auro-header>
66
- <p><code>auro-menu</code> detects nested <code>auro-menu</code> elements, applies the correct <code>role="group"</code>, and computes indentation per level. The root menu treats all descendant options as a single flat list, so selecting an option inside a nested menu updates the root menu's <code>value</code> and <code>optionSelected</code> the root always owns the selection state. With plain HTML, you must apply nested ARIA roles and indentation manually.</p>
64
+ <p><code>auro-menu</code> detects nested <code>auro-menu</code> elements, applies the correct <code>role="group"</code>, computes indentation per level, and propagates the shared menu service down the tree. With plain HTML, you must apply nested ARIA roles and indentation manually, and there is no built-in coordination of focus or selection between parent and child lists.</p>
67
65
  <auro-header level="3">Selection state coordination</auro-header>
68
- <p><code>auro-menu</code> keeps <code>optionSelected</code>, <code>value</code>, and each option's <code>aria-selected</code> state in sync internally. With native HTML, you must update <code>aria-selected</code> on every option yourself on each change and manage your own source of truth for the selected value.</p>
66
+ <p><code>auro-menu</code> coordinates the selected option(s) through an internal <code>MenuService</code> that keeps <code>optionSelected</code>, <code>value</code>, and each option's <code>aria-selected</code> state in sync. With native HTML, you must update <code>aria-selected</code> on every option yourself on each change and manage your own source of truth for the selected value.</p>
69
67
  <auro-header level="3">ARIA roles and live announcements</auro-header>
70
68
  <p><code>auro-menu</code> automatically applies <code>role="listbox"</code>, <code>aria-multiselectable</code>, <code>aria-busy</code> during loading, and per-option <code>role="option"</code> with <code>aria-selected</code> and <code>aria-disabled</code>. Plain HTML requires you to author every one of these attributes by hand and keep them in sync with state — and to add any additional live-region announcements yourself.</p>
71
69
  <auro-header level="3">Value emission and events</auro-header>
72
- <p><code>auro-menu</code> dispatches a structured set of events — <code>auroMenu-selectedOption</code>, <code>auroMenu-activatedOption</code>, <code>auroMenu-optionsChange</code>, <code>auroMenu-selectValueReset</code>, <code>auroMenu-selectValueFailure</code>, and <code>auroMenu-loadingChange</code> — so parent components can react to highlight, selection, and lifecycle changes. Native listboxes emit no equivalent events; you must dispatch your own.</p>
70
+ <p><code>auro-menu</code> dispatches a structured set of events — <code>auroMenu-selectedOption</code>, <code>auroMenu-activatedOption</code>, <code>auroMenu-optionsChange</code>, <code>auroMenu-selectValueReset</code>, <code>auroMenu-selectValueFailure</code>, <code>auroMenu-deselectPrevented</code>, and <code>auroMenu-loadingChange</code> — so parent components can react to highlight, selection, and lifecycle changes. Native listboxes emit no equivalent events; you must dispatch your own.</p>
73
71
  <auro-header level="3">Multi-select with array value</auro-header>
74
72
  <p><code>auro-menu</code> supports <code>multiselect</code>, exposing the selection as a JSON-stringified array via <code>value</code> and as an array of elements via <code>optionSelected</code>. With plain HTML, you must track multiple selections yourself, manage the <code>aria-multiselectable</code> attribute, and serialize the result manually.</p>
75
- <auro-header level="3">Multi-select deselect</auro-header>
76
- <p>In multi-select mode, clicking an already-selected option toggles it off. Native listboxes have no built-in deselect concept for individual options; you must implement the toggle behavior and update <code>aria-selected</code> yourself.</p>
73
+ <auro-header level="3">Allow-deselect behavior</auro-header>
74
+ <p><code>auro-menu</code> supports an <code>allowDeselect</code> attribute that lets a user click an already-selected option to clear it in single-select mode, with a <code>auroMenu-deselectPrevented</code> event when the operation is blocked. Native listboxes do not have a deselect concept; you must implement and gate the behavior yourself.</p>
77
75
  <auro-header level="3">Select-by-value and reset</auro-header>
78
- <p><code>auro-menu</code> exposes a <code>value</code> attribute that drives selection programmatically (accepting a JSON-stringified array in multi-select mode) and a single <code>reset()</code> method that clears all selection and validation state. With plain HTML, you must walk the list to find a matching option, set its state, and write your own reset routine.</p>
76
+ <p><code>auro-menu</code> exposes a <code>value</code> attribute that drives selection programmatically (including the <code>selectAllMatchingOptions</code> option for multi-select) and a single <code>reset()</code> method that clears all selection and validation state. With plain HTML, you must walk the list to find a matching option, set its state, and write your own reset routine.</p>
79
77
  <auro-header level="3">Loading state</auro-header>
80
78
  <p><code>auro-menu</code> renders a built-in loading placeholder via <code>loadingIcon</code> and <code>loadingText</code> slots, sets <code>aria-busy</code>, and emits <code>auroMenu-loadingChange</code> when the loading attribute toggles. With plain HTML, you must render a placeholder, manage <code>aria-busy</code>, and signal loading transitions yourself.</p>
81
79
  <auro-header level="3">Shape and size variants</auro-header>
@@ -98,9 +96,9 @@
98
96
  <td>Built-in</td>
99
97
  </tr>
100
98
  <tr>
101
- <td>Active-option tracking</td>
102
- <td>Manual (roving tabindex or <code>aria-activedescendant</code>)</td>
103
- <td>Built-in (<code>active</code> class on the current option)</td>
99
+ <td>Roving tabindex</td>
100
+ <td>Manual</td>
101
+ <td>Built-in</td>
104
102
  </tr>
105
103
  <tr>
106
104
  <td>Arrow-key navigation</td>
@@ -108,14 +106,9 @@
108
106
  <td>Built-in</td>
109
107
  </tr>
110
108
  <tr>
111
- <td><code>matchWord</code> highlighting</td>
112
- <td>Not supported</td>
113
- <td>Built-in via <code>matchWord</code></td>
114
- </tr>
115
- <tr>
116
- <td>Type-ahead navigation</td>
109
+ <td>Type-ahead and <code>matchword</code> highlighting</td>
117
110
  <td>Not supported</td>
118
- <td>Provided by parent <code>auro-select</code> / <code>auro-combobox</code></td>
111
+ <td>Built-in via <code>matchword</code></td>
119
112
  </tr>
120
113
  <tr>
121
114
  <td>Nested submenus</td>
@@ -125,7 +118,7 @@
125
118
  <tr>
126
119
  <td>Selection state coordination</td>
127
120
  <td>Manual <code>aria-selected</code> sync</td>
128
- <td>Coordinated internally</td>
121
+ <td>Centralized via menu service</td>
129
122
  </tr>
130
123
  <tr>
131
124
  <td>ARIA roles and <code>aria-busy</code></td>
@@ -143,9 +136,9 @@
143
136
  <td><code>multiselect</code> + <code>value</code></td>
144
137
  </tr>
145
138
  <tr>
146
- <td>Multi-select deselect</td>
139
+ <td>Allow-deselect behavior</td>
147
140
  <td>Manual</td>
148
- <td>Click-to-toggle built in</td>
141
+ <td><code>allowDeselect</code> attribute</td>
149
142
  </tr>
150
143
  <tr>
151
144
  <td>Select-by-value and reset</td>
@@ -9,20 +9,15 @@
9
9
  <auro-anchorlink fluid href="#restrictedWidth" class="level2 body-xs">Restricted Width</auro-anchorlink>
10
10
  <auro-anchorlink fluid href="#scroll" class="level2 body-xs">Scroll</auro-anchorlink>
11
11
  <auro-anchorlink fluid href="#nocheckmark" class="level2 body-xs">No Checkmark</auro-anchorlink>
12
- <auro-anchorlink fluid href="#dividers" class="level2 body-xs">Dividers</auro-anchorlink>
13
12
  <auro-anchorlink fluid href="#nestedMenu" class="level2 body-xs">Nested Menu</auro-anchorlink>
14
13
  <auro-anchorlink fluid href="#customBehavior">Behavior</auro-anchorlink>
15
- <auro-anchorlink fluid href="#static" class="level2 body-xs">Static Options</auro-anchorlink>
16
- <auro-anchorlink fluid href="#matchWord" class="level2 body-xs">Match Word</auro-anchorlink>
17
- <auro-anchorlink fluid href="#persistent" class="level2 body-xs">Persistent Option</auro-anchorlink>
18
- <auro-anchorlink fluid href="#nomatch" class="level2 body-xs">No Match Placeholder</auro-anchorlink>
19
14
  <auro-anchorlink fluid href="#disabled" class="level2 body-xs">Disabled Options</auro-anchorlink>
20
15
  <auro-anchorlink fluid href="#disabledMenu" class="level2 body-xs">Disabled Menu</auro-anchorlink>
21
- <auro-anchorlink fluid href="#loading" class="level2 body-xs">Loading</auro-anchorlink>
22
16
  <auro-anchorlink fluid href="#hidden" class="level2 body-xs">Hidden Options</auro-anchorlink>
23
17
  <auro-anchorlink fluid href="#multiselect" class="level2 body-xs">Multi-Select</auro-anchorlink>
24
18
  <auro-anchorlink fluid href="#presetValue" class="level2 body-xs">Preset Value</auro-anchorlink>
25
19
  <auro-anchorlink fluid href="#presetValueMultiselect" class="level2 body-xs">Preset Value (Multi)</auro-anchorlink>
20
+ <auro-anchorlink fluid href="#preselect" class="level2 body-xs">Pre-Selected</auro-anchorlink>
26
21
  </auro-nav>
27
22
  </nav>
28
23
  <div class="mainContent">
@@ -57,9 +52,9 @@
57
52
  --ds-auro-menuoption-text-color: #5b1a6e;
58
53
  }
59
54
  </style>
60
- <auro-menu id="customTokensMenu" value="price">
55
+ <auro-menu id="customTokensMenu">
61
56
  <auro-menuoption value="stops">Stops</auro-menuoption>
62
- <auro-menuoption value="price">Price</auro-menuoption>
57
+ <auro-menuoption value="price" selected>Price</auro-menuoption>
63
58
  <auro-menuoption value="duration">Duration</auro-menuoption>
64
59
  <hr>
65
60
  <auro-menuoption value="departure">Departure</auro-menuoption>
@@ -80,9 +75,9 @@
80
75
  --ds-auro-menuoption-text-color: #5b1a6e;
81
76
  }
82
77
  &lt;/style&gt;
83
- &lt;auro-menu id="customTokensMenu" value="price"&gt;
78
+ &lt;auro-menu id="customTokensMenu"&gt;
84
79
  &lt;auro-menuoption value="stops"&gt;Stops&lt;/auro-menuoption&gt;
85
- &lt;auro-menuoption value="price"&gt;Price&lt;/auro-menuoption&gt;
80
+ &lt;auro-menuoption value="price" selected&gt;Price&lt;/auro-menuoption&gt;
86
81
  &lt;auro-menuoption value="duration"&gt;Duration&lt;/auro-menuoption&gt;
87
82
  &lt;hr&gt;
88
83
  &lt;auro-menuoption value="departure"&gt;Departure&lt;/auro-menuoption&gt;
@@ -283,47 +278,6 @@
283
278
  &lt;/auro-menu&gt;</code></pre>
284
279
  <!-- AURO-GENERATED-CONTENT:END -->
285
280
  </auro-accordion>
286
- <auro-header level="3" id="dividers">Dividers</auro-header>
287
- <p>Insert standard <code>&lt;hr&gt;</code> elements between <code>auro-menuoption</code> elements to create visual group separators. Dividers are non-interactive and are skipped during keyboard navigation.</p>
288
- <div class="exampleWrapper">
289
- <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/hr.html) -->
290
- <!-- The below content is automatically added from ./../apiExamples/hr.html -->
291
- <auro-menu>
292
- <auro-menuoption value="new tab">New tab</auro-menuoption>
293
- <auro-menuoption value="new window">New window</auro-menuoption>
294
- <auro-menuoption value="open file">Open file</auro-menuoption>
295
- <auro-menuoption value="open location">Open location</auro-menuoption>
296
- <hr>
297
- <auro-menuoption value="close window">Close window</auro-menuoption>
298
- <auro-menuoption value="close tab">Close tab</auro-menuoption>
299
- <auro-menuoption value="save page as...">Save page as...</auro-menuoption>
300
- <hr>
301
- <auro-menuoption value="share">Share</auro-menuoption>
302
- <hr>
303
- <auro-menuoption value="print">Print</auro-menuoption>
304
- </auro-menu>
305
- <!-- AURO-GENERATED-CONTENT:END -->
306
- </div>
307
- <auro-accordion alignRight>
308
- <span slot="trigger">See code</span>
309
- <!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/hr.html) -->
310
- <!-- The below code snippet is automatically added from ./../apiExamples/hr.html -->
311
- <pre class="language-html"><code class="language-html">&lt;auro-menu&gt;
312
- &lt;auro-menuoption value="new tab"&gt;New tab&lt;/auro-menuoption&gt;
313
- &lt;auro-menuoption value="new window"&gt;New window&lt;/auro-menuoption&gt;
314
- &lt;auro-menuoption value="open file"&gt;Open file&lt;/auro-menuoption&gt;
315
- &lt;auro-menuoption value="open location"&gt;Open location&lt;/auro-menuoption&gt;
316
- &lt;hr&gt;
317
- &lt;auro-menuoption value="close window"&gt;Close window&lt;/auro-menuoption&gt;
318
- &lt;auro-menuoption value="close tab"&gt;Close tab&lt;/auro-menuoption&gt;
319
- &lt;auro-menuoption value="save page as..."&gt;Save page as...&lt;/auro-menuoption&gt;
320
- &lt;hr&gt;
321
- &lt;auro-menuoption value="share"&gt;Share&lt;/auro-menuoption&gt;
322
- &lt;hr&gt;
323
- &lt;auro-menuoption value="print"&gt;Print&lt;/auro-menuoption&gt;
324
- &lt;/auro-menu&gt;</code></pre>
325
- <!-- AURO-GENERATED-CONTENT:END -->
326
- </auro-accordion>
327
281
  <auro-header level="3" id="nestedMenu">Nested Menu</auro-header>
328
282
  <p>Nest additional <code>auro-menu</code> elements inside the default slot to create sub-menus. Each nested menu maintains its own selection state.</p>
329
283
  <div class="exampleWrapper">
@@ -404,144 +358,6 @@
404
358
  </section>
405
359
  <section>
406
360
  <auro-header level="2" id="customBehavior">Behavior</auro-header>
407
- <auro-header level="3" id="static">Static Options</auro-header>
408
- <p>Add the <code>static</code> attribute to an <code>auro-menuoption</code> to make it non-interactive — the option renders but is skipped during keyboard navigation and cannot be selected. Useful for section headers or informational rows inside a menu.</p>
409
- <div class="exampleWrapper">
410
- <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/static.html) -->
411
- <!-- The below content is automatically added from ./../apiExamples/static.html -->
412
- <auro-menu>
413
- <auro-menuoption static>Popular Destinations</auro-menuoption>
414
- <auro-menuoption value="sea">Seattle (SEA)</auro-menuoption>
415
- <auro-menuoption value="pdx">Portland (PDX)</auro-menuoption>
416
- <auro-menuoption value="sfo">San Francisco (SFO)</auro-menuoption>
417
- <auro-menuoption static>International</auro-menuoption>
418
- <auro-menuoption value="lhr">London (LHR)</auro-menuoption>
419
- <auro-menuoption value="nrt">Tokyo (NRT)</auro-menuoption>
420
- </auro-menu>
421
- <!-- AURO-GENERATED-CONTENT:END -->
422
- </div>
423
- <auro-accordion alignRight>
424
- <span slot="trigger">See code</span>
425
- <!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/static.html) -->
426
- <!-- The below code snippet is automatically added from ./../apiExamples/static.html -->
427
- <pre class="language-html"><code class="language-html">&lt;auro-menu&gt;
428
- &lt;auro-menuoption static&gt;Popular Destinations&lt;/auro-menuoption&gt;
429
- &lt;auro-menuoption value="sea"&gt;Seattle (SEA)&lt;/auro-menuoption&gt;
430
- &lt;auro-menuoption value="pdx"&gt;Portland (PDX)&lt;/auro-menuoption&gt;
431
- &lt;auro-menuoption value="sfo"&gt;San Francisco (SFO)&lt;/auro-menuoption&gt;
432
- &lt;auro-menuoption static&gt;International&lt;/auro-menuoption&gt;
433
- &lt;auro-menuoption value="lhr"&gt;London (LHR)&lt;/auro-menuoption&gt;
434
- &lt;auro-menuoption value="nrt"&gt;Tokyo (NRT)&lt;/auro-menuoption&gt;
435
- &lt;/auro-menu&gt;</code></pre>
436
- <!-- AURO-GENERATED-CONTENT:END -->
437
- </auro-accordion>
438
- <auro-header level="3" id="matchWord">Match Word</auro-header>
439
- <p>Set the <code>matchWord</code> property to a string, and any option whose text contains that substring will render the matching portion visually highlighted. Typically driven by an input's <code>keyup</code> handler to power real-time filtering — this is the mechanism <code>&lt;auro-combobox&gt;</code> uses to highlight matches as the user types.</p>
440
- <div class="exampleWrapper">
441
- <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/match-word.html) -->
442
- <!-- The below content is automatically added from ./../apiExamples/match-word.html -->
443
- <auro-input id="matchWordInput" required>
444
- <span slot="label">Enter a value to match in the menu</span>
445
- </auro-input>
446
- <br />
447
- <auro-menu id="matchWordMenu">
448
- <auro-menuoption value="stops">Stops</auro-menuoption>
449
- <auro-menuoption value="price">Price</auro-menuoption>
450
- <auro-menuoption value="duration">Duration</auro-menuoption>
451
- <auro-menuoption value="departure">Departure</auro-menuoption>
452
- <auro-menu>
453
- <auro-menuoption value="apples">Apples</auro-menuoption>
454
- <auro-menuoption value="oranges">Oranges</auro-menuoption>
455
- <auro-menuoption value="peaches">Peaches</auro-menuoption>
456
- </auro-menu>
457
- <auro-menuoption value="arrival">Arrival</auro-menuoption>
458
- </auro-menu>
459
- <!-- AURO-GENERATED-CONTENT:END -->
460
- </div>
461
- <auro-accordion alignRight>
462
- <span slot="trigger">See code</span>
463
- <!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/match-word.html) -->
464
- <!-- The below code snippet is automatically added from ./../apiExamples/match-word.html -->
465
- <pre class="language-html"><code class="language-html">&lt;auro-input id="matchWordInput" required&gt;
466
- &lt;span slot="label"&gt;Enter a value to match in the menu&lt;/span&gt;
467
- &lt;/auro-input&gt;
468
- &lt;br /&gt;
469
- &lt;auro-menu id="matchWordMenu"&gt;
470
- &lt;auro-menuoption value="stops"&gt;Stops&lt;/auro-menuoption&gt;
471
- &lt;auro-menuoption value="price"&gt;Price&lt;/auro-menuoption&gt;
472
- &lt;auro-menuoption value="duration"&gt;Duration&lt;/auro-menuoption&gt;
473
- &lt;auro-menuoption value="departure"&gt;Departure&lt;/auro-menuoption&gt;
474
- &lt;auro-menu&gt;
475
- &lt;auro-menuoption value="apples"&gt;Apples&lt;/auro-menuoption&gt;
476
- &lt;auro-menuoption value="oranges"&gt;Oranges&lt;/auro-menuoption&gt;
477
- &lt;auro-menuoption value="peaches"&gt;Peaches&lt;/auro-menuoption&gt;
478
- &lt;/auro-menu&gt;
479
- &lt;auro-menuoption value="arrival"&gt;Arrival&lt;/auro-menuoption&gt;
480
- &lt;/auro-menu&gt;</code></pre>
481
- <!-- AURO-GENERATED-CONTENT:END -->
482
- </auro-accordion>
483
- <auro-header level="3" id="persistent">Persistent Option</auro-header>
484
- <p>Add the <code>persistent</code> attribute to an <code>auro-menuoption</code> to opt it out of <code>matchWord</code> highlighting. The option remains fully interactive but its label is never rewritten — useful for utility rows like "Add new…" that should render identically regardless of the current filter string.</p>
485
- <div class="exampleWrapper">
486
- <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/persistent.html) -->
487
- <!-- The below content is automatically added from ./../apiExamples/persistent.html -->
488
- <auro-input id="persistentExampleInput">
489
- <span slot="label">Type to highlight matches</span>
490
- </auro-input>
491
- <br />
492
- <auro-menu id="persistentExampleMenu">
493
- <auro-menuoption value="stops">Stops</auro-menuoption>
494
- <auro-menuoption value="price">Price</auro-menuoption>
495
- <auro-menuoption value="duration">Duration</auro-menuoption>
496
- <auro-menuoption value="departure">Departure</auro-menuoption>
497
- <auro-menuoption value="arrival">Arrival</auro-menuoption>
498
- <auro-menuoption value="add" persistent>+ Add a new sort option</auro-menuoption>
499
- </auro-menu>
500
- <!-- AURO-GENERATED-CONTENT:END -->
501
- </div>
502
- <auro-accordion alignRight>
503
- <span slot="trigger">See code</span>
504
- <!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/persistent.html) -->
505
- <!-- The below code snippet is automatically added from ./../apiExamples/persistent.html -->
506
- <pre class="language-html"><code class="language-html">&lt;auro-input id="persistentExampleInput"&gt;
507
- &lt;span slot="label"&gt;Type to highlight matches&lt;/span&gt;
508
- &lt;/auro-input&gt;
509
- &lt;br /&gt;
510
- &lt;auro-menu id="persistentExampleMenu"&gt;
511
- &lt;auro-menuoption value="stops"&gt;Stops&lt;/auro-menuoption&gt;
512
- &lt;auro-menuoption value="price"&gt;Price&lt;/auro-menuoption&gt;
513
- &lt;auro-menuoption value="duration"&gt;Duration&lt;/auro-menuoption&gt;
514
- &lt;auro-menuoption value="departure"&gt;Departure&lt;/auro-menuoption&gt;
515
- &lt;auro-menuoption value="arrival"&gt;Arrival&lt;/auro-menuoption&gt;
516
- &lt;auro-menuoption value="add" persistent&gt;+ Add a new sort option&lt;/auro-menuoption&gt;
517
- &lt;/auro-menu&gt;</code></pre>
518
- <!-- AURO-GENERATED-CONTENT:END -->
519
- </auro-accordion>
520
- <auro-header level="3" id="nomatch">No Match Placeholder</auro-header>
521
- <p>Mark an option with the <code>nomatch</code> attribute to designate it as the placeholder shown when no other options match the user's input. When paired with <code>&lt;auro-combobox&gt;</code>, the combobox toggles the <code>hidden</code> attribute on this option automatically based on filter results.</p>
522
- <div class="exampleWrapper">
523
- <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/nomatch.html) -->
524
- <!-- The below content is automatically added from ./../apiExamples/nomatch.html -->
525
- <auro-menu>
526
- <auro-menuoption value="stops">Stops</auro-menuoption>
527
- <auro-menuoption value="price">Price</auro-menuoption>
528
- <auro-menuoption value="duration">Duration</auro-menuoption>
529
- <auro-menuoption nomatch>No matching results</auro-menuoption>
530
- </auro-menu>
531
- <!-- AURO-GENERATED-CONTENT:END -->
532
- </div>
533
- <auro-accordion alignRight>
534
- <span slot="trigger">See code</span>
535
- <!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/nomatch.html) -->
536
- <!-- The below code snippet is automatically added from ./../apiExamples/nomatch.html -->
537
- <pre class="language-html"><code class="language-html">&lt;auro-menu&gt;
538
- &lt;auro-menuoption value="stops"&gt;Stops&lt;/auro-menuoption&gt;
539
- &lt;auro-menuoption value="price"&gt;Price&lt;/auro-menuoption&gt;
540
- &lt;auro-menuoption value="duration"&gt;Duration&lt;/auro-menuoption&gt;
541
- &lt;auro-menuoption nomatch&gt;No matching results&lt;/auro-menuoption&gt;
542
- &lt;/auro-menu&gt;</code></pre>
543
- <!-- AURO-GENERATED-CONTENT:END -->
544
- </auro-accordion>
545
361
  <auro-header level="3" id="disabled">Disabled Options</auro-header>
546
362
  <p>Use the <code>disabled</code> attribute on <code>auro-menuoption</code> to prevent interaction with specific options.</p>
547
363
  <div class="exampleWrapper">
@@ -624,123 +440,6 @@
624
440
  &lt;/auro-menu&gt;</code></pre>
625
441
  <!-- AURO-GENERATED-CONTENT:END -->
626
442
  </auro-accordion>
627
- <auro-header level="3" id="loading">Loading</auro-header>
628
- <p>Use the <code>loading</code> attribute on <code>auro-menu</code> to indicate that options are being fetched asynchronously. Optional <code>loadingIcon</code> and <code>loadingText</code> slots let you customize the placeholder — a spinner, message, both, or neither.</p>
629
- <div class="exampleWrapper">
630
- <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/loading.html) -->
631
- <!-- The below content is automatically added from ./../apiExamples/loading.html -->
632
- <auro-button id="loadingExampleToggleButton">Toggle Loading</auro-button>
633
- <table id="loadingExampleTable">
634
- <thead>
635
- <tr>
636
- <td width="25%">Spinner + Text</td>
637
- <td width="25%">Text Only</td>
638
- <td width="25%">Spinner Only</td>
639
- <td width="25%">None</td>
640
- </tr>
641
- </thead>
642
- <tr>
643
- <td>
644
- <auro-menu>
645
- <auro-loader slot="loadingIcon" orbit xs></auro-loader><span slot="loadingText">Loading...</span>
646
- <auro-menuoption value="stops">Stops</auro-menuoption>
647
- <auro-menuoption value="price">Price</auro-menuoption>
648
- <auro-menuoption value="duration">Duration</auro-menuoption>
649
- <auro-menuoption value="departure">Departure</auro-menuoption>
650
- <auro-menuoption value="arrival">Arrival</auro-menuoption>
651
- </auro-menu>
652
- </td>
653
- <td>
654
- <auro-menu>
655
- <span slot="loadingText">Loading...</span>
656
- <auro-menuoption value="stops">Stops</auro-menuoption>
657
- <auro-menuoption value="price">Price</auro-menuoption>
658
- <auro-menuoption value="duration">Duration</auro-menuoption>
659
- <auro-menuoption value="departure">Departure</auro-menuoption>
660
- <auro-menuoption value="arrival">Arrival</auro-menuoption>
661
- </auro-menu>
662
- </td>
663
- <td>
664
- <auro-menu>
665
- <auro-loader slot="loadingIcon" orbit xs></auro-loader>
666
- <auro-menuoption value="stops">Stops</auro-menuoption>
667
- <auro-menuoption value="price">Price</auro-menuoption>
668
- <auro-menuoption value="duration">Duration</auro-menuoption>
669
- <auro-menuoption value="departure">Departure</auro-menuoption>
670
- <auro-menuoption value="arrival">Arrival</auro-menuoption>
671
- </auro-menu>
672
- </td>
673
- <td>
674
- <auro-menu>
675
- <auro-menuoption value="stops">Stops</auro-menuoption>
676
- <auro-menuoption value="price">Price</auro-menuoption>
677
- <auro-menuoption value="duration">Duration</auro-menuoption>
678
- <auro-menuoption value="departure">Departure</auro-menuoption>
679
- <auro-menuoption value="arrival">Arrival</auro-menuoption>
680
- </auro-menu>
681
- </td>
682
- </tr>
683
- </table>
684
- <!-- AURO-GENERATED-CONTENT:END -->
685
- </div>
686
- <auro-accordion alignRight>
687
- <span slot="trigger">See code</span>
688
- <!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/loading.html) -->
689
- <!-- The below code snippet is automatically added from ./../apiExamples/loading.html -->
690
- <pre class="language-html"><code class="language-html">&lt;auro-button id="loadingExampleToggleButton"&gt;Toggle Loading&lt;/auro-button&gt;
691
- &lt;table id="loadingExampleTable"&gt;
692
- &lt;thead&gt;
693
- &lt;tr&gt;
694
- &lt;td width="25%"&gt;Spinner + Text&lt;/td&gt;
695
- &lt;td width="25%"&gt;Text Only&lt;/td&gt;
696
- &lt;td width="25%"&gt;Spinner Only&lt;/td&gt;
697
- &lt;td width="25%"&gt;None&lt;/td&gt;
698
- &lt;/tr&gt;
699
- &lt;/thead&gt;
700
- &lt;tr&gt;
701
- &lt;td&gt;
702
- &lt;auro-menu&gt;
703
- &lt;auro-loader slot="loadingIcon" orbit xs&gt;&lt;/auro-loader&gt;&lt;span slot="loadingText"&gt;Loading...&lt;/span&gt;
704
- &lt;auro-menuoption value="stops"&gt;Stops&lt;/auro-menuoption&gt;
705
- &lt;auro-menuoption value="price"&gt;Price&lt;/auro-menuoption&gt;
706
- &lt;auro-menuoption value="duration"&gt;Duration&lt;/auro-menuoption&gt;
707
- &lt;auro-menuoption value="departure"&gt;Departure&lt;/auro-menuoption&gt;
708
- &lt;auro-menuoption value="arrival"&gt;Arrival&lt;/auro-menuoption&gt;
709
- &lt;/auro-menu&gt;
710
- &lt;/td&gt;
711
- &lt;td&gt;
712
- &lt;auro-menu&gt;
713
- &lt;span slot="loadingText"&gt;Loading...&lt;/span&gt;
714
- &lt;auro-menuoption value="stops"&gt;Stops&lt;/auro-menuoption&gt;
715
- &lt;auro-menuoption value="price"&gt;Price&lt;/auro-menuoption&gt;
716
- &lt;auro-menuoption value="duration"&gt;Duration&lt;/auro-menuoption&gt;
717
- &lt;auro-menuoption value="departure"&gt;Departure&lt;/auro-menuoption&gt;
718
- &lt;auro-menuoption value="arrival"&gt;Arrival&lt;/auro-menuoption&gt;
719
- &lt;/auro-menu&gt;
720
- &lt;/td&gt;
721
- &lt;td&gt;
722
- &lt;auro-menu&gt;
723
- &lt;auro-loader slot="loadingIcon" orbit xs&gt;&lt;/auro-loader&gt;
724
- &lt;auro-menuoption value="stops"&gt;Stops&lt;/auro-menuoption&gt;
725
- &lt;auro-menuoption value="price"&gt;Price&lt;/auro-menuoption&gt;
726
- &lt;auro-menuoption value="duration"&gt;Duration&lt;/auro-menuoption&gt;
727
- &lt;auro-menuoption value="departure"&gt;Departure&lt;/auro-menuoption&gt;
728
- &lt;auro-menuoption value="arrival"&gt;Arrival&lt;/auro-menuoption&gt;
729
- &lt;/auro-menu&gt;
730
- &lt;/td&gt;
731
- &lt;td&gt;
732
- &lt;auro-menu&gt;
733
- &lt;auro-menuoption value="stops"&gt;Stops&lt;/auro-menuoption&gt;
734
- &lt;auro-menuoption value="price"&gt;Price&lt;/auro-menuoption&gt;
735
- &lt;auro-menuoption value="duration"&gt;Duration&lt;/auro-menuoption&gt;
736
- &lt;auro-menuoption value="departure"&gt;Departure&lt;/auro-menuoption&gt;
737
- &lt;auro-menuoption value="arrival"&gt;Arrival&lt;/auro-menuoption&gt;
738
- &lt;/auro-menu&gt;
739
- &lt;/td&gt;
740
- &lt;/tr&gt;
741
- &lt;/table&gt;</code></pre>
742
- <!-- AURO-GENERATED-CONTENT:END -->
743
- </auro-accordion>
744
443
  <auro-header level="3" id="hidden">Hidden Options</auro-header>
745
444
  <p>Use the <code>hidden</code> attribute on <code>auro-menuoption</code> to visually hide an option while keeping it in the DOM.</p>
746
445
  <div class="exampleWrapper">
@@ -810,7 +509,7 @@
810
509
  <!-- AURO-GENERATED-CONTENT:END -->
811
510
  </auro-accordion>
812
511
  <auro-header level="3" id="presetValue">Preset Value</auro-header>
813
- <p>Use the <code>value</code> attribute on <code>auro-menu</code> to set the selected option when the menu renders. The value must match a selectable option; if it matches an option marked <code>disabled</code> or <code>static</code>, no option is selected and <code>auroMenu-selectValueFailure</code> is dispatched.</p>
512
+ <p>Use the <code>value</code> attribute on <code>auro-menu</code> to set the selected option when the menu renders.</p>
814
513
  <div class="exampleWrapper">
815
514
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/preset-value.html) -->
816
515
  <!-- The below content is automatically added from ./../apiExamples/preset-value.html -->
@@ -863,6 +562,47 @@
863
562
  &lt;/auro-menu&gt;</code></pre>
864
563
  <!-- AURO-GENERATED-CONTENT:END -->
865
564
  </auro-accordion>
565
+ <auro-header level="3" id="preselect">Pre-Selected</auro-header>
566
+ <p>Use the <code>selected</code> attribute on <code>auro-menuoption</code> to pre-select an option when the menu renders.</p>
567
+ <div class="exampleWrapper">
568
+ <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/preselect.html) -->
569
+ <!-- The below content is automatically added from ./../apiExamples/preselect.html -->
570
+ <auro-menu>
571
+ <auro-menuoption value="new tab">New tab</auro-menuoption>
572
+ <auro-menuoption value="new window" selected>New window</auro-menuoption>
573
+ <auro-menuoption value="open file">Open file</auro-menuoption>
574
+ <auro-menuoption value="open location">Open location</auro-menuoption>
575
+ <hr>
576
+ <auro-menuoption value="close window">Close window</auro-menuoption>
577
+ <auro-menuoption value="close tab" disabled>Close tab</auro-menuoption>
578
+ <auro-menuoption value="save page as...">Save page as...</auro-menuoption>
579
+ <hr>
580
+ <auro-menuoption value="share" disabled>Share</auro-menuoption>
581
+ <hr>
582
+ <auro-menuoption value="print">Print</auro-menuoption>
583
+ </auro-menu>
584
+ <!-- AURO-GENERATED-CONTENT:END -->
585
+ </div>
586
+ <auro-accordion alignRight>
587
+ <span slot="trigger">See code</span>
588
+ <!-- AURO-GENERATED-CONTENT:START (CODE:src=./../apiExamples/preselect.html) -->
589
+ <!-- The below code snippet is automatically added from ./../apiExamples/preselect.html -->
590
+ <pre class="language-html"><code class="language-html">&lt;auro-menu&gt;
591
+ &lt;auro-menuoption value="new tab"&gt;New tab&lt;/auro-menuoption&gt;
592
+ &lt;auro-menuoption value="new window" selected&gt;New window&lt;/auro-menuoption&gt;
593
+ &lt;auro-menuoption value="open file"&gt;Open file&lt;/auro-menuoption&gt;
594
+ &lt;auro-menuoption value="open location"&gt;Open location&lt;/auro-menuoption&gt;
595
+ &lt;hr&gt;
596
+ &lt;auro-menuoption value="close window"&gt;Close window&lt;/auro-menuoption&gt;
597
+ &lt;auro-menuoption value="close tab" disabled&gt;Close tab&lt;/auro-menuoption&gt;
598
+ &lt;auro-menuoption value="save page as..."&gt;Save page as...&lt;/auro-menuoption&gt;
599
+ &lt;hr&gt;
600
+ &lt;auro-menuoption value="share" disabled&gt;Share&lt;/auro-menuoption&gt;
601
+ &lt;hr&gt;
602
+ &lt;auro-menuoption value="print"&gt;Print&lt;/auro-menuoption&gt;
603
+ &lt;/auro-menu&gt;</code></pre>
604
+ <!-- AURO-GENERATED-CONTENT:END -->
605
+ </auro-accordion>
866
606
  </section>
867
607
  </div>
868
608
  </div>
@@ -22,7 +22,7 @@
22
22
  <auro-header level="2" id="shapeSizeLayout">Shape | Size | Layout Support</auro-header>
23
23
  <p>The <code>auro-menu</code> component supports the <code>shape</code> and <code>size</code> feature set. The component defaults to <code>shape="box"</code> and <code>size="sm"</code>. The <code>layout</code> attribute is not supported by this component.</p>
24
24
  <auro-header level="3" id="size">Size</auro-header>
25
- <p>Use the <code>size</code> attribute to change the size of menu options. Supported values are <code>xs</code>, <code>sm</code> (default), <code>md</code>, <code>lg</code>, and <code>xl</code>.</p>
25
+ <p>Use the <code>size</code> attribute to change the size of menu options. Supported values are <code>sm</code> (default) and <code>md</code>.</p>
26
26
  <div class="exampleWrapper">
27
27
  <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../apiExamples/size.html) -->
28
28
  <!-- The below content is automatically added from ./../apiExamples/size.html -->