@aurodesignsystem-dev/auro-formkit 0.0.0-pr1408.8 → 0.0.0-pr1411.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/checkbox/demo/api.min.js +1 -1
- package/components/checkbox/demo/index.min.js +1 -1
- package/components/checkbox/demo/keyboardBehavior.md +0 -0
- package/components/checkbox/dist/index.js +1 -1
- package/components/checkbox/dist/registered.js +1 -1
- package/components/combobox/demo/api.min.js +121 -144
- package/components/combobox/demo/index.min.js +121 -144
- package/components/combobox/demo/keyboardBehavior.html +1 -0
- package/components/combobox/demo/keyboardBehavior.md +21 -22
- package/components/combobox/dist/index.js +87 -117
- package/components/combobox/dist/registered.js +87 -117
- package/components/counter/demo/api.md +1 -1
- package/components/counter/demo/api.min.js +184 -148
- package/components/counter/demo/index.min.js +184 -148
- package/components/counter/demo/keyboardBehavior.html +1 -0
- package/components/counter/demo/keyboardBehavior.md +1 -1
- package/components/counter/dist/auro-counter.d.ts +11 -8
- package/components/counter/dist/index.js +184 -148
- package/components/counter/dist/keyboardStrategy.d.ts +4 -0
- package/components/counter/dist/registered.js +184 -148
- package/components/datepicker/demo/api.min.js +89 -120
- package/components/datepicker/demo/index.min.js +89 -120
- package/components/datepicker/demo/keyboardBehavior.html +1 -0
- package/components/datepicker/demo/keyboardBehavior.md +14 -13
- package/components/datepicker/dist/index.js +84 -115
- package/components/datepicker/dist/registered.js +84 -115
- package/components/dropdown/demo/api.md +0 -1
- package/components/dropdown/demo/api.min.js +99 -123
- package/components/dropdown/demo/index.md +2 -2
- package/components/dropdown/demo/index.min.js +99 -123
- package/components/dropdown/demo/keyboardBehavior.html +1 -0
- package/components/dropdown/dist/auro-dropdown.d.ts +0 -8
- package/components/dropdown/dist/auro-dropdownBib.d.ts +1 -40
- package/components/dropdown/dist/dropdownBibKeyboardStrategy.d.ts +7 -0
- package/components/dropdown/dist/index.js +83 -111
- package/components/dropdown/dist/registered.js +83 -111
- package/components/form/demo/api.min.js +542 -564
- package/components/form/demo/index.min.js +542 -564
- package/components/form/demo/keyboardBehavior.md +0 -0
- package/components/input/demo/api.min.js +1 -1
- package/components/input/demo/index.min.js +1 -1
- package/components/input/demo/keyboardBehavior.md +0 -0
- package/components/input/dist/index.js +1 -1
- package/components/input/dist/registered.js +1 -1
- package/components/menu/demo/api.min.js +34 -27
- package/components/menu/demo/index.min.js +34 -27
- package/components/menu/dist/auro-menu.d.ts +0 -6
- package/components/menu/dist/index.js +34 -27
- package/components/menu/dist/registered.js +34 -27
- package/components/radio/demo/api.min.js +1 -1
- package/components/radio/demo/index.min.js +1 -1
- package/components/radio/dist/index.js +1 -1
- package/components/radio/dist/registered.js +1 -1
- package/components/select/demo/api.min.js +181 -178
- package/components/select/demo/index.min.js +181 -178
- package/components/select/demo/keyboardBehavior.html +1 -0
- package/components/select/demo/keyboardBehavior.md +240 -239
- package/components/select/dist/index.js +147 -151
- package/components/select/dist/registered.js +147 -151
- package/components/select/dist/selectKeyboardStrategy.d.ts +3 -1
- package/custom-elements.json +1521 -1503
- package/package.json +5 -3
|
@@ -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
|
});
|
|
@@ -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.
|
|
3395
|
-
this.element.
|
|
3393
|
+
this.element.matches(":focus") ||
|
|
3394
|
+
this.element.matches(":focus-within")
|
|
3396
3395
|
) {
|
|
3397
3396
|
return;
|
|
3398
3397
|
}
|
|
@@ -4231,12 +4230,83 @@ let p$3 = class p{registerComponent(t,a){customElements.get(t)||customElements.d
|
|
|
4231
4230
|
|
|
4232
4231
|
var iconVersion$2 = '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$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
4287
|
|
|
4238
4288
|
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
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,11 +4431,7 @@ class AuroDropdownBib extends LitElement {
|
|
|
4361
4431
|
},
|
|
4362
4432
|
|
|
4363
4433
|
/**
|
|
4364
|
-
*
|
|
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: {
|
|
@@ -4439,7 +4505,7 @@ class AuroDropdownBib extends LitElement {
|
|
|
4439
4505
|
|
|
4440
4506
|
const dialog = this.shadowRoot.querySelector('dialog');
|
|
4441
4507
|
this._setupCancelHandler(dialog);
|
|
4442
|
-
|
|
4508
|
+
applyKeyboardStrategy(dialog, createDropdownBibKeyboardStrategy());
|
|
4443
4509
|
|
|
4444
4510
|
this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
|
|
4445
4511
|
bubbles: true,
|
|
@@ -4466,92 +4532,6 @@ class AuroDropdownBib extends LitElement {
|
|
|
4466
4532
|
});
|
|
4467
4533
|
}
|
|
4468
4534
|
|
|
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
4535
|
|
|
4556
4536
|
/**
|
|
4557
4537
|
* Blocks touch-driven page scroll while a fullscreen modal dialog is open.
|
|
@@ -4926,7 +4906,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
|
|
|
4926
4906
|
}
|
|
4927
4907
|
};
|
|
4928
4908
|
|
|
4929
|
-
var formkitVersion$2 = '
|
|
4909
|
+
var formkitVersion$2 = '202604021512';
|
|
4930
4910
|
|
|
4931
4911
|
let AuroElement$2 = class AuroElement extends LitElement {
|
|
4932
4912
|
static get properties() {
|
|
@@ -5107,7 +5087,6 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5107
5087
|
this.appearance = 'default';
|
|
5108
5088
|
this.chevron = false;
|
|
5109
5089
|
this.disabled = false;
|
|
5110
|
-
this.disableFocusTrap = false;
|
|
5111
5090
|
this.error = false;
|
|
5112
5091
|
this.tabIndex = 0;
|
|
5113
5092
|
this.noToggle = false;
|
|
@@ -5205,9 +5184,8 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5205
5184
|
// showModal() fires asynchronously via Lit's update cycle, which
|
|
5206
5185
|
// falls outside the user activation window and causes iOS to
|
|
5207
5186
|
// dismiss the keyboard.
|
|
5208
|
-
if (this.
|
|
5209
|
-
|
|
5210
|
-
this.bibElement.value.open(useModal);
|
|
5187
|
+
if (this.bibElement && this.bibElement.value) {
|
|
5188
|
+
this.bibElement.value.open(this.isBibFullscreen);
|
|
5211
5189
|
}
|
|
5212
5190
|
}
|
|
5213
5191
|
|
|
@@ -5320,14 +5298,6 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5320
5298
|
reflect: true
|
|
5321
5299
|
},
|
|
5322
5300
|
|
|
5323
|
-
/**
|
|
5324
|
-
* If declared, the focus trap inside of bib will be turned off.
|
|
5325
|
-
*/
|
|
5326
|
-
disableFocusTrap: {
|
|
5327
|
-
type: Boolean,
|
|
5328
|
-
reflect: true
|
|
5329
|
-
},
|
|
5330
|
-
|
|
5331
5301
|
/**
|
|
5332
5302
|
* @private
|
|
5333
5303
|
*/
|
|
@@ -5601,7 +5571,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5601
5571
|
if (this.isPopoverVisible) {
|
|
5602
5572
|
// Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
|
|
5603
5573
|
// Desktop: use show() for Floating UI positioning + FocusTrap for focus management
|
|
5604
|
-
const useModal = this.isBibFullscreen
|
|
5574
|
+
const useModal = this.isBibFullscreen;
|
|
5605
5575
|
this.bibElement.value.open(useModal);
|
|
5606
5576
|
} else {
|
|
5607
5577
|
this.bibElement.value.close();
|
|
@@ -5611,7 +5581,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5611
5581
|
// When fullscreen strategy changes while open, re-open dialog with correct mode
|
|
5612
5582
|
// (e.g. resizing from desktop → mobile while dropdown is open)
|
|
5613
5583
|
if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
|
|
5614
|
-
const useModal = this.isBibFullscreen
|
|
5584
|
+
const useModal = this.isBibFullscreen;
|
|
5615
5585
|
this.bibElement.value.close();
|
|
5616
5586
|
this.bibElement.value.open(useModal);
|
|
5617
5587
|
}
|
|
@@ -5723,7 +5693,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5723
5693
|
* @private
|
|
5724
5694
|
*/
|
|
5725
5695
|
updateFocusTrap() {
|
|
5726
|
-
if (this.isPopoverVisible
|
|
5696
|
+
if (this.isPopoverVisible) {
|
|
5727
5697
|
if (!this.isBibFullscreen) {
|
|
5728
5698
|
// Desktop: show() doesn't trap focus, so use FocusTrap
|
|
5729
5699
|
this.focusTrap = new FocusTrap(this.bibContent);
|
|
@@ -12683,7 +12653,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
12683
12653
|
}
|
|
12684
12654
|
};
|
|
12685
12655
|
|
|
12686
|
-
var formkitVersion$1 = '
|
|
12656
|
+
var formkitVersion$1 = '202604021512';
|
|
12687
12657
|
|
|
12688
12658
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
12689
12659
|
// See LICENSE in the project root for license information.
|
|
@@ -13722,7 +13692,7 @@ class AuroBibtemplate extends LitElement {
|
|
|
13722
13692
|
}
|
|
13723
13693
|
}
|
|
13724
13694
|
|
|
13725
|
-
var formkitVersion = '
|
|
13695
|
+
var formkitVersion = '202604021512';
|
|
13726
13696
|
|
|
13727
13697
|
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
13698
|
|
|
@@ -15216,7 +15186,7 @@ class AuroCombobox extends AuroElement {
|
|
|
15216
15186
|
* @returns {void}
|
|
15217
15187
|
*/
|
|
15218
15188
|
configureCombobox() {
|
|
15219
|
-
applyKeyboardStrategy(this, comboboxKeyboardStrategy, {
|
|
15189
|
+
applyKeyboardStrategy$1(this, comboboxKeyboardStrategy, {
|
|
15220
15190
|
// In modal mode the input moves into the bib; route keyboard events to that element instead.
|
|
15221
15191
|
inputResolver: (comp, ctx) => (ctx.isModal && comp.inputInBib ? comp.inputInBib : comp.input),
|
|
15222
15192
|
});
|
|
@@ -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
|
});
|
|
@@ -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.
|
|
3395
|
-
this.element.
|
|
3393
|
+
this.element.matches(":focus") ||
|
|
3394
|
+
this.element.matches(":focus-within")
|
|
3396
3395
|
) {
|
|
3397
3396
|
return;
|
|
3398
3397
|
}
|
|
@@ -4231,12 +4230,83 @@ let p$3 = class p{registerComponent(t,a){customElements.get(t)||customElements.d
|
|
|
4231
4230
|
|
|
4232
4231
|
var iconVersion$2 = '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$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
4287
|
|
|
4238
4288
|
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
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,11 +4431,7 @@ class AuroDropdownBib extends LitElement {
|
|
|
4361
4431
|
},
|
|
4362
4432
|
|
|
4363
4433
|
/**
|
|
4364
|
-
*
|
|
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: {
|
|
@@ -4439,7 +4505,7 @@ class AuroDropdownBib extends LitElement {
|
|
|
4439
4505
|
|
|
4440
4506
|
const dialog = this.shadowRoot.querySelector('dialog');
|
|
4441
4507
|
this._setupCancelHandler(dialog);
|
|
4442
|
-
|
|
4508
|
+
applyKeyboardStrategy(dialog, createDropdownBibKeyboardStrategy());
|
|
4443
4509
|
|
|
4444
4510
|
this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
|
|
4445
4511
|
bubbles: true,
|
|
@@ -4466,92 +4532,6 @@ class AuroDropdownBib extends LitElement {
|
|
|
4466
4532
|
});
|
|
4467
4533
|
}
|
|
4468
4534
|
|
|
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
4535
|
|
|
4556
4536
|
/**
|
|
4557
4537
|
* Blocks touch-driven page scroll while a fullscreen modal dialog is open.
|
|
@@ -4926,7 +4906,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
|
|
|
4926
4906
|
}
|
|
4927
4907
|
};
|
|
4928
4908
|
|
|
4929
|
-
var formkitVersion$2 = '
|
|
4909
|
+
var formkitVersion$2 = '202604021512';
|
|
4930
4910
|
|
|
4931
4911
|
let AuroElement$2 = class AuroElement extends LitElement {
|
|
4932
4912
|
static get properties() {
|
|
@@ -5107,7 +5087,6 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5107
5087
|
this.appearance = 'default';
|
|
5108
5088
|
this.chevron = false;
|
|
5109
5089
|
this.disabled = false;
|
|
5110
|
-
this.disableFocusTrap = false;
|
|
5111
5090
|
this.error = false;
|
|
5112
5091
|
this.tabIndex = 0;
|
|
5113
5092
|
this.noToggle = false;
|
|
@@ -5205,9 +5184,8 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5205
5184
|
// showModal() fires asynchronously via Lit's update cycle, which
|
|
5206
5185
|
// falls outside the user activation window and causes iOS to
|
|
5207
5186
|
// dismiss the keyboard.
|
|
5208
|
-
if (this.
|
|
5209
|
-
|
|
5210
|
-
this.bibElement.value.open(useModal);
|
|
5187
|
+
if (this.bibElement && this.bibElement.value) {
|
|
5188
|
+
this.bibElement.value.open(this.isBibFullscreen);
|
|
5211
5189
|
}
|
|
5212
5190
|
}
|
|
5213
5191
|
|
|
@@ -5320,14 +5298,6 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5320
5298
|
reflect: true
|
|
5321
5299
|
},
|
|
5322
5300
|
|
|
5323
|
-
/**
|
|
5324
|
-
* If declared, the focus trap inside of bib will be turned off.
|
|
5325
|
-
*/
|
|
5326
|
-
disableFocusTrap: {
|
|
5327
|
-
type: Boolean,
|
|
5328
|
-
reflect: true
|
|
5329
|
-
},
|
|
5330
|
-
|
|
5331
5301
|
/**
|
|
5332
5302
|
* @private
|
|
5333
5303
|
*/
|
|
@@ -5601,7 +5571,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5601
5571
|
if (this.isPopoverVisible) {
|
|
5602
5572
|
// Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
|
|
5603
5573
|
// Desktop: use show() for Floating UI positioning + FocusTrap for focus management
|
|
5604
|
-
const useModal = this.isBibFullscreen
|
|
5574
|
+
const useModal = this.isBibFullscreen;
|
|
5605
5575
|
this.bibElement.value.open(useModal);
|
|
5606
5576
|
} else {
|
|
5607
5577
|
this.bibElement.value.close();
|
|
@@ -5611,7 +5581,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5611
5581
|
// When fullscreen strategy changes while open, re-open dialog with correct mode
|
|
5612
5582
|
// (e.g. resizing from desktop → mobile while dropdown is open)
|
|
5613
5583
|
if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
|
|
5614
|
-
const useModal = this.isBibFullscreen
|
|
5584
|
+
const useModal = this.isBibFullscreen;
|
|
5615
5585
|
this.bibElement.value.close();
|
|
5616
5586
|
this.bibElement.value.open(useModal);
|
|
5617
5587
|
}
|
|
@@ -5723,7 +5693,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
5723
5693
|
* @private
|
|
5724
5694
|
*/
|
|
5725
5695
|
updateFocusTrap() {
|
|
5726
|
-
if (this.isPopoverVisible
|
|
5696
|
+
if (this.isPopoverVisible) {
|
|
5727
5697
|
if (!this.isBibFullscreen) {
|
|
5728
5698
|
// Desktop: show() doesn't trap focus, so use FocusTrap
|
|
5729
5699
|
this.focusTrap = new FocusTrap(this.bibContent);
|
|
@@ -12683,7 +12653,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
12683
12653
|
}
|
|
12684
12654
|
};
|
|
12685
12655
|
|
|
12686
|
-
var formkitVersion$1 = '
|
|
12656
|
+
var formkitVersion$1 = '202604021512';
|
|
12687
12657
|
|
|
12688
12658
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
12689
12659
|
// See LICENSE in the project root for license information.
|
|
@@ -13722,7 +13692,7 @@ class AuroBibtemplate extends LitElement {
|
|
|
13722
13692
|
}
|
|
13723
13693
|
}
|
|
13724
13694
|
|
|
13725
|
-
var formkitVersion = '
|
|
13695
|
+
var formkitVersion = '202604021512';
|
|
13726
13696
|
|
|
13727
13697
|
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
13698
|
|
|
@@ -15216,7 +15186,7 @@ class AuroCombobox extends AuroElement {
|
|
|
15216
15186
|
* @returns {void}
|
|
15217
15187
|
*/
|
|
15218
15188
|
configureCombobox() {
|
|
15219
|
-
applyKeyboardStrategy(this, comboboxKeyboardStrategy, {
|
|
15189
|
+
applyKeyboardStrategy$1(this, comboboxKeyboardStrategy, {
|
|
15220
15190
|
// In modal mode the input moves into the bib; route keyboard events to that element instead.
|
|
15221
15191
|
inputResolver: (comp, ctx) => (ctx.isModal && comp.inputInBib ? comp.inputInBib : comp.input),
|
|
15222
15192
|
});
|
|
@@ -69,7 +69,7 @@ The `auro-counter` element provides a flexible counter interface with increment
|
|
|
69
69
|
| [min](#min) | `min` | `number` | | The minimum value for the counter. |
|
|
70
70
|
| [onDark](#onDark) | `onDark` | `boolean` | | DEPRECATED - use `appearance="inverse"` instead. |
|
|
71
71
|
| [validity](#validity) | `validity` | `string` | | The validity state of the counter. |
|
|
72
|
-
| [value](#value) | `value` | `number`
|
|
72
|
+
| [value](#value) | `value` | `number \| undefined` | | Gets the current value of the counter. |
|
|
73
73
|
|
|
74
74
|
## Methods
|
|
75
75
|
|