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