@aurodesignsystem-dev/auro-formkit 0.0.0-pr1398.2 → 0.0.0-pr1398.3

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 (61) hide show
  1. package/components/checkbox/demo/api.min.js +1 -1
  2. package/components/checkbox/demo/index.min.js +1 -1
  3. package/components/checkbox/demo/keyboardBehavior.md +0 -0
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/api.min.js +129 -166
  7. package/components/combobox/demo/index.min.js +129 -166
  8. package/components/combobox/demo/keyboardBehavior.html +81 -0
  9. package/components/combobox/demo/keyboardBehavior.md +308 -0
  10. package/components/combobox/dist/index.js +87 -134
  11. package/components/combobox/dist/registered.js +87 -134
  12. package/components/counter/demo/api.min.js +157 -160
  13. package/components/counter/demo/index.min.js +157 -160
  14. package/components/counter/demo/keyboardBehavior.html +81 -0
  15. package/components/counter/demo/keyboardBehavior.md +127 -0
  16. package/components/counter/dist/auro-counter.d.ts +0 -7
  17. package/components/counter/dist/index.js +157 -160
  18. package/components/counter/dist/keyboardStrategy.d.ts +4 -0
  19. package/components/counter/dist/registered.js +157 -160
  20. package/components/datepicker/demo/api.min.js +89 -137
  21. package/components/datepicker/demo/index.min.js +89 -137
  22. package/components/datepicker/demo/keyboardBehavior.html +81 -0
  23. package/components/datepicker/demo/keyboardBehavior.md +24 -0
  24. package/components/datepicker/dist/index.js +84 -132
  25. package/components/datepicker/dist/registered.js +84 -132
  26. package/components/dropdown/demo/api.md +0 -1
  27. package/components/dropdown/demo/api.min.js +99 -140
  28. package/components/dropdown/demo/index.md +2 -2
  29. package/components/dropdown/demo/index.min.js +99 -140
  30. package/components/dropdown/demo/keyboardBehavior.html +81 -0
  31. package/components/dropdown/demo/keyboardBehavior.md +77 -0
  32. package/components/dropdown/dist/auro-dropdown.d.ts +0 -8
  33. package/components/dropdown/dist/auro-dropdownBib.d.ts +1 -50
  34. package/components/dropdown/dist/dropdownBibKeyboardStrategy.d.ts +7 -0
  35. package/components/dropdown/dist/index.js +83 -128
  36. package/components/dropdown/dist/registered.js +83 -128
  37. package/components/form/demo/api.min.js +466 -599
  38. package/components/form/demo/index.min.js +466 -599
  39. package/components/form/demo/keyboardBehavior.md +0 -0
  40. package/components/input/demo/api.min.js +1 -1
  41. package/components/input/demo/index.min.js +1 -1
  42. package/components/input/demo/keyboardBehavior.md +0 -0
  43. package/components/input/dist/index.js +1 -1
  44. package/components/input/dist/registered.js +1 -1
  45. package/components/menu/demo/api.min.js +42 -32
  46. package/components/menu/demo/index.min.js +42 -32
  47. package/components/menu/dist/auro-menu.d.ts +3 -11
  48. package/components/menu/dist/index.js +42 -32
  49. package/components/menu/dist/registered.js +42 -32
  50. package/components/radio/demo/api.min.js +1 -1
  51. package/components/radio/demo/index.min.js +1 -1
  52. package/components/radio/dist/index.js +1 -1
  53. package/components/radio/dist/registered.js +1 -1
  54. package/components/select/demo/api.min.js +132 -167
  55. package/components/select/demo/index.min.js +132 -167
  56. package/components/select/demo/keyboardBehavior.html +81 -0
  57. package/components/select/demo/keyboardBehavior.md +246 -0
  58. package/components/select/dist/index.js +90 -135
  59. package/components/select/dist/registered.js +90 -135
  60. package/custom-elements.json +61 -89
  61. package/package.json +2 -2
@@ -0,0 +1,246 @@
1
+ <auro-header level="1" id="overview">Select - Keyboard Behavior</auro-header>
2
+ <div class="contentWrapper">
3
+ <div class="mainContent">
4
+ <div class="scrollWrapper">
5
+ <auro-header level="2" id="tabBehavior">Tab Behavior</auro-header>
6
+ <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../../dropdown/docs/partials/tabindex.md) -->
7
+ <!-- The below content is automatically added from ./../../dropdown/docs/partials/tabindex.md -->
8
+ <p>The trigger is a focusable element and participates in the standard tab order, responding to <code>Tab</code> and <code>Shift+Tab</code> key events per <auro-hyperlink href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex">native browser behavior, i.e., these keys step through the browser tabindex sequence.</auro-hyperlink></p>
9
+ <p>When the component is <code>disabled</code> it is removed from the <code>tabindex</code> sequence. VoiceOver's virtual cursor <em>(swipe navigation)</em> can still encounter the component, but standard keyboard <code>Tab</code> navigation skips it.</p>
10
+ <p>When the bib is collapsed, the bib content is excluded from the tab sequence. When <strong>expanded</strong>, focusable elements within the bib content are included in the natural tab order. In fullscreen mode, focus is trapped within the bib, and the tab sequence cycles through the bib content focusable elements until the bib is closed or the viewport no longer meets the fullscreen condition and is rendered as a popover.</p>
11
+ <!-- AURO-GENERATED-CONTENT:END -->
12
+ <p>There are no focusable elements inside the component's bib content.</p>
13
+ <div class="note">
14
+ <p><strong>Note:</strong> The following HTML5 select element keyboard behavior is unsupported at this time:</p>
15
+ <ul>
16
+ <li><strong>PageUp:</strong> The browser moves the <code>focused</code> option up by approximately one <strong>page</strong> of visible options (typically equal to the number of rendered rows). The scroll position updates in tandem so that the newly focused option is brought into view, usually aligning near the top of the visible list.</li>
17
+ <li><strong>PageDown:</strong> The browser advances the <code>focused</code> option down by approximately one <strong>page</strong> of visible items (typically equal to the number of rendered rows). The scroll position updates accordingly so the newly focused option is brought into view, often aligning near the bottom of the visible list.</li>
18
+ </ul>
19
+ <p>This additional <code>multiSelect</code> functionality is not supported at this time.</p>
20
+ <ul>
21
+ <li><strong>Extending selection (Shift+Arrow)</strong></li>
22
+ <li><strong>Select all (Cmd+A):</strong> Select all options</li>
23
+ </ul>
24
+ </div>
25
+ <auro-header level="2" id="keyEvents">Key Events</auro-header>
26
+ <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../docs/partials/keyEvents.md) -->
27
+ <!-- The below content is automatically added from ./../docs/partials/keyEvents.md -->
28
+ <table>
29
+ <thead>
30
+ <tr>
31
+ <th>Key</th>
32
+ <th>Modifier</th>
33
+ <th>Current State</th>
34
+ <th>Focus Element</th>
35
+ <th>Behavior</th>
36
+ </tr>
37
+ </thead>
38
+ <tbody>
39
+ <tr>
40
+ <td rowspan="6">ArrowDown</td>
41
+ <td rowspan="2">-</td>
42
+ <td>Collapsed</td>
43
+ <td>Trigger element</td>
44
+ <td>Opens the bib.</td>
45
+ </tr>
46
+ <tr>
47
+ <td>Expanded</td>
48
+ <td>Trigger element</td>
49
+ <td>
50
+ Advances the <code>focused</code> option to the next enabled option in the list. If the current <code>focused</code> option is the last enabled option, selection wraps to the first enabled option.
51
+ </td>
52
+ </tr>
53
+ <tr>
54
+ <td rowspan="2">Command</td>
55
+ <td>Collapsed</td>
56
+ <td>Trigger element</td>
57
+ <td>Opens the bib.</td>
58
+ </tr>
59
+ <tr>
60
+ <td>Expanded</td>
61
+ <td>Trigger element</td>
62
+ <td>
63
+ Advances the <code>focused</code> option to the last enabled option in the list.
64
+ </td>
65
+ </tr>
66
+ <tr>
67
+ <td rowspan="2">Option</td>
68
+ <td>Collapsed</td>
69
+ <td>Trigger element</td>
70
+ <td>Opens the bib.</td>
71
+ </tr>
72
+ <tr>
73
+ <td>Expanded</td>
74
+ <td>Trigger element</td>
75
+ <td>
76
+ Advances the <code>focused</code> option to the last enabled option in the list.
77
+ </td>
78
+ </tr>
79
+ <tr>
80
+ <td rowspan="6">ArrowUp</td>
81
+ <td rowspan="2">-</td>
82
+ <td>Collapsed</td>
83
+ <td>Trigger element</td>
84
+ <td>Opens the bib.</td>
85
+ </tr>
86
+ <tr>
87
+ <td>Expanded</td>
88
+ <td>Trigger element</td>
89
+ <td>
90
+ Advances the <code>focused</code> option to the previous enabled option in the list. If the current <code>focused</code> option is the first enabled option, selection wraps to the last enabled option.
91
+ </td>
92
+ </tr>
93
+ <tr>
94
+ <td rowspan="2">Command</td>
95
+ <td>Collapsed</td>
96
+ <td>Trigger element</td>
97
+ <td>Opens the bib.</td>
98
+ </tr>
99
+ <tr>
100
+ <td>Expanded</td>
101
+ <td>Trigger element</td>
102
+ <td>
103
+ Advances the <code>focused</code> option to the first enabled option in the list.
104
+ </td>
105
+ </tr>
106
+ <tr>
107
+ <td rowspan="2">Option</td>
108
+ <td>Collapsed</td>
109
+ <td>Trigger element</td>
110
+ <td>Opens the bib.</td>
111
+ </tr>
112
+ <tr>
113
+ <td>Expanded</td>
114
+ <td>Trigger element</td>
115
+ <td>
116
+ Advances the <code>focused</code> option to the first enabled option in the list.
117
+ </td>
118
+ </tr>
119
+ <tr>
120
+ <td>End</td>
121
+ <td>-</td>
122
+ <td>Expanded</td>
123
+ <td>Trigger element</td>
124
+ <td>
125
+ Advances the <code>focused</code> option to the last enabled option in the list.
126
+ </td>
127
+ </tr>
128
+ <tr>
129
+ <td rowspan="2">Enter</td>
130
+ <td rowspan="2">-</td>
131
+ <td>
132
+ Expanded, without <code>multiSelect</code>
133
+ </td>
134
+ <td>Trigger element</td>
135
+ <td>
136
+ The current <code>focused</code> option is selected, closes the bib.
137
+ </td>
138
+ </tr>
139
+ <tr>
140
+ <td>
141
+ Expanded, with <code>multiSelect</code>
142
+ </td>
143
+ <td>Trigger element</td>
144
+ <td>
145
+ The current <code>focused</code> option is toggled, does not close the bib.
146
+ <p style="background-color: pink; color: red;">&nbsp;DEVELOPER NOTE: need to prevent default dropdown event behavior&nbsp;&nbsp;</p>
147
+ </td>
148
+ </tr>
149
+ <tr>
150
+ <td>Home</td>
151
+ <td>-</td>
152
+ <td>Expanded</td>
153
+ <td>Trigger element</td>
154
+ <td>
155
+ Advances the <code>focused</code> option to the first enabled option in the list.
156
+ </td>
157
+ </tr>
158
+ <tr>
159
+ <td rowspan="2">Tab</td>
160
+ <td>-</td>
161
+ <td>Expanded</td>
162
+ <td>Trigger element</td>
163
+ <td>
164
+ The current <code>focused</code> option is selected.
165
+ <div class="note">
166
+ <strong>Note:</strong> the page will also navigate to the next focusable element in the tabindex order.
167
+ </div>
168
+ </td>
169
+ </tr>
170
+ <tr>
171
+ <td>Shift</td>
172
+ <td>Expanded</td>
173
+ <td>Trigger element</td>
174
+ <td>
175
+ Advances the <code>focused</code> option to the first enabled option in the list.
176
+ <div class="note">
177
+ <strong>Note:</strong> the page will <strong>NOT</strong> navigate to the previous focusable element in the tabindex order.
178
+ </div>
179
+ </td>
180
+ </tr>
181
+ </tbody>
182
+ </table>
183
+ <!-- AURO-GENERATED-CONTENT:END -->
184
+ <auro-header level="3" id="keyEventsDropdown">Key Events inherited from Auro-Dropdown</auro-header>
185
+ <!-- AURO-GENERATED-CONTENT:START (FILE:src=./../../dropdown/docs/partials/keyEvents.md) -->
186
+ <!-- The below content is automatically added from ./../../dropdown/docs/partials/keyEvents.md -->
187
+ <table>
188
+ <thead>
189
+ <tr>
190
+ <th>Key</th>
191
+ <th>Modifier</th>
192
+ <th>Current State</th>
193
+ <th>Focus Element</th>
194
+ <th>Behavior</th>
195
+ </tr>
196
+ </thead>
197
+ <tbody>
198
+ <tr>
199
+ <td rowspan="2">Enter</td>
200
+ <td>-</td>
201
+ <td>Collapsed</td>
202
+ <td>
203
+ Trigger or any <strong>focusable</strong> element within the trigger.
204
+ </td>
205
+ <td>Opens the bib.</td>
206
+ </tr>
207
+ <tr>
208
+ <td>-</td>
209
+ <td>Expanded</td>
210
+ <td>
211
+ Trigger or any <strong>focusable</strong> element within the trigger.
212
+ </td>
213
+ <td>Closes the bib.</td>
214
+ </tr>
215
+ <tr>
216
+ <td>Escape</td>
217
+ <td>-</td>
218
+ <td>Expanded</td>
219
+ <td>
220
+ Component <code>:host</code> or any <strong>focusable</strong> element within the component.
221
+ </td>
222
+ <td>Closes the bib.</td>
223
+ </tr>
224
+ <tr>
225
+ <td rowspan="2">Space</td>
226
+ <td>-</td>
227
+ <td>Collapsed</td>
228
+ <td>
229
+ Trigger or any <strong>focusable</strong> element within the trigger.
230
+ </td>
231
+ <td>Opens the bib.</td>
232
+ </tr>
233
+ <tr>
234
+ <td>-</td>
235
+ <td>Expanded</td>
236
+ <td>
237
+ Trigger or any <strong>focusable</strong> element within the trigger.
238
+ </td>
239
+ <td>Closes the bib.</td>
240
+ </tr>
241
+ </tbody>
242
+ </table>
243
+ <!-- AURO-GENERATED-CONTENT:END -->
244
+ </div>
245
+ </div>
246
+ </div>
@@ -1190,7 +1190,7 @@ function restoreTriggerAfterClose(dropdown, focusTarget) {
1190
1190
  * @returns {{isExpanded: boolean, isModal: boolean, isPopover: boolean, activeInput: HTMLElement|null}}
1191
1191
  * isModal and isPopover reflect the display mode (fullscreen vs not) regardless of expanded state.
1192
1192
  */
1193
- function createDisplayContext(component, options = {}) {
1193
+ function createDisplayContext$1(component, options = {}) {
1194
1194
  const dd = options.dropdown || component.dropdown;
1195
1195
  // isPopoverVisible reflects as the `open` attribute.
1196
1196
  // It reports whether the bib is open in any mode (popover or modal).
@@ -1220,11 +1220,11 @@ function createDisplayContext(component, options = {}) {
1220
1220
  * @param {Object} strategy - Map of key names to handler functions.
1221
1221
  * @param {Object} [options] - Optional config passed to createDisplayContext.
1222
1222
  */
1223
- function applyKeyboardStrategy(component, strategy, options = {}) {
1223
+ function applyKeyboardStrategy$1(component, strategy, options = {}) {
1224
1224
  component.addEventListener('keydown', async (evt) => {
1225
1225
  const handler = strategy[evt.key] || strategy.default;
1226
1226
  if (typeof handler === 'function') {
1227
- const ctx = createDisplayContext(component, options);
1227
+ const ctx = createDisplayContext$1(component, options);
1228
1228
  await handler(component, evt, ctx);
1229
1229
  }
1230
1230
  });
@@ -3388,11 +3388,10 @@ class AuroFloatingUI {
3388
3388
  return;
3389
3389
  }
3390
3390
 
3391
- const { activeElement } = document;
3392
3391
  // if focus is still inside of trigger or bib, do not close
3393
3392
  if (
3394
- this.element.contains(activeElement) ||
3395
- this.element.bib?.contains(activeElement)
3393
+ this.element.matches(":focus") ||
3394
+ this.element.matches(":focus-within")
3396
3395
  ) {
3397
3396
  return;
3398
3397
  }
@@ -4231,12 +4230,83 @@ let p$2 = class p{registerComponent(t,a){customElements.get(t)||customElements.d
4231
4230
 
4232
4231
  var iconVersion$1 = '9.1.2';
4233
4232
 
4233
+ /**
4234
+ * Computes display state once per keydown event.
4235
+ * Centralizes null-safety checks and makes the shared/modal/popover branching explicit.
4236
+ *
4237
+ * @param {HTMLElement} component - The component with a dropdown reference.
4238
+ * @param {Object} [options] - Optional config.
4239
+ * @param {HTMLElement} [options.dropdown] - Explicit dropdown reference. Falls back to component.dropdown.
4240
+ * @param {Function} [options.inputResolver] - Called with (component, ctx) to resolve the active input element.
4241
+ * @returns {{isExpanded: boolean, isModal: boolean, isPopover: boolean, activeInput: HTMLElement|null}}
4242
+ * isModal and isPopover reflect the display mode (fullscreen vs not) regardless of expanded state.
4243
+ */
4244
+ function createDisplayContext(component, options = {}) {
4245
+ const dd = options.dropdown || component.dropdown;
4246
+ // isPopoverVisible reflects as the `open` attribute.
4247
+ // It reports whether the bib is open in any mode (popover or modal).
4248
+ const isExpanded = Boolean(dd && dd.isPopoverVisible);
4249
+ const isFullscreen = Boolean(dd && dd.isBibFullscreen);
4250
+
4251
+ const ctx = {
4252
+ isExpanded,
4253
+ isModal: isFullscreen,
4254
+ isPopover: !isFullscreen,
4255
+ activeInput: null,
4256
+ };
4257
+
4258
+ if (options.inputResolver) {
4259
+ const resolvedInput = options.inputResolver(component, ctx);
4260
+ // Guard against resolvers returning undefined or non-HTMLElement values.
4261
+ ctx.activeInput = resolvedInput instanceof HTMLElement ? resolvedInput : null;
4262
+ }
4263
+
4264
+ return ctx;
4265
+ }
4266
+
4267
+ /**
4268
+ * Wires up a keydown listener that dispatches to strategy[evt.key] or strategy.default.
4269
+ * Handles both sync and async handlers.
4270
+ * @param {HTMLElement} component - The component to attach the listener to.
4271
+ * @param {Object} strategy - Map of key names to handler functions.
4272
+ * @param {Object} [options] - Optional config passed to createDisplayContext.
4273
+ */
4274
+ function applyKeyboardStrategy(component, strategy, options = {}) {
4275
+ component.addEventListener('keydown', async (evt) => {
4276
+ const handler = strategy[evt.key] || strategy.default;
4277
+ if (typeof handler === 'function') {
4278
+ const ctx = createDisplayContext(component, options);
4279
+ await handler(component, evt, ctx);
4280
+ }
4281
+ });
4282
+ }
4283
+
4234
4284
  var styleCss$2$1 = css`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host dialog{width:auto;max-width:none;height:auto;max-height:none;padding:0;border:none;margin:0;outline:none;transform:translateZ(0)}:host dialog::backdrop{background:transparent}:host(:not([isfullscreen])) dialog{position:relative;inset:unset}:host(:not([isfullscreen])) .container.shape-box{border-radius:unset}:host(:not([isfullscreen])) .container[class*=shape-pill],:host(:not([isfullscreen])) .container[class*=shape-snowflake]{border-radius:30px}:host(:not([isfullscreen])) .container[class*=shape-rounded]{border-radius:16px}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([isfullscreen]) .container::backdrop{background:var(--ds-color-background-primary, #fff)}:host(:popover-open){position:fixed;overflow:visible;padding:0;border:none;margin:0;background:transparent;inset:unset;outline:none}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}.container{display:inline-block;overflow:auto;box-sizing:border-box;border-radius:var(--ds-border-radius, 0.375rem);margin:var(--ds-size-50, 0.25rem) 0}.util_displayHiddenVisually{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip-path:inset(50%);white-space:nowrap}`;
4235
4285
 
4236
4286
  var colorCss$2 = css`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
4237
4287
 
4238
4288
  var tokensCss$1 = css`:host(:not([ondark])),:host(:not([appearance=inverse])){--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-muted, #676767);--ds-auro-dropdown-trigger-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-hover-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-bold, #585e67);--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-dropdownbib-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdownbib-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdownbib-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db);--ds-auro-dropdown-trigger-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-hover-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-inverse, #ffffff);--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-dropdownbib-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdownbib-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdownbib-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}`;
4239
4289
 
4290
+ /**
4291
+ * Creates a keyboard strategy for dialog-specific key handling.
4292
+ * All other keydown behavior is left to the browser's native bubbling path.
4293
+ * @param {HTMLElement} bib - The dropdown bib element.
4294
+ * @returns {Object} Keyboard handlers keyed by `event.key`.
4295
+ */
4296
+ // eslint-disable-next-line no-unused-vars
4297
+ function createDropdownBibKeyboardStrategy(bib) {
4298
+ return {
4299
+ // eslint-disable-next-line no-unused-vars
4300
+ Enter(_dialog, event) {
4301
+ // Floating UI handles Enter key to open the dropdown
4302
+ },
4303
+ // eslint-disable-next-line no-unused-vars
4304
+ Escape(_dialog, event) {
4305
+ // Floating UI handles Escape key to close the dropdown
4306
+ }
4307
+ };
4308
+ }
4309
+
4240
4310
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
4241
4311
  // See LICENSE in the project root for license information.
4242
4312
  /* eslint-disable max-lines */
@@ -4361,26 +4431,11 @@ class AuroDropdownBib extends LitElement {
4361
4431
  },
4362
4432
 
4363
4433
  /**
4364
- * Set by auro-dropdown when a menu option is highlighted via
4365
- * aria-activedescendant. The dialog keyboard bridge checks this
4366
- * flag so that Enter selects the highlighted option instead of
4367
- * activating the focused interactive element (e.g. the trigger
4368
- * button, or the bibtemplate close button in fullscreen).
4434
+ * Tracks whether a menu option is currently highlighted.
4369
4435
  * @private
4370
4436
  */
4371
4437
  hasActiveDescendant: {
4372
4438
  type: Boolean
4373
- },
4374
-
4375
- /**
4376
- * When true, the keyboard bridge allows native Tab behavior
4377
- * instead of intercepting it. Set this for bib consumers
4378
- * (e.g. counter) whose content contains real focusable elements
4379
- * that need native Tab navigation.
4380
- * @private
4381
- */
4382
- nativeFocusableContent: {
4383
- type: Boolean
4384
4439
  }
4385
4440
  };
4386
4441
  }
@@ -4450,7 +4505,7 @@ class AuroDropdownBib extends LitElement {
4450
4505
 
4451
4506
  const dialog = this.shadowRoot.querySelector('dialog');
4452
4507
  this._setupCancelHandler(dialog);
4453
- this._setupKeyboardBridge(dialog);
4508
+ applyKeyboardStrategy(dialog, createDropdownBibKeyboardStrategy());
4454
4509
 
4455
4510
  this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
4456
4511
  bubbles: true,
@@ -4477,98 +4532,6 @@ class AuroDropdownBib extends LitElement {
4477
4532
  });
4478
4533
  }
4479
4534
 
4480
- /**
4481
- * showModal() creates a closed focus scope — keyboard events inside
4482
- * the dialog's shadow DOM do NOT bubble out to the combobox/select
4483
- * keydown handlers in the parent shadow DOM. This handler bridges
4484
- * that gap by re-dispatching navigation keys so they cross the
4485
- * shadow boundary and reach the menu navigation logic in the parent
4486
- * component.
4487
- *
4488
- * The trade-off: intercepting these keys means native keyboard
4489
- * behaviors that would normally "just work" must be manually
4490
- * re-implemented here:
4491
- *
4492
- * - Enter on buttons: Custom elements (auro-button) don't get the
4493
- * native Enter→click that <button> provides, so we call .click()
4494
- * directly when Enter is pressed on a button-like element.
4495
- *
4496
- * - Tab: Intercepted and re-dispatched so parent components
4497
- * (select/combobox) can select the active option and close the
4498
- * dialog. The <dialog> provides containment and isolation
4499
- * (inert background, VoiceOver focus trapping, top layer), while
4500
- * the content inside is a role="listbox" navigated via
4501
- * aria-activedescendant (options are not focusable). Tab keyboard
4502
- * behavior follows listbox conventions (select + close) because
4503
- * the dialog's native Tab trap only cycles between the close
4504
- * button and browser chrome.
4505
- *
4506
- * - Escape: The native <dialog> fires a `cancel` event on ESC
4507
- * (handled by _setupCancelHandler), so the re-dispatched Escape
4508
- * is a secondary path for parent components that also listen for
4509
- * Escape keydown.
4510
- *
4511
- * @param {HTMLDialogElement} dialog - The dialog element to attach the keyboard bridge to.
4512
- * @private
4513
- */
4514
- _setupKeyboardBridge(dialog) {
4515
- const navKeys = new Set([
4516
- 'ArrowUp',
4517
- 'ArrowDown',
4518
- 'Enter',
4519
- 'Escape',
4520
- 'Tab'
4521
- ]);
4522
-
4523
- dialog.addEventListener('keydown', (event) => {
4524
- if (!navKeys.has(event.key)) {
4525
- return;
4526
- }
4527
-
4528
- // Custom elements (auro-button) don't get the native Enter→click
4529
- // behavior that <button> has. Find the button in the composed path
4530
- // and click it directly — but only when no menu option is
4531
- // highlighted. In fullscreen mode focus stays on the close button
4532
- // while arrow keys move the active-descendant highlight through
4533
- // the listbox. If the user presses Enter with an option
4534
- // highlighted, the intent is to select that option, not to click
4535
- // the close button. In that case we fall through and bridge the
4536
- // Enter key to the parent component's keyboard strategy.
4537
- if (event.key === 'Enter') {
4538
- if (!this.hasActiveDescendant) {
4539
- const buttonSelector = 'button, [role="button"], auro-button, [auro-button]';
4540
- const btn = event.composedPath().find((el) => el.matches && el.matches(buttonSelector));
4541
- if (btn) {
4542
- event.preventDefault();
4543
- event.stopPropagation();
4544
- btn.click();
4545
- return;
4546
- }
4547
- }
4548
- }
4549
-
4550
- // Allow native Tab when the bib contains focusable content
4551
- // (e.g. counter buttons) that needs normal Tab navigation.
4552
- if (event.key === 'Tab' && this.nativeFocusableContent) {
4553
- return;
4554
- }
4555
-
4556
- event.preventDefault();
4557
- event.stopPropagation();
4558
- const newEvent = new KeyboardEvent('keydown', {
4559
- key: event.key,
4560
- code: event.code,
4561
- shiftKey: event.shiftKey,
4562
- altKey: event.altKey,
4563
- ctrlKey: event.ctrlKey,
4564
- metaKey: event.metaKey,
4565
- bubbles: true,
4566
- composed: true,
4567
- cancelable: true
4568
- });
4569
- this.dispatchEvent(newEvent);
4570
- });
4571
- }
4572
4535
 
4573
4536
  /**
4574
4537
  * Blocks touch-driven page scroll while a fullscreen modal dialog is open.
@@ -4943,7 +4906,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
4943
4906
  }
4944
4907
  };
4945
4908
 
4946
- var formkitVersion$1 = '202603271519';
4909
+ var formkitVersion$1 = '202604012043';
4947
4910
 
4948
4911
  class AuroElement extends LitElement {
4949
4912
  static get properties() {
@@ -5124,7 +5087,6 @@ class AuroDropdown extends AuroElement {
5124
5087
  this.appearance = 'default';
5125
5088
  this.chevron = false;
5126
5089
  this.disabled = false;
5127
- this.disableFocusTrap = false;
5128
5090
  this.error = false;
5129
5091
  this.tabIndex = 0;
5130
5092
  this.noToggle = false;
@@ -5222,9 +5184,8 @@ class AuroDropdown extends AuroElement {
5222
5184
  // showModal() fires asynchronously via Lit's update cycle, which
5223
5185
  // falls outside the user activation window and causes iOS to
5224
5186
  // dismiss the keyboard.
5225
- if (this.isBibFullscreen && this.bibElement && this.bibElement.value) {
5226
- const useModal = !this.disableFocusTrap;
5227
- this.bibElement.value.open(useModal);
5187
+ if (this.bibElement && this.bibElement.value) {
5188
+ this.bibElement.value.open(this.isBibFullscreen);
5228
5189
  }
5229
5190
  }
5230
5191
 
@@ -5337,14 +5298,6 @@ class AuroDropdown extends AuroElement {
5337
5298
  reflect: true
5338
5299
  },
5339
5300
 
5340
- /**
5341
- * If declared, the focus trap inside of bib will be turned off.
5342
- */
5343
- disableFocusTrap: {
5344
- type: Boolean,
5345
- reflect: true
5346
- },
5347
-
5348
5301
  /**
5349
5302
  * @private
5350
5303
  */
@@ -5618,7 +5571,7 @@ class AuroDropdown extends AuroElement {
5618
5571
  if (this.isPopoverVisible) {
5619
5572
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
5620
5573
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
5621
- const useModal = this.isBibFullscreen && !this.disableFocusTrap;
5574
+ const useModal = this.isBibFullscreen;
5622
5575
  this.bibElement.value.open(useModal);
5623
5576
  } else {
5624
5577
  this.bibElement.value.close();
@@ -5628,7 +5581,7 @@ class AuroDropdown extends AuroElement {
5628
5581
  // When fullscreen strategy changes while open, re-open dialog with correct mode
5629
5582
  // (e.g. resizing from desktop → mobile while dropdown is open)
5630
5583
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
5631
- const useModal = this.isBibFullscreen && !this.disableFocusTrap;
5584
+ const useModal = this.isBibFullscreen;
5632
5585
  this.bibElement.value.close();
5633
5586
  this.bibElement.value.open(useModal);
5634
5587
  }
@@ -5740,7 +5693,7 @@ class AuroDropdown extends AuroElement {
5740
5693
  * @private
5741
5694
  */
5742
5695
  updateFocusTrap() {
5743
- if (this.isPopoverVisible && !this.disableFocusTrap) {
5696
+ if (this.isPopoverVisible) {
5744
5697
  if (!this.isBibFullscreen) {
5745
5698
  // Desktop: show() doesn't trap focus, so use FocusTrap
5746
5699
  this.focusTrap = new FocusTrap(this.bibContent);
@@ -6696,7 +6649,7 @@ class AuroHelpText extends LitElement {
6696
6649
  }
6697
6650
  }
6698
6651
 
6699
- var formkitVersion = '202603271519';
6652
+ var formkitVersion = '202604012043';
6700
6653
 
6701
6654
  var styleCss = css`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
6702
6655
 
@@ -7218,7 +7171,7 @@ class AuroSelect extends AuroElement$1 {
7218
7171
 
7219
7172
  // Prevent dropdown from closing on focus loss since menu content is slotted
7220
7173
  // from select's light DOM and won't be detected by dropdown's contains() check.
7221
- // Select handles Tab key closing explicitly, ESC via dialog cancel, and
7174
+ // Select handles Tab key closing explicitly, `Escape` key via dialog cancel, and
7222
7175
  // click outside works correctly via composedPath().
7223
7176
  this.dropdown.noHideOnThisFocusLoss = true;
7224
7177
 
@@ -7231,7 +7184,9 @@ class AuroSelect extends AuroElement$1 {
7231
7184
  this.dropdown.setActiveDescendant(null);
7232
7185
  this.optionActive = null;
7233
7186
 
7234
- restoreTriggerAfterClose(this.dropdown, this.dropdown.trigger);
7187
+ if (this.dropdown.isBibFullscreen) {
7188
+ restoreTriggerAfterClose(this.dropdown, this.dropdown.trigger);
7189
+ }
7235
7190
  }
7236
7191
 
7237
7192
  if (this.dropdown.isPopoverVisible) {
@@ -7505,7 +7460,7 @@ class AuroSelect extends AuroElement$1 {
7505
7460
  configureSelect() {
7506
7461
  this.nativeSelect = this.shadowRoot.querySelector('select');
7507
7462
 
7508
- applyKeyboardStrategy(this, selectKeyboardStrategy);
7463
+ applyKeyboardStrategy$1(this, selectKeyboardStrategy);
7509
7464
 
7510
7465
  this.addEventListener('focusin', this.handleFocusin);
7511
7466