@aurodesignsystem-dev/auro-formkit 0.0.0-pr624.4 → 0.0.0-pr624.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/bibtemplate/dist/auro-bibtemplate.d.ts +13 -2
- package/components/bibtemplate/dist/buttonVersion.d.ts +2 -0
- package/components/bibtemplate/dist/iconVersion.d.ts +1 -1
- package/components/bibtemplate/dist/index.js +1292 -79
- package/components/bibtemplate/dist/registered.js +1292 -79
- package/components/checkbox/README.md +1 -1
- package/components/checkbox/demo/api.md +47 -14
- package/components/checkbox/demo/api.min.js +44 -31
- package/components/checkbox/demo/index.md +2 -2
- package/components/checkbox/demo/index.min.js +44 -31
- package/components/checkbox/demo/readme.md +1 -1
- package/components/checkbox/dist/auro-checkbox-group.d.ts +1 -1
- package/components/checkbox/dist/auro-checkbox.d.ts +3 -3
- package/components/checkbox/dist/index.js +44 -31
- package/components/checkbox/dist/registered.js +44 -31
- package/components/combobox/demo/api.md +100 -2
- package/components/combobox/demo/api.min.js +3202 -759
- package/components/combobox/demo/index.md +6 -30
- package/components/combobox/demo/index.min.js +3202 -759
- package/components/combobox/dist/auro-combobox.d.ts +37 -16
- package/components/combobox/dist/index.js +3091 -789
- package/components/combobox/dist/registered.js +3091 -789
- package/components/counter/demo/api.html +1 -0
- package/components/counter/demo/api.md +21 -19
- package/components/counter/demo/api.min.js +3324 -614
- package/components/counter/demo/index.html +1 -0
- package/components/counter/demo/index.md +103 -34
- package/components/counter/demo/index.min.js +3324 -614
- package/components/counter/dist/auro-counter-button.d.ts +2 -0
- package/components/counter/dist/auro-counter-group.d.ts +89 -6
- package/components/counter/dist/auro-counter.d.ts +6 -0
- package/components/counter/dist/helptextVersion.d.ts +2 -0
- package/components/counter/dist/iconVersion.d.ts +1 -1
- package/components/counter/dist/index.js +3324 -614
- package/components/counter/dist/registered.js +3324 -614
- package/components/datepicker/demo/api.md +36 -19
- package/components/datepicker/demo/api.min.js +11976 -8000
- package/components/datepicker/demo/index.md +80 -0
- package/components/datepicker/demo/index.min.js +11976 -8000
- package/components/datepicker/dist/auro-datepicker.d.ts +71 -3
- package/components/datepicker/dist/buttonVersion.d.ts +1 -1
- package/components/datepicker/dist/iconVersion.d.ts +2 -0
- package/components/datepicker/dist/index.js +12238 -8262
- package/components/datepicker/dist/popoverVersion.d.ts +1 -1
- package/components/datepicker/dist/registered.js +12238 -8262
- package/components/dropdown/demo/api.md +8 -9
- package/components/dropdown/demo/api.min.js +551 -147
- package/components/dropdown/demo/index.md +57 -9
- package/components/dropdown/demo/index.min.js +551 -147
- package/components/dropdown/dist/auro-dropdown.d.ts +28 -9
- package/components/dropdown/dist/auro-dropdownBib.d.ts +22 -0
- package/components/dropdown/dist/index.js +551 -147
- package/components/dropdown/dist/registered.js +551 -147
- package/components/form/demo/api.min.js +1 -1
- package/components/form/demo/index.min.js +1 -1
- package/components/form/dist/index.js +1 -1
- package/components/form/dist/registered.js +1 -1
- package/components/helptext/dist/index.js +2 -2
- package/components/helptext/dist/registered.js +2 -2
- package/components/input/README.md +5 -2
- package/components/input/demo/api.md +271 -176
- package/components/input/demo/api.min.js +956 -270
- package/components/input/demo/index.md +48 -32
- package/components/input/demo/index.min.js +955 -269
- package/components/input/demo/readme.md +5 -2
- package/components/input/dist/auro-input.d.ts +23 -15
- package/components/input/dist/base-input.d.ts +32 -8
- package/components/input/dist/buttonVersion.d.ts +1 -1
- package/components/input/dist/iconVersion.d.ts +1 -1
- package/components/input/dist/index.js +955 -269
- package/components/input/dist/registered.js +955 -269
- package/components/layoutElement/dist/index.js +13 -10
- package/components/menu/demo/api.html +38 -0
- package/components/menu/demo/api.md +68 -7
- package/components/menu/demo/api.min.js +278 -42
- package/components/menu/demo/index.min.js +278 -42
- package/components/menu/dist/auro-menu.d.ts +28 -5
- package/components/menu/dist/auro-menuoption.d.ts +15 -3
- package/components/menu/dist/iconVersion.d.ts +1 -1
- package/components/menu/dist/index.js +278 -42
- package/components/menu/dist/registered.js +278 -42
- package/components/menu/dist/styles/default/color-menuoption-css.d.ts +2 -0
- package/components/menu/dist/styles/default/style-menu-css.d.ts +2 -0
- package/components/menu/dist/styles/default/style-menuoption-css.d.ts +2 -0
- package/components/menu/dist/styles/default/tokens-css.d.ts +2 -0
- package/components/radio/demo/api.md +7 -8
- package/components/radio/demo/api.min.js +68 -80
- package/components/radio/demo/index.min.js +68 -80
- package/components/radio/dist/auro-radio-group.d.ts +1 -1
- package/components/radio/dist/auro-radio.d.ts +9 -12
- package/components/radio/dist/index.js +68 -80
- package/components/radio/dist/registered.js +68 -80
- package/components/select/demo/api.md +123 -13
- package/components/select/demo/api.min.js +3045 -456
- package/components/select/demo/index.html +1 -0
- package/components/select/demo/index.md +323 -763
- package/components/select/demo/index.min.js +3045 -456
- package/components/select/dist/auro-select.d.ts +112 -11
- package/components/select/dist/helptextVersion.d.ts +2 -0
- package/components/select/dist/index.js +2925 -477
- package/components/select/dist/registered.js +2925 -477
- package/components/select/dist/styles/shapeSize-css.d.ts +2 -0
- package/components/select/dist/styles/tokens-css.d.ts +2 -0
- package/package.json +6 -4
- /package/components/{dropdown/dist/styles/default/bibColors-css.d.ts → counter/dist/styles/shapeSize-css.d.ts} +0 -0
- /package/components/{dropdown → datepicker}/dist/styles/default/color-css.d.ts +0 -0
- /package/components/{dropdown/dist/styles/default/bibStyles-css.d.ts → datepicker/dist/styles/shapeSize-css.d.ts} +0 -0
- /package/components/{dropdown/dist/styles/default/style-css.d.ts → datepicker/dist/styles/snowflake/color-css.d.ts} +0 -0
- /package/components/{dropdown/dist/styles → datepicker/dist/styles/snowflake}/style-css.d.ts +0 -0
- /package/components/{menu/dist/styles/color-menu-css.d.ts → dropdown/dist/styles/classic/bibColors-css.d.ts} +0 -0
- /package/components/{menu/dist/styles/color-menuoption-css.d.ts → dropdown/dist/styles/classic/bibStyles-css.d.ts} +0 -0
- /package/components/{menu/dist/styles/style-menu-css.d.ts → dropdown/dist/styles/classic/color-css.d.ts} +0 -0
- /package/components/{menu/dist/styles/style-menuoption-css.d.ts → dropdown/dist/styles/classic/style-css.d.ts} +0 -0
- /package/components/menu/dist/styles/{tokens-css.d.ts → default/color-menu-css.d.ts} +0 -0
|
@@ -1,9 +1,108 @@
|
|
|
1
|
-
import {
|
|
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
|
-
* @
|
|
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(
|
|
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$
|
|
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$
|
|
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
|
-
|
|
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
|
-
|
|
1484
|
-
if
|
|
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
|
-
|
|
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
|
-
|
|
2768
|
-
if
|
|
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' || (
|
|
2951
|
-
|
|
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)
|
|
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
|
|
3306
|
-
constructor() {
|
|
3307
|
-
super();
|
|
3693
|
+
let AuroLibraryRuntimeUtils$1$1 = class AuroLibraryRuntimeUtils {
|
|
3308
3694
|
|
|
3309
|
-
|
|
3310
|
-
|
|
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
|
-
*
|
|
3315
|
-
* @private
|
|
3710
|
+
* Finds and returns the closest HTML Element based on a selector.
|
|
3316
3711
|
* @returns {void}
|
|
3317
3712
|
*/
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
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
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
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
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
type: String,
|
|
3333
|
-
reflect: true
|
|
3334
|
-
},
|
|
3737
|
+
if (elemTag !== tag) {
|
|
3738
|
+
elem.setAttribute(tag, true);
|
|
3739
|
+
}
|
|
3740
|
+
}
|
|
3335
3741
|
|
|
3336
|
-
|
|
3337
|
-
|
|
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
|
-
|
|
3424
|
-
|
|
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$
|
|
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:
|
|
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$
|
|
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="
|
|
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:
|
|
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:
|
|
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
|
|
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]) .
|
|
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
|
|
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
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
4234
|
+
AuroLibraryRuntimeUtils$5.prototype.handleComponentTagRename(this, 'auro-helptext');
|
|
3704
4235
|
}
|
|
3705
4236
|
|
|
3706
4237
|
static get styles() {
|
|
3707
4238
|
return [
|
|
3708
|
-
colorCss$
|
|
3709
|
-
styleCss$
|
|
3710
|
-
tokensCss$
|
|
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$
|
|
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
|
-
|
|
3853
|
-
const wrapper = this.shadowRoot.querySelector('.wrapper');
|
|
4383
|
+
const wrapper = this.shadowRoot.querySelector('.wrapper');
|
|
3854
4384
|
|
|
3855
|
-
|
|
3856
|
-
|
|
3857
|
-
|
|
3858
|
-
|
|
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
|
-
|
|
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 = '
|
|
4473
|
+
this.shape = 'classic';
|
|
3940
4474
|
this.size = 'xl';
|
|
3941
4475
|
|
|
3942
|
-
this.
|
|
3943
|
-
}
|
|
4476
|
+
this.parentBorder = false;
|
|
3944
4477
|
|
|
3945
|
-
|
|
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('.
|
|
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(
|
|
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
|
-
<
|
|
4738
|
-
|
|
4739
|
-
|
|
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
|
|
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$
|
|
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$
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
-
|
|
5041
|
-
|
|
5042
|
-
|
|
5043
|
-
|
|
5044
|
-
|
|
5045
|
-
|
|
5046
|
-
|
|
5047
|
-
|
|
5048
|
-
|
|
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
|
-
|
|
5054
|
-
|
|
5055
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
*
|
|
5072
|
-
*
|
|
5073
|
-
* @
|
|
5074
|
-
* @param {
|
|
5075
|
-
* @
|
|
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
|
-
*
|
|
5080
|
-
*
|
|
5081
|
-
* @param {
|
|
5082
|
-
* @param {
|
|
5083
|
-
* @param {
|
|
5084
|
-
* @
|
|
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
|
|
5087
|
-
|
|
5088
|
-
|
|
5089
|
-
|
|
5090
|
-
|
|
5091
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
5305
|
-
|
|
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
|
-
|
|
5316
|
-
|
|
5317
|
-
|
|
5318
|
-
|
|
5319
|
-
|
|
5320
|
-
|
|
5321
|
-
|
|
5322
|
-
const
|
|
5323
|
-
|
|
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
|
-
|
|
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$
|
|
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$
|
|
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
|
-
|
|
5473
|
-
|
|
5474
|
-
|
|
5475
|
-
}
|
|
7389
|
+
handleComponentTagRename(elem, tagName) {
|
|
7390
|
+
const tag = tagName.toLowerCase();
|
|
7391
|
+
const elemTag = elem.tagName.toLowerCase();
|
|
5476
7392
|
|
|
5477
|
-
|
|
5478
|
-
|
|
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
|
-
|
|
5489
|
-
|
|
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
|
-
|
|
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.
|
|
5505
|
-
|
|
5506
|
-
|
|
7426
|
+
this.error = false;
|
|
7427
|
+
this.onDark = false;
|
|
7428
|
+
this.hasTextContent = false;
|
|
5507
7429
|
|
|
5508
|
-
|
|
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
|
|
5516
|
-
styleCss$
|
|
5517
|
-
|
|
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
|
-
|
|
7444
|
+
|
|
7445
|
+
/**
|
|
7446
|
+
* @private
|
|
7447
|
+
*/
|
|
7448
|
+
slotNodes: {
|
|
5525
7449
|
type: Boolean,
|
|
5526
|
-
reflect: true
|
|
5527
7450
|
},
|
|
5528
|
-
|
|
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-
|
|
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-
|
|
7482
|
+
* AuroCheckbox.register("custom-helptext") // this will register this element to <custom-helptext/>
|
|
5542
7483
|
*
|
|
5543
7484
|
*/
|
|
5544
|
-
static register(name = "auro-
|
|
5545
|
-
AuroLibraryRuntimeUtils.prototype.registerComponent(name,
|
|
7485
|
+
static register(name = "auro-helptext") {
|
|
7486
|
+
AuroLibraryRuntimeUtils.prototype.registerComponent(name, AuroHelpText);
|
|
5546
7487
|
}
|
|
5547
7488
|
|
|
5548
|
-
|
|
5549
|
-
|
|
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
|
-
|
|
5560
|
-
|
|
7493
|
+
handleSlotChange(event) {
|
|
7494
|
+
if (event) {
|
|
7495
|
+
this.slotNodes = event.target.assignedNodes();
|
|
7496
|
+
}
|
|
5561
7497
|
|
|
5562
|
-
this.
|
|
5563
|
-
this.addEventListener('touchmove', this.preventBodyScroll, { passive: false });
|
|
7498
|
+
this.hasTextContent = this.checkSlotsForContent(this.slotNodes);
|
|
5564
7499
|
}
|
|
5565
7500
|
|
|
5566
|
-
|
|
5567
|
-
|
|
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
|
-
|
|
5570
|
-
|
|
7513
|
+
return nodes.some((node) => {
|
|
7514
|
+
if (node.textContent.trim()) {
|
|
7515
|
+
return true;
|
|
7516
|
+
}
|
|
5571
7517
|
|
|
5572
|
-
|
|
5573
|
-
|
|
5574
|
-
|
|
5575
|
-
}
|
|
7518
|
+
if (!node.querySelector) {
|
|
7519
|
+
return false;
|
|
7520
|
+
}
|
|
5576
7521
|
|
|
5577
|
-
|
|
5578
|
-
|
|
5579
|
-
|
|
5580
|
-
|
|
5581
|
-
|
|
5582
|
-
|
|
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
|
|
5589
|
-
|
|
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
|
|
7542
|
+
var helpTextVersion = '1.0.0';
|
|
5616
7543
|
|
|
5617
|
-
css`:focus:not(:focus-visible){outline:3px solid transparent}:host{display:
|
|
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-
|
|
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
|
|
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
|
|
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$
|
|
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
|
-
*
|
|
7766
|
+
* @private
|
|
5800
7767
|
*/
|
|
5801
|
-
|
|
5802
|
-
type:
|
|
5803
|
-
reflect:
|
|
7768
|
+
isPopoverVisible: {
|
|
7769
|
+
type: Boolean,
|
|
7770
|
+
reflect: false
|
|
5804
7771
|
},
|
|
5805
7772
|
|
|
5806
7773
|
/**
|
|
5807
|
-
* If
|
|
7774
|
+
* If declared, the popover and trigger will be set to the same width.
|
|
5808
7775
|
*/
|
|
5809
|
-
|
|
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
|
-
|
|
5992
|
-
|
|
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
|
-
|
|
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$);
|
|
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$
|
|
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
|
|
6037
|
-
const
|
|
6038
|
-
|
|
6039
|
-
|
|
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
|
-
|
|
6049
|
-
|
|
8090
|
+
const displayText = this.optionSelected.map((option) => option.textContent).join(', ');
|
|
8091
|
+
|
|
8092
|
+
valueElem.textContent = displayText;
|
|
6050
8093
|
} else {
|
|
6051
|
-
|
|
6052
|
-
|
|
8094
|
+
valueElem.innerHTML = this.optionSelected.innerHTML;
|
|
8095
|
+
const displayValueEl = this.optionSelected.querySelector("[slot='displayValue']");
|
|
6053
8096
|
|
|
6054
|
-
|
|
6055
|
-
|
|
6056
|
-
|
|
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
|
-
|
|
6140
|
-
|
|
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
|
-
|
|
8196
|
+
this.dropdown.show();
|
|
6143
8197
|
|
|
6144
|
-
|
|
6145
|
-
|
|
8198
|
+
if (this.dropdown.isPopoverVisible) {
|
|
8199
|
+
this.menu.navigateOptions('up');
|
|
8200
|
+
}
|
|
8201
|
+
|
|
8202
|
+
return;
|
|
6146
8203
|
}
|
|
6147
8204
|
|
|
6148
|
-
|
|
6149
|
-
|
|
8205
|
+
if (evt.key === 'ArrowDown') {
|
|
8206
|
+
evt.preventDefault();
|
|
6150
8207
|
|
|
6151
|
-
|
|
6152
|
-
evt.preventDefault();
|
|
8208
|
+
this.dropdown.show();
|
|
6153
8209
|
|
|
6154
|
-
|
|
8210
|
+
if (this.dropdown.isPopoverVisible) {
|
|
8211
|
+
this.menu.navigateOptions('down');
|
|
8212
|
+
}
|
|
6155
8213
|
|
|
6156
|
-
|
|
6157
|
-
this.menu.navigateOptions('down');
|
|
8214
|
+
return;
|
|
6158
8215
|
}
|
|
6159
8216
|
|
|
6160
|
-
|
|
6161
|
-
|
|
8217
|
+
if (evt.key === 'Enter') {
|
|
8218
|
+
if (!this.dropdown.isPopoverVisible) {
|
|
8219
|
+
evt.preventDefault();
|
|
8220
|
+
this.menu.makeSelection();
|
|
8221
|
+
}
|
|
6162
8222
|
|
|
6163
|
-
|
|
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
|
|
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.
|
|
6362
|
-
|
|
6363
|
-
// Wait for menu to finish updating its value
|
|
6364
|
-
await this.menu.updateComplete;
|
|
8442
|
+
await this.updateMenuValue(this.value);
|
|
6365
8443
|
|
|
6366
|
-
|
|
8444
|
+
if (this.menu) {
|
|
8445
|
+
this.optionSelected = this.menu.optionSelected;
|
|
8446
|
+
}
|
|
6367
8447
|
} else {
|
|
6368
|
-
this.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6510
|
-
|
|
6511
|
-
|
|
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"
|
|
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
|
}
|