@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
@@ -1,9 +1,108 @@
1
- import { css, LitElement, html as html$1 } from 'lit';
1
+ import { LitElement, css, html as html$1 } from 'lit';
2
2
  import { classMap } from 'lit/directives/class-map.js';
3
3
  import { unsafeStatic, literal, html } from 'lit/static-html.js';
4
4
  import { ifDefined } from 'lit/directives/if-defined.js';
5
5
  import { ifDefined as ifDefined$1 } from 'lit-html/directives/if-defined.js';
6
6
 
7
+ let AuroElement$3 = class AuroElement extends LitElement {
8
+ static get properties() {
9
+ return {
10
+
11
+ /**
12
+ * Defines the language of an element.
13
+ * @default {'default'}
14
+ */
15
+ layout: {
16
+ type: String,
17
+ attribute: "layout",
18
+ reflect: true
19
+ },
20
+
21
+ shape: {
22
+ type: String,
23
+ attribute: "shape",
24
+ reflect: true
25
+ },
26
+
27
+ size: {
28
+ type: String,
29
+ attribute: "size",
30
+ reflect: true
31
+ },
32
+
33
+ onDark: {
34
+ type: Boolean,
35
+ attribute: "ondark",
36
+ reflect: true
37
+ }
38
+ };
39
+ }
40
+
41
+ resetShapeClasses() {
42
+ const wrapper = this.shadowRoot.querySelector('.wrapper');
43
+
44
+ if (wrapper) {
45
+ wrapper.classList.forEach((className) => {
46
+ if (className.startsWith('shape-')) {
47
+ wrapper.classList.remove(className);
48
+ }
49
+ });
50
+
51
+ }
52
+
53
+ if (this.shape && this.size) {
54
+ wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
55
+ } else {
56
+ wrapper.classList.add('shape-none');
57
+ }
58
+ }
59
+
60
+ resetLayoutClasses() {
61
+ if (this.layout) {
62
+ const wrapper = this.shadowRoot.querySelector('.wrapper');
63
+
64
+ if (wrapper) {
65
+ wrapper.classList.forEach((className) => {
66
+ if (className.startsWith('layout-')) {
67
+ wrapper.classList.remove(className);
68
+ }
69
+ });
70
+
71
+ wrapper.classList.add(`layout-${this.layout.toLowerCase()}`);
72
+ }
73
+ }
74
+ }
75
+
76
+ updateComponentArchitecture() {
77
+ this.resetLayoutClasses();
78
+ this.resetShapeClasses();
79
+ }
80
+
81
+ updated(changedProperties) {
82
+ if (changedProperties.has('layout') || changedProperties.has('shape') || changedProperties.has('size')) {
83
+ this.updateComponentArchitecture();
84
+ }
85
+ }
86
+
87
+ // Try to render the defined `this.layout` layout. If that fails, fall back to the default layout.
88
+ // This will catch if an invalid layout value is passed in and render the default layout if so.
89
+ render() {
90
+ try {
91
+ return this.renderLayout();
92
+ } catch (error) {
93
+ // failed to get the defined layout
94
+ console.error('Failed to get the defined layout - using the default layout', error); // eslint-disable-line no-console
95
+
96
+ // fallback to the default layout
97
+ return this.getLayout('default');
98
+ }
99
+ }
100
+ };
101
+
102
+ var shapeSizeCss$1 = css`.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}`;
103
+
104
+ var tokensCss$5 = css`:host(:not([ondark])){--ds-auro-select-border-color: var(--ds-basic-color-border-bold, #585e67);--ds-auro-select-background-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-select-label-text-color: var(--ds-basic-color-texticon-muted, #676767);--ds-auro-select-placeholder-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-select-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-select-error-icon-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: transparent}:host([ondark]){--ds-auro-select-border-color: var(--ds-basic-color-border-inverse, #ffffff);--ds-auro-select-background-color: var(--ds-advanced-color-shared-background-inverse, rgba(255, 255, 255, 0.15));--ds-auro-select-label-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-select-placeholder-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-select-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-select-error-icon-color: var(--ds-basic-color-status-error-subtle, #fbc6c6);--ds-auro-select-outline-color: transparent}`;
105
+
7
106
  class DateFormatter {
8
107
 
9
108
  constructor() {
@@ -60,9 +159,10 @@ class DateFormatter {
60
159
  /**
61
160
  * Convert a date object to string format.
62
161
  * @param {Object} date - Date to convert to string.
63
- * @returns {Object} Returns the date as a string.
162
+ * @param {String} locale - Optional locale to use for the date string. Defaults to user's locale.
163
+ * @returns {String} Returns the date as a string.
64
164
  */
65
- this.getDateAsString = (date) => date.toLocaleDateString(undefined, {
165
+ this.getDateAsString = (date, locale = undefined) => date.toLocaleDateString(locale, {
66
166
  year: "numeric",
67
167
  month: "2-digit",
68
168
  day: "2-digit",
@@ -254,7 +354,7 @@ class AuroDateUtilities extends AuroDateUtilitiesBase {
254
354
  const dateObj = new Date(this.getFourDigitYear(dateParts.year), dateParts.month - 1, dateParts.day || 1);
255
355
 
256
356
  // Get the date string of the date object we created from the string date
257
- const actualDateStr = dateFormatter.getDateAsString(dateObj);
357
+ const actualDateStr = dateFormatter.getDateAsString(dateObj, "en-US");
258
358
 
259
359
  // Guard Clause: Generated date matches date string input
260
360
  if (expectedDateStr !== actualDateStr) {
@@ -419,7 +519,7 @@ const {
419
519
 
420
520
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
421
521
 
422
- let AuroLibraryRuntimeUtils$3 = class AuroLibraryRuntimeUtils {
522
+ let AuroLibraryRuntimeUtils$6 = class AuroLibraryRuntimeUtils {
423
523
 
424
524
  /* eslint-disable jsdoc/require-param */
425
525
 
@@ -489,7 +589,7 @@ let AuroLibraryRuntimeUtils$3 = class AuroLibraryRuntimeUtils {
489
589
  class AuroFormValidation {
490
590
 
491
591
  constructor() {
492
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
592
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$6();
493
593
  }
494
594
 
495
595
  /**
@@ -768,7 +868,9 @@ class AuroFormValidation {
768
868
  elem.validity = this.auroInputElements[0].validity;
769
869
  elem.errorMessage = this.auroInputElements[0].errorMessage;
770
870
 
771
- if (elem.validity === 'valid' && this.auroInputElements.length > 1) {
871
+ // combobox has 2 inputs but no need to check validity on the 2nd one which is in fullscreen bib.
872
+ // combobox's 2nd input will have noValidate set true.
873
+ if (elem.validity === 'valid' && this.auroInputElements.length > 1 && !this.auroInputElements[1].noValidate) {
772
874
  elem.validity = this.auroInputElements[1].validity;
773
875
  elem.errorMessage = this.auroInputElements[1].errorMessage;
774
876
  }
@@ -895,7 +997,7 @@ let AuroDependencyVersioning$2 = class AuroDependencyVersioning {
895
997
 
896
998
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
897
999
 
898
- let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
1000
+ let AuroLibraryRuntimeUtils$2$1 = class AuroLibraryRuntimeUtils {
899
1001
 
900
1002
  /* eslint-disable jsdoc/require-param */
901
1003
 
@@ -1478,10 +1580,11 @@ const flip$1 = function (options) {
1478
1580
  const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
1479
1581
  const nextPlacement = placements[nextIndex];
1480
1582
  if (nextPlacement) {
1481
- var _overflowsData$;
1482
1583
  const ignoreCrossAxisOverflow = checkCrossAxis === 'alignment' ? initialSideAxis !== getSideAxis(nextPlacement) : false;
1483
- const hasInitialMainAxisOverflow = ((_overflowsData$ = overflowsData[0]) == null ? void 0 : _overflowsData$.overflows[0]) > 0;
1484
- if (!ignoreCrossAxisOverflow || hasInitialMainAxisOverflow) {
1584
+ if (!ignoreCrossAxisOverflow ||
1585
+ // We leave the current main axis only if every placement on that axis
1586
+ // overflows the main axis.
1587
+ overflowsData.every(d => d.overflows[0] > 0 && getSideAxis(d.placement) === initialSideAxis)) {
1485
1588
  // Try next placement and re-run the lifecycle.
1486
1589
  return {
1487
1590
  data: {
@@ -2502,8 +2605,28 @@ class AuroFloatingUI {
2502
2605
  if (!AuroFloatingUI.isMousePressHandlerInitialized && window && window.addEventListener) {
2503
2606
  AuroFloatingUI.isMousePressHandlerInitialized = true;
2504
2607
 
2608
+ // Track timeout for isMousePressed reset to avoid race conditions
2609
+ if (!AuroFloatingUI._mousePressedTimeout) {
2610
+ AuroFloatingUI._mousePressedTimeout = null;
2611
+ }
2505
2612
  const mouseEventGlobalHandler = (event) => {
2506
- AuroFloatingUI.isMousePressed = event.type === 'mousedown';
2613
+ const isPressed = event.type === 'mousedown';
2614
+ if (isPressed) {
2615
+ // Clear any pending timeout to prevent race condition
2616
+ if (AuroFloatingUI._mousePressedTimeout !== null) {
2617
+ clearTimeout(AuroFloatingUI._mousePressedTimeout);
2618
+ AuroFloatingUI._mousePressedTimeout = null;
2619
+ }
2620
+ if (!AuroFloatingUI.isMousePressed) {
2621
+ AuroFloatingUI.isMousePressed = true;
2622
+ }
2623
+ } else if (AuroFloatingUI.isMousePressed && !isPressed) {
2624
+ // Schedule reset and track timeout ID
2625
+ AuroFloatingUI._mousePressedTimeout = setTimeout(() => {
2626
+ AuroFloatingUI.isMousePressed = false;
2627
+ AuroFloatingUI._mousePressedTimeout = null;
2628
+ }, 0);
2629
+ }
2507
2630
  };
2508
2631
 
2509
2632
  window.addEventListener('mousedown', mouseEventGlobalHandler);
@@ -2630,6 +2753,7 @@ class AuroFloatingUI {
2630
2753
 
2631
2754
  // Compute the position of the bib
2632
2755
  computePosition(this.element.trigger, this.element.bib, {
2756
+ strategy: this.element.floaterConfig?.strategy || 'fixed',
2633
2757
  placement: this.element.floaterConfig?.placement,
2634
2758
  middleware: middleware || []
2635
2759
  }).then(({ x, y }) => { // eslint-disable-line id-length
@@ -2764,8 +2888,9 @@ class AuroFloatingUI {
2764
2888
  if (this.element.contains(activeElement) || this.element.bib?.contains(activeElement)) {
2765
2889
  return;
2766
2890
  }
2767
- // if fullscreen bib is still open and the focus is missing, do not close
2768
- if (this.element.bib.hasAttribute('isfullscreen') && activeElement === document.body) {
2891
+
2892
+ // if fullscreen bib is in fullscreen mode, do not close
2893
+ if (this.element.bib.hasAttribute('isfullscreen')) {
2769
2894
  return;
2770
2895
  }
2771
2896
 
@@ -2947,10 +3072,11 @@ class AuroFloatingUI {
2947
3072
  // Space is included as it's expected behavior for interactive elements
2948
3073
 
2949
3074
  const origin = event.composedPath()[0];
2950
- if (event.key === 'Enter' || ((!origin || origin.tagName !== "INPUT") && event.key === ' ')) {
2951
- event.preventDefault(); // Prevent page scroll on space
3075
+ if (event.key === 'Enter' || event.key === ' ' && (!origin || origin.tagName !== "INPUT")) {
3076
+
3077
+ event.preventDefault();
2952
3078
  this.handleClick();
2953
- }
3079
+ }
2954
3080
  break;
2955
3081
  case 'mouseenter':
2956
3082
  if (this.element.hoverToggle) {
@@ -3066,8 +3192,6 @@ class AuroFloatingUI {
3066
3192
  this.element.hoverToggle = this.element.floaterConfig.hoverToggle;
3067
3193
  }
3068
3194
 
3069
- document.body.append(this.element.bib);
3070
-
3071
3195
  this.regenerateBibId();
3072
3196
  this.handleTriggerTabIndex();
3073
3197
 
@@ -3104,6 +3228,267 @@ class AuroFloatingUI {
3104
3228
  }
3105
3229
  }
3106
3230
 
3231
+ // Selectors for focusable elements
3232
+ const FOCUSABLE_SELECTORS = [
3233
+ 'a[href]',
3234
+ 'button:not([disabled])',
3235
+ 'textarea:not([disabled])',
3236
+ 'input:not([disabled])',
3237
+ 'select:not([disabled])',
3238
+ '[role="tab"]:not([disabled])',
3239
+ '[role="link"]:not([disabled])',
3240
+ '[role="button"]:not([disabled])',
3241
+ '[tabindex]:not([tabindex="-1"])',
3242
+ '[contenteditable]:not([contenteditable="false"])'
3243
+ ];
3244
+
3245
+ // List of custom components that are known to be focusable
3246
+ const FOCUSABLE_COMPONENTS = [
3247
+ 'auro-checkbox',
3248
+ 'auro-radio',
3249
+ 'auro-dropdown',
3250
+ 'auro-button',
3251
+ 'auro-combobox',
3252
+ 'auro-input',
3253
+ 'auro-counter',
3254
+ 'auro-menu',
3255
+ 'auro-select',
3256
+ 'auro-datepicker',
3257
+ 'auro-hyperlink',
3258
+ 'auro-accordion',
3259
+ ];
3260
+
3261
+ /**
3262
+ * Determines if a given element is a custom focusable component.
3263
+ * Returns true if the element matches a known focusable component and is not disabled.
3264
+ *
3265
+ * @param {HTMLElement} element The element to check for focusability.
3266
+ * @returns {boolean} True if the element is a focusable custom component, false otherwise.
3267
+ */
3268
+ function isFocusableComponent(element) {
3269
+ const componentName = element.tagName.toLowerCase();
3270
+
3271
+ // Guard Clause: Element is a focusable component
3272
+ if (!FOCUSABLE_COMPONENTS.some((name) => element.hasAttribute(name) || componentName === name)) return false;
3273
+
3274
+ // Guard Clause: Element is not disabled
3275
+ if (element.hasAttribute('disabled')) return false;
3276
+
3277
+ // Guard Clause: The element is a hyperlink and has no href attribute
3278
+ if (componentName.match("hyperlink") && !element.hasAttribute('href')) return false;
3279
+
3280
+ // If all guard clauses pass, the element is a focusable component
3281
+ return true;
3282
+ }
3283
+
3284
+ /**
3285
+ * Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
3286
+ * Returns a unique, ordered array of elements that can receive focus.
3287
+ *
3288
+ * @param {HTMLElement} container The container to search within
3289
+ * @returns {Array<HTMLElement>} An array of focusable elements within the container.
3290
+ */
3291
+ function getFocusableElements(container) {
3292
+ // Get elements in DOM order by walking the tree
3293
+ const orderedFocusableElements = [];
3294
+
3295
+ // Define a recursive function to collect focusable elements in DOM order
3296
+ const collectFocusableElements = (root) => {
3297
+ // Check if current element is focusable
3298
+ if (root.nodeType === Node.ELEMENT_NODE) {
3299
+ // Check if this is a custom component that is focusable
3300
+ const isComponentFocusable = isFocusableComponent(root);
3301
+
3302
+ if (isComponentFocusable) {
3303
+ // Add the component itself as a focusable element and don't traverse its shadow DOM
3304
+ orderedFocusableElements.push(root);
3305
+ return; // Skip traversing inside this component
3306
+ }
3307
+
3308
+ // Check if the element itself matches any selector
3309
+ for (const selector of FOCUSABLE_SELECTORS) {
3310
+ if (root.matches?.(selector)) {
3311
+ orderedFocusableElements.push(root);
3312
+ break; // Once we know it's focusable, no need to check other selectors
3313
+ }
3314
+ }
3315
+
3316
+ // Process shadow DOM only for non-Auro components
3317
+ if (root.shadowRoot) {
3318
+ // Process shadow DOM children in order
3319
+ if (root.shadowRoot.children) {
3320
+ Array.from(root.shadowRoot.children).forEach(child => {
3321
+ collectFocusableElements(child);
3322
+ });
3323
+ }
3324
+ }
3325
+
3326
+ // Process slots and their assigned nodes in order
3327
+ if (root.tagName === 'SLOT') {
3328
+ const assignedNodes = root.assignedNodes({ flatten: true });
3329
+ for (const node of assignedNodes) {
3330
+ collectFocusableElements(node);
3331
+ }
3332
+ } else {
3333
+ // Process light DOM children in order
3334
+ if (root.children) {
3335
+ Array.from(root.children).forEach(child => {
3336
+ collectFocusableElements(child);
3337
+ });
3338
+ }
3339
+ }
3340
+ }
3341
+ };
3342
+
3343
+ // Start the traversal from the container
3344
+ collectFocusableElements(container);
3345
+
3346
+ // Remove duplicates that might have been collected through different paths
3347
+ // while preserving order
3348
+ const uniqueElements = [];
3349
+ const seen = new Set();
3350
+
3351
+ for (const element of orderedFocusableElements) {
3352
+ if (!seen.has(element)) {
3353
+ seen.add(element);
3354
+ uniqueElements.push(element);
3355
+ }
3356
+ }
3357
+
3358
+ return uniqueElements;
3359
+ }
3360
+
3361
+ /**
3362
+ * FocusTrap manages keyboard focus within a specified container element, ensuring that focus does not leave the container when tabbing.
3363
+ * It is commonly used for modal dialogs or overlays to improve accessibility by trapping focus within interactive UI components.
3364
+ */
3365
+ class FocusTrap {
3366
+ /**
3367
+ * Creates a new FocusTrap instance for the given container element.
3368
+ * Initializes event listeners and prepares the container for focus management.
3369
+ *
3370
+ * @param {HTMLElement} container The DOM element to trap focus within.
3371
+ * @throws {Error} If the provided container is not a valid HTMLElement.
3372
+ */
3373
+ constructor(container) {
3374
+ if (!container || !(container instanceof HTMLElement)) {
3375
+ throw new Error("FocusTrap requires a valid HTMLElement.");
3376
+ }
3377
+
3378
+ this.container = container;
3379
+ this.tabDirection = 'forward'; // or 'backward'
3380
+
3381
+ this._init();
3382
+ }
3383
+
3384
+ /**
3385
+ * Initializes the focus trap by setting up event listeners and attributes on the container.
3386
+ * Prepares the container for focus management, including support for shadow DOM and inert attributes.
3387
+ *
3388
+ * @private
3389
+ */
3390
+ _init() {
3391
+
3392
+ // Add inert attribute to prevent focusing programmatically as well (if supported)
3393
+ if ('inert' in HTMLElement.prototype) {
3394
+ this.container.inert = false; // Ensure the container isn't inert
3395
+ this.container.setAttribute('data-focus-trap-container', true); // Mark for identification
3396
+ }
3397
+
3398
+ // Track tab direction
3399
+ this.container.addEventListener('keydown', this._onKeydown);
3400
+ }
3401
+
3402
+ /**
3403
+ * Handles keydown events to manage tab navigation within the container.
3404
+ * Ensures that focus wraps around when reaching the first or last focusable element.
3405
+ *
3406
+ * @param {KeyboardEvent} e The keyboard event triggered by user interaction.
3407
+ * @private
3408
+ */
3409
+ _onKeydown = (e) => {
3410
+
3411
+ if (e.key === 'Tab') {
3412
+
3413
+ // Set the tab direction based on the key pressed
3414
+ this.tabDirection = e.shiftKey ? 'backward' : 'forward';
3415
+
3416
+ // Get the active element(s) in the document and shadow root
3417
+ // This will include the active element in the shadow DOM if it exists
3418
+ // Active element may be inside the shadow DOM depending on delegatesFocus, so we need to check both
3419
+ let activeElement = document.activeElement;
3420
+ const actives = [activeElement];
3421
+ while (activeElement?.shadowRoot?.activeElement) {
3422
+ actives.push(activeElement.shadowRoot.activeElement);
3423
+ activeElement = activeElement.shadowRoot.activeElement;
3424
+ }
3425
+
3426
+ // Update the focusable elements
3427
+ const focusables = this._getFocusableElements();
3428
+
3429
+ // If we're at either end of the focusable elements, wrap around to the other end
3430
+ const focusIndex =
3431
+ (actives.includes(focusables[0]) || actives.includes(this.container)) && this.tabDirection === 'backward'
3432
+ ? focusables.length - 1
3433
+ : actives.includes(focusables[focusables.length - 1]) && this.tabDirection === 'forward'
3434
+ ? 0
3435
+ : null;
3436
+
3437
+ if (focusIndex !== null) {
3438
+ focusables[focusIndex].focus();
3439
+ e.preventDefault(); // Prevent default tab behavior
3440
+ e.stopPropagation(); // Stop the event from bubbling up
3441
+ }
3442
+ }
3443
+ };
3444
+
3445
+ /**
3446
+ * Retrieves all focusable elements within the container in DOM order, including those in shadow DOM and slots.
3447
+ * Returns a unique, ordered array of elements that can receive focus.
3448
+ *
3449
+ * @returns {Array<HTMLElement>} An array of focusable elements within the container.
3450
+ * @private
3451
+ */
3452
+ _getFocusableElements() {
3453
+ // Use the imported utility function to get focusable elements
3454
+ const elements = getFocusableElements(this.container);
3455
+
3456
+ // Filter out any elements with the 'focus-bookend' class
3457
+ return elements;
3458
+ }
3459
+
3460
+ /**
3461
+ * Moves focus to the first focusable element within the container.
3462
+ * Useful for setting initial focus when activating the focus trap.
3463
+ */
3464
+ focusFirstElement() {
3465
+ const focusables = this._getFocusableElements();
3466
+ if (focusables.length) focusables[0].focus();
3467
+ }
3468
+
3469
+ /**
3470
+ * Moves focus to the last focusable element within the container.
3471
+ * Useful for setting focus when deactivating or cycling focus in reverse.
3472
+ */
3473
+ focusLastElement() {
3474
+ const focusables = this._getFocusableElements();
3475
+ if (focusables.length) focusables[focusables.length - 1].focus();
3476
+ }
3477
+
3478
+ /**
3479
+ * Removes event listeners and attributes added by the focus trap.
3480
+ * Call this method to clean up when the focus trap is no longer needed.
3481
+ */
3482
+ disconnect() {
3483
+
3484
+ if (this.container.hasAttribute('data-focus-trap-container')) {
3485
+ this.container.removeAttribute('data-focus-trap-container');
3486
+ }
3487
+
3488
+ this.container.removeEventListener('keydown', this._onKeydown);
3489
+ }
3490
+ }
3491
+
3107
3492
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3108
3493
  // See LICENSE in the project root for license information.
3109
3494
 
@@ -3154,7 +3539,7 @@ let AuroDependencyVersioning$1 = class AuroDependencyVersioning {
3154
3539
  * @attr {Boolean} hiddenAudible - If present, the component will be hidden from screen readers, but seen visually
3155
3540
  */
3156
3541
 
3157
- let AuroElement$1 = class AuroElement extends LitElement {
3542
+ let AuroElement$1$1 = class AuroElement extends LitElement {
3158
3543
 
3159
3544
  // function to define props used within the scope of this component
3160
3545
  static get properties() {
@@ -3222,7 +3607,7 @@ var styleCss$2$1 = css`:focus:not(:focus-visible){outline:3px solid transparent}
3222
3607
  */
3223
3608
 
3224
3609
  // build the component class
3225
- let BaseIcon$1 = class BaseIcon extends AuroElement$1 {
3610
+ let BaseIcon$1 = class BaseIcon extends AuroElement$1$1 {
3226
3611
  constructor() {
3227
3612
  super();
3228
3613
  this.onDark = false;
@@ -3294,48 +3679,118 @@ let BaseIcon$1 = class BaseIcon extends AuroElement$1 {
3294
3679
  }
3295
3680
  };
3296
3681
 
3297
- var tokensCss$2 = css`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-alaska-color:#02426D;--ds-auro-icon-size:var(--ds-size-300, 1.5rem)}`;
3682
+ var tokensCss$2$1 = css`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-alaska-color:#02426D;--ds-auro-icon-size:var(--ds-size-300, 1.5rem)}`;
3298
3683
 
3299
- var colorCss$3 = css`: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)}`;
3684
+ var colorCss$3$1 = css`: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)}`;
3300
3685
 
3301
- // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
3686
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3302
3687
  // See LICENSE in the project root for license information.
3303
3688
 
3689
+ // ---------------------------------------------------------------------
3690
+
3691
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
3304
3692
 
3305
- let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
3306
- constructor() {
3307
- super();
3693
+ let AuroLibraryRuntimeUtils$1$1 = class AuroLibraryRuntimeUtils {
3308
3694
 
3309
- this.variant = undefined;
3310
- this.privateDefaults();
3695
+ /* eslint-disable jsdoc/require-param */
3696
+
3697
+ /**
3698
+ * This will register a new custom element with the browser.
3699
+ * @param {String} name - The name of the custom element.
3700
+ * @param {Object} componentClass - The class to register as a custom element.
3701
+ * @returns {void}
3702
+ */
3703
+ registerComponent(name, componentClass) {
3704
+ if (!customElements.get(name)) {
3705
+ customElements.define(name, class extends componentClass {});
3706
+ }
3311
3707
  }
3312
3708
 
3313
3709
  /**
3314
- * Internal Defaults.
3315
- * @private
3710
+ * Finds and returns the closest HTML Element based on a selector.
3316
3711
  * @returns {void}
3317
3712
  */
3318
- privateDefaults() {
3319
- this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
3320
- this.runtimeUtils = new AuroLibraryRuntimeUtils$1();
3713
+ closestElement(
3714
+ selector, // selector like in .closest()
3715
+ base = this, // extra functionality to skip a parent
3716
+ __Closest = (el, found = el && el.closest(selector)) =>
3717
+ !el || el === document || el === window
3718
+ ? null // standard .closest() returns null for non-found selectors also
3719
+ : found
3720
+ ? found // found a selector INside this element
3721
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
3722
+ ) {
3723
+ return __Closest(base);
3321
3724
  }
3725
+ /* eslint-enable jsdoc/require-param */
3322
3726
 
3323
- // function to define props used within the scope of this component
3324
- static get properties() {
3325
- return {
3326
- ...super.properties,
3727
+ /**
3728
+ * 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.
3729
+ * @param {Object} elem - The element to check.
3730
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
3731
+ * @returns {void}
3732
+ */
3733
+ handleComponentTagRename(elem, tagName) {
3734
+ const tag = tagName.toLowerCase();
3735
+ const elemTag = elem.tagName.toLowerCase();
3327
3736
 
3328
- /**
3329
- * Set aria-hidden value. Default is `true`. Option is `false`.
3330
- */
3331
- ariaHidden: {
3332
- type: String,
3333
- reflect: true
3334
- },
3737
+ if (elemTag !== tag) {
3738
+ elem.setAttribute(tag, true);
3739
+ }
3740
+ }
3335
3741
 
3336
- /**
3337
- * The category of the icon you are looking for. See https://auro.alaskaair.com/icons/usage.
3338
- */
3742
+ /**
3743
+ * Validates if an element is a specific Auro component.
3744
+ * @param {Object} elem - The element to validate.
3745
+ * @param {String} tagName - The name of the Auro component to check against.
3746
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
3747
+ */
3748
+ elementMatch(elem, tagName) {
3749
+ const tag = tagName.toLowerCase();
3750
+ const elemTag = elem.tagName.toLowerCase();
3751
+
3752
+ return elemTag === tag || elem.hasAttribute(tag);
3753
+ }
3754
+ };
3755
+
3756
+ // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
3757
+ // See LICENSE in the project root for license information.
3758
+
3759
+
3760
+ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
3761
+ constructor() {
3762
+ super();
3763
+
3764
+ this.variant = undefined;
3765
+ this.privateDefaults();
3766
+ }
3767
+
3768
+ /**
3769
+ * Internal Defaults.
3770
+ * @private
3771
+ * @returns {void}
3772
+ */
3773
+ privateDefaults() {
3774
+ this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
3775
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$1$1();
3776
+ }
3777
+
3778
+ // function to define props used within the scope of this component
3779
+ static get properties() {
3780
+ return {
3781
+ ...super.properties,
3782
+
3783
+ /**
3784
+ * Set aria-hidden value. Default is `true`. Option is `false`.
3785
+ */
3786
+ ariaHidden: {
3787
+ type: String,
3788
+ reflect: true
3789
+ },
3790
+
3791
+ /**
3792
+ * The category of the icon you are looking for. See https://auro.alaskaair.com/icons/usage.
3793
+ */
3339
3794
  category: {
3340
3795
  type: String,
3341
3796
  reflect: true
@@ -3384,9 +3839,9 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
3384
3839
  static get styles() {
3385
3840
  return [
3386
3841
  super.styles,
3387
- css`${tokensCss$2}`,
3842
+ css`${tokensCss$2$1}`,
3388
3843
  css`${styleCss$2$1}`,
3389
- css`${colorCss$3}`
3844
+ css`${colorCss$3$1}`
3390
3845
  ];
3391
3846
  }
3392
3847
 
@@ -3399,7 +3854,7 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
3399
3854
  *
3400
3855
  */
3401
3856
  static register(name = "auro-icon") {
3402
- AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroIcon);
3857
+ AuroLibraryRuntimeUtils$1$1.prototype.registerComponent(name, AuroIcon);
3403
3858
  }
3404
3859
 
3405
3860
  connectedCallback() {
@@ -3420,8 +3875,12 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
3420
3875
  async firstUpdated() {
3421
3876
  await super.firstUpdated();
3422
3877
 
3423
- // Removes the SVG description for screenreader if ariaHidden is set to true
3424
- if (!this.hasAttribute('ariaHidden') && this.svg) {
3878
+ /**
3879
+ * icons provide a description for screen readers. Icon only instances Auro-button
3880
+ * depend on this description to provide context for the user using a screen reader.
3881
+ * Removes the SVG description for screen reader if ariaHidden is set to true.
3882
+ */
3883
+ if (this.hasAttribute('ariaHidden') && this.svg) {
3425
3884
  const svgDesc = this.svg.querySelector('desc');
3426
3885
 
3427
3886
  if (svgDesc) {
@@ -3467,17 +3926,16 @@ let AuroIcon$1 = class AuroIcon extends BaseIcon$1 {
3467
3926
 
3468
3927
  var iconVersion$1 = '6.1.2';
3469
3928
 
3470
- var styleCss$1$1 = css`: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}`;
3929
+ var styleCss$1$2 = css`: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}`;
3471
3930
 
3472
- var colorCss$2 = css`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
3931
+ var colorCss$2$1 = css`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
3473
3932
 
3474
- var tokensCss$1 = css`: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)}`;
3933
+ var tokensCss$1$1 = css`: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)}`;
3475
3934
 
3476
3935
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
3477
3936
  // See LICENSE in the project root for license information.
3478
3937
 
3479
3938
 
3480
-
3481
3939
  const DESIGN_TOKEN_BREAKPOINT_PREFIX = '--ds-grid-breakpoint-';
3482
3940
  const DESIGN_TOKEN_BREAKPOINT_OPTIONS = [
3483
3941
  'xl',
@@ -3493,7 +3951,7 @@ const DESIGN_TOKEN_BREAKPOINT_OPTIONS = [
3493
3951
  */
3494
3952
 
3495
3953
  class AuroDropdownBib extends LitElement {
3496
-
3954
+ // not extending AuroElement because Bib needs only `shape` prop
3497
3955
  constructor() {
3498
3956
  super();
3499
3957
 
@@ -3502,14 +3960,17 @@ class AuroDropdownBib extends LitElement {
3502
3960
  */
3503
3961
  this._mobileBreakpointValue = undefined;
3504
3962
 
3505
- AuroLibraryRuntimeUtils$1.prototype.handleComponentTagRename(this, 'auro-dropdownbib');
3963
+ AuroLibraryRuntimeUtils$2$1.prototype.handleComponentTagRename(this, 'auro-dropdownbib');
3964
+
3965
+ this.shape = "rounded";
3966
+ this.matchWidth = false;
3506
3967
  }
3507
3968
 
3508
3969
  static get styles() {
3509
3970
  return [
3510
- styleCss$1$1,
3511
- colorCss$2,
3512
- tokensCss$1
3971
+ styleCss$1$2,
3972
+ colorCss$2$1,
3973
+ tokensCss$1$1
3513
3974
  ];
3514
3975
  }
3515
3976
 
@@ -3540,6 +4001,15 @@ class AuroDropdownBib extends LitElement {
3540
4001
  reflect: true
3541
4002
  },
3542
4003
 
4004
+ /**
4005
+ * If declared, the bib width will match the trigger width.
4006
+ * @private
4007
+ */
4008
+ matchWidth: {
4009
+ type: Boolean,
4010
+ reflect: true
4011
+ },
4012
+
3543
4013
  /**
3544
4014
  * If declared, will apply border-radius to the bib.
3545
4015
  */
@@ -3547,6 +4017,18 @@ class AuroDropdownBib extends LitElement {
3547
4017
  type: Boolean,
3548
4018
  reflect: true
3549
4019
  },
4020
+
4021
+ /**
4022
+ * A reference to the associated bib template element.
4023
+ */
4024
+ bibTemplate: {
4025
+ type: Object
4026
+ },
4027
+
4028
+ shape: {
4029
+ type: String,
4030
+ reflect: true
4031
+ }
3550
4032
  };
3551
4033
  }
3552
4034
 
@@ -3579,13 +4061,62 @@ class AuroDropdownBib extends LitElement {
3579
4061
  }
3580
4062
  }
3581
4063
  });
4064
+
4065
+ if (this.bibTemplate) {
4066
+ // If the bib template is found, set the fullscreen attribute
4067
+ if (this.isFullscreen) {
4068
+ this.bibTemplate.setAttribute('isFullscreen', 'true');
4069
+ } else {
4070
+ this.bibTemplate.removeAttribute('isFullscreen');
4071
+ }
4072
+ }
3582
4073
  }
3583
4074
  }
3584
4075
 
4076
+ connectedCallback() {
4077
+ super.connectedCallback();
4078
+
4079
+ // Listen for the auro-bibtemplate-connected event to set the fullscreen attribute
4080
+ this.addEventListener('auro-bibtemplate-connected', (event) => {
4081
+ const bibTemplate = event.detail.element;
4082
+ this.bibTemplate = bibTemplate;
4083
+
4084
+ if (bibTemplate) {
4085
+ // If the bib template is found, set the fullscreen attribute
4086
+ if (this.isFullscreen) {
4087
+ bibTemplate.setAttribute('isFullscreen', 'true');
4088
+ } else {
4089
+ bibTemplate.removeAttribute('isFullscreen');
4090
+ }
4091
+ }
4092
+ });
4093
+ }
4094
+
4095
+ firstUpdated(changedProperties) {
4096
+ super.firstUpdated(changedProperties);
4097
+
4098
+ // Dispatch a custom event when the component is connected
4099
+ this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
4100
+ bubbles: true,
4101
+ composed: true,
4102
+ detail: {
4103
+ element: this
4104
+ }
4105
+ }));
4106
+ }
4107
+
3585
4108
  // function that renders the HTML and CSS into the scope of the component
3586
4109
  render() {
4110
+ const classes = {
4111
+ container: true
4112
+ };
4113
+
4114
+ // Since this class does not inherit from AuroElement, we apply the shape-related class within the `render` function,
4115
+ // mimicking the class naming convention used in AuroElement.resetShapeClasses.
4116
+ classes[`shape-${this.shape}`] = true;
4117
+
3587
4118
  return html`
3588
- <div class="container" part="bibContainer">
4119
+ <div class="${classMap(classes)}" part="bibContainer">
3589
4120
  <slot></slot>
3590
4121
  </div>
3591
4122
  `;
@@ -3594,23 +4125,23 @@ class AuroDropdownBib extends LitElement {
3594
4125
 
3595
4126
  var dropdownVersion$1 = '3.0.0';
3596
4127
 
3597
- var shapeSizeCss = css`.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}`;
4128
+ var shapeSizeCss = css`.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}`;
3598
4129
 
3599
- var colorCss$1$1 = css`: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)}`;
4130
+ var colorCss$1$1 = css`: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)}`;
3600
4131
 
3601
- var classicColorCss = css`: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))}`;
4132
+ var classicColorCss = css``;
3602
4133
 
3603
- var classicLayoutCss = css`: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)}`;
4134
+ var classicLayoutCss = css`: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}`;
3604
4135
 
3605
- var styleEmphasizedCss = css`: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)}`;
4136
+ var styleEmphasizedCss = css`: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)}`;
3606
4137
 
3607
- var styleSnowflakeCss = css`: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)}`;
4138
+ var styleSnowflakeCss = css`: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)}`;
3608
4139
 
3609
- var colorCss$4 = css`: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)}`;
4140
+ var colorCss$5 = css`: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)}`;
3610
4141
 
3611
- var styleCss$4 = css`.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}`;
4142
+ var styleCss$6 = css`.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}`;
3612
4143
 
3613
- var tokensCss$3 = css`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
4144
+ var tokensCss$4 = css`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
3614
4145
 
3615
4146
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3616
4147
  // See LICENSE in the project root for license information.
@@ -3619,7 +4150,7 @@ var tokensCss$3 = css`:host{--ds-auro-helptext-color: var(--ds-basic-color-texti
3619
4150
 
3620
4151
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
3621
4152
 
3622
- let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
4153
+ let AuroLibraryRuntimeUtils$5 = class AuroLibraryRuntimeUtils {
3623
4154
 
3624
4155
  /* eslint-disable jsdoc/require-param */
3625
4156
 
@@ -3691,7 +4222,7 @@ let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
3691
4222
  *
3692
4223
  * @attr { Boolean } large - If declared, make font-size to 1rem(16px).
3693
4224
  */
3694
- class AuroHelpText extends LitElement {
4225
+ let AuroHelpText$1 = class AuroHelpText extends LitElement {
3695
4226
 
3696
4227
  constructor() {
3697
4228
  super();
@@ -3700,14 +4231,14 @@ class AuroHelpText extends LitElement {
3700
4231
  this.onDark = false;
3701
4232
  this.hasTextContent = false;
3702
4233
 
3703
- AuroLibraryRuntimeUtils$2.prototype.handleComponentTagRename(this, 'auro-helptext');
4234
+ AuroLibraryRuntimeUtils$5.prototype.handleComponentTagRename(this, 'auro-helptext');
3704
4235
  }
3705
4236
 
3706
4237
  static get styles() {
3707
4238
  return [
3708
- colorCss$4,
3709
- styleCss$4,
3710
- tokensCss$3
4239
+ colorCss$5,
4240
+ styleCss$6,
4241
+ tokensCss$4
3711
4242
  ];
3712
4243
  }
3713
4244
 
@@ -3756,7 +4287,7 @@ class AuroHelpText extends LitElement {
3756
4287
  *
3757
4288
  */
3758
4289
  static register(name = "auro-helptext") {
3759
- AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroHelpText);
4290
+ AuroLibraryRuntimeUtils$5.prototype.registerComponent(name, AuroHelpText);
3760
4291
  }
3761
4292
 
3762
4293
  updated() {
@@ -3810,9 +4341,9 @@ class AuroHelpText extends LitElement {
3810
4341
  </div>
3811
4342
  `;
3812
4343
  }
3813
- }
4344
+ };
3814
4345
 
3815
- var helpTextVersion = '1.0.0';
4346
+ var helpTextVersion$1 = '1.0.0';
3816
4347
 
3817
4348
  let AuroElement$2 = class AuroElement extends LitElement {
3818
4349
  static get properties() {
@@ -3849,18 +4380,21 @@ let AuroElement$2 = class AuroElement extends LitElement {
3849
4380
  }
3850
4381
 
3851
4382
  resetShapeClasses() {
3852
- if (this.shape && this.size) {
3853
- const wrapper = this.shadowRoot.querySelector('.wrapper');
4383
+ const wrapper = this.shadowRoot.querySelector('.wrapper');
3854
4384
 
3855
- if (wrapper) {
3856
- wrapper.classList.forEach((className) => {
3857
- if (className.startsWith('shape-')) {
3858
- wrapper.classList.remove(className);
3859
- }
3860
- });
4385
+ if (wrapper) {
4386
+ wrapper.classList.forEach((className) => {
4387
+ if (className.startsWith('shape-')) {
4388
+ wrapper.classList.remove(className);
4389
+ }
4390
+ });
3861
4391
 
3862
- wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
3863
- }
4392
+ }
4393
+
4394
+ if (this.shape && this.size) {
4395
+ wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
4396
+ } else {
4397
+ wrapper.classList.add('shape-none');
3864
4398
  }
3865
4399
  }
3866
4400
 
@@ -3932,20 +4466,16 @@ class AuroDropdown extends AuroElement$2 {
3932
4466
  this.matchWidth = false;
3933
4467
  this.noHideOnThisFocusLoss = false;
3934
4468
 
3935
- this.errorMessage = ''; // TODO!
4469
+ this.errorMessage = ''; // TODO - check with Doug if there is still more to do here
3936
4470
 
3937
4471
  // Layout Config
3938
4472
  this.layout = 'classic';
3939
- this.shape = 'rounded';
4473
+ this.shape = 'classic';
3940
4474
  this.size = 'xl';
3941
4475
 
3942
- this.privateDefaults();
3943
- }
4476
+ this.parentBorder = false;
3944
4477
 
3945
- get commonLabelClasses() {
3946
- return {
3947
- // 'withValue': this.value && this.value.length > 0
3948
- };
4478
+ this.privateDefaults();
3949
4479
  }
3950
4480
 
3951
4481
  get commonWrapperClasses() {
@@ -3953,7 +4483,8 @@ class AuroDropdown extends AuroElement$2 {
3953
4483
  'trigger': true,
3954
4484
  'wrapper': true,
3955
4485
  'hasFocus': this.hasFocus,
3956
- 'simple': this.simple
4486
+ 'simple': this.simple,
4487
+ 'parentBorder': this.parentBorder
3957
4488
  };
3958
4489
  }
3959
4490
 
@@ -3964,6 +4495,7 @@ class AuroDropdown extends AuroElement$2 {
3964
4495
  privateDefaults() {
3965
4496
  this.chevron = false;
3966
4497
  this.disabled = false;
4498
+ this.disableFocusTrap = false;
3967
4499
  this.error = false;
3968
4500
  this.inset = false;
3969
4501
  this.rounded = false;
@@ -4005,7 +4537,7 @@ class AuroDropdown extends AuroElement$2 {
4005
4537
  /**
4006
4538
  * @private
4007
4539
  */
4008
- this.runtimeUtils = new AuroLibraryRuntimeUtils$1();
4540
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$2$1();
4009
4541
 
4010
4542
  /**
4011
4543
  * @private
@@ -4030,7 +4562,7 @@ class AuroDropdown extends AuroElement$2 {
4030
4562
  /**
4031
4563
  * @private
4032
4564
  */
4033
- this.helpTextTag = versioning.generateTag('auro-formkit-dropdown-helptext', helpTextVersion, AuroHelpText);
4565
+ this.helpTextTag = versioning.generateTag('auro-formkit-dropdown-helptext', helpTextVersion$1, AuroHelpText$1);
4034
4566
 
4035
4567
  /**
4036
4568
  * @private
@@ -4066,6 +4598,18 @@ class AuroDropdown extends AuroElement$2 {
4066
4598
  this.floater.showBib();
4067
4599
  }
4068
4600
 
4601
+ /**
4602
+ * When bib is open, focus on the first element inside of bib.
4603
+ * If not, trigger element will get focus.
4604
+ */
4605
+ focus() {
4606
+ if (this.isPopoverVisible && this.focusTrap) {
4607
+ this.focusTrap.focusFirstElement();
4608
+ } else {
4609
+ this.trigger.focus();
4610
+ }
4611
+ }
4612
+
4069
4613
  // function to define props used within the scope of this component
4070
4614
  static get properties() {
4071
4615
  return {
@@ -4112,6 +4656,14 @@ class AuroDropdown extends AuroElement$2 {
4112
4656
  reflect: true
4113
4657
  },
4114
4658
 
4659
+ /**
4660
+ * If declare, the focus trap inside of bib will be turned off.
4661
+ */
4662
+ disableFocusTrap: {
4663
+ type: Boolean,
4664
+ reflect: true
4665
+ },
4666
+
4115
4667
  /**
4116
4668
  * @private
4117
4669
  */
@@ -4220,6 +4772,15 @@ class AuroDropdown extends AuroElement$2 {
4220
4772
  reflect: true
4221
4773
  },
4222
4774
 
4775
+ /**
4776
+ * Defines if the trigger should size based on the parent element providing the border UI.
4777
+ * @private
4778
+ */
4779
+ parentBorder: {
4780
+ type: Boolean,
4781
+ reflect: true
4782
+ },
4783
+
4223
4784
  /**
4224
4785
  * If declared, the popover and trigger will be set to the same width.
4225
4786
  */
@@ -4322,7 +4883,7 @@ class AuroDropdown extends AuroElement$2 {
4322
4883
  static get styles() {
4323
4884
  return [
4324
4885
  colorCss$1$1,
4325
- tokensCss$1,
4886
+ tokensCss$1$1,
4326
4887
 
4327
4888
  // default layout
4328
4889
  classicColorCss,
@@ -4347,7 +4908,7 @@ class AuroDropdown extends AuroElement$2 {
4347
4908
  *
4348
4909
  */
4349
4910
  static register(name = "auro-dropdown") {
4350
- AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroDropdown);
4911
+ AuroLibraryRuntimeUtils$2$1.prototype.registerComponent(name, AuroDropdown);
4351
4912
  }
4352
4913
 
4353
4914
  /**
@@ -4385,6 +4946,12 @@ class AuroDropdown extends AuroElement$2 {
4385
4946
  this.handleTriggerContentSlotChange();
4386
4947
  }
4387
4948
 
4949
+ if (changedProperties.has('isPopoverVisible')) {
4950
+ this.updateFocusTrap();
4951
+ if (!this.isPopoverVisible && this.hasFocus) {
4952
+ this.trigger.focus();
4953
+ }
4954
+ }
4388
4955
  }
4389
4956
 
4390
4957
  firstUpdated() {
@@ -4450,6 +5017,27 @@ class AuroDropdown extends AuroElement$2 {
4450
5017
  this.hasFocus = true;
4451
5018
  }
4452
5019
 
5020
+ /**
5021
+ * @private
5022
+ */
5023
+ updateFocusTrap() {
5024
+ // If the dropdown is open, create a focus trap and focus the first element
5025
+ if (this.isPopoverVisible && !this.disableFocusTrap) {
5026
+ this.focusTrap = new FocusTrap(this.bibContent);
5027
+ this.focusTrap.focusFirstElement();
5028
+ return;
5029
+ }
5030
+
5031
+ // Guard Clause: Ensure there is a focus trap currently active before continuing
5032
+ if (!this.focusTrap) {
5033
+ return;
5034
+ }
5035
+
5036
+ // If the dropdown is not open, disconnect the focus trap if it exists
5037
+ this.focusTrap.disconnect();
5038
+ this.focusTrap = undefined;
5039
+ }
5040
+
4453
5041
  /**
4454
5042
  * Function to support @focusout event.
4455
5043
  * @private
@@ -4610,14 +5198,13 @@ class AuroDropdown extends AuroElement$2 {
4610
5198
  * @returns {void}
4611
5199
  */
4612
5200
  handleTriggerContentSlotChange(event) {
4613
-
4614
5201
  this.floater.handleTriggerTabIndex();
4615
5202
 
4616
5203
  // Get the trigger
4617
5204
  const trigger = this.shadowRoot.querySelector('#trigger');
4618
5205
 
4619
5206
  // Get the trigger slot
4620
- const triggerSlot = this.shadowRoot.querySelector('.triggerContent slot');
5207
+ const triggerSlot = this.shadowRoot.querySelector('.triggerContentWrapper slot');
4621
5208
 
4622
5209
  // If there's a trigger slot
4623
5210
  if (triggerSlot) {
@@ -4680,40 +5267,15 @@ class AuroDropdown extends AuroElement$2 {
4680
5267
  *
4681
5268
  * @private
4682
5269
  * @method handleDefaultSlot
4683
- * @param {Event} event - The event object representing the slot change.
4684
5270
  * @fires Function#onSlotChange - Optional callback invoked when the slot content changes.
4685
5271
  */
4686
- handleDefaultSlot(event) {
4687
- [...event.target.assignedNodes()].forEach((node) => this.bibContent.append(node));
5272
+ handleDefaultSlot() {
4688
5273
 
4689
5274
  if (this.onSlotChange) {
4690
5275
  this.onSlotChange();
4691
5276
  }
4692
5277
  }
4693
5278
 
4694
- /**
4695
- * @private
4696
- * @method handleLabelSlotChange
4697
- * @param {event} event - The event object representing the slot change.
4698
- * @description Handles the slot change event for the label slot.
4699
- */
4700
- handleLabelSlotChange (event) {
4701
-
4702
- // Get the nodes from the event
4703
- const nodes = event.target.assignedNodes();
4704
-
4705
- // Guard clause for no nodes
4706
- if (!nodes) {
4707
- return;
4708
- }
4709
-
4710
- // Convert the nodes to a measurable array so we can get the length
4711
- const nodesArr = Array.from(nodes);
4712
-
4713
- // If the nodes array has a length, the dropdown is labeled
4714
- this.labeled = nodesArr.length > 0;
4715
- }
4716
-
4717
5279
  /**
4718
5280
  * Returns HTML for the common portion of the layouts.
4719
5281
  * @private
@@ -4728,24 +5290,20 @@ class AuroDropdown extends AuroElement$2 {
4728
5290
  class="${classMap(this.commonWrapperClasses)}" part="wrapper"
4729
5291
  tabindex="${this.tabIndex}"
4730
5292
  role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
4731
- aria-expanded="${ifDefined(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
4732
- aria-controls="${ifDefined(this.triggerContentFocusable ? undefined : this.dropdownId)}"
5293
+ aria-expanded="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
5294
+ aria-controls="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
4733
5295
  aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
4734
5296
  @focusin="${this.handleFocusin}"
4735
5297
  @blur="${this.handleFocusOut}">
4736
- <div class="triggerContentWrapper">
4737
- <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
4738
- <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
4739
- </label>
4740
- <div class="triggerContent">
4741
- <slot
4742
- name="trigger"
4743
- @slotchange="${this.handleTriggerContentSlotChange}"></slot>
4744
- </div>
5298
+ <div class="triggerContentWrapper" id="triggerLabel">
5299
+ <slot
5300
+ name="trigger"
5301
+ @slotchange="${this.handleTriggerContentSlotChange}"></slot>
4745
5302
  </div>
4746
- ${this.chevron || this.common ? html`
5303
+ ${this.chevron ? html`
4747
5304
  <div
4748
5305
  id="showStateIcon"
5306
+ class="chevron"
4749
5307
  part="chevron">
4750
5308
  <${this.iconTag}
4751
5309
  category="interface"
@@ -4760,17 +5318,18 @@ class AuroDropdown extends AuroElement$2 {
4760
5318
  <div class="${classMap(helpTextClasses)}">
4761
5319
  <slot name="helpText"></slot>
4762
5320
  </div>
4763
- <div class="slotContent">
4764
- <slot @slotchange="${this.handleDefaultSlot}"></slot>
4765
- </div>
4766
5321
  <div id="bibSizer" part="size"></div>
4767
5322
  <${this.dropdownBibTag}
4768
5323
  id="bib"
5324
+ shape="${this.shape}"
4769
5325
  ?data-show="${this.isPopoverVisible}"
4770
5326
  ?isfullscreen="${this.isBibFullscreen}"
4771
5327
  ?common="${this.common}"
4772
5328
  ?rounded="${this.common || this.rounded}"
4773
5329
  ?inset="${this.common || this.inset}">
5330
+ <div class="slotContent">
5331
+ <slot @slotchange="${this.handleDefaultSlot}"></slot>
5332
+ </div>
4774
5333
  </${this.dropdownBibTag}>
4775
5334
  </div>
4776
5335
  `;
@@ -4782,67 +5341,14 @@ class AuroDropdown extends AuroElement$2 {
4782
5341
  * @returns {html} - Returns HTML for the classic layout.
4783
5342
  */
4784
5343
  renderLayoutClassic() {
5344
+ // TODO: check with Doug why this was never used?
4785
5345
  const helpTextClasses = {
4786
- 'helpText': true,
4787
- 'leftIndent': false,
4788
- 'rightIndent': false
5346
+ 'helpText': true
4789
5347
  };
4790
5348
 
4791
5349
  return html`
4792
5350
  ${this.renderBasicHtml(helpTextClasses)}
4793
5351
  `;
4794
- // return html`
4795
- // <div>
4796
- // <div
4797
- // id="trigger"
4798
- // class="trigger"
4799
- // part="trigger"
4800
- // tabindex="${this.tabIndex}"
4801
- // ?showBorder="${this.showTriggerBorders}"
4802
- // role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
4803
- // aria-expanded="${ifDefined(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
4804
- // aria-controls="${ifDefined(this.triggerContentFocusable ? undefined : this.dropdownId)}"
4805
- // aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
4806
- // >
4807
- // <div class="triggerContentWrapper">
4808
- // <label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
4809
- // <slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
4810
- // </label>
4811
- // <div class="triggerContent">
4812
- // <slot
4813
- // name="trigger"
4814
- // @slotchange="${this.handleTriggerContentSlotChange}"></slot>
4815
- // </div>
4816
- // </div>
4817
- // ${this.chevron || this.common ? html`
4818
- // <div
4819
- // id="showStateIcon"
4820
- // part="chevron">
4821
- // <${this.iconTag}
4822
- // category="interface"
4823
- // name="chevron-down"
4824
- // ?onDark="${this.onDark}"
4825
- // variant="${this.disabled ? 'disabled' : 'muted'}">
4826
- // >
4827
- // </${this.iconTag}>
4828
- // </div>
4829
- // ` : undefined }
4830
- // </div>
4831
- // <div class="slotContent">
4832
- // <slot @slotchange="${this.handleDefaultSlot}"></slot>
4833
- // </div>
4834
- // <div id="bibSizer" part="size"></div>
4835
- // <${this.dropdownBibTag}
4836
- // id="bib"
4837
- // ?data-show="${this.isPopoverVisible}"
4838
- // ?isfullscreen="${this.isBibFullscreen}"
4839
- // ?common="${this.common}"
4840
- // ?rounded="${this.common || this.rounded}"
4841
- // ?inset="${this.common || this.inset}"
4842
- // >
4843
- // </${this.dropdownBibTag}>
4844
- // </div>
4845
- // `;
4846
5352
  }
4847
5353
 
4848
5354
  /**
@@ -4909,9 +5415,9 @@ class AuroDropdown extends AuroElement$2 {
4909
5415
 
4910
5416
  var dropdownVersion = '3.0.0';
4911
5417
 
4912
- var colorCss$1 = css`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
5418
+ var colorCss$3 = css`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
4913
5419
 
4914
- var styleCss$2 = css`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column}#header{display:flex;width:100%;min-height:var(--ds-size-1000, 5rem);box-sizing:border-box;align-items:end;padding-top:var(--ds-size-400, 2rem);padding-right:var(--ds-size-700, 3.5rem);padding-left:var(--ds-size-200, 1rem);pointer-events:none}#subheader{width:100%}#subheader ::slotted([auro-input]){padding:0 var(--ds-size-200, 1rem)}#closeButton{position:absolute;top:var(--ds-size-400, 2rem);right:var(--ds-size-200, 1rem);border:none;background-color:transparent;cursor:pointer}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1 1 100%}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{position:absolute;right:0;bottom:0;left:0;padding:var(--ds-size-200, 1rem)}`;
5420
+ var styleCss$4 = css`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column}#header{display:flex;width:100%;min-height:var(--ds-size-1000, 5rem);box-sizing:border-box;align-items:end;padding-top:var(--ds-size-400, 2rem);padding-right:var(--ds-size-700, 3.5rem);padding-left:var(--ds-size-200, 1rem);pointer-events:none}#subheader{width:100%}#subheader ::slotted([auro-input]){box-sizing:border-box;padding:0 var(--ds-size-200, 1rem)}#closeButton{position:absolute;top:var(--ds-size-400, 2rem);right:var(--ds-size-200, 1rem);border:none;background-color:transparent;cursor:pointer}#bodyContainer{position:relative;overflow:auto;flex:1 1 100%}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{position:absolute;right:0;bottom:0;left:0;padding:var(--ds-size-200, 1rem)}`;
4915
5421
 
4916
5422
  var tokenCss = css`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
4917
5423
 
@@ -4922,7 +5428,7 @@ var tokenCss = css`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-
4922
5428
 
4923
5429
  /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
4924
5430
 
4925
- class AuroLibraryRuntimeUtils {
5431
+ let AuroLibraryRuntimeUtils$3 = class AuroLibraryRuntimeUtils {
4926
5432
 
4927
5433
  /* eslint-disable jsdoc/require-param */
4928
5434
 
@@ -4983,7 +5489,7 @@ class AuroLibraryRuntimeUtils {
4983
5489
 
4984
5490
  return elemTag === tag || elem.hasAttribute(tag);
4985
5491
  }
4986
- }
5492
+ };
4987
5493
 
4988
5494
  // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
4989
5495
  // See LICENSE in the project root for license information.
@@ -5025,73 +5531,1117 @@ class AuroDependencyVersioning {
5025
5531
  }
5026
5532
  }
5027
5533
 
5028
- // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5029
- // See LICENSE in the project root for license information.
5030
-
5031
-
5032
5534
  /**
5033
- * @attr {Boolean} hidden - If present, the component will be hidden both visually and from screen readers
5034
- * @attr {Boolean} hiddenVisually - If present, the component will be hidden visually, but still read by screen readers
5035
- * @attr {Boolean} hiddenAudible - If present, the component will be hidden from screen readers, but seen visually
5535
+ * Private module-level WeakMap to hold MutationObservers for each host element.
5036
5536
  */
5537
+ const _observers = new WeakMap();
5037
5538
 
5038
- class AuroElement extends LitElement {
5539
+ /**
5540
+ * Private module-level WeakMap to hold attribute matchers and targets for each host element.
5541
+ * Structure: {
5542
+ * host: {
5543
+ * matchers: Set<Function>,
5544
+ * targets: Map<HTMLElement, Map<Function, {removeOriginal: boolean, currentAttributes: Map<string, string>}>>
5545
+ * }
5546
+ * }
5547
+ */
5548
+ const _transportConfig = new WeakMap();
5039
5549
 
5040
- // function to define props used within the scope of this component
5041
- static get properties() {
5042
- return {
5043
- hidden: { type: Boolean,
5044
- reflect: true },
5045
- hiddenVisually: { type: Boolean,
5046
- reflect: true },
5047
- hiddenAudible: { type: Boolean,
5048
- reflect: true },
5049
- };
5550
+ /**
5551
+ * Transfers all matching attributes from a host element to a target element and observes for future changes.
5552
+ *
5553
+ * @param {Object} params - The parameters for the function.
5554
+ * @param {HTMLElement} params.host - The host element from which attributes will be transported.
5555
+ * @param {HTMLElement} params.target - The target element to which attributes will be transported.
5556
+ * @param {boolean} [params.removeOriginal=true] - Whether to remove the attributes from the host element.
5557
+ * @param {boolean} [params.observe=true] - Whether to attach a MutationObserver to the host element.
5558
+ * @returns {Function} A function to detach the observer when no longer needed.
5559
+ * @throws {TypeError} If the host or target parameters are not instances of HTMLElement.
5560
+ */
5561
+ const transportAttributes = ({ host, target, match, removeOriginal = true }) => {
5562
+ // Guard Clause: Ensure host is valid HTMLElement instance
5563
+ if (typeof host !== 'object' || !(host instanceof HTMLElement)) {
5564
+ throw new TypeError('a11yUtilities.js | transportAttributes | The "host" parameter must be an instance of HTMLElement.');
5050
5565
  }
5051
5566
 
5052
- /**
5053
- * @private Function that determines state of aria-hidden
5054
- */
5055
- hideAudible(value) {
5056
- if (value) {
5057
- return 'true'
5058
- }
5567
+ // Guard Clause: Ensure target is valid HTMLElement instance
5568
+ if (typeof target !== 'object' || !(target instanceof HTMLElement)) {
5569
+ throw new TypeError('a11yUtilities.js | transportAttributes | The "target" parameter must be an instance of HTMLElement.');
5570
+ }
5059
5571
 
5060
- return 'false'
5572
+ // Guard Clause: Ensure match is a function
5573
+ if (typeof match !== 'function') {
5574
+ throw new TypeError('a11yUtilities.js | transportAttributes | The "match" parameter must be a function.');
5061
5575
  }
5062
- }
5063
5576
 
5064
- var error = {"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-labelledby=\"error__desc\" class=\"ico_squareLarge\" data-deprecated=\"true\" role=\"img\" style=\"min-width:var(--auro-size-lg, var(--ds-size-300, 1.5rem));height:var(--auro-size-lg, var(--ds-size-300, 1.5rem));fill:currentColor\" viewBox=\"0 0 24 24\" part=\"svg\"><title/><desc id=\"error__desc\">Error alert indicator.</desc><path d=\"m13.047 5.599 6.786 11.586A1.207 1.207 0 0 1 18.786 19H5.214a1.207 1.207 0 0 1-1.047-1.815l6.786-11.586a1.214 1.214 0 0 1 2.094 0m-1.165.87a.23.23 0 0 0-.085.085L5.419 17.442a.232.232 0 0 0 .203.35h12.756a.234.234 0 0 0 .203-.35L12.203 6.554a.236.236 0 0 0-.321-.084M12 15.5a.75.75 0 1 1 0 1.5.75.75 0 0 1 0-1.5m-.024-6.22c.325 0 .589.261.589.583v4.434a.586.586 0 0 1-.589.583.586.586 0 0 1-.588-.583V9.863c0-.322.264-.583.588-.583\"/></svg>"};
5577
+ // Guard Clause: Ensure removeOriginal is a boolean
5578
+ if (typeof removeOriginal !== 'boolean') {
5579
+ throw new TypeError('a11yUtilities.js | transportAttributes | The "removeOriginal" parameter must be a boolean.');
5580
+ }
5581
+
5582
+ // Register this transport and get cleanup function
5583
+ return _registerTransport({
5584
+ host,
5585
+ target,
5586
+ matcher: match,
5587
+ removeOriginal
5588
+ });
5589
+ };
5065
5590
 
5066
- /* eslint-disable no-underscore-dangle, jsdoc/no-undefined-types, jsdoc/require-param-description */
5591
+ /**
5592
+ * Registers a matcher and target for a host element and attaches an observer if needed.
5593
+ *
5594
+ * @param {Object} params - The parameters object.
5595
+ * @param {HTMLElement} params.host - The host element to observe.
5596
+ * @param {HTMLElement} params.target - The target element to receive attributes.
5597
+ * @param {Function} params.matcher - Function that determines which attributes to transport.
5598
+ * @param {boolean} [params.removeOriginal=true] - Whether to remove original attributes.
5599
+ * @param {boolean} [params.observe=true] - Whether to observe for attribute changes.
5600
+ * @returns {Function} Function to detach the specific matcher and target pairing.
5601
+ * @private
5602
+ */
5603
+ const _registerTransport = ({ host, target, matcher, removeOriginal = true }) => {
5604
+ // Initialize config for this host if it doesn't exist
5605
+ if (!_transportConfig.has(host)) {
5606
+ _transportConfig.set(host, {
5607
+ matchers: new Set(),
5608
+ targets: new Map()
5609
+ });
5610
+ }
5067
5611
 
5068
- const _fetchMap = new Map();
5612
+ const config = _transportConfig.get(host);
5613
+
5614
+ // Add the matcher to the set of matchers for this host
5615
+ config.matchers.add(matcher);
5616
+
5617
+ // Initialize target entry if it doesn't exist
5618
+ if (!config.targets.has(target)) {
5619
+ config.targets.set(target, new Map());
5620
+ }
5621
+
5622
+ // Store the matcher with its removeOriginal setting for this target
5623
+ config.targets.get(target).set(matcher, {
5624
+ removeOriginal,
5625
+ currentAttributes: new Map()
5626
+ });
5627
+
5628
+ // Perform initial attribute transport
5629
+ _transportAttributes({ host, target, matcher, removeOriginal });
5630
+
5631
+ // Attach observer
5632
+ _attachObserver(host);
5633
+
5634
+ // Return cleanup function and utility functions
5635
+ return {
5636
+ cleanup: () => _cleanupTransport(host, target, matcher),
5637
+ getObservedAttributes: () => _getObservedAttributes(host, target, matcher),
5638
+ getObservedAttribute: (attr) => _getObservedAttribute(host, target, matcher, attr),
5639
+ }
5640
+ };
5069
5641
 
5070
5642
  /**
5071
- * A callback to parse Response body.
5072
- *
5073
- * @callback ResponseParser
5074
- * @param {Fetch.Response} response
5075
- * @returns {Promise}
5643
+ * Cleans up resources associated with a specific matcher and target for a host element.
5644
+ *
5645
+ * @param {HTMLElement} host - The host element
5646
+ * @param {HTMLElement} target - The target element
5647
+ * @param {Function} matcher - The matcher function
5648
+ * @private
5076
5649
  */
5650
+ const _cleanupTransport = (host, target, matcher) => {
5651
+ const config = _transportConfig.get(host);
5652
+ if (!config) return;
5653
+
5654
+ // Remove this matcher from this target
5655
+ const targetMatchers = config.targets.get(target);
5656
+ if (targetMatchers) {
5657
+ targetMatchers.delete(matcher);
5658
+
5659
+ // If this target has no more matchers, remove it
5660
+ if (targetMatchers.size === 0) {
5661
+ config.targets.delete(target);
5662
+ }
5663
+ }
5664
+
5665
+ // Check if this matcher is still used by any target
5666
+ let matcherStillUsed = false;
5667
+ for (const matcherMap of config.targets.values()) {
5668
+ if (matcherMap.has(matcher)) {
5669
+ matcherStillUsed = true;
5670
+ break;
5671
+ }
5672
+ }
5673
+
5674
+ // If not used anymore, remove from matchers set
5675
+ if (!matcherStillUsed) {
5676
+ config.matchers.delete(matcher);
5677
+ }
5678
+
5679
+ // If no more targets or matchers, detach observer
5680
+ if (config.targets.size === 0 || config.matchers.size === 0) {
5681
+ _detachObserver(host);
5682
+ }
5683
+ };
5077
5684
 
5078
5685
  /**
5079
- * A minimal in-memory map to de-duplicate Fetch API media requests.
5080
- *
5081
- * @param {String} uri
5082
- * @param {Object} [options={}]
5083
- * @param {ResponseParser} [options.responseParser=(response) => response.text()]
5084
- * @returns {Promise}
5686
+ * Generic function to transport attributes from a host element to a target element.
5687
+ *
5688
+ * @param {Object} params - The parameters object.
5689
+ * @param {HTMLElement} params.host - The host element from which to transport attributes.
5690
+ * @param {HTMLElement} params.target - The target element to which attributes will be transported.
5691
+ * @param {Function} params.matcher - Function that takes an attribute name and returns true if it should be transported.
5692
+ * @param {boolean} [params.removeOriginal=true] - Whether to remove original attributes from host.
5693
+ * @returns {void}
5694
+ * @private
5085
5695
  */
5086
- const cacheFetch = (uri, options = {}) => {
5087
- const responseParser = options.responseParser || ((response) => response.text());
5088
- if (!_fetchMap.has(uri)) {
5089
- _fetchMap.set(uri, fetch(uri).then(responseParser));
5090
- }
5091
- return _fetchMap.get(uri);
5696
+ const _transportAttributes = ({ host, target, matcher, removeOriginal = true }) => {
5697
+ // Get a list of all matching attributes on the host element and their values
5698
+ const matchingAttributes = host.getAttributeNames()
5699
+ .filter(attr => matcher(attr))
5700
+ .reduce((acc, attr) => {
5701
+ acc[attr] = host.getAttribute(attr);
5702
+ return acc;
5703
+ }, {});
5704
+
5705
+ // Move matching attributes to the target element, removing them from the host if removeOriginal is true
5706
+ Object.entries(matchingAttributes).forEach(([key, value]) => {
5707
+ _setObservedAttribute(host, target, matcher, key, value);
5708
+ target.setAttribute(key, value);
5709
+ if (removeOriginal) {
5710
+ host.removeAttribute(key);
5711
+ }
5712
+ });
5092
5713
  };
5093
5714
 
5094
- var styleCss$1 = css`:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.ico_squareLarge{fill:currentColor;height:var(--auro-size-lg, var(--ds-size-300, 1.5rem))}.ico_squareSmall{fill:currentColor;height:.6rem}.ico_squareMed{fill:currentColor;height:var(--auro-size-md, var(--ds-size-200, 1rem))}.ico_squareSml{fill:currentColor;height:var(--auro-size-sm, var(--ds-size-150, 0.75rem))}:host{color:currentColor;vertical-align:middle;line-height:1;display:inline-block}svg{min-width:var(--ds-auro-icon-size, 1.5rem) !important;width:var(--ds-auro-icon-size, 1.5rem) !important;height:var(--ds-auro-icon-size, 1.5rem) !important}.componentWrapper{display:flex}.svgWrapper{height:var(--ds-auro-icon-size);width:var(--ds-auro-icon-size)}.labelWrapper{margin-left:var(--ds-size-50, 0.25rem);line-height:1.8}`;
5715
+ /**
5716
+ * Attaches a MutationObserver to the host element to monitor attribute changes.
5717
+ *
5718
+ * @param {HTMLElement} host - The element to observe for attribute changes.
5719
+ * @returns {MutationObserver} The observer instance.
5720
+ * @private
5721
+ */
5722
+ const _attachObserver = (host) => {
5723
+ // If an observer for this host already exists, return it
5724
+ if (_observers.has(host)) {
5725
+ return _observers.get(host);
5726
+ }
5727
+
5728
+ // Create a new MutationObserver
5729
+ const observer = new MutationObserver((mutations) => {
5730
+ const config = _transportConfig.get(host);
5731
+ if (!config) return;
5732
+
5733
+ // For each mutation affecting attributes
5734
+ mutations
5735
+ .filter(mutation => mutation.type === 'attributes')
5736
+ .forEach(mutation => {
5737
+ const attributeName = mutation.attributeName;
5738
+
5739
+ // Find matchers that care about this attribute
5740
+ for (const matcher of config.matchers) {
5741
+ if (matcher(attributeName)) {
5742
+ // For each target that uses this matcher
5743
+ for (const [target, matcherConfigs] of config.targets.entries()) {
5744
+ if (matcherConfigs.has(matcher)) {
5745
+ const { removeOriginal } = matcherConfigs.get(matcher);
5746
+ _transportAttributes({
5747
+ host,
5748
+ target,
5749
+ matcher,
5750
+ removeOriginal
5751
+ });
5752
+ }
5753
+ }
5754
+ }
5755
+ }
5756
+ });
5757
+ });
5758
+
5759
+ // Start observing attribute changes
5760
+ observer.observe(host, { attributes: true });
5761
+
5762
+ // Store the observer
5763
+ _observers.set(host, observer);
5764
+
5765
+ return observer;
5766
+ };
5767
+
5768
+ /**
5769
+ * Detaches and cleans up the MutationObserver for a given host element.
5770
+ *
5771
+ * @param {HTMLElement} host - The element whose observer should be detached.
5772
+ * @private
5773
+ */
5774
+ const _detachObserver = (host) => {
5775
+ if (_observers.has(host)) {
5776
+ const observer = _observers.get(host);
5777
+ observer.disconnect();
5778
+ _observers.delete(host);
5779
+ }
5780
+
5781
+ // Clean up the transport config as well
5782
+ if (_transportConfig.has(host)) {
5783
+ _transportConfig.delete(host);
5784
+ }
5785
+ };
5786
+
5787
+ /**
5788
+ * Gets the matcher configuration for a specific host, target, and matcher
5789
+ * @param {HTMLElement} host - The host element
5790
+ * @param {HTMLElement} target - The target element
5791
+ * @param {Function} matcher - The matcher function
5792
+ * @returns {Object|undefined} The matcher configuration if found
5793
+ * @private
5794
+ */
5795
+ const _getMatcherConfig = (host, target, matcher) => {
5796
+ const config = _transportConfig.get(host);
5797
+ if (!config) return undefined;
5798
+
5799
+ const targetMatchers = config.targets.get(target);
5800
+ if (!targetMatchers) return undefined;
5801
+
5802
+ return targetMatchers.get(matcher);
5803
+ };
5804
+
5805
+ /**
5806
+ * Sets an observed attribute value
5807
+ * @param {HTMLElement} host - The host element
5808
+ * @param {HTMLElement} target - The target element
5809
+ * @param {Function} matcher - The matcher function
5810
+ * @param {string} key - The attribute name
5811
+ * @param {string} value - The attribute value
5812
+ * @private
5813
+ */
5814
+ const _setObservedAttribute = (host, target, matcher, key, value) => {
5815
+ const matcherConfig = _getMatcherConfig(host, target, matcher);
5816
+ if (matcherConfig) {
5817
+ matcherConfig.currentAttributes.set(key, value);
5818
+ }
5819
+ };
5820
+
5821
+ const _getObservedAttribute = (host, target, matcher, attr) => {
5822
+ const matcherConfig = _getMatcherConfig(host, target, matcher);
5823
+ if (matcherConfig) return matcherConfig.currentAttributes.get(attr);
5824
+ return undefined;
5825
+ };
5826
+
5827
+ const _getObservedAttributes = (host, target, matcher) => {
5828
+ const matcherConfig = _getMatcherConfig(host, target, matcher);
5829
+ if (matcherConfig) return Array.from(matcherConfig.currentAttributes.entries());
5830
+ return [];
5831
+ };
5832
+
5833
+ const _matchers = {
5834
+ 'aria-': attr => attr.startsWith('aria-'),
5835
+ 'role': attr => attr.match(/^role$/)
5836
+ };
5837
+
5838
+ const transportAllA11yAttributes = ({ host, target, removeOriginal = true }) => {
5839
+ return transportAttributes({
5840
+ host,
5841
+ target,
5842
+ match: attr => {
5843
+ for (const key in _matchers) {
5844
+ if (_matchers[key](attr)) return true;
5845
+ }
5846
+ return false;
5847
+ },
5848
+ removeOriginal
5849
+ });
5850
+ };
5851
+
5852
+ let AuroElement$1 = class AuroElement extends LitElement {
5853
+
5854
+ /**
5855
+ * @type {Object} return object from transportAttributes via a11yUtilities
5856
+ * @property {Function} cleanup - Function to clean up the attribute watcher.
5857
+ * @property {Function} getCurrentAttributes - Function to get the current attributes being watched and their values.
5858
+ * @property {Function} getObservedAttribute - Function to get the value of a specific observed attribute by name.
5859
+ * @private
5860
+ */
5861
+ attributeWatcher;
5862
+
5863
+ static get properties() {
5864
+ return {
5865
+
5866
+ /**
5867
+ * Defines the layout of an element.
5868
+ * @default {'default'}
5869
+ */
5870
+ layout: {
5871
+ type: String,
5872
+ attribute: "layout",
5873
+ reflect: true
5874
+ },
5875
+
5876
+ /**
5877
+ * Defines the shape of an element.
5878
+ * @property {'default', 'rounded', 'pill', 'circle'}
5879
+ * @default {'default'}
5880
+ */
5881
+ shape: {
5882
+ type: String,
5883
+ attribute: "shape",
5884
+ reflect: true
5885
+ },
5886
+
5887
+ /**
5888
+ * Defines the size of an element.
5889
+ * @property {'xs', 'sm', 'md', 'lg', 'xl'}
5890
+ * @default {'md'}
5891
+ */
5892
+ size: {
5893
+ type: String,
5894
+ attribute: "size",
5895
+ reflect: true
5896
+ },
5897
+
5898
+ /**
5899
+ * This Boolean attribute lets you specify that the element should be rendered in dark mode.
5900
+ * @default {false}
5901
+ */
5902
+ onDark: {
5903
+ type: Boolean,
5904
+ attribute: "ondark",
5905
+ reflect: true
5906
+ },
5907
+
5908
+ /**
5909
+ * A reference to the wrapper element in the shadow DOM.
5910
+ * This is used to apply layout and shape classes dynamically.
5911
+ * @type {HTMLElement|null}
5912
+ * @default {null}
5913
+ * @private
5914
+ */
5915
+ wrapper: {
5916
+ attribute: false,
5917
+ reflect: false
5918
+ }
5919
+ };
5920
+ }
5921
+
5922
+
5923
+
5924
+ resetShapeClasses() {
5925
+ if (this.shape && this.size) {
5926
+
5927
+ if (this.wrapper) {
5928
+ this.wrapper.classList.forEach((className) => {
5929
+ if (className.startsWith('shape-')) {
5930
+ this.wrapper.classList.remove(className);
5931
+ }
5932
+ });
5933
+
5934
+ this.wrapper.classList.add(`shape-${this.shape.toLowerCase()}-${this.size.toLowerCase()}`);
5935
+ }
5936
+ }
5937
+ }
5938
+
5939
+ resetLayoutClasses() {
5940
+ if (this.layout) {
5941
+ if (this.wrapper) {
5942
+ this.wrapper.classList.forEach((className) => {
5943
+ if (className.startsWith('layout-')) {
5944
+ this.wrapper.classList.remove(className);
5945
+ }
5946
+ });
5947
+
5948
+ this.wrapper.classList.add(`layout-${this.layout.toLowerCase()}`);
5949
+ }
5950
+ }
5951
+ }
5952
+
5953
+ updateComponentArchitecture() {
5954
+ this.resetLayoutClasses();
5955
+ this.resetShapeClasses();
5956
+ }
5957
+
5958
+ updated(changedProperties) {
5959
+ if (changedProperties.has('layout') || changedProperties.has('shape') || changedProperties.has('size')) {
5960
+ this.updateComponentArchitecture();
5961
+ }
5962
+ }
5963
+
5964
+ firstUpdated() {
5965
+ super.firstUpdated();
5966
+
5967
+ // Set a reference to the wrapper element in the shadow DOM
5968
+ this.wrapper = this.shadowRoot.querySelector('.wrapper');
5969
+
5970
+ // Initialize the transportation of ARIA attributes to the target element and get the disconnect function for cleanup
5971
+ this.attributeWatcher = transportAllA11yAttributes({ host: this, target: this.shadowRoot.querySelector('.wrapper') });
5972
+ }
5973
+
5974
+ disconnectedCallback() {
5975
+ super.disconnectedCallback();
5976
+
5977
+ // Cleanup the ARIA observer if it exists
5978
+ if (this.attributeWatcher) {
5979
+ this.attributeWatcher.cleanup();
5980
+ this.attributeWatcher = null;
5981
+ }
5982
+ }
5983
+
5984
+ // Try to render the defined `this.layout` layout. If that fails, fall back to the default layout.
5985
+ // This will catch if an invalid layout value is passed in and render the default layout if so.
5986
+ render() {
5987
+ try {
5988
+ return this.renderLayout();
5989
+ } catch (error) {
5990
+ // failed to get the defined layout
5991
+ console.error('Failed to get the defined layout - using the default layout', error); // eslint-disable-line no-console
5992
+
5993
+ // fallback to the default layout
5994
+ return this.getLayout('default');
5995
+ }
5996
+ }
5997
+ };
5998
+
5999
+ var styleCss$3 = css`:focus:not(:focus-visible){outline:3px solid transparent}.util_insetNone{padding:0}.util_insetXxxs{padding:.125rem}.util_insetXxxs--stretch{padding:.25rem .125rem}.util_insetXxxs--squish{padding:0 .125rem}.util_insetXxs{padding:.25rem}.util_insetXxs--stretch{padding:.375rem .25rem}.util_insetXxs--squish{padding:.125rem .25rem}.util_insetXs{padding:.5rem}.util_insetXs--stretch{padding:.75rem .5rem}.util_insetXs--squish{padding:.25rem .5rem}.util_insetSm{padding:.75rem}.util_insetSm--stretch{padding:1.125rem .75rem}.util_insetSm--squish{padding:.375rem .75rem}.util_insetMd{padding:1rem}.util_insetMd--stretch{padding:1.5rem 1rem}.util_insetMd--squish{padding:.5rem 1rem}.util_insetLg{padding:1.5rem}.util_insetLg--stretch{padding:2.25rem 1.5rem}.util_insetLg--squish{padding:.75rem 1.5rem}.util_insetXl{padding:2rem}.util_insetXl--stretch{padding:3rem 2rem}.util_insetXl--squish{padding:1rem 2rem}.util_insetXxl{padding:3rem}.util_insetXxl--stretch{padding:4.5rem 3rem}.util_insetXxl--squish{padding:1.5rem 3rem}.util_insetXxxl{padding:4rem}.util_insetXxxl--stretch{padding:6rem 4rem}.util_insetXxxl--squish{padding:2rem 4rem}:host([fluid]) .auro-button,:host([fluid=true]) .auro-button{min-width:auto;width:100%}:host([variant=flat]){display:inline-block}::slotted(svg){vertical-align:middle}slot{pointer-events:none}.auro-button{position:relative;padding:0 var(--ds-size-300, 1.5rem);cursor:pointer;border-width:1px;border-style:solid;border-radius:var(--ds-border-radius, 0.375rem);overflow:hidden;text-overflow:ellipsis;user-select:none;white-space:nowrap;min-height:var(--ds-size-600, 3rem);max-height:var(--ds-size-600, 3rem);display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:var(--ds-size-100, 0.5rem);margin:0;-webkit-touch-callout:none;-webkit-user-select:none;transition:padding 300ms ease-out}.auro-button:active{transform:scale(0.95)}.auro-button:focus-visible,.auro-button:focus{outline:none;outline-style:solid;outline-width:var(--ds-size-50, 0.25rem);outline-offset:calc(var(--ds-size-50, 0.25rem)*-1)}.auro-button:focus-visible:not([variant=secondary]):not([variant=tertiary]),.auro-button:focus:not([variant=secondary]):not([variant=tertiary]){outline-width:calc(var(--ds-size-50, 0.25rem) - 1px)}.auro-button.loading{cursor:not-allowed}.auro-button.loading *:not([auro-loader]){visibility:hidden}@media screen and (min-width: 576px){.auro-button{min-width:8.75rem;width:auto}}.auro-button:disabled{cursor:not-allowed;transform:unset}.auro-button[variant=secondary]:disabled{cursor:not-allowed;transform:unset}.auro-button[variant=tertiary]:disabled{cursor:not-allowed;transform:unset}.auro-button[variant=ghost]:disabled{cursor:not-allowed;transform:unset}.auro-button[onDark]:disabled{cursor:not-allowed;transform:unset}.auro-button[onDark][variant=secondary]:disabled{cursor:not-allowed;transform:unset}@media(hover: hover){.auro-button[onDark][variant=tertiary]:active,.auro-button[onDark][variant=tertiary]:hover{box-shadow:none}}.auro-button[onDark][variant=tertiary]:active{box-shadow:none}.auro-button[onDark][variant=tertiary]:disabled{cursor:not-allowed;transform:unset}.auro-button.icon-only ::slotted(:not(auro-icon):not([auro-icon])){display:none}.auro-button--slim{min-width:unset;min-height:calc(var(--ds-size-500, 2.5rem) - var(--ds-size-50, 0.25rem));max-height:calc(var(--ds-size-500, 2.5rem) - var(--ds-size-50, 0.25rem))}.auro-button--iconOnly{padding:0 var(--ds-size-100, 0.5rem);border-radius:100px;min-width:unset;height:var(--ds-size-600, 3rem);width:var(--ds-size-500, 2.5rem)}.auro-button--iconOnly ::slotted(auro-icon),.auro-button--iconOnly ::slotted([auro-icon]){--ds-auro-icon-size:var(--ds-size-300, 1.5rem)}.auro-button--iconOnly:not(.auro-button--rounded):focus-visible:not([variant=secondary]):not([variant=tertiary]):not([variant=flat]),.auro-button--iconOnly:not(.auro-button--rounded):focus:not([variant=secondary]):not([variant=tertiary]):not([variant=flat]){outline-width:1px;outline-offset:-2px}.auro-button--iconOnlySlim{padding:0 var(--ds-size-50, 0.25rem);height:calc(var(--ds-size-400, 2rem) + var(--ds-size-50, 0.25rem));width:calc(var(--ds-size-300, 1.5rem) + var(--ds-size-50, 0.25rem))}.auro-button--iconOnlySlim ::slotted(auro-icon),.auro-button--iconOnlySlim ::slotted([auro-icon]){--ds-auro-icon-size:calc(var(--ds-size-200, 1rem) + var(--ds-size-50, 0.25rem))}.auro-button--rounded{border-radius:100px;box-shadow:var(--ds-elevation-300, 0px 0px 15px rgba(0, 0, 0, 0.2));height:var(--ds-size-500, 2.5rem);min-width:unset;transition:padding 300ms ease-out,outline 0ms,outline-offset 0ms}.auro-button--rounded ::slotted(auro-icon),.auro-button--rounded ::slotted([auro-icon]){--ds-auro-icon-size:var(--ds-size-300, 1.5rem)}.auro-button--rounded:focus-visible:not([variant=flat]):after,.auro-button--rounded:focus:not([variant=flat]):after{border-radius:100px}:host([size=xs]) .wrapper:focus-visible,:host([size=xs]) .wrapper:focus{outline-width:1px;outline-offset:-2px}:host([rounded]) .textSlot{transition:opacity 300ms ease-in;opacity:1}:host([rounded][iconOnly]) .textSlot{opacity:0}:host([rounded][iconOnly]) .textWrapper{display:none}:host([rounded][iconOnly]) .auro-button{min-width:unset;padding:unset;width:var(--ds-size-600, 3rem)}[auro-loader]{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);pointer-events:none}`;
6000
+
6001
+ var colorCss$2 = css`[auro-loader]{color:var(--ds-auro-button-loader-color)}.auro-button{-webkit-tap-highlight-color:var(--ds-auro-button-tap-color);color:var(--ds-auro-button-text-color);background-color:var(--ds-auro-button-container-color);background-image:linear-gradient(var(--ds-auro-button-container-image), var(--ds-auro-button-container-image));border-color:var(--ds-auro-button-border-color)}.auro-button:not([variant=secondary]):not([variant=tertiary]):focus-visible{outline-color:var(--ds-auro-button-border-inset-color)}.auro-button:not([ondark]):active:not(:disabled),.auro-button:not([ondark]):hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-hover, #00274a);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-hover, #00274a);--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-hover, #00274a)}.auro-button:not([ondark]):disabled{--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-disabled, #acc9e2);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-disabled, #acc9e2);--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-disabled, #acc9e2)}.auro-button:not([ondark])[variant=secondary]{--ds-auro-button-container-color:var(--ds-advanced-color-button-secondary-background, #ffffff);--ds-auro-button-container-image:var(--ds-advanced-color-button-secondary-background, #ffffff);--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border, #01426a);--ds-auro-button-text-color:var(--ds-advanced-color-button-secondary-text, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-secondary-text, #01426a)}.auro-button:not([ondark])[variant=secondary]:active:not(:disabled),.auro-button:not([ondark])[variant=secondary]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-secondary-background-hover, #f2f2f2);--ds-auro-button-container-image:var(--ds-advanced-color-button-secondary-background-hover, #f2f2f2);--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border-hover, #00274a);--ds-auro-button-text-color:var(--ds-advanced-color-button-secondary-text-hover, #00274a)}.auro-button:not([ondark])[variant=secondary]:focus-visible{--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button:not([ondark])[variant=secondary]:disabled{--ds-auro-button-container-color:var(--ds-advanced-color-button-secondary-background-disabled, #f7f7f7);--ds-auro-button-container-image:var(--ds-advanced-color-button-secondary-background-disabled, #f7f7f7);--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border-disabled, #cfe0ef);--ds-auro-button-text-color:var(--ds-basic-color-texticon-disabled, #d0d0d0)}.auro-button:not([ondark])[variant=tertiary]{--ds-auro-button-container-color:var(--ds-advanced-color-button-tertiary-background, rgba(0, 0, 0, 0.05));--ds-auro-button-container-image:var(--ds-advanced-color-button-tertiary-background, rgba(0, 0, 0, 0.05));--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-advanced-color-button-tertiary-text, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-tertiary-text, #01426a)}.auro-button:not([ondark])[variant=tertiary]:active:not(:disabled),.auro-button:not([ondark])[variant=tertiary]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-tertiary-background-hover, rgba(0, 0, 0, 0.1));--ds-auro-button-container-image:var(--ds-advanced-color-button-tertiary-background-hover, rgba(0, 0, 0, 0.1));--ds-auro-button-border-color:transparent}.auro-button:not([ondark])[variant=tertiary]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused, #01426a);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button:not([ondark])[variant=tertiary]:disabled{--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-basic-color-texticon-disabled, #d0d0d0)}.auro-button:not([ondark])[variant=ghost]{--ds-auro-button-container-color:transparent;--ds-auro-button-container-image:transparent;--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-advanced-color-button-ghost-text, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-ghost-text, #01426a)}.auro-button:not([ondark])[variant=ghost]:active:not(:disabled),.auro-button:not([ondark])[variant=ghost]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-ghost-background-hover, rgba(0, 0, 0, 0.05));--ds-auro-button-container-image:var(--ds-advanced-color-button-ghost-background-hover, rgba(0, 0, 0, 0.05));--ds-auro-button-border-color:transparent}.auro-button:not([ondark])[variant=ghost]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused, #01426a);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button:not([ondark])[variant=ghost]:disabled{--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-basic-color-texticon-disabled, #d0d0d0)}.auro-button:not([ondark])[variant=flat]{color:var(--ds-advanced-color-button-flat-text, #676767);background-color:transparent;background-image:none;border-color:transparent}.auro-button:not([ondark])[variant=flat]:active:not(:disabled),.auro-button:not([ondark])[variant=flat]:hover:not(:disabled){color:var(--ds-advanced-color-button-flat-text-hover, #525252);background-color:transparent;background-image:none;border-color:transparent}.auro-button:not([ondark])[variant=flat]:disabled{color:var(--ds-advanced-color-button-flat-text-disabled, #d0d0d0);background-color:transparent;background-image:none;border-color:transparent}.auro-button:not([ondark])[variant=flat]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused, #01426a);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button[ondark]{--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-inverse, #ffffff);--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-inverse, #ffffff);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-inverse, #ffffff);--ds-auro-button-text-color:var(--ds-advanced-color-button-primary-text-inverse, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-primary-text-inverse, #01426a)}.auro-button[ondark]:active:not(:disabled),.auro-button[ondark]:hover:not(:disabled){--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-inverse-hover, #ebf3f9);--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-inverse-hover, #ebf3f9);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-inverse-hover, #ebf3f9)}.auro-button[ondark]:focus-visible{--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused, #01426a)}.auro-button[ondark]:disabled{--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-inverse-disabled, rgba(255, 255, 255, 0.75));--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-inverse-disabled, rgba(255, 255, 255, 0.75));--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-inverse-disabled, rgba(255, 255, 255, 0.75));--ds-auro-button-text-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}.auro-button[ondark][variant=secondary]{--ds-auro-button-container-color:transparent;--ds-auro-button-container-image:transparent;--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border-inverse, #ffffff);--ds-auro-button-text-color:var(--ds-advanced-color-button-secondary-text-inverse, #ffffff);--ds-auro-button-loader-color:var(--ds-advanced-color-button-secondary-text-inverse, #ffffff)}.auro-button[ondark][variant=secondary]:active:not(:disabled),.auro-button[ondark][variant=secondary]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-secondary-background-inverse-hover, rgba(255, 255, 255, 0.1));--ds-auro-button-container-image:var(--ds-advanced-color-button-secondary-background-inverse-hover, rgba(255, 255, 255, 0.1))}.auro-button[ondark][variant=secondary]:focus-visible{--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff)}.auro-button[ondark][variant=secondary]:disabled{--ds-auro-button-text-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-button-border-color:var(--ds-advanced-color-button-secondary-border-inverse-disabled, #dddddd)}.auro-button[ondark][variant=tertiary]{--ds-auro-button-container-color:var(--ds-advanced-color-button-tertiary-background-inverse, rgba(255, 255, 255, 0.05));--ds-auro-button-container-image:var(--ds-advanced-color-button-tertiary-background-inverse, rgba(255, 255, 255, 0.05));--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-advanced-color-button-tertiary-text-inverse, #ffffff);--ds-auro-button-loader-color:var(--ds-advanced-color-button-tertiary-text-inverse, #ffffff)}.auro-button[ondark][variant=tertiary]:active:not(:disabled),.auro-button[ondark][variant=tertiary]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-tertiary-background-inverse-hover, rgba(255, 255, 255, 0.1));--ds-auro-button-container-image:var(--ds-advanced-color-button-tertiary-background-inverse-hover, rgba(255, 255, 255, 0.1))}.auro-button[ondark][variant=tertiary]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff)}.auro-button[ondark][variant=tertiary]:disabled{--ds-auro-button-text-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}.auro-button[ondark][variant=ghost]{--ds-auro-button-container-color:transparent;--ds-auro-button-container-image:transparent;--ds-auro-button-border-color:transparent;--ds-auro-button-text-color:var(--ds-advanced-color-button-ghost-text-inverse, #ffffff);--ds-auro-button-loader-color:var(--ds-advanced-color-button-ghost-text-inverse, #ffffff)}.auro-button[ondark][variant=ghost]:active:not(:disabled),.auro-button[ondark][variant=ghost]:hover:not(:disabled){--ds-auro-button-container-color:var(--ds-advanced-color-button-ghost-background-inverse-hover, rgba(255, 255, 255, 0.05));--ds-auro-button-container-image:var(--ds-advanced-color-button-ghost-background-inverse-hover, rgba(255, 255, 255, 0.05))}.auro-button[ondark][variant=ghost]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff)}.auro-button[ondark][variant=ghost]:disabled{--ds-auro-button-text-color:var(--ds-basic-color-texticon-inverse-disabled, #7e8894)}.auro-button[ondark][variant=flat]{color:var(--ds-advanced-color-button-flat-text-inverse, #ffffff);background-color:transparent;background-image:none;border-color:transparent}.auro-button[ondark][variant=flat]:active:not(:disabled),.auro-button[ondark][variant=flat]:hover:not(:disabled){color:var(--ds-advanced-color-button-flat-text-inverse-hover, #adadad);background-color:transparent;background-image:none;border-color:transparent}.auro-button[ondark][variant=flat]:disabled{color:var(--ds-advanced-color-button-flat-text-inverse-disabled, #7e8894);background-color:transparent;background-image:none;border-color:transparent}.auro-button[ondark][variant=flat]:focus-visible{--ds-auro-button-border-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff)}`;
6002
+
6003
+ var tokensCss$2 = css`:host(:not([onDark])){--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border, #01426a);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background, #01426a);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background, #01426a);--ds-auro-button-loader-color:var(--ds-advanced-color-button-primary-text, #ffffff);--ds-auro-button-text-color:var(--ds-advanced-color-button-primary-text, #ffffff);--ds-auro-button-tap-color:transparent}:host([onDark]){--ds-auro-button-border-color:var(--ds-advanced-color-button-primary-border-inverse, #ffffff);--ds-auro-button-border-inset-color:var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-button-container-color:var(--ds-advanced-color-button-primary-background-inverse, #ffffff);--ds-auro-button-container-image:var(--ds-advanced-color-button-primary-background-inverse, #ffffff);--ds-auro-button-loader-color:var(--ds-advanced-color-button-primary-text-inverse, #01426a);--ds-auro-button-text-color:var(--ds-advanced-color-button-primary-text-inverse, #01426a);--ds-auro-button-tap-color:transparent}`;
6004
+
6005
+ var shapeSize = css`.shape-rounded-xl{min-height:68px;max-height:68px;border-style:solid;border-radius:6px;overflow:hidden;font-size:18px}.shape-rounded-lg{min-height:52px;max-height:52px;border-style:solid;border-radius:6px;overflow:hidden;font-size:18px}.shape-rounded-md{min-height:44px;max-height:44px;border-style:solid;border-radius:6px;overflow:hidden;font-size:16px}.shape-rounded-sm{min-height:32px;max-height:32px;border-style:solid;border-radius:6px;overflow:hidden;font-size:14px}.shape-rounded-xs{min-height:20px;max-height:20px;border-style:solid;border-radius:4px;overflow:hidden;font-size:12px;outline-offset:-2px;outline-width:1px}.shape-pill-xl{min-height:68px;max-height:68px;border-style:solid;border-radius:34px;overflow:hidden;font-size:18px}.shape-pill-left-xl{min-height:68px;max-height:68px;border-style:solid;border-radius:34px 0 0 34px;overflow:hidden}.shape-pill-right-xl{min-height:68px;max-height:68px;border-style:solid;border-radius:0 34px 34px 0;overflow:hidden}.shape-pill-lg{min-height:52px;max-height:52px;border-style:solid;border-radius:26px;overflow:hidden;font-size:18px}.shape-pill-left-lg{min-height:52px;max-height:52px;border-style:solid;border-radius:26px 0 0 26px;overflow:hidden}.shape-pill-right-lg{min-height:52px;max-height:52px;border-style:solid;border-radius:0 26px 26px 0;overflow:hidden}.shape-pill-md{min-height:44px;max-height:44px;border-style:solid;border-radius:22px;overflow:hidden}.shape-pill-left-md{min-height:44px;max-height:44px;border-style:solid;border-radius:22px 0 0 22px;overflow:hidden}.shape-pill-right-md{min-height:44px;max-height:44px;border-style:solid;border-radius:0 22px 22px 0;overflow:hidden;font-size:16px}.shape-pill-sm{min-height:32px;max-height:32px;border-style:solid;border-radius:16px;overflow:hidden;font-size:14px}.shape-pill-left-sm{min-height:32px;max-height:32px;border-style:solid;border-radius:16px 0 0 16px;overflow:hidden}.shape-pill-right-sm{min-height:32px;max-height:32px;border-style:solid;border-radius:0 16px 16px 0;overflow:hidden}.shape-pill-xs{min-height:20px;max-height:20px;border-style:solid;border-radius:10px;overflow:hidden;font-size:12px;outline-offset:-2px;outline-width:1px}.shape-pill-left-xs{min-height:20px;max-height:20px;border-style:solid;border-radius:10px 0 0 10px;overflow:hidden;outline-offset:-2px;outline-width:1px}.shape-pill-right-xs{min-height:20px;max-height:20px;border-style:solid;border-radius:0 10px 10px 0;overflow:hidden;outline-offset:-2px;outline-width:1px}.shape-circle-xl{min-height:68px;max-height:68px;min-width:68px;max-width:68px;border-style:solid;border-radius:34px;overflow:hidden;padding:0}.shape-circle-lg{min-height:52px;max-height:52px;min-width:52px;max-width:52px;border-style:solid;border-radius:26px;overflow:hidden;padding:0}.shape-circle-md{min-height:44px;max-height:44px;min-width:44px;max-width:44px;border-style:solid;border-radius:22px;overflow:hidden;padding:0}.shape-circle-sm{min-height:32px;max-height:32px;min-width:32px;max-width:32px;border-style:solid;border-radius:16px;overflow:hidden;padding:0}.shape-circle-xs{min-height:20px;max-height:20px;min-width:20px;max-width:20px;border-style:solid;border-radius:10px;overflow:hidden;padding:0;outline-offset:-2px;outline-width:1px}`;
6006
+
6007
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
6008
+ // See LICENSE in the project root for license information.
6009
+
6010
+ // ---------------------------------------------------------------------
6011
+
6012
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
6013
+
6014
+ let AuroLibraryRuntimeUtils$2 = class AuroLibraryRuntimeUtils {
6015
+
6016
+ /* eslint-disable jsdoc/require-param */
6017
+
6018
+ /**
6019
+ * This will register a new custom element with the browser.
6020
+ * @param {String} name - The name of the custom element.
6021
+ * @param {Object} componentClass - The class to register as a custom element.
6022
+ * @returns {void}
6023
+ */
6024
+ registerComponent(name, componentClass) {
6025
+ if (!customElements.get(name)) {
6026
+ customElements.define(name, class extends componentClass {});
6027
+ }
6028
+ }
6029
+
6030
+ /**
6031
+ * Finds and returns the closest HTML Element based on a selector.
6032
+ * @returns {void}
6033
+ */
6034
+ closestElement(
6035
+ selector, // selector like in .closest()
6036
+ base = this, // extra functionality to skip a parent
6037
+ __Closest = (el, found = el && el.closest(selector)) =>
6038
+ !el || el === document || el === window
6039
+ ? null // standard .closest() returns null for non-found selectors also
6040
+ : found
6041
+ ? found // found a selector INside this element
6042
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
6043
+ ) {
6044
+ return __Closest(base);
6045
+ }
6046
+ /* eslint-enable jsdoc/require-param */
6047
+
6048
+ /**
6049
+ * 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.
6050
+ * @param {Object} elem - The element to check.
6051
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
6052
+ * @returns {void}
6053
+ */
6054
+ handleComponentTagRename(elem, tagName) {
6055
+ const tag = tagName.toLowerCase();
6056
+ const elemTag = elem.tagName.toLowerCase();
6057
+
6058
+ if (elemTag !== tag) {
6059
+ elem.setAttribute(tag, true);
6060
+ }
6061
+ }
6062
+
6063
+ /**
6064
+ * Validates if an element is a specific Auro component.
6065
+ * @param {Object} elem - The element to validate.
6066
+ * @param {String} tagName - The name of the Auro component to check against.
6067
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
6068
+ */
6069
+ elementMatch(elem, tagName) {
6070
+ const tag = tagName.toLowerCase();
6071
+ const elemTag = elem.tagName.toLowerCase();
6072
+
6073
+ return elemTag === tag || elem.hasAttribute(tag);
6074
+ }
6075
+ };
6076
+
6077
+ var styleCss$2 = css`:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin:0.375rem;--margin-xs:0.2rem;--margin-sm:0.5rem;--margin-md:0.75rem;--margin-lg:1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin)*6);height:1.5rem}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(2.55rem + var(--margin-xs)*6);height:1.55rem}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm)*6);height:2.5rem}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md)*6);height:3.5rem}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg)*6);height:5.5rem}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-400ms}:host([pulse])>span:nth-child(2){animation-delay:-200ms}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,100%{opacity:.1;transform:scale(0.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{100%{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}100%{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}100%{left:110%}}:host>.no-animation{display:none}@media(prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center;font-size:1rem}:host>span{opacity:1}:host>.loader{display:none}:host>.no-animation{display:block}}`;
6078
+
6079
+ var colorCss$1 = css`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]){--ds-auro-loader-color:var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]){--ds-auro-loader-color:var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color:transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color:currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color:currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}`;
6080
+
6081
+ var tokensCss$1 = css`:host{--ds-auro-loader-background-color:currentcolor;--ds-auro-loader-border-color:currentcolor;--ds-auro-loader-color:currentcolor}`;
6082
+
6083
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6084
+ // See LICENSE in the project root for license information.
6085
+
6086
+
6087
+ class AuroLoader extends LitElement {
6088
+ constructor() {
6089
+ super();
6090
+
6091
+ /**
6092
+ * @private
6093
+ */
6094
+ this.keys = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
6095
+
6096
+ /**
6097
+ * @private
6098
+ */
6099
+ this.mdCount = 3;
6100
+
6101
+ /**
6102
+ * @private
6103
+ */
6104
+ this.smCount = 2;
6105
+
6106
+ /**
6107
+ * @private
6108
+ */
6109
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$2();
6110
+
6111
+ this.orbit = false;
6112
+ this.ringworm = false;
6113
+ this.laser = false;
6114
+ this.pulse = false;
6115
+ }
6116
+
6117
+ // function to define props used within the scope of this component
6118
+ static get properties() {
6119
+ return {
6120
+
6121
+ /**
6122
+ * Sets loader to laser type.
6123
+ */
6124
+ laser: {
6125
+ type: Boolean,
6126
+ reflect: true
6127
+ },
6128
+
6129
+ /**
6130
+ * Sets loader to orbit type.
6131
+ */
6132
+ orbit: {
6133
+ type: Boolean,
6134
+ reflect: true
6135
+ },
6136
+
6137
+ /**
6138
+ * Sets loader to pulse type.
6139
+ */
6140
+ pulse: {
6141
+ type: Boolean,
6142
+ reflect: true
6143
+ },
6144
+
6145
+ /**
6146
+ * Sets loader to ringworm type.
6147
+ */
6148
+ ringworm: {
6149
+ type: Boolean,
6150
+ reflect: true
6151
+ }
6152
+ };
6153
+ }
6154
+
6155
+ static get styles() {
6156
+ return [
6157
+ css`${styleCss$2}`,
6158
+ css`${colorCss$1}`,
6159
+ css`${tokensCss$1}`
6160
+ ];
6161
+ }
6162
+
6163
+ /**
6164
+ * This will register this element with the browser.
6165
+ * @param {string} [name="auro-loader"] - The name of element that you want to register to.
6166
+ *
6167
+ * @example
6168
+ * AuroLoader.register("custom-loader") // this will register this element to <custom-loader/>
6169
+ *
6170
+ */
6171
+ static register(name = "auro-loader") {
6172
+ AuroLibraryRuntimeUtils$2.prototype.registerComponent(name, AuroLoader);
6173
+ }
6174
+
6175
+ firstUpdated() {
6176
+ // Add the tag name as an attribute if it is different than the component name
6177
+ this.runtimeUtils.handleComponentTagRename(this, 'auro-loader');
6178
+ }
6179
+
6180
+ connectedCallback() {
6181
+ super.connectedCallback();
6182
+ }
6183
+
6184
+ /**
6185
+ * @private
6186
+ * @returns {Array} Numbered array for template map.
6187
+ */
6188
+ defineTemplate() {
6189
+ let nodes = Array.from(Array(this.mdCount).keys());
6190
+
6191
+ if (this.orbit || this.laser) {
6192
+ nodes = Array.from(Array(this.smCount).keys());
6193
+ } else if (this.ringworm) {
6194
+ nodes = Array.from(Array(0).keys());
6195
+ }
6196
+
6197
+ return nodes;
6198
+ }
6199
+
6200
+ // When using auroElement, use the following attribute and function when hiding content from screen readers.
6201
+ // aria-hidden="${this.hideAudible(this.hiddenAudible)}"
6202
+
6203
+ // function that renders the HTML and CSS into the scope of the component
6204
+ render() {
6205
+ return html$1`
6206
+ ${this.defineTemplate().map((idx) => html$1`
6207
+ <span part="element" class="loader node-${idx}"></span>
6208
+ `)}
6209
+
6210
+ <div class="no-animation">Loading...</div>
6211
+
6212
+ ${this.ringworm ? html$1`
6213
+ <svg part="element" class="circular" viewBox="25 25 50 50">
6214
+ <circle class="path" cx="50" cy="50" r="20" fill="none"/>
6215
+ </svg>`
6216
+ : ``
6217
+ }
6218
+ `;
6219
+ }
6220
+ }
6221
+
6222
+ var loaderVersion = '5.0.0';
6223
+
6224
+ /* eslint-disable max-lines, curly, jsdoc/no-undefined-types */
6225
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
6226
+ // See LICENSE in the project root for license information.
6227
+
6228
+
6229
+ /**
6230
+ * @slot - Default slot for the text of the button.
6231
+ * @csspart button - Apply CSS to HTML5 button.
6232
+ * @csspart loader - Apply CSS to auro-loader.
6233
+ * @csspart text - Apply CSS to text slot.
6234
+ * @csspart icon - Apply CSS to icon slot.
6235
+ */
6236
+
6237
+ /* eslint-disable lit/no-invalid-html, lit/binding-positions */
6238
+
6239
+ const ICON_ONLY_SHAPES = ['circle'];
6240
+
6241
+ /**
6242
+ * AuroButton is a custom element that provides a styled, accessible button with support for various states and form association.
6243
+ * It is designed to be flexible, supporting loading states, icon slots, and integration with HTML5 forms.
6244
+ * @property {'default', 'rounded', 'pill', 'circle'} shape - Defines the shape of the button.
6245
+ * @property {'xs', 'sm', 'md', 'lg', 'xl'} size - Defines the size of the button.
6246
+ * @property {'primary', 'secondary', 'tertiary', 'ghost', 'flat'} variant - Sets the button variant.
6247
+ * @property {'submit', 'reset', 'button'} type - The type of button. Matches HTML5 Button Spec.
6248
+ * @property {boolean} onDark - Indicates if the button is rendered in dark mode.
6249
+ */
6250
+ class AuroButton extends AuroElement$1 {
6251
+
6252
+ /**
6253
+ * Enables form association for this element.
6254
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/attachInternals
6255
+ * @returns {boolean} - Returns true to enable form association.
6256
+ */
6257
+ static get formAssociated() {
6258
+ return true;
6259
+ }
6260
+
6261
+ constructor() {
6262
+ super();
6263
+ this.autofocus = false;
6264
+ this.disabled = false;
6265
+ this.loading = false;
6266
+ this.size = "md";
6267
+ this.shape = "rounded";
6268
+ this.onDark = false;
6269
+ this.fluid = false;
6270
+ this.loadingText = this.loadingText || 'Loading...';
6271
+
6272
+ // Support for HTML5 forms
6273
+ if (typeof this.attachInternals === 'function') {
6274
+ this.internals = this.attachInternals();
6275
+ } else {
6276
+ this.internals = null;
6277
+
6278
+ // eslint-disable-next-line no-console
6279
+ console.warn('This browser does not support form association features. Some form-related functionality may not work as expected. Consider using a polyfill or handling click events manually.');
6280
+ }
6281
+
6282
+ /**
6283
+ * Generate unique names for dependency components.
6284
+ */
6285
+ const versioning = new AuroDependencyVersioning();
6286
+
6287
+ /**
6288
+ * @private
6289
+ */
6290
+ this.loaderTag = versioning.generateTag('auro-loader', loaderVersion, AuroLoader);
6291
+
6292
+ /**
6293
+ * @private
6294
+ */
6295
+ this.buttonHref = undefined;
6296
+
6297
+ /**
6298
+ * @private
6299
+ */
6300
+ this.buttonTarget = undefined;
6301
+
6302
+ /**
6303
+ * @private
6304
+ */
6305
+ this.buttonRel = undefined;
6306
+ }
6307
+
6308
+ static get styles() {
6309
+ return [
6310
+ tokensCss$2,
6311
+ styleCss$3,
6312
+ colorCss$2,
6313
+ shapeSize
6314
+ ];
6315
+ }
6316
+
6317
+ static get properties() {
6318
+ return {
6319
+
6320
+ ...super.properties,
6321
+
6322
+ /**
6323
+ * Override layout since it isn't used in this component.
6324
+ * @private
6325
+ */
6326
+ layout: {
6327
+ type: Boolean,
6328
+ attribute: false,
6329
+ reflect: false
6330
+ },
6331
+
6332
+ /**
6333
+ * This Boolean attribute lets you specify that the button should have input focus when the page loads, unless overridden by the user.
6334
+ */
6335
+ autofocus: {
6336
+ type: Boolean,
6337
+ reflect: true
6338
+ },
6339
+
6340
+ /**
6341
+ * If set to true, button will become disabled and not allow for interactions.
6342
+ */
6343
+ disabled: {
6344
+ type: Boolean,
6345
+ reflect: true
6346
+ },
6347
+
6348
+ /**
6349
+ * Alters the shape of the button to be full width of its parent container.
6350
+ */
6351
+ fluid: {
6352
+ type: Boolean,
6353
+ reflect: true
6354
+ },
6355
+
6356
+ /**
6357
+ * If set to true button text will be replaced with `auro-loader` and become disabled.
6358
+ */
6359
+ loading: {
6360
+ type: Boolean,
6361
+ reflect: true
6362
+ },
6363
+
6364
+ /**
6365
+ * Sets custom loading text for the `aria-label` on a button in loading state. If not set, the default value of "Loading..." will be used.
6366
+ */
6367
+ loadingText: {
6368
+ type: String
6369
+ },
6370
+
6371
+ /**
6372
+ * Populates `tabindex` to define the focusable sequence in keyboard navigation.
6373
+ */
6374
+ tIndex: {
6375
+ type: String,
6376
+ reflect: true
6377
+ },
6378
+
6379
+ /**
6380
+ * Populates `tabindex` to define the focusable sequence in keyboard navigation.
6381
+ * Must be used with "." to ensure the host element does not retain a reference to the `tabindex` attribute.
6382
+ * Example: `<auro-button .tabindex="${this.disabled ? '-1' : '0'}"></auro-button>`
6383
+ */
6384
+ tabindex: {
6385
+ type: String,
6386
+ reflect: false
6387
+ },
6388
+
6389
+ /**
6390
+ * Sets title attribute. The information is most often shown as a tooltip text when the mouse moves over the element.
6391
+ */
6392
+ title: {
6393
+ type: String,
6394
+ reflect: true
6395
+ },
6396
+
6397
+ /**
6398
+ * The type of the button. Possible values are: `submit`, `reset`, `button`.
6399
+ */
6400
+ type: {
6401
+ type: String,
6402
+ reflect: true
6403
+ },
6404
+
6405
+ /**
6406
+ * Defines the value associated with the button which is submitted with the form data.
6407
+ */
6408
+ value: {
6409
+ type: String,
6410
+ reflect: true
6411
+ },
6412
+
6413
+ /**
6414
+ * Sets button variant option.
6415
+ * @default primary
6416
+ */
6417
+ variant: {
6418
+ type: String,
6419
+ reflect: true
6420
+ },
6421
+
6422
+ /**
6423
+ * @private
6424
+ */
6425
+ buttonHref: {
6426
+ type: String,
6427
+ },
6428
+
6429
+ /**
6430
+ * @private
6431
+ */
6432
+ buttonTarget: {
6433
+ type: String,
6434
+ },
6435
+
6436
+ /**
6437
+ * @private
6438
+ */
6439
+ buttonRel: {
6440
+ type: String,
6441
+ },
6442
+ };
6443
+ }
6444
+
6445
+ /**
6446
+ * This will register this element with the browser.
6447
+ * @param {string} [name="auro-button"] - The name of element that you want to register to.
6448
+ *
6449
+ * @example
6450
+ * AuroButton.register("custom-button") // this will register this element to <custom-button/>
6451
+ *
6452
+ */
6453
+ static register(name = "auro-button") {
6454
+ AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroButton);
6455
+ }
6456
+
6457
+ /**
6458
+ * Internal method to apply focus to the HTML5 button.
6459
+ * @private
6460
+ * @returns {void}
6461
+ */
6462
+ focus() {
6463
+ this.renderRoot.querySelector('button').focus();
6464
+ }
6465
+
6466
+ /**
6467
+ * Submits the form that this button is associated with.
6468
+ * @private
6469
+ * @returns {void}
6470
+ */
6471
+ surfaceSubmitEvent() {
6472
+ if (this.form) {
6473
+ this.form.requestSubmit();
6474
+ }
6475
+ }
6476
+
6477
+ /**
6478
+ * Returns the form element that this button is associated with.
6479
+ * @private
6480
+ * @returns {HTMLFormElement | null}
6481
+ */
6482
+ get form() {
6483
+ return this.internals ? this.internals.form : null;
6484
+ }
6485
+
6486
+ /**
6487
+ * @private
6488
+ * @returns {Boolean}
6489
+ */
6490
+ get hideText() {
6491
+ return ICON_ONLY_SHAPES.includes(this.shape);
6492
+ }
6493
+
6494
+ /**
6495
+ * Returns the current value of the projected `aria-label` attribute or undefined if not set.
6496
+ * @returns {string | undefined}
6497
+ * @private
6498
+ */
6499
+ get currentAriaLabel() {
6500
+ if (!this.attributeWatcher) return undefined;
6501
+
6502
+ const ariaLabel = this.attributeWatcher.getObservedAttribute("aria-label");
6503
+ return ariaLabel || undefined;
6504
+ }
6505
+
6506
+ /**
6507
+ * Returns the current value of the projected `aria-labelledby` attribute or undefined if not set.
6508
+ * @returns {string | undefined}
6509
+ * @private
6510
+ */
6511
+ get currentAriaLabelledBy() {
6512
+ if (!this.attributeWatcher) return undefined;
6513
+
6514
+ const ariaLabelledBy = this.attributeWatcher.getObservedAttribute("aria-labelledby");
6515
+ return ariaLabelledBy || undefined;
6516
+ }
6517
+
6518
+ /**
6519
+ * Renders the default layout for the button.
6520
+ * @returns {TemplateResult}
6521
+ * @private
6522
+ */
6523
+ renderLayoutDefault() {
6524
+ const classes = {
6525
+ "util_insetLg--squish": true,
6526
+ "auro-button": true,
6527
+ "icon-only": this.hideText,
6528
+ wrapper: true,
6529
+ loading: this.loading,
6530
+ };
6531
+
6532
+ const tag = this.buttonHref ? literal`a` : literal`button`;
6533
+ const part = this.buttonHref ? 'link' : 'button';
6534
+
6535
+ return html`
6536
+ <${tag}
6537
+ part="${part}"
6538
+ aria-label="${ifDefined(this.loading ? this.loadingText : this.currentAriaLabel || undefined)}"
6539
+ aria-labelledby="${ifDefined(this.loading ? undefined : this.currentAriaLabelledBy || undefined)}"
6540
+ tabindex="${ifDefined(this.tIndex || this.tabindex)}"
6541
+ ?autofocus="${this.autofocus}"
6542
+ class=${classMap(classes)}
6543
+ ?disabled="${this.disabled || this.loading}"
6544
+ ?onDark="${this.onDark}"
6545
+ title="${ifDefined(this.title ? this.title : undefined)}"
6546
+ name="${ifDefined(this.name ? this.name : undefined)}"
6547
+ type="${ifDefined(this.type ? this.type : undefined)}"
6548
+ variant="${ifDefined(this.variant ? this.variant : undefined)}"
6549
+ .value="${ifDefined(this.value ? this.value : undefined)}"
6550
+ @click="${this.type === 'submit' ? this.surfaceSubmitEvent : undefined}"
6551
+ href="${ifDefined(this.buttonHref || undefined)}"
6552
+ target="${ifDefined(this.buttonTarget || undefined)}"
6553
+ rel="${ifDefined(this.buttonRel || undefined)}"
6554
+ >
6555
+ ${ifDefined(this.loading ? html`<${this.loaderTag} pulse part="loader"></${this.loaderTag}>` : undefined)}
6556
+
6557
+ <span class="contentWrapper">
6558
+ <span class="textSlot" part="text">
6559
+ <slot></slot>
6560
+ </span>
6561
+ </span>
6562
+ </${tag}>
6563
+ `;
6564
+ }
6565
+
6566
+ /**
6567
+ * Renders the layout of the button.
6568
+ * @returns {TemplateResult}
6569
+ * @private
6570
+ */
6571
+ renderLayout() {
6572
+ return this.renderLayoutDefault();
6573
+ }
6574
+ }
6575
+
6576
+ var buttonVersion = '11.2.1';
6577
+
6578
+ // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
6579
+ // See LICENSE in the project root for license information.
6580
+
6581
+
6582
+ /**
6583
+ * @attr {Boolean} hidden - If present, the component will be hidden both visually and from screen readers
6584
+ * @attr {Boolean} hiddenVisually - If present, the component will be hidden visually, but still read by screen readers
6585
+ * @attr {Boolean} hiddenAudible - If present, the component will be hidden from screen readers, but seen visually
6586
+ */
6587
+
6588
+ class AuroElement extends LitElement {
6589
+
6590
+ // function to define props used within the scope of this component
6591
+ static get properties() {
6592
+ return {
6593
+ hidden: { type: Boolean,
6594
+ reflect: true },
6595
+ hiddenVisually: { type: Boolean,
6596
+ reflect: true },
6597
+ hiddenAudible: { type: Boolean,
6598
+ reflect: true },
6599
+ };
6600
+ }
6601
+
6602
+ /**
6603
+ * @private Function that determines state of aria-hidden
6604
+ */
6605
+ hideAudible(value) {
6606
+ if (value) {
6607
+ return 'true'
6608
+ }
6609
+
6610
+ return 'false'
6611
+ }
6612
+ }
6613
+
6614
+ var error = {"svg":"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" aria-labelledby=\"error__desc\" class=\"ico_squareLarge\" data-deprecated=\"true\" role=\"img\" style=\"min-width:var(--auro-size-lg, var(--ds-size-300, 1.5rem));height:var(--auro-size-lg, var(--ds-size-300, 1.5rem));fill:currentColor\" viewBox=\"0 0 24 24\" part=\"svg\"><title/><desc id=\"error__desc\">Error alert indicator.</desc><path d=\"m13.047 5.599 6.786 11.586A1.207 1.207 0 0 1 18.786 19H5.214a1.207 1.207 0 0 1-1.047-1.815l6.786-11.586a1.214 1.214 0 0 1 2.094 0m-1.165.87a.23.23 0 0 0-.085.085L5.419 17.442a.232.232 0 0 0 .203.35h12.756a.234.234 0 0 0 .203-.35L12.203 6.554a.236.236 0 0 0-.321-.084M12 15.5a.75.75 0 1 1 0 1.5.75.75 0 0 1 0-1.5m-.024-6.22c.325 0 .589.261.589.583v4.434a.586.586 0 0 1-.589.583.586.586 0 0 1-.588-.583V9.863c0-.322.264-.583.588-.583\"/></svg>"};
6615
+
6616
+ /* eslint-disable no-underscore-dangle, jsdoc/no-undefined-types, jsdoc/require-param-description */
6617
+
6618
+ const _fetchMap = new Map();
6619
+
6620
+ /**
6621
+ * A callback to parse Response body.
6622
+ *
6623
+ * @callback ResponseParser
6624
+ * @param {Fetch.Response} response
6625
+ * @returns {Promise}
6626
+ */
6627
+
6628
+ /**
6629
+ * A minimal in-memory map to de-duplicate Fetch API media requests.
6630
+ *
6631
+ * @param {String} uri
6632
+ * @param {Object} [options={}]
6633
+ * @param {ResponseParser} [options.responseParser=(response) => response.text()]
6634
+ * @returns {Promise}
6635
+ */
6636
+ const cacheFetch = (uri, options = {}) => {
6637
+ const responseParser = options.responseParser || ((response) => response.text());
6638
+ if (!_fetchMap.has(uri)) {
6639
+ _fetchMap.set(uri, fetch(uri).then(responseParser));
6640
+ }
6641
+ return _fetchMap.get(uri);
6642
+ };
6643
+
6644
+ var styleCss$1$1 = css`:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.ico_squareLarge{fill:currentColor;height:var(--auro-size-lg, var(--ds-size-300, 1.5rem))}.ico_squareSmall{fill:currentColor;height:.6rem}.ico_squareMed{fill:currentColor;height:var(--auro-size-md, var(--ds-size-200, 1rem))}.ico_squareSml{fill:currentColor;height:var(--auro-size-sm, var(--ds-size-150, 0.75rem))}:host{color:currentColor;vertical-align:middle;line-height:1;display:inline-block}svg{min-width:var(--ds-auro-icon-size, 1.5rem) !important;width:var(--ds-auro-icon-size, 1.5rem) !important;height:var(--ds-auro-icon-size, 1.5rem) !important}.componentWrapper{display:flex}.svgWrapper{height:var(--ds-auro-icon-size);width:var(--ds-auro-icon-size)}.labelWrapper{margin-left:var(--ds-size-50, 0.25rem);line-height:1.8}`;
5095
6645
 
5096
6646
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5097
6647
  // See LICENSE in the project root for license information.
@@ -5134,7 +6684,7 @@ class BaseIcon extends AuroElement {
5134
6684
 
5135
6685
  static get styles() {
5136
6686
  return css`
5137
- ${styleCss$1}
6687
+ ${styleCss$1$1}
5138
6688
  `;
5139
6689
  }
5140
6690
 
@@ -5175,9 +6725,79 @@ class BaseIcon extends AuroElement {
5175
6725
  }
5176
6726
  }
5177
6727
 
5178
- var tokensCss = css`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-alaska-color:#02426D;--ds-auro-icon-size:var(--ds-size-300, 1.5rem)}`;
6728
+ var tokensCss$3 = css`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-alaska-color:#02426D;--ds-auro-icon-size:var(--ds-size-300, 1.5rem)}`;
6729
+
6730
+ var colorCss$4 = css`: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)}`;
6731
+
6732
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
6733
+ // See LICENSE in the project root for license information.
6734
+
6735
+ // ---------------------------------------------------------------------
6736
+
6737
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
6738
+
6739
+ let AuroLibraryRuntimeUtils$1 = class AuroLibraryRuntimeUtils {
6740
+
6741
+ /* eslint-disable jsdoc/require-param */
6742
+
6743
+ /**
6744
+ * This will register a new custom element with the browser.
6745
+ * @param {String} name - The name of the custom element.
6746
+ * @param {Object} componentClass - The class to register as a custom element.
6747
+ * @returns {void}
6748
+ */
6749
+ registerComponent(name, componentClass) {
6750
+ if (!customElements.get(name)) {
6751
+ customElements.define(name, class extends componentClass {});
6752
+ }
6753
+ }
6754
+
6755
+ /**
6756
+ * Finds and returns the closest HTML Element based on a selector.
6757
+ * @returns {void}
6758
+ */
6759
+ closestElement(
6760
+ selector, // selector like in .closest()
6761
+ base = this, // extra functionality to skip a parent
6762
+ __Closest = (el, found = el && el.closest(selector)) =>
6763
+ !el || el === document || el === window
6764
+ ? null // standard .closest() returns null for non-found selectors also
6765
+ : found
6766
+ ? found // found a selector INside this element
6767
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
6768
+ ) {
6769
+ return __Closest(base);
6770
+ }
6771
+ /* eslint-enable jsdoc/require-param */
6772
+
6773
+ /**
6774
+ * 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.
6775
+ * @param {Object} elem - The element to check.
6776
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
6777
+ * @returns {void}
6778
+ */
6779
+ handleComponentTagRename(elem, tagName) {
6780
+ const tag = tagName.toLowerCase();
6781
+ const elemTag = elem.tagName.toLowerCase();
6782
+
6783
+ if (elemTag !== tag) {
6784
+ elem.setAttribute(tag, true);
6785
+ }
6786
+ }
6787
+
6788
+ /**
6789
+ * Validates if an element is a specific Auro component.
6790
+ * @param {Object} elem - The element to validate.
6791
+ * @param {String} tagName - The name of the Auro component to check against.
6792
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
6793
+ */
6794
+ elementMatch(elem, tagName) {
6795
+ const tag = tagName.toLowerCase();
6796
+ const elemTag = elem.tagName.toLowerCase();
5179
6797
 
5180
- var colorCss = css`: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)}`;
6798
+ return elemTag === tag || elem.hasAttribute(tag);
6799
+ }
6800
+ };
5181
6801
 
5182
6802
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5183
6803
  // See LICENSE in the project root for license information.
@@ -5198,7 +6818,7 @@ class AuroIcon extends BaseIcon {
5198
6818
  */
5199
6819
  privateDefaults() {
5200
6820
  this.uri = 'https://cdn.jsdelivr.net/npm/@alaskaairux/icons@latest/dist';
5201
- this.runtimeUtils = new AuroLibraryRuntimeUtils();
6821
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$1();
5202
6822
  }
5203
6823
 
5204
6824
  // function to define props used within the scope of this component
@@ -5265,9 +6885,9 @@ class AuroIcon extends BaseIcon {
5265
6885
  static get styles() {
5266
6886
  return [
5267
6887
  super.styles,
5268
- css`${tokensCss}`,
5269
- css`${styleCss$1}`,
5270
- css`${colorCss}`
6888
+ css`${tokensCss$3}`,
6889
+ css`${styleCss$1$1}`,
6890
+ css`${colorCss$4}`
5271
6891
  ];
5272
6892
  }
5273
6893
 
@@ -5280,7 +6900,7 @@ class AuroIcon extends BaseIcon {
5280
6900
  *
5281
6901
  */
5282
6902
  static register(name = "auro-icon") {
5283
- AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroIcon);
6903
+ AuroLibraryRuntimeUtils$1.prototype.registerComponent(name, AuroIcon);
5284
6904
  }
5285
6905
 
5286
6906
  connectedCallback() {
@@ -5301,54 +6921,128 @@ class AuroIcon extends BaseIcon {
5301
6921
  async firstUpdated() {
5302
6922
  await super.firstUpdated();
5303
6923
 
5304
- // Removes the SVG description for screenreader if ariaHidden is set to true
5305
- if (!this.hasAttribute('ariaHidden') && this.svg) {
6924
+ /**
6925
+ * icons provide a description for screen readers. Icon only instances Auro-button
6926
+ * depend on this description to provide context for the user using a screen reader.
6927
+ * Removes the SVG description for screen reader if ariaHidden is set to true.
6928
+ */
6929
+ if (this.hasAttribute('ariaHidden') && this.svg) {
5306
6930
  const svgDesc = this.svg.querySelector('desc');
5307
6931
 
5308
- if (svgDesc) {
5309
- svgDesc.remove();
5310
- this.svg.removeAttribute('aria-labelledby');
5311
- }
6932
+ if (svgDesc) {
6933
+ svgDesc.remove();
6934
+ this.svg.removeAttribute('aria-labelledby');
6935
+ }
6936
+ }
6937
+ }
6938
+
6939
+ // function that renders the HTML and CSS into the scope of the component
6940
+ render() {
6941
+ const labelClasses = {
6942
+ 'labelWrapper': true,
6943
+ 'util_displayHiddenVisually': !this.label
6944
+ };
6945
+
6946
+ const svgClasses = {
6947
+ 'svgWrapper': true,
6948
+ };
6949
+
6950
+ return html$1`
6951
+ <div class="componentWrapper">
6952
+ <div
6953
+ class="${classMap(svgClasses)}"
6954
+ title="${ifDefined(this.title || undefined)}">
6955
+ <span aria-hidden="${ifDefined(this.ariaHidden || true)}" part="svg">
6956
+ ${this.customSvg ? html$1`
6957
+ <slot name="svg"></slot>
6958
+ ` : html$1`
6959
+ ${this.svg}
6960
+ `
6961
+ }
6962
+ </span>
6963
+ </div>
6964
+
6965
+ <div class="${classMap(labelClasses)}">
6966
+ <slot></slot>
6967
+ </div>
6968
+ </div>
6969
+ `;
6970
+ }
6971
+ }
6972
+
6973
+ var iconVersion = '8.0.4';
6974
+
6975
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
6976
+ // See LICENSE in the project root for license information.
6977
+
6978
+ // ---------------------------------------------------------------------
6979
+
6980
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
6981
+
6982
+ let AuroLibraryRuntimeUtils$4 = class AuroLibraryRuntimeUtils {
6983
+
6984
+ /* eslint-disable jsdoc/require-param */
6985
+
6986
+ /**
6987
+ * This will register a new custom element with the browser.
6988
+ * @param {String} name - The name of the custom element.
6989
+ * @param {Object} componentClass - The class to register as a custom element.
6990
+ * @returns {void}
6991
+ */
6992
+ registerComponent(name, componentClass) {
6993
+ if (!customElements.get(name)) {
6994
+ customElements.define(name, class extends componentClass {});
6995
+ }
6996
+ }
6997
+
6998
+ /**
6999
+ * Finds and returns the closest HTML Element based on a selector.
7000
+ * @returns {void}
7001
+ */
7002
+ closestElement(
7003
+ selector, // selector like in .closest()
7004
+ base = this, // extra functionality to skip a parent
7005
+ __Closest = (el, found = el && el.closest(selector)) =>
7006
+ !el || el === document || el === window
7007
+ ? null // standard .closest() returns null for non-found selectors also
7008
+ : found
7009
+ ? found // found a selector INside this element
7010
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
7011
+ ) {
7012
+ return __Closest(base);
7013
+ }
7014
+ /* eslint-enable jsdoc/require-param */
7015
+
7016
+ /**
7017
+ * 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.
7018
+ * @param {Object} elem - The element to check.
7019
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
7020
+ * @returns {void}
7021
+ */
7022
+ handleComponentTagRename(elem, tagName) {
7023
+ const tag = tagName.toLowerCase();
7024
+ const elemTag = elem.tagName.toLowerCase();
7025
+
7026
+ if (elemTag !== tag) {
7027
+ elem.setAttribute(tag, true);
5312
7028
  }
5313
7029
  }
5314
7030
 
5315
- // function that renders the HTML and CSS into the scope of the component
5316
- render() {
5317
- const labelClasses = {
5318
- 'labelWrapper': true,
5319
- 'util_displayHiddenVisually': !this.label
5320
- };
5321
-
5322
- const svgClasses = {
5323
- 'svgWrapper': true,
5324
- };
5325
-
5326
- return html$1`
5327
- <div class="componentWrapper">
5328
- <div
5329
- class="${classMap(svgClasses)}"
5330
- title="${ifDefined(this.title || undefined)}">
5331
- <span aria-hidden="${ifDefined(this.ariaHidden || true)}" part="svg">
5332
- ${this.customSvg ? html$1`
5333
- <slot name="svg"></slot>
5334
- ` : html$1`
5335
- ${this.svg}
5336
- `
5337
- }
5338
- </span>
5339
- </div>
7031
+ /**
7032
+ * Validates if an element is a specific Auro component.
7033
+ * @param {Object} elem - The element to validate.
7034
+ * @param {String} tagName - The name of the Auro component to check against.
7035
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
7036
+ */
7037
+ elementMatch(elem, tagName) {
7038
+ const tag = tagName.toLowerCase();
7039
+ const elemTag = elem.tagName.toLowerCase();
5340
7040
 
5341
- <div class="${classMap(labelClasses)}">
5342
- <slot></slot>
5343
- </div>
5344
- </div>
5345
- `;
7041
+ return elemTag === tag || elem.hasAttribute(tag);
5346
7042
  }
5347
- }
5348
-
5349
- var iconVersion = '8.0.3';
7043
+ };
5350
7044
 
5351
- var styleCss$3 = css`.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)}`;
7045
+ var styleCss$5 = css`.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)}`;
5352
7046
 
5353
7047
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5354
7048
  // See LICENSE in the project root for license information.
@@ -5377,7 +7071,7 @@ class AuroHeader extends LitElement {
5377
7071
  /**
5378
7072
  * @private
5379
7073
  */
5380
- this.runtimeUtils = new AuroLibraryRuntimeUtils();
7074
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$4();
5381
7075
  }
5382
7076
 
5383
7077
  // function to define props used within the scope of this component
@@ -5395,7 +7089,7 @@ class AuroHeader extends LitElement {
5395
7089
  }
5396
7090
 
5397
7091
  static get styles() {
5398
- return [styleCss$3];
7092
+ return [styleCss$5];
5399
7093
  }
5400
7094
 
5401
7095
  /**
@@ -5407,7 +7101,7 @@ class AuroHeader extends LitElement {
5407
7101
  *
5408
7102
  */
5409
7103
  static register(name = "auro-header") {
5410
- AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroHeader);
7104
+ AuroLibraryRuntimeUtils$4.prototype.registerComponent(name, AuroHeader);
5411
7105
  }
5412
7106
 
5413
7107
  firstUpdated() {
@@ -5464,161 +7158,394 @@ class AuroHeader extends LitElement {
5464
7158
  }
5465
7159
 
5466
7160
  /**
5467
- * Creates HTML template for use in render function.
5468
- * @private
5469
- * @param {string} level - Accepts string value.
5470
- * @returns {string} - Returns HTML template.
7161
+ * Creates HTML template for use in render function.
7162
+ * @private
7163
+ * @param {string} level - Accepts string value.
7164
+ * @returns {string} - Returns HTML template.
7165
+ */
7166
+ template(level) {
7167
+ if (this.display === '' || this.display === null) {
7168
+ this.display = 'display';
7169
+ }
7170
+
7171
+ switch (level) {
7172
+ case '2': return html$1`<h2 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h2>`;
7173
+ case '3': return html$1`<h3 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h3>`;
7174
+ case '4': return html$1`<h4 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h4>`;
7175
+ case '5': return html$1`<h5 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h5>`;
7176
+ case '6': return html$1`<h6 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h6>`;
7177
+ default: return html$1`<h1 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h1>`;
7178
+ }
7179
+ }
7180
+ // function that renders the HTML and CSS into the scope of the component
7181
+
7182
+ render() {
7183
+ return this.template(this.level);
7184
+ }
7185
+ }
7186
+
7187
+ var headerVersion = '4.0.1';
7188
+
7189
+ // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
7190
+ // See LICENSE in the project root for license information.
7191
+
7192
+
7193
+ class AuroBibtemplate extends LitElement {
7194
+
7195
+ constructor() {
7196
+ super();
7197
+
7198
+ this.large = false;
7199
+
7200
+ AuroLibraryRuntimeUtils$3.prototype.handleComponentTagRename(this, 'auro-bibtemplate');
7201
+
7202
+ const versioning = new AuroDependencyVersioning();
7203
+
7204
+ /**
7205
+ * @private
7206
+ */
7207
+ this.iconTag = versioning.generateTag('auro-formkit-bibtemplate-icon', iconVersion, AuroIcon);
7208
+
7209
+ /**
7210
+ * @private
7211
+ */
7212
+ this.headerTag = versioning.generateTag('auro-formkit-bibtemplate-header', headerVersion, AuroHeader);
7213
+
7214
+ /**
7215
+ * @private
7216
+ */
7217
+ this.buttonTag = versioning.generateTag('auro-formkit-input-button', buttonVersion, AuroButton);
7218
+ }
7219
+
7220
+ static get styles() {
7221
+ return [
7222
+ colorCss$3,
7223
+ styleCss$4,
7224
+ tokenCss
7225
+ ];
7226
+ }
7227
+
7228
+ // function to define props used within the scope of this component
7229
+ static get properties() {
7230
+ return {
7231
+ isFullscreen: {
7232
+ type: Boolean,
7233
+ reflect: true
7234
+ },
7235
+ large: {
7236
+ type: Boolean,
7237
+ reflect: true
7238
+ }
7239
+ };
7240
+ }
7241
+
7242
+ // function to define props used within the scope of this component
7243
+ /**
7244
+ * This will register this element with the browser.
7245
+ * @param {string} [name="auro-bibtemplate"] - The name of element that you want to register to.
7246
+ *
7247
+ * @example
7248
+ * AuroCheckbox.register("custom-bibtemplate") // this will register this element to <custom-bibtemplate/>
7249
+ *
7250
+ */
7251
+ static register(name = "auro-bibtemplate") {
7252
+ AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroBibtemplate);
7253
+ }
7254
+
7255
+ /**
7256
+ * Prevents scrolling of the body when touching empty areas of the component.
7257
+ * @param {Event} event - The touchmove event.
7258
+ * @returns {void}
7259
+ */
7260
+ preventBodyScroll(event) {
7261
+ if (event.target === this) {
7262
+ event.preventDefault();
7263
+ }
7264
+ }
7265
+
7266
+ connectedCallback() {
7267
+ super.connectedCallback();
7268
+
7269
+ this.preventBodyScroll = this.preventBodyScroll.bind(this);
7270
+ this.addEventListener('touchmove', this.preventBodyScroll, { passive: false });
7271
+ }
7272
+
7273
+ disconnectedCallback() {
7274
+ super.disconnectedCallback();
7275
+
7276
+ this.removeEventListener('touchmove', this.preventBodyScroll, { passive: false });
7277
+ }
7278
+
7279
+ onCloseButtonClick() {
7280
+ this.dispatchEvent(new Event("close-click", { bubbles: true,
7281
+ composed: true }));
7282
+ }
7283
+
7284
+ /**
7285
+ * Exposes CSS parts for styling from parent components.
7286
+ * @returns {void}
7287
+ */
7288
+ exposeCssParts() {
7289
+ this.setAttribute('exportparts', 'bibtemplate:dropdownBibTemplate');
7290
+ }
7291
+
7292
+ firstUpdated(changedProperties) {
7293
+ super.firstUpdated(changedProperties);
7294
+
7295
+ this.dispatchEvent(new CustomEvent("auro-bibtemplate-connected", {
7296
+ bubbles: true,
7297
+ composed: true,
7298
+ detail: {
7299
+ element: this
7300
+ }
7301
+ }));
7302
+ }
7303
+
7304
+ // function that renders the HTML and CSS into the scope of the component
7305
+ render() {
7306
+ return html`
7307
+ <div id="bibTemplate" part="bibtemplate">
7308
+ ${this.isFullscreen ? html`
7309
+ <div id="headerContainer">
7310
+ <${this.buttonTag} id="closeButton" variant="ghost" shape="circle" size="sm" @click="${this.onCloseButtonClick}">
7311
+ <${this.iconTag} category="interface" name="x-lg"></${this.iconTag}>
7312
+ </${this.buttonTag}>
7313
+ <${this.headerTag} display="${this.large ? 'display' : '600'}" level="3" size="none" id="header" no-margin-block>
7314
+ <slot name="header"></slot>
7315
+ </${this.headerTag}>
7316
+ <span id="subheader">
7317
+ <slot name="subheader"></slot>
7318
+ </span>
7319
+ </div>` : null}
7320
+
7321
+ <div id="bodyContainer">
7322
+ <slot></slot>
7323
+ </div>
7324
+
7325
+ ${this.isFullscreen ? html`
7326
+ <div id="footerContainer">
7327
+ <slot name="footer"></slot>
7328
+ </div>` : null}
7329
+ </div>
7330
+ `;
7331
+ }
7332
+ }
7333
+
7334
+ var bibTemplateVersion = '1.0.0';
7335
+
7336
+ var colorCss = css`: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)}`;
7337
+
7338
+ var styleCss$1 = css`.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}`;
7339
+
7340
+ var tokensCss = css`:host{--ds-auro-helptext-color: var(--ds-basic-color-texticon-muted, #676767)}`;
7341
+
7342
+ // Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
7343
+ // See LICENSE in the project root for license information.
7344
+
7345
+ // ---------------------------------------------------------------------
7346
+
7347
+ /* eslint-disable line-comment-position, no-inline-comments, no-confusing-arrow, no-nested-ternary, implicit-arrow-linebreak */
7348
+
7349
+ class AuroLibraryRuntimeUtils {
7350
+
7351
+ /* eslint-disable jsdoc/require-param */
7352
+
7353
+ /**
7354
+ * This will register a new custom element with the browser.
7355
+ * @param {String} name - The name of the custom element.
7356
+ * @param {Object} componentClass - The class to register as a custom element.
7357
+ * @returns {void}
7358
+ */
7359
+ registerComponent(name, componentClass) {
7360
+ if (!customElements.get(name)) {
7361
+ customElements.define(name, class extends componentClass {});
7362
+ }
7363
+ }
7364
+
7365
+ /**
7366
+ * Finds and returns the closest HTML Element based on a selector.
7367
+ * @returns {void}
7368
+ */
7369
+ closestElement(
7370
+ selector, // selector like in .closest()
7371
+ base = this, // extra functionality to skip a parent
7372
+ __Closest = (el, found = el && el.closest(selector)) =>
7373
+ !el || el === document || el === window
7374
+ ? null // standard .closest() returns null for non-found selectors also
7375
+ : found
7376
+ ? found // found a selector INside this element
7377
+ : __Closest(el.getRootNode().host) // recursion!! break out to parent DOM
7378
+ ) {
7379
+ return __Closest(base);
7380
+ }
7381
+ /* eslint-enable jsdoc/require-param */
7382
+
7383
+ /**
7384
+ * 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.
7385
+ * @param {Object} elem - The element to check.
7386
+ * @param {String} tagName - The name of the Auro component to check for or add as an attribute.
7387
+ * @returns {void}
5471
7388
  */
5472
- template(level) {
5473
- if (this.display === '' || this.display === null) {
5474
- this.display = 'display';
5475
- }
7389
+ handleComponentTagRename(elem, tagName) {
7390
+ const tag = tagName.toLowerCase();
7391
+ const elemTag = elem.tagName.toLowerCase();
5476
7392
 
5477
- switch (level) {
5478
- case '2': return html$1`<h2 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h2>`;
5479
- case '3': return html$1`<h3 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h3>`;
5480
- case '4': return html$1`<h4 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h4>`;
5481
- case '5': return html$1`<h5 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h5>`;
5482
- case '6': return html$1`<h6 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h6>`;
5483
- default: return html$1`<h1 class="heading heading--${this.display} ${this.spacingDecision(this.size)}" style="color: ${ifDefined(this.color ? this.color : undefined)}"><slot></slot></h1>`;
7393
+ if (elemTag !== tag) {
7394
+ elem.setAttribute(tag, true);
5484
7395
  }
5485
7396
  }
5486
- // function that renders the HTML and CSS into the scope of the component
5487
7397
 
5488
- render() {
5489
- return this.template(this.level);
7398
+ /**
7399
+ * Validates if an element is a specific Auro component.
7400
+ * @param {Object} elem - The element to validate.
7401
+ * @param {String} tagName - The name of the Auro component to check against.
7402
+ * @returns {Boolean} - Returns true if the element is the specified Auro component.
7403
+ */
7404
+ elementMatch(elem, tagName) {
7405
+ const tag = tagName.toLowerCase();
7406
+ const elemTag = elem.tagName.toLowerCase();
7407
+
7408
+ return elemTag === tag || elem.hasAttribute(tag);
5490
7409
  }
5491
7410
  }
5492
7411
 
5493
- var headerVersion = '4.0.1';
5494
-
5495
7412
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5496
7413
  // See LICENSE in the project root for license information.
5497
7414
 
5498
7415
 
5499
- class AuroBibtemplate extends LitElement {
7416
+ /**
7417
+ * Displays help text or error messages within form elements - Internal Use Only.
7418
+ *
7419
+ * @attr { Boolean } large - If declared, make font-size to 1rem(16px).
7420
+ */
7421
+ class AuroHelpText extends LitElement {
5500
7422
 
5501
7423
  constructor() {
5502
7424
  super();
5503
7425
 
5504
- this.large = false;
5505
-
5506
- AuroLibraryRuntimeUtils.prototype.handleComponentTagRename(this, 'auro-bibtemplate');
7426
+ this.error = false;
7427
+ this.onDark = false;
7428
+ this.hasTextContent = false;
5507
7429
 
5508
- const versioning = new AuroDependencyVersioning();
5509
- this.iconTag = versioning.generateTag('auro-formkit-bibtemplate-icon', iconVersion, AuroIcon);
5510
- this.headerTag = versioning.generateTag('auro-formkit-bibtemplate-header', headerVersion, AuroHeader);
7430
+ AuroLibraryRuntimeUtils.prototype.handleComponentTagRename(this, 'auro-helptext');
5511
7431
  }
5512
7432
 
5513
7433
  static get styles() {
5514
7434
  return [
5515
- colorCss$1,
5516
- styleCss$2,
5517
- tokenCss
7435
+ colorCss,
7436
+ styleCss$1,
7437
+ tokensCss
5518
7438
  ];
5519
7439
  }
5520
7440
 
5521
7441
  // function to define props used within the scope of this component
5522
7442
  static get properties() {
5523
7443
  return {
5524
- isFullscreen: {
7444
+
7445
+ /**
7446
+ * @private
7447
+ */
7448
+ slotNodes: {
5525
7449
  type: Boolean,
5526
- reflect: true
5527
7450
  },
5528
- large: {
7451
+
7452
+ /**
7453
+ * @private
7454
+ */
7455
+ hasTextContent: {
7456
+ type: Boolean,
7457
+ },
7458
+
7459
+ /**
7460
+ * If declared, make font color red.
7461
+ */
7462
+ error: {
7463
+ type: Boolean,
7464
+ reflect: true,
7465
+ },
7466
+
7467
+ /**
7468
+ * If declared, will apply onDark styles.
7469
+ */
7470
+ onDark: {
5529
7471
  type: Boolean,
5530
7472
  reflect: true
5531
7473
  }
5532
7474
  };
5533
7475
  }
5534
7476
 
5535
- // function to define props used within the scope of this component
5536
7477
  /**
5537
7478
  * This will register this element with the browser.
5538
- * @param {string} [name="auro-bibtemplate"] - The name of element that you want to register to.
7479
+ * @param {string} [name="auro-helptext"] - The name of element that you want to register to.
5539
7480
  *
5540
7481
  * @example
5541
- * AuroCheckbox.register("custom-bibtemplate") // this will register this element to <custom-bibtemplate/>
7482
+ * AuroCheckbox.register("custom-helptext") // this will register this element to <custom-helptext/>
5542
7483
  *
5543
7484
  */
5544
- static register(name = "auro-bibtemplate") {
5545
- AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroBibtemplate);
7485
+ static register(name = "auro-helptext") {
7486
+ AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroHelpText);
5546
7487
  }
5547
7488
 
5548
- /**
5549
- * Prevents scrolling of the body when touching empty areas of the component.
5550
- * @param {Event} event - The touchmove event.
5551
- * @returns {void}
5552
- */
5553
- preventBodyScroll(event) {
5554
- if (event.target === this) {
5555
- event.preventDefault();
5556
- }
7489
+ updated() {
7490
+ this.handleSlotChange();
5557
7491
  }
5558
7492
 
5559
- connectedCallback() {
5560
- super.connectedCallback();
7493
+ handleSlotChange(event) {
7494
+ if (event) {
7495
+ this.slotNodes = event.target.assignedNodes();
7496
+ }
5561
7497
 
5562
- this.preventBodyScroll = this.preventBodyScroll.bind(this);
5563
- this.addEventListener('touchmove', this.preventBodyScroll, { passive: false });
7498
+ this.hasTextContent = this.checkSlotsForContent(this.slotNodes);
5564
7499
  }
5565
7500
 
5566
- disconnectedCallback() {
5567
- super.disconnectedCallback();
7501
+ /**
7502
+ * Checks if any of the provided nodes or their nested slot nodes contain non-empty text content.
7503
+ *
7504
+ * @param {NodeList|Array} nodes - The list of nodes to check for content.
7505
+ * @returns {boolean} - Returns true if any node or nested slot node contains non-empty text content, otherwise false.
7506
+ * @private
7507
+ */
7508
+ checkSlotsForContent(nodes) {
7509
+ if (!nodes) {
7510
+ return false;
7511
+ }
5568
7512
 
5569
- this.removeEventListener('touchmove', this.preventBodyScroll, { passive: false });
5570
- }
7513
+ return nodes.some((node) => {
7514
+ if (node.textContent.trim()) {
7515
+ return true;
7516
+ }
5571
7517
 
5572
- onCloseButtonClick() {
5573
- this.dispatchEvent(new Event("close-click", { bubbles: true,
5574
- composed: true }));
5575
- }
7518
+ if (!node.querySelector) {
7519
+ return false;
7520
+ }
5576
7521
 
5577
- /**
5578
- * Exposes CSS parts for styling from parent components.
5579
- * @returns {void}
5580
- */
5581
- exposeCssParts() {
5582
- this.setAttribute('exportparts', 'bibtemplate:dropdownBibTemplate');
7522
+ const nestedSlot = node.tagName === 'SLOT' ? node : node.querySelector('slot');
7523
+ if (!nestedSlot) {
7524
+ return false;
7525
+ }
7526
+
7527
+ const nestedSlotNodes = nestedSlot.assignedNodes();
7528
+ return this.checkSlotsForContent(nestedSlotNodes);
7529
+ });
5583
7530
  }
5584
7531
 
5585
7532
  // function that renders the HTML and CSS into the scope of the component
5586
7533
  render() {
5587
- return html`
5588
- <div id="bibTemplate" part="bibtemplate">
5589
- ${this.isFullscreen ? html`
5590
- <div id="headerContainer">
5591
- <button id="closeButton" @click="${this.onCloseButtonClick}">
5592
- <${this.iconTag} category="interface" name="x-lg"></${this.iconTag}>
5593
- </button>
5594
- <${this.headerTag} display="${this.large ? 'display' : '600'}" level="3" size="none" id="header" no-margin-block>
5595
- <slot name="header"></slot>
5596
- </${this.headerTag}>
5597
- <span id="subheader">
5598
- <slot name="subheader"></slot>
5599
- </span>
5600
- </div>` : null}
5601
-
5602
- <div id="bodyContainer">
5603
- <slot></slot>
5604
- </div>
5605
-
5606
- ${this.isFullscreen ? html`
5607
- <div id="footerContainer">
5608
- <slot name="footer"></slot>
5609
- </div>` : null}
7534
+ return html$1`
7535
+ <div class="helptext-wrapper" ?visible="${this.hasTextContent}">
7536
+ <slot @slotchange=${this.handleSlotChange}></slot>
5610
7537
  </div>
5611
- `;
7538
+ `;
5612
7539
  }
5613
7540
  }
5614
7541
 
5615
- var bibTemplateVersion = '1.0.0';
7542
+ var helpTextVersion = '1.0.0';
5616
7543
 
5617
- css`:focus:not(:focus-visible){outline:3px solid transparent}:host{display:inline-block;width:100%;margin:0;padding:0;vertical-align:middle}:host ::slotted(auro-menuoption),:host ::slotted([auro-menuoption]),:host auro-menuoption[loadingplaceholder]{padding-left:calc(var(--ds-size-150, 0.75rem) + 24px + var(--ds-size-100, 0.5rem))}:host ::slotted([selected]){padding-left:0}:host ::slotted(hr){box-sizing:content-box !important;height:0 !important;overflow:visible !important;margin:var(--ds-size-100, 0.5rem) 0 !important;border-width:0 !important;border-top-width:1px !important;border-top-style:solid !important}:host([nocheckmark]) ::slotted(auro-menuoption),:host([nocheckmark]) auro-menuoption[loadingplaceholder]{padding-left:var(--ds-size-200, 1rem)}:host([root]){overflow-y:auto}[loadingplaceholder].empty{opacity:0;position:absolute}[loadingplaceholder] slot[name=loadingIcon]{vertical-align:middle;line-height:1;display:inline-block}[loadingplaceholder] slot[name=loadingIcon]::slotted(*){margin-right:var(--ds-size-150, 0.75rem)}`;
7544
+ css`:focus:not(:focus-visible){outline:3px solid transparent}:host{display:block;vertical-align:middle}:host .wrapper{box-sizing:border-box;display:inline-block;width:100%;margin:0;padding:0}:host ::slotted(hr){box-sizing:content-box !important;height:0 !important;overflow:visible !important;margin:var(--ds-size-100, 0.5rem) 0 !important;border-width:0 !important;border-top-width:1px !important;border-top-style:solid !important}:host [loadingplaceholder].empty{opacity:0;position:absolute}:host [loadingplaceholder] slot[name=loadingIcon]{vertical-align:middle;line-height:1;display:inline-block}:host [loadingplaceholder] slot[name=loadingIcon]::slotted(*){margin-right:var(--ds-size-150, 0.75rem)}:host([root]){overflow-y:auto}:host([root]) .wrapper[class*=-lg]{padding:var(--ds-size-150, 0.75rem)}:host([root]) .wrapper[class*=-xl]{padding:var(--ds-size-200, 1rem)}`;
5618
7545
 
5619
7546
  css`:host ::slotted(hr){border-top-color:var(--ds-auro-menu-divider-color)}[loadingplaceholder] slot[name=loadingIcon]{color:var(--ds-auro-menu-loader-color)}[loadingplaceholder] slot[name=loadingText]{color:var(--ds-auro-menu-loader-text-color)}`;
5620
7547
 
5621
- css`:host{--ds-auro-menu-divider-color: var(--ds-basic-color-border-divider, rgba(0, 0, 0, 0.15));--ds-auro-menu-loader-color: var(--ds-basic-color-brand-primary, #01426a);--ds-auro-menu-loader-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-menuoption-container-color: transparent;--ds-auro-menuoption-icon-color: transparent;--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}`;
7548
+ css`:host{--ds-auro-menu-divider-color: var(--ds-basic-color-border-divider, rgba(0, 0, 0, 0.15));--ds-auro-menu-loader-color: var(--ds-basic-color-brand-primary, #01426a);--ds-auro-menu-loader-text-color: var(--ds-basic-color-texticon-default, #2a2a2a);--ds-auro-menuoption-container-color: transparent;--ds-auro-menuoption-container-border-color: var(--ds-auro-menuoption-container-color);--ds-auro-menuoption-icon-color: transparent;--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}`;
5622
7549
 
5623
7550
  // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5624
7551
  // See LICENSE in the project root for license information.
@@ -5665,9 +7592,9 @@ function arrayConverter(value) {
5665
7592
  throw new Error('Invalid value: Input must be an array or undefined');
5666
7593
  }
5667
7594
 
5668
- css`:host{display:flex;align-items:center;padding:var(--ds-size-50, 0.25rem) var(--ds-size-200, 1rem) var(--ds-size-50, 0.25rem) 0;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}:host slot{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host [auro-icon]{--ds-auro-icon-size: var(--ds-size-300, 1.5rem);margin-right:var(--ds-size-150, 0.75rem);margin-left:var(--ds-size-100, 0.5rem)}:host ::slotted(.nestingSpacer){display:inline-block;width:var(--ds-size-300, 1.5rem)}:host ::slotted(strong){font-weight:700}:host([hidden]){display:none}:host([static]){pointer-events:none}:host([disabled]:hover){cursor:auto}:host([disabled]){user-select:none;pointer-events:none}`;
7595
+ css`:host{cursor:pointer;user-select:none}:host .wrapper{display:flex;align-items:center;padding-right:var(--ds-size-200, 1rem);padding-left:calc(var(--ds-size-150, 0.75rem) + 24px + var(--ds-size-100, 0.5rem));padding-top:var(--ds-size-50, 0.25rem);padding-bottom:var(--ds-size-50, 0.25rem);-webkit-tap-highlight-color:transparent}:host .wrapper[class*=shape-box],:host .wrapper[class*=shape-snowflake]{border-radius:unset}:host .wrapper[class*=shape-pill]{border-radius:30px}:host .wrapper[class*=-lg]{font-size:var(--ds-text-body-size-lg, 1.125rem);line-height:var(--ds-text-body-height-lg, 1.625rem);padding-top:var(--ds-size-75, 0.375rem);padding-bottom:var(--ds-size-75, 0.375rem);padding-right:var(--ds-size-150, 0.75rem)}:host .wrapper[class*=-lg]:not(:last-child){margin-bottom:var(--ds-size-50, 0.25rem)}:host .wrapper[class*=-xl]{font-size:var(--ds-text-body-size-lg, 1.125rem);line-height:var(--ds-text-body-height-lg, 1.625rem);padding-top:var(--ds-size-100, 0.5rem);padding-bottom:var(--ds-size-100, 0.5rem);padding-right:var(--ds-size-200, 1rem)}:host .wrapper[class*=-xl]:not(:last-child){margin-bottom:var(--ds-size-100, 0.5rem)}:host slot{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}:host [auro-icon]{--ds-auro-icon-size: var(--ds-size-300, 1.5rem);margin-right:var(--ds-size-150, 0.75rem);margin-left:var(--ds-size-100, 0.5rem)}:host ::slotted(.nestingSpacer){display:inline-block;width:var(--ds-size-300, 1.5rem)}:host ::slotted(strong){font-weight:700}:host([loadingplaceholder]) .wrapper{padding-left:calc(var(--ds-size-150, 0.75rem) + 24px + var(--ds-size-100, 0.5rem))}:host([selected]) .wrapper{padding-left:0}:host([nocheckmark]) .wrapper{padding-left:var(--ds-size-150, 0.75rem)}:host([nocheckmark]) .wrapper[class*=-lg]{padding-left:var(--ds-size-150, 0.75rem)}:host([nocheckmark]) .wrapper[class*=-xl]{padding-left:var(--ds-size-200, 1rem)}:host([hidden]){display:none}:host([static]){pointer-events:none}:host([disabled]:hover){cursor:auto}:host([disabled]){user-select:none;pointer-events:none}`;
5669
7596
 
5670
- css`:host{background-color:var(--ds-auro-menuoption-container-color);color:var(--ds-auro-menuoption-text-color)}:host svg{fill:var(--ds-auro-menuoption-icon-color)}:host([disabled]){--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:hover),:host(.active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-neutral-subtle, #f7f7f7)}:host([selected]){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([selected]):host(:hover),:host([selected]):host(.active){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected-hover, #00274a)}`;
7597
+ css`:host .wrapper{border:1px solid var(--ds-auro-menuoption-container-border-color);background-color:var(--ds-auro-menuoption-container-color);color:var(--ds-auro-menuoption-text-color)}:host svg{fill:var(--ds-auro-menuoption-icon-color)}:host([disabled]){--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host(:hover),:host(.active){--ds-auro-menuoption-container-color: var(--ds-basic-color-surface-neutral-subtle, #f7f7f7)}:host([selected]){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-menuoption-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-menuoption-icon-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([selected]):host(:hover),:host([selected]):host(.active){--ds-auro-menuoption-container-color: var(--ds-advanced-color-state-selected-hover, #00274a)}`;
5671
7598
 
5672
7599
  css`:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock,:host{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host([hidden]:not(:focus):not(:active)){display:none}.util_displayHiddenVisually,:host([hiddenVisually]:not(:focus):not(:active)){position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.ico_squareLarge{fill:currentColor;height:var(--auro-size-lg, var(--ds-size-300, 1.5rem))}.ico_squareSmall{fill:currentColor;height:.6rem}.ico_squareMed{fill:currentColor;height:var(--auro-size-md, var(--ds-size-200, 1rem))}.ico_squareSml{fill:currentColor;height:var(--auro-size-sm, var(--ds-size-150, 0.75rem))}:host{color:currentColor;vertical-align:middle;line-height:1;display:inline-block}svg{min-width:var(--ds-auro-icon-size, 1.5rem) !important;width:var(--ds-auro-icon-size, 1.5rem) !important;height:var(--ds-auro-icon-size, 1.5rem) !important}.componentWrapper{display:flex}.svgWrapper{height:var(--ds-auro-icon-size);width:var(--ds-auro-icon-size)}.labelWrapper{margin-left:var(--ds-size-50, 0.25rem);line-height:1.8}`;
5673
7600
 
@@ -5675,7 +7602,7 @@ css`:host{--ds-auro-icon-color:var(--ds-basic-color-texticon-default, #2a2a2a);-
5675
7602
 
5676
7603
  css`: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)}`;
5677
7604
 
5678
- var styleCss = css`:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}[slot=trigger]{width:100%;padding:0;border:0;cursor:pointer;font-family:inherit;font-size:inherit;text-align:left}[slot=trigger] .nestingSpacer{display:none}[slot=trigger] #placeholder.hidden{position:absolute;z-index:-1;opacity:0;pointer-events:none}:host .nativeSelectWrapper{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip:rect(0, 0, 0, 0);opacity:.01}:host [auro-dropdown]{position:relative}:host [auro-dropdown]::part(trigger){max-height:var(--ds-size-300, 1.5rem)}:host [auro-dropdown]::part(popover){max-width:-webkit-fill-available;overflow-y:scroll}:host([disabled]) *{user-select:none}.outerWrapper{position:relative}auro-menuoption{padding:0;pointer-events:none}.menuWrapper{padding:var(--ds-size-50, 0.25rem) 0}:host([multiselect]) [slot=trigger]{display:flex}:host([multiselect]) auro-menuoption:not(:first-child){margin-left:var(--ds-size-100)}#slotHolder{display:none}`;
7605
+ var styleCss = css`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color)}.mainContent{position:relative;display:flex;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:8px}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent,:host([layout*=snowflake]) .triggerContent{padding:0 8px 0 24px}:host([layout*=classic]) .triggerContent{padding:0 8px}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{cursor:text;font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}:host([layout*=classic]) label.withValue{font-size:12px;font-weight:450;letter-spacing:0;line-height:16px}:host([layout*=classic]) .value{height:auto;font-size:16px;font-weight:450;letter-spacing:0;line-height:24px}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error-subtle, #fbc6c6);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([disabled]) *{user-select:none}`;
5679
7606
 
5680
7607
  // Copyright (c) 2021 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
5681
7608
  // See LICENSE in the project root for license information.
@@ -5688,16 +7615,19 @@ var styleCss = css`:focus:not(:focus-visible){outline:3px solid transparent}.uti
5688
7615
  * @slot - Default slot for the menu content.
5689
7616
  * @slot bib.fullscreen.headline - Defines the headline to display above menu-options
5690
7617
  * @slot label - Defines the content of the label.
7618
+ * @slot {HTMLSlotElement} optionalLabel - Allows overriding the optional display text "(optional)", which appears next to the label.
5691
7619
  * @slot helpText - Defines the content of the helpText.
5692
7620
  * @slot placeholder - Defines the content of the placeholder to be shown when there is no value
7621
+ * @slot valueText - Dropdown value text display.
7622
+ * @slot displayValue - Allows custom HTML content to display the selected value when select is not focused.
5693
7623
  * @event auroSelect-valueSet - Notifies that the component has a new value set.
5694
- * @event input - Notifies every time the value prop of the element is changed.
7624
+ * @event input - Notifies every time the value prop of the element is changed. The updated `value` and `optionSelected` will be delivered in `detail` object.
5695
7625
  * @event auroFormElement-validated - Notifies that the `validity` and `errorMessage` values have changed.
5696
7626
  * @csspart helpText - Apply CSS to the help text.
5697
7627
  */
5698
7628
 
5699
7629
  // build the component class
5700
- class AuroSelect extends LitElement {
7630
+ class AuroSelect extends AuroElement$3 {
5701
7631
  constructor() {
5702
7632
  super();
5703
7633
 
@@ -5707,12 +7637,25 @@ class AuroSelect extends LitElement {
5707
7637
  const idSubstrEnd = 8;
5708
7638
  const idSubstrStart = 2;
5709
7639
 
7640
+ this.matchWidth = false;
7641
+
7642
+ // Layout Config
7643
+ this.layout = 'snowflake';
7644
+ this.shape = 'snowflake';
7645
+ this.size = 'xl';
7646
+
5710
7647
  // floaterConfig
5711
7648
  this.placement = 'bottom-start';
5712
7649
  this.offset = 0;
5713
7650
  this.noFlip = false;
5714
7651
  this.autoPlacement = false;
5715
7652
 
7653
+ this.forceDisplayValue = false;
7654
+
7655
+ this.layout = 'classic';
7656
+ this.shape = 'classic';
7657
+ this.size = 'xl';
7658
+
5716
7659
  /**
5717
7660
  * @private
5718
7661
  */
@@ -5728,7 +7671,7 @@ class AuroSelect extends LitElement {
5728
7671
  /**
5729
7672
  * @private
5730
7673
  */
5731
- this.runtimeUtils = new AuroLibraryRuntimeUtils$3();
7674
+ this.runtimeUtils = new AuroLibraryRuntimeUtils$6();
5732
7675
 
5733
7676
  /**
5734
7677
  * Generate unique names for dependency components.
@@ -5745,10 +7688,25 @@ class AuroSelect extends LitElement {
5745
7688
  */
5746
7689
  this.bibtemplateTag = versioning.generateTag('auro-formkit-select-bibtemplate', bibTemplateVersion, AuroBibtemplate);
5747
7690
 
7691
+ /**
7692
+ * @private
7693
+ */
7694
+ this.helpTextTag = versioning.generateTag('auro-formkit-input-helptext', helpTextVersion, AuroHelpText);
7695
+
5748
7696
  /**
5749
7697
  * @private
5750
7698
  */
5751
7699
  this.isHiddenWhileLoading = false;
7700
+
7701
+ /**
7702
+ * @private
7703
+ */
7704
+ this.hasFocus = false;
7705
+
7706
+ /**
7707
+ * @private
7708
+ */
7709
+ this.hasDisplayValueContent = false;
5752
7710
  }
5753
7711
 
5754
7712
  /**
@@ -5762,6 +7720,7 @@ class AuroSelect extends LitElement {
5762
7720
  this.value = undefined;
5763
7721
  this.fullscreenBreakpoint = 'sm';
5764
7722
  this.onDark = false;
7723
+ this.isPopoverVisible = false;
5765
7724
  }
5766
7725
 
5767
7726
  // This function is to define props used within the scope of this component
@@ -5778,6 +7737,14 @@ class AuroSelect extends LitElement {
5778
7737
  reflect: true
5779
7738
  },
5780
7739
 
7740
+ /**
7741
+ * If declared, the label and value will be visually hidden and the displayValue will render 100% of the time.
7742
+ */
7743
+ forceDisplayValue: {
7744
+ type: Boolean,
7745
+ reflect: true
7746
+ },
7747
+
5781
7748
  /**
5782
7749
  * If declared, bib's position will be automatically calculated where to appear.
5783
7750
  * @default false
@@ -5796,21 +7763,29 @@ class AuroSelect extends LitElement {
5796
7763
  },
5797
7764
 
5798
7765
  /**
5799
- * The name for the select element.
7766
+ * @private
5800
7767
  */
5801
- name: {
5802
- type: String,
5803
- reflect: true
7768
+ isPopoverVisible: {
7769
+ type: Boolean,
7770
+ reflect: false
5804
7771
  },
5805
7772
 
5806
7773
  /**
5807
- * If set, makes dropdown width match the size of the content, rather than the width of the trigger.
7774
+ * If declared, the popover and trigger will be set to the same width.
5808
7775
  */
5809
- flexMenuWidth: {
7776
+ matchWidth: {
5810
7777
  type: Boolean,
5811
7778
  reflect: true
5812
7779
  },
5813
7780
 
7781
+ /**
7782
+ * The name for the select element.
7783
+ */
7784
+ name: {
7785
+ type: String,
7786
+ reflect: true
7787
+ },
7788
+
5814
7789
  /**
5815
7790
  * Defines the screen size breakpoint (`xs`, `sm`, `md`, `lg`, `xl`, `disabled`)
5816
7791
  * at which the dropdown switches to fullscreen mode on mobile. `disabled` indicates a dropdown should _never_ enter fullscreen.
@@ -5904,7 +7879,7 @@ class AuroSelect extends LitElement {
5904
7879
  * "top" | "right" | "bottom" | "left" |
5905
7880
  * "bottom-start" | "top-start" | "top-end" |
5906
7881
  * "right-start" | "right-end" | "bottom-end" |
5907
- * "left-start" | "left-end"
7882
+ * "left-start" | "left-end".
5908
7883
  * @default bottom-start
5909
7884
  */
5910
7885
  placement: {
@@ -5984,12 +7959,58 @@ class AuroSelect extends LitElement {
5984
7959
  type: Boolean,
5985
7960
  reflect: true,
5986
7961
  attribute: false
5987
- }
7962
+ },
7963
+
7964
+ /**
7965
+ * @private
7966
+ */
7967
+ hasFocus: {
7968
+ type: Boolean,
7969
+ reflect: false,
7970
+ attribute: false
7971
+ },
7972
+
7973
+ /**
7974
+ * @private
7975
+ */
7976
+ hasDisplayValueContent: {
7977
+ type: Boolean,
7978
+ reflect: false,
7979
+ attribute: false
7980
+ },
7981
+ };
7982
+ }
7983
+
7984
+ static get styles() {
7985
+ return [
7986
+ css`${shapeSizeCss$1}`,
7987
+ css`${tokensCss$5}`,
7988
+ css`${styleCss}`,
7989
+ ];
7990
+ }
7991
+
7992
+ /**
7993
+ * Returns classmap configuration for html5 input labels in all layouts.
7994
+ * @private
7995
+ * @returns {void}
7996
+ */
7997
+ get commonLabelClasses() {
7998
+ return {
7999
+ 'is-disabled': this.disabled,
8000
+ 'withValue': this.value && this.value.length > 0,
8001
+ 'util_displayHiddenVisually': this.hasDisplayValueContent && !this.hasFocus && this.value && this.value.length > 0
5988
8002
  };
5989
8003
  }
5990
8004
 
5991
- static get styles() {
5992
- return [styleCss];
8005
+ /**
8006
+ * Returns classmap configuration for wrapper elements in each layout.
8007
+ * @private
8008
+ * @returns {object} - Returns classmap.
8009
+ */
8010
+ get commonWrapperClasses() {
8011
+ return {
8012
+ 'wrapper': true
8013
+ };
5993
8014
  }
5994
8015
 
5995
8016
  /**
@@ -5999,11 +8020,28 @@ class AuroSelect extends LitElement {
5999
8020
  */
6000
8021
  configureDropdown() {
6001
8022
  this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
6002
- this.menuWrapper = this.dropdown.querySelector('.menuWrapper');
8023
+
8024
+ this.dropdown.addEventListener('auroDropdown-toggled', () => {
8025
+ this.isPopoverVisible = this.dropdown.isPopoverVisible;
8026
+
8027
+ if (this.dropdown.isPopoverVisible) {
8028
+ // wait til the bib gets fully rendered
8029
+ setTimeout(() => {
8030
+ if (this.dropdown.isBibFullscreen) {
8031
+ // trigger holds the focus since menu is not a focusable element.
8032
+ this.dropdown.trigger.focus();
8033
+
8034
+ // default focus indicator on the first menu option
8035
+ if (this.menu.index < 0) {
8036
+ this.menu.navigateOptions('down');
8037
+ }
8038
+ }
8039
+ });
8040
+ }
8041
+ });
6003
8042
 
6004
8043
  // setting up bibtemplate
6005
- this.bibtemplate = this.dropdown.querySelector(this.bibtemplateTag._$litStatic$); // eslint-disable-line no-underscore-dangle
6006
- this.bibtemplate.append(this.menuWrapper);
8044
+ this.bibtemplate = this.dropdown.querySelector(this.bibtemplateTag._$litStatic$);
6007
8045
 
6008
8046
  if (this.customBibWidth) {
6009
8047
  this.dropdown.dropdownWidth = this.customBibWidth;
@@ -6022,7 +8060,7 @@ class AuroSelect extends LitElement {
6022
8060
  *
6023
8061
  */
6024
8062
  static register(name = "auro-select") {
6025
- AuroLibraryRuntimeUtils$3.prototype.registerComponent(name, AuroSelect);
8063
+ AuroLibraryRuntimeUtils$6.prototype.registerComponent(name, AuroSelect);
6026
8064
  }
6027
8065
 
6028
8066
  /**
@@ -6033,27 +8071,34 @@ class AuroSelect extends LitElement {
6033
8071
  updateDisplayedValue() {
6034
8072
  const triggerContentEl = this.dropdown.querySelector('#triggerFocus');
6035
8073
 
6036
- // Clear everything except placeholder
6037
- const placeholder = triggerContentEl.querySelector('#placeholder');
6038
- triggerContentEl.innerHTML = '';
6039
- if (placeholder) {
6040
- triggerContentEl.appendChild(placeholder);
8074
+ // Clear out old value
8075
+ const valueElem = triggerContentEl.querySelector('#value');
8076
+ if (valueElem) {
8077
+ valueElem.innerHTML = '';
6041
8078
  }
6042
8079
 
8080
+ const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
8081
+ const slottedElements = slot.assignedElements();
8082
+
8083
+ slottedElements.forEach((element) => {
8084
+ element.remove();
8085
+ });
8086
+
6043
8087
  // Handle selected options
6044
8088
  if (this.optionSelected) {
6045
- let displayText = '';
6046
-
6047
8089
  if (this.multiSelect && this.optionSelected.length > 0) {
6048
- // Create display text from selected options
6049
- displayText = this.optionSelected.map((option) => option.textContent).join(', ');
8090
+ const displayText = this.optionSelected.map((option) => option.textContent).join(', ');
8091
+
8092
+ valueElem.textContent = displayText;
6050
8093
  } else {
6051
- displayText = this.optionSelected.textContent;
6052
- }
8094
+ valueElem.innerHTML = this.optionSelected.innerHTML;
8095
+ const displayValueEl = this.optionSelected.querySelector("[slot='displayValue']");
6053
8096
 
6054
- const span = document.createElement('span');
6055
- span.textContent = displayText;
6056
- triggerContentEl.appendChild(span);
8097
+ if (displayValueEl) {
8098
+ this.appendChild(displayValueEl.cloneNode(true));
8099
+ }
8100
+ this.hasDisplayValueContent = displayValueEl !== null;
8101
+ }
6057
8102
  }
6058
8103
 
6059
8104
  this.dropdown.requestUpdate();
@@ -6075,6 +8120,15 @@ class AuroSelect extends LitElement {
6075
8120
  return;
6076
8121
  }
6077
8122
 
8123
+ // set menu's default size if there it's not specified.
8124
+ if (!this.menu.getAttribute('size')) {
8125
+ this.menu.setAttribute('size', this.layout !== 'emphasized' ? 'md' : this.size);
8126
+ }
8127
+
8128
+ if (!this.getAttribute('shape')) {
8129
+ this.menu.setAttribute('shape', this.layout === 'classic' ? 'box' : this.shape);
8130
+ }
8131
+
6078
8132
  if (this.multiSelect) {
6079
8133
  this.menu.multiSelect = this.multiSelect;
6080
8134
  }
@@ -6132,50 +8186,60 @@ class AuroSelect extends LitElement {
6132
8186
  * @returns {void}
6133
8187
  */
6134
8188
  configureSelect() {
6135
- // inject menu into menuWrapper
6136
- this.menuWrapper.append(this.menu);
6137
8189
 
6138
8190
  this.addEventListener('keydown', (evt) => {
6139
- if (evt.key === 'ArrowUp') {
6140
- evt.preventDefault();
8191
+ // when the focus is on trigger not on close button
8192
+ if (this.dropdown.shadowRoot.activeElement === this.dropdown.trigger) {
8193
+ if (evt.key === 'ArrowUp') {
8194
+ evt.preventDefault();
6141
8195
 
6142
- this.dropdown.show();
8196
+ this.dropdown.show();
6143
8197
 
6144
- if (this.dropdown.isPopoverVisible) {
6145
- this.menu.navigateOptions('up');
8198
+ if (this.dropdown.isPopoverVisible) {
8199
+ this.menu.navigateOptions('up');
8200
+ }
8201
+
8202
+ return;
6146
8203
  }
6147
8204
 
6148
- return;
6149
- }
8205
+ if (evt.key === 'ArrowDown') {
8206
+ evt.preventDefault();
6150
8207
 
6151
- if (evt.key === 'ArrowDown') {
6152
- evt.preventDefault();
8208
+ this.dropdown.show();
6153
8209
 
6154
- this.dropdown.show();
8210
+ if (this.dropdown.isPopoverVisible) {
8211
+ this.menu.navigateOptions('down');
8212
+ }
6155
8213
 
6156
- if (this.dropdown.isPopoverVisible) {
6157
- this.menu.navigateOptions('down');
8214
+ return;
6158
8215
  }
6159
8216
 
6160
- return;
6161
- }
8217
+ if (evt.key === 'Enter') {
8218
+ if (!this.dropdown.isPopoverVisible) {
8219
+ evt.preventDefault();
8220
+ this.menu.makeSelection();
8221
+ }
6162
8222
 
6163
- if (evt.key === 'Enter') {
6164
- if (!this.dropdown.isPopoverVisible) {
6165
- evt.preventDefault();
6166
- this.menu.makeSelection();
8223
+ return;
6167
8224
  }
6168
-
6169
- return;
6170
8225
  }
6171
8226
 
6172
- if (evt.key === 'Tab') {
8227
+ if (evt.key === 'Tab' && this.dropdown.isPopoverVisible) {
6173
8228
  if (this.dropdown.isBibFullscreen) {
6174
8229
  evt.preventDefault();
8230
+
8231
+ // when the focus is on trigger not on close button
8232
+ if (this.dropdown.shadowRoot.activeElement === this.dropdown.trigger) {
8233
+ // `dropdown.focus` will move focus to the first focusable element in bib when it's open,
8234
+ // when bib it not open, it will focus onto trigger.
8235
+ this.dropdown.focus();
8236
+ } else {
8237
+ // when close button has the focus, move focus back to the trigger
8238
+ this.dropdown.trigger.focus();
8239
+ }
6175
8240
  } else {
6176
8241
  this.dropdown.hide();
6177
8242
  }
6178
-
6179
8243
  return;
6180
8244
  }
6181
8245
 
@@ -6187,6 +8251,7 @@ class AuroSelect extends LitElement {
6187
8251
 
6188
8252
  this.addEventListener('blur', () => {
6189
8253
  this.validation.validate(this);
8254
+ this.hasFocus = false;
6190
8255
  });
6191
8256
  }
6192
8257
 
@@ -6262,6 +8327,7 @@ class AuroSelect extends LitElement {
6262
8327
  */
6263
8328
  handleFocusin() {
6264
8329
 
8330
+ this.hasFocus = true;
6265
8331
  this.touched = true;
6266
8332
  }
6267
8333
 
@@ -6338,17 +8404,32 @@ class AuroSelect extends LitElement {
6338
8404
  // Add the tag name as an attribute if it is different than the component name
6339
8405
  this.runtimeUtils.handleComponentTagRename(this, 'auro-select');
6340
8406
 
6341
- this.configureMenu();
6342
8407
  this.configureDropdown();
8408
+ this.configureMenu();
6343
8409
  this.configureSelect();
6344
8410
 
6345
8411
  // Set the initial value in auro-menu if defined
6346
8412
  if (this.hasAttribute('value') && this.getAttribute('value').length > 0) {
6347
8413
  this.value = this.multiSelect ? arrayConverter(this.getAttribute('value')) : this.getAttribute('value');
6348
- this.menu.value = this.value;
8414
+ if (this.menu) {
8415
+ this.menu.value = this.value;
8416
+ }
6349
8417
  }
6350
8418
  }
6351
8419
 
8420
+ /**
8421
+ * Update the menu value. With checks for menu existence. Awaits value update.
8422
+ * @param {string} value - The value to set in the menu.
8423
+ * @returns void
8424
+ * @private
8425
+ */
8426
+ async updateMenuValue(value) {
8427
+ if (!this.menu) return;
8428
+
8429
+ this.menu.value = value;
8430
+ await this.menu.updateComplete;
8431
+ }
8432
+
6352
8433
  async updated(changedProperties) {
6353
8434
  if (changedProperties.has('multiSelect')) {
6354
8435
  this.clearSelection();
@@ -6358,14 +8439,13 @@ class AuroSelect extends LitElement {
6358
8439
  if (this.value) {
6359
8440
  this.value = this.multiSelect ? arrayConverter(this.value) : this.value;
6360
8441
 
6361
- this.menu.value = this.value;
6362
-
6363
- // Wait for menu to finish updating its value
6364
- await this.menu.updateComplete;
8442
+ await this.updateMenuValue(this.value);
6365
8443
 
6366
- this.optionSelected = this.menu.optionSelected;
8444
+ if (this.menu) {
8445
+ this.optionSelected = this.menu.optionSelected;
8446
+ }
6367
8447
  } else {
6368
- this.menu.value = undefined;
8448
+ await this.updateMenuValue(undefined);
6369
8449
  }
6370
8450
 
6371
8451
  this._updateNativeSelect();
@@ -6382,6 +8462,10 @@ class AuroSelect extends LitElement {
6382
8462
  bubbles: true,
6383
8463
  cancelable: true,
6384
8464
  composed: true,
8465
+ detail: {
8466
+ optionSelected: this.optionSelected,
8467
+ value: this.value
8468
+ }
6385
8469
  }));
6386
8470
  }
6387
8471
 
@@ -6392,6 +8476,14 @@ class AuroSelect extends LitElement {
6392
8476
  if (changedProperties.has('error')) {
6393
8477
  this.validate(true);
6394
8478
  }
8479
+
8480
+ if (changedProperties.has('shape') && this.menu) {
8481
+ this.menu.setAttribute('shape', this.layout === 'classic' ? 'box' : this.shape);
8482
+ }
8483
+
8484
+ if (changedProperties.has('size') && this.menu) {
8485
+ this.menu.setAttribute('size', this.layout !== 'emphasized' ? 'md' : this.size);
8486
+ }
6395
8487
  }
6396
8488
 
6397
8489
  /**
@@ -6466,11 +8558,358 @@ class AuroSelect extends LitElement {
6466
8558
  }
6467
8559
  }
6468
8560
 
8561
+ renderAriaHtml() {
8562
+ return html`
8563
+ <div aria-live="polite" class="util_displayHiddenVisually">
8564
+ ${this.optionActive && this.options.length > 0
8565
+ ? html`
8566
+ ${`${this.optionActive.innerText}, option ${this.options.indexOf(this.optionActive) + 1} of ${this.options.length}`}
8567
+ `
8568
+ : undefined
8569
+ };
8570
+
8571
+ ${this.optionSelected && this.options.length > 0
8572
+ ? html`
8573
+ ${`${this.optionSelected.innerText} selected`}
8574
+ `
8575
+ : undefined
8576
+ };
8577
+ </div>
8578
+ `;
8579
+ }
8580
+
8581
+ renderNativeSelect() {
8582
+ return html`
8583
+ <div class="nativeSelectWrapper util_displayHidden">
8584
+ <select
8585
+ tabindex="-1"
8586
+ id="${`native-select-${this.id || this.uniqueId}`}"
8587
+ name="${this.name || ''}"
8588
+ ?disabled="${this.disabled}"
8589
+ ?required="${this.required}"
8590
+ aria-hidden="true"
8591
+ autocomplete="${ifDefined$1(this.autocomplete)}"
8592
+ @change="${this._handleNativeSelectChange}">
8593
+ <option value="" ?selected="${!this.value}"></option>
8594
+ ${this.options.map((option) => {
8595
+ const optionValue = option.value || option.textContent;
8596
+ return html`
8597
+ <option
8598
+ value="${optionValue}"
8599
+ ?selected="${this.value === optionValue}">
8600
+ ${option.textContent}
8601
+ </option>
8602
+ `;
8603
+ })}
8604
+ </select>
8605
+ </div>
8606
+ `;
8607
+ }
8608
+
8609
+ /**
8610
+ * Returns HTML for the help text and error message.
8611
+ * @private
8612
+ * @returns {html} - Returns HTML for the help text and error message.
8613
+ */
8614
+ renderHtmlHelpText() {
8615
+ return html`
8616
+ ${!this.validity || this.validity === undefined || this.validity === 'valid'
8617
+ ? html`
8618
+ <${this.helpTextTag} ?onDark="${this.onDark}">
8619
+ <p id="${this.uniqueId}" part="helpText">
8620
+ <slot name="helpText"></slot>
8621
+ </p>
8622
+ </${this.helpTextTag}>
8623
+ `
8624
+ : html`
8625
+ <${this.helpTextTag} error ?onDark="${this.onDark}">
8626
+ <p id="${this.uniqueId}" role="alert" aria-live="assertive" part="helpText">
8627
+ ERROR MESSAGE ${this.errorMessage}
8628
+ </p>
8629
+ </${this.helpTextTag}>
8630
+ `
8631
+ }
8632
+ `;
8633
+ }
8634
+
8635
+ /**
8636
+ * Returns HTML for the emphasized layout.
8637
+ * @private
8638
+ * @returns {import("lit").TemplateResult} - Returns HTML for the emphasized layout.
8639
+ */
8640
+ renderLayoutEmphasized() {
8641
+ const placeholderClass = {
8642
+ hidden: this.value,
8643
+ };
8644
+
8645
+ const displayValueClasses = {
8646
+ 'displayValue': true,
8647
+ 'hasContent': this.hasDisplayValueContent,
8648
+ 'hasFocus': this.isPopoverVisible,
8649
+ 'withValue': this.value && this.value.length > 0,
8650
+ 'force': this.forceDisplayValue,
8651
+ };
8652
+
8653
+ const valueContainerClasses = {
8654
+ 'valueContainer': true,
8655
+ 'util_displayHiddenVisually': (this.forceDisplayValue || !(this.dropdown && this.dropdown.isPopoverVisible)) && this.hasDisplayValueContent
8656
+ };
8657
+
8658
+ return html`
8659
+ <div
8660
+ class="${classMap(this.commonWrapperClasses)}"
8661
+ part="wrapper">
8662
+ <div id="slotHolder" aria-hidden="true">
8663
+ <slot name="bib.fullscreen.headline" @slotchange="${this.handleSlotChange}"></slot>
8664
+ </div>
8665
+ <${this.dropdownTag}
8666
+ a11yRole="select"
8667
+ ?autoPlacement="${this.autoPlacement}"
8668
+ ?error="${this.validity !== undefined && this.validity !== 'valid'}"
8669
+ ?matchWidth="${this.matchWidth}"
8670
+ ?noFlip="${this.noFlip}"
8671
+ ?onDark="${this.onDark}"
8672
+ .fullscreenBreakpoint="${this.fullscreenBreakpoint}"
8673
+ .offset="${this.offset}"
8674
+ .placement="${this.placement}"
8675
+ chevron
8676
+ fluid
8677
+ for="selectMenu"
8678
+ layout="${this.layout}"
8679
+ part="dropdown"
8680
+ shape="${this.shape}"
8681
+ size="${this.size}">
8682
+ <div slot="trigger" aria-haspopup="true" id="triggerFocus" class="triggerContent">
8683
+ <div class="accents left">
8684
+ <slot name="typeIcon"></slot>
8685
+ </div>
8686
+ <div class="mainContent">
8687
+ <div class="${classMap(valueContainerClasses)}">
8688
+ <label class="${classMap(this.commonLabelClasses)}">
8689
+ <slot name="label"></slot>
8690
+ ${this.required ? undefined : html`<slot name="optionalLabel"> (optional)</slot>`}
8691
+ </label>
8692
+ <div class="value" id="value"></div>
8693
+ ${this.value ? undefined : html`
8694
+ <div id="placeholder" class="${classMap(placeholderClass)}">
8695
+ <slot name="placeholder"></slot>
8696
+ </div>
8697
+ `}
8698
+ </div>
8699
+ <div class="${classMap(displayValueClasses)}" aria-hidden="true" part="displayValue">
8700
+ <slot name="displayValue"></slot>
8701
+ </div>
8702
+ </div>
8703
+ <div class="accents right"></div>
8704
+ </div>
8705
+ <div class="menuWrapper"></div>
8706
+ <${this.bibtemplateTag} ?large="${this.largeFullscreenHeadline}" @close-click="${this.hideBib}">
8707
+ <slot></slot>
8708
+ </${this.bibtemplateTag}>
8709
+ <div slot="helpText">
8710
+ ${this.renderHtmlHelpText()}
8711
+ </div>
8712
+ </${this.dropdownTag}>
8713
+ </div>
8714
+ `;
8715
+ }
8716
+
8717
+ /**
8718
+ * Returns HTML for the snowflake layout.
8719
+ * @private
8720
+ * @returns {import("lit").TemplateResult} - Returns HTML for the snowflake layout.
8721
+ */
8722
+ renderLayoutSnowflake() {
8723
+ const placeholderClass = {
8724
+ hidden: this.value,
8725
+ };
8726
+
8727
+ const displayValueClasses = {
8728
+ 'displayValue': true,
8729
+ 'hasContent': this.hasDisplayValueContent,
8730
+ 'hasFocus': this.isPopoverVisible,
8731
+ 'withValue': this.value && this.value.length > 0,
8732
+ 'force': this.forceDisplayValue,
8733
+ };
8734
+
8735
+ const valueContainerClasses = {
8736
+ 'valueContainer': true,
8737
+ 'util_displayHiddenVisually': (this.forceDisplayValue || !(this.dropdown && this.dropdown.isPopoverVisible)) && this.hasDisplayValueContent
8738
+ };
8739
+
8740
+ return html`
8741
+ <div
8742
+ class="${classMap(this.commonWrapperClasses)}"
8743
+ part="wrapper">
8744
+ <div id="slotHolder" aria-hidden="true">
8745
+ <slot name="bib.fullscreen.headline" @slotchange="${this.handleSlotChange}"></slot>
8746
+ </div>
8747
+ <${this.dropdownTag}
8748
+ ?autoPlacement="${this.autoPlacement}"
8749
+ ?error="${this.validity !== undefined && this.validity !== 'valid'}"
8750
+ ?matchWidth="${this.matchWidth}"
8751
+ ?noFlip="${this.noFlip}"
8752
+ ?onDark="${this.onDark}"
8753
+ .fullscreenBreakpoint="${this.fullscreenBreakpoint}"
8754
+ .offset="${this.offset}"
8755
+ .placement="${this.placement}"
8756
+ chevron
8757
+ fluid
8758
+ for="selectMenu"
8759
+ layout="${this.layout}"
8760
+ part="dropdown"
8761
+ shape="${this.shape}"
8762
+ size="${this.size}">
8763
+ <div slot="trigger" aria-haspopup="true" id="triggerFocus" class="triggerContent">
8764
+ <div class="accents left">
8765
+ <slot name="typeIcon"></slot>
8766
+ </div>
8767
+ <div class="mainContent">
8768
+ <div class="${classMap(valueContainerClasses)}">
8769
+ <label class="${classMap(this.commonLabelClasses)}">
8770
+ <slot name="label"></slot>
8771
+ ${this.required ? undefined : html`<slot name="optionalLabel"> (optional)</slot>`}
8772
+ </label>
8773
+ <div class="value" id="value"></div>
8774
+ ${this.value ? undefined : html`
8775
+ <div id="placeholder" class="${classMap(placeholderClass)}">
8776
+ <slot name="placeholder"></slot>
8777
+ </div>
8778
+ `}
8779
+ </div>
8780
+ <div class="${classMap(displayValueClasses)}" aria-hidden="true" part="displayValue">
8781
+ <slot name="displayValue"></slot>
8782
+ </div>
8783
+ </div>
8784
+ <div class="accents right"></div>
8785
+ </div>
8786
+ <div class="menuWrapper"></div>
8787
+ <${this.bibtemplateTag} ?large="${this.largeFullscreenHeadline}" @close-click="${this.hideBib}">
8788
+ <slot></slot>
8789
+ </${this.bibtemplateTag}>
8790
+ <div slot="helpText">
8791
+ ${this.renderHtmlHelpText()}
8792
+ </div>
8793
+ </${this.dropdownTag}>
8794
+ ${this.renderNativeSelect()}
8795
+ </div>
8796
+ `;
8797
+ }
8798
+
8799
+ /**
8800
+ * Returns HTML for the classic layout.
8801
+ * @private
8802
+ * @returns {import("lit").TemplateResult} - Returns HTML for the classic layout.
8803
+ */
8804
+ renderLayoutClassic() {
8805
+ const placeholderClass = {
8806
+ hidden: this.value,
8807
+ };
8808
+
8809
+ const displayValueClasses = {
8810
+ 'displayValue': true,
8811
+ 'hasContent': this.hasDisplayValueContent,
8812
+ 'hasFocus': this.isPopoverVisible,
8813
+ 'withValue': this.value && this.value.length > 0,
8814
+ 'force': this.forceDisplayValue,
8815
+ };
8816
+
8817
+ const valueContainerClasses = {
8818
+ 'valueContainer': true,
8819
+ 'util_displayHiddenVisually': (this.forceDisplayValue || !(this.dropdown && this.dropdown.isPopoverVisible)) && this.hasDisplayValueContent
8820
+ };
8821
+
8822
+ return html`
8823
+ <div
8824
+ class="${classMap(this.commonWrapperClasses)}"
8825
+ part="wrapper">
8826
+ <div id="slotHolder" aria-hidden="true">
8827
+ <slot name="bib.fullscreen.headline" @slotchange="${this.handleSlotChange}"></slot>
8828
+ </div>
8829
+ <${this.dropdownTag}
8830
+ ?autoPlacement="${this.autoPlacement}"
8831
+ ?error="${this.validity !== undefined && this.validity !== 'valid'}"
8832
+ ?matchWidth="${!this.flexMenuWidth}"
8833
+ ?noFlip="${this.noFlip}"
8834
+ ?onDark="${this.onDark}"
8835
+ .fullscreenBreakpoint="${this.fullscreenBreakpoint}"
8836
+ .offset="${this.offset}"
8837
+ .placement="${this.placement}"
8838
+ chevron
8839
+ fluid
8840
+ for="selectMenu"
8841
+ layout="${this.layout}"
8842
+ part="dropdown"
8843
+ shape="${this.shape}"
8844
+ size="${this.size}">
8845
+ <div slot="trigger" aria-haspopup="true" id="triggerFocus" class="triggerContent">
8846
+ <div class="accents left">
8847
+ <slot name="typeIcon"></slot>
8848
+ </div>
8849
+ <div class="mainContent">
8850
+ <div class="${classMap(valueContainerClasses)}">
8851
+ <label class="${classMap(this.commonLabelClasses)}">
8852
+ <slot name="label"></slot>
8853
+ ${this.required ? undefined : html`<slot name="optionalLabel"> (optional)</slot>`}
8854
+ </label>
8855
+ <div class="value" id="value"></div>
8856
+ ${this.value ? undefined : html`
8857
+ <div id="placeholder" class="${classMap(placeholderClass)}">
8858
+ <slot name="placeholder"></slot>
8859
+ </div>
8860
+ `}
8861
+ </div>
8862
+ <div class="${classMap(displayValueClasses)}" aria-hidden="true" part="displayValue">
8863
+ <slot name="displayValue"></slot>
8864
+ </div>
8865
+ </div>
8866
+ <div class="accents right"></div>
8867
+ </div>
8868
+ <div class="menuWrapper"></div>
8869
+ <${this.bibtemplateTag} ?large="${this.largeFullscreenHeadline}" @close-click="${this.hideBib}">
8870
+ <slot></slot>
8871
+ </${this.bibtemplateTag}>
8872
+ <div slot="helpText">
8873
+ ${this.renderHtmlHelpText()}
8874
+ </div>
8875
+ </${this.dropdownTag}>
8876
+ ${this.renderNativeSelect()}
8877
+ </div>
8878
+ `;
8879
+ }
8880
+
8881
+ /**
8882
+ * Logic to determine the layout of the component.
8883
+ * @private
8884
+ * @param {string} [ForcedLayout] - Used to force a specific layout, pass in the layout name to use.
8885
+ * @returns {void}
8886
+ */
8887
+ renderLayout(ForcedLayout) {
8888
+ const layout = ForcedLayout || this.layout;
8889
+
8890
+ switch (layout) {
8891
+ case 'emphasized':
8892
+ return this.renderLayoutEmphasized();
8893
+ case 'emphasized-left':
8894
+ return this.renderLayoutEmphasized();
8895
+ case 'emphasized-right':
8896
+ return this.renderLayoutEmphasized();
8897
+ case 'snowflake':
8898
+ return this.renderLayoutSnowflake();
8899
+ case 'snowflake-left':
8900
+ return this.renderLayoutSnowflake();
8901
+ case 'snowflake-right':
8902
+ return this.renderLayoutSnowflake();
8903
+ default:
8904
+ return this.renderLayoutClassic();
8905
+ }
8906
+ }
8907
+
6469
8908
  // When using auroElement, use the following attribute and function when hiding content from screen readers.
6470
8909
  // aria-hidden="${this.hideAudible(this.hiddenAudible)}"
6471
8910
 
6472
8911
  // function that renders the HTML and CSS into the scope of the component
6473
- render() {
8912
+ renderBACKUP() {
6474
8913
  const placeholderClass = {
6475
8914
  hidden: this.value,
6476
8915
  };
@@ -6496,29 +8935,37 @@ class AuroSelect extends LitElement {
6496
8935
  <slot name="bib.fullscreen.headline" @slotchange="${this.handleSlotChange}"></slot>
6497
8936
  </div>
6498
8937
  <${this.dropdownTag}
6499
- for="selectmenu"
8938
+ ?autoPlacement="${this.autoPlacement}"
8939
+ ?disabled="${this.disabled}"
6500
8940
  ?error="${this.validity !== undefined && this.validity !== 'valid'}"
8941
+ ?matchWidth="${this.matchWidth}"
8942
+ ?noFlip="${this.noFlip}"
6501
8943
  ?onDark="${this.onDark}"
6502
- common
6503
- fluid
6504
8944
  .fullscreenBreakpoint="${this.fullscreenBreakpoint}"
6505
- ?matchWidth="${!this.flexMenuWidth}"
6506
- chevron
6507
- .placement="${this.placement}"
6508
8945
  .offset="${this.offset}"
6509
- ?autoPlacement="${this.autoPlacement}"
6510
- ?noFlip="${this.noFlip}"
6511
- part="dropdown">
8946
+ .placement="${this.placement}"
8947
+ chevron
8948
+ fluid
8949
+ for="selectMenu"
8950
+ layout="${this.layout}"
8951
+ part="dropdown"
8952
+ shape="${this.shape}"
8953
+ size="${this.size}">
6512
8954
  <span slot="trigger" aria-haspopup="true" id="triggerFocus">
6513
- <span id="placeholder" class="${classMap(placeholderClass)}"><slot name="placeholder"></slot></span>
8955
+ <span id="placeholder"
8956
+ class="${classMap(placeholderClass)}"
8957
+ ?aria-hidden="${this.optionSelected && this.optionSelected.length ? 'true' : false}"
8958
+ >
8959
+ <slot name="placeholder"></slot>
8960
+ </span>
8961
+ <slot name="valueText" id="valueText"></slot>
6514
8962
  </span>
6515
8963
 
6516
- <div class="menuWrapper">
6517
- </div>
6518
-
6519
8964
  <${this.bibtemplateTag} ?large="${this.largeFullscreenHeadline}" @close-click="${this.hideBib}">
8965
+ <slot></slot>
6520
8966
  </${this.bibtemplateTag}>
6521
8967
  <slot name="label" slot="label"></slot>
8968
+ ${this.required ? undefined : html`<slot name="optionalLabel"> (optional)</slot>`}
6522
8969
  <p slot="helpText">
6523
8970
  ${!this.validity || this.validity === undefined || this.validity === 'valid'
6524
8971
  ? html`
@@ -6556,6 +9003,7 @@ class AuroSelect extends LitElement {
6556
9003
  </select>
6557
9004
  </div>
6558
9005
  <!-- Help text and error message template -->
9006
+ ${this.renderHtmlHelpText()}
6559
9007
  </div>
6560
9008
  `;
6561
9009
  }