@aurodesignsystem-dev/auro-formkit 0.0.0-pr1346.3 → 0.0.0-pr1346.4

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 (40) 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/dist/index.js +1 -1
  4. package/components/checkbox/dist/registered.js +1 -1
  5. package/components/combobox/demo/api.min.js +224 -45
  6. package/components/combobox/demo/index.min.js +224 -45
  7. package/components/combobox/dist/auro-combobox.d.ts +2 -1
  8. package/components/combobox/dist/index.js +217 -42
  9. package/components/combobox/dist/registered.js +217 -42
  10. package/components/counter/demo/api.min.js +123 -11
  11. package/components/counter/demo/index.min.js +123 -11
  12. package/components/counter/dist/index.js +123 -11
  13. package/components/counter/dist/registered.js +123 -11
  14. package/components/datepicker/demo/api.min.js +133 -20
  15. package/components/datepicker/demo/index.min.js +133 -20
  16. package/components/datepicker/dist/index.js +133 -20
  17. package/components/datepicker/dist/registered.js +133 -20
  18. package/components/dropdown/demo/api.min.js +122 -10
  19. package/components/dropdown/demo/index.min.js +122 -10
  20. package/components/dropdown/dist/auro-dropdownBib.d.ts +18 -2
  21. package/components/dropdown/dist/index.js +122 -10
  22. package/components/dropdown/dist/registered.js +122 -10
  23. package/components/input/demo/api.min.js +10 -9
  24. package/components/input/demo/index.min.js +10 -9
  25. package/components/input/dist/index.js +10 -9
  26. package/components/input/dist/registered.js +10 -9
  27. package/components/menu/demo/api.min.js +7 -3
  28. package/components/menu/demo/index.min.js +7 -3
  29. package/components/menu/dist/index.js +7 -3
  30. package/components/menu/dist/registered.js +7 -3
  31. package/components/radio/demo/api.min.js +1 -1
  32. package/components/radio/demo/index.min.js +1 -1
  33. package/components/radio/dist/index.js +1 -1
  34. package/components/radio/dist/registered.js +1 -1
  35. package/components/select/demo/api.min.js +159 -17
  36. package/components/select/demo/index.min.js +159 -17
  37. package/components/select/dist/index.js +152 -14
  38. package/components/select/dist/registered.js +152 -14
  39. package/custom-elements.json +35 -10
  40. package/package.json +1 -1
@@ -5197,6 +5197,15 @@ class BaseInput extends AuroElement {
5197
5197
  constructor() {
5198
5198
  super();
5199
5199
 
5200
+ // Delegate focus to the native <input> inside the shadow root so that
5201
+ // showModal()'s dialog focusing steps reach the input element.
5202
+ // This keeps the mobile virtual keyboard open when the fullscreen dialog
5203
+ // opens, because the browser sees an input-to-input focus transfer.
5204
+ this.constructor.shadowRootOptions = {
5205
+ ...AuroElement.shadowRootOptions,
5206
+ delegatesFocus: true,
5207
+ };
5208
+
5200
5209
  this._initializeDefaults();
5201
5210
  }
5202
5211
 
@@ -5318,14 +5327,6 @@ class BaseInput extends AuroElement {
5318
5327
  reflect: true
5319
5328
  },
5320
5329
 
5321
- /**
5322
- * The value for the aria-controls attribute.
5323
- */
5324
- a11yControls: {
5325
- type: String,
5326
- reflect: true
5327
- },
5328
-
5329
5330
  /**
5330
5331
  * The value for the aria-activedescendant attribute.
5331
5332
  * Points to the ID of the currently active/highlighted option in a listbox.
@@ -6745,7 +6746,7 @@ class AuroHelpText extends i$3 {
6745
6746
  }
6746
6747
  }
6747
6748
 
6748
- var formkitVersion = '202602232116';
6749
+ var formkitVersion = '202602260152';
6749
6750
 
6750
6751
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6751
6752
  // See LICENSE in the project root for license information.
@@ -5122,6 +5122,15 @@ class BaseInput extends AuroElement {
5122
5122
  constructor() {
5123
5123
  super();
5124
5124
 
5125
+ // Delegate focus to the native <input> inside the shadow root so that
5126
+ // showModal()'s dialog focusing steps reach the input element.
5127
+ // This keeps the mobile virtual keyboard open when the fullscreen dialog
5128
+ // opens, because the browser sees an input-to-input focus transfer.
5129
+ this.constructor.shadowRootOptions = {
5130
+ ...AuroElement.shadowRootOptions,
5131
+ delegatesFocus: true,
5132
+ };
5133
+
5125
5134
  this._initializeDefaults();
5126
5135
  }
5127
5136
 
@@ -5243,14 +5252,6 @@ class BaseInput extends AuroElement {
5243
5252
  reflect: true
5244
5253
  },
5245
5254
 
5246
- /**
5247
- * The value for the aria-controls attribute.
5248
- */
5249
- a11yControls: {
5250
- type: String,
5251
- reflect: true
5252
- },
5253
-
5254
5255
  /**
5255
5256
  * The value for the aria-activedescendant attribute.
5256
5257
  * Points to the ID of the currently active/highlighted option in a listbox.
@@ -6670,7 +6671,7 @@ class AuroHelpText extends i$3 {
6670
6671
  }
6671
6672
  }
6672
6673
 
6673
- var formkitVersion = '202602232116';
6674
+ var formkitVersion = '202602260152';
6674
6675
 
6675
6676
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6676
6677
  // See LICENSE in the project root for license information.
@@ -5063,6 +5063,15 @@ class BaseInput extends AuroElement {
5063
5063
  constructor() {
5064
5064
  super();
5065
5065
 
5066
+ // Delegate focus to the native <input> inside the shadow root so that
5067
+ // showModal()'s dialog focusing steps reach the input element.
5068
+ // This keeps the mobile virtual keyboard open when the fullscreen dialog
5069
+ // opens, because the browser sees an input-to-input focus transfer.
5070
+ this.constructor.shadowRootOptions = {
5071
+ ...AuroElement.shadowRootOptions,
5072
+ delegatesFocus: true,
5073
+ };
5074
+
5066
5075
  this._initializeDefaults();
5067
5076
  }
5068
5077
 
@@ -5184,14 +5193,6 @@ class BaseInput extends AuroElement {
5184
5193
  reflect: true
5185
5194
  },
5186
5195
 
5187
- /**
5188
- * The value for the aria-controls attribute.
5189
- */
5190
- a11yControls: {
5191
- type: String,
5192
- reflect: true
5193
- },
5194
-
5195
5196
  /**
5196
5197
  * The value for the aria-activedescendant attribute.
5197
5198
  * Points to the ID of the currently active/highlighted option in a listbox.
@@ -6611,7 +6612,7 @@ class AuroHelpText extends LitElement {
6611
6612
  }
6612
6613
  }
6613
6614
 
6614
- var formkitVersion = '202602232116';
6615
+ var formkitVersion = '202602260152';
6615
6616
 
6616
6617
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6617
6618
  // See LICENSE in the project root for license information.
@@ -5063,6 +5063,15 @@ class BaseInput extends AuroElement {
5063
5063
  constructor() {
5064
5064
  super();
5065
5065
 
5066
+ // Delegate focus to the native <input> inside the shadow root so that
5067
+ // showModal()'s dialog focusing steps reach the input element.
5068
+ // This keeps the mobile virtual keyboard open when the fullscreen dialog
5069
+ // opens, because the browser sees an input-to-input focus transfer.
5070
+ this.constructor.shadowRootOptions = {
5071
+ ...AuroElement.shadowRootOptions,
5072
+ delegatesFocus: true,
5073
+ };
5074
+
5066
5075
  this._initializeDefaults();
5067
5076
  }
5068
5077
 
@@ -5184,14 +5193,6 @@ class BaseInput extends AuroElement {
5184
5193
  reflect: true
5185
5194
  },
5186
5195
 
5187
- /**
5188
- * The value for the aria-controls attribute.
5189
- */
5190
- a11yControls: {
5191
- type: String,
5192
- reflect: true
5193
- },
5194
-
5195
5196
  /**
5196
5197
  * The value for the aria-activedescendant attribute.
5197
5198
  * Points to the ID of the currently active/highlighted option in a listbox.
@@ -6611,7 +6612,7 @@ class AuroHelpText extends LitElement {
6611
6612
  }
6612
6613
  }
6613
6614
 
6614
- var formkitVersion = '202602232116';
6615
+ var formkitVersion = '202602260152';
6615
6616
 
6616
6617
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6617
6618
  // See LICENSE in the project root for license information.
@@ -660,7 +660,11 @@ class AuroMenuOption extends AuroElement {
660
660
 
661
661
  // Generate unique ID if not already set (required for aria-activedescendant)
662
662
  if (!this.id) {
663
- this.id = `menuoption-${Math.random().toString(36).slice(2, 8)}`;
663
+ const idBase = 36;
664
+ const sliceStart = 2;
665
+ const sliceEnd = 8;
666
+ this.id = `menuoption-${Math.random().toString(idBase).
667
+ slice(sliceStart, sliceEnd)}`;
664
668
  }
665
669
 
666
670
  this.setAttribute('role', 'option');
@@ -1567,7 +1571,7 @@ class MenuService {
1567
1571
 
1568
1572
  const MenuContext = n$1('menu-context');
1569
1573
 
1570
- /* eslint-disable no-underscore-dangle, curly */
1574
+ /* eslint-disable no-underscore-dangle */
1571
1575
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1572
1576
  // See LICENSE in the project root for license information.
1573
1577
 
@@ -1588,7 +1592,7 @@ const MenuContext = n$1('menu-context');
1588
1592
  * @slot - Slot for insertion of menu options.
1589
1593
  */
1590
1594
 
1591
- /* eslint-disable no-magic-numbers, max-lines, no-extra-parens */
1595
+ /* eslint-disable max-lines */
1592
1596
 
1593
1597
  class AuroMenu extends AuroElement {
1594
1598
 
@@ -568,7 +568,11 @@ class AuroMenuOption extends AuroElement {
568
568
 
569
569
  // Generate unique ID if not already set (required for aria-activedescendant)
570
570
  if (!this.id) {
571
- this.id = `menuoption-${Math.random().toString(36).slice(2, 8)}`;
571
+ const idBase = 36;
572
+ const sliceStart = 2;
573
+ const sliceEnd = 8;
574
+ this.id = `menuoption-${Math.random().toString(idBase).
575
+ slice(sliceStart, sliceEnd)}`;
572
576
  }
573
577
 
574
578
  this.setAttribute('role', 'option');
@@ -1475,7 +1479,7 @@ class MenuService {
1475
1479
 
1476
1480
  const MenuContext = n$1('menu-context');
1477
1481
 
1478
- /* eslint-disable no-underscore-dangle, curly */
1482
+ /* eslint-disable no-underscore-dangle */
1479
1483
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1480
1484
  // See LICENSE in the project root for license information.
1481
1485
 
@@ -1496,7 +1500,7 @@ const MenuContext = n$1('menu-context');
1496
1500
  * @slot - Slot for insertion of menu options.
1497
1501
  */
1498
1502
 
1499
- /* eslint-disable no-magic-numbers, max-lines, no-extra-parens */
1503
+ /* eslint-disable max-lines */
1500
1504
 
1501
1505
  class AuroMenu extends AuroElement {
1502
1506
 
@@ -542,7 +542,11 @@ class AuroMenuOption extends AuroElement {
542
542
 
543
543
  // Generate unique ID if not already set (required for aria-activedescendant)
544
544
  if (!this.id) {
545
- this.id = `menuoption-${Math.random().toString(36).slice(2, 8)}`;
545
+ const idBase = 36;
546
+ const sliceStart = 2;
547
+ const sliceEnd = 8;
548
+ this.id = `menuoption-${Math.random().toString(idBase).
549
+ slice(sliceStart, sliceEnd)}`;
546
550
  }
547
551
 
548
552
  this.setAttribute('role', 'option');
@@ -1449,7 +1453,7 @@ class MenuService {
1449
1453
 
1450
1454
  const MenuContext = createContext('menu-context');
1451
1455
 
1452
- /* eslint-disable no-underscore-dangle, curly */
1456
+ /* eslint-disable no-underscore-dangle */
1453
1457
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1454
1458
  // See LICENSE in the project root for license information.
1455
1459
 
@@ -1470,7 +1474,7 @@ const MenuContext = createContext('menu-context');
1470
1474
  * @slot - Slot for insertion of menu options.
1471
1475
  */
1472
1476
 
1473
- /* eslint-disable no-magic-numbers, max-lines, no-extra-parens */
1477
+ /* eslint-disable max-lines */
1474
1478
 
1475
1479
  class AuroMenu extends AuroElement {
1476
1480
 
@@ -489,7 +489,11 @@ class AuroMenuOption extends AuroElement {
489
489
 
490
490
  // Generate unique ID if not already set (required for aria-activedescendant)
491
491
  if (!this.id) {
492
- this.id = `menuoption-${Math.random().toString(36).slice(2, 8)}`;
492
+ const idBase = 36;
493
+ const sliceStart = 2;
494
+ const sliceEnd = 8;
495
+ this.id = `menuoption-${Math.random().toString(idBase).
496
+ slice(sliceStart, sliceEnd)}`;
493
497
  }
494
498
 
495
499
  this.setAttribute('role', 'option');
@@ -1396,7 +1400,7 @@ class MenuService {
1396
1400
 
1397
1401
  const MenuContext = createContext('menu-context');
1398
1402
 
1399
- /* eslint-disable no-underscore-dangle, curly */
1403
+ /* eslint-disable no-underscore-dangle */
1400
1404
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
1401
1405
  // See LICENSE in the project root for license information.
1402
1406
 
@@ -1417,7 +1421,7 @@ const MenuContext = createContext('menu-context');
1417
1421
  * @slot - Slot for insertion of menu options.
1418
1422
  */
1419
1423
 
1420
- /* eslint-disable no-magic-numbers, max-lines, no-extra-parens */
1424
+ /* eslint-disable max-lines */
1421
1425
 
1422
1426
  class AuroMenu extends AuroElement {
1423
1427
 
@@ -1645,7 +1645,7 @@ class AuroHelpText extends i$2 {
1645
1645
  }
1646
1646
  }
1647
1647
 
1648
- var formkitVersion = '202602232116';
1648
+ var formkitVersion = '202602260152';
1649
1649
 
1650
1650
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1651
1651
  // See LICENSE in the project root for license information.
@@ -1620,7 +1620,7 @@ class AuroHelpText extends i$2 {
1620
1620
  }
1621
1621
  }
1622
1622
 
1623
- var formkitVersion = '202602232116';
1623
+ var formkitVersion = '202602260152';
1624
1624
 
1625
1625
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1626
1626
  // See LICENSE in the project root for license information.
@@ -1573,7 +1573,7 @@ class AuroHelpText extends LitElement {
1573
1573
  }
1574
1574
  }
1575
1575
 
1576
- var formkitVersion = '202602232116';
1576
+ var formkitVersion = '202602260152';
1577
1577
 
1578
1578
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1579
1579
  // See LICENSE in the project root for license information.
@@ -1573,7 +1573,7 @@ class AuroHelpText extends LitElement {
1573
1573
  }
1574
1574
  }
1575
1575
 
1576
- var formkitVersion = '202602232116';
1576
+ var formkitVersion = '202602260152';
1577
1577
 
1578
1578
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
1579
1579
  // See LICENSE in the project root for license information.
@@ -4042,7 +4042,7 @@ let p$3 = class p{registerComponent(t,a){customElements.get(t)||customElements.d
4042
4042
 
4043
4043
  var iconVersion$2 = '9.1.2';
4044
4044
 
4045
- var styleCss$2$1 = i$6`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host dialog{max-width:none;max-height:none;padding:0;border:none;margin:0;outline:none;transform:translateZ(0)}:host dialog::backdrop{background:transparent}:host(:not([isfullscreen])) dialog{position:absolute;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([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}`;
4045
+ var styleCss$2$1 = i$6`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host dialog{max-width:none;max-height:none;padding:0;border:none;margin:0;outline:none;transform:translateZ(0)}:host dialog::backdrop{background:transparent}:host(:not([isfullscreen])) dialog{position:absolute;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([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}`;
4046
4046
 
4047
4047
  var colorCss$2$1 = i$6`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
4048
4048
 
@@ -4050,6 +4050,8 @@ var tokensCss$1$1 = i$6`:host(:not([ondark])),:host(:not([appearance=inverse])){
4050
4050
 
4051
4051
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
4052
4052
  // See LICENSE in the project root for license information.
4053
+ /* eslint-disable max-lines */
4054
+ // ---------------------------------------------------------------------
4053
4055
 
4054
4056
 
4055
4057
  const DESIGN_TOKEN_BREAKPOINT_PREFIX = '--ds-grid-breakpoint-';
@@ -4225,22 +4227,63 @@ class AuroDropdownBib extends i$3 {
4225
4227
  // Handle ESC key via dialog's cancel event
4226
4228
  const dialog = this.shadowRoot.querySelector('dialog');
4227
4229
  dialog.addEventListener('cancel', (event) => {
4228
- event.preventDefault(); // Let parent handle closing
4230
+ // Let parent handle closing
4231
+ event.preventDefault();
4229
4232
  this.dispatchEvent(new CustomEvent('auro-bib-cancel', {
4230
4233
  bubbles: true,
4231
4234
  composed: true
4232
4235
  }));
4233
4236
  });
4234
4237
 
4235
- // Re-dispatch navigation keyboard events so they cross the shadow DOM
4236
- // boundary and reach the combobox/select key handlers.
4237
- // Only intercept keys used for menu navigation let all other keys
4238
- // (characters, Backspace, etc.) through so typing in inputs works.
4239
- const navKeys = new Set(['ArrowUp', 'ArrowDown', 'Enter', 'Escape']);
4238
+ // showModal() creates a closed focus scope keyboard events inside
4239
+ // the dialog's shadow DOM do NOT bubble out to the combobox/select
4240
+ // keydown handlers in the parent shadow DOM. This handler bridges
4241
+ // that gap by re-dispatching navigation keys so they cross the
4242
+ // shadow boundary and reach the menu navigation logic in the parent
4243
+ // component.
4244
+ //
4245
+ // The trade-off: intercepting these keys means native keyboard
4246
+ // behaviors that would normally "just work" must be manually
4247
+ // re-implemented here:
4248
+ //
4249
+ // - Enter on buttons: Custom elements (auro-button) don't get the
4250
+ // native Enter→click that <button> provides, so we call .click()
4251
+ // directly when Enter is pressed on a button-like element.
4252
+ //
4253
+ // - Tab: NOT intercepted — left to the browser's native focus trap
4254
+ // provided by showModal(), which cycles Tab between focusable
4255
+ // elements inside the dialog (e.g. the input and close button).
4256
+ // Intercepting Tab would kill the native focus trap and break
4257
+ // focus management inside the dialog.
4258
+ //
4259
+ // - Escape: The native <dialog> fires a `cancel` event on ESC
4260
+ // (handled above), so the re-dispatched Escape is a secondary
4261
+ // path for parent components that also listen for Escape keydown.
4262
+ const navKeys = new Set([
4263
+ 'ArrowUp',
4264
+ 'ArrowDown',
4265
+ 'Enter',
4266
+ 'Escape'
4267
+ ]);
4240
4268
  dialog.addEventListener('keydown', (event) => {
4241
4269
  if (!navKeys.has(event.key)) {
4242
4270
  return;
4243
4271
  }
4272
+
4273
+ // Custom elements (auro-button) don't get the native Enter→click
4274
+ // behavior that <button> has. Find the button in the composed path
4275
+ // and click it directly.
4276
+ if (event.key === 'Enter') {
4277
+ const buttonSelector = 'button, [role="button"], auro-button, [auro-button]';
4278
+ const btn = event.composedPath().find((el) => el.matches && el.matches(buttonSelector));
4279
+ if (btn) {
4280
+ event.preventDefault();
4281
+ event.stopPropagation();
4282
+ btn.click();
4283
+ return;
4284
+ }
4285
+ }
4286
+
4244
4287
  event.preventDefault();
4245
4288
  event.stopPropagation();
4246
4289
  const newEvent = new KeyboardEvent('keydown', {
@@ -4264,9 +4307,55 @@ class AuroDropdownBib extends i$3 {
4264
4307
  }
4265
4308
 
4266
4309
  /**
4267
- * Opens the dialog using showModal() for accessibility.
4268
- * @param {boolean} modal - If true, uses showModal() (default). If false, uses show().
4310
+ * Blocks touch-driven page scroll while a fullscreen modal dialog is open.
4311
+ *
4312
+ * The showModal() function places the dialog in the browser's **top layer**,
4313
+ * which is a separate rendering layer above the normal DOM. On mobile, the
4314
+ * compositor processes visual-viewport panning before top-layer touch
4315
+ * handling. This means the entire viewport — including the top-layer dialog
4316
+ * — can be panned by a touch gesture, causing the page behind the dialog to
4317
+ * scroll into view. To prevent this, we add a touchmove listener that cancels
4318
+ * the event if the touch started outside the dialog or any scrollable child within it.
4319
+ *
4320
+ * @private
4269
4321
  */
4322
+ _lockTouchScroll() {
4323
+ const dialog = this.shadowRoot.querySelector('dialog');
4324
+
4325
+ this._touchMoveHandler = (event) => {
4326
+ // Walk the composed path (which crosses shadow DOM boundaries) to
4327
+ // check whether the touch started inside a scrollable element that
4328
+ // lives within the dialog. If so, allow the scroll.
4329
+ for (const el of event.composedPath()) {
4330
+ if (el === dialog) {
4331
+ // Reached the dialog boundary without finding a scrollable child.
4332
+ break;
4333
+ }
4334
+ if (el instanceof HTMLElement && el.scrollHeight > el.clientHeight) {
4335
+ const { overflowY } = getComputedStyle(el);
4336
+ if (overflowY === 'auto' || overflowY === 'scroll') {
4337
+ return;
4338
+ }
4339
+ }
4340
+ }
4341
+
4342
+ event.preventDefault();
4343
+ };
4344
+
4345
+ document.addEventListener('touchmove', this._touchMoveHandler, { passive: false });
4346
+ }
4347
+
4348
+ /**
4349
+ * Removes the touchmove listener added by _lockTouchScroll().
4350
+ * @private
4351
+ */
4352
+ _unlockTouchScroll() {
4353
+ if (this._touchMoveHandler) {
4354
+ document.removeEventListener('touchmove', this._touchMoveHandler);
4355
+ this._touchMoveHandler = undefined;
4356
+ }
4357
+ }
4358
+
4270
4359
  open(modal = true) {
4271
4360
  const dialog = this.shadowRoot.querySelector('dialog');
4272
4361
  if (dialog && !dialog.open) {
@@ -4283,6 +4372,8 @@ class AuroDropdownBib extends i$3 {
4283
4372
 
4284
4373
  documentElement.style.overflow = prevOverflow;
4285
4374
 
4375
+ this._lockTouchScroll();
4376
+
4286
4377
  } else {
4287
4378
  // Use setAttribute instead of dialog.show() to avoid the dialog
4288
4379
  // focusing steps which steal focus from the trigger and cause
@@ -4298,6 +4389,7 @@ class AuroDropdownBib extends i$3 {
4298
4389
  close() {
4299
4390
  const dialog = this.shadowRoot.querySelector('dialog');
4300
4391
  if (dialog && dialog.open) {
4392
+ this._unlockTouchScroll();
4301
4393
  dialog.close();
4302
4394
  }
4303
4395
  }
@@ -4563,7 +4655,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$3 {
4563
4655
  }
4564
4656
  };
4565
4657
 
4566
- var formkitVersion$1 = '202602232116';
4658
+ var formkitVersion$1 = '202602260152';
4567
4659
 
4568
4660
  class AuroElement extends i$3 {
4569
4661
  static get properties() {
@@ -4836,6 +4928,18 @@ class AuroDropdown extends AuroElement {
4836
4928
  */
4837
4929
  show() {
4838
4930
  this.floater.showBib();
4931
+
4932
+ // Open dialog synchronously so callers remain in the user gesture
4933
+ // chain. This is critical for mobile browsers (iOS Safari) to keep
4934
+ // the virtual keyboard open when transitioning from the trigger
4935
+ // input to an input inside the fullscreen dialog. Without this,
4936
+ // showModal() fires asynchronously via Lit's update cycle, which
4937
+ // falls outside the user activation window and causes iOS to
4938
+ // dismiss the keyboard.
4939
+ if (this.isBibFullscreen && this.bibElement && this.bibElement.value) {
4940
+ const useModal = !this.disableFocusTrap;
4941
+ this.bibElement.value.open(useModal);
4942
+ }
4839
4943
  }
4840
4944
 
4841
4945
  /**
@@ -5222,6 +5326,14 @@ class AuroDropdown extends AuroElement {
5222
5326
  this.bibElement.value.close();
5223
5327
  }
5224
5328
  }
5329
+
5330
+ // When fullscreen strategy changes while open, re-open dialog with correct mode
5331
+ // (e.g. resizing from desktop → mobile while dropdown is open)
5332
+ if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
5333
+ const useModal = this.isBibFullscreen && !this.disableFocusTrap;
5334
+ this.bibElement.value.close();
5335
+ this.bibElement.value.open(useModal);
5336
+ }
5225
5337
  }
5226
5338
 
5227
5339
  /**
@@ -6262,7 +6374,7 @@ class AuroHelpText extends i$3 {
6262
6374
  }
6263
6375
  }
6264
6376
 
6265
- var formkitVersion = '202602232116';
6377
+ var formkitVersion = '202602260152';
6266
6378
 
6267
6379
  var styleCss$2 = i$6`.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}`;
6268
6380
 
@@ -6799,6 +6911,18 @@ class AuroSelect extends AuroElement$1 {
6799
6911
 
6800
6912
  // Restore trigger accessibility when closing fullscreen
6801
6913
  this.dropdown.trigger.inert = false;
6914
+
6915
+ // Restore focus to the trigger after closing the fullscreen dialog.
6916
+ // The browser's native dialog focus restoration fails because the
6917
+ // trigger was set to inert before showModal().
6918
+ // Use rAF to run after Lit's microtask update cycle calls dialog.close().
6919
+ if (this.dropdown.isBibFullscreen) {
6920
+ requestAnimationFrame(() => {
6921
+ if (!this.dropdown.isPopoverVisible) {
6922
+ this.dropdown.trigger.focus();
6923
+ }
6924
+ });
6925
+ }
6802
6926
  }
6803
6927
 
6804
6928
  if (this.dropdown.isPopoverVisible) {
@@ -7065,9 +7189,10 @@ class AuroSelect extends AuroElement$1 {
7065
7189
  // Announce the selection after the dropdown closes so it isn't
7066
7190
  // overridden by VoiceOver's "collapsed" announcement from aria-expanded.
7067
7191
  const selectedValue = event.detail.stringValue;
7192
+ const announcementDelay = 300;
7068
7193
  setTimeout(() => {
7069
7194
  this.announceToScreenReader(`${selectedValue}, selected`);
7070
- }, 300);
7195
+ }, announcementDelay);
7071
7196
  });
7072
7197
  }
7073
7198
 
@@ -7113,10 +7238,21 @@ class AuroSelect extends AuroElement$1 {
7113
7238
  }
7114
7239
 
7115
7240
  if (evt.key === 'Tab' && this.dropdown.isPopoverVisible) {
7241
+ // Non-fullscreen (select-only combobox pattern per WAI-ARIA APG):
7242
+ // Tab selects the focused option and closes the popup, moving focus
7243
+ // to the next focusable element on the page.
7244
+ // https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/
7245
+ //
7246
+ // Fullscreen (dialog / modal pattern): Tab navigates between
7247
+ // focusable elements inside the modal (e.g. the close button) via
7248
+ // the native focus trap provided by showModal(). The dropdown is
7249
+ // closed by the close button or Escape instead.
7116
7250
  if (!this.dropdown.isBibFullscreen) {
7251
+ if (this.optionActive && !this.multiSelect) {
7252
+ this.menu.makeSelection();
7253
+ }
7117
7254
  this.dropdown.hide();
7118
7255
  }
7119
- // Fullscreen: let native dialog handle Tab focus trapping
7120
7256
  return;
7121
7257
  }
7122
7258
 
@@ -7329,7 +7465,9 @@ class AuroSelect extends AuroElement$1 {
7329
7465
  this._updateNativeSelect();
7330
7466
  this.validate();
7331
7467
  this.hideBib();
7332
- this.focus();
7468
+ if (this.dropdown && this.dropdown.trigger) {
7469
+ this.dropdown.trigger.focus();
7470
+ }
7333
7471
 
7334
7472
  // LEGACY EVENT
7335
7473
  this.dispatchEvent(new CustomEvent('auroSelect-valueSet', {
@@ -8062,7 +8200,11 @@ class AuroMenuOption extends AuroElement$1 {
8062
8200
 
8063
8201
  // Generate unique ID if not already set (required for aria-activedescendant)
8064
8202
  if (!this.id) {
8065
- this.id = `menuoption-${Math.random().toString(36).slice(2, 8)}`;
8203
+ const idBase = 36;
8204
+ const sliceStart = 2;
8205
+ const sliceEnd = 8;
8206
+ this.id = `menuoption-${Math.random().toString(idBase).
8207
+ slice(sliceStart, sliceEnd)}`;
8066
8208
  }
8067
8209
 
8068
8210
  this.setAttribute('role', 'option');
@@ -8969,7 +9111,7 @@ class MenuService {
8969
9111
 
8970
9112
  const MenuContext = n('menu-context');
8971
9113
 
8972
- /* eslint-disable no-underscore-dangle, curly */
9114
+ /* eslint-disable no-underscore-dangle */
8973
9115
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
8974
9116
  // See LICENSE in the project root for license information.
8975
9117
 
@@ -8990,7 +9132,7 @@ const MenuContext = n('menu-context');
8990
9132
  * @slot - Slot for insertion of menu options.
8991
9133
  */
8992
9134
 
8993
- /* eslint-disable no-magic-numbers, max-lines, no-extra-parens */
9135
+ /* eslint-disable max-lines */
8994
9136
 
8995
9137
  class AuroMenu extends AuroElement$1 {
8996
9138