@aurodesignsystem-dev/auro-formkit 0.0.0-pr1503.4 → 0.0.0-pr1503.5
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.
- package/components/bibtemplate/dist/index.js +1 -1
- package/components/bibtemplate/dist/registered.js +1 -1
- package/components/checkbox/demo/accessibility.md +1 -1
- package/components/checkbox/demo/customize.html +1 -2
- package/components/checkbox/demo/customize.min.js +23 -8
- package/components/checkbox/demo/getting-started.min.js +23 -8
- package/components/checkbox/demo/index.min.js +23 -8
- package/components/checkbox/dist/index.js +23 -8
- package/components/checkbox/dist/registered.js +23 -8
- package/components/combobox/README.md +1 -1
- package/components/combobox/demo/accessibility.md +1 -1
- package/components/combobox/demo/api.md +2 -2
- package/components/combobox/demo/customize.html +1 -2
- package/components/combobox/demo/customize.md +166 -142
- package/components/combobox/demo/customize.min.js +2515 -2316
- package/components/combobox/demo/getting-started.min.js +2515 -2312
- package/components/combobox/demo/index.md +2 -1
- package/components/combobox/demo/index.min.js +2515 -2312
- package/components/combobox/demo/keyboard-behavior.md +3 -146
- package/components/combobox/demo/readme.md +1 -1
- package/components/combobox/demo/why-combobox.md +2 -2
- package/components/combobox/dist/auro-combobox.d.ts +49 -15
- package/components/combobox/dist/index.js +1462 -753
- package/components/combobox/dist/registered.js +1462 -753
- package/components/counter/demo/customize.min.js +188 -244
- package/components/counter/demo/index.min.js +188 -244
- package/components/counter/dist/auro-counter.d.ts +0 -8
- package/components/counter/dist/index.js +188 -244
- package/components/counter/dist/registered.js +188 -244
- package/components/datepicker/demo/accessibility.md +20 -10
- package/components/datepicker/demo/api.md +65 -62
- package/components/datepicker/demo/customize.md +180 -40
- package/components/datepicker/demo/customize.min.js +1690 -777
- package/components/datepicker/demo/getting-started.md +118 -2
- package/components/datepicker/demo/index.min.js +1690 -759
- package/components/datepicker/demo/keyboard-behavior.md +3 -3
- package/components/datepicker/demo/voiceover.md +4 -4
- package/components/datepicker/demo/why-datepicker.md +2 -2
- package/components/datepicker/dist/{src/auro-calendar-cell.d.ts → auro-calendar-cell.d.ts} +48 -3
- package/components/datepicker/dist/{src/auro-calendar.d.ts → auro-calendar.d.ts} +188 -10
- package/components/datepicker/dist/{src/auro-datepicker.d.ts → auro-datepicker.d.ts} +89 -6
- package/components/datepicker/dist/blackoutUtils.d.ts +43 -0
- package/components/datepicker/dist/index.js +1690 -759
- package/components/datepicker/dist/registered.js +1690 -759
- package/components/dropdown/demo/customize.html +3 -0
- package/components/dropdown/demo/customize.min.js +142 -208
- package/components/dropdown/demo/getting-started.min.js +131 -207
- package/components/dropdown/demo/index.min.js +131 -207
- package/components/dropdown/dist/auro-dropdown.d.ts +17 -1
- package/components/dropdown/dist/index.js +131 -207
- package/components/dropdown/dist/registered.js +131 -207
- package/components/form/demo/api.md +3 -3
- package/components/form/demo/customize.html +6 -6
- package/components/form/demo/customize.md +535 -135
- package/components/form/demo/customize.min.js +6307 -4378
- package/components/form/demo/getting-started.md +344 -96
- package/components/form/demo/getting-started.min.js +6255 -4378
- package/components/form/demo/index.min.js +6206 -4378
- package/components/form/demo/registerDemoDeps.min.js +5827 -4333
- package/components/form/dist/auro-form.d.ts +128 -10
- package/components/form/dist/index.js +377 -43
- package/components/form/dist/registered.js +377 -43
- package/components/input/demo/accessibility.md +1 -1
- package/components/input/demo/api.md +58 -57
- package/components/input/demo/customize.html +1 -2
- package/components/input/demo/customize.md +62 -61
- package/components/input/demo/customize.min.js +396 -275
- package/components/input/demo/getting-started.min.js +396 -275
- package/components/input/demo/index.min.js +396 -275
- package/components/input/dist/auro-input.d.ts +1 -1
- package/components/input/dist/base-input.d.ts +60 -81
- package/components/input/dist/index.js +409 -276
- package/components/input/dist/registered.js +396 -275
- package/components/input/dist/utilities.d.ts +10 -1
- package/components/menu/demo/accessibility.md +9 -4
- package/components/menu/demo/api.md +48 -45
- package/components/menu/demo/css-only.md +26 -19
- package/components/menu/demo/customize.md +307 -75
- package/components/menu/demo/design.md +1 -1
- package/components/menu/demo/getting-started.md +144 -7
- package/components/menu/demo/index.min.js +961 -1341
- package/components/menu/demo/keyboard-behavior.md +83 -4
- package/components/menu/demo/voiceover.md +21 -14
- package/components/menu/demo/why-menu.md +8 -9
- package/components/menu/dist/auro-menu-utils.d.ts +19 -0
- package/components/menu/dist/auro-menu.d.ts +97 -116
- package/components/menu/dist/auro-menuoption.d.ts +39 -133
- package/components/menu/dist/index.js +823 -1309
- package/components/menu/dist/registered.js +835 -1309
- package/components/radio/demo/accessibility.md +1 -1
- package/components/radio/demo/customize.min.js +23 -8
- package/components/radio/demo/getting-started.min.js +23 -8
- package/components/radio/demo/index.min.js +23 -8
- package/components/radio/dist/index.js +23 -8
- package/components/radio/dist/registered.js +23 -8
- package/components/select/demo/accessibility.md +6 -1
- package/components/select/demo/api.md +3 -2
- package/components/select/demo/customize.html +1 -2
- package/components/select/demo/customize.md +210 -5
- package/components/select/demo/customize.min.js +1613 -1854
- package/components/select/demo/design.md +10 -10
- package/components/select/demo/getting-started.md +1 -1
- package/components/select/demo/getting-started.min.js +1617 -1903
- package/components/select/demo/index.md +2 -2
- package/components/select/demo/index.min.js +1613 -1854
- package/components/select/demo/keyboard-behavior.md +81 -54
- package/components/select/demo/voiceover.md +28 -15
- package/components/select/dist/auro-select.d.ts +70 -12
- package/components/select/dist/index.js +580 -315
- package/components/select/dist/registered.js +580 -315
- package/components/select/dist/selectUtils.d.ts +24 -0
- package/custom-elements.json +8071 -7919
- package/package.json +7 -3
- package/components/checkbox/demo/customize.js +0 -22
- package/components/checkbox/demo/demo-support.js +0 -1
- package/components/checkbox/demo/getting-started.js +0 -22
- package/components/checkbox/demo/index.js +0 -8
- package/components/checkbox/demo/styles.scss +0 -1
- package/components/combobox/demo/customize.js +0 -24
- package/components/combobox/demo/demo-support.js +0 -1
- package/components/combobox/demo/getting-started.js +0 -21
- package/components/combobox/demo/index.js +0 -23
- package/components/combobox/demo/styles.scss +0 -1
- package/components/counter/demo/customize.js +0 -21
- package/components/counter/demo/demo-support.js +0 -1
- package/components/counter/demo/index.js +0 -21
- package/components/counter/demo/styles.scss +0 -1
- package/components/datepicker/demo/customize.js +0 -19
- package/components/datepicker/demo/demo-support.js +0 -1
- package/components/datepicker/demo/index.js +0 -23
- package/components/datepicker/demo/styles.scss +0 -1
- package/components/dropdown/demo/customize.js +0 -9
- package/components/dropdown/demo/demo-support.js +0 -1
- package/components/dropdown/demo/getting-started.js +0 -9
- package/components/dropdown/demo/index.js +0 -16
- package/components/dropdown/demo/styles.scss +0 -1
- package/components/form/demo/customize.js +0 -9
- package/components/form/demo/demo-support.js +0 -1
- package/components/form/demo/getting-started.js +0 -9
- package/components/form/demo/index.js +0 -5
- package/components/form/demo/registerDemoDeps.js +0 -23
- package/components/form/demo/styles.scss +0 -1
- package/components/input/demo/customize.js +0 -25
- package/components/input/demo/demo-support.js +0 -1
- package/components/input/demo/getting-started.js +0 -8
- package/components/input/demo/index.js +0 -8
- package/components/input/demo/styles.css +0 -974
- package/components/input/demo/styles.scss +0 -1
- package/components/menu/demo/demo-support.js +0 -1
- package/components/menu/demo/index.js +0 -25
- package/components/menu/demo/styles.scss +0 -1
- package/components/menu/dist/auro-menu.context.d.ts +0 -238
- package/components/radio/demo/customize.js +0 -22
- package/components/radio/demo/demo-support.js +0 -1
- package/components/radio/demo/getting-started.js +0 -24
- package/components/radio/demo/index.js +0 -8
- package/components/radio/demo/styles.scss +0 -1
- package/components/select/demo/customize.js +0 -11
- package/components/select/demo/demo-support.js +0 -1
- package/components/select/demo/getting-started.js +0 -26
- package/components/select/demo/index.js +0 -11
- package/components/select/demo/styles.scss +0 -1
- /package/components/counter/dist/styles/{counter-wrapper-color-css.d.ts → counter-group-color-css.d.ts} +0 -0
- /package/components/datepicker/dist/{src/auro-calendar-month.d.ts → auro-calendar-month.d.ts} +0 -0
- /package/components/datepicker/dist/{src/buttonVersion.d.ts → buttonVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{src/datepickerKeyboardStrategy.d.ts → datepickerKeyboardStrategy.d.ts} +0 -0
- /package/components/datepicker/dist/{src/iconVersion.d.ts → iconVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/components/datepicker/dist/{src/popoverVersion.d.ts → popoverVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/classic/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/classic/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-calendar-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-cell-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-month-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/shapeSize-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/snowflake/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/snowflake/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-cell-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-month-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/tokens-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/utilities.d.ts → utilities.d.ts} +0 -0
- /package/components/datepicker/dist/{src/utilitiesCalendar.d.ts → utilitiesCalendar.d.ts} +0 -0
- /package/components/datepicker/dist/{src/utilitiesCalendarRender.d.ts → utilitiesCalendarRender.d.ts} +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/day.d.ts +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
|
@@ -31,19 +31,22 @@
|
|
|
31
31
|
<auro-header level="2" id="keyEvents">Key Events</auro-header>
|
|
32
32
|
<!-- AURO-GENERATED-CONTENT:START (FILE:src=./../docs/partials/keyboard-behavior/keyEvents.md) -->
|
|
33
33
|
<!-- The below content is automatically added from ./../docs/partials/keyboard-behavior/keyEvents.md -->
|
|
34
|
+
<div class="note">
|
|
35
|
+
<p><strong>Note:</strong> The "Focused element" column below indicates the initial <code>event.target</code> — the element that has DOM focus when the key is pressed. The select's keyboard strategy listener is attached once to the <code><auro-select></code> host; it receives events via composed bubbling regardless of display mode. When the bib is displayed as a fullscreen dialog (see <code>fullscreenBreakpoint</code>), focus moves to the dialog's close button rather than remaining on the trigger, but keydown events still bubble across the shadow-root boundary up to the host listener, and <code>aria-activedescendant</code> continues to track the active option. An "active option" is one that is not <code>disabled</code>, <code>hidden</code>, or <code>static</code> — these are always skipped during navigation and type-ahead matching.</p>
|
|
36
|
+
</div>
|
|
34
37
|
<table>
|
|
35
38
|
<thead>
|
|
36
39
|
<tr>
|
|
37
40
|
<th>Key</th>
|
|
38
41
|
<th>Modifier</th>
|
|
39
42
|
<th>Current State</th>
|
|
40
|
-
<th>
|
|
43
|
+
<th>Focused element</th>
|
|
41
44
|
<th>Behavior</th>
|
|
42
45
|
</tr>
|
|
43
46
|
</thead>
|
|
44
47
|
<tbody>
|
|
45
48
|
<tr>
|
|
46
|
-
<td rowspan="
|
|
49
|
+
<td rowspan="6">ArrowDown</td>
|
|
47
50
|
<td rowspan="2">-</td>
|
|
48
51
|
<td>Collapsed</td>
|
|
49
52
|
<td>Trigger element</td>
|
|
@@ -57,24 +60,6 @@
|
|
|
57
60
|
</td>
|
|
58
61
|
</tr>
|
|
59
62
|
<tr>
|
|
60
|
-
<td rowspan="2">Meta (Command / Windows key)</td>
|
|
61
|
-
<td>Collapsed</td>
|
|
62
|
-
<td>Trigger element</td>
|
|
63
|
-
<td>
|
|
64
|
-
Opens the bib.
|
|
65
|
-
<div class="note">
|
|
66
|
-
<strong>Note:</strong> On Windows, <code>Meta</code> + arrow key combinations are reserved by the operating system for window management. Windows users should use <code>Control</code> or <code>Alt</code> instead.
|
|
67
|
-
</div>
|
|
68
|
-
</td>
|
|
69
|
-
</tr>
|
|
70
|
-
<tr>
|
|
71
|
-
<td>Expanded</td>
|
|
72
|
-
<td>Trigger element</td>
|
|
73
|
-
<td>
|
|
74
|
-
Advances the <code>focused</code> option to the last enabled option in the list.
|
|
75
|
-
</td>
|
|
76
|
-
</tr>
|
|
77
|
-
<tr>
|
|
78
63
|
<td rowspan="2">Alt (Option)</td>
|
|
79
64
|
<td>Collapsed</td>
|
|
80
65
|
<td>Trigger element</td>
|
|
@@ -94,7 +79,7 @@
|
|
|
94
79
|
<td>
|
|
95
80
|
Opens the bib.
|
|
96
81
|
<div class="note">
|
|
97
|
-
<strong>Note:</strong> On macOS, <code>Control</code> + arrow key combinations are reserved by the operating system for Mission Control and Application Windows. macOS users should use <code>
|
|
82
|
+
<strong>Note:</strong> On macOS, <code>Control</code> + arrow key combinations are reserved by the operating system for Mission Control and Application Windows. macOS users should use <code>Alt</code> instead.
|
|
98
83
|
</div>
|
|
99
84
|
</td>
|
|
100
85
|
</tr>
|
|
@@ -106,7 +91,7 @@
|
|
|
106
91
|
</td>
|
|
107
92
|
</tr>
|
|
108
93
|
<tr>
|
|
109
|
-
<td rowspan="
|
|
94
|
+
<td rowspan="6">ArrowUp</td>
|
|
110
95
|
<td rowspan="2">-</td>
|
|
111
96
|
<td>Collapsed</td>
|
|
112
97
|
<td>Trigger element</td>
|
|
@@ -120,13 +105,26 @@
|
|
|
120
105
|
</td>
|
|
121
106
|
</tr>
|
|
122
107
|
<tr>
|
|
123
|
-
<td rowspan="2">
|
|
108
|
+
<td rowspan="2">Alt (Option)</td>
|
|
109
|
+
<td>Collapsed</td>
|
|
110
|
+
<td>Trigger element</td>
|
|
111
|
+
<td>Opens the bib.</td>
|
|
112
|
+
</tr>
|
|
113
|
+
<tr>
|
|
114
|
+
<td>Expanded</td>
|
|
115
|
+
<td>Trigger element</td>
|
|
116
|
+
<td>
|
|
117
|
+
Advances the <code>focused</code> option to the first enabled option in the list.
|
|
118
|
+
</td>
|
|
119
|
+
</tr>
|
|
120
|
+
<tr>
|
|
121
|
+
<td rowspan="2">Control</td>
|
|
124
122
|
<td>Collapsed</td>
|
|
125
123
|
<td>Trigger element</td>
|
|
126
124
|
<td>
|
|
127
125
|
Opens the bib.
|
|
128
126
|
<div class="note">
|
|
129
|
-
<strong>Note:</strong> On
|
|
127
|
+
<strong>Note:</strong> On macOS, <code>Control</code> + arrow key combinations are reserved by the operating system for Mission Control and Application Windows. macOS users should use <code>Alt</code> instead.
|
|
130
128
|
</div>
|
|
131
129
|
</td>
|
|
132
130
|
</tr>
|
|
@@ -138,68 +136,75 @@
|
|
|
138
136
|
</td>
|
|
139
137
|
</tr>
|
|
140
138
|
<tr>
|
|
141
|
-
<td rowspan="2">
|
|
139
|
+
<td rowspan="2">End</td>
|
|
140
|
+
<td rowspan="2">-</td>
|
|
142
141
|
<td>Collapsed</td>
|
|
143
142
|
<td>Trigger element</td>
|
|
144
|
-
<td>
|
|
143
|
+
<td>
|
|
144
|
+
Opens the bib and advances the <code>focused</code> option to the last enabled option in the list.
|
|
145
|
+
</td>
|
|
145
146
|
</tr>
|
|
146
147
|
<tr>
|
|
147
148
|
<td>Expanded</td>
|
|
148
149
|
<td>Trigger element</td>
|
|
149
150
|
<td>
|
|
150
|
-
Advances the <code>focused</code> option to the
|
|
151
|
+
Advances the <code>focused</code> option to the last enabled option in the list.
|
|
151
152
|
</td>
|
|
152
153
|
</tr>
|
|
153
154
|
<tr>
|
|
154
|
-
<td rowspan="
|
|
155
|
+
<td rowspan="3">Enter</td>
|
|
156
|
+
<td rowspan="3">-</td>
|
|
155
157
|
<td>Collapsed</td>
|
|
156
158
|
<td>Trigger element</td>
|
|
157
|
-
<td>
|
|
158
|
-
Opens the bib.
|
|
159
|
-
<div class="note">
|
|
160
|
-
<strong>Note:</strong> On macOS, <code>Control</code> + arrow key combinations are reserved by the operating system for Mission Control and Application Windows. macOS users should use <code>Meta</code> or <code>Alt</code> instead.
|
|
161
|
-
</div>
|
|
162
|
-
</td>
|
|
159
|
+
<td>Opens the bib. Bubbling is stopped so that a parent form does not treat Enter as a submit.</td>
|
|
163
160
|
</tr>
|
|
164
161
|
<tr>
|
|
165
|
-
<td>Expanded</td>
|
|
162
|
+
<td>Expanded, without <code>multiSelect</code></td>
|
|
166
163
|
<td>Trigger element</td>
|
|
167
164
|
<td>
|
|
168
|
-
|
|
165
|
+
The current <code>active</code> option is selected, and the bib closes.
|
|
169
166
|
</td>
|
|
170
167
|
</tr>
|
|
171
168
|
<tr>
|
|
172
|
-
<td>
|
|
173
|
-
<td>-</td>
|
|
174
|
-
<td>Expanded</td>
|
|
169
|
+
<td>Expanded, with <code>multiSelect</code></td>
|
|
175
170
|
<td>Trigger element</td>
|
|
176
171
|
<td>
|
|
177
|
-
|
|
172
|
+
The current <code>active</code> option is toggled; the bib stays open so additional options can be selected.
|
|
178
173
|
</td>
|
|
179
174
|
</tr>
|
|
180
175
|
<tr>
|
|
181
|
-
<td rowspan="
|
|
182
|
-
<td rowspan="
|
|
176
|
+
<td rowspan="3">Escape</td>
|
|
177
|
+
<td rowspan="3">-</td>
|
|
178
|
+
<td>Collapsed</td>
|
|
179
|
+
<td>Trigger element</td>
|
|
183
180
|
<td>
|
|
184
|
-
|
|
181
|
+
Clears the type-ahead buffer. No other change; the event is allowed to bubble so an ancestor dialog or drawer may still handle it.
|
|
185
182
|
</td>
|
|
183
|
+
</tr>
|
|
184
|
+
<tr>
|
|
185
|
+
<td>Expanded</td>
|
|
186
186
|
<td>Trigger element</td>
|
|
187
187
|
<td>
|
|
188
|
-
|
|
188
|
+
Clears the type-ahead buffer and closes the bib. Bubbling is stopped so that an ancestor dialog, drawer, or popup does not also close.
|
|
189
189
|
</td>
|
|
190
190
|
</tr>
|
|
191
191
|
<tr>
|
|
192
|
+
<td>Expanded, fullscreen bib</td>
|
|
193
|
+
<td>Close button</td>
|
|
192
194
|
<td>
|
|
193
|
-
|
|
195
|
+
The Escape keydown bubbles from the close button to the select's keyboard strategy, which clears the type-ahead buffer and calls <code>dropdown.hide()</code> — the same handler as the popover case. The native <code><dialog></code> <code>cancel</code> → <code>auro-bib-cancel</code> path is a fallback that closes the bib if the strategy did not run. Focus is restored to the trigger on close.
|
|
194
196
|
</td>
|
|
197
|
+
</tr>
|
|
198
|
+
<tr>
|
|
199
|
+
<td rowspan="2">Home</td>
|
|
200
|
+
<td rowspan="2">-</td>
|
|
201
|
+
<td>Collapsed</td>
|
|
195
202
|
<td>Trigger element</td>
|
|
196
203
|
<td>
|
|
197
|
-
|
|
204
|
+
Opens the bib and advances the <code>focused</code> option to the first enabled option in the list.
|
|
198
205
|
</td>
|
|
199
206
|
</tr>
|
|
200
207
|
<tr>
|
|
201
|
-
<td>Home</td>
|
|
202
|
-
<td>-</td>
|
|
203
208
|
<td>Expanded</td>
|
|
204
209
|
<td>Trigger element</td>
|
|
205
210
|
<td>
|
|
@@ -212,9 +217,9 @@
|
|
|
212
217
|
<td>Expanded</td>
|
|
213
218
|
<td>Trigger element</td>
|
|
214
219
|
<td>
|
|
215
|
-
The
|
|
220
|
+
The bib closes. If there is an <code>active</code> option, it is selected first in single-select, or toggled in <code>multiSelect</code>. If no option is active, focus simply moves on without a selection change.
|
|
216
221
|
<div class="note">
|
|
217
|
-
<strong>Note:</strong> the
|
|
222
|
+
<strong>Note:</strong> <code>Tab</code> does not <code>preventDefault</code>, so the browser continues to move focus to the next element in the tabindex sequence after the selection is applied.
|
|
218
223
|
</div>
|
|
219
224
|
</td>
|
|
220
225
|
</tr>
|
|
@@ -223,10 +228,32 @@
|
|
|
223
228
|
<td>Expanded</td>
|
|
224
229
|
<td>Trigger element</td>
|
|
225
230
|
<td>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
231
|
+
Same behavior as <code>Tab</code>: the bib closes and any <code>active</code> option is selected (single-select) or toggled (<code>multiSelect</code>). The strategy does not read <code>shiftKey</code>; only the browser's own focus traversal reverses direction, moving focus to the previous element in the tabindex sequence.
|
|
232
|
+
</td>
|
|
233
|
+
</tr>
|
|
234
|
+
<tr>
|
|
235
|
+
<td rowspan="2">Space</td>
|
|
236
|
+
<td rowspan="2">-</td>
|
|
237
|
+
<td>Collapsed or Expanded, type-ahead buffer active</td>
|
|
238
|
+
<td>Trigger element</td>
|
|
239
|
+
<td>
|
|
240
|
+
Extends the type-ahead buffer with a space character. The <code>active</code> option advances if the buffer matches an active option; the bib state is unchanged. See the <a href="customize.html#typeAhead">Type-Ahead</a> section on the Customize page.
|
|
241
|
+
</td>
|
|
242
|
+
</tr>
|
|
243
|
+
<tr>
|
|
244
|
+
<td>Collapsed or Expanded, type-ahead buffer empty</td>
|
|
245
|
+
<td>Trigger element</td>
|
|
246
|
+
<td>
|
|
247
|
+
Toggles the bib — opens it when collapsed and closes it when expanded. No selection change occurs.
|
|
248
|
+
</td>
|
|
249
|
+
</tr>
|
|
250
|
+
<tr>
|
|
251
|
+
<td>Any printable character (other than Space)</td>
|
|
252
|
+
<td>-</td>
|
|
253
|
+
<td>Collapsed or Expanded</td>
|
|
254
|
+
<td>Trigger element</td>
|
|
255
|
+
<td>
|
|
256
|
+
Extends the type-ahead buffer. When the buffer matches an enabled option's displayed text, the <code>focused</code> option advances to that option and the bib opens if it was collapsed. A keystroke that does not match any option leaves the bib state unchanged. Repeated keystrokes within <code>typeaheadTimeoutMs</code> (default 500 ms) extend the buffer; pressing the same character repeatedly cycles through matching options. Keys chorded with <code>Ctrl</code>, <code>Meta</code>, or <code>Alt</code> are ignored so browser and OS shortcuts do not leak into the buffer. See the <a href="customize.html#typeAhead">Type-Ahead</a> section on the Customize page.
|
|
230
257
|
</td>
|
|
231
258
|
</tr>
|
|
232
259
|
</tbody>
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
</tr>
|
|
28
28
|
<tr>
|
|
29
29
|
<td>Invalid</td>
|
|
30
|
-
<td
|
|
30
|
+
<td>The trigger itself does not carry <code>aria-invalid</code>; the invalid state is announced through the alert-role Help Text (see <a href="#voiceOverStateInvalid">Invalid</a> below), not as a state hint on focus.</td>
|
|
31
31
|
</tr>
|
|
32
32
|
<tr>
|
|
33
33
|
<td>Disabled</td>
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
<p>Key characteristics across both platforms:</p>
|
|
96
96
|
<ul>
|
|
97
97
|
<li>The <code>label</code> is always read first.</li>
|
|
98
|
-
<li>The
|
|
98
|
+
<li>The trigger <strong>role</strong> is announced as <em>"combo box"</em> in both single-select and multi-select modes. The role does not change between large and small viewports — the fullscreen dialog on mobile wraps the same trigger, it does not remap the trigger's role to <em>"pop-up button"</em>, <em>"button"</em>, or <em>"list box"</em>. In multi-select mode, <code>aria-multiselectable="true"</code> is applied to the internal <code><auro-menu></code> (the listbox), not to the trigger.</li>
|
|
99
99
|
<li><code>disabled</code> options are announced as <em>"dimmed"</em> and cannot be selected.</li>
|
|
100
100
|
</ul>
|
|
101
101
|
<auro-header level="2" id="voiceOverStates">Impact of State</auro-header>
|
|
@@ -116,7 +116,7 @@
|
|
|
116
116
|
<li><strong>Focus</strong></li>
|
|
117
117
|
<li><strong>Open | Expand</strong></li>
|
|
118
118
|
<li><strong>Navigate Options:</strong> Moves through options; announces each option name plus <em>"selected"</em> or nothing.</li>
|
|
119
|
-
<li><strong>Selecting an option:</strong> Double-tap toggles the focused option's selection — announces <em>"selected"</em> or <em>"
|
|
119
|
+
<li><strong>Selecting an option:</strong> Double-tap toggles the focused option's selection — announces <em>"selected"</em> or <em>"not selected"</em>.</li>
|
|
120
120
|
<li><strong>Close | Collapse:</strong> Collapses the list, announces the expanded state change.</li>
|
|
121
121
|
</ol>
|
|
122
122
|
<auro-header level="4" id="voiceOverStateMultiSelectSmallVP">Small Viewport Multi-select</auro-header>
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
<li><strong>Focus</strong></li>
|
|
126
126
|
<li><strong>Open | Expand</strong></li>
|
|
127
127
|
<li><strong>Navigate Options:</strong> Moves through options; announces each option name plus <em>"selected"</em> or nothing.</li>
|
|
128
|
-
<li><strong>Selecting an option:</strong> Double-tap toggles the focused option's selection — announces <em>"selected"</em> or <em>"
|
|
128
|
+
<li><strong>Selecting an option:</strong> Double-tap toggles the focused option's selection — announces <em>"selected"</em> or <em>"not selected"</em>.</li>
|
|
129
129
|
<li><strong>Close | Collapse:</strong> Collapses the list, announces the expanded state change.</li>
|
|
130
130
|
</ol>
|
|
131
131
|
<p>Key differences from single-select:</p>
|
|
@@ -139,9 +139,9 @@
|
|
|
139
139
|
</thead>
|
|
140
140
|
<tbody>
|
|
141
141
|
<tr>
|
|
142
|
-
<td>
|
|
143
|
-
<td>
|
|
144
|
-
<td>
|
|
142
|
+
<td>Trigger role</td>
|
|
143
|
+
<td>combo box</td>
|
|
144
|
+
<td>combo box (with <code>aria-multiselectable="true"</code> on the internal listbox)</td>
|
|
145
145
|
</tr>
|
|
146
146
|
<tr>
|
|
147
147
|
<td>Interaction model</td>
|
|
@@ -153,31 +153,44 @@
|
|
|
153
153
|
<td>
|
|
154
154
|
<p>Current selected value</p>
|
|
155
155
|
<div class="note">
|
|
156
|
-
<strong>On focus:</strong> Announces "[component label], [current value or 'no selection'],
|
|
156
|
+
<strong>On focus:</strong> Announces "[component label], [current value or 'no selection'], combo box"
|
|
157
157
|
</div>
|
|
158
158
|
</td>
|
|
159
159
|
<td>
|
|
160
160
|
<p>Each option's selected state individually</p>
|
|
161
161
|
<div class="note">
|
|
162
|
-
<strong>On focus:</strong> Announces "[component label], [[{option label, 'selected'}, {option label, 'selected'}] or 'no selection'],
|
|
162
|
+
<strong>On focus:</strong> Announces "[component label], [[{option label, 'selected'}, {option label, 'selected'}] or 'no selection'], combo box"
|
|
163
163
|
</div>
|
|
164
164
|
<div class="note">
|
|
165
|
-
<strong>On selection change:</strong> Announces "[option label], ['selected' | '
|
|
165
|
+
<strong>On selection change:</strong> Announces "[option label], ['selected' | 'not selected']"
|
|
166
166
|
</div>
|
|
167
167
|
</td>
|
|
168
168
|
</tr>
|
|
169
169
|
<tr>
|
|
170
170
|
<td>Space key</td>
|
|
171
171
|
<td>Opens/closes picker</td>
|
|
172
|
-
<td>
|
|
172
|
+
<td>Opens/closes picker — <strong>Enter</strong> toggles the active option's selection. Space does not toggle selection in multi-select.</td>
|
|
173
173
|
</tr>
|
|
174
174
|
</tbody>
|
|
175
175
|
</table>
|
|
176
176
|
<div class="note"><strong>Important caveat:</strong> Multi-select is notoriously difficult for all users, including screen reader users — WCAG and usability research generally recommend avoiding <code><auro-select multiSelect></code> in favor of checkboxes or other patterns that make multi-selection more discoverable.</div>
|
|
177
177
|
<auro-header level="3" id="voiceOverStateInvalid">Invalid</auro-header>
|
|
178
|
-
<p>When an <code><auro-select></code>
|
|
178
|
+
<p>When an <code><auro-select></code> becomes invalid the following occurs:</p>
|
|
179
179
|
<ul>
|
|
180
|
-
<li
|
|
181
|
-
<li>
|
|
180
|
+
<li>The Help Text region renders the error message with <code>role="alert"</code> and <code>aria-live="assertive"</code>, so VoiceOver announces the error message immediately when the state transitions to invalid — the announcement does not wait for the next focus.</li>
|
|
181
|
+
<li>On subsequent focus of the trigger, the help text's error content is read as part of the description, following the label / value / role announcement.</li>
|
|
182
182
|
</ul>
|
|
183
|
-
<
|
|
183
|
+
<div class="note"><strong>Note:</strong> the trigger itself does not set <code>aria-invalid</code>, so VoiceOver does not include the words <em>"invalid data"</em> (macOS) or <em>"invalid entry"</em> (iOS) as part of the trigger's own announcement. The invalid state is conveyed entirely through the alert-role help text.</div>
|
|
184
|
+
<p>Example: when the select becomes invalid, VoiceOver announces the error message (e.g., <em>"Please select a country"</em>) via the assertive alert. On the next focus of the trigger, VoiceOver announces something like <em>"Country, no selection, combo box, Please select a country"</em>.</p>
|
|
185
|
+
<auro-header level="2" id="voiceOverImplementation">How the Announcements Are Wired</auro-header>
|
|
186
|
+
<p>The following implementation details are relevant when debugging or verifying VoiceOver behavior in <code><auro-select></code>:</p>
|
|
187
|
+
<auro-header level="3" id="voiceOverImplActiveDescendant">Active option (aria-activedescendant)</auro-header>
|
|
188
|
+
<p>Focus remains on the trigger while the bib is open; the currently active option is exposed via <code>aria-activedescendant</code>. Because the trigger and the option live in different shadow roots, the code sets <code>trigger.ariaActiveDescendantElement</code> (the IDL/property form) rather than the string attribute alone — this is what allows VoiceOver to announce the active option's label and state across the shadow boundary.</p>
|
|
189
|
+
<auro-header level="3" id="voiceOverImplSetSize">Position in list (aria-setsize / aria-posinset)</auro-header>
|
|
190
|
+
<p>Each option is stamped with <code>aria-setsize</code> (total count of navigable options) and <code>aria-posinset</code> (its 1-based position). Stamping runs on initial menu configuration and again whenever <code>auroMenu-optionsChange</code> fires (options added, removed, or otherwise re-initialized), so VoiceOver's <em>"N of M"</em> announcement stays accurate across dynamic option lists. A pure <code>value</code> change does not re-stamp on its own — it only updates selection state — unless it triggers a menu re-initialization in an empty/deferred-match path.</p>
|
|
191
|
+
<auro-header level="3" id="voiceOverImplLiveRegion">Live region routing</auro-header>
|
|
192
|
+
<p>Selection-change announcements (single-select confirmation and multi-select toggle wording) are written into an <code>aria-live="polite"</code> span that lives in the host component's shadow root by default. In fullscreen mode the trigger becomes <code>inert</code> and everything outside the <code><dialog></code> is hidden from assistive tech — so the live region is routed into the bib's shadow root instead, ensuring the announcement is reachable while the dialog is open.</p>
|
|
193
|
+
<auro-header level="3" id="voiceOverImplDebounce">Announcement timing</auro-header>
|
|
194
|
+
<p>Selection announcements are delayed briefly (~300ms) so the option's <em>"selected"</em> / <em>"not selected"</em> announcement is not overridden by the <em>"collapsed"</em> announcement that follows when the bib closes.</p>
|
|
195
|
+
<auro-header level="3" id="voiceOverImplFullscreen">Fullscreen focus and inert</auro-header>
|
|
196
|
+
<p>When the fullscreen dialog opens, focus moves to the dialog's <strong>Close</strong> button and the trigger is marked <code>inert</code> so screen readers cannot reach it — the user is effectively inside the dialog until it closes, at which point focus returns to the trigger and <code>inert</code> is removed.</p>
|
|
@@ -180,13 +180,6 @@ export class AuroSelect extends AuroElement {
|
|
|
180
180
|
type: BooleanConstructor;
|
|
181
181
|
reflect: boolean;
|
|
182
182
|
};
|
|
183
|
-
/**
|
|
184
|
-
* @private
|
|
185
|
-
*/
|
|
186
|
-
options: {
|
|
187
|
-
type: ArrayConstructor;
|
|
188
|
-
state: boolean;
|
|
189
|
-
};
|
|
190
183
|
/**
|
|
191
184
|
* Specifies the current selected menuOption. Default type is `HTMLElement`, changing to `Array<HTMLElement>` when `multiSelect` is true.
|
|
192
185
|
* @type {HTMLElement|Array<HTMLElement>}
|
|
@@ -256,6 +249,15 @@ export class AuroSelect extends AuroElement {
|
|
|
256
249
|
reflect: boolean;
|
|
257
250
|
attribute: boolean;
|
|
258
251
|
};
|
|
252
|
+
/**
|
|
253
|
+
* Milliseconds of keyboard inactivity before the type-ahead buffer resets.
|
|
254
|
+
* Increase for users who type slowly.
|
|
255
|
+
* @default 500
|
|
256
|
+
*/
|
|
257
|
+
typeaheadTimeoutMs: {
|
|
258
|
+
type: NumberConstructor;
|
|
259
|
+
reflect: boolean;
|
|
260
|
+
};
|
|
259
261
|
/**
|
|
260
262
|
* Specifies the `validityState` this element is in.
|
|
261
263
|
*/
|
|
@@ -264,7 +266,7 @@ export class AuroSelect extends AuroElement {
|
|
|
264
266
|
reflect: boolean;
|
|
265
267
|
};
|
|
266
268
|
/**
|
|
267
|
-
* Value selected for the component.
|
|
269
|
+
* Value selected for the component. When set programmatically or as a preset attribute, the value must match a selectable option. If it matches an option marked `disabled` or `static`, the selection is rejected: `value` is cleared to `undefined` while `optionSelected` is cleared to `undefined` in single-select or `[]` in multiSelect. `hidden` options remain selectable by value.
|
|
268
270
|
*/
|
|
269
271
|
value: {
|
|
270
272
|
type: StringConstructor;
|
|
@@ -325,6 +327,14 @@ export class AuroSelect extends AuroElement {
|
|
|
325
327
|
* @private
|
|
326
328
|
*/
|
|
327
329
|
private hasDisplayValueContent;
|
|
330
|
+
/**
|
|
331
|
+
* @private
|
|
332
|
+
*/
|
|
333
|
+
private typeaheadBuffer;
|
|
334
|
+
/**
|
|
335
|
+
* @private
|
|
336
|
+
*/
|
|
337
|
+
private _typeaheadTimeout;
|
|
328
338
|
/**
|
|
329
339
|
* @private
|
|
330
340
|
* @returns {void} Internal defaults.
|
|
@@ -335,6 +345,7 @@ export class AuroSelect extends AuroElement {
|
|
|
335
345
|
fullscreenBreakpoint: string | undefined;
|
|
336
346
|
onDark: boolean | undefined;
|
|
337
347
|
isPopoverVisible: any;
|
|
348
|
+
typeaheadTimeoutMs: number | undefined;
|
|
338
349
|
shape: string | undefined;
|
|
339
350
|
size: string | undefined;
|
|
340
351
|
/**
|
|
@@ -371,6 +382,26 @@ export class AuroSelect extends AuroElement {
|
|
|
371
382
|
dropdown: any;
|
|
372
383
|
optionActive: any;
|
|
373
384
|
bibtemplate: any;
|
|
385
|
+
/**
|
|
386
|
+
* Reads the current label slot text and pushes it to the dropdown bib
|
|
387
|
+
* (for dialog naming) and the menu (for listbox aria-label). Safe to call
|
|
388
|
+
* before either child has been wired up — each branch self-guards.
|
|
389
|
+
* @private
|
|
390
|
+
*/
|
|
391
|
+
private _syncLabelText;
|
|
392
|
+
/**
|
|
393
|
+
* Keeps the dialog/menu accessible names in sync when consumers mutate the
|
|
394
|
+
* label slot at runtime (e.g., i18n locale swap). `slotchange` alone is
|
|
395
|
+
* insufficient — it doesn't fire when textContent of an already-assigned
|
|
396
|
+
* slotted node changes, which is the common case. We scope the observer to
|
|
397
|
+
* the label node itself (not the whole host subtree) so option-content
|
|
398
|
+
* mutations don't trigger label re-syncs, and re-target on `slotchange`
|
|
399
|
+
* when consumers add or replace the label element.
|
|
400
|
+
* @private
|
|
401
|
+
*/
|
|
402
|
+
private _observeLabelChanges;
|
|
403
|
+
_labelObserver: MutationObserver | null | undefined;
|
|
404
|
+
_retargetLabelObserver: (() => void) | null | undefined;
|
|
374
405
|
/**
|
|
375
406
|
* Updates the displayed value in an Auro dropdown component based on optionSelected.
|
|
376
407
|
* @private
|
|
@@ -400,6 +431,12 @@ export class AuroSelect extends AuroElement {
|
|
|
400
431
|
private _getAnnouncementRoot;
|
|
401
432
|
/**
|
|
402
433
|
* Binds all behavior needed to the menu after rendering.
|
|
434
|
+
*
|
|
435
|
+
* The `<auro-menu>` reference is captured once and not re-targeted on
|
|
436
|
+
* `slotchange`. Runtime option mutations are covered via
|
|
437
|
+
* `auroMenu-optionsChange`, so swap options inside the menu freely; do not
|
|
438
|
+
* swap the `<auro-menu>` element itself under a live select — remount the
|
|
439
|
+
* parent `<auro-select>` instead.
|
|
403
440
|
* @private
|
|
404
441
|
* @returns {void}
|
|
405
442
|
*/
|
|
@@ -407,7 +444,6 @@ export class AuroSelect extends AuroElement {
|
|
|
407
444
|
menu: Element | null | undefined;
|
|
408
445
|
defaultMenuSize: string | null | undefined;
|
|
409
446
|
defaultMenuShape: string | null | undefined;
|
|
410
|
-
options: any;
|
|
411
447
|
optionSelected: any;
|
|
412
448
|
/**
|
|
413
449
|
* Binds all behavior needed to the component after rendering.
|
|
@@ -421,15 +457,33 @@ export class AuroSelect extends AuroElement {
|
|
|
421
457
|
* @param {number} index - Index of the option to make active.
|
|
422
458
|
*/
|
|
423
459
|
updateActiveOption(index: number): void;
|
|
460
|
+
/**
|
|
461
|
+
* Returns the lowercase, trimmed text content of a menu option.
|
|
462
|
+
* @private
|
|
463
|
+
* @param {HTMLElement} option - The menu option element.
|
|
464
|
+
* @returns {string}
|
|
465
|
+
*/
|
|
466
|
+
private _getOptionDisplayText;
|
|
467
|
+
/**
|
|
468
|
+
* Empties the type-ahead buffer and cancels any pending reset timeout.
|
|
469
|
+
* Called when focus leaves the component, when Escape closes the bib, and on disconnect
|
|
470
|
+
* so a stale buffer never bridges into a fresh interaction.
|
|
471
|
+
* @private
|
|
472
|
+
*/
|
|
473
|
+
private _clearTypeaheadBuffer;
|
|
424
474
|
/**
|
|
425
475
|
* Updates the active option in the menu based on keyboard input.
|
|
476
|
+
*
|
|
477
|
+
* Implements the WAI-ARIA APG Listbox type-ahead pattern: accumulates printable
|
|
478
|
+
* keystrokes into a buffer that resets after `typeaheadTimeoutMs` of inactivity.
|
|
479
|
+
* A multi-character buffer matches the first option whose displayed text starts
|
|
480
|
+
* with the buffer; repeating a single character cycles through options that start
|
|
481
|
+
* with that character.
|
|
426
482
|
* @private
|
|
427
483
|
* @param {string} _key - The key pressed by the user.
|
|
428
484
|
* @returns {void}
|
|
429
485
|
*/
|
|
430
486
|
private updateActiveOptionBasedOnKey;
|
|
431
|
-
sameLetterTimes: any;
|
|
432
|
-
lastLetter: string | undefined;
|
|
433
487
|
/**
|
|
434
488
|
* Manages the visibility of the dropdown based on loading state changes.
|
|
435
489
|
*
|
|
@@ -475,7 +529,11 @@ export class AuroSelect extends AuroElement {
|
|
|
475
529
|
*/
|
|
476
530
|
private clearSelection;
|
|
477
531
|
firstUpdated(): void;
|
|
478
|
-
|
|
532
|
+
/**
|
|
533
|
+
* Sets the selected value by matching it against the menu options. Options marked `disabled` or `static` are not selectable: if the value matches one, the selection is rejected and `value` is cleared to `undefined` while `optionSelected` is cleared to `undefined` in single-select or `[]` in multiSelect. `hidden` options remain selectable.
|
|
534
|
+
* @param {string} value - The value to match against the menu options.
|
|
535
|
+
*/
|
|
536
|
+
setMenuValue(value: string): void;
|
|
479
537
|
/**
|
|
480
538
|
* Scrolls the currently active option into view.
|
|
481
539
|
* Respects user's motion preferences for accessibility.
|