@aurodesignsystem-dev/auro-formkit 0.0.0-pr624.4 → 0.0.0-pr624.40
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/bibtemplate/dist/auro-bibtemplate.d.ts +13 -2
- package/components/bibtemplate/dist/buttonVersion.d.ts +2 -0
- package/components/bibtemplate/dist/iconVersion.d.ts +1 -1
- package/components/bibtemplate/dist/index.js +1292 -79
- package/components/bibtemplate/dist/registered.js +1292 -79
- package/components/checkbox/README.md +1 -1
- package/components/checkbox/demo/api.md +47 -14
- package/components/checkbox/demo/api.min.js +44 -31
- package/components/checkbox/demo/index.md +2 -2
- package/components/checkbox/demo/index.min.js +44 -31
- package/components/checkbox/demo/readme.md +1 -1
- package/components/checkbox/dist/auro-checkbox-group.d.ts +1 -1
- package/components/checkbox/dist/auro-checkbox.d.ts +3 -3
- package/components/checkbox/dist/index.js +44 -31
- package/components/checkbox/dist/registered.js +44 -31
- package/components/combobox/demo/api.md +100 -2
- package/components/combobox/demo/api.min.js +3202 -759
- package/components/combobox/demo/index.md +6 -30
- package/components/combobox/demo/index.min.js +3202 -759
- package/components/combobox/dist/auro-combobox.d.ts +37 -16
- package/components/combobox/dist/index.js +3091 -789
- package/components/combobox/dist/registered.js +3091 -789
- package/components/counter/demo/api.html +1 -0
- package/components/counter/demo/api.md +21 -19
- package/components/counter/demo/api.min.js +3324 -614
- package/components/counter/demo/index.html +1 -0
- package/components/counter/demo/index.md +103 -34
- package/components/counter/demo/index.min.js +3324 -614
- package/components/counter/dist/auro-counter-button.d.ts +2 -0
- package/components/counter/dist/auro-counter-group.d.ts +89 -6
- package/components/counter/dist/auro-counter.d.ts +6 -0
- package/components/counter/dist/helptextVersion.d.ts +2 -0
- package/components/counter/dist/iconVersion.d.ts +1 -1
- package/components/counter/dist/index.js +3324 -614
- package/components/counter/dist/registered.js +3324 -614
- package/components/datepicker/demo/api.md +36 -19
- package/components/datepicker/demo/api.min.js +11976 -8000
- package/components/datepicker/demo/index.md +80 -0
- package/components/datepicker/demo/index.min.js +11976 -8000
- package/components/datepicker/dist/auro-datepicker.d.ts +71 -3
- package/components/datepicker/dist/buttonVersion.d.ts +1 -1
- package/components/datepicker/dist/iconVersion.d.ts +2 -0
- package/components/datepicker/dist/index.js +12238 -8262
- package/components/datepicker/dist/popoverVersion.d.ts +1 -1
- package/components/datepicker/dist/registered.js +12238 -8262
- package/components/dropdown/demo/api.md +8 -9
- package/components/dropdown/demo/api.min.js +551 -147
- package/components/dropdown/demo/index.md +57 -9
- package/components/dropdown/demo/index.min.js +551 -147
- package/components/dropdown/dist/auro-dropdown.d.ts +28 -9
- package/components/dropdown/dist/auro-dropdownBib.d.ts +22 -0
- package/components/dropdown/dist/index.js +551 -147
- package/components/dropdown/dist/registered.js +551 -147
- package/components/form/demo/api.min.js +1 -1
- package/components/form/demo/index.min.js +1 -1
- package/components/form/dist/index.js +1 -1
- package/components/form/dist/registered.js +1 -1
- package/components/helptext/dist/index.js +2 -2
- package/components/helptext/dist/registered.js +2 -2
- package/components/input/README.md +5 -2
- package/components/input/demo/api.md +271 -176
- package/components/input/demo/api.min.js +956 -270
- package/components/input/demo/index.md +48 -32
- package/components/input/demo/index.min.js +955 -269
- package/components/input/demo/readme.md +5 -2
- package/components/input/dist/auro-input.d.ts +23 -15
- package/components/input/dist/base-input.d.ts +32 -8
- package/components/input/dist/buttonVersion.d.ts +1 -1
- package/components/input/dist/iconVersion.d.ts +1 -1
- package/components/input/dist/index.js +955 -269
- package/components/input/dist/registered.js +955 -269
- package/components/layoutElement/dist/index.js +13 -10
- package/components/menu/demo/api.html +38 -0
- package/components/menu/demo/api.md +68 -7
- package/components/menu/demo/api.min.js +278 -42
- package/components/menu/demo/index.min.js +278 -42
- package/components/menu/dist/auro-menu.d.ts +28 -5
- package/components/menu/dist/auro-menuoption.d.ts +15 -3
- package/components/menu/dist/iconVersion.d.ts +1 -1
- package/components/menu/dist/index.js +278 -42
- package/components/menu/dist/registered.js +278 -42
- package/components/menu/dist/styles/default/color-menuoption-css.d.ts +2 -0
- package/components/menu/dist/styles/default/style-menu-css.d.ts +2 -0
- package/components/menu/dist/styles/default/style-menuoption-css.d.ts +2 -0
- package/components/menu/dist/styles/default/tokens-css.d.ts +2 -0
- package/components/radio/demo/api.md +7 -8
- package/components/radio/demo/api.min.js +68 -80
- package/components/radio/demo/index.min.js +68 -80
- package/components/radio/dist/auro-radio-group.d.ts +1 -1
- package/components/radio/dist/auro-radio.d.ts +9 -12
- package/components/radio/dist/index.js +68 -80
- package/components/radio/dist/registered.js +68 -80
- package/components/select/demo/api.md +123 -13
- package/components/select/demo/api.min.js +3045 -456
- package/components/select/demo/index.html +1 -0
- package/components/select/demo/index.md +323 -763
- package/components/select/demo/index.min.js +3045 -456
- package/components/select/dist/auro-select.d.ts +112 -11
- package/components/select/dist/helptextVersion.d.ts +2 -0
- package/components/select/dist/index.js +2925 -477
- package/components/select/dist/registered.js +2925 -477
- package/components/select/dist/styles/shapeSize-css.d.ts +2 -0
- package/components/select/dist/styles/tokens-css.d.ts +2 -0
- package/package.json +6 -4
- /package/components/{dropdown/dist/styles/default/bibColors-css.d.ts → counter/dist/styles/shapeSize-css.d.ts} +0 -0
- /package/components/{dropdown → datepicker}/dist/styles/default/color-css.d.ts +0 -0
- /package/components/{dropdown/dist/styles/default/bibStyles-css.d.ts → datepicker/dist/styles/shapeSize-css.d.ts} +0 -0
- /package/components/{dropdown/dist/styles/default/style-css.d.ts → datepicker/dist/styles/snowflake/color-css.d.ts} +0 -0
- /package/components/{dropdown/dist/styles → datepicker/dist/styles/snowflake}/style-css.d.ts +0 -0
- /package/components/{menu/dist/styles/color-menu-css.d.ts → dropdown/dist/styles/classic/bibColors-css.d.ts} +0 -0
- /package/components/{menu/dist/styles/color-menuoption-css.d.ts → dropdown/dist/styles/classic/bibStyles-css.d.ts} +0 -0
- /package/components/{menu/dist/styles/style-menu-css.d.ts → dropdown/dist/styles/classic/color-css.d.ts} +0 -0
- /package/components/{menu/dist/styles/style-menuoption-css.d.ts → dropdown/dist/styles/classic/style-css.d.ts} +0 -0
- /package/components/menu/dist/styles/{tokens-css.d.ts → default/color-menu-css.d.ts} +0 -0
|
@@ -76,7 +76,7 @@ const t=globalThis,e$1=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShad
|
|
|
76
76
|
|
|
77
77
|
/* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
|
|
78
78
|
|
|
79
|
-
let AuroLibraryRuntimeUtils$
|
|
79
|
+
let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
|
|
80
80
|
|
|
81
81
|
/* eslint-disable jsdoc/require-param */
|
|
82
82
|
|
|
@@ -659,10 +659,11 @@ const flip$1 = function (options) {
|
|
|
659
659
|
const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
|
|
660
660
|
const nextPlacement = placements[nextIndex];
|
|
661
661
|
if (nextPlacement) {
|
|
662
|
-
var _overflowsData$;
|
|
663
662
|
const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;
|
|
664
|
-
|
|
665
|
-
if
|
|
663
|
+
if (!ignoreCrossAxisOverflow ||
|
|
664
|
+
// We leave the current main axis only if every placement on that axis
|
|
665
|
+
// overflows the main axis.
|
|
666
|
+
overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {
|
|
666
667
|
// Try next placement and re-run the lifecycle.
|
|
667
668
|
return {
|
|
668
669
|
data: {
|
|
@@ -1683,8 +1684,28 @@ class AuroFloatingUI {
|
|
|
1683
1684
|
if (!AuroFloatingUI.isMousePressHandlerInitialized && window && window.addEventListener) {
|
|
1684
1685
|
AuroFloatingUI.isMousePressHandlerInitialized = true;
|
|
1685
1686
|
|
|
1687
|
+
// Track timeout for isMousePressed reset to avoid race conditions
|
|
1688
|
+
if (!AuroFloatingUI._mousePressedTimeout) {
|
|
1689
|
+
AuroFloatingUI._mousePressedTimeout = null;
|
|
1690
|
+
}
|
|
1686
1691
|
const mouseEventGlobalHandler = (event) => {
|
|
1687
|
-
|
|
1692
|
+
const isPressed = event.type === 'mousedown';
|
|
1693
|
+
if (isPressed) {
|
|
1694
|
+
// Clear any pending timeout to prevent race condition
|
|
1695
|
+
if (AuroFloatingUI._mousePressedTimeout !== null) {
|
|
1696
|
+
clearTimeout(AuroFloatingUI._mousePressedTimeout);
|
|
1697
|
+
AuroFloatingUI._mousePressedTimeout = null;
|
|
1698
|
+
}
|
|
1699
|
+
if (!AuroFloatingUI.isMousePressed) {
|
|
1700
|
+
AuroFloatingUI.isMousePressed = true;
|
|
1701
|
+
}
|
|
1702
|
+
} else if (AuroFloatingUI.isMousePressed && !isPressed) {
|
|
1703
|
+
// Schedule reset and track timeout ID
|
|
1704
|
+
AuroFloatingUI._mousePressedTimeout = setTimeout(() => {
|
|
1705
|
+
AuroFloatingUI.isMousePressed = false;
|
|
1706
|
+
AuroFloatingUI._mousePressedTimeout = null;
|
|
1707
|
+
}, 0);
|
|
1708
|
+
}
|
|
1688
1709
|
};
|
|
1689
1710
|
|
|
1690
1711
|
window.addEventListener('mousedown', mouseEventGlobalHandler);
|
|
@@ -1811,6 +1832,7 @@ class AuroFloatingUI {
|
|
|
1811
1832
|
|
|
1812
1833
|
// Compute the position of the bib
|
|
1813
1834
|
computePosition(this.element.trigger, this.element.bib, {
|
|
1835
|
+
strategy: this.element.floaterConfig?.strategy || 'fixed',
|
|
1814
1836
|
placement: this.element.floaterConfig?.placement,
|
|
1815
1837
|
middleware: middleware || []
|
|
1816
1838
|
}).then(({ x, y }) => { // eslint-disable-line id-length
|
|
@@ -1945,8 +1967,9 @@ class AuroFloatingUI {
|
|
|
1945
1967
|
if (this.element.contains(activeElement) || this.element.bib?.contains(activeElement)) {
|
|
1946
1968
|
return;
|
|
1947
1969
|
}
|
|
1948
|
-
|
|
1949
|
-
if
|
|
1970
|
+
|
|
1971
|
+
// if fullscreen bib is in fullscreen mode, do not close
|
|
1972
|
+
if (this.element.bib.hasAttribute('isfullscreen')) {
|
|
1950
1973
|
return;
|
|
1951
1974
|
}
|
|
1952
1975
|
|
|
@@ -2128,10 +2151,11 @@ class AuroFloatingUI {
|
|
|
2128
2151
|
// Space is included as it's expected behavior for interactive elements
|
|
2129
2152
|
|
|
2130
2153
|
const origin = event.composedPath()[0];
|
|
2131
|
-
if (event.key === 'Enter' || (
|
|
2132
|
-
|
|
2154
|
+
if (event.key === 'Enter' || event.key === ' ' && (!origin || origin.tagName !== "INPUT")) {
|
|
2155
|
+
|
|
2156
|
+
event.preventDefault();
|
|
2133
2157
|
this.handleClick();
|
|
2134
|
-
}
|
|
2158
|
+
}
|
|
2135
2159
|
break;
|
|
2136
2160
|
case 'mouseenter':
|
|
2137
2161
|
if (this.element.hoverToggle) {
|
|
@@ -2247,8 +2271,6 @@ class AuroFloatingUI {
|
|
|
2247
2271
|
this.element.hoverToggle = this.element.floaterConfig.hoverToggle;
|
|
2248
2272
|
}
|
|
2249
2273
|
|
|
2250
|
-
document.body.append(this.element.bib);
|
|
2251
|
-
|
|
2252
2274
|
this.regenerateBibId();
|
|
2253
2275
|
this.handleTriggerTabIndex();
|
|
2254
2276
|
|
|
@@ -2285,6 +2307,267 @@ class AuroFloatingUI {
|
|
|
2285
2307
|
}
|
|
2286
2308
|
}
|
|
2287
2309
|
|
|
2310
|
+
// Selectors for focusable elements
|
|
2311
|
+
const FOCUSABLE_SELECTORS = [
|
|
2312
|
+
'a[href]',
|
|
2313
|
+
'button:not([disabled])',
|
|
2314
|
+
'textarea:not([disabled])',
|
|
2315
|
+
'input:not([disabled])',
|
|
2316
|
+
'select:not([disabled])',
|
|
2317
|
+
'[role="tab"]:not([disabled])',
|
|
2318
|
+
'[role="link"]:not([disabled])',
|
|
2319
|
+
'[role="button"]:not([disabled])',
|
|
2320
|
+
'[tabindex]:not([tabindex="-1"])',
|
|
2321
|
+
'[contenteditable]:not([contenteditable="false"])'
|
|
2322
|
+
];
|
|
2323
|
+
|
|
2324
|
+
// List of custom components that are known to be focusable
|
|
2325
|
+
const FOCUSABLE_COMPONENTS = [
|
|
2326
|
+
'auro-checkbox',
|
|
2327
|
+
'auro-radio',
|
|
2328
|
+
'auro-dropdown',
|
|
2329
|
+
'auro-button',
|
|
2330
|
+
'auro-combobox',
|
|
2331
|
+
'auro-input',
|
|
2332
|
+
'auro-counter',
|
|
2333
|
+
'auro-menu',
|
|
2334
|
+
'auro-select',
|
|
2335
|
+
'auro-datepicker',
|
|
2336
|
+
'auro-hyperlink',
|
|
2337
|
+
'auro-accordion',
|
|
2338
|
+
];
|
|
2339
|
+
|
|
2340
|
+
/**
|
|
2341
|
+
* Determines if a given element is a custom focusable component.
|
|
2342
|
+
* Returns true if the element matches a known focusable component and is not disabled.
|
|
2343
|
+
*
|
|
2344
|
+
* @param {HTMLElement} element The element to check for focusability.
|
|
2345
|
+
* @returns {boolean} True if the element is a focusable custom component, false otherwise.
|
|
2346
|
+
*/
|
|
2347
|
+
function isFocusableComponent(element) {
|
|
2348
|
+
const componentName = element.tagName.toLowerCase();
|
|
2349
|
+
|
|
2350
|
+
// Guard Clause: Element is a focusable component
|
|
2351
|
+
if (!FOCUSABLE_COMPONENTS.some((name) => element.hasAttribute(name) || componentName === name)) return false;
|
|
2352
|
+
|
|
2353
|
+
// Guard Clause: Element is not disabled
|
|
2354
|
+
if (element.hasAttribute('disabled')) return false;
|
|
2355
|
+
|
|
2356
|
+
// Guard Clause: The element is a hyperlink and has no href attribute
|
|
2357
|
+
if (componentName.match("hyperlink") && !element.hasAttribute('href')) return false;
|
|
2358
|
+
|
|
2359
|
+
// If all guard clauses pass, the element is a focusable component
|
|
2360
|
+
return true;
|
|
2361
|
+
}
|
|
2362
|
+
|
|
2363
|
+
/**
|
|
2364
|
+
* Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
|
|
2365
|
+
* Returns a unique, ordered array of elements that can receive focus.
|
|
2366
|
+
*
|
|
2367
|
+
* @param {HTMLElement} container The container to search within
|
|
2368
|
+
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
2369
|
+
*/
|
|
2370
|
+
function getFocusableElements(container) {
|
|
2371
|
+
// Get elements in DOM order by walking the tree
|
|
2372
|
+
const orderedFocusableElements = [];
|
|
2373
|
+
|
|
2374
|
+
// Define a recursive function to collect focusable elements in DOM order
|
|
2375
|
+
const collectFocusableElements = (root) => {
|
|
2376
|
+
// Check if current element is focusable
|
|
2377
|
+
if (root.nodeType === Node.ELEMENT_NODE) {
|
|
2378
|
+
// Check if this is a custom component that is focusable
|
|
2379
|
+
const isComponentFocusable = isFocusableComponent(root);
|
|
2380
|
+
|
|
2381
|
+
if (isComponentFocusable) {
|
|
2382
|
+
// Add the component itself as a focusable element and don't traverse its shadow DOM
|
|
2383
|
+
orderedFocusableElements.push(root);
|
|
2384
|
+
return; // Skip traversing inside this component
|
|
2385
|
+
}
|
|
2386
|
+
|
|
2387
|
+
// Check if the element itself matches any selector
|
|
2388
|
+
for (const selector of FOCUSABLE_SELECTORS) {
|
|
2389
|
+
if (root.matches?.(selector)) {
|
|
2390
|
+
orderedFocusableElements.push(root);
|
|
2391
|
+
break; // Once we know it's focusable, no need to check other selectors
|
|
2392
|
+
}
|
|
2393
|
+
}
|
|
2394
|
+
|
|
2395
|
+
// Process shadow DOM only for non-Auro components
|
|
2396
|
+
if (root.shadowRoot) {
|
|
2397
|
+
// Process shadow DOM children in order
|
|
2398
|
+
if (root.shadowRoot.children) {
|
|
2399
|
+
Array.from(root.shadowRoot.children).forEach(child => {
|
|
2400
|
+
collectFocusableElements(child);
|
|
2401
|
+
});
|
|
2402
|
+
}
|
|
2403
|
+
}
|
|
2404
|
+
|
|
2405
|
+
// Process slots and their assigned nodes in order
|
|
2406
|
+
if (root.tagName === 'SLOT') {
|
|
2407
|
+
const assignedNodes = root.assignedNodes({ flatten: true });
|
|
2408
|
+
for (const node of assignedNodes) {
|
|
2409
|
+
collectFocusableElements(node);
|
|
2410
|
+
}
|
|
2411
|
+
} else {
|
|
2412
|
+
// Process light DOM children in order
|
|
2413
|
+
if (root.children) {
|
|
2414
|
+
Array.from(root.children).forEach(child => {
|
|
2415
|
+
collectFocusableElements(child);
|
|
2416
|
+
});
|
|
2417
|
+
}
|
|
2418
|
+
}
|
|
2419
|
+
}
|
|
2420
|
+
};
|
|
2421
|
+
|
|
2422
|
+
// Start the traversal from the container
|
|
2423
|
+
collectFocusableElements(container);
|
|
2424
|
+
|
|
2425
|
+
// Remove duplicates that might have been collected through different paths
|
|
2426
|
+
// while preserving order
|
|
2427
|
+
const uniqueElements = [];
|
|
2428
|
+
const seen = new Set();
|
|
2429
|
+
|
|
2430
|
+
for (const element of orderedFocusableElements) {
|
|
2431
|
+
if (!seen.has(element)) {
|
|
2432
|
+
seen.add(element);
|
|
2433
|
+
uniqueElements.push(element);
|
|
2434
|
+
}
|
|
2435
|
+
}
|
|
2436
|
+
|
|
2437
|
+
return uniqueElements;
|
|
2438
|
+
}
|
|
2439
|
+
|
|
2440
|
+
/**
|
|
2441
|
+
* FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
|
|
2442
|
+
* It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
|
|
2443
|
+
*/
|
|
2444
|
+
class FocusTrap {
|
|
2445
|
+
/**
|
|
2446
|
+
* Creates a new FocusTrap instance for the given container element.
|
|
2447
|
+
* Initializes event listeners and prepares the container for focus management.
|
|
2448
|
+
*
|
|
2449
|
+
* @param {HTMLElement} container The DOM element to trap focus within.
|
|
2450
|
+
* @throws {Error} If the provided container is not a valid HTMLElement.
|
|
2451
|
+
*/
|
|
2452
|
+
constructor(container) {
|
|
2453
|
+
if (!container || !(container instanceof HTMLElement)) {
|
|
2454
|
+
throw new Error("FocusTrap requires a valid HTMLElement.");
|
|
2455
|
+
}
|
|
2456
|
+
|
|
2457
|
+
this.container = container;
|
|
2458
|
+
this.tabDirection = 'forward'; // or 'backward'
|
|
2459
|
+
|
|
2460
|
+
this._init();
|
|
2461
|
+
}
|
|
2462
|
+
|
|
2463
|
+
/**
|
|
2464
|
+
* Initializes the focus trap by setting up event listeners and attributes on the container.
|
|
2465
|
+
* Prepares the container for focus management, including support for shadow DOM and inert attributes.
|
|
2466
|
+
*
|
|
2467
|
+
* @private
|
|
2468
|
+
*/
|
|
2469
|
+
_init() {
|
|
2470
|
+
|
|
2471
|
+
// Add inert attribute to prevent focusing programmatically as well (if supported)
|
|
2472
|
+
if ('inert' in HTMLElement.prototype) {
|
|
2473
|
+
this.container.inert = false; // Ensure the container isn't inert
|
|
2474
|
+
this.container.setAttribute('data-focus-trap-container', true); // Mark for identification
|
|
2475
|
+
}
|
|
2476
|
+
|
|
2477
|
+
// Track tab direction
|
|
2478
|
+
this.container.addEventListener('keydown', this._onKeydown);
|
|
2479
|
+
}
|
|
2480
|
+
|
|
2481
|
+
/**
|
|
2482
|
+
* Handles keydown events to manage tab navigation within the container.
|
|
2483
|
+
* Ensures that focus wraps around when reaching the first or last focusable element.
|
|
2484
|
+
*
|
|
2485
|
+
* @param {KeyboardEvent} e The keyboard event triggered by user interaction.
|
|
2486
|
+
* @private
|
|
2487
|
+
*/
|
|
2488
|
+
_onKeydown = (e) => {
|
|
2489
|
+
|
|
2490
|
+
if (e.key === 'Tab') {
|
|
2491
|
+
|
|
2492
|
+
// Set the tab direction based on the key pressed
|
|
2493
|
+
this.tabDirection = e.shiftKey ? 'backward' : 'forward';
|
|
2494
|
+
|
|
2495
|
+
// Get the active element(s) in the document and shadow root
|
|
2496
|
+
// This will include the active element in the shadow DOM if it exists
|
|
2497
|
+
// Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
|
|
2498
|
+
let activeElement = document.activeElement;
|
|
2499
|
+
const actives = [activeElement];
|
|
2500
|
+
while (activeElement?.shadowRoot?.activeElement) {
|
|
2501
|
+
actives.push(activeElement.shadowRoot.activeElement);
|
|
2502
|
+
activeElement = activeElement.shadowRoot.activeElement;
|
|
2503
|
+
}
|
|
2504
|
+
|
|
2505
|
+
// Update the focusable elements
|
|
2506
|
+
const focusables = this._getFocusableElements();
|
|
2507
|
+
|
|
2508
|
+
// If we're at either end of the focusable elements, wrap around to the other end
|
|
2509
|
+
const focusIndex =
|
|
2510
|
+
(actives.includes(focusables[0]) || actives.includes(this.container)) && this.tabDirection === 'backward'
|
|
2511
|
+
? focusables.length - 1
|
|
2512
|
+
: actives.includes(focusables[focusables.length - 1]) && this.tabDirection === 'forward'
|
|
2513
|
+
? 0
|
|
2514
|
+
: null;
|
|
2515
|
+
|
|
2516
|
+
if (focusIndex !== null) {
|
|
2517
|
+
focusables[focusIndex].focus();
|
|
2518
|
+
e.preventDefault(); // Prevent default tab behavior
|
|
2519
|
+
e.stopPropagation(); // Stop the event from bubbling up
|
|
2520
|
+
}
|
|
2521
|
+
}
|
|
2522
|
+
};
|
|
2523
|
+
|
|
2524
|
+
/**
|
|
2525
|
+
* Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
|
|
2526
|
+
* Returns a unique, ordered array of elements that can receive focus.
|
|
2527
|
+
*
|
|
2528
|
+
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
2529
|
+
* @private
|
|
2530
|
+
*/
|
|
2531
|
+
_getFocusableElements() {
|
|
2532
|
+
// Use the imported utility function to get focusable elements
|
|
2533
|
+
const elements = getFocusableElements(this.container);
|
|
2534
|
+
|
|
2535
|
+
// Filter out any elements with the 'focus-bookend' class
|
|
2536
|
+
return elements;
|
|
2537
|
+
}
|
|
2538
|
+
|
|
2539
|
+
/**
|
|
2540
|
+
* Moves focus to the first focusable element within the container.
|
|
2541
|
+
* Useful for setting initial focus when activating the focus trap.
|
|
2542
|
+
*/
|
|
2543
|
+
focusFirstElement() {
|
|
2544
|
+
const focusables = this._getFocusableElements();
|
|
2545
|
+
if (focusables.length) focusables[0].focus();
|
|
2546
|
+
}
|
|
2547
|
+
|
|
2548
|
+
/**
|
|
2549
|
+
* Moves focus to the last focusable element within the container.
|
|
2550
|
+
* Useful for setting focus when deactivating or cycling focus in reverse.
|
|
2551
|
+
*/
|
|
2552
|
+
focusLastElement() {
|
|
2553
|
+
const focusables = this._getFocusableElements();
|
|
2554
|
+
if (focusables.length) focusables[focusables.length - 1].focus();
|
|
2555
|
+
}
|
|
2556
|
+
|
|
2557
|
+
/**
|
|
2558
|
+
* Removes event listeners and attributes added by the focus trap.
|
|
2559
|
+
* Call this method to clean up when the focus trap is no longer needed.
|
|
2560
|
+
*/
|
|
2561
|
+
disconnect() {
|
|
2562
|
+
|
|
2563
|
+
if (this.container.hasAttribute('data-focus-trap-container')) {
|
|
2564
|
+
this.container.removeAttribute('data-focus-trap-container');
|
|
2565
|
+
}
|
|
2566
|
+
|
|
2567
|
+
this.container.removeEventListener('keydown', this._onKeydown);
|
|
2568
|
+
}
|
|
2569
|
+
}
|
|
2570
|
+
|
|
2288
2571
|
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
2289
2572
|
// See LICENSE in the project root for license information.
|
|
2290
2573
|
|
|
@@ -2485,6 +2768,76 @@ var tokensCss$2 = i$2`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-d
|
|
|
2485
2768
|
|
|
2486
2769
|
var colorCss$3 = i$2`:host{color:var(--ds-auro-icon-color)}:host([customColor]){color:inherit}:host(:not([onDark])[variant=accent1]){--ds-auro-icon-color:var(--ds-basic-color-texticon-accent1, #265688)}:host(:not([onDark])[variant=disabled]){--ds-auro-icon-color:var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:not([onDark])[variant=muted]){--ds-auro-icon-color:var(--ds-basic-color-texticon-muted, #676767)}:host(:not([onDark])[variant=statusDefault]){--ds-auro-icon-color:var(--ds-basic-color-status-default, #afb9c6)}:host(:not([onDark])[variant=statusInfo]){--ds-auro-icon-color:var(--ds-basic-color-status-info, #01426a)}:host(:not([onDark])[variant=statusSuccess]){--ds-auro-icon-color:var(--ds-basic-color-status-success, #447a1f)}:host(:not([onDark])[variant=statusWarning]){--ds-auro-icon-color:var(--ds-basic-color-status-warning, #fac200)}:host(:not([onDark])[variant=statusError]){--ds-auro-icon-color:var(--ds-basic-color-status-error, #e31f26)}:host(:not([onDark])[variant=statusInfoSubtle]){--ds-auro-icon-color:var(--ds-basic-color-status-info-subtle, #ebf3f9)}:host(:not([onDark])[variant=statusSuccessSubtle]){--ds-auro-icon-color:var(--ds-basic-color-status-success-subtle, #d6eac7)}:host(:not([onDark])[variant=statusWarningSubtle]){--ds-auro-icon-color:var(--ds-basic-color-status-warning-subtle, #fff0b2)}:host(:not([onDark])[variant=statusErrorSubtle]){--ds-auro-icon-color:var(--ds-basic-color-status-error-subtle, #fbc6c6)}:host(:not([onDark])[variant=fareBasicEconomy]){--ds-auro-icon-color:var(--ds-basic-color-fare-basiceconomy, #97eaf8)}:host(:not([onDark])[variant=fareBusiness]){--ds-auro-icon-color:var(--ds-basic-color-fare-business, #01426a)}:host(:not([onDark])[variant=fareEconomy]){--ds-auro-icon-color:var(--ds-basic-color-fare-economy, #0074ca)}:host(:not([onDark])[variant=fareFirst]){--ds-auro-icon-color:var(--ds-basic-color-fare-first, #00274a)}:host(:not([onDark])[variant=farePremiumEconomy]){--ds-auro-icon-color:var(--ds-basic-color-fare-premiumeconomy, #005154)}:host(:not([onDark])[variant=tierOneWorldEmerald]){--ds-auro-icon-color:var(--ds-basic-color-tier-program-oneworld-emerald, #139142)}:host(:not([onDark])[variant=tierOneWorldSapphire]){--ds-auro-icon-color:var(--ds-basic-color-tier-program-oneworld-sapphire, #015daa)}:host(:not([onDark])[variant=tierOneWorldRuby]){--ds-auro-icon-color:var(--ds-basic-color-tier-program-oneworld-ruby, #a41d4a)}:host([onDark]){--ds-auro-icon-color:var(--ds-basic-color-texticon-inverse, #ffffff)}:host([onDark][variant=disabled]){--ds-auro-icon-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}:host([onDark][variant=muted]){--ds-auro-icon-color:var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][variant=statusError]){--ds-auro-icon-color:var(--ds-advanced-color-state-error-inverse, #f9a4a8)}`;
|
|
2487
2770
|
|
|
2771
|
+
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
2772
|
+
// See LICENSE in the project root for license information.
|
|
2773
|
+
|
|
2774
|
+
// ---------------------------------------------------------------------
|
|
2775
|
+
|
|
2776
|
+
/* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
|
|
2777
|
+
|
|
2778
|
+
let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
|
|
2779
|
+
|
|
2780
|
+
/* eslint-disable jsdoc/require-param */
|
|
2781
|
+
|
|
2782
|
+
/**
|
|
2783
|
+
* This will register a new custom element with the browser.
|
|
2784
|
+
* @param {String} name - The name of the custom element.
|
|
2785
|
+
* @param {Object} componentClass - The class to register as a custom element.
|
|
2786
|
+
* @returns {void}
|
|
2787
|
+
*/
|
|
2788
|
+
registerComponent(name, componentClass) {
|
|
2789
|
+
if (!customElements.get(name)) {
|
|
2790
|
+
customElements.define(name, class extends componentClass {});
|
|
2791
|
+
}
|
|
2792
|
+
}
|
|
2793
|
+
|
|
2794
|
+
/**
|
|
2795
|
+
* Finds and returns the closest HTML Element based on a selector.
|
|
2796
|
+
* @returns {void}
|
|
2797
|
+
*/
|
|
2798
|
+
closestElement(
|
|
2799
|
+
selector, // selector like in .closest()
|
|
2800
|
+
base = this, // extra functionality to skip a parent
|
|
2801
|
+
__Closest = (el, found = el && el.closest(selector)) =>
|
|
2802
|
+
!el || el === document || el === window
|
|
2803
|
+
? null // standard .closest() returns null for non-found selectors also
|
|
2804
|
+
: found
|
|
2805
|
+
? found // found a selector INside this element
|
|
2806
|
+
: __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
|
|
2807
|
+
) {
|
|
2808
|
+
return __Closest(base);
|
|
2809
|
+
}
|
|
2810
|
+
/* eslint-enable jsdoc/require-param */
|
|
2811
|
+
|
|
2812
|
+
/**
|
|
2813
|
+
* If the element passed is registered with a different tag name than what is passed in, the tag name is added as an attribute to the element.
|
|
2814
|
+
* @param {Object} elem - The element to check.
|
|
2815
|
+
* @param {String} tagName - The name of the Auro component to check for or add as an attribute.
|
|
2816
|
+
* @returns {void}
|
|
2817
|
+
*/
|
|
2818
|
+
handleComponentTagRename(elem, tagName) {
|
|
2819
|
+
const tag = tagName.toLowerCase();
|
|
2820
|
+
const elemTag = elem.tagName.toLowerCase();
|
|
2821
|
+
|
|
2822
|
+
if (elemTag !== tag) {
|
|
2823
|
+
elem.setAttribute(tag, true);
|
|
2824
|
+
}
|
|
2825
|
+
}
|
|
2826
|
+
|
|
2827
|
+
/**
|
|
2828
|
+
* Validates if an element is a specific Auro component.
|
|
2829
|
+
* @param {Object} elem - The element to validate.
|
|
2830
|
+
* @param {String} tagName - The name of the Auro component to check against.
|
|
2831
|
+
* @returns {Boolean} - Returns true if the element is the specified Auro component.
|
|
2832
|
+
*/
|
|
2833
|
+
elementMatch(elem, tagName) {
|
|
2834
|
+
const tag = tagName.toLowerCase();
|
|
2835
|
+
const elemTag = elem.tagName.toLowerCase();
|
|
2836
|
+
|
|
2837
|
+
return elemTag === tag || elem.hasAttribute(tag);
|
|
2838
|
+
}
|
|
2839
|
+
};
|
|
2840
|
+
|
|
2488
2841
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
2489
2842
|
// See LICENSE in the project root for license information.
|
|
2490
2843
|
|
|
@@ -2607,8 +2960,12 @@ class AuroIcon extends BaseIcon {
|
|
|
2607
2960
|
async firstUpdated() {
|
|
2608
2961
|
await super.firstUpdated();
|
|
2609
2962
|
|
|
2610
|
-
|
|
2611
|
-
|
|
2963
|
+
/**
|
|
2964
|
+
* icons provide a description for screen readers. Icon only instances Auro-button
|
|
2965
|
+
* depend on this description to provide context for the user using a screen reader.
|
|
2966
|
+
* Removes the SVG description for screen reader if ariaHidden is set to true.
|
|
2967
|
+
*/
|
|
2968
|
+
if (this.hasAttribute('ariaHidden') && this.svg) {
|
|
2612
2969
|
const svgDesc = this.svg.querySelector('desc');
|
|
2613
2970
|
|
|
2614
2971
|
if (svgDesc) {
|
|
@@ -2654,17 +3011,16 @@ class AuroIcon extends BaseIcon {
|
|
|
2654
3011
|
|
|
2655
3012
|
var iconVersion = '6.1.2';
|
|
2656
3013
|
|
|
2657
|
-
var styleCss$1 = i$2`:host{position:
|
|
3014
|
+
var styleCss$1 = i$2`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}: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}.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}`;
|
|
2658
3015
|
|
|
2659
3016
|
var colorCss$2 = i$2`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
|
|
2660
3017
|
|
|
2661
|
-
var tokensCss$1 = i$2`:host(:not([ondark])){--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-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-dropdown-trigger-border-color:
|
|
3018
|
+
var tokensCss$1 = i$2`:host(:not([ondark])){--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-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]){--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-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)}`;
|
|
2662
3019
|
|
|
2663
3020
|
// Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
2664
3021
|
// See LICENSE in the project root for license information.
|
|
2665
3022
|
|
|
2666
3023
|
|
|
2667
|
-
|
|
2668
3024
|
const DESIGN_TOKEN_BREAKPOINT_PREFIX = '--ds-grid-breakpoint-';
|
|
2669
3025
|
const DESIGN_TOKEN_BREAKPOINT_OPTIONS = [
|
|
2670
3026
|
'xl',
|
|
@@ -2680,7 +3036,7 @@ const DESIGN_TOKEN_BREAKPOINT_OPTIONS = [
|
|
|
2680
3036
|
*/
|
|
2681
3037
|
|
|
2682
3038
|
class AuroDropdownBib extends i {
|
|
2683
|
-
|
|
3039
|
+
// not extending AuroElement because Bib needs only `shape` prop
|
|
2684
3040
|
constructor() {
|
|
2685
3041
|
super();
|
|
2686
3042
|
|
|
@@ -2689,7 +3045,10 @@ class AuroDropdownBib extends i {
|
|
|
2689
3045
|
*/
|
|
2690
3046
|
this._mobileBreakpointValue = undefined;
|
|
2691
3047
|
|
|
2692
|
-
AuroLibraryRuntimeUtils$
|
|
3048
|
+
AuroLibraryRuntimeUtils$2.prototype.handleComponentTagRename(this, 'auro-dropdownbib');
|
|
3049
|
+
|
|
3050
|
+
this.shape = "rounded";
|
|
3051
|
+
this.matchWidth = false;
|
|
2693
3052
|
}
|
|
2694
3053
|
|
|
2695
3054
|
static get styles() {
|
|
@@ -2727,6 +3086,15 @@ class AuroDropdownBib extends i {
|
|
|
2727
3086
|
reflect: true
|
|
2728
3087
|
},
|
|
2729
3088
|
|
|
3089
|
+
/**
|
|
3090
|
+
* If declared, the bib width will match the trigger width.
|
|
3091
|
+
* @private
|
|
3092
|
+
*/
|
|
3093
|
+
matchWidth: {
|
|
3094
|
+
type: Boolean,
|
|
3095
|
+
reflect: true
|
|
3096
|
+
},
|
|
3097
|
+
|
|
2730
3098
|
/**
|
|
2731
3099
|
* If declared, will apply border-radius to the bib.
|
|
2732
3100
|
*/
|
|
@@ -2734,6 +3102,18 @@ class AuroDropdownBib extends i {
|
|
|
2734
3102
|
type: Boolean,
|
|
2735
3103
|
reflect: true
|
|
2736
3104
|
},
|
|
3105
|
+
|
|
3106
|
+
/**
|
|
3107
|
+
* A reference to the associated bib template element.
|
|
3108
|
+
*/
|
|
3109
|
+
bibTemplate: {
|
|
3110
|
+
type: Object
|
|
3111
|
+
},
|
|
3112
|
+
|
|
3113
|
+
shape: {
|
|
3114
|
+
type: String,
|
|
3115
|
+
reflect: true
|
|
3116
|
+
}
|
|
2737
3117
|
};
|
|
2738
3118
|
}
|
|
2739
3119
|
|
|
@@ -2766,13 +3146,62 @@ class AuroDropdownBib extends i {
|
|
|
2766
3146
|
}
|
|
2767
3147
|
}
|
|
2768
3148
|
});
|
|
3149
|
+
|
|
3150
|
+
if (this.bibTemplate) {
|
|
3151
|
+
// If the bib template is found, set the fullscreen attribute
|
|
3152
|
+
if (this.isFullscreen) {
|
|
3153
|
+
this.bibTemplate.setAttribute('isFullscreen', 'true');
|
|
3154
|
+
} else {
|
|
3155
|
+
this.bibTemplate.removeAttribute('isFullscreen');
|
|
3156
|
+
}
|
|
3157
|
+
}
|
|
2769
3158
|
}
|
|
2770
3159
|
}
|
|
2771
3160
|
|
|
3161
|
+
connectedCallback() {
|
|
3162
|
+
super.connectedCallback();
|
|
3163
|
+
|
|
3164
|
+
// Listen for the auro-bibtemplate-connected event to set the fullscreen attribute
|
|
3165
|
+
this.addEventListener('auro-bibtemplate-connected', (event) => {
|
|
3166
|
+
const bibTemplate = event.detail.element;
|
|
3167
|
+
this.bibTemplate = bibTemplate;
|
|
3168
|
+
|
|
3169
|
+
if (bibTemplate) {
|
|
3170
|
+
// If the bib template is found, set the fullscreen attribute
|
|
3171
|
+
if (this.isFullscreen) {
|
|
3172
|
+
bibTemplate.setAttribute('isFullscreen', 'true');
|
|
3173
|
+
} else {
|
|
3174
|
+
bibTemplate.removeAttribute('isFullscreen');
|
|
3175
|
+
}
|
|
3176
|
+
}
|
|
3177
|
+
});
|
|
3178
|
+
}
|
|
3179
|
+
|
|
3180
|
+
firstUpdated(changedProperties) {
|
|
3181
|
+
super.firstUpdated(changedProperties);
|
|
3182
|
+
|
|
3183
|
+
// Dispatch a custom event when the component is connected
|
|
3184
|
+
this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
|
|
3185
|
+
bubbles: true,
|
|
3186
|
+
composed: true,
|
|
3187
|
+
detail: {
|
|
3188
|
+
element: this
|
|
3189
|
+
}
|
|
3190
|
+
}));
|
|
3191
|
+
}
|
|
3192
|
+
|
|
2772
3193
|
// function that renders the HTML and CSS into the scope of the component
|
|
2773
3194
|
render() {
|
|
3195
|
+
const classes = {
|
|
3196
|
+
container: true
|
|
3197
|
+
};
|
|
3198
|
+
|
|
3199
|
+
// Since this class does not inherit from AuroElement, we apply the shape-related class within the `render` function,
|
|
3200
|
+
// mimicking the class naming convention used in AuroElement.resetShapeClasses.
|
|
3201
|
+
classes[`shape-${this.shape}`] = true;
|
|
3202
|
+
|
|
2774
3203
|
return u$1`
|
|
2775
|
-
<div class="
|
|
3204
|
+
<div class="${e$2(classes)}" part="bibContainer">
|
|
2776
3205
|
<slot></slot>
|
|
2777
3206
|
</div>
|
|
2778
3207
|
`;
|
|
@@ -2781,21 +3210,21 @@ class AuroDropdownBib extends i {
|
|
|
2781
3210
|
|
|
2782
3211
|
var dropdownVersion = '3.0.0';
|
|
2783
3212
|
|
|
2784
|
-
var shapeSizeCss = i$2`.shape-classic-xl,.shape-classic-lg,.shape-classic-md,.shape-classic-sm,.shape-classic-xs{min-height:58px;max-height:58px;border-style:solid;border-width:1px;border-radius:var(--ds-border-radius, 0.375rem)}.shape-classic-xl.simple,.shape-classic-lg.simple,.shape-classic-md.simple,.shape-classic-sm.simple,.shape-classic-xs.simple{border-width:
|
|
3213
|
+
var shapeSizeCss = i$2`.wrapper{overflow:hidden}.shape-classic-xl,.shape-classic-lg,.shape-classic-md,.shape-classic-sm,.shape-classic-xs{min-height:58px;max-height:58px;border-style:solid;border-width:1px;border-radius:var(--ds-border-radius, 0.375rem)}.shape-classic-xl.simple,.shape-classic-lg.simple,.shape-classic-md.simple,.shape-classic-sm.simple,.shape-classic-xs.simple{border-width:0px;min-height:60px;max-height:60px;background-color:unset;box-shadow:none}.shape-classic-xl.thin,.shape-classic-lg.thin,.shape-classic-md.thin,.shape-classic-sm.thin,.shape-classic-xs.thin{border-width:1px;min-height:58px;max-height:58px;background-color:unset}.shape-classic-xl.parentBorder,.shape-classic-lg.parentBorder,.shape-classic-md.parentBorder,.shape-classic-sm.parentBorder,.shape-classic-xs.parentBorder{border:0;box-shadow:unset;min-height:56px;max-height:56px}.shape-snowflake-xl,.shape-snowflake-lg,.shape-snowflake-md,.shape-snowflake-sm,.shape-snowflake-xs{min-height:56px;max-height:56px;border-style:solid;border-width:2px;border-color:transparent;border-radius:30px}.shape-snowflake-xl.simple,.shape-snowflake-lg.simple,.shape-snowflake-md.simple,.shape-snowflake-sm.simple,.shape-snowflake-xs.simple{border-width:0px;min-height:60px;max-height:60px;background-color:unset;box-shadow:none}.shape-snowflake-xl.thin,.shape-snowflake-lg.thin,.shape-snowflake-md.thin,.shape-snowflake-sm.thin,.shape-snowflake-xs.thin{border-width:1px;min-height:58px;max-height:58px;background-color:unset}.shape-snowflake-xl.parentBorder,.shape-snowflake-lg.parentBorder,.shape-snowflake-md.parentBorder,.shape-snowflake-sm.parentBorder,.shape-snowflake-xs.parentBorder{border:0;box-shadow:unset;min-height:56px;max-height:56px}.shape-box-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-box-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-box-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-rounded-lg{min-height:56px;max-height:56px;border-style:solid;border-width:2px;border-color:transparent;border-radius:6px}.shape-rounded-lg.simple{border-width:0px;min-height:56px;max-height:56px;background-color:unset;box-shadow:none}.shape-rounded-lg.thin{border-width:1px;min-height:54px;max-height:54px;background-color:unset}.shape-rounded-lg.parentBorder{border:0;box-shadow:unset;min-height:52px;max-height:52px}.shape-pill-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px}.shape-pill-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-left-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px 0 0 36px}.shape-pill-left-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-left-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-left-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-right-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 36px 36px 0}.shape-pill-right-xl.simple{border-width:0px;min-height:72px;max-height:72px;background-color:unset;box-shadow:none}.shape-pill-right-xl.thin{border-width:1px;min-height:70px;max-height:70px;background-color:unset}.shape-pill-right-xl.parentBorder{border:0;box-shadow:unset;min-height:68px;max-height:68px}.shape-pill-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px}.shape-pill-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}.shape-pill-left-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:36px 0 0 36px}.shape-pill-left-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-left-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-left-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}.shape-pill-right-md{min-height:44px;max-height:44px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 36px 36px 0}.shape-pill-right-md.simple{border-width:0px;min-height:48px;max-height:48px;background-color:unset;box-shadow:none}.shape-pill-right-md.thin{border-width:1px;min-height:46px;max-height:46px;background-color:unset}.shape-pill-right-md.parentBorder{border:0;box-shadow:unset;min-height:44px;max-height:44px}`;
|
|
2785
3214
|
|
|
2786
|
-
var colorCss$1 = i$2`:host .wrapper{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-background-color);color:var(--ds-auro-dropdown-trigger-text-color)}:host(:not([ondark])) .wrapper:focus,:host(:not([ondark])) .wrapper:
|
|
3215
|
+
var colorCss$1 = i$2`:host(:not([ondark])) .wrapper{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-background-color);color:var(--ds-auro-dropdown-trigger-text-color)}:host(:not([ondark])) .wrapper:focus-within,:host(:not([ondark])) .wrapper:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused, #01426a);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused, #01426a)}:host(:not([onDark])[disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([ondark])[error]){--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]) .label{color:var(--ds-auro-dropdown-label-text-color)}:host([onDark]) .wrapper{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-background-color);color:var(--ds-auro-dropdown-trigger-text-color)}:host([onDark]) .wrapper:focus-within,:host([onDark]) .wrapper:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused-inverse, #ffffff)}:host([onDark][disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse-disabled, rgba(255, 255, 255, 0.1))}:host([ondark][error]){--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error-subtle, #fbc6c6)}`;
|
|
2787
3216
|
|
|
2788
|
-
var classicColorCss = i$2
|
|
3217
|
+
var classicColorCss = i$2``;
|
|
2789
3218
|
|
|
2790
|
-
var classicLayoutCss = i$2`:host([layout*=classic]){position:relative;max-width:100%}:host([layout*=classic]) #bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}:host([layout*=classic]) .label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}:host([layout*=classic]) .label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}:host([layout*=classic]) .
|
|
3219
|
+
var classicLayoutCss = i$2`:host([layout*=classic]){position:relative;max-width:100%}:host([layout*=classic]) #bibSizer{position:absolute;z-index:-1;opacity:0;pointer-events:none}:host([layout*=classic]) .label{font-size:var(--ds-text-body-size-xs, 0.75rem);line-height:var(--ds-text-body-size-default, 1rem);transition:font-size .3s cubic-bezier(0.215, 0.61, 0.355, 1);white-space:normal}:host([layout*=classic]) .label[hasTrigger=false]{font-size:var(--ds-text-body-size-default, 1rem)}:host([layout*=classic]) .wrapper{display:flex;flex-direction:row;box-shadow:inset 0 0 0 1px var(--ds-auro-dropdown-trigger-outline-color)}@media(hover: hover){:host([layout*=classic]) .wrapper:hover{cursor:pointer}}:host([layout*=classic]) .triggerContentWrapper{overflow:hidden;flex:1;justify-content:start;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) #showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;padding-right:var(--ds-size-150, 0.75rem)}:host([layout*=classic]) #showStateIcon [auro-icon]{height:var(--ds-size-300, 1.5rem);line-height:var(--ds-size-300, 1.5rem)}:host([layout*=classic]) #showStateIcon[data-expanded=true] [auro-icon]{transform:rotate(-180deg)}:host([layout*=classic]:not([simple])) .triggerContentWrapper{padding-left:var(--ds-size-150, 0.75rem)}:host([layout*=classic][matchwidth]) #bibSizer{width:100%}:host([layout*=classic][disabled]){pointer-events:none}`;
|
|
2791
3220
|
|
|
2792
|
-
var styleEmphasizedCss = i$2`:host{display:block}.wrapper{display:flex;flex
|
|
3221
|
+
var styleEmphasizedCss = i$2`:host{display:block}.layout-emphasized .chevron,.layout-emphasized-left .chevron,.layout-emphasized-right .chevron{margin-right:var(--ds-size-300, 1.5rem)}.wrapper{display:flex;flex:1;flex-direction:row;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{display:flex;overflow:hidden;width:100%;flex:1;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap}:host([layout*=emphasized][shape*=pill]:not([layout*=right])) .leftIndent{width:calc(100% - var(--ds-size-300, 1.5rem));margin-left:var(--ds-size-300, 1.5rem)}:host([layout*=emphasized][shape*=pill]:not([layout*=left])) .rightIndent{width:calc(100% - var(--ds-size-300, 1.5rem));margin-right:var(--ds-size-300, 1.5rem)}:host([layout*=emphasized][shape*=pill]:not([layout*=left]):not([layout*=right])) .rightIndent{width:calc(100% - var(--ds-size-600, 3rem));margin-right:var(--ds-size-300, 1.5rem)}`;
|
|
2793
3222
|
|
|
2794
|
-
var styleSnowflakeCss = i$2`:host{display:block}.wrapper{display:flex;flex
|
|
3223
|
+
var styleSnowflakeCss = i$2`:host{display:block}.wrapper{display:flex;flex:1;flex-direction:row;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{display:flex;overflow:hidden;width:100%;flex:1;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap}:host([layout*=snowflake]) .leftIndent{width:calc(100% - var(--ds-size-600, 3rem));margin-left:var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .rightIndent{width:calc(100% - var(--ds-size-600, 3rem));margin-right:var(--ds-size-300, 1.5rem)}.layout-snowflake .chevron,.layout-snowflake-left .chevron,.layout-snowflake-right .chevron{margin-right:var(--ds-size-300, 1.5rem)}`;
|
|
2795
3224
|
|
|
2796
|
-
var colorCss = i$2`:host([error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]){--ds-auro-helptext-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][error]){--ds-auro-helptext-color: var(--ds-
|
|
3225
|
+
var colorCss = i$2`:host([error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error, #e31f26)}:host([onDark]){--ds-auro-helptext-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db)}:host([onDark][error]){--ds-auro-helptext-color: var(--ds-basic-color-status-error-subtle, #fbc6c6)}.helptext-wrapper{color:var(--ds-auro-helptext-color)}`;
|
|
2797
3226
|
|
|
2798
|
-
var styleCss = i$2`.helptext-wrapper{display:none;font-size:
|
|
3227
|
+
var styleCss = i$2`.helptext-wrapper{display:none;font-size:12px;font-weight:450;letter-spacing:0;line-height:16px}:host([large]) .helptext-wrapper{font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}.helptext-wrapper[visible]{display:block}::slotted(*:not(:empty)){margin-top:var(--ds-size-50, 0.25rem);margin-bottom:0}::slotted(p){margin-block:0}`;
|
|
2799
3228
|
|
|
2800
3229
|
var tokensCss = i$2`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
|
|
2801
3230
|
|
|
@@ -3036,18 +3465,21 @@ class AuroElement extends i {
|
|
|
3036
3465
|
}
|
|
3037
3466
|
|
|
3038
3467
|
resetShapeClasses() {
|
|
3039
|
-
|
|
3040
|
-
const wrapper = this.shadowRoot.querySelector('.wrapper');
|
|
3468
|
+
const wrapper = this.shadowRoot.querySelector('.wrapper');
|
|
3041
3469
|
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
|
|
3045
|
-
|
|
3046
|
-
|
|
3047
|
-
|
|
3470
|
+
if (wrapper) {
|
|
3471
|
+
wrapper.classList.forEach((className) => {
|
|
3472
|
+
if (className.startsWith('shape-')) {
|
|
3473
|
+
wrapper.classList.remove(className);
|
|
3474
|
+
}
|
|
3475
|
+
});
|
|
3048
3476
|
|
|
3049
|
-
|
|
3050
|
-
|
|
3477
|
+
}
|
|
3478
|
+
|
|
3479
|
+
if (this.shape && this.size) {
|
|
3480
|
+
wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
|
|
3481
|
+
} else {
|
|
3482
|
+
wrapper.classList.add('shape-none');
|
|
3051
3483
|
}
|
|
3052
3484
|
}
|
|
3053
3485
|
|
|
@@ -3119,20 +3551,16 @@ class AuroDropdown extends AuroElement {
|
|
|
3119
3551
|
this.matchWidth = false;
|
|
3120
3552
|
this.noHideOnThisFocusLoss = false;
|
|
3121
3553
|
|
|
3122
|
-
this.errorMessage = ''; // TODO
|
|
3554
|
+
this.errorMessage = ''; // TODO - check with Doug if there is still more to do here
|
|
3123
3555
|
|
|
3124
3556
|
// Layout Config
|
|
3125
3557
|
this.layout = 'classic';
|
|
3126
|
-
this.shape = '
|
|
3558
|
+
this.shape = 'classic';
|
|
3127
3559
|
this.size = 'xl';
|
|
3128
3560
|
|
|
3129
|
-
this.
|
|
3130
|
-
}
|
|
3561
|
+
this.parentBorder = false;
|
|
3131
3562
|
|
|
3132
|
-
|
|
3133
|
-
return {
|
|
3134
|
-
// 'withValue': this.value && this.value.length > 0
|
|
3135
|
-
};
|
|
3563
|
+
this.privateDefaults();
|
|
3136
3564
|
}
|
|
3137
3565
|
|
|
3138
3566
|
get commonWrapperClasses() {
|
|
@@ -3140,7 +3568,8 @@ class AuroDropdown extends AuroElement {
|
|
|
3140
3568
|
'trigger': true,
|
|
3141
3569
|
'wrapper': true,
|
|
3142
3570
|
'hasFocus': this.hasFocus,
|
|
3143
|
-
'simple': this.simple
|
|
3571
|
+
'simple': this.simple,
|
|
3572
|
+
'parentBorder': this.parentBorder
|
|
3144
3573
|
};
|
|
3145
3574
|
}
|
|
3146
3575
|
|
|
@@ -3151,6 +3580,7 @@ class AuroDropdown extends AuroElement {
|
|
|
3151
3580
|
privateDefaults() {
|
|
3152
3581
|
this.chevron = false;
|
|
3153
3582
|
this.disabled = false;
|
|
3583
|
+
this.disableFocusTrap = false;
|
|
3154
3584
|
this.error = false;
|
|
3155
3585
|
this.inset = false;
|
|
3156
3586
|
this.rounded = false;
|
|
@@ -3192,7 +3622,7 @@ class AuroDropdown extends AuroElement {
|
|
|
3192
3622
|
/**
|
|
3193
3623
|
* @private
|
|
3194
3624
|
*/
|
|
3195
|
-
this.runtimeUtils = new AuroLibraryRuntimeUtils$
|
|
3625
|
+
this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
|
|
3196
3626
|
|
|
3197
3627
|
/**
|
|
3198
3628
|
* @private
|
|
@@ -3253,6 +3683,18 @@ class AuroDropdown extends AuroElement {
|
|
|
3253
3683
|
this.floater.showBib();
|
|
3254
3684
|
}
|
|
3255
3685
|
|
|
3686
|
+
/**
|
|
3687
|
+
* When bib is open, focus on the first element inside of bib.
|
|
3688
|
+
* If not, trigger element will get focus.
|
|
3689
|
+
*/
|
|
3690
|
+
focus() {
|
|
3691
|
+
if (this.isPopoverVisible && this.focusTrap) {
|
|
3692
|
+
this.focusTrap.focusFirstElement();
|
|
3693
|
+
} else {
|
|
3694
|
+
this.trigger.focus();
|
|
3695
|
+
}
|
|
3696
|
+
}
|
|
3697
|
+
|
|
3256
3698
|
// function to define props used within the scope of this component
|
|
3257
3699
|
static get properties() {
|
|
3258
3700
|
return {
|
|
@@ -3299,6 +3741,14 @@ class AuroDropdown extends AuroElement {
|
|
|
3299
3741
|
reflect: true
|
|
3300
3742
|
},
|
|
3301
3743
|
|
|
3744
|
+
/**
|
|
3745
|
+
* If declare, the focus trap inside of bib will be turned off.
|
|
3746
|
+
*/
|
|
3747
|
+
disableFocusTrap: {
|
|
3748
|
+
type: Boolean,
|
|
3749
|
+
reflect: true
|
|
3750
|
+
},
|
|
3751
|
+
|
|
3302
3752
|
/**
|
|
3303
3753
|
* @private
|
|
3304
3754
|
*/
|
|
@@ -3407,6 +3857,15 @@ class AuroDropdown extends AuroElement {
|
|
|
3407
3857
|
reflect: true
|
|
3408
3858
|
},
|
|
3409
3859
|
|
|
3860
|
+
/**
|
|
3861
|
+
* Defines if the trigger should size based on the parent element providing the border UI.
|
|
3862
|
+
* @private
|
|
3863
|
+
*/
|
|
3864
|
+
parentBorder: {
|
|
3865
|
+
type: Boolean,
|
|
3866
|
+
reflect: true
|
|
3867
|
+
},
|
|
3868
|
+
|
|
3410
3869
|
/**
|
|
3411
3870
|
* If declared, the popover and trigger will be set to the same width.
|
|
3412
3871
|
*/
|
|
@@ -3534,7 +3993,7 @@ class AuroDropdown extends AuroElement {
|
|
|
3534
3993
|
*
|
|
3535
3994
|
*/
|
|
3536
3995
|
static register(name = "auro-dropdown") {
|
|
3537
|
-
AuroLibraryRuntimeUtils$
|
|
3996
|
+
AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroDropdown);
|
|
3538
3997
|
}
|
|
3539
3998
|
|
|
3540
3999
|
/**
|
|
@@ -3572,6 +4031,12 @@ class AuroDropdown extends AuroElement {
|
|
|
3572
4031
|
this.handleTriggerContentSlotChange();
|
|
3573
4032
|
}
|
|
3574
4033
|
|
|
4034
|
+
if (changedProperties.has('isPopoverVisible')) {
|
|
4035
|
+
this.updateFocusTrap();
|
|
4036
|
+
if (!this.isPopoverVisible && this.hasFocus) {
|
|
4037
|
+
this.trigger.focus();
|
|
4038
|
+
}
|
|
4039
|
+
}
|
|
3575
4040
|
}
|
|
3576
4041
|
|
|
3577
4042
|
firstUpdated() {
|
|
@@ -3637,6 +4102,27 @@ class AuroDropdown extends AuroElement {
|
|
|
3637
4102
|
this.hasFocus = true;
|
|
3638
4103
|
}
|
|
3639
4104
|
|
|
4105
|
+
/**
|
|
4106
|
+
* @private
|
|
4107
|
+
*/
|
|
4108
|
+
updateFocusTrap() {
|
|
4109
|
+
// If the dropdown is open, create a focus trap and focus the first element
|
|
4110
|
+
if (this.isPopoverVisible && !this.disableFocusTrap) {
|
|
4111
|
+
this.focusTrap = new FocusTrap(this.bibContent);
|
|
4112
|
+
this.focusTrap.focusFirstElement();
|
|
4113
|
+
return;
|
|
4114
|
+
}
|
|
4115
|
+
|
|
4116
|
+
// Guard Clause: Ensure there is a focus trap currently active before continuing
|
|
4117
|
+
if (!this.focusTrap) {
|
|
4118
|
+
return;
|
|
4119
|
+
}
|
|
4120
|
+
|
|
4121
|
+
// If the dropdown is not open, disconnect the focus trap if it exists
|
|
4122
|
+
this.focusTrap.disconnect();
|
|
4123
|
+
this.focusTrap = undefined;
|
|
4124
|
+
}
|
|
4125
|
+
|
|
3640
4126
|
/**
|
|
3641
4127
|
* Function to support @focusout event.
|
|
3642
4128
|
* @private
|
|
@@ -3797,14 +4283,13 @@ class AuroDropdown extends AuroElement {
|
|
|
3797
4283
|
* @returns {void}
|
|
3798
4284
|
*/
|
|
3799
4285
|
handleTriggerContentSlotChange(event) {
|
|
3800
|
-
|
|
3801
4286
|
this.floater.handleTriggerTabIndex();
|
|
3802
4287
|
|
|
3803
4288
|
// Get the trigger
|
|
3804
4289
|
const trigger = this.shadowRoot.querySelector('#trigger');
|
|
3805
4290
|
|
|
3806
4291
|
// Get the trigger slot
|
|
3807
|
-
const triggerSlot = this.shadowRoot.querySelector('.
|
|
4292
|
+
const triggerSlot = this.shadowRoot.querySelector('.triggerContentWrapper slot');
|
|
3808
4293
|
|
|
3809
4294
|
// If there's a trigger slot
|
|
3810
4295
|
if (triggerSlot) {
|
|
@@ -3867,40 +4352,15 @@ class AuroDropdown extends AuroElement {
|
|
|
3867
4352
|
*
|
|
3868
4353
|
* @private
|
|
3869
4354
|
* @method handleDefaultSlot
|
|
3870
|
-
* @param {Event} event - The event object representing the slot change.
|
|
3871
4355
|
* @fires Function#onSlotChange - Optional callback invoked when the slot content changes.
|
|
3872
4356
|
*/
|
|
3873
|
-
handleDefaultSlot(
|
|
3874
|
-
[...event.target.assignedNodes()].forEach((node) => this.bibContent.append(node));
|
|
4357
|
+
handleDefaultSlot() {
|
|
3875
4358
|
|
|
3876
4359
|
if (this.onSlotChange) {
|
|
3877
4360
|
this.onSlotChange();
|
|
3878
4361
|
}
|
|
3879
4362
|
}
|
|
3880
4363
|
|
|
3881
|
-
/**
|
|
3882
|
-
* @private
|
|
3883
|
-
* @method handleLabelSlotChange
|
|
3884
|
-
* @param {event} event - The event object representing the slot change.
|
|
3885
|
-
* @description Handles the slot change event for the label slot.
|
|
3886
|
-
*/
|
|
3887
|
-
handleLabelSlotChange (event) {
|
|
3888
|
-
|
|
3889
|
-
// Get the nodes from the event
|
|
3890
|
-
const nodes = event.target.assignedNodes();
|
|
3891
|
-
|
|
3892
|
-
// Guard clause for no nodes
|
|
3893
|
-
if (!nodes) {
|
|
3894
|
-
return;
|
|
3895
|
-
}
|
|
3896
|
-
|
|
3897
|
-
// Convert the nodes to a measurable array so we can get the length
|
|
3898
|
-
const nodesArr = Array.from(nodes);
|
|
3899
|
-
|
|
3900
|
-
// If the nodes array has a length, the dropdown is labeled
|
|
3901
|
-
this.labeled = nodesArr.length > 0;
|
|
3902
|
-
}
|
|
3903
|
-
|
|
3904
4364
|
/**
|
|
3905
4365
|
* Returns HTML for the common portion of the layouts.
|
|
3906
4366
|
* @private
|
|
@@ -3915,24 +4375,20 @@ class AuroDropdown extends AuroElement {
|
|
|
3915
4375
|
class="${e$2(this.commonWrapperClasses)}" part="wrapper"
|
|
3916
4376
|
tabindex="${this.tabIndex}"
|
|
3917
4377
|
role="${o(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
3918
|
-
aria-expanded="${o(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
3919
|
-
aria-controls="${o(this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
4378
|
+
aria-expanded="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
4379
|
+
aria-controls="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
3920
4380
|
aria-labelledby="${o(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
3921
4381
|
@focusin="${this.handleFocusin}"
|
|
3922
4382
|
@blur="${this.handleFocusOut}">
|
|
3923
|
-
<div class="triggerContentWrapper">
|
|
3924
|
-
<
|
|
3925
|
-
|
|
3926
|
-
|
|
3927
|
-
<div class="triggerContent">
|
|
3928
|
-
<slot
|
|
3929
|
-
name="trigger"
|
|
3930
|
-
@slotchange="${this.handleTriggerContentSlotChange}"></slot>
|
|
3931
|
-
</div>
|
|
4383
|
+
<div class="triggerContentWrapper" id="triggerLabel">
|
|
4384
|
+
<slot
|
|
4385
|
+
name="trigger"
|
|
4386
|
+
@slotchange="${this.handleTriggerContentSlotChange}"></slot>
|
|
3932
4387
|
</div>
|
|
3933
|
-
${this.chevron
|
|
4388
|
+
${this.chevron ? u$1`
|
|
3934
4389
|
<div
|
|
3935
4390
|
id="showStateIcon"
|
|
4391
|
+
class="chevron"
|
|
3936
4392
|
part="chevron">
|
|
3937
4393
|
<${this.iconTag}
|
|
3938
4394
|
category="interface"
|
|
@@ -3947,17 +4403,18 @@ class AuroDropdown extends AuroElement {
|
|
|
3947
4403
|
<div class="${e$2(helpTextClasses)}">
|
|
3948
4404
|
<slot name="helpText"></slot>
|
|
3949
4405
|
</div>
|
|
3950
|
-
<div class="slotContent">
|
|
3951
|
-
<slot @slotchange="${this.handleDefaultSlot}"></slot>
|
|
3952
|
-
</div>
|
|
3953
4406
|
<div id="bibSizer" part="size"></div>
|
|
3954
4407
|
<${this.dropdownBibTag}
|
|
3955
4408
|
id="bib"
|
|
4409
|
+
shape="${this.shape}"
|
|
3956
4410
|
?data-show="${this.isPopoverVisible}"
|
|
3957
4411
|
?isfullscreen="${this.isBibFullscreen}"
|
|
3958
4412
|
?common="${this.common}"
|
|
3959
4413
|
?rounded="${this.common || this.rounded}"
|
|
3960
4414
|
?inset="${this.common || this.inset}">
|
|
4415
|
+
<div class="slotContent">
|
|
4416
|
+
<slot @slotchange="${this.handleDefaultSlot}"></slot>
|
|
4417
|
+
</div>
|
|
3961
4418
|
</${this.dropdownBibTag}>
|
|
3962
4419
|
</div>
|
|
3963
4420
|
`;
|
|
@@ -3969,67 +4426,14 @@ class AuroDropdown extends AuroElement {
|
|
|
3969
4426
|
* @returns {html} - Returns HTML for the classic layout.
|
|
3970
4427
|
*/
|
|
3971
4428
|
renderLayoutClassic() {
|
|
4429
|
+
// TODO: check with Doug why this was never used?
|
|
3972
4430
|
const helpTextClasses = {
|
|
3973
|
-
'helpText': true
|
|
3974
|
-
'leftIndent': false,
|
|
3975
|
-
'rightIndent': false
|
|
4431
|
+
'helpText': true
|
|
3976
4432
|
};
|
|
3977
4433
|
|
|
3978
4434
|
return u$1`
|
|
3979
4435
|
${this.renderBasicHtml(helpTextClasses)}
|
|
3980
4436
|
`;
|
|
3981
|
-
// return html`
|
|
3982
|
-
// <div>
|
|
3983
|
-
// <div
|
|
3984
|
-
// id="trigger"
|
|
3985
|
-
// class="trigger"
|
|
3986
|
-
// part="trigger"
|
|
3987
|
-
// tabindex="${this.tabIndex}"
|
|
3988
|
-
// ?showBorder="${this.showTriggerBorders}"
|
|
3989
|
-
// role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
3990
|
-
// aria-expanded="${ifDefined(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
3991
|
-
// aria-controls="${ifDefined(this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
3992
|
-
// aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
3993
|
-
// >
|
|
3994
|
-
// <div class="triggerContentWrapper">
|
|
3995
|
-
// <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
|
|
3996
|
-
// <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
|
|
3997
|
-
// </label>
|
|
3998
|
-
// <div class="triggerContent">
|
|
3999
|
-
// <slot
|
|
4000
|
-
// name="trigger"
|
|
4001
|
-
// @slotchange="${this.handleTriggerContentSlotChange}"></slot>
|
|
4002
|
-
// </div>
|
|
4003
|
-
// </div>
|
|
4004
|
-
// ${this.chevron || this.common ? html`
|
|
4005
|
-
// <div
|
|
4006
|
-
// id="showStateIcon"
|
|
4007
|
-
// part="chevron">
|
|
4008
|
-
// <${this.iconTag}
|
|
4009
|
-
// category="interface"
|
|
4010
|
-
// name="chevron-down"
|
|
4011
|
-
// ?onDark="${this.onDark}"
|
|
4012
|
-
// variant="${this.disabled ? 'disabled' : 'muted'}">
|
|
4013
|
-
// >
|
|
4014
|
-
// </${this.iconTag}>
|
|
4015
|
-
// </div>
|
|
4016
|
-
// ` : undefined }
|
|
4017
|
-
// </div>
|
|
4018
|
-
// <div class="slotContent">
|
|
4019
|
-
// <slot @slotchange="${this.handleDefaultSlot}"></slot>
|
|
4020
|
-
// </div>
|
|
4021
|
-
// <div id="bibSizer" part="size"></div>
|
|
4022
|
-
// <${this.dropdownBibTag}
|
|
4023
|
-
// id="bib"
|
|
4024
|
-
// ?data-show="${this.isPopoverVisible}"
|
|
4025
|
-
// ?isfullscreen="${this.isBibFullscreen}"
|
|
4026
|
-
// ?common="${this.common}"
|
|
4027
|
-
// ?rounded="${this.common || this.rounded}"
|
|
4028
|
-
// ?inset="${this.common || this.inset}"
|
|
4029
|
-
// >
|
|
4030
|
-
// </${this.dropdownBibTag}>
|
|
4031
|
-
// </div>
|
|
4032
|
-
// `;
|
|
4033
4437
|
}
|
|
4034
4438
|
|
|
4035
4439
|
/**
|