@aurodesignsystem-dev/auro-formkit 0.0.0-pr1408.14 → 0.0.0-pr1408.16

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 (54) 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 +139 -142
  7. package/components/combobox/demo/index.min.js +139 -142
  8. package/components/combobox/demo/keyboardBehavior.md +1 -2
  9. package/components/combobox/dist/index.js +105 -115
  10. package/components/combobox/dist/registered.js +105 -115
  11. package/components/counter/demo/api.md +1 -1
  12. package/components/counter/demo/api.min.js +202 -146
  13. package/components/counter/demo/index.min.js +202 -146
  14. package/components/counter/dist/auro-counter.d.ts +11 -8
  15. package/components/counter/dist/index.js +202 -146
  16. package/components/counter/dist/keyboardStrategy.d.ts +4 -0
  17. package/components/counter/dist/registered.js +202 -146
  18. package/components/datepicker/demo/api.min.js +107 -118
  19. package/components/datepicker/demo/index.min.js +107 -118
  20. package/components/datepicker/dist/index.js +102 -113
  21. package/components/datepicker/dist/registered.js +102 -113
  22. package/components/dropdown/demo/api.md +29 -29
  23. package/components/dropdown/demo/api.min.js +117 -121
  24. package/components/dropdown/demo/index.min.js +117 -121
  25. package/components/dropdown/dist/auro-dropdown.d.ts +3 -3
  26. package/components/dropdown/dist/auro-dropdownBib.d.ts +1 -40
  27. package/components/dropdown/dist/dropdownBibKeyboardStrategy.d.ts +7 -0
  28. package/components/dropdown/dist/index.js +101 -109
  29. package/components/dropdown/dist/registered.js +101 -109
  30. package/components/form/demo/api.min.js +629 -544
  31. package/components/form/demo/index.min.js +629 -544
  32. package/components/form/demo/keyboardBehavior.md +0 -0
  33. package/components/input/demo/api.min.js +1 -1
  34. package/components/input/demo/index.min.js +1 -1
  35. package/components/input/demo/keyboardBehavior.md +0 -0
  36. package/components/input/dist/index.js +1 -1
  37. package/components/input/dist/registered.js +1 -1
  38. package/components/menu/demo/api.min.js +34 -27
  39. package/components/menu/demo/index.min.js +34 -27
  40. package/components/menu/dist/auro-menu.d.ts +0 -6
  41. package/components/menu/dist/index.js +34 -27
  42. package/components/menu/dist/registered.js +34 -27
  43. package/components/radio/demo/api.min.js +1 -1
  44. package/components/radio/demo/index.min.js +1 -1
  45. package/components/radio/dist/index.js +1 -1
  46. package/components/radio/dist/registered.js +1 -1
  47. package/components/select/demo/api.min.js +214 -164
  48. package/components/select/demo/index.min.js +214 -164
  49. package/components/select/demo/keyboardBehavior.md +3 -3
  50. package/components/select/dist/index.js +180 -137
  51. package/components/select/dist/registered.js +180 -137
  52. package/components/select/dist/selectKeyboardStrategy.d.ts +5 -2
  53. package/custom-elements.json +1518 -1481
  54. package/package.json +8 -6
@@ -1122,7 +1122,7 @@ function restoreTriggerAfterClose(dropdown, focusTarget) {
1122
1122
  * @returns {{isExpanded: boolean, isModal: boolean, isPopover: boolean, activeInput: HTMLElement|null}}
1123
1123
  * isModal and isPopover reflect the display mode (fullscreen vs not) regardless of expanded state.
1124
1124
  */
1125
- function createDisplayContext(component, options = {}) {
1125
+ function createDisplayContext$1(component, options = {}) {
1126
1126
  const dd = options.dropdown || component.dropdown;
1127
1127
  // isPopoverVisible reflects as the `open` attribute.
1128
1128
  // It reports whether the bib is open in any mode (popover or modal).
@@ -1152,11 +1152,11 @@ function createDisplayContext(component, options = {}) {
1152
1152
  * @param {Object} strategy - Map of key names to handler functions.
1153
1153
  * @param {Object} [options] - Optional config passed to createDisplayContext.
1154
1154
  */
1155
- function applyKeyboardStrategy(component, strategy, options = {}) {
1155
+ function applyKeyboardStrategy$1(component, strategy, options = {}) {
1156
1156
  component.addEventListener('keydown', async (evt) => {
1157
1157
  const handler = strategy[evt.key] || strategy.default;
1158
1158
  if (typeof handler === 'function') {
1159
- const ctx = createDisplayContext(component, options);
1159
+ const ctx = createDisplayContext$1(component, options);
1160
1160
  await handler(component, evt, ctx);
1161
1161
  }
1162
1162
  });
@@ -3128,6 +3128,11 @@ class AuroFloatingUI {
3128
3128
  this.clickHandler = null;
3129
3129
  this.keyDownHandler = null;
3130
3130
 
3131
+ /**
3132
+ * @private
3133
+ */
3134
+ this.enableKeyboardHandling = true;
3135
+
3131
3136
  /**
3132
3137
  * @private
3133
3138
  */
@@ -3388,11 +3393,10 @@ class AuroFloatingUI {
3388
3393
  return;
3389
3394
  }
3390
3395
 
3391
- const { activeElement } = document;
3392
3396
  // if focus is still inside of trigger or bib, do not close
3393
3397
  if (
3394
- this.element.contains(activeElement) ||
3395
- this.element.bib?.contains(activeElement)
3398
+ this.element.matches(":focus") ||
3399
+ this.element.matches(":focus-within")
3396
3400
  ) {
3397
3401
  return;
3398
3402
  }
@@ -3463,7 +3467,9 @@ class AuroFloatingUI {
3463
3467
  document.addEventListener("focusin", this.focusHandler);
3464
3468
  }
3465
3469
 
3466
- document.addEventListener("keydown", this.keyDownHandler);
3470
+ if (this.enableKeyboardHandling) {
3471
+ document.addEventListener("keydown", this.keyDownHandler);
3472
+ }
3467
3473
 
3468
3474
  // send this task to the end of queue to prevent conflicting
3469
3475
  // it conflicts if showBib gets call from a button that's not this.element.trigger
@@ -3719,8 +3725,9 @@ class AuroFloatingUI {
3719
3725
  this.element.bib.setAttribute("id", `${this.id}-floater-bib`);
3720
3726
  }
3721
3727
 
3722
- configure(elem, eventPrefix) {
3728
+ configure(elem, eventPrefix, enableKeyboardHandling = true) {
3723
3729
  AuroFloatingUI.setupMousePressChecker();
3730
+ this.enableKeyboardHandling = enableKeyboardHandling;
3724
3731
 
3725
3732
  this.eventPrefix = eventPrefix;
3726
3733
  if (this.element !== elem) {
@@ -3753,7 +3760,9 @@ class AuroFloatingUI {
3753
3760
 
3754
3761
  this.handleEvent = this.handleEvent.bind(this);
3755
3762
  if (this.element.trigger) {
3756
- this.element.trigger.addEventListener("keydown", this.handleEvent);
3763
+ if (this.enableKeyboardHandling) {
3764
+ this.element.trigger.addEventListener("keydown", this.handleEvent);
3765
+ }
3757
3766
  this.element.trigger.addEventListener("click", this.handleEvent);
3758
3767
  this.element.trigger.addEventListener("mouseenter", this.handleEvent);
3759
3768
  this.element.trigger.addEventListener("mouseleave", this.handleEvent);
@@ -4231,12 +4240,83 @@ let p$3 = class p{registerComponent(t,a){customElements.get(t)||customElements.d
4231
4240
 
4232
4241
  var iconVersion$2 = '9.1.2';
4233
4242
 
4243
+ /**
4244
+ * Computes display state once per keydown event.
4245
+ * Centralizes null-safety checks and makes the shared/modal/popover branching explicit.
4246
+ *
4247
+ * @param {HTMLElement} component - The component with a dropdown reference.
4248
+ * @param {Object} [options] - Optional config.
4249
+ * @param {HTMLElement} [options.dropdown] - Explicit dropdown reference. Falls back to component.dropdown.
4250
+ * @param {Function} [options.inputResolver] - Called with (component, ctx) to resolve the active input element.
4251
+ * @returns {{isExpanded: boolean, isModal: boolean, isPopover: boolean, activeInput: HTMLElement|null}}
4252
+ * isModal and isPopover reflect the display mode (fullscreen vs not) regardless of expanded state.
4253
+ */
4254
+ function createDisplayContext(component, options = {}) {
4255
+ const dd = options.dropdown || component.dropdown;
4256
+ // isPopoverVisible reflects as the `open` attribute.
4257
+ // It reports whether the bib is open in any mode (popover or modal).
4258
+ const isExpanded = Boolean(dd && dd.isPopoverVisible);
4259
+ const isFullscreen = Boolean(dd && dd.isBibFullscreen);
4260
+
4261
+ const ctx = {
4262
+ isExpanded,
4263
+ isModal: isFullscreen,
4264
+ isPopover: !isFullscreen,
4265
+ activeInput: null,
4266
+ };
4267
+
4268
+ if (options.inputResolver) {
4269
+ const resolvedInput = options.inputResolver(component, ctx);
4270
+ // Guard against resolvers returning undefined or non-HTMLElement values.
4271
+ ctx.activeInput = resolvedInput instanceof HTMLElement ? resolvedInput : null;
4272
+ }
4273
+
4274
+ return ctx;
4275
+ }
4276
+
4277
+ /**
4278
+ * Wires up a keydown listener that dispatches to strategy[evt.key] or strategy.default.
4279
+ * Handles both sync and async handlers.
4280
+ * @param {HTMLElement} component - The component to attach the listener to.
4281
+ * @param {Object} strategy - Map of key names to handler functions.
4282
+ * @param {Object} [options] - Optional config passed to createDisplayContext.
4283
+ */
4284
+ function applyKeyboardStrategy(component, strategy, options = {}) {
4285
+ component.addEventListener('keydown', async (evt) => {
4286
+ const handler = strategy[evt.key] || strategy.default;
4287
+ if (typeof handler === 'function') {
4288
+ const ctx = createDisplayContext(component, options);
4289
+ await handler(component, evt, ctx);
4290
+ }
4291
+ });
4292
+ }
4293
+
4234
4294
  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
4295
 
4236
4296
  var colorCss$2$1 = 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
4297
 
4238
4298
  var tokensCss$1$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
4299
 
4300
+ /**
4301
+ * Creates a keyboard strategy for dialog-specific key handling.
4302
+ * All other keydown behavior is left to the browser's native bubbling path.
4303
+ * @param {HTMLElement} bib - The dropdown bib element.
4304
+ * @returns {Object} Keyboard handlers keyed by `event.key`.
4305
+ */
4306
+ // eslint-disable-next-line no-unused-vars
4307
+ function createDropdownBibKeyboardStrategy(bib) {
4308
+ return {
4309
+ // eslint-disable-next-line no-unused-vars
4310
+ Enter(_dialog, event) {
4311
+ // Floating UI handles Enter key to open the dropdown
4312
+ },
4313
+ // eslint-disable-next-line no-unused-vars
4314
+ Escape(_dialog, event) {
4315
+ // Floating UI handles Escape key to close the dropdown
4316
+ }
4317
+ };
4318
+ }
4319
+
4240
4320
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
4241
4321
  // See LICENSE in the project root for license information.
4242
4322
  /* eslint-disable max-lines */
@@ -4361,11 +4441,7 @@ class AuroDropdownBib extends LitElement {
4361
4441
  },
4362
4442
 
4363
4443
  /**
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).
4444
+ * Tracks whether a menu option is currently highlighted.
4369
4445
  * @private
4370
4446
  */
4371
4447
  hasActiveDescendant: {
@@ -4439,7 +4515,7 @@ class AuroDropdownBib extends LitElement {
4439
4515
 
4440
4516
  const dialog = this.shadowRoot.querySelector('dialog');
4441
4517
  this._setupCancelHandler(dialog);
4442
- this._setupKeyboardBridge(dialog);
4518
+ applyKeyboardStrategy(dialog, createDropdownBibKeyboardStrategy());
4443
4519
 
4444
4520
  this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
4445
4521
  bubbles: true,
@@ -4466,92 +4542,6 @@ class AuroDropdownBib extends LitElement {
4466
4542
  });
4467
4543
  }
4468
4544
 
4469
- /**
4470
- * showModal() creates a closed focus scope — keyboard events inside
4471
- * the dialog's shadow DOM do NOT bubble out to the combobox/select
4472
- * keydown handlers in the parent shadow DOM. This handler bridges
4473
- * that gap by re-dispatching navigation keys so they cross the
4474
- * shadow boundary and reach the menu navigation logic in the parent
4475
- * component.
4476
- *
4477
- * The trade-off: intercepting these keys means native keyboard
4478
- * behaviors that would normally "just work" must be manually
4479
- * re-implemented here:
4480
- *
4481
- * - Enter on buttons: Custom elements (auro-button) don't get the
4482
- * native Enter→click that <button> provides, so we call .click()
4483
- * directly when Enter is pressed on a button-like element.
4484
- *
4485
- * - Tab: Intercepted and re-dispatched so parent components
4486
- * (select/combobox) can select the active option and close the
4487
- * dialog. The <dialog> provides containment and isolation
4488
- * (inert background, VoiceOver focus trapping, top layer), while
4489
- * the content inside is a role="listbox" navigated via
4490
- * aria-activedescendant (options are not focusable). Tab keyboard
4491
- * behavior follows listbox conventions (select + close) because
4492
- * the dialog's native Tab trap only cycles between the close
4493
- * button and browser chrome.
4494
- *
4495
- * - Escape: The native <dialog> fires a `cancel` event on ESC
4496
- * (handled by _setupCancelHandler), so the re-dispatched Escape
4497
- * is a secondary path for parent components that also listen for
4498
- * Escape keydown.
4499
- *
4500
- * @param {HTMLDialogElement} dialog - The dialog element to attach the keyboard bridge to.
4501
- * @private
4502
- */
4503
- _setupKeyboardBridge(dialog) {
4504
- const navKeys = new Set([
4505
- 'ArrowUp',
4506
- 'ArrowDown',
4507
- 'Enter',
4508
- 'Escape',
4509
- 'Tab'
4510
- ]);
4511
-
4512
- dialog.addEventListener('keydown', (event) => {
4513
- if (!navKeys.has(event.key)) {
4514
- return;
4515
- }
4516
-
4517
- // Custom elements (auro-button) don't get the native Enter→click
4518
- // behavior that <button> has. Find the button in the composed path
4519
- // and click it directly — but only when no menu option is
4520
- // highlighted. In fullscreen mode focus stays on the close button
4521
- // while arrow keys move the active-descendant highlight through
4522
- // the listbox. If the user presses Enter with an option
4523
- // highlighted, the intent is to select that option, not to click
4524
- // the close button. In that case we fall through and bridge the
4525
- // Enter key to the parent component's keyboard strategy.
4526
- if (event.key === 'Enter') {
4527
- if (!this.hasActiveDescendant) {
4528
- const buttonSelector = 'button, [role="button"], auro-button, [auro-button]';
4529
- const btn = event.composedPath().find((el) => el.matches && el.matches(buttonSelector));
4530
- if (btn) {
4531
- event.preventDefault();
4532
- event.stopPropagation();
4533
- btn.click();
4534
- return;
4535
- }
4536
- }
4537
- }
4538
-
4539
- event.preventDefault();
4540
- event.stopPropagation();
4541
- const newEvent = new KeyboardEvent('keydown', {
4542
- key: event.key,
4543
- code: event.code,
4544
- shiftKey: event.shiftKey,
4545
- altKey: event.altKey,
4546
- ctrlKey: event.ctrlKey,
4547
- metaKey: event.metaKey,
4548
- bubbles: true,
4549
- composed: true,
4550
- cancelable: true
4551
- });
4552
- this.dispatchEvent(newEvent);
4553
- });
4554
- }
4555
4545
 
4556
4546
  /**
4557
4547
  * Blocks touch-driven page scroll while a fullscreen modal dialog is open.
@@ -4926,7 +4916,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
4926
4916
  }
4927
4917
  };
4928
4918
 
4929
- var formkitVersion$2 = '202603310525';
4919
+ var formkitVersion$2 = '202604022013';
4930
4920
 
4931
4921
  let AuroElement$2 = class AuroElement extends LitElement {
4932
4922
  static get properties() {
@@ -5107,7 +5097,7 @@ class AuroDropdown extends AuroElement$2 {
5107
5097
  this.appearance = 'default';
5108
5098
  this.chevron = false;
5109
5099
  this.disabled = false;
5110
- this.disableFocusTrap = false;
5100
+ this.disableKeyboardHandling = false;
5111
5101
  this.error = false;
5112
5102
  this.tabIndex = 0;
5113
5103
  this.noToggle = false;
@@ -5205,9 +5195,8 @@ class AuroDropdown extends AuroElement$2 {
5205
5195
  // showModal() fires asynchronously via Lit's update cycle, which
5206
5196
  // falls outside the user activation window and causes iOS to
5207
5197
  // dismiss the keyboard.
5208
- if (this.isBibFullscreen && this.bibElement && this.bibElement.value) {
5209
- const useModal = !this.disableFocusTrap;
5210
- this.bibElement.value.open(useModal);
5198
+ if (this.bibElement && this.bibElement.value) {
5199
+ this.bibElement.value.open(this.isBibFullscreen);
5211
5200
  }
5212
5201
  }
5213
5202
 
@@ -5321,9 +5310,9 @@ class AuroDropdown extends AuroElement$2 {
5321
5310
  },
5322
5311
 
5323
5312
  /**
5324
- * If declared, the focus trap inside of bib will be turned off.
5313
+ * If declared, the dropdown will not handle keyboard events and will require the consumer to manage this behavior.
5325
5314
  */
5326
- disableFocusTrap: {
5315
+ disableKeyboardHandling: {
5327
5316
  type: Boolean,
5328
5317
  reflect: true
5329
5318
  },
@@ -5601,7 +5590,7 @@ class AuroDropdown extends AuroElement$2 {
5601
5590
  if (this.isPopoverVisible) {
5602
5591
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
5603
5592
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
5604
- const useModal = this.isBibFullscreen && !this.disableFocusTrap;
5593
+ const useModal = this.isBibFullscreen;
5605
5594
  this.bibElement.value.open(useModal);
5606
5595
  } else {
5607
5596
  this.bibElement.value.close();
@@ -5611,7 +5600,7 @@ class AuroDropdown extends AuroElement$2 {
5611
5600
  // When fullscreen strategy changes while open, re-open dialog with correct mode
5612
5601
  // (e.g. resizing from desktop → mobile while dropdown is open)
5613
5602
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
5614
- const useModal = this.isBibFullscreen && !this.disableFocusTrap;
5603
+ const useModal = this.isBibFullscreen;
5615
5604
  this.bibElement.value.close();
5616
5605
  this.bibElement.value.open(useModal);
5617
5606
  }
@@ -5633,7 +5622,7 @@ class AuroDropdown extends AuroElement$2 {
5633
5622
 
5634
5623
  firstUpdated() {
5635
5624
  // Configure the floater to, this will generate the ID for the bib
5636
- this.floater.configure(this, 'auroDropdown');
5625
+ this.floater.configure(this, 'auroDropdown', !this.disableKeyboardHandling);
5637
5626
 
5638
5627
  // Prevent `contain: layout` on the dropdown host. Layout containment
5639
5628
  // creates a containing block for position:fixed descendants (the bib),
@@ -5723,7 +5712,7 @@ class AuroDropdown extends AuroElement$2 {
5723
5712
  * @private
5724
5713
  */
5725
5714
  updateFocusTrap() {
5726
- if (this.isPopoverVisible && !this.disableFocusTrap) {
5715
+ if (this.isPopoverVisible) {
5727
5716
  if (!this.isBibFullscreen) {
5728
5717
  // Desktop: show() doesn't trap focus, so use FocusTrap
5729
5718
  this.focusTrap = new FocusTrap(this.bibContent);
@@ -5941,6 +5930,7 @@ class AuroDropdown extends AuroElement$2 {
5941
5930
  aria-expanded="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
5942
5931
  aria-controls="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
5943
5932
  aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
5933
+ aria-disabled="${ifDefined(this.disabled ? 'true' : undefined)}"
5944
5934
  @focusin="${this.handleFocusin}"
5945
5935
  @blur="${this.handleFocusOut}">
5946
5936
  <div class="triggerContentWrapper" id="triggerLabel">
@@ -12683,7 +12673,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
12683
12673
  }
12684
12674
  };
12685
12675
 
12686
- var formkitVersion$1 = '202603310525';
12676
+ var formkitVersion$1 = '202604022013';
12687
12677
 
12688
12678
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12689
12679
  // See LICENSE in the project root for license information.
@@ -13722,7 +13712,7 @@ class AuroBibtemplate extends LitElement {
13722
13712
  }
13723
13713
  }
13724
13714
 
13725
- var formkitVersion = '202603310525';
13715
+ var formkitVersion = '202604022013';
13726
13716
 
13727
13717
  var styleCss$1 = 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}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
13728
13718
 
@@ -15216,7 +15206,7 @@ class AuroCombobox extends AuroElement {
15216
15206
  * @returns {void}
15217
15207
  */
15218
15208
  configureCombobox() {
15219
- applyKeyboardStrategy(this, comboboxKeyboardStrategy, {
15209
+ applyKeyboardStrategy$1(this, comboboxKeyboardStrategy, {
15220
15210
  // In modal mode the input moves into the bib; route keyboard events to that element instead.
15221
15211
  inputResolver: (comp, ctx) => (ctx.isModal && comp.inputInBib ? comp.inputInBib : comp.input),
15222
15212
  });