@aurodesignsystem-dev/auro-formkit 0.0.0-pr1408.9 → 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 +20 -21
- 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 +101 -83
- package/package.json +5 -3
|
@@ -1190,7 +1190,7 @@ function restoreTriggerAfterClose(dropdown, focusTarget) {
|
|
|
1190
1190
|
* @returns {{isExpanded: boolean, isModal: boolean, isPopover: boolean, activeInput: HTMLElement|null}}
|
|
1191
1191
|
* isModal and isPopover reflect the display mode (fullscreen vs not) regardless of expanded state.
|
|
1192
1192
|
*/
|
|
1193
|
-
function createDisplayContext(component, options = {}) {
|
|
1193
|
+
function createDisplayContext$1(component, options = {}) {
|
|
1194
1194
|
const dd = options.dropdown || component.dropdown;
|
|
1195
1195
|
// isPopoverVisible reflects as the `open` attribute.
|
|
1196
1196
|
// It reports whether the bib is open in any mode (popover or modal).
|
|
@@ -1220,11 +1220,11 @@ function createDisplayContext(component, options = {}) {
|
|
|
1220
1220
|
* @param {Object} strategy - Map of key names to handler functions.
|
|
1221
1221
|
* @param {Object} [options] - Optional config passed to createDisplayContext.
|
|
1222
1222
|
*/
|
|
1223
|
-
function applyKeyboardStrategy(component, strategy, options = {}) {
|
|
1223
|
+
function applyKeyboardStrategy$1(component, strategy, options = {}) {
|
|
1224
1224
|
component.addEventListener('keydown', async (evt) => {
|
|
1225
1225
|
const handler = strategy[evt.key] || strategy.default;
|
|
1226
1226
|
if (typeof handler === 'function') {
|
|
1227
|
-
const ctx = createDisplayContext(component, options);
|
|
1227
|
+
const ctx = createDisplayContext$1(component, options);
|
|
1228
1228
|
await handler(component, evt, ctx);
|
|
1229
1229
|
}
|
|
1230
1230
|
});
|
|
@@ -1250,24 +1250,39 @@ function navigateArrow(component, direction, options = {}) {
|
|
|
1250
1250
|
|
|
1251
1251
|
const selectKeyboardStrategy = {
|
|
1252
1252
|
ArrowUp(component, evt, ctx) {
|
|
1253
|
+
// Navigate menu only if the bib is open, otherwise open the bib
|
|
1253
1254
|
evt.preventDefault();
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1255
|
+
if (evt.altKey || evt.metaKey) ; else if (component.dropdown.isPopoverVisible) {
|
|
1256
|
+
navigateArrow(component, 'up', {
|
|
1257
|
+
ctx,
|
|
1258
|
+
showFn: () => component.dropdown.show(),
|
|
1259
|
+
});
|
|
1260
|
+
} else {
|
|
1261
|
+
component.dropdown.show();
|
|
1262
|
+
}
|
|
1258
1263
|
},
|
|
1259
1264
|
|
|
1260
1265
|
ArrowDown(component, evt, ctx) {
|
|
1266
|
+
// Navigate menu only if the bib is open, otherwise open the bib
|
|
1261
1267
|
evt.preventDefault();
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1268
|
+
if (evt.altKey || evt.metaKey) ; else if (component.dropdown.isPopoverVisible) {
|
|
1269
|
+
navigateArrow(component, 'down', {
|
|
1270
|
+
ctx,
|
|
1271
|
+
showFn: () => component.dropdown.show(),
|
|
1272
|
+
});
|
|
1273
|
+
} else {
|
|
1274
|
+
component.dropdown.show();
|
|
1275
|
+
}
|
|
1266
1276
|
},
|
|
1267
1277
|
|
|
1268
|
-
Enter(component, evt) {
|
|
1269
|
-
|
|
1270
|
-
|
|
1278
|
+
Enter(component, evt, ctx) {
|
|
1279
|
+
if (!ctx.isExpanded && ctx.isPopover) {
|
|
1280
|
+
component.menu.makeSelection();
|
|
1281
|
+
} else if (ctx.isModal && !evt.defaultPrevented) {
|
|
1282
|
+
// for modal, isExpanded is always true
|
|
1283
|
+
// defaultPrevented will be true if Floating UI has already handled the event to open the dropdown
|
|
1284
|
+
component.menu.makeSelection();
|
|
1285
|
+
}
|
|
1271
1286
|
},
|
|
1272
1287
|
|
|
1273
1288
|
Tab(component, evt, ctx) {
|
|
@@ -1275,17 +1290,6 @@ const selectKeyboardStrategy = {
|
|
|
1275
1290
|
return;
|
|
1276
1291
|
}
|
|
1277
1292
|
|
|
1278
|
-
// Shift+Tab moves the highlight to the first non-disabled option
|
|
1279
|
-
// without making a selection or closing the bib.
|
|
1280
|
-
if (evt.shiftKey) {
|
|
1281
|
-
evt.preventDefault();
|
|
1282
|
-
const firstActive = component.menu.menuService.menuOptions.find((option) => option.isActive);
|
|
1283
|
-
if (firstActive) {
|
|
1284
|
-
component.menu.updateActiveOption(firstActive);
|
|
1285
|
-
}
|
|
1286
|
-
return;
|
|
1287
|
-
}
|
|
1288
|
-
|
|
1289
1293
|
// Tab selects the focused option and closes the popup per the
|
|
1290
1294
|
// WAI-ARIA APG select-only combobox / listbox pattern.
|
|
1291
1295
|
if (component.optionActive && !component.multiSelect) {
|
|
@@ -1293,6 +1297,23 @@ const selectKeyboardStrategy = {
|
|
|
1293
1297
|
}
|
|
1294
1298
|
component.dropdown.hide();
|
|
1295
1299
|
},
|
|
1300
|
+
Home(component, evt) {
|
|
1301
|
+
evt.preventDefault();
|
|
1302
|
+
evt.stopPropagation();
|
|
1303
|
+
const firstOption = component.menu.menuService.menuOptions.find((option) => !option.disabled);
|
|
1304
|
+
if (firstOption) {
|
|
1305
|
+
component.menu.updateActiveOption(firstOption);
|
|
1306
|
+
}
|
|
1307
|
+
},
|
|
1308
|
+
|
|
1309
|
+
End(component, evt) {
|
|
1310
|
+
evt.preventDefault();
|
|
1311
|
+
evt.stopPropagation();
|
|
1312
|
+
const lastOption = [...component.menu.menuService.menuOptions].reverse().find((option) => !option.disabled);
|
|
1313
|
+
if (lastOption) {
|
|
1314
|
+
component.menu.updateActiveOption(lastOption);
|
|
1315
|
+
}
|
|
1316
|
+
},
|
|
1296
1317
|
|
|
1297
1318
|
default(component, evt) {
|
|
1298
1319
|
component.updateActiveOptionBasedOnKey(evt.key);
|
|
@@ -3388,11 +3409,10 @@ class AuroFloatingUI {
|
|
|
3388
3409
|
return;
|
|
3389
3410
|
}
|
|
3390
3411
|
|
|
3391
|
-
const { activeElement } = document;
|
|
3392
3412
|
// if focus is still inside of trigger or bib, do not close
|
|
3393
3413
|
if (
|
|
3394
|
-
this.element.
|
|
3395
|
-
this.element.
|
|
3414
|
+
this.element.matches(":focus") ||
|
|
3415
|
+
this.element.matches(":focus-within")
|
|
3396
3416
|
) {
|
|
3397
3417
|
return;
|
|
3398
3418
|
}
|
|
@@ -4231,12 +4251,83 @@ let p$2 = class p{registerComponent(t,a){customElements.get(t)||customElements.d
|
|
|
4231
4251
|
|
|
4232
4252
|
var iconVersion$1 = '9.1.2';
|
|
4233
4253
|
|
|
4254
|
+
/**
|
|
4255
|
+
* Computes display state once per keydown event.
|
|
4256
|
+
* Centralizes null-safety checks and makes the shared/modal/popover branching explicit.
|
|
4257
|
+
*
|
|
4258
|
+
* @param {HTMLElement} component - The component with a dropdown reference.
|
|
4259
|
+
* @param {Object} [options] - Optional config.
|
|
4260
|
+
* @param {HTMLElement} [options.dropdown] - Explicit dropdown reference. Falls back to component.dropdown.
|
|
4261
|
+
* @param {Function} [options.inputResolver] - Called with (component, ctx) to resolve the active input element.
|
|
4262
|
+
* @returns {{isExpanded: boolean, isModal: boolean, isPopover: boolean, activeInput: HTMLElement|null}}
|
|
4263
|
+
* isModal and isPopover reflect the display mode (fullscreen vs not) regardless of expanded state.
|
|
4264
|
+
*/
|
|
4265
|
+
function createDisplayContext(component, options = {}) {
|
|
4266
|
+
const dd = options.dropdown || component.dropdown;
|
|
4267
|
+
// isPopoverVisible reflects as the `open` attribute.
|
|
4268
|
+
// It reports whether the bib is open in any mode (popover or modal).
|
|
4269
|
+
const isExpanded = Boolean(dd && dd.isPopoverVisible);
|
|
4270
|
+
const isFullscreen = Boolean(dd && dd.isBibFullscreen);
|
|
4271
|
+
|
|
4272
|
+
const ctx = {
|
|
4273
|
+
isExpanded,
|
|
4274
|
+
isModal: isFullscreen,
|
|
4275
|
+
isPopover: !isFullscreen,
|
|
4276
|
+
activeInput: null,
|
|
4277
|
+
};
|
|
4278
|
+
|
|
4279
|
+
if (options.inputResolver) {
|
|
4280
|
+
const resolvedInput = options.inputResolver(component, ctx);
|
|
4281
|
+
// Guard against resolvers returning undefined or non-HTMLElement values.
|
|
4282
|
+
ctx.activeInput = resolvedInput instanceof HTMLElement ? resolvedInput : null;
|
|
4283
|
+
}
|
|
4284
|
+
|
|
4285
|
+
return ctx;
|
|
4286
|
+
}
|
|
4287
|
+
|
|
4288
|
+
/**
|
|
4289
|
+
* Wires up a keydown listener that dispatches to strategy[evt.key] or strategy.default.
|
|
4290
|
+
* Handles both sync and async handlers.
|
|
4291
|
+
* @param {HTMLElement} component - The component to attach the listener to.
|
|
4292
|
+
* @param {Object} strategy - Map of key names to handler functions.
|
|
4293
|
+
* @param {Object} [options] - Optional config passed to createDisplayContext.
|
|
4294
|
+
*/
|
|
4295
|
+
function applyKeyboardStrategy(component, strategy, options = {}) {
|
|
4296
|
+
component.addEventListener('keydown', async (evt) => {
|
|
4297
|
+
const handler = strategy[evt.key] || strategy.default;
|
|
4298
|
+
if (typeof handler === 'function') {
|
|
4299
|
+
const ctx = createDisplayContext(component, options);
|
|
4300
|
+
await handler(component, evt, ctx);
|
|
4301
|
+
}
|
|
4302
|
+
});
|
|
4303
|
+
}
|
|
4304
|
+
|
|
4234
4305
|
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
4306
|
|
|
4236
4307
|
var colorCss$2 = css`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
|
|
4237
4308
|
|
|
4238
4309
|
var tokensCss$1 = css`:host(:not([ondark])),:host(:not([appearance=inverse])){--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-muted, #676767);--ds-auro-dropdown-trigger-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-hover-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-bold, #585e67);--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-dropdownbib-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdownbib-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdownbib-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db);--ds-auro-dropdown-trigger-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-hover-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-inverse, #ffffff);--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-dropdownbib-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdownbib-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdownbib-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}`;
|
|
4239
4310
|
|
|
4311
|
+
/**
|
|
4312
|
+
* Creates a keyboard strategy for dialog-specific key handling.
|
|
4313
|
+
* All other keydown behavior is left to the browser's native bubbling path.
|
|
4314
|
+
* @param {HTMLElement} bib - The dropdown bib element.
|
|
4315
|
+
* @returns {Object} Keyboard handlers keyed by `event.key`.
|
|
4316
|
+
*/
|
|
4317
|
+
// eslint-disable-next-line no-unused-vars
|
|
4318
|
+
function createDropdownBibKeyboardStrategy(bib) {
|
|
4319
|
+
return {
|
|
4320
|
+
// eslint-disable-next-line no-unused-vars
|
|
4321
|
+
Enter(_dialog, event) {
|
|
4322
|
+
// Floating UI handles Enter key to open the dropdown
|
|
4323
|
+
},
|
|
4324
|
+
// eslint-disable-next-line no-unused-vars
|
|
4325
|
+
Escape(_dialog, event) {
|
|
4326
|
+
// Floating UI handles Escape key to close the dropdown
|
|
4327
|
+
}
|
|
4328
|
+
};
|
|
4329
|
+
}
|
|
4330
|
+
|
|
4240
4331
|
// Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
4241
4332
|
// See LICENSE in the project root for license information.
|
|
4242
4333
|
/* eslint-disable max-lines */
|
|
@@ -4361,11 +4452,7 @@ class AuroDropdownBib extends LitElement {
|
|
|
4361
4452
|
},
|
|
4362
4453
|
|
|
4363
4454
|
/**
|
|
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).
|
|
4455
|
+
* Tracks whether a menu option is currently highlighted.
|
|
4369
4456
|
* @private
|
|
4370
4457
|
*/
|
|
4371
4458
|
hasActiveDescendant: {
|
|
@@ -4439,7 +4526,7 @@ class AuroDropdownBib extends LitElement {
|
|
|
4439
4526
|
|
|
4440
4527
|
const dialog = this.shadowRoot.querySelector('dialog');
|
|
4441
4528
|
this._setupCancelHandler(dialog);
|
|
4442
|
-
|
|
4529
|
+
applyKeyboardStrategy(dialog, createDropdownBibKeyboardStrategy());
|
|
4443
4530
|
|
|
4444
4531
|
this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
|
|
4445
4532
|
bubbles: true,
|
|
@@ -4466,92 +4553,6 @@ class AuroDropdownBib extends LitElement {
|
|
|
4466
4553
|
});
|
|
4467
4554
|
}
|
|
4468
4555
|
|
|
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
4556
|
|
|
4556
4557
|
/**
|
|
4557
4558
|
* Blocks touch-driven page scroll while a fullscreen modal dialog is open.
|
|
@@ -4926,7 +4927,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
4926
4927
|
}
|
|
4927
4928
|
};
|
|
4928
4929
|
|
|
4929
|
-
var formkitVersion$1 = '
|
|
4930
|
+
var formkitVersion$1 = '202604021512';
|
|
4930
4931
|
|
|
4931
4932
|
class AuroElement extends LitElement {
|
|
4932
4933
|
static get properties() {
|
|
@@ -5107,7 +5108,6 @@ class AuroDropdown extends AuroElement {
|
|
|
5107
5108
|
this.appearance = 'default';
|
|
5108
5109
|
this.chevron = false;
|
|
5109
5110
|
this.disabled = false;
|
|
5110
|
-
this.disableFocusTrap = false;
|
|
5111
5111
|
this.error = false;
|
|
5112
5112
|
this.tabIndex = 0;
|
|
5113
5113
|
this.noToggle = false;
|
|
@@ -5205,9 +5205,8 @@ class AuroDropdown extends AuroElement {
|
|
|
5205
5205
|
// showModal() fires asynchronously via Lit's update cycle, which
|
|
5206
5206
|
// falls outside the user activation window and causes iOS to
|
|
5207
5207
|
// dismiss the keyboard.
|
|
5208
|
-
if (this.
|
|
5209
|
-
|
|
5210
|
-
this.bibElement.value.open(useModal);
|
|
5208
|
+
if (this.bibElement && this.bibElement.value) {
|
|
5209
|
+
this.bibElement.value.open(this.isBibFullscreen);
|
|
5211
5210
|
}
|
|
5212
5211
|
}
|
|
5213
5212
|
|
|
@@ -5320,14 +5319,6 @@ class AuroDropdown extends AuroElement {
|
|
|
5320
5319
|
reflect: true
|
|
5321
5320
|
},
|
|
5322
5321
|
|
|
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
5322
|
/**
|
|
5332
5323
|
* @private
|
|
5333
5324
|
*/
|
|
@@ -5601,7 +5592,7 @@ class AuroDropdown extends AuroElement {
|
|
|
5601
5592
|
if (this.isPopoverVisible) {
|
|
5602
5593
|
// Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
|
|
5603
5594
|
// Desktop: use show() for Floating UI positioning + FocusTrap for focus management
|
|
5604
|
-
const useModal = this.isBibFullscreen
|
|
5595
|
+
const useModal = this.isBibFullscreen;
|
|
5605
5596
|
this.bibElement.value.open(useModal);
|
|
5606
5597
|
} else {
|
|
5607
5598
|
this.bibElement.value.close();
|
|
@@ -5611,7 +5602,7 @@ class AuroDropdown extends AuroElement {
|
|
|
5611
5602
|
// When fullscreen strategy changes while open, re-open dialog with correct mode
|
|
5612
5603
|
// (e.g. resizing from desktop → mobile while dropdown is open)
|
|
5613
5604
|
if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
|
|
5614
|
-
const useModal = this.isBibFullscreen
|
|
5605
|
+
const useModal = this.isBibFullscreen;
|
|
5615
5606
|
this.bibElement.value.close();
|
|
5616
5607
|
this.bibElement.value.open(useModal);
|
|
5617
5608
|
}
|
|
@@ -5723,7 +5714,7 @@ class AuroDropdown extends AuroElement {
|
|
|
5723
5714
|
* @private
|
|
5724
5715
|
*/
|
|
5725
5716
|
updateFocusTrap() {
|
|
5726
|
-
if (this.isPopoverVisible
|
|
5717
|
+
if (this.isPopoverVisible) {
|
|
5727
5718
|
if (!this.isBibFullscreen) {
|
|
5728
5719
|
// Desktop: show() doesn't trap focus, so use FocusTrap
|
|
5729
5720
|
this.focusTrap = new FocusTrap(this.bibContent);
|
|
@@ -6679,7 +6670,7 @@ class AuroHelpText extends LitElement {
|
|
|
6679
6670
|
}
|
|
6680
6671
|
}
|
|
6681
6672
|
|
|
6682
|
-
var formkitVersion = '
|
|
6673
|
+
var formkitVersion = '202604021512';
|
|
6683
6674
|
|
|
6684
6675
|
var styleCss = css`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
|
|
6685
6676
|
|
|
@@ -7201,7 +7192,7 @@ class AuroSelect extends AuroElement$1 {
|
|
|
7201
7192
|
|
|
7202
7193
|
// Prevent dropdown from closing on focus loss since menu content is slotted
|
|
7203
7194
|
// from select's light DOM and won't be detected by dropdown's contains() check.
|
|
7204
|
-
// Select handles Tab key closing explicitly,
|
|
7195
|
+
// Select handles Tab key closing explicitly, `Escape` key via dialog cancel, and
|
|
7205
7196
|
// click outside works correctly via composedPath().
|
|
7206
7197
|
this.dropdown.noHideOnThisFocusLoss = true;
|
|
7207
7198
|
|
|
@@ -7214,12 +7205,28 @@ class AuroSelect extends AuroElement$1 {
|
|
|
7214
7205
|
this.dropdown.setActiveDescendant(null);
|
|
7215
7206
|
this.optionActive = null;
|
|
7216
7207
|
|
|
7217
|
-
|
|
7208
|
+
if (this.dropdown.isBibFullscreen) {
|
|
7209
|
+
restoreTriggerAfterClose(this.dropdown, this.dropdown.trigger);
|
|
7210
|
+
}
|
|
7218
7211
|
}
|
|
7219
7212
|
|
|
7220
7213
|
if (this.dropdown.isPopoverVisible) {
|
|
7221
7214
|
this.updateMenuShapeSize();
|
|
7222
7215
|
|
|
7216
|
+
// If there's a selected option, highlight it (per W3C APG combobox-select-only pattern)
|
|
7217
|
+
// No selection → first enabled option gets highlighted
|
|
7218
|
+
if (this.optionSelected && !Array.isArray(this.optionSelected)) {
|
|
7219
|
+
this.menu.updateActiveOption(this.optionSelected);
|
|
7220
|
+
} else if (this.multiSelect && Array.isArray(this.optionSelected) && this.optionSelected.length > 0) {
|
|
7221
|
+
this.menu.updateActiveOption(this.optionSelected[0]);
|
|
7222
|
+
} else if (!this.menu.optionActive) {
|
|
7223
|
+
// If no activeOption has yet to be set, then make the first enabled option active by default
|
|
7224
|
+
const firstActive = this.menu.menuService.menuOptions.find((option) => !option.disabled);
|
|
7225
|
+
this.menu.updateActiveOption(firstActive);
|
|
7226
|
+
}
|
|
7227
|
+
|
|
7228
|
+
// Scroll the selected option into view when dropdown opens
|
|
7229
|
+
this.scrollSelectedOptionIntoView();
|
|
7223
7230
|
if (this.dropdown.isBibFullscreen) {
|
|
7224
7231
|
// Hide the trigger from assistive technology so VoiceOver cannot reach it
|
|
7225
7232
|
// behind the fullscreen dialog
|
|
@@ -7231,17 +7238,6 @@ class AuroSelect extends AuroElement$1 {
|
|
|
7231
7238
|
// multiple Lit update cycles before moving focus into the bib
|
|
7232
7239
|
doubleRaf(() => {
|
|
7233
7240
|
this.bibtemplate.focusCloseButton();
|
|
7234
|
-
|
|
7235
|
-
// If there's a selected option, highlight it (per W3C APG combobox-select-only pattern)
|
|
7236
|
-
// No selection → no highlight
|
|
7237
|
-
if (this.optionSelected && !Array.isArray(this.optionSelected)) {
|
|
7238
|
-
this.menu.updateActiveOption(this.optionSelected);
|
|
7239
|
-
} else if (this.multiSelect && Array.isArray(this.optionSelected) && this.optionSelected.length > 0) {
|
|
7240
|
-
this.menu.updateActiveOption(this.optionSelected[0]);
|
|
7241
|
-
}
|
|
7242
|
-
|
|
7243
|
-
// Scroll the selected option into view when dropdown opens
|
|
7244
|
-
this.scrollSelectedOptionIntoView();
|
|
7245
7241
|
});
|
|
7246
7242
|
} else {
|
|
7247
7243
|
// wait til the bib gets fully rendered
|
|
@@ -7488,7 +7484,7 @@ class AuroSelect extends AuroElement$1 {
|
|
|
7488
7484
|
configureSelect() {
|
|
7489
7485
|
this.nativeSelect = this.shadowRoot.querySelector('select');
|
|
7490
7486
|
|
|
7491
|
-
applyKeyboardStrategy(this, selectKeyboardStrategy);
|
|
7487
|
+
applyKeyboardStrategy$1(this, selectKeyboardStrategy);
|
|
7492
7488
|
|
|
7493
7489
|
this.addEventListener('focusin', this.handleFocusin);
|
|
7494
7490
|
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export namespace selectKeyboardStrategy {
|
|
2
2
|
export function ArrowUp(component: any, evt: any, ctx: any): void;
|
|
3
3
|
export function ArrowDown(component: any, evt: any, ctx: any): void;
|
|
4
|
-
export function Enter(component: any, evt: any): void;
|
|
4
|
+
export function Enter(component: any, evt: any, ctx: any): void;
|
|
5
5
|
export function Tab(component: any, evt: any, ctx: any): void;
|
|
6
|
+
export function Home(component: any, evt: any): void;
|
|
7
|
+
export function End(component: any, evt: any): void;
|
|
6
8
|
function _default(component: any, evt: any): void;
|
|
7
9
|
export { _default as default };
|
|
8
10
|
}
|