@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
|
@@ -51,7 +51,7 @@ const t=globalThis,e$1=t.ShadowRoot&&(void 0===t.ShadyCSS||t.ShadyCSS.nativeShad
|
|
|
51
51
|
|
|
52
52
|
/* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
|
|
53
53
|
|
|
54
|
-
let AuroLibraryRuntimeUtils$
|
|
54
|
+
let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
|
|
55
55
|
|
|
56
56
|
/* eslint-disable jsdoc/require-param */
|
|
57
57
|
|
|
@@ -634,10 +634,11 @@ const flip$1 = function (options) {
|
|
|
634
634
|
const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
|
|
635
635
|
const nextPlacement = placements[nextIndex];
|
|
636
636
|
if (nextPlacement) {
|
|
637
|
-
var _overflowsData$;
|
|
638
637
|
const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;
|
|
639
|
-
|
|
640
|
-
if
|
|
638
|
+
if (!ignoreCrossAxisOverflow ||
|
|
639
|
+
// We leave the current main axis only if every placement on that axis
|
|
640
|
+
// overflows the main axis.
|
|
641
|
+
overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {
|
|
641
642
|
// Try next placement and re-run the lifecycle.
|
|
642
643
|
return {
|
|
643
644
|
data: {
|
|
@@ -1658,8 +1659,28 @@ class AuroFloatingUI {
|
|
|
1658
1659
|
if (!AuroFloatingUI.isMousePressHandlerInitialized && window && window.addEventListener) {
|
|
1659
1660
|
AuroFloatingUI.isMousePressHandlerInitialized = true;
|
|
1660
1661
|
|
|
1662
|
+
// Track timeout for isMousePressed reset to avoid race conditions
|
|
1663
|
+
if (!AuroFloatingUI._mousePressedTimeout) {
|
|
1664
|
+
AuroFloatingUI._mousePressedTimeout = null;
|
|
1665
|
+
}
|
|
1661
1666
|
const mouseEventGlobalHandler = (event) => {
|
|
1662
|
-
|
|
1667
|
+
const isPressed = event.type === 'mousedown';
|
|
1668
|
+
if (isPressed) {
|
|
1669
|
+
// Clear any pending timeout to prevent race condition
|
|
1670
|
+
if (AuroFloatingUI._mousePressedTimeout !== null) {
|
|
1671
|
+
clearTimeout(AuroFloatingUI._mousePressedTimeout);
|
|
1672
|
+
AuroFloatingUI._mousePressedTimeout = null;
|
|
1673
|
+
}
|
|
1674
|
+
if (!AuroFloatingUI.isMousePressed) {
|
|
1675
|
+
AuroFloatingUI.isMousePressed = true;
|
|
1676
|
+
}
|
|
1677
|
+
} else if (AuroFloatingUI.isMousePressed && !isPressed) {
|
|
1678
|
+
// Schedule reset and track timeout ID
|
|
1679
|
+
AuroFloatingUI._mousePressedTimeout = setTimeout(() => {
|
|
1680
|
+
AuroFloatingUI.isMousePressed = false;
|
|
1681
|
+
AuroFloatingUI._mousePressedTimeout = null;
|
|
1682
|
+
}, 0);
|
|
1683
|
+
}
|
|
1663
1684
|
};
|
|
1664
1685
|
|
|
1665
1686
|
window.addEventListener('mousedown', mouseEventGlobalHandler);
|
|
@@ -1786,6 +1807,7 @@ class AuroFloatingUI {
|
|
|
1786
1807
|
|
|
1787
1808
|
// Compute the position of the bib
|
|
1788
1809
|
computePosition(this.element.trigger, this.element.bib, {
|
|
1810
|
+
strategy: this.element.floaterConfig?.strategy || 'fixed',
|
|
1789
1811
|
placement: this.element.floaterConfig?.placement,
|
|
1790
1812
|
middleware: middleware || []
|
|
1791
1813
|
}).then(({ x, y }) => { // eslint-disable-line id-length
|
|
@@ -1920,8 +1942,9 @@ class AuroFloatingUI {
|
|
|
1920
1942
|
if (this.element.contains(activeElement) || this.element.bib?.contains(activeElement)) {
|
|
1921
1943
|
return;
|
|
1922
1944
|
}
|
|
1923
|
-
|
|
1924
|
-
if
|
|
1945
|
+
|
|
1946
|
+
// if fullscreen bib is in fullscreen mode, do not close
|
|
1947
|
+
if (this.element.bib.hasAttribute('isfullscreen')) {
|
|
1925
1948
|
return;
|
|
1926
1949
|
}
|
|
1927
1950
|
|
|
@@ -2103,10 +2126,11 @@ class AuroFloatingUI {
|
|
|
2103
2126
|
// Space is included as it's expected behavior for interactive elements
|
|
2104
2127
|
|
|
2105
2128
|
const origin = event.composedPath()[0];
|
|
2106
|
-
if (event.key === 'Enter' || (
|
|
2107
|
-
|
|
2129
|
+
if (event.key === 'Enter' || event.key === ' ' && (!origin || origin.tagName !== "INPUT")) {
|
|
2130
|
+
|
|
2131
|
+
event.preventDefault();
|
|
2108
2132
|
this.handleClick();
|
|
2109
|
-
}
|
|
2133
|
+
}
|
|
2110
2134
|
break;
|
|
2111
2135
|
case 'mouseenter':
|
|
2112
2136
|
if (this.element.hoverToggle) {
|
|
@@ -2222,8 +2246,6 @@ class AuroFloatingUI {
|
|
|
2222
2246
|
this.element.hoverToggle = this.element.floaterConfig.hoverToggle;
|
|
2223
2247
|
}
|
|
2224
2248
|
|
|
2225
|
-
document.body.append(this.element.bib);
|
|
2226
|
-
|
|
2227
2249
|
this.regenerateBibId();
|
|
2228
2250
|
this.handleTriggerTabIndex();
|
|
2229
2251
|
|
|
@@ -2260,6 +2282,267 @@ class AuroFloatingUI {
|
|
|
2260
2282
|
}
|
|
2261
2283
|
}
|
|
2262
2284
|
|
|
2285
|
+
// Selectors for focusable elements
|
|
2286
|
+
const FOCUSABLE_SELECTORS = [
|
|
2287
|
+
'a[href]',
|
|
2288
|
+
'button:not([disabled])',
|
|
2289
|
+
'textarea:not([disabled])',
|
|
2290
|
+
'input:not([disabled])',
|
|
2291
|
+
'select:not([disabled])',
|
|
2292
|
+
'[role="tab"]:not([disabled])',
|
|
2293
|
+
'[role="link"]:not([disabled])',
|
|
2294
|
+
'[role="button"]:not([disabled])',
|
|
2295
|
+
'[tabindex]:not([tabindex="-1"])',
|
|
2296
|
+
'[contenteditable]:not([contenteditable="false"])'
|
|
2297
|
+
];
|
|
2298
|
+
|
|
2299
|
+
// List of custom components that are known to be focusable
|
|
2300
|
+
const FOCUSABLE_COMPONENTS = [
|
|
2301
|
+
'auro-checkbox',
|
|
2302
|
+
'auro-radio',
|
|
2303
|
+
'auro-dropdown',
|
|
2304
|
+
'auro-button',
|
|
2305
|
+
'auro-combobox',
|
|
2306
|
+
'auro-input',
|
|
2307
|
+
'auro-counter',
|
|
2308
|
+
'auro-menu',
|
|
2309
|
+
'auro-select',
|
|
2310
|
+
'auro-datepicker',
|
|
2311
|
+
'auro-hyperlink',
|
|
2312
|
+
'auro-accordion',
|
|
2313
|
+
];
|
|
2314
|
+
|
|
2315
|
+
/**
|
|
2316
|
+
* Determines if a given element is a custom focusable component.
|
|
2317
|
+
* Returns true if the element matches a known focusable component and is not disabled.
|
|
2318
|
+
*
|
|
2319
|
+
* @param {HTMLElement} element The element to check for focusability.
|
|
2320
|
+
* @returns {boolean} True if the element is a focusable custom component, false otherwise.
|
|
2321
|
+
*/
|
|
2322
|
+
function isFocusableComponent(element) {
|
|
2323
|
+
const componentName = element.tagName.toLowerCase();
|
|
2324
|
+
|
|
2325
|
+
// Guard Clause: Element is a focusable component
|
|
2326
|
+
if (!FOCUSABLE_COMPONENTS.some((name) => element.hasAttribute(name) || componentName === name)) return false;
|
|
2327
|
+
|
|
2328
|
+
// Guard Clause: Element is not disabled
|
|
2329
|
+
if (element.hasAttribute('disabled')) return false;
|
|
2330
|
+
|
|
2331
|
+
// Guard Clause: The element is a hyperlink and has no href attribute
|
|
2332
|
+
if (componentName.match("hyperlink") && !element.hasAttribute('href')) return false;
|
|
2333
|
+
|
|
2334
|
+
// If all guard clauses pass, the element is a focusable component
|
|
2335
|
+
return true;
|
|
2336
|
+
}
|
|
2337
|
+
|
|
2338
|
+
/**
|
|
2339
|
+
* Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
|
|
2340
|
+
* Returns a unique, ordered array of elements that can receive focus.
|
|
2341
|
+
*
|
|
2342
|
+
* @param {HTMLElement} container The container to search within
|
|
2343
|
+
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
2344
|
+
*/
|
|
2345
|
+
function getFocusableElements(container) {
|
|
2346
|
+
// Get elements in DOM order by walking the tree
|
|
2347
|
+
const orderedFocusableElements = [];
|
|
2348
|
+
|
|
2349
|
+
// Define a recursive function to collect focusable elements in DOM order
|
|
2350
|
+
const collectFocusableElements = (root) => {
|
|
2351
|
+
// Check if current element is focusable
|
|
2352
|
+
if (root.nodeType === Node.ELEMENT_NODE) {
|
|
2353
|
+
// Check if this is a custom component that is focusable
|
|
2354
|
+
const isComponentFocusable = isFocusableComponent(root);
|
|
2355
|
+
|
|
2356
|
+
if (isComponentFocusable) {
|
|
2357
|
+
// Add the component itself as a focusable element and don't traverse its shadow DOM
|
|
2358
|
+
orderedFocusableElements.push(root);
|
|
2359
|
+
return; // Skip traversing inside this component
|
|
2360
|
+
}
|
|
2361
|
+
|
|
2362
|
+
// Check if the element itself matches any selector
|
|
2363
|
+
for (const selector of FOCUSABLE_SELECTORS) {
|
|
2364
|
+
if (root.matches?.(selector)) {
|
|
2365
|
+
orderedFocusableElements.push(root);
|
|
2366
|
+
break; // Once we know it's focusable, no need to check other selectors
|
|
2367
|
+
}
|
|
2368
|
+
}
|
|
2369
|
+
|
|
2370
|
+
// Process shadow DOM only for non-Auro components
|
|
2371
|
+
if (root.shadowRoot) {
|
|
2372
|
+
// Process shadow DOM children in order
|
|
2373
|
+
if (root.shadowRoot.children) {
|
|
2374
|
+
Array.from(root.shadowRoot.children).forEach(child => {
|
|
2375
|
+
collectFocusableElements(child);
|
|
2376
|
+
});
|
|
2377
|
+
}
|
|
2378
|
+
}
|
|
2379
|
+
|
|
2380
|
+
// Process slots and their assigned nodes in order
|
|
2381
|
+
if (root.tagName === 'SLOT') {
|
|
2382
|
+
const assignedNodes = root.assignedNodes({ flatten: true });
|
|
2383
|
+
for (const node of assignedNodes) {
|
|
2384
|
+
collectFocusableElements(node);
|
|
2385
|
+
}
|
|
2386
|
+
} else {
|
|
2387
|
+
// Process light DOM children in order
|
|
2388
|
+
if (root.children) {
|
|
2389
|
+
Array.from(root.children).forEach(child => {
|
|
2390
|
+
collectFocusableElements(child);
|
|
2391
|
+
});
|
|
2392
|
+
}
|
|
2393
|
+
}
|
|
2394
|
+
}
|
|
2395
|
+
};
|
|
2396
|
+
|
|
2397
|
+
// Start the traversal from the container
|
|
2398
|
+
collectFocusableElements(container);
|
|
2399
|
+
|
|
2400
|
+
// Remove duplicates that might have been collected through different paths
|
|
2401
|
+
// while preserving order
|
|
2402
|
+
const uniqueElements = [];
|
|
2403
|
+
const seen = new Set();
|
|
2404
|
+
|
|
2405
|
+
for (const element of orderedFocusableElements) {
|
|
2406
|
+
if (!seen.has(element)) {
|
|
2407
|
+
seen.add(element);
|
|
2408
|
+
uniqueElements.push(element);
|
|
2409
|
+
}
|
|
2410
|
+
}
|
|
2411
|
+
|
|
2412
|
+
return uniqueElements;
|
|
2413
|
+
}
|
|
2414
|
+
|
|
2415
|
+
/**
|
|
2416
|
+
* FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
|
|
2417
|
+
* It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
|
|
2418
|
+
*/
|
|
2419
|
+
class FocusTrap {
|
|
2420
|
+
/**
|
|
2421
|
+
* Creates a new FocusTrap instance for the given container element.
|
|
2422
|
+
* Initializes event listeners and prepares the container for focus management.
|
|
2423
|
+
*
|
|
2424
|
+
* @param {HTMLElement} container The DOM element to trap focus within.
|
|
2425
|
+
* @throws {Error} If the provided container is not a valid HTMLElement.
|
|
2426
|
+
*/
|
|
2427
|
+
constructor(container) {
|
|
2428
|
+
if (!container || !(container instanceof HTMLElement)) {
|
|
2429
|
+
throw new Error("FocusTrap requires a valid HTMLElement.");
|
|
2430
|
+
}
|
|
2431
|
+
|
|
2432
|
+
this.container = container;
|
|
2433
|
+
this.tabDirection = 'forward'; // or 'backward'
|
|
2434
|
+
|
|
2435
|
+
this._init();
|
|
2436
|
+
}
|
|
2437
|
+
|
|
2438
|
+
/**
|
|
2439
|
+
* Initializes the focus trap by setting up event listeners and attributes on the container.
|
|
2440
|
+
* Prepares the container for focus management, including support for shadow DOM and inert attributes.
|
|
2441
|
+
*
|
|
2442
|
+
* @private
|
|
2443
|
+
*/
|
|
2444
|
+
_init() {
|
|
2445
|
+
|
|
2446
|
+
// Add inert attribute to prevent focusing programmatically as well (if supported)
|
|
2447
|
+
if ('inert' in HTMLElement.prototype) {
|
|
2448
|
+
this.container.inert = false; // Ensure the container isn't inert
|
|
2449
|
+
this.container.setAttribute('data-focus-trap-container', true); // Mark for identification
|
|
2450
|
+
}
|
|
2451
|
+
|
|
2452
|
+
// Track tab direction
|
|
2453
|
+
this.container.addEventListener('keydown', this._onKeydown);
|
|
2454
|
+
}
|
|
2455
|
+
|
|
2456
|
+
/**
|
|
2457
|
+
* Handles keydown events to manage tab navigation within the container.
|
|
2458
|
+
* Ensures that focus wraps around when reaching the first or last focusable element.
|
|
2459
|
+
*
|
|
2460
|
+
* @param {KeyboardEvent} e The keyboard event triggered by user interaction.
|
|
2461
|
+
* @private
|
|
2462
|
+
*/
|
|
2463
|
+
_onKeydown = (e) => {
|
|
2464
|
+
|
|
2465
|
+
if (e.key === 'Tab') {
|
|
2466
|
+
|
|
2467
|
+
// Set the tab direction based on the key pressed
|
|
2468
|
+
this.tabDirection = e.shiftKey ? 'backward' : 'forward';
|
|
2469
|
+
|
|
2470
|
+
// Get the active element(s) in the document and shadow root
|
|
2471
|
+
// This will include the active element in the shadow DOM if it exists
|
|
2472
|
+
// Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
|
|
2473
|
+
let activeElement = document.activeElement;
|
|
2474
|
+
const actives = [activeElement];
|
|
2475
|
+
while (activeElement?.shadowRoot?.activeElement) {
|
|
2476
|
+
actives.push(activeElement.shadowRoot.activeElement);
|
|
2477
|
+
activeElement = activeElement.shadowRoot.activeElement;
|
|
2478
|
+
}
|
|
2479
|
+
|
|
2480
|
+
// Update the focusable elements
|
|
2481
|
+
const focusables = this._getFocusableElements();
|
|
2482
|
+
|
|
2483
|
+
// If we're at either end of the focusable elements, wrap around to the other end
|
|
2484
|
+
const focusIndex =
|
|
2485
|
+
(actives.includes(focusables[0]) || actives.includes(this.container)) && this.tabDirection === 'backward'
|
|
2486
|
+
? focusables.length - 1
|
|
2487
|
+
: actives.includes(focusables[focusables.length - 1]) && this.tabDirection === 'forward'
|
|
2488
|
+
? 0
|
|
2489
|
+
: null;
|
|
2490
|
+
|
|
2491
|
+
if (focusIndex !== null) {
|
|
2492
|
+
focusables[focusIndex].focus();
|
|
2493
|
+
e.preventDefault(); // Prevent default tab behavior
|
|
2494
|
+
e.stopPropagation(); // Stop the event from bubbling up
|
|
2495
|
+
}
|
|
2496
|
+
}
|
|
2497
|
+
};
|
|
2498
|
+
|
|
2499
|
+
/**
|
|
2500
|
+
* Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
|
|
2501
|
+
* Returns a unique, ordered array of elements that can receive focus.
|
|
2502
|
+
*
|
|
2503
|
+
* @returns {Array<HTMLElement>} An array of focusable elements within the container.
|
|
2504
|
+
* @private
|
|
2505
|
+
*/
|
|
2506
|
+
_getFocusableElements() {
|
|
2507
|
+
// Use the imported utility function to get focusable elements
|
|
2508
|
+
const elements = getFocusableElements(this.container);
|
|
2509
|
+
|
|
2510
|
+
// Filter out any elements with the 'focus-bookend' class
|
|
2511
|
+
return elements;
|
|
2512
|
+
}
|
|
2513
|
+
|
|
2514
|
+
/**
|
|
2515
|
+
* Moves focus to the first focusable element within the container.
|
|
2516
|
+
* Useful for setting initial focus when activating the focus trap.
|
|
2517
|
+
*/
|
|
2518
|
+
focusFirstElement() {
|
|
2519
|
+
const focusables = this._getFocusableElements();
|
|
2520
|
+
if (focusables.length) focusables[0].focus();
|
|
2521
|
+
}
|
|
2522
|
+
|
|
2523
|
+
/**
|
|
2524
|
+
* Moves focus to the last focusable element within the container.
|
|
2525
|
+
* Useful for setting focus when deactivating or cycling focus in reverse.
|
|
2526
|
+
*/
|
|
2527
|
+
focusLastElement() {
|
|
2528
|
+
const focusables = this._getFocusableElements();
|
|
2529
|
+
if (focusables.length) focusables[focusables.length - 1].focus();
|
|
2530
|
+
}
|
|
2531
|
+
|
|
2532
|
+
/**
|
|
2533
|
+
* Removes event listeners and attributes added by the focus trap.
|
|
2534
|
+
* Call this method to clean up when the focus trap is no longer needed.
|
|
2535
|
+
*/
|
|
2536
|
+
disconnect() {
|
|
2537
|
+
|
|
2538
|
+
if (this.container.hasAttribute('data-focus-trap-container')) {
|
|
2539
|
+
this.container.removeAttribute('data-focus-trap-container');
|
|
2540
|
+
}
|
|
2541
|
+
|
|
2542
|
+
this.container.removeEventListener('keydown', this._onKeydown);
|
|
2543
|
+
}
|
|
2544
|
+
}
|
|
2545
|
+
|
|
2263
2546
|
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
2264
2547
|
// See LICENSE in the project root for license information.
|
|
2265
2548
|
|
|
@@ -2460,6 +2743,76 @@ var tokensCss$2 = i$2`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-d
|
|
|
2460
2743
|
|
|
2461
2744
|
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)}`;
|
|
2462
2745
|
|
|
2746
|
+
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
2747
|
+
// See LICENSE in the project root for license information.
|
|
2748
|
+
|
|
2749
|
+
// ---------------------------------------------------------------------
|
|
2750
|
+
|
|
2751
|
+
/* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
|
|
2752
|
+
|
|
2753
|
+
let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
|
|
2754
|
+
|
|
2755
|
+
/* eslint-disable jsdoc/require-param */
|
|
2756
|
+
|
|
2757
|
+
/**
|
|
2758
|
+
* This will register a new custom element with the browser.
|
|
2759
|
+
* @param {String} name - The name of the custom element.
|
|
2760
|
+
* @param {Object} componentClass - The class to register as a custom element.
|
|
2761
|
+
* @returns {void}
|
|
2762
|
+
*/
|
|
2763
|
+
registerComponent(name, componentClass) {
|
|
2764
|
+
if (!customElements.get(name)) {
|
|
2765
|
+
customElements.define(name, class extends componentClass {});
|
|
2766
|
+
}
|
|
2767
|
+
}
|
|
2768
|
+
|
|
2769
|
+
/**
|
|
2770
|
+
* Finds and returns the closest HTML Element based on a selector.
|
|
2771
|
+
* @returns {void}
|
|
2772
|
+
*/
|
|
2773
|
+
closestElement(
|
|
2774
|
+
selector, // selector like in .closest()
|
|
2775
|
+
base = this, // extra functionality to skip a parent
|
|
2776
|
+
__Closest = (el, found = el && el.closest(selector)) =>
|
|
2777
|
+
!el || el === document || el === window
|
|
2778
|
+
? null // standard .closest() returns null for non-found selectors also
|
|
2779
|
+
: found
|
|
2780
|
+
? found // found a selector INside this element
|
|
2781
|
+
: __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
|
|
2782
|
+
) {
|
|
2783
|
+
return __Closest(base);
|
|
2784
|
+
}
|
|
2785
|
+
/* eslint-enable jsdoc/require-param */
|
|
2786
|
+
|
|
2787
|
+
/**
|
|
2788
|
+
* 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.
|
|
2789
|
+
* @param {Object} elem - The element to check.
|
|
2790
|
+
* @param {String} tagName - The name of the Auro component to check for or add as an attribute.
|
|
2791
|
+
* @returns {void}
|
|
2792
|
+
*/
|
|
2793
|
+
handleComponentTagRename(elem, tagName) {
|
|
2794
|
+
const tag = tagName.toLowerCase();
|
|
2795
|
+
const elemTag = elem.tagName.toLowerCase();
|
|
2796
|
+
|
|
2797
|
+
if (elemTag !== tag) {
|
|
2798
|
+
elem.setAttribute(tag, true);
|
|
2799
|
+
}
|
|
2800
|
+
}
|
|
2801
|
+
|
|
2802
|
+
/**
|
|
2803
|
+
* Validates if an element is a specific Auro component.
|
|
2804
|
+
* @param {Object} elem - The element to validate.
|
|
2805
|
+
* @param {String} tagName - The name of the Auro component to check against.
|
|
2806
|
+
* @returns {Boolean} - Returns true if the element is the specified Auro component.
|
|
2807
|
+
*/
|
|
2808
|
+
elementMatch(elem, tagName) {
|
|
2809
|
+
const tag = tagName.toLowerCase();
|
|
2810
|
+
const elemTag = elem.tagName.toLowerCase();
|
|
2811
|
+
|
|
2812
|
+
return elemTag === tag || elem.hasAttribute(tag);
|
|
2813
|
+
}
|
|
2814
|
+
};
|
|
2815
|
+
|
|
2463
2816
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
2464
2817
|
// See LICENSE in the project root for license information.
|
|
2465
2818
|
|
|
@@ -2582,8 +2935,12 @@ class AuroIcon extends BaseIcon {
|
|
|
2582
2935
|
async firstUpdated() {
|
|
2583
2936
|
await super.firstUpdated();
|
|
2584
2937
|
|
|
2585
|
-
|
|
2586
|
-
|
|
2938
|
+
/**
|
|
2939
|
+
* icons provide a description for screen readers. Icon only instances Auro-button
|
|
2940
|
+
* depend on this description to provide context for the user using a screen reader.
|
|
2941
|
+
* Removes the SVG description for screen reader if ariaHidden is set to true.
|
|
2942
|
+
*/
|
|
2943
|
+
if (this.hasAttribute('ariaHidden') && this.svg) {
|
|
2587
2944
|
const svgDesc = this.svg.querySelector('desc');
|
|
2588
2945
|
|
|
2589
2946
|
if (svgDesc) {
|
|
@@ -2629,17 +2986,16 @@ class AuroIcon extends BaseIcon {
|
|
|
2629
2986
|
|
|
2630
2987
|
var iconVersion = '6.1.2';
|
|
2631
2988
|
|
|
2632
|
-
var styleCss$1 = i$2`:host{position:
|
|
2989
|
+
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}`;
|
|
2633
2990
|
|
|
2634
2991
|
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)}`;
|
|
2635
2992
|
|
|
2636
|
-
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:
|
|
2993
|
+
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)}`;
|
|
2637
2994
|
|
|
2638
2995
|
// Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
2639
2996
|
// See LICENSE in the project root for license information.
|
|
2640
2997
|
|
|
2641
2998
|
|
|
2642
|
-
|
|
2643
2999
|
const DESIGN_TOKEN_BREAKPOINT_PREFIX = '--ds-grid-breakpoint-';
|
|
2644
3000
|
const DESIGN_TOKEN_BREAKPOINT_OPTIONS = [
|
|
2645
3001
|
'xl',
|
|
@@ -2655,7 +3011,7 @@ const DESIGN_TOKEN_BREAKPOINT_OPTIONS = [
|
|
|
2655
3011
|
*/
|
|
2656
3012
|
|
|
2657
3013
|
class AuroDropdownBib extends i {
|
|
2658
|
-
|
|
3014
|
+
// not extending AuroElement because Bib needs only `shape` prop
|
|
2659
3015
|
constructor() {
|
|
2660
3016
|
super();
|
|
2661
3017
|
|
|
@@ -2664,7 +3020,10 @@ class AuroDropdownBib extends i {
|
|
|
2664
3020
|
*/
|
|
2665
3021
|
this._mobileBreakpointValue = undefined;
|
|
2666
3022
|
|
|
2667
|
-
AuroLibraryRuntimeUtils$
|
|
3023
|
+
AuroLibraryRuntimeUtils$2.prototype.handleComponentTagRename(this, 'auro-dropdownbib');
|
|
3024
|
+
|
|
3025
|
+
this.shape = "rounded";
|
|
3026
|
+
this.matchWidth = false;
|
|
2668
3027
|
}
|
|
2669
3028
|
|
|
2670
3029
|
static get styles() {
|
|
@@ -2702,6 +3061,15 @@ class AuroDropdownBib extends i {
|
|
|
2702
3061
|
reflect: true
|
|
2703
3062
|
},
|
|
2704
3063
|
|
|
3064
|
+
/**
|
|
3065
|
+
* If declared, the bib width will match the trigger width.
|
|
3066
|
+
* @private
|
|
3067
|
+
*/
|
|
3068
|
+
matchWidth: {
|
|
3069
|
+
type: Boolean,
|
|
3070
|
+
reflect: true
|
|
3071
|
+
},
|
|
3072
|
+
|
|
2705
3073
|
/**
|
|
2706
3074
|
* If declared, will apply border-radius to the bib.
|
|
2707
3075
|
*/
|
|
@@ -2709,6 +3077,18 @@ class AuroDropdownBib extends i {
|
|
|
2709
3077
|
type: Boolean,
|
|
2710
3078
|
reflect: true
|
|
2711
3079
|
},
|
|
3080
|
+
|
|
3081
|
+
/**
|
|
3082
|
+
* A reference to the associated bib template element.
|
|
3083
|
+
*/
|
|
3084
|
+
bibTemplate: {
|
|
3085
|
+
type: Object
|
|
3086
|
+
},
|
|
3087
|
+
|
|
3088
|
+
shape: {
|
|
3089
|
+
type: String,
|
|
3090
|
+
reflect: true
|
|
3091
|
+
}
|
|
2712
3092
|
};
|
|
2713
3093
|
}
|
|
2714
3094
|
|
|
@@ -2741,13 +3121,62 @@ class AuroDropdownBib extends i {
|
|
|
2741
3121
|
}
|
|
2742
3122
|
}
|
|
2743
3123
|
});
|
|
3124
|
+
|
|
3125
|
+
if (this.bibTemplate) {
|
|
3126
|
+
// If the bib template is found, set the fullscreen attribute
|
|
3127
|
+
if (this.isFullscreen) {
|
|
3128
|
+
this.bibTemplate.setAttribute('isFullscreen', 'true');
|
|
3129
|
+
} else {
|
|
3130
|
+
this.bibTemplate.removeAttribute('isFullscreen');
|
|
3131
|
+
}
|
|
3132
|
+
}
|
|
2744
3133
|
}
|
|
2745
3134
|
}
|
|
2746
3135
|
|
|
3136
|
+
connectedCallback() {
|
|
3137
|
+
super.connectedCallback();
|
|
3138
|
+
|
|
3139
|
+
// Listen for the auro-bibtemplate-connected event to set the fullscreen attribute
|
|
3140
|
+
this.addEventListener('auro-bibtemplate-connected', (event) => {
|
|
3141
|
+
const bibTemplate = event.detail.element;
|
|
3142
|
+
this.bibTemplate = bibTemplate;
|
|
3143
|
+
|
|
3144
|
+
if (bibTemplate) {
|
|
3145
|
+
// If the bib template is found, set the fullscreen attribute
|
|
3146
|
+
if (this.isFullscreen) {
|
|
3147
|
+
bibTemplate.setAttribute('isFullscreen', 'true');
|
|
3148
|
+
} else {
|
|
3149
|
+
bibTemplate.removeAttribute('isFullscreen');
|
|
3150
|
+
}
|
|
3151
|
+
}
|
|
3152
|
+
});
|
|
3153
|
+
}
|
|
3154
|
+
|
|
3155
|
+
firstUpdated(changedProperties) {
|
|
3156
|
+
super.firstUpdated(changedProperties);
|
|
3157
|
+
|
|
3158
|
+
// Dispatch a custom event when the component is connected
|
|
3159
|
+
this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
|
|
3160
|
+
bubbles: true,
|
|
3161
|
+
composed: true,
|
|
3162
|
+
detail: {
|
|
3163
|
+
element: this
|
|
3164
|
+
}
|
|
3165
|
+
}));
|
|
3166
|
+
}
|
|
3167
|
+
|
|
2747
3168
|
// function that renders the HTML and CSS into the scope of the component
|
|
2748
3169
|
render() {
|
|
3170
|
+
const classes = {
|
|
3171
|
+
container: true
|
|
3172
|
+
};
|
|
3173
|
+
|
|
3174
|
+
// Since this class does not inherit from AuroElement, we apply the shape-related class within the `render` function,
|
|
3175
|
+
// mimicking the class naming convention used in AuroElement.resetShapeClasses.
|
|
3176
|
+
classes[`shape-${this.shape}`] = true;
|
|
3177
|
+
|
|
2749
3178
|
return u$1`
|
|
2750
|
-
<div class="
|
|
3179
|
+
<div class="${e$2(classes)}" part="bibContainer">
|
|
2751
3180
|
<slot></slot>
|
|
2752
3181
|
</div>
|
|
2753
3182
|
`;
|
|
@@ -2756,21 +3185,21 @@ class AuroDropdownBib extends i {
|
|
|
2756
3185
|
|
|
2757
3186
|
var dropdownVersion = '3.0.0';
|
|
2758
3187
|
|
|
2759
|
-
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:
|
|
3188
|
+
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}`;
|
|
2760
3189
|
|
|
2761
|
-
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:
|
|
3190
|
+
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)}`;
|
|
2762
3191
|
|
|
2763
|
-
var classicColorCss = i$2
|
|
3192
|
+
var classicColorCss = i$2``;
|
|
2764
3193
|
|
|
2765
|
-
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]) .
|
|
3194
|
+
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}`;
|
|
2766
3195
|
|
|
2767
|
-
var styleEmphasizedCss = i$2`:host{display:block}.wrapper{display:flex;flex
|
|
3196
|
+
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)}`;
|
|
2768
3197
|
|
|
2769
|
-
var styleSnowflakeCss = i$2`:host{display:block}.wrapper{display:flex;flex
|
|
3198
|
+
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)}`;
|
|
2770
3199
|
|
|
2771
|
-
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-
|
|
3200
|
+
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)}`;
|
|
2772
3201
|
|
|
2773
|
-
var styleCss = i$2`.helptext-wrapper{display:none;font-size:
|
|
3202
|
+
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}`;
|
|
2774
3203
|
|
|
2775
3204
|
var tokensCss = i$2`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
|
|
2776
3205
|
|
|
@@ -3011,18 +3440,21 @@ class AuroElement extends i {
|
|
|
3011
3440
|
}
|
|
3012
3441
|
|
|
3013
3442
|
resetShapeClasses() {
|
|
3014
|
-
|
|
3015
|
-
const wrapper = this.shadowRoot.querySelector('.wrapper');
|
|
3443
|
+
const wrapper = this.shadowRoot.querySelector('.wrapper');
|
|
3016
3444
|
|
|
3017
|
-
|
|
3018
|
-
|
|
3019
|
-
|
|
3020
|
-
|
|
3021
|
-
|
|
3022
|
-
|
|
3445
|
+
if (wrapper) {
|
|
3446
|
+
wrapper.classList.forEach((className) => {
|
|
3447
|
+
if (className.startsWith('shape-')) {
|
|
3448
|
+
wrapper.classList.remove(className);
|
|
3449
|
+
}
|
|
3450
|
+
});
|
|
3023
3451
|
|
|
3024
|
-
|
|
3025
|
-
|
|
3452
|
+
}
|
|
3453
|
+
|
|
3454
|
+
if (this.shape && this.size) {
|
|
3455
|
+
wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
|
|
3456
|
+
} else {
|
|
3457
|
+
wrapper.classList.add('shape-none');
|
|
3026
3458
|
}
|
|
3027
3459
|
}
|
|
3028
3460
|
|
|
@@ -3094,20 +3526,16 @@ class AuroDropdown extends AuroElement {
|
|
|
3094
3526
|
this.matchWidth = false;
|
|
3095
3527
|
this.noHideOnThisFocusLoss = false;
|
|
3096
3528
|
|
|
3097
|
-
this.errorMessage = ''; // TODO
|
|
3529
|
+
this.errorMessage = ''; // TODO - check with Doug if there is still more to do here
|
|
3098
3530
|
|
|
3099
3531
|
// Layout Config
|
|
3100
3532
|
this.layout = 'classic';
|
|
3101
|
-
this.shape = '
|
|
3533
|
+
this.shape = 'classic';
|
|
3102
3534
|
this.size = 'xl';
|
|
3103
3535
|
|
|
3104
|
-
this.
|
|
3105
|
-
}
|
|
3536
|
+
this.parentBorder = false;
|
|
3106
3537
|
|
|
3107
|
-
|
|
3108
|
-
return {
|
|
3109
|
-
// 'withValue': this.value && this.value.length > 0
|
|
3110
|
-
};
|
|
3538
|
+
this.privateDefaults();
|
|
3111
3539
|
}
|
|
3112
3540
|
|
|
3113
3541
|
get commonWrapperClasses() {
|
|
@@ -3115,7 +3543,8 @@ class AuroDropdown extends AuroElement {
|
|
|
3115
3543
|
'trigger': true,
|
|
3116
3544
|
'wrapper': true,
|
|
3117
3545
|
'hasFocus': this.hasFocus,
|
|
3118
|
-
'simple': this.simple
|
|
3546
|
+
'simple': this.simple,
|
|
3547
|
+
'parentBorder': this.parentBorder
|
|
3119
3548
|
};
|
|
3120
3549
|
}
|
|
3121
3550
|
|
|
@@ -3126,6 +3555,7 @@ class AuroDropdown extends AuroElement {
|
|
|
3126
3555
|
privateDefaults() {
|
|
3127
3556
|
this.chevron = false;
|
|
3128
3557
|
this.disabled = false;
|
|
3558
|
+
this.disableFocusTrap = false;
|
|
3129
3559
|
this.error = false;
|
|
3130
3560
|
this.inset = false;
|
|
3131
3561
|
this.rounded = false;
|
|
@@ -3167,7 +3597,7 @@ class AuroDropdown extends AuroElement {
|
|
|
3167
3597
|
/**
|
|
3168
3598
|
* @private
|
|
3169
3599
|
*/
|
|
3170
|
-
this.runtimeUtils = new AuroLibraryRuntimeUtils$
|
|
3600
|
+
this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
|
|
3171
3601
|
|
|
3172
3602
|
/**
|
|
3173
3603
|
* @private
|
|
@@ -3228,6 +3658,18 @@ class AuroDropdown extends AuroElement {
|
|
|
3228
3658
|
this.floater.showBib();
|
|
3229
3659
|
}
|
|
3230
3660
|
|
|
3661
|
+
/**
|
|
3662
|
+
* When bib is open, focus on the first element inside of bib.
|
|
3663
|
+
* If not, trigger element will get focus.
|
|
3664
|
+
*/
|
|
3665
|
+
focus() {
|
|
3666
|
+
if (this.isPopoverVisible && this.focusTrap) {
|
|
3667
|
+
this.focusTrap.focusFirstElement();
|
|
3668
|
+
} else {
|
|
3669
|
+
this.trigger.focus();
|
|
3670
|
+
}
|
|
3671
|
+
}
|
|
3672
|
+
|
|
3231
3673
|
// function to define props used within the scope of this component
|
|
3232
3674
|
static get properties() {
|
|
3233
3675
|
return {
|
|
@@ -3274,6 +3716,14 @@ class AuroDropdown extends AuroElement {
|
|
|
3274
3716
|
reflect: true
|
|
3275
3717
|
},
|
|
3276
3718
|
|
|
3719
|
+
/**
|
|
3720
|
+
* If declare, the focus trap inside of bib will be turned off.
|
|
3721
|
+
*/
|
|
3722
|
+
disableFocusTrap: {
|
|
3723
|
+
type: Boolean,
|
|
3724
|
+
reflect: true
|
|
3725
|
+
},
|
|
3726
|
+
|
|
3277
3727
|
/**
|
|
3278
3728
|
* @private
|
|
3279
3729
|
*/
|
|
@@ -3382,6 +3832,15 @@ class AuroDropdown extends AuroElement {
|
|
|
3382
3832
|
reflect: true
|
|
3383
3833
|
},
|
|
3384
3834
|
|
|
3835
|
+
/**
|
|
3836
|
+
* Defines if the trigger should size based on the parent element providing the border UI.
|
|
3837
|
+
* @private
|
|
3838
|
+
*/
|
|
3839
|
+
parentBorder: {
|
|
3840
|
+
type: Boolean,
|
|
3841
|
+
reflect: true
|
|
3842
|
+
},
|
|
3843
|
+
|
|
3385
3844
|
/**
|
|
3386
3845
|
* If declared, the popover and trigger will be set to the same width.
|
|
3387
3846
|
*/
|
|
@@ -3509,7 +3968,7 @@ class AuroDropdown extends AuroElement {
|
|
|
3509
3968
|
*
|
|
3510
3969
|
*/
|
|
3511
3970
|
static register(name = "auro-dropdown") {
|
|
3512
|
-
AuroLibraryRuntimeUtils$
|
|
3971
|
+
AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroDropdown);
|
|
3513
3972
|
}
|
|
3514
3973
|
|
|
3515
3974
|
/**
|
|
@@ -3547,6 +4006,12 @@ class AuroDropdown extends AuroElement {
|
|
|
3547
4006
|
this.handleTriggerContentSlotChange();
|
|
3548
4007
|
}
|
|
3549
4008
|
|
|
4009
|
+
if (changedProperties.has('isPopoverVisible')) {
|
|
4010
|
+
this.updateFocusTrap();
|
|
4011
|
+
if (!this.isPopoverVisible && this.hasFocus) {
|
|
4012
|
+
this.trigger.focus();
|
|
4013
|
+
}
|
|
4014
|
+
}
|
|
3550
4015
|
}
|
|
3551
4016
|
|
|
3552
4017
|
firstUpdated() {
|
|
@@ -3612,6 +4077,27 @@ class AuroDropdown extends AuroElement {
|
|
|
3612
4077
|
this.hasFocus = true;
|
|
3613
4078
|
}
|
|
3614
4079
|
|
|
4080
|
+
/**
|
|
4081
|
+
* @private
|
|
4082
|
+
*/
|
|
4083
|
+
updateFocusTrap() {
|
|
4084
|
+
// If the dropdown is open, create a focus trap and focus the first element
|
|
4085
|
+
if (this.isPopoverVisible && !this.disableFocusTrap) {
|
|
4086
|
+
this.focusTrap = new FocusTrap(this.bibContent);
|
|
4087
|
+
this.focusTrap.focusFirstElement();
|
|
4088
|
+
return;
|
|
4089
|
+
}
|
|
4090
|
+
|
|
4091
|
+
// Guard Clause: Ensure there is a focus trap currently active before continuing
|
|
4092
|
+
if (!this.focusTrap) {
|
|
4093
|
+
return;
|
|
4094
|
+
}
|
|
4095
|
+
|
|
4096
|
+
// If the dropdown is not open, disconnect the focus trap if it exists
|
|
4097
|
+
this.focusTrap.disconnect();
|
|
4098
|
+
this.focusTrap = undefined;
|
|
4099
|
+
}
|
|
4100
|
+
|
|
3615
4101
|
/**
|
|
3616
4102
|
* Function to support @focusout event.
|
|
3617
4103
|
* @private
|
|
@@ -3772,14 +4258,13 @@ class AuroDropdown extends AuroElement {
|
|
|
3772
4258
|
* @returns {void}
|
|
3773
4259
|
*/
|
|
3774
4260
|
handleTriggerContentSlotChange(event) {
|
|
3775
|
-
|
|
3776
4261
|
this.floater.handleTriggerTabIndex();
|
|
3777
4262
|
|
|
3778
4263
|
// Get the trigger
|
|
3779
4264
|
const trigger = this.shadowRoot.querySelector('#trigger');
|
|
3780
4265
|
|
|
3781
4266
|
// Get the trigger slot
|
|
3782
|
-
const triggerSlot = this.shadowRoot.querySelector('.
|
|
4267
|
+
const triggerSlot = this.shadowRoot.querySelector('.triggerContentWrapper slot');
|
|
3783
4268
|
|
|
3784
4269
|
// If there's a trigger slot
|
|
3785
4270
|
if (triggerSlot) {
|
|
@@ -3842,40 +4327,15 @@ class AuroDropdown extends AuroElement {
|
|
|
3842
4327
|
*
|
|
3843
4328
|
* @private
|
|
3844
4329
|
* @method handleDefaultSlot
|
|
3845
|
-
* @param {Event} event - The event object representing the slot change.
|
|
3846
4330
|
* @fires Function#onSlotChange - Optional callback invoked when the slot content changes.
|
|
3847
4331
|
*/
|
|
3848
|
-
handleDefaultSlot(
|
|
3849
|
-
[...event.target.assignedNodes()].forEach((node) => this.bibContent.append(node));
|
|
4332
|
+
handleDefaultSlot() {
|
|
3850
4333
|
|
|
3851
4334
|
if (this.onSlotChange) {
|
|
3852
4335
|
this.onSlotChange();
|
|
3853
4336
|
}
|
|
3854
4337
|
}
|
|
3855
4338
|
|
|
3856
|
-
/**
|
|
3857
|
-
* @private
|
|
3858
|
-
* @method handleLabelSlotChange
|
|
3859
|
-
* @param {event} event - The event object representing the slot change.
|
|
3860
|
-
* @description Handles the slot change event for the label slot.
|
|
3861
|
-
*/
|
|
3862
|
-
handleLabelSlotChange (event) {
|
|
3863
|
-
|
|
3864
|
-
// Get the nodes from the event
|
|
3865
|
-
const nodes = event.target.assignedNodes();
|
|
3866
|
-
|
|
3867
|
-
// Guard clause for no nodes
|
|
3868
|
-
if (!nodes) {
|
|
3869
|
-
return;
|
|
3870
|
-
}
|
|
3871
|
-
|
|
3872
|
-
// Convert the nodes to a measurable array so we can get the length
|
|
3873
|
-
const nodesArr = Array.from(nodes);
|
|
3874
|
-
|
|
3875
|
-
// If the nodes array has a length, the dropdown is labeled
|
|
3876
|
-
this.labeled = nodesArr.length > 0;
|
|
3877
|
-
}
|
|
3878
|
-
|
|
3879
4339
|
/**
|
|
3880
4340
|
* Returns HTML for the common portion of the layouts.
|
|
3881
4341
|
* @private
|
|
@@ -3890,24 +4350,20 @@ class AuroDropdown extends AuroElement {
|
|
|
3890
4350
|
class="${e$2(this.commonWrapperClasses)}" part="wrapper"
|
|
3891
4351
|
tabindex="${this.tabIndex}"
|
|
3892
4352
|
role="${o(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
3893
|
-
aria-expanded="${o(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
3894
|
-
aria-controls="${o(this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
4353
|
+
aria-expanded="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
4354
|
+
aria-controls="${o(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
3895
4355
|
aria-labelledby="${o(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
3896
4356
|
@focusin="${this.handleFocusin}"
|
|
3897
4357
|
@blur="${this.handleFocusOut}">
|
|
3898
|
-
<div class="triggerContentWrapper">
|
|
3899
|
-
<
|
|
3900
|
-
|
|
3901
|
-
|
|
3902
|
-
<div class="triggerContent">
|
|
3903
|
-
<slot
|
|
3904
|
-
name="trigger"
|
|
3905
|
-
@slotchange="${this.handleTriggerContentSlotChange}"></slot>
|
|
3906
|
-
</div>
|
|
4358
|
+
<div class="triggerContentWrapper" id="triggerLabel">
|
|
4359
|
+
<slot
|
|
4360
|
+
name="trigger"
|
|
4361
|
+
@slotchange="${this.handleTriggerContentSlotChange}"></slot>
|
|
3907
4362
|
</div>
|
|
3908
|
-
${this.chevron
|
|
4363
|
+
${this.chevron ? u$1`
|
|
3909
4364
|
<div
|
|
3910
4365
|
id="showStateIcon"
|
|
4366
|
+
class="chevron"
|
|
3911
4367
|
part="chevron">
|
|
3912
4368
|
<${this.iconTag}
|
|
3913
4369
|
category="interface"
|
|
@@ -3922,17 +4378,18 @@ class AuroDropdown extends AuroElement {
|
|
|
3922
4378
|
<div class="${e$2(helpTextClasses)}">
|
|
3923
4379
|
<slot name="helpText"></slot>
|
|
3924
4380
|
</div>
|
|
3925
|
-
<div class="slotContent">
|
|
3926
|
-
<slot @slotchange="${this.handleDefaultSlot}"></slot>
|
|
3927
|
-
</div>
|
|
3928
4381
|
<div id="bibSizer" part="size"></div>
|
|
3929
4382
|
<${this.dropdownBibTag}
|
|
3930
4383
|
id="bib"
|
|
4384
|
+
shape="${this.shape}"
|
|
3931
4385
|
?data-show="${this.isPopoverVisible}"
|
|
3932
4386
|
?isfullscreen="${this.isBibFullscreen}"
|
|
3933
4387
|
?common="${this.common}"
|
|
3934
4388
|
?rounded="${this.common || this.rounded}"
|
|
3935
4389
|
?inset="${this.common || this.inset}">
|
|
4390
|
+
<div class="slotContent">
|
|
4391
|
+
<slot @slotchange="${this.handleDefaultSlot}"></slot>
|
|
4392
|
+
</div>
|
|
3936
4393
|
</${this.dropdownBibTag}>
|
|
3937
4394
|
</div>
|
|
3938
4395
|
`;
|
|
@@ -3944,67 +4401,14 @@ class AuroDropdown extends AuroElement {
|
|
|
3944
4401
|
* @returns {html} - Returns HTML for the classic layout.
|
|
3945
4402
|
*/
|
|
3946
4403
|
renderLayoutClassic() {
|
|
4404
|
+
// TODO: check with Doug why this was never used?
|
|
3947
4405
|
const helpTextClasses = {
|
|
3948
|
-
'helpText': true
|
|
3949
|
-
'leftIndent': false,
|
|
3950
|
-
'rightIndent': false
|
|
4406
|
+
'helpText': true
|
|
3951
4407
|
};
|
|
3952
4408
|
|
|
3953
4409
|
return u$1`
|
|
3954
4410
|
${this.renderBasicHtml(helpTextClasses)}
|
|
3955
4411
|
`;
|
|
3956
|
-
// return html`
|
|
3957
|
-
// <div>
|
|
3958
|
-
// <div
|
|
3959
|
-
// id="trigger"
|
|
3960
|
-
// class="trigger"
|
|
3961
|
-
// part="trigger"
|
|
3962
|
-
// tabindex="${this.tabIndex}"
|
|
3963
|
-
// ?showBorder="${this.showTriggerBorders}"
|
|
3964
|
-
// role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
3965
|
-
// aria-expanded="${ifDefined(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
3966
|
-
// aria-controls="${ifDefined(this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
3967
|
-
// aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
3968
|
-
// >
|
|
3969
|
-
// <div class="triggerContentWrapper">
|
|
3970
|
-
// <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
|
|
3971
|
-
// <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
|
|
3972
|
-
// </label>
|
|
3973
|
-
// <div class="triggerContent">
|
|
3974
|
-
// <slot
|
|
3975
|
-
// name="trigger"
|
|
3976
|
-
// @slotchange="${this.handleTriggerContentSlotChange}"></slot>
|
|
3977
|
-
// </div>
|
|
3978
|
-
// </div>
|
|
3979
|
-
// ${this.chevron || this.common ? html`
|
|
3980
|
-
// <div
|
|
3981
|
-
// id="showStateIcon"
|
|
3982
|
-
// part="chevron">
|
|
3983
|
-
// <${this.iconTag}
|
|
3984
|
-
// category="interface"
|
|
3985
|
-
// name="chevron-down"
|
|
3986
|
-
// ?onDark="${this.onDark}"
|
|
3987
|
-
// variant="${this.disabled ? 'disabled' : 'muted'}">
|
|
3988
|
-
// >
|
|
3989
|
-
// </${this.iconTag}>
|
|
3990
|
-
// </div>
|
|
3991
|
-
// ` : undefined }
|
|
3992
|
-
// </div>
|
|
3993
|
-
// <div class="slotContent">
|
|
3994
|
-
// <slot @slotchange="${this.handleDefaultSlot}"></slot>
|
|
3995
|
-
// </div>
|
|
3996
|
-
// <div id="bibSizer" part="size"></div>
|
|
3997
|
-
// <${this.dropdownBibTag}
|
|
3998
|
-
// id="bib"
|
|
3999
|
-
// ?data-show="${this.isPopoverVisible}"
|
|
4000
|
-
// ?isfullscreen="${this.isBibFullscreen}"
|
|
4001
|
-
// ?common="${this.common}"
|
|
4002
|
-
// ?rounded="${this.common || this.rounded}"
|
|
4003
|
-
// ?inset="${this.common || this.inset}"
|
|
4004
|
-
// >
|
|
4005
|
-
// </${this.dropdownBibTag}>
|
|
4006
|
-
// </div>
|
|
4007
|
-
// `;
|
|
4008
4412
|
}
|
|
4009
4413
|
|
|
4010
4414
|
/**
|