@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.
Files changed (114) hide show
  1. package/components/bibtemplate/dist/auro-bibtemplate.d.ts +13 -2
  2. package/components/bibtemplate/dist/buttonVersion.d.ts +2 -0
  3. package/components/bibtemplate/dist/iconVersion.d.ts +1 -1
  4. package/components/bibtemplate/dist/index.js +1292 -79
  5. package/components/bibtemplate/dist/registered.js +1292 -79
  6. package/components/checkbox/README.md +1 -1
  7. package/components/checkbox/demo/api.md +47 -14
  8. package/components/checkbox/demo/api.min.js +44 -31
  9. package/components/checkbox/demo/index.md +2 -2
  10. package/components/checkbox/demo/index.min.js +44 -31
  11. package/components/checkbox/demo/readme.md +1 -1
  12. package/components/checkbox/dist/auro-checkbox-group.d.ts +1 -1
  13. package/components/checkbox/dist/auro-checkbox.d.ts +3 -3
  14. package/components/checkbox/dist/index.js +44 -31
  15. package/components/checkbox/dist/registered.js +44 -31
  16. package/components/combobox/demo/api.md +100 -2
  17. package/components/combobox/demo/api.min.js +3202 -759
  18. package/components/combobox/demo/index.md +6 -30
  19. package/components/combobox/demo/index.min.js +3202 -759
  20. package/components/combobox/dist/auro-combobox.d.ts +37 -16
  21. package/components/combobox/dist/index.js +3091 -789
  22. package/components/combobox/dist/registered.js +3091 -789
  23. package/components/counter/demo/api.html +1 -0
  24. package/components/counter/demo/api.md +21 -19
  25. package/components/counter/demo/api.min.js +3324 -614
  26. package/components/counter/demo/index.html +1 -0
  27. package/components/counter/demo/index.md +103 -34
  28. package/components/counter/demo/index.min.js +3324 -614
  29. package/components/counter/dist/auro-counter-button.d.ts +2 -0
  30. package/components/counter/dist/auro-counter-group.d.ts +89 -6
  31. package/components/counter/dist/auro-counter.d.ts +6 -0
  32. package/components/counter/dist/helptextVersion.d.ts +2 -0
  33. package/components/counter/dist/iconVersion.d.ts +1 -1
  34. package/components/counter/dist/index.js +3324 -614
  35. package/components/counter/dist/registered.js +3324 -614
  36. package/components/datepicker/demo/api.md +36 -19
  37. package/components/datepicker/demo/api.min.js +11976 -8000
  38. package/components/datepicker/demo/index.md +80 -0
  39. package/components/datepicker/demo/index.min.js +11976 -8000
  40. package/components/datepicker/dist/auro-datepicker.d.ts +71 -3
  41. package/components/datepicker/dist/buttonVersion.d.ts +1 -1
  42. package/components/datepicker/dist/iconVersion.d.ts +2 -0
  43. package/components/datepicker/dist/index.js +12238 -8262
  44. package/components/datepicker/dist/popoverVersion.d.ts +1 -1
  45. package/components/datepicker/dist/registered.js +12238 -8262
  46. package/components/dropdown/demo/api.md +8 -9
  47. package/components/dropdown/demo/api.min.js +551 -147
  48. package/components/dropdown/demo/index.md +57 -9
  49. package/components/dropdown/demo/index.min.js +551 -147
  50. package/components/dropdown/dist/auro-dropdown.d.ts +28 -9
  51. package/components/dropdown/dist/auro-dropdownBib.d.ts +22 -0
  52. package/components/dropdown/dist/index.js +551 -147
  53. package/components/dropdown/dist/registered.js +551 -147
  54. package/components/form/demo/api.min.js +1 -1
  55. package/components/form/demo/index.min.js +1 -1
  56. package/components/form/dist/index.js +1 -1
  57. package/components/form/dist/registered.js +1 -1
  58. package/components/helptext/dist/index.js +2 -2
  59. package/components/helptext/dist/registered.js +2 -2
  60. package/components/input/README.md +5 -2
  61. package/components/input/demo/api.md +271 -176
  62. package/components/input/demo/api.min.js +956 -270
  63. package/components/input/demo/index.md +48 -32
  64. package/components/input/demo/index.min.js +955 -269
  65. package/components/input/demo/readme.md +5 -2
  66. package/components/input/dist/auro-input.d.ts +23 -15
  67. package/components/input/dist/base-input.d.ts +32 -8
  68. package/components/input/dist/buttonVersion.d.ts +1 -1
  69. package/components/input/dist/iconVersion.d.ts +1 -1
  70. package/components/input/dist/index.js +955 -269
  71. package/components/input/dist/registered.js +955 -269
  72. package/components/layoutElement/dist/index.js +13 -10
  73. package/components/menu/demo/api.html +38 -0
  74. package/components/menu/demo/api.md +68 -7
  75. package/components/menu/demo/api.min.js +278 -42
  76. package/components/menu/demo/index.min.js +278 -42
  77. package/components/menu/dist/auro-menu.d.ts +28 -5
  78. package/components/menu/dist/auro-menuoption.d.ts +15 -3
  79. package/components/menu/dist/iconVersion.d.ts +1 -1
  80. package/components/menu/dist/index.js +278 -42
  81. package/components/menu/dist/registered.js +278 -42
  82. package/components/menu/dist/styles/default/color-menuoption-css.d.ts +2 -0
  83. package/components/menu/dist/styles/default/style-menu-css.d.ts +2 -0
  84. package/components/menu/dist/styles/default/style-menuoption-css.d.ts +2 -0
  85. package/components/menu/dist/styles/default/tokens-css.d.ts +2 -0
  86. package/components/radio/demo/api.md +7 -8
  87. package/components/radio/demo/api.min.js +68 -80
  88. package/components/radio/demo/index.min.js +68 -80
  89. package/components/radio/dist/auro-radio-group.d.ts +1 -1
  90. package/components/radio/dist/auro-radio.d.ts +9 -12
  91. package/components/radio/dist/index.js +68 -80
  92. package/components/radio/dist/registered.js +68 -80
  93. package/components/select/demo/api.md +123 -13
  94. package/components/select/demo/api.min.js +3045 -456
  95. package/components/select/demo/index.html +1 -0
  96. package/components/select/demo/index.md +323 -763
  97. package/components/select/demo/index.min.js +3045 -456
  98. package/components/select/dist/auro-select.d.ts +112 -11
  99. package/components/select/dist/helptextVersion.d.ts +2 -0
  100. package/components/select/dist/index.js +2925 -477
  101. package/components/select/dist/registered.js +2925 -477
  102. package/components/select/dist/styles/shapeSize-css.d.ts +2 -0
  103. package/components/select/dist/styles/tokens-css.d.ts +2 -0
  104. package/package.json +6 -4
  105. /package/components/{dropdown/dist/styles/default/bibColors-css.d.ts → counter/dist/styles/shapeSize-css.d.ts} +0 -0
  106. /package/components/{dropdown → datepicker}/dist/styles/default/color-css.d.ts +0 -0
  107. /package/components/{dropdown/dist/styles/default/bibStyles-css.d.ts → datepicker/dist/styles/shapeSize-css.d.ts} +0 -0
  108. /package/components/{dropdown/dist/styles/default/style-css.d.ts → datepicker/dist/styles/snowflake/color-css.d.ts} +0 -0
  109. /package/components/{dropdown/dist/styles → datepicker/dist/styles/snowflake}/style-css.d.ts +0 -0
  110. /package/components/{menu/dist/styles/color-menu-css.d.ts → dropdown/dist/styles/classic/bibColors-css.d.ts} +0 -0
  111. /package/components/{menu/dist/styles/color-menuoption-css.d.ts → dropdown/dist/styles/classic/bibStyles-css.d.ts} +0 -0
  112. /package/components/{menu/dist/styles/style-menu-css.d.ts → dropdown/dist/styles/classic/color-css.d.ts} +0 -0
  113. /package/components/{menu/dist/styles/style-menuoption-css.d.ts → dropdown/dist/styles/classic/style-css.d.ts} +0 -0
  114. /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$1 = class 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
- const hasInitialMainAxisOverflow = ((_overflowsData$ = overflowsData[0]) == null ? void 0 : _overflowsData$.overflows[0]) > 0;
640
- if (!ignoreCrossAxisOverflow || hasInitialMainAxisOverflow) {
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
- AuroFloatingUI.isMousePressed = event.type === 'mousedown';
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
- // if fullscreen bib is still open and the focus is missing, do not close
1924
- if (this.element.bib.hasAttribute('isfullscreen') && activeElement === document.body) {
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' || ((!origin || origin.tagName !== "INPUT") && event.key === ' ')) {
2107
- event.preventDefault(); // Prevent page scroll on space
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
- // Removes the SVG description for screenreader if ariaHidden is set to true
2586
- if (!this.hasAttribute('ariaHidden') && this.svg) {
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:absolute;z-index:var(--depth-tooltip, 400);display:none}.container{display:inline-block;overflow:auto;box-sizing:border-box;margin:var(--ds-size-50, 0.25rem) 0}: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}`;
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: transparent;--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-dropdown-helptext-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: transparent;--ds-auro-dropdown-trigger-outline-color: transparent;--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-dropdown-helptext-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)}`;
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$1.prototype.handleComponentTagRename(this, 'auro-dropdownbib');
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="container" part="bibContainer">
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:0;min-height:60px;max-height:60px;background-color:unset}.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:0;min-height:60px;max-height:60px;background-color:unset}.shape-box-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent}.shape-box-xl.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-rounded-lg{min-height:52px;max-height:52px;border-style:solid;border-width:2px;border-color:transparent;border-radius:6px}.shape-rounded-lg.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:34px}.shape-pill-xl.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-left-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:34px 0 0 34px}.shape-pill-left-xl.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-right-xl{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 34px 34px 0}.shape-pill-right-xl.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-md{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:34px}.shape-pill-md.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-left-md{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:34px 0 0 34px}.shape-pill-left-md.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}.shape-pill-right-md{min-height:68px;max-height:68px;border-style:solid;border-width:2px;border-color:transparent;border-radius:0 34px 34px 0}.shape-pill-right-md.simple{border-width:0;min-height:72px;max-height:72px;background-color:unset}`;
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:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-brand, #00274a)}:host([ondark]) .wrapper:focus,:host([ondark]) .wrapper:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-inverse, #ffffff)}:host([error]:not([ondark])){--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error, #e31f26)}:host([error][ondark]){--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}.helpText{color:var(--ds-auro-dropdown-helptext-text-color)}`;
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`:host([layout*=classic]) .label{color:var(--ds-auro-dropdown-label-text-color)}:host([layout*=classic]) .trigger{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-container-color);color:var(--ds-auro-dropdown-trigger-text-color);outline-color:var(--ds-auro-dropdown-trigger-outline-color)}:host([layout*=classic]) .trigger:focus-within,:host([layout*=classic]) .trigger: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([layout*=classic])[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)}:host([layout*=classic])[common],:host([layout*=classic])[bordered]{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-bold, #585e67)}:host([layout*=classic])[common] .trigger:active,:host([layout*=classic])[common] .trigger:focus-within,:host([layout*=classic])[bordered] .trigger:active,:host([layout*=classic])[bordered] .trigger:focus-within{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused, #01426a)}:host([layout*=classic])[error]{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error, #e31f26)}:host([layout*=classic])[error] .trigger{outline:solid 1px var(--ds-auro-dropdown-trigger-border-color)}:host([layout*=classic])[error] .trigger:focus-within,:host([layout*=classic])[error] .trigger: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([layout*=classic])[disabled][common],:host([layout*=classic])[disabled][bordered]{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host([layout*=classic])[onDark]{--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-muted, #ccd2db);--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([layout*=classic])[onDark]:focus-within,:host([layout*=classic])[onDark]: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([layout*=classic])[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)}:host([layout*=classic])[onDark][common],:host([layout*=classic])[onDark][bordered]{--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-inverse, #ffffff)}:host([layout*=classic])[onDark][common] .trigger:focus-within,:host([layout*=classic])[onDark][common] .trigger:active,:host([layout*=classic])[onDark][bordered] .trigger:focus-within,:host([layout*=classic])[onDark][bordered] .trigger: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([layout*=classic])[onDark][error]{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}:host([layout*=classic])[onDark][error] .trigger{outline:solid 1px var(--ds-auro-dropdown-trigger-border-color)}:host([layout*=classic])[onDark][error] .trigger:focus-within,:host([layout*=classic])[onDark][error] .trigger: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([layout*=classic])[onDark][disabled][common],:host([layout*=classic])[onDark][disabled][bordered]{--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse-disabled, rgba(255, 255, 255, 0.1))}`;
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]) .trigger{display:flex;flex-direction:row}@media(hover: hover){:host([layout*=classic]) .trigger:hover{cursor:pointer}}:host([layout*=classic]) .triggerContentWrapper{overflow:hidden;flex:1;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) #showStateIcon{display:flex;overflow:hidden;height:100%;align-items:center;margin-left:var(--ds-size-100, 0.5rem)}: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][fluid]){display:block}:host([layout*=classic][matchwidth]) #bibSizer{width:100%}:host([layout*=classic][disabled]){pointer-events:none}:host([layout*=classic][inset]) .trigger{padding:var(--ds-size-150, 0.75rem) var(--ds-size-200, 1rem)}:host([layout*=classic][common]) .trigger,:host([layout*=classic][inset][bordered]) .trigger{padding:var(--ds-size-200, 1rem) var(--ds-size-150, 0.75rem)}:host([layout*=classic][inset][bordered][labeled]) .trigger{padding:var(--ds-size-100, 0.5rem) var(--ds-size-150, 0.75rem)}:host([layout*=classic][common]) .trigger,:host([layout*=classic][rounded]) .trigger{border-radius:var(--ds-border-radius, 0.375rem)}`;
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-direction:column}.trigger{flex:1;display:flex;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{flex:1;display:flex;align-items:center;justify-content:center;width:100%}.triggerContent{overflow:hidden;flex:1;display:flex;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap;width:100%}:host([layout*=emphasized][shape*=pill]:not([layout*=right])) .leftIndent{margin-left:24px;width:calc(100% - 24px)}:host([layout*=emphasized][shape*=pill]:not([layout*=left])) .rightIndent{margin-right:24px;width:calc(100% - 24px)}:host([layout*=emphasized][shape*=pill]:not([layout*=left]):not([layout*=right])) .rightIndent{margin-right:24px;width:calc(100% - 48px)}`;
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-direction:column}.trigger{flex:1;display:flex;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{flex:1;display:flex;align-items:center;justify-content:center;width:100%}.triggerContent{overflow:hidden;flex:1;display:flex;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap;width:100%}:host([layout*=snowflake]) .leftIndent{margin-left:24px;width:calc(100% - 48px)}:host([layout*=snowflake]) .rightIndent{margin-right:24px;width:calc(100% - 48px)}`;
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-advanced-color-state-error-inverse, #f9a4a8)}.helptext-wrapper{color:var(--ds-auro-helptext-color)}`;
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:var(--ds-basic-text-body-xs-font-size, 12px);font-weight:var(--ds-basic-text-body-xs-font-weight, 450);letter-spacing:var(--ds-basic-text-body-xs-letter-spacing, 0);line-height:var(--ds-basic-text-body-xs-line-height, 16px)}:host([large]) .helptext-wrapper{font-size:var(--ds-basic-text-body-default-font-size, 16px);font-weight:var(--ds-basic-text-body-default-font-weight, 450);letter-spacing:var(--ds-basic-text-body-default-letter-spacing, 0);line-height:var(--ds-basic-text-body-default-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}`;
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
- if (this.shape && this.size) {
3015
- const wrapper = this.shadowRoot.querySelector('.wrapper');
3443
+ const wrapper = this.shadowRoot.querySelector('.wrapper');
3016
3444
 
3017
- if (wrapper) {
3018
- wrapper.classList.forEach((className) => {
3019
- if (className.startsWith('shape-')) {
3020
- wrapper.classList.remove(className);
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
- wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
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 = 'rounded';
3533
+ this.shape = 'classic';
3102
3534
  this.size = 'xl';
3103
3535
 
3104
- this.privateDefaults();
3105
- }
3536
+ this.parentBorder = false;
3106
3537
 
3107
- get commonLabelClasses() {
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$1();
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$1.prototype.registerComponent(name, AuroDropdown);
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('.triggerContent slot');
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(event) {
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
- <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
3900
- <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
3901
- </label>
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 || this.common ? u$1`
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
  /**