@aurodesignsystem/auro-formkit 4.0.0 → 4.0.1

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 (44) hide show
  1. package/CHANGELOG.md +3 -23
  2. package/components/bibtemplate/dist/auro-bibtemplate.d.ts +1 -0
  3. package/components/bibtemplate/dist/index.js +158 -6
  4. package/components/bibtemplate/dist/registered.js +158 -6
  5. package/components/checkbox/demo/api.min.js +4 -3
  6. package/components/checkbox/demo/index.min.js +4 -3
  7. package/components/checkbox/dist/index.js +4 -3
  8. package/components/checkbox/dist/registered.js +4 -3
  9. package/components/combobox/demo/api.min.js +707 -133
  10. package/components/combobox/demo/index.min.js +707 -133
  11. package/components/combobox/dist/auro-combobox.d.ts +0 -8
  12. package/components/combobox/dist/index.js +627 -123
  13. package/components/combobox/dist/registered.js +627 -123
  14. package/components/counter/demo/api.min.js +583 -43
  15. package/components/counter/demo/index.min.js +583 -43
  16. package/components/counter/dist/index.js +583 -43
  17. package/components/counter/dist/registered.js +583 -43
  18. package/components/datepicker/demo/api.min.js +866 -75
  19. package/components/datepicker/demo/index.min.js +866 -75
  20. package/components/datepicker/dist/index.js +866 -75
  21. package/components/datepicker/dist/registered.js +866 -75
  22. package/components/dropdown/demo/api.min.js +153 -16
  23. package/components/dropdown/demo/index.min.js +153 -16
  24. package/components/dropdown/dist/auro-dropdownBib.d.ts +8 -0
  25. package/components/dropdown/dist/index.js +153 -16
  26. package/components/dropdown/dist/registered.js +153 -16
  27. package/components/input/demo/api.min.js +263 -12
  28. package/components/input/demo/index.min.js +263 -12
  29. package/components/input/dist/index.js +263 -12
  30. package/components/input/dist/registered.js +263 -12
  31. package/components/menu/demo/api.min.js +76 -6
  32. package/components/menu/demo/index.min.js +76 -6
  33. package/components/menu/dist/index.js +76 -6
  34. package/components/menu/dist/registered.js +76 -6
  35. package/components/radio/demo/api.min.js +4 -3
  36. package/components/radio/demo/index.min.js +4 -3
  37. package/components/radio/dist/index.js +4 -3
  38. package/components/radio/dist/registered.js +4 -3
  39. package/components/select/demo/api.min.js +403 -49
  40. package/components/select/demo/index.min.js +403 -49
  41. package/components/select/dist/auro-select.d.ts +0 -1
  42. package/components/select/dist/index.js +325 -41
  43. package/components/select/dist/registered.js +325 -41
  44. package/package.json +3 -3
@@ -203,9 +203,10 @@ class DateFormatter {
203
203
  /**
204
204
  * Convert a date object to string format.
205
205
  * @param {Object} date - Date to convert to string.
206
- * @returns {Object} Returns the date as a string.
206
+ * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
207
+ * @returns {String} Returns the date as a string.
207
208
  */
208
- this.getDateAsString = (date) => date.toLocaleDateString(undefined, {
209
+ this.getDateAsString = (date, locale = undefined) => date.toLocaleDateString(locale, {
209
210
  year: "numeric",
210
211
  month: "2-digit",
211
212
  day: "2-digit",
@@ -397,7 +398,7 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
397
398
  const dateObj = new Date(this.getFourDigitYear(dateParts.year), dateParts.month - 1, dateParts.day || 1);
398
399
 
399
400
  // Get the date string of the date object we created from the string date
400
- const actualDateStr = dateFormatter.getDateAsString(dateObj);
401
+ const actualDateStr = dateFormatter.getDateAsString(dateObj, "en-US");
401
402
 
402
403
  // Guard Clause: Generated date matches date string input
403
404
  if (expectedDateStr !== actualDateStr) {
@@ -562,7 +563,7 @@ const {
562
563
 
563
564
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
564
565
 
565
- let AuroLibraryRuntimeUtils$3 = class AuroLibraryRuntimeUtils {
566
+ let AuroLibraryRuntimeUtils$5 = class AuroLibraryRuntimeUtils {
566
567
 
567
568
  /* eslint-disable jsdoc/require-param */
568
569
 
@@ -632,7 +633,7 @@ let AuroLibraryRuntimeUtils$3 = class AuroLibraryRuntimeUtils {
632
633
  class AuroFormValidation {
633
634
 
634
635
  constructor() {
635
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
636
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$5();
636
637
  }
637
638
 
638
639
  /**
@@ -1044,7 +1045,7 @@ let AuroDependencyVersioning$2 = class AuroDependencyVersioning {
1044
1045
 
1045
1046
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
1046
1047
 
1047
- let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
1048
+ let AuroLibraryRuntimeUtils$2$1 = class AuroLibraryRuntimeUtils {
1048
1049
 
1049
1050
  /* eslint-disable jsdoc/require-param */
1050
1051
 
@@ -2639,8 +2640,28 @@ class AuroFloatingUI {
2639
2640
  if (!AuroFloatingUI.isMousePressHandlerInitialized && window && window.addEventListener) {
2640
2641
  AuroFloatingUI.isMousePressHandlerInitialized = true;
2641
2642
 
2643
+ // Track timeout for isMousePressed reset to avoid race conditions
2644
+ if (!AuroFloatingUI._mousePressedTimeout) {
2645
+ AuroFloatingUI._mousePressedTimeout = null;
2646
+ }
2642
2647
  const mouseEventGlobalHandler = (event) => {
2643
- AuroFloatingUI.isMousePressed = event.type === 'mousedown';
2648
+ const isPressed = event.type === 'mousedown';
2649
+ if (isPressed) {
2650
+ // Clear any pending timeout to prevent race condition
2651
+ if (AuroFloatingUI._mousePressedTimeout !== null) {
2652
+ clearTimeout(AuroFloatingUI._mousePressedTimeout);
2653
+ AuroFloatingUI._mousePressedTimeout = null;
2654
+ }
2655
+ if (!AuroFloatingUI.isMousePressed) {
2656
+ AuroFloatingUI.isMousePressed = true;
2657
+ }
2658
+ } else if (AuroFloatingUI.isMousePressed && !isPressed) {
2659
+ // Schedule reset and track timeout ID
2660
+ AuroFloatingUI._mousePressedTimeout = setTimeout(() => {
2661
+ AuroFloatingUI.isMousePressed = false;
2662
+ AuroFloatingUI._mousePressedTimeout = null;
2663
+ }, 0);
2664
+ }
2644
2665
  };
2645
2666
 
2646
2667
  window.addEventListener('mousedown', mouseEventGlobalHandler);
@@ -2767,6 +2788,7 @@ class AuroFloatingUI {
2767
2788
 
2768
2789
  // Compute the position of the bib
2769
2790
  computePosition(this.element.trigger, this.element.bib, {
2791
+ strategy: this.element.floaterConfig?.strategy || 'fixed',
2770
2792
  placement: this.element.floaterConfig?.placement,
2771
2793
  middleware: middleware || []
2772
2794
  }).then(({ x, y }) => { // eslint-disable-line id-length
@@ -2901,8 +2923,9 @@ class AuroFloatingUI {
2901
2923
  if (this.element.contains(activeElement) || this.element.bib?.contains(activeElement)) {
2902
2924
  return;
2903
2925
  }
2904
- // if fullscreen bib is still open and the focus is missing, do not close
2905
- if (this.element.bib.hasAttribute('isfullscreen') && activeElement === document.body) {
2926
+
2927
+ // if fullscreen bib is in fullscreen mode, do not close
2928
+ if (this.element.bib.hasAttribute('isfullscreen')) {
2906
2929
  return;
2907
2930
  }
2908
2931
 
@@ -3203,8 +3226,6 @@ class AuroFloatingUI {
3203
3226
  this.element.hoverToggle = this.element.floaterConfig.hoverToggle;
3204
3227
  }
3205
3228
 
3206
- document.body.append(this.element.bib);
3207
-
3208
3229
  this.regenerateBibId();
3209
3230
  this.handleTriggerTabIndex();
3210
3231
 
@@ -3435,6 +3456,76 @@ var tokensCss$2$1 = i$5`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon
3435
3456
 
3436
3457
  var colorCss$3$1 = i$5`: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)}`;
3437
3458
 
3459
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3460
+ // See LICENSE in the project root for license information.
3461
+
3462
+ // ---------------------------------------------------------------------
3463
+
3464
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
3465
+
3466
+ let AuroLibraryRuntimeUtils$1$1 = class AuroLibraryRuntimeUtils {
3467
+
3468
+ /* eslint-disable jsdoc/require-param */
3469
+
3470
+ /**
3471
+ * This will register a new custom element with the browser.
3472
+ * @param {String} name - The name of the custom element.
3473
+ * @param {Object} componentClass - The class to register as a custom element.
3474
+ * @returns {void}
3475
+ */
3476
+ registerComponent(name, componentClass) {
3477
+ if (!customElements.get(name)) {
3478
+ customElements.define(name, class extends componentClass {});
3479
+ }
3480
+ }
3481
+
3482
+ /**
3483
+ * Finds and returns the closest HTML Element based on a selector.
3484
+ * @returns {void}
3485
+ */
3486
+ closestElement(
3487
+ selector, // selector like in .closest()
3488
+ base = this, // extra functionality to skip a parent
3489
+ __Closest = (el, found = el && el.closest(selector)) =>
3490
+ !el || el === document || el === window
3491
+ ? null // standard .closest() returns null for non-found selectors also
3492
+ : found
3493
+ ? found // found a selector INside this element
3494
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
3495
+ ) {
3496
+ return __Closest(base);
3497
+ }
3498
+ /* eslint-enable jsdoc/require-param */
3499
+
3500
+ /**
3501
+ * 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.
3502
+ * @param {Object} elem - The element to check.
3503
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
3504
+ * @returns {void}
3505
+ */
3506
+ handleComponentTagRename(elem, tagName) {
3507
+ const tag = tagName.toLowerCase();
3508
+ const elemTag = elem.tagName.toLowerCase();
3509
+
3510
+ if (elemTag !== tag) {
3511
+ elem.setAttribute(tag, true);
3512
+ }
3513
+ }
3514
+
3515
+ /**
3516
+ * Validates if an element is a specific Auro component.
3517
+ * @param {Object} elem - The element to validate.
3518
+ * @param {String} tagName - The name of the Auro component to check against.
3519
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
3520
+ */
3521
+ elementMatch(elem, tagName) {
3522
+ const tag = tagName.toLowerCase();
3523
+ const elemTag = elem.tagName.toLowerCase();
3524
+
3525
+ return elemTag === tag || elem.hasAttribute(tag);
3526
+ }
3527
+ };
3528
+
3438
3529
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
3439
3530
  // See LICENSE in the project root for license information.
3440
3531
 
@@ -3454,7 +3545,7 @@ let AuroIcon$2 = class AuroIcon extends BaseIcon$2 {
3454
3545
  */
3455
3546
  privateDefaults() {
3456
3547
  this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
3457
- this.runtimeUtils = new AuroLibraryRuntimeUtils$1();
3548
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$1$1();
3458
3549
  }
3459
3550
 
3460
3551
  // function to define props used within the scope of this component
@@ -3536,7 +3627,7 @@ let AuroIcon$2 = class AuroIcon extends BaseIcon$2 {
3536
3627
  *
3537
3628
  */
3538
3629
  static register(name = "auro-icon") {
3539
- AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroIcon);
3630
+ AuroLibraryRuntimeUtils$1$1.prototype.registerComponent(name, AuroIcon);
3540
3631
  }
3541
3632
 
3542
3633
  connectedCallback() {
@@ -3604,7 +3695,7 @@ let AuroIcon$2 = class AuroIcon extends BaseIcon$2 {
3604
3695
 
3605
3696
  var iconVersion$2 = '6.1.2';
3606
3697
 
3607
- var styleCss$2$2 = i$5`: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}`;
3698
+ var styleCss$2$2 = i$5`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}.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}`;
3608
3699
 
3609
3700
  var colorCss$2$1 = i$5`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
3610
3701
 
@@ -3614,7 +3705,6 @@ var tokensCss$1$1 = i$5`:host{--ds-auro-dropdown-label-text-color: var(--ds-basi
3614
3705
  // See LICENSE in the project root for license information.
3615
3706
 
3616
3707
 
3617
-
3618
3708
  const DESIGN_TOKEN_BREAKPOINT_PREFIX = '--ds-grid-breakpoint-';
3619
3709
  const DESIGN_TOKEN_BREAKPOINT_OPTIONS = [
3620
3710
  'xl',
@@ -3639,7 +3729,7 @@ class AuroDropdownBib extends i$2 {
3639
3729
  */
3640
3730
  this._mobileBreakpointValue = undefined;
3641
3731
 
3642
- AuroLibraryRuntimeUtils$1.prototype.handleComponentTagRename(this, 'auro-dropdownbib');
3732
+ AuroLibraryRuntimeUtils$2$1.prototype.handleComponentTagRename(this, 'auro-dropdownbib');
3643
3733
  }
3644
3734
 
3645
3735
  static get styles() {
@@ -3684,6 +3774,13 @@ class AuroDropdownBib extends i$2 {
3684
3774
  type: Boolean,
3685
3775
  reflect: true
3686
3776
  },
3777
+
3778
+ /**
3779
+ * A reference to the associated bib template element.
3780
+ */
3781
+ bibTemplate: {
3782
+ type: Object
3783
+ }
3687
3784
  };
3688
3785
  }
3689
3786
 
@@ -3716,9 +3813,50 @@ class AuroDropdownBib extends i$2 {
3716
3813
  }
3717
3814
  }
3718
3815
  });
3816
+
3817
+ if (this.bibTemplate) {
3818
+ // If the bib template is found, set the fullscreen attribute
3819
+ if (this.isFullscreen) {
3820
+ this.bibTemplate.setAttribute('isFullscreen', 'true');
3821
+ } else {
3822
+ this.bibTemplate.removeAttribute('isFullscreen');
3823
+ }
3824
+ }
3719
3825
  }
3720
3826
  }
3721
3827
 
3828
+ connectedCallback() {
3829
+ super.connectedCallback();
3830
+
3831
+ // Listen for the auro-bibtemplate-connected event to set the fullscreen attribute
3832
+ this.addEventListener('auro-bibtemplate-connected', (event) => {
3833
+ const bibTemplate = event.detail.element;
3834
+ this.bibTemplate = bibTemplate;
3835
+
3836
+ if (bibTemplate) {
3837
+ // If the bib template is found, set the fullscreen attribute
3838
+ if (this.isFullscreen) {
3839
+ bibTemplate.setAttribute('isFullscreen', 'true');
3840
+ } else {
3841
+ bibTemplate.removeAttribute('isFullscreen');
3842
+ }
3843
+ }
3844
+ });
3845
+ }
3846
+
3847
+ firstUpdated(changedProperties) {
3848
+ super.firstUpdated(changedProperties);
3849
+
3850
+ // Dispatch a custom event when the component is connected
3851
+ this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
3852
+ bubbles: true,
3853
+ composed: true,
3854
+ detail: {
3855
+ element: this
3856
+ }
3857
+ }));
3858
+ }
3859
+
3722
3860
  // function that renders the HTML and CSS into the scope of the component
3723
3861
  render() {
3724
3862
  return u`
@@ -3748,7 +3886,7 @@ var tokensCss$3 = i$5`:host{--ds-auro-helptext-color: var(--ds-basic-color-texti
3748
3886
 
3749
3887
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
3750
3888
 
3751
- let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
3889
+ let AuroLibraryRuntimeUtils$4 = class AuroLibraryRuntimeUtils {
3752
3890
 
3753
3891
  /* eslint-disable jsdoc/require-param */
3754
3892
 
@@ -3829,7 +3967,7 @@ class AuroHelpText extends i$2 {
3829
3967
  this.onDark = false;
3830
3968
  this.hasTextContent = false;
3831
3969
 
3832
- AuroLibraryRuntimeUtils$2.prototype.handleComponentTagRename(this, 'auro-helptext');
3970
+ AuroLibraryRuntimeUtils$4.prototype.handleComponentTagRename(this, 'auro-helptext');
3833
3971
  }
3834
3972
 
3835
3973
  static get styles() {
@@ -3885,7 +4023,7 @@ class AuroHelpText extends i$2 {
3885
4023
  *
3886
4024
  */
3887
4025
  static register(name = "auro-helptext") {
3888
- AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroHelpText);
4026
+ AuroLibraryRuntimeUtils$4.prototype.registerComponent(name, AuroHelpText);
3889
4027
  }
3890
4028
 
3891
4029
  updated() {
@@ -4028,7 +4166,7 @@ class AuroDropdown extends i$2 {
4028
4166
  /**
4029
4167
  * @private
4030
4168
  */
4031
- this.runtimeUtils = new AuroLibraryRuntimeUtils$1();
4169
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$2$1();
4032
4170
 
4033
4171
  /**
4034
4172
  * @private
@@ -4357,7 +4495,7 @@ class AuroDropdown extends i$2 {
4357
4495
  *
4358
4496
  */
4359
4497
  static register(name = "auro-dropdown") {
4360
- AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroDropdown);
4498
+ AuroLibraryRuntimeUtils$2$1.prototype.registerComponent(name, AuroDropdown);
4361
4499
  }
4362
4500
 
4363
4501
  /**
@@ -4674,8 +4812,7 @@ class AuroDropdown extends i$2 {
4674
4812
  * @param {Event} event - The event object representing the slot change.
4675
4813
  * @fires Function#onSlotChange - Optional callback invoked when the slot content changes.
4676
4814
  */
4677
- handleDefaultSlot(event) {
4678
- [...event.target.assignedNodes()].forEach((node) => this.bibContent.append(node));
4815
+ handleDefaultSlot() {
4679
4816
 
4680
4817
  if (this.onSlotChange) {
4681
4818
  this.onSlotChange();
@@ -4747,9 +4884,7 @@ class AuroDropdown extends i$2 {
4747
4884
  <${this.helpTextTag} part="helpText" ?onDark=${this.onDark} ?error="${this.error}">
4748
4885
  <slot name="helpText"></slot>
4749
4886
  </${this.helpTextTag}>
4750
- <div class="slotContent">
4751
- <slot @slotchange="${this.handleDefaultSlot}"></slot>
4752
- </div>
4887
+
4753
4888
  <div id="bibSizer" part="size"></div>
4754
4889
  <${this.dropdownBibTag}
4755
4890
  id="bib"
@@ -4759,6 +4894,9 @@ class AuroDropdown extends i$2 {
4759
4894
  ?rounded="${this.common || this.rounded}"
4760
4895
  ?inset="${this.common || this.inset}"
4761
4896
  >
4897
+ <div class="slotContent">
4898
+ <slot @slotchange="${this.handleDefaultSlot}"></slot>
4899
+ </div>
4762
4900
  </${this.dropdownBibTag}>
4763
4901
  </div>
4764
4902
  `;
@@ -4780,7 +4918,7 @@ var tokenCss = i$5`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-
4780
4918
 
4781
4919
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
4782
4920
 
4783
- class AuroLibraryRuntimeUtils {
4921
+ let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
4784
4922
 
4785
4923
  /* eslint-disable jsdoc/require-param */
4786
4924
 
@@ -4841,7 +4979,7 @@ class AuroLibraryRuntimeUtils {
4841
4979
 
4842
4980
  return elemTag === tag || elem.hasAttribute(tag);
4843
4981
  }
4844
- }
4982
+ };
4845
4983
 
4846
4984
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
4847
4985
  // See LICENSE in the project root for license information.
@@ -5037,6 +5175,76 @@ var tokensCss$2 = i$5`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-d
5037
5175
 
5038
5176
  var colorCss$3 = i$5`: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)}`;
5039
5177
 
5178
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
5179
+ // See LICENSE in the project root for license information.
5180
+
5181
+ // ---------------------------------------------------------------------
5182
+
5183
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
5184
+
5185
+ let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
5186
+
5187
+ /* eslint-disable jsdoc/require-param */
5188
+
5189
+ /**
5190
+ * This will register a new custom element with the browser.
5191
+ * @param {String} name - The name of the custom element.
5192
+ * @param {Object} componentClass - The class to register as a custom element.
5193
+ * @returns {void}
5194
+ */
5195
+ registerComponent(name, componentClass) {
5196
+ if (!customElements.get(name)) {
5197
+ customElements.define(name, class extends componentClass {});
5198
+ }
5199
+ }
5200
+
5201
+ /**
5202
+ * Finds and returns the closest HTML Element based on a selector.
5203
+ * @returns {void}
5204
+ */
5205
+ closestElement(
5206
+ selector, // selector like in .closest()
5207
+ base = this, // extra functionality to skip a parent
5208
+ __Closest = (el, found = el && el.closest(selector)) =>
5209
+ !el || el === document || el === window
5210
+ ? null // standard .closest() returns null for non-found selectors also
5211
+ : found
5212
+ ? found // found a selector INside this element
5213
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
5214
+ ) {
5215
+ return __Closest(base);
5216
+ }
5217
+ /* eslint-enable jsdoc/require-param */
5218
+
5219
+ /**
5220
+ * 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.
5221
+ * @param {Object} elem - The element to check.
5222
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
5223
+ * @returns {void}
5224
+ */
5225
+ handleComponentTagRename(elem, tagName) {
5226
+ const tag = tagName.toLowerCase();
5227
+ const elemTag = elem.tagName.toLowerCase();
5228
+
5229
+ if (elemTag !== tag) {
5230
+ elem.setAttribute(tag, true);
5231
+ }
5232
+ }
5233
+
5234
+ /**
5235
+ * Validates if an element is a specific Auro component.
5236
+ * @param {Object} elem - The element to validate.
5237
+ * @param {String} tagName - The name of the Auro component to check against.
5238
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
5239
+ */
5240
+ elementMatch(elem, tagName) {
5241
+ const tag = tagName.toLowerCase();
5242
+ const elemTag = elem.tagName.toLowerCase();
5243
+
5244
+ return elemTag === tag || elem.hasAttribute(tag);
5245
+ }
5246
+ };
5247
+
5040
5248
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5041
5249
  // See LICENSE in the project root for license information.
5042
5250
 
@@ -5056,7 +5264,7 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
5056
5264
  */
5057
5265
  privateDefaults() {
5058
5266
  this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
5059
- this.runtimeUtils = new AuroLibraryRuntimeUtils();
5267
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$1();
5060
5268
  }
5061
5269
 
5062
5270
  // function to define props used within the scope of this component
@@ -5138,7 +5346,7 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
5138
5346
  *
5139
5347
  */
5140
5348
  static register(name = "auro-icon") {
5141
- AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroIcon);
5349
+ AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroIcon);
5142
5350
  }
5143
5351
 
5144
5352
  connectedCallback() {
@@ -5206,6 +5414,76 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
5206
5414
 
5207
5415
  var iconVersion$1 = '8.0.2';
5208
5416
 
5417
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
5418
+ // See LICENSE in the project root for license information.
5419
+
5420
+ // ---------------------------------------------------------------------
5421
+
5422
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
5423
+
5424
+ let AuroLibraryRuntimeUtils$3 = class AuroLibraryRuntimeUtils {
5425
+
5426
+ /* eslint-disable jsdoc/require-param */
5427
+
5428
+ /**
5429
+ * This will register a new custom element with the browser.
5430
+ * @param {String} name - The name of the custom element.
5431
+ * @param {Object} componentClass - The class to register as a custom element.
5432
+ * @returns {void}
5433
+ */
5434
+ registerComponent(name, componentClass) {
5435
+ if (!customElements.get(name)) {
5436
+ customElements.define(name, class extends componentClass {});
5437
+ }
5438
+ }
5439
+
5440
+ /**
5441
+ * Finds and returns the closest HTML Element based on a selector.
5442
+ * @returns {void}
5443
+ */
5444
+ closestElement(
5445
+ selector, // selector like in .closest()
5446
+ base = this, // extra functionality to skip a parent
5447
+ __Closest = (el, found = el && el.closest(selector)) =>
5448
+ !el || el === document || el === window
5449
+ ? null // standard .closest() returns null for non-found selectors also
5450
+ : found
5451
+ ? found // found a selector INside this element
5452
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
5453
+ ) {
5454
+ return __Closest(base);
5455
+ }
5456
+ /* eslint-enable jsdoc/require-param */
5457
+
5458
+ /**
5459
+ * 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.
5460
+ * @param {Object} elem - The element to check.
5461
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
5462
+ * @returns {void}
5463
+ */
5464
+ handleComponentTagRename(elem, tagName) {
5465
+ const tag = tagName.toLowerCase();
5466
+ const elemTag = elem.tagName.toLowerCase();
5467
+
5468
+ if (elemTag !== tag) {
5469
+ elem.setAttribute(tag, true);
5470
+ }
5471
+ }
5472
+
5473
+ /**
5474
+ * Validates if an element is a specific Auro component.
5475
+ * @param {Object} elem - The element to validate.
5476
+ * @param {String} tagName - The name of the Auro component to check against.
5477
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
5478
+ */
5479
+ elementMatch(elem, tagName) {
5480
+ const tag = tagName.toLowerCase();
5481
+ const elemTag = elem.tagName.toLowerCase();
5482
+
5483
+ return elemTag === tag || elem.hasAttribute(tag);
5484
+ }
5485
+ };
5486
+
5209
5487
  var styleCss$4 = i$5`.heading{margin:1.75rem 0;letter-spacing:var(--ds-text-heading-default-spacing, -0.2px);font-weight:var(--ds-text-heading-default-weight, 500)}.heading--display{margin-top:0;font-size:var(--ds-text-heading-display-size-breakpoint-sm, 2.75rem);font-weight:var(--ds-text-heading-display-weight, 100);line-height:var(--ds-text-heading-display-height-breakpoint-sm, 3.375rem)}@media screen and (min-width: 768px){.heading--display{font-size:var(--ds-text-heading-display-size-breakpoint-md, 3rem);line-height:var(--ds-text-heading-display-height-breakpoint-md, 3.75rem)}}@media screen and (min-width: 1024px){.heading--display{font-size:var(--ds-text-heading-display-size-breakpoint-lg, 3.5rem);line-height:var(--ds-text-heading-display-height-breakpoint-lg, 4.25rem)}}.heading--800{font-size:var(--ds-text-heading-800-size-breakpoint-sm, 2rem);font-weight:var(--ds-text-heading-800-weight, 500);line-height:var(--ds-text-heading-800-height-breakpoint-sm, 2.375rem)}@media screen and (min-width: 768px){.heading--800{font-size:var(--ds-text-heading-800-size-breakpoint-md, 2.25rem);line-height:var(--ds-text-heading-800-height-breakpoint-md, 2.625rem)}}@media screen and (min-width: 1024px){.heading--800{font-size:var(--ds-text-heading-800-size-breakpoint-lg, 2.5rem);line-height:var(--ds-text-heading-800-height-breakpoint-lg, 3rem)}}.heading--700{font-size:var(--ds-text-heading-700-size-breakpoint-sm, 1.75rem);font-weight:var(--ds-text-heading-700-weight, 500);line-height:var(--ds-text-heading-700-height-breakpoint-sm, 2.125rem)}@media screen and (min-width: 768px){.heading--700{font-size:var(--ds-text-heading-700-size-breakpoint-md, 2rem);line-height:var(--ds-text-heading-700-height-breakpoint-md, 2.375rem)}}@media screen and (min-width: 1024px){.heading--700{font-size:var(--ds-text-heading-700-size-breakpoint-lg, 2.25rem);line-height:var(--ds-text-heading-700-height-breakpoint-lg, 2.75rem)}}.heading--600{margin:1rem 0;font-size:var(--ds-text-heading-600-size-breakpoint-sm, 1.625rem);font-weight:var(--ds-text-heading-600-weight, 300);line-height:var(--ds-text-heading-600-height-breakpoint-sm, 1.875rem)}@media screen and (min-width: 768px){.heading--600{font-size:var(--ds-text-heading-600-size-breakpoint-md, 1.75rem);line-height:var(--ds-text-heading-600-height-breakpoint-md, 2.125rem)}}@media screen and (min-width: 1024px){.heading--600{font-size:var(--ds-text-heading-600-size-breakpoint-lg, 1.75rem);line-height:var(--ds-text-heading-600-height-breakpoint-lg, 2.25rem)}}.heading--500{margin:1rem 0;font-size:var(--ds-text-heading-500-size-breakpoint-sm, 1.375rem);font-weight:var(--ds-text-heading-500-weight, 300);line-height:var(--ds-text-heading-500-height-breakpoint-sm, 1.625rem)}@media screen and (min-width: 768px){.heading--500{font-size:var(--ds-text-heading-500-size-breakpoint-md, 1.5rem);line-height:var(--ds-text-heading-500-height-breakpoint-md, 1.875rem)}}@media screen and (min-width: 1024px){.heading--500{font-size:var(--ds-text-heading-500-size-breakpoint-lg, 1.5rem);line-height:var(--ds-text-heading-500-height-breakpoint-lg, 2rem)}}.heading--400{margin:.75rem 0;font-size:var(--ds-text-heading-400-size, 1.25rem);font-weight:var(--ds-text-heading-400-weight, 300);line-height:var(--ds-text-heading-400-height, 1.625rem)}.heading--300{margin:.75rem 0;font-size:var(--ds-text-heading-300-size, 1.125rem);font-weight:var(--ds-text-heading-300-weight, 300);line-height:var(--ds-text-heading-300-height, 1.625rem)}:host([no-margin-block]) .heading{margin-block:0}.util_stackMarginnone--bottom{margin-bottom:0}.util_stackMargin25--bottom{margin-bottom:var(--ds-size-25, 0.125rem)}.util_stackMargin50--bottom{margin-bottom:var(--ds-size-50, 0.25rem)}.util_stackMargin100--bottom{margin-bottom:var(--ds-size-100, 0.5rem)}.util_stackMargin150--bottom{margin-bottom:var(--ds-size-150, 0.75rem)}.util_stackMargin200--bottom{margin-bottom:var(--ds-size-200, 1rem)}.util_stackMargin300--bottom{margin-bottom:var(--ds-size-300, 1.5rem)}.util_stackMargin400--bottom{margin-bottom:var(--ds-size-400, 2rem)}.util_stackMargin600--bottom{margin-bottom:var(--ds-size-600, 3rem)}.util_stackMargin800--bottom{margin-bottom:var(--ds-size-800, 4rem)}.util_stackMarginnone--top{margin-top:0}.util_stackMargin25--top{margin-top:var(--ds-size-25, 0.125rem)}.util_stackMargin50--top{margin-top:var(--ds-size-50, 0.25rem)}.util_stackMargin100--top{margin-top:var(--ds-size-100, 0.5rem)}.util_stackMargin150--top{margin-top:var(--ds-size-150, 0.75rem)}.util_stackMargin200--top{margin-top:var(--ds-size-200, 1rem)}.util_stackMargin300--top{margin-top:var(--ds-size-300, 1.5rem)}.util_stackMargin400--top{margin-top:var(--ds-size-400, 2rem)}.util_stackMargin600--top{margin-top:var(--ds-size-600, 3rem)}.util_stackMargin800--top{margin-top:var(--ds-size-800, 4rem)}`;
5210
5488
 
5211
5489
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
@@ -5235,7 +5513,7 @@ class AuroHeader extends i$2 {
5235
5513
  /**
5236
5514
  * @private
5237
5515
  */
5238
- this.runtimeUtils = new AuroLibraryRuntimeUtils();
5516
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
5239
5517
  }
5240
5518
 
5241
5519
  // function to define props used within the scope of this component
@@ -5265,7 +5543,7 @@ class AuroHeader extends i$2 {
5265
5543
  *
5266
5544
  */
5267
5545
  static register(name = "auro-header") {
5268
- AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroHeader);
5546
+ AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroHeader);
5269
5547
  }
5270
5548
 
5271
5549
  firstUpdated() {
@@ -5361,7 +5639,7 @@ class AuroBibtemplate extends i$2 {
5361
5639
 
5362
5640
  this.large = false;
5363
5641
 
5364
- AuroLibraryRuntimeUtils.prototype.handleComponentTagRename(this, 'auro-bibtemplate');
5642
+ AuroLibraryRuntimeUtils$2.prototype.handleComponentTagRename(this, 'auro-bibtemplate');
5365
5643
 
5366
5644
  const versioning = new AuroDependencyVersioning();
5367
5645
  this.iconTag = versioning.generateTag('auro-formkit-bibtemplate-icon', iconVersion$1, AuroIcon$1);
@@ -5400,7 +5678,7 @@ class AuroBibtemplate extends i$2 {
5400
5678
  *
5401
5679
  */
5402
5680
  static register(name = "auro-bibtemplate") {
5403
- AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroBibtemplate);
5681
+ AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroBibtemplate);
5404
5682
  }
5405
5683
 
5406
5684
  /**
@@ -5440,6 +5718,18 @@ class AuroBibtemplate extends i$2 {
5440
5718
  this.setAttribute('exportparts', 'bibtemplate:dropdownBibTemplate');
5441
5719
  }
5442
5720
 
5721
+ firstUpdated(changedProperties) {
5722
+ super.firstUpdated(changedProperties);
5723
+
5724
+ this.dispatchEvent(new CustomEvent("auro-bibtemplate-connected", {
5725
+ bubbles: true,
5726
+ composed: true,
5727
+ detail: {
5728
+ element: this
5729
+ }
5730
+ }));
5731
+ }
5732
+
5443
5733
  // function that renders the HTML and CSS into the scope of the component
5444
5734
  render() {
5445
5735
  return u`
@@ -5587,7 +5877,7 @@ class AuroSelect extends i$2 {
5587
5877
  /**
5588
5878
  * @private
5589
5879
  */
5590
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
5880
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$5();
5591
5881
 
5592
5882
  /**
5593
5883
  * Generate unique names for dependency components.
@@ -5858,11 +6148,9 @@ class AuroSelect extends i$2 {
5858
6148
  */
5859
6149
  configureDropdown() {
5860
6150
  this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
5861
- this.menuWrapper = this.dropdown.querySelector('.menuWrapper');
5862
6151
 
5863
6152
  // setting up bibtemplate
5864
6153
  this.bibtemplate = this.dropdown.querySelector(this.bibtemplateTag._$litStatic$); // eslint-disable-line no-underscore-dangle
5865
- this.bibtemplate.append(this.menuWrapper);
5866
6154
 
5867
6155
  if (this.customBibWidth) {
5868
6156
  this.dropdown.dropdownWidth = this.customBibWidth;
@@ -5881,7 +6169,7 @@ class AuroSelect extends i$2 {
5881
6169
  *
5882
6170
  */
5883
6171
  static register(name = "auro-select") {
5884
- AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroSelect);
6172
+ AuroLibraryRuntimeUtils$5.prototype.registerComponent(name, AuroSelect);
5885
6173
  }
5886
6174
 
5887
6175
  /**
@@ -5985,8 +6273,6 @@ class AuroSelect extends i$2 {
5985
6273
  * @returns {void}
5986
6274
  */
5987
6275
  configureSelect() {
5988
- // inject menu into menuWrapper
5989
- this.menuWrapper.append(this.menu);
5990
6276
 
5991
6277
  this.addEventListener('keydown', (evt) => {
5992
6278
  if (evt.key === 'ArrowUp') {
@@ -6376,10 +6662,8 @@ class AuroSelect extends i$2 {
6376
6662
  <slot name="valueText" id="valueText"></slot>
6377
6663
  </span>
6378
6664
 
6379
- <div class="menuWrapper">
6380
- </div>
6381
-
6382
6665
  <${this.bibtemplateTag} ?large="${this.largeFullscreenHeadline}" @close-click="${this.hideBib}">
6666
+ <slot></slot>
6383
6667
  </${this.bibtemplateTag}>
6384
6668
  <slot name="label" slot="label"></slot>
6385
6669
  <p slot="helpText">
@@ -6614,7 +6898,7 @@ class AuroMenu extends i$2 {
6614
6898
  *
6615
6899
  */
6616
6900
  static register(name = "auro-menu") {
6617
- AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroMenu);
6901
+ AuroLibraryRuntimeUtils$5.prototype.registerComponent(name, AuroMenu);
6618
6902
  }
6619
6903
 
6620
6904
  // Lifecycle Methods
@@ -6638,7 +6922,7 @@ class AuroMenu extends i$2 {
6638
6922
  }
6639
6923
 
6640
6924
  firstUpdated() {
6641
- AuroLibraryRuntimeUtils$3.prototype.handleComponentTagRename(this, 'auro-menu');
6925
+ AuroLibraryRuntimeUtils$5.prototype.handleComponentTagRename(this, 'auro-menu');
6642
6926
 
6643
6927
  this.loadingSlots = this.querySelectorAll("[slot='loadingText'], [slot='loadingIcon']");
6644
6928
  this.initializeMenu();
@@ -7347,6 +7631,76 @@ var tokensCss = i$5`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-def
7347
7631
 
7348
7632
  var colorCss = i$5`: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)}`;
7349
7633
 
7634
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
7635
+ // See LICENSE in the project root for license information.
7636
+
7637
+ // ---------------------------------------------------------------------
7638
+
7639
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
7640
+
7641
+ class AuroLibraryRuntimeUtils {
7642
+
7643
+ /* eslint-disable jsdoc/require-param */
7644
+
7645
+ /**
7646
+ * This will register a new custom element with the browser.
7647
+ * @param {String} name - The name of the custom element.
7648
+ * @param {Object} componentClass - The class to register as a custom element.
7649
+ * @returns {void}
7650
+ */
7651
+ registerComponent(name, componentClass) {
7652
+ if (!customElements.get(name)) {
7653
+ customElements.define(name, class extends componentClass {});
7654
+ }
7655
+ }
7656
+
7657
+ /**
7658
+ * Finds and returns the closest HTML Element based on a selector.
7659
+ * @returns {void}
7660
+ */
7661
+ closestElement(
7662
+ selector, // selector like in .closest()
7663
+ base = this, // extra functionality to skip a parent
7664
+ __Closest = (el, found = el && el.closest(selector)) =>
7665
+ !el || el === document || el === window
7666
+ ? null // standard .closest() returns null for non-found selectors also
7667
+ : found
7668
+ ? found // found a selector INside this element
7669
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
7670
+ ) {
7671
+ return __Closest(base);
7672
+ }
7673
+ /* eslint-enable jsdoc/require-param */
7674
+
7675
+ /**
7676
+ * 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.
7677
+ * @param {Object} elem - The element to check.
7678
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
7679
+ * @returns {void}
7680
+ */
7681
+ handleComponentTagRename(elem, tagName) {
7682
+ const tag = tagName.toLowerCase();
7683
+ const elemTag = elem.tagName.toLowerCase();
7684
+
7685
+ if (elemTag !== tag) {
7686
+ elem.setAttribute(tag, true);
7687
+ }
7688
+ }
7689
+
7690
+ /**
7691
+ * Validates if an element is a specific Auro component.
7692
+ * @param {Object} elem - The element to validate.
7693
+ * @param {String} tagName - The name of the Auro component to check against.
7694
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
7695
+ */
7696
+ elementMatch(elem, tagName) {
7697
+ const tag = tagName.toLowerCase();
7698
+ const elemTag = elem.tagName.toLowerCase();
7699
+
7700
+ return elemTag === tag || elem.hasAttribute(tag);
7701
+ }
7702
+ }
7703
+
7350
7704
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
7351
7705
  // See LICENSE in the project root for license information.
7352
7706
 
@@ -7366,7 +7720,7 @@ class AuroIcon extends BaseIcon {
7366
7720
  */
7367
7721
  privateDefaults() {
7368
7722
  this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
7369
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
7723
+ this.runtimeUtils = new AuroLibraryRuntimeUtils();
7370
7724
  }
7371
7725
 
7372
7726
  // function to define props used within the scope of this component
@@ -7448,7 +7802,7 @@ class AuroIcon extends BaseIcon {
7448
7802
  *
7449
7803
  */
7450
7804
  static register(name = "auro-icon") {
7451
- AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroIcon);
7805
+ AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroIcon);
7452
7806
  }
7453
7807
 
7454
7808
  connectedCallback() {
@@ -7554,7 +7908,7 @@ class AuroMenuOption extends i$2 {
7554
7908
  /**
7555
7909
  * @private
7556
7910
  */
7557
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
7911
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$5();
7558
7912
  }
7559
7913
 
7560
7914
  static get properties() {
@@ -7598,7 +7952,7 @@ class AuroMenuOption extends i$2 {
7598
7952
  *
7599
7953
  */
7600
7954
  static register(name = "auro-menuoption") {
7601
- AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroMenuOption);
7955
+ AuroLibraryRuntimeUtils$5.prototype.registerComponent(name, AuroMenuOption);
7602
7956
  }
7603
7957
 
7604
7958
  firstUpdated() {