@aurodesignsystem/auro-formkit 5.10.0 → 5.11.0
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/CHANGELOG.md +55 -15
- package/components/bibtemplate/dist/auro-bibtemplate.d.ts +6 -0
- package/components/bibtemplate/dist/index.js +12 -0
- package/components/bibtemplate/dist/registered.js +12 -0
- package/components/checkbox/demo/api.min.js +3 -3
- package/components/checkbox/demo/index.min.js +3 -3
- package/components/checkbox/dist/index.js +3 -3
- package/components/checkbox/dist/registered.js +3 -3
- package/components/combobox/demo/api.min.js +1140 -305
- package/components/combobox/demo/index.min.js +1140 -305
- package/components/combobox/dist/auro-combobox.d.ts +24 -1
- package/components/combobox/dist/comboboxKeyboardStrategy.d.ts +6 -0
- package/components/combobox/dist/index.js +1082 -264
- package/components/combobox/dist/registered.js +1082 -264
- package/components/counter/demo/api.min.js +583 -172
- package/components/counter/demo/index.min.js +583 -172
- package/components/counter/dist/auro-counter.d.ts +8 -0
- package/components/counter/dist/buttonVersion.d.ts +1 -1
- package/components/counter/dist/iconVersion.d.ts +1 -1
- package/components/counter/dist/index.js +583 -172
- package/components/counter/dist/registered.js +583 -172
- package/components/datepicker/demo/api.md +108 -85
- package/components/datepicker/demo/api.min.js +872 -257
- package/components/datepicker/demo/index.md +18 -12
- package/components/datepicker/demo/index.min.js +872 -257
- package/components/datepicker/dist/auro-calendar.d.ts +6 -0
- package/components/datepicker/dist/auro-datepicker.d.ts +11 -1
- package/components/datepicker/dist/index.js +819 -208
- package/components/datepicker/dist/registered.js +819 -208
- package/components/dropdown/demo/api.md +15 -17
- package/components/dropdown/demo/api.min.js +537 -183
- package/components/dropdown/demo/index.min.js +537 -183
- package/components/dropdown/dist/auro-dropdown.d.ts +27 -1
- package/components/dropdown/dist/auro-dropdownBib.d.ts +87 -0
- package/components/dropdown/dist/index.js +514 -160
- package/components/dropdown/dist/keyboardUtils.d.ts +18 -0
- package/components/dropdown/dist/registered.js +514 -160
- package/components/form/README.md +47 -2
- package/components/form/demo/api.js +2 -0
- package/components/form/demo/api.md +303 -30
- package/components/form/demo/api.min.js +69256 -62
- package/components/form/demo/index.html +0 -1
- package/components/form/demo/index.js +1 -0
- package/components/form/demo/index.md +1 -275
- package/components/form/demo/index.min.js +69255 -62
- package/components/form/demo/readme.md +47 -2
- package/components/form/demo/working.html +123 -32
- package/components/form/dist/auro-form.d.ts +98 -61
- package/components/form/dist/index.js +135 -51
- package/components/form/dist/registered.js +135 -51
- package/components/input/demo/api.md +1 -0
- package/components/input/demo/api.min.js +78 -24
- package/components/input/demo/index.min.js +78 -24
- package/components/input/dist/base-input.d.ts +34 -0
- package/components/input/dist/index.js +78 -24
- package/components/input/dist/registered.js +78 -24
- package/components/menu/demo/api.md +4 -10
- package/components/menu/demo/api.min.js +18 -5
- package/components/menu/demo/index.min.js +18 -5
- package/components/menu/dist/auro-menuoption.d.ts +0 -8
- package/components/menu/dist/iconVersion.d.ts +1 -1
- package/components/menu/dist/index.js +18 -5
- package/components/menu/dist/registered.js +18 -5
- package/components/radio/demo/api.min.js +3 -3
- package/components/radio/demo/index.min.js +3 -3
- package/components/radio/dist/index.js +3 -3
- package/components/radio/dist/registered.js +3 -3
- package/components/select/demo/api.js +2 -0
- package/components/select/demo/api.md +333 -78
- package/components/select/demo/api.min.js +945 -282
- package/components/select/demo/index.min.js +933 -282
- package/components/select/dist/auro-select.d.ts +26 -0
- package/components/select/dist/index.js +881 -247
- package/components/select/dist/registered.js +881 -247
- package/components/select/dist/selectKeyboardStrategy.d.ts +8 -0
- package/custom-elements.json +596 -89
- package/package.json +7 -5
|
@@ -5,6 +5,8 @@ import { property } from 'lit/decorators.js';
|
|
|
5
5
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
6
6
|
import { createRef, ref } from 'lit/directives/ref.js';
|
|
7
7
|
import { repeat } from 'lit/directives/repeat.js';
|
|
8
|
+
import 'lit-html';
|
|
9
|
+
import 'lit-html/directives/unsafe-html.js';
|
|
8
10
|
|
|
9
11
|
let DateFormatter$1 = class DateFormatter {
|
|
10
12
|
|
|
@@ -845,7 +847,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
845
847
|
}
|
|
846
848
|
}
|
|
847
849
|
|
|
848
|
-
if (!hasValue && elem.required && elem.touched) {
|
|
850
|
+
if (!hasValue && elem.required && (force || elem.touched)) {
|
|
849
851
|
elem.validity = 'valueMissing';
|
|
850
852
|
elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
|
|
851
853
|
} else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
|
|
@@ -869,7 +871,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
869
871
|
if (!isCombobox || isCombobox && !elem.persistInput) {
|
|
870
872
|
|
|
871
873
|
// run validation on all inputs since we're going to use them to set the validity of this component
|
|
872
|
-
this.auroInputElements.forEach(input => input.validate());
|
|
874
|
+
this.auroInputElements.forEach(input => input.validate(force));
|
|
873
875
|
|
|
874
876
|
// Reset element validity to the validity of the input
|
|
875
877
|
elem.validity = this.auroInputElements[0].validity;
|
|
@@ -1367,11 +1369,11 @@ var classicLayoutStyle = css`.util_displayInline{display:inline}.util_displayInl
|
|
|
1367
1369
|
|
|
1368
1370
|
var classicLayoutColor = css``;
|
|
1369
1371
|
|
|
1370
|
-
var snowflakeStyle = css`:host([layout*=snowflake]) [auro-input]{flex:1;text-align:center}:host([layout*=snowflake]) [auro-input]::part(
|
|
1372
|
+
var snowflakeStyle = css`:host([layout*=snowflake]) [auro-input]{flex:1;text-align:center}:host([layout*=snowflake]) [auro-input]::part(accent-left),:host([layout*=snowflake]) [auro-input]::part(accent-right){display:none}:host([layout*=snowflake]) [auro-input]::part(input){padding-bottom:unset;text-align:center;transition:unset}:host([layout*=snowflake]) [auro-input]::part(wrapper){min-height:unset;max-height:unset;box-shadow:unset;border-radius:unset}:host([layout*=snowflake]) [auro-input]::part(wrapper) .mainContent{padding-bottom:unset}:host([layout*=snowflake]) [auro-input]::part(inputHelpText){display:none}:host([layout*=snowflake]) [auro-input]::part(displayValue){justify-content:center}:host([layout*=snowflake])::part(helpText){text-align:center}:host([layout*=snowflake]) .dpTriggerContent{width:100%}:host([layout*=snowflake]) .wrapper{width:calc(100% - var(--ds-size-400, 2rem));display:flex;flex-direction:row;justify-content:space-between;padding-inline:var(--ds-size-200, 1rem)}:host([layout*=snowflake]) .mainLabel{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:flex;align-items:center}:host([layout*=snowflake]) .mainLabel:is(.hasFocus,.hasValue){padding-block-start:var(--ds-size-75, 0.375rem)}:host([layout*=snowflake]) .inputDivider{height:calc(var(--ds-size-200, 1rem) + var(--ds-size-25, 0.125rem));margin:var(--ds-size-50, 0.25rem) var(--ds-size-75, 0.375rem);width:var(--ds-size-25, 0.125rem)}:host([layout*=snowflake]) .inputSection:not(:is(.disabled,.hasFocus,.hasValue)) .inputDivider{display:none}:host([layout*=snowflake][disabled]){pointer-events:none}`;
|
|
1371
1373
|
|
|
1372
1374
|
var snowflakeColors = css`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
|
|
1373
1375
|
|
|
1374
|
-
var styleCss$7 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem))}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem))}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem))}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-md-letter-spacing, 0);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem))}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem))}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem))}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem))}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem))}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem))}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem))}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);font-weight:var(--wcss-heading-xs-weight, 450);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem))}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);font-weight:var(--wcss-heading-2xs-weight, 450);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem))}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendarNavButtons{position:absolute;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.headerDateTo{height:calc(var(--mobile-header-height) - var(--ds-size-300, 1.5rem));padding:var(--ds-size-300, 1.5rem) var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host(:not([noRange])) .headerDateTo{position:relative;display:flex;flex:1;flex-direction:column;justify-content:center}:host(:not([noRange])) .headerDateTo:after{position:absolute;top:calc(50% + 10px);left:0;display:block;width:1px;height:var(--ds-size-300, 1.5rem);content:"";transform:translateY(-50%)}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}`;
|
|
1376
|
+
var styleCss$7 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem))}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem))}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem))}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-md-letter-spacing, 0);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem))}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem))}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem))}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem))}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem))}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem))}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem))}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);font-weight:var(--wcss-heading-xs-weight, 450);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem))}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);font-weight:var(--wcss-heading-2xs-weight, 450);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem))}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendarNavButtons{position:absolute;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}`;
|
|
1375
1377
|
|
|
1376
1378
|
var colorCss$7 = css`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);box-shadow:inset 0 0 0 1px var(--ds-auro-calendar-nav-btn-border-color)}.mobileHeader{background-color:var(--ds-auro-calendar-mobile-header-container-color)}.mobileDateLabel{color:var(--ds-auro-calendar-mobile-header-text-color)}:host(:not([noRange])) .headerDateTo:after{background-color:var(--ds-auro-calendar-mobile-header-divider-color)}::slotted([slot="bib.fullscreen.fromStr"]),::slotted([slot=mobileDateToStr]){color:var(--ds-auro-datepicker-placeholder-color)}@media screen and (max-width: 576px){.calendarNavBtn{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}}`;
|
|
1377
1379
|
|
|
@@ -9170,6 +9172,18 @@ class AuroBibtemplate extends LitElement {
|
|
|
9170
9172
|
this.removeEventListener('touchmove', this.preventBodyScroll, { passive: false });
|
|
9171
9173
|
}
|
|
9172
9174
|
|
|
9175
|
+
/**
|
|
9176
|
+
* Focuses the close button inside the bibtemplate's shadow DOM.
|
|
9177
|
+
* Used by parent components to set initial focus when the fullscreen dialog opens.
|
|
9178
|
+
* @returns {void}
|
|
9179
|
+
*/
|
|
9180
|
+
focusCloseButton() {
|
|
9181
|
+
const closeBtn = this.shadowRoot.querySelector('#closeButton');
|
|
9182
|
+
if (closeBtn) {
|
|
9183
|
+
closeBtn.focus();
|
|
9184
|
+
}
|
|
9185
|
+
}
|
|
9186
|
+
|
|
9173
9187
|
onCloseButtonClick() {
|
|
9174
9188
|
this.dispatchEvent(new Event("close-click", { bubbles: true,
|
|
9175
9189
|
composed: true }));
|
|
@@ -9228,7 +9242,7 @@ class AuroBibtemplate extends LitElement {
|
|
|
9228
9242
|
}
|
|
9229
9243
|
}
|
|
9230
9244
|
|
|
9231
|
-
var formkitVersion$2 = '
|
|
9245
|
+
var formkitVersion$2 = '202603102257';
|
|
9232
9246
|
|
|
9233
9247
|
let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=literal`${unsafeStatic(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$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]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--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}
|
|
9234
9248
|
`,u$4=css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}: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;box-sizing:border-box}: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: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.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(0)}to{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{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{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%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
|
|
@@ -9588,6 +9602,16 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
9588
9602
|
return renderedHtml;
|
|
9589
9603
|
}
|
|
9590
9604
|
|
|
9605
|
+
/**
|
|
9606
|
+
* Focuses the close button inside the calendar's bibtemplate.
|
|
9607
|
+
* Used by datepicker to set initial focus when the fullscreen dialog opens.
|
|
9608
|
+
* @returns {void}
|
|
9609
|
+
*/
|
|
9610
|
+
focusCloseButton() {
|
|
9611
|
+
const bibtemplate = this.shadowRoot.querySelector(this.bibtemplateTag._$litStatic$);
|
|
9612
|
+
if (bibtemplate) bibtemplate.focusCloseButton();
|
|
9613
|
+
}
|
|
9614
|
+
|
|
9591
9615
|
/**
|
|
9592
9616
|
* Request the calendar be scrolled to a given date.
|
|
9593
9617
|
* @param {String} date - The date to scroll into view.
|
|
@@ -9652,31 +9676,34 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
9652
9676
|
@close-click="${this.utilCal.requestDismiss}">
|
|
9653
9677
|
<span slot="ariaLabel.close">${this.slots["ariaLabel.bib.close"]}</span>
|
|
9654
9678
|
|
|
9655
|
-
|
|
9679
|
+
${this.slots["bib.fullscreen.headline"] ? html$1`<span slot="header">${this.slots["bib.fullscreen.headline"]}</span>` : ''}
|
|
9656
9680
|
|
|
9657
9681
|
<div slot="subheader" class="mobileHeader">
|
|
9658
9682
|
<div class="headerDateFrom">
|
|
9659
|
-
|
|
9683
|
+
${this.slots["bib.fullscreen.dateLabel"] ? html$1`<span class="mobileDateLabel body-xs">${this.slots["bib.fullscreen.dateLabel"]}</span>` : ''}
|
|
9684
|
+
${this.slots["bib.fullscreen.fromLabel"] ? html$1`<span class="mobileDateLabel body-xs">${this.slots["bib.fullscreen.fromLabel"]}</span>` : ''}
|
|
9660
9685
|
<slot name="bib.fullscreen.fromStr"></slot>
|
|
9661
9686
|
</div>
|
|
9662
|
-
<div class="headerDateTo"
|
|
9687
|
+
<div class="headerDateTo">
|
|
9688
|
+
${this.slots["bib.fullscreen.toLabel"] ? html$1`<span class="mobileDateLabel body-xs">${this.slots["bib.fullscreen.toLabel"]}</span>` : ''}
|
|
9689
|
+
<slot name="bib.fullscreen.toStr"></slot>
|
|
9690
|
+
</div>
|
|
9663
9691
|
</div>
|
|
9664
9692
|
|
|
9665
9693
|
<div class="calendarWrapper">
|
|
9666
|
-
|
|
9667
9694
|
<div class="calendars">
|
|
9668
9695
|
${this.renderAllCalendars()}
|
|
9669
9696
|
</div>
|
|
9670
9697
|
<div class="calendarNavButtons">
|
|
9671
9698
|
${this.showPrevMonthBtn ? html$1`
|
|
9672
|
-
|
|
9673
|
-
|
|
9674
|
-
|
|
9699
|
+
<button class="calendarNavBtn prevMonth" @click="${this.handlePrevMonth}">
|
|
9700
|
+
${this.util.generateIconHtml(chevronLeft)}
|
|
9701
|
+
</button>
|
|
9675
9702
|
` : undefined}
|
|
9676
9703
|
${this.showNextMonthBtn ? html$1`
|
|
9677
|
-
|
|
9678
|
-
|
|
9679
|
-
|
|
9704
|
+
<button class="calendarNavBtn nextMonth" @click="${this.handleNextMonth}">
|
|
9705
|
+
${this.util.generateIconHtml(chevronRight)}
|
|
9706
|
+
</button>
|
|
9680
9707
|
` : undefined}
|
|
9681
9708
|
</div>
|
|
9682
9709
|
</div>
|
|
@@ -11418,11 +11445,9 @@ const computePosition = (reference, floating, options) => {
|
|
|
11418
11445
|
/* eslint-disable line-comment-position, no-inline-comments */
|
|
11419
11446
|
|
|
11420
11447
|
|
|
11421
|
-
|
|
11422
11448
|
const MAX_CONFIGURATION_COUNT = 10;
|
|
11423
11449
|
|
|
11424
11450
|
class AuroFloatingUI {
|
|
11425
|
-
|
|
11426
11451
|
/**
|
|
11427
11452
|
* @private
|
|
11428
11453
|
*/
|
|
@@ -11437,7 +11462,11 @@ class AuroFloatingUI {
|
|
|
11437
11462
|
* @private
|
|
11438
11463
|
*/
|
|
11439
11464
|
static setupMousePressChecker() {
|
|
11440
|
-
if (
|
|
11465
|
+
if (
|
|
11466
|
+
!AuroFloatingUI.isMousePressHandlerInitialized &&
|
|
11467
|
+
window &&
|
|
11468
|
+
window.addEventListener
|
|
11469
|
+
) {
|
|
11441
11470
|
AuroFloatingUI.isMousePressHandlerInitialized = true;
|
|
11442
11471
|
|
|
11443
11472
|
// Track timeout for isMousePressed reset to avoid race conditions
|
|
@@ -11445,7 +11474,7 @@ class AuroFloatingUI {
|
|
|
11445
11474
|
AuroFloatingUI._mousePressedTimeout = null;
|
|
11446
11475
|
}
|
|
11447
11476
|
const mouseEventGlobalHandler = (event) => {
|
|
11448
|
-
const isPressed = event.type ===
|
|
11477
|
+
const isPressed = event.type === "mousedown";
|
|
11449
11478
|
if (isPressed) {
|
|
11450
11479
|
// Clear any pending timeout to prevent race condition
|
|
11451
11480
|
if (AuroFloatingUI._mousePressedTimeout !== null) {
|
|
@@ -11464,8 +11493,8 @@ class AuroFloatingUI {
|
|
|
11464
11493
|
}
|
|
11465
11494
|
};
|
|
11466
11495
|
|
|
11467
|
-
window.addEventListener(
|
|
11468
|
-
window.addEventListener(
|
|
11496
|
+
window.addEventListener("mousedown", mouseEventGlobalHandler);
|
|
11497
|
+
window.addEventListener("mouseup", mouseEventGlobalHandler);
|
|
11469
11498
|
}
|
|
11470
11499
|
}
|
|
11471
11500
|
|
|
@@ -11513,11 +11542,12 @@ class AuroFloatingUI {
|
|
|
11513
11542
|
// mirror the boxsize from bibSizer
|
|
11514
11543
|
if (this.element.bibSizer && this.element.matchWidth) {
|
|
11515
11544
|
const sizerStyle = window.getComputedStyle(this.element.bibSizer);
|
|
11516
|
-
const bibContent =
|
|
11517
|
-
|
|
11545
|
+
const bibContent =
|
|
11546
|
+
this.element.bib.shadowRoot.querySelector(".container");
|
|
11547
|
+
if (sizerStyle.width !== "0px") {
|
|
11518
11548
|
bibContent.style.width = sizerStyle.width;
|
|
11519
11549
|
}
|
|
11520
|
-
if (sizerStyle.height !==
|
|
11550
|
+
if (sizerStyle.height !== "0px") {
|
|
11521
11551
|
bibContent.style.height = sizerStyle.height;
|
|
11522
11552
|
}
|
|
11523
11553
|
bibContent.style.maxWidth = sizerStyle.maxWidth;
|
|
@@ -11535,28 +11565,34 @@ class AuroFloatingUI {
|
|
|
11535
11565
|
* @returns {String} The positioning strategy, one of 'fullscreen', 'floating', 'cover'.
|
|
11536
11566
|
*/
|
|
11537
11567
|
getPositioningStrategy() {
|
|
11538
|
-
const breakpoint =
|
|
11568
|
+
const breakpoint =
|
|
11569
|
+
this.element.bib.mobileFullscreenBreakpoint ||
|
|
11570
|
+
this.element.floaterConfig?.fullscreenBreakpoint;
|
|
11539
11571
|
switch (this.behavior) {
|
|
11540
11572
|
case "tooltip":
|
|
11541
11573
|
return "floating";
|
|
11542
11574
|
case "dialog":
|
|
11543
11575
|
case "drawer":
|
|
11544
11576
|
if (breakpoint) {
|
|
11545
|
-
const smallerThanBreakpoint = window.matchMedia(
|
|
11577
|
+
const smallerThanBreakpoint = window.matchMedia(
|
|
11578
|
+
`(max-width: ${breakpoint})`,
|
|
11579
|
+
).matches;
|
|
11546
11580
|
|
|
11547
11581
|
this.element.expanded = smallerThanBreakpoint;
|
|
11548
11582
|
}
|
|
11549
11583
|
if (this.element.nested) {
|
|
11550
11584
|
return "cover";
|
|
11551
11585
|
}
|
|
11552
|
-
return
|
|
11586
|
+
return "fullscreen";
|
|
11553
11587
|
case "dropdown":
|
|
11554
11588
|
case undefined:
|
|
11555
11589
|
case null:
|
|
11556
11590
|
if (breakpoint) {
|
|
11557
|
-
const smallerThanBreakpoint = window.matchMedia(
|
|
11591
|
+
const smallerThanBreakpoint = window.matchMedia(
|
|
11592
|
+
`(max-width: ${breakpoint})`,
|
|
11593
|
+
).matches;
|
|
11558
11594
|
if (smallerThanBreakpoint) {
|
|
11559
|
-
return
|
|
11595
|
+
return "fullscreen";
|
|
11560
11596
|
}
|
|
11561
11597
|
}
|
|
11562
11598
|
return "floating";
|
|
@@ -11577,37 +11613,39 @@ class AuroFloatingUI {
|
|
|
11577
11613
|
const strategy = this.getPositioningStrategy();
|
|
11578
11614
|
this.configureBibStrategy(strategy);
|
|
11579
11615
|
|
|
11580
|
-
if (strategy ===
|
|
11616
|
+
if (strategy === "floating") {
|
|
11581
11617
|
this.mirrorSize();
|
|
11582
11618
|
// Define the middlware for the floater configuration
|
|
11583
11619
|
const middleware = [
|
|
11584
11620
|
offset(this.element.floaterConfig?.offset || 0),
|
|
11585
|
-
...this.element.floaterConfig?.shift ? [shift()] : [], // Add shift middleware if shift is enabled.
|
|
11586
|
-
...this.element.floaterConfig?.flip ? [flip()] : [], // Add flip middleware if flip is enabled.
|
|
11587
|
-
...this.element.floaterConfig?.autoPlacement ? [autoPlacement()] : [], // Add autoPlacement middleware if autoPlacement is enabled.
|
|
11621
|
+
...(this.element.floaterConfig?.shift ? [shift()] : []), // Add shift middleware if shift is enabled.
|
|
11622
|
+
...(this.element.floaterConfig?.flip ? [flip()] : []), // Add flip middleware if flip is enabled.
|
|
11623
|
+
...(this.element.floaterConfig?.autoPlacement ? [autoPlacement()] : []), // Add autoPlacement middleware if autoPlacement is enabled.
|
|
11588
11624
|
];
|
|
11589
11625
|
|
|
11590
11626
|
// Compute the position of the bib
|
|
11591
11627
|
computePosition(this.element.trigger, this.element.bib, {
|
|
11592
|
-
strategy: this.element.floaterConfig?.strategy ||
|
|
11628
|
+
strategy: this.element.floaterConfig?.strategy || "fixed",
|
|
11593
11629
|
placement: this.element.floaterConfig?.placement,
|
|
11594
|
-
middleware: middleware || []
|
|
11595
|
-
}).then(({ x, y }) => {
|
|
11630
|
+
middleware: middleware || [],
|
|
11631
|
+
}).then(({ x, y }) => {
|
|
11632
|
+
// eslint-disable-line id-length
|
|
11596
11633
|
Object.assign(this.element.bib.style, {
|
|
11597
11634
|
left: `${x}px`,
|
|
11598
11635
|
top: `${y}px`,
|
|
11599
11636
|
});
|
|
11600
11637
|
});
|
|
11601
|
-
} else if (strategy ===
|
|
11638
|
+
} else if (strategy === "cover") {
|
|
11602
11639
|
// Compute the position of the bib
|
|
11603
11640
|
computePosition(this.element.parentNode, this.element.bib, {
|
|
11604
|
-
placement:
|
|
11605
|
-
}).then(({ x, y }) => {
|
|
11641
|
+
placement: "bottom-start",
|
|
11642
|
+
}).then(({ x, y }) => {
|
|
11643
|
+
// eslint-disable-line id-length
|
|
11606
11644
|
Object.assign(this.element.bib.style, {
|
|
11607
11645
|
left: `${x}px`,
|
|
11608
11646
|
top: `${y - this.element.parentNode.offsetHeight}px`,
|
|
11609
11647
|
width: `${this.element.parentNode.offsetWidth}px`,
|
|
11610
|
-
height: `${this.element.parentNode.offsetHeight}px
|
|
11648
|
+
height: `${this.element.parentNode.offsetHeight}px`,
|
|
11611
11649
|
});
|
|
11612
11650
|
});
|
|
11613
11651
|
}
|
|
@@ -11620,12 +11658,12 @@ class AuroFloatingUI {
|
|
|
11620
11658
|
*/
|
|
11621
11659
|
lockScroll(lock = true) {
|
|
11622
11660
|
if (lock) {
|
|
11623
|
-
document.body.style.overflow =
|
|
11661
|
+
document.body.style.overflow = "hidden"; // hide body's scrollbar
|
|
11624
11662
|
|
|
11625
11663
|
// Move `bib` by the amount the viewport is shifted to stay aligned in fullscreen.
|
|
11626
11664
|
this.element.bib.style.transform = `translateY(${window?.visualViewport?.offsetTop}px)`;
|
|
11627
11665
|
} else {
|
|
11628
|
-
document.body.style.overflow =
|
|
11666
|
+
document.body.style.overflow = "";
|
|
11629
11667
|
}
|
|
11630
11668
|
}
|
|
11631
11669
|
|
|
@@ -11639,23 +11677,24 @@ class AuroFloatingUI {
|
|
|
11639
11677
|
* @param {string} strategy - The positioning strategy ('fullscreen' or 'floating').
|
|
11640
11678
|
*/
|
|
11641
11679
|
configureBibStrategy(value) {
|
|
11642
|
-
if (value ===
|
|
11680
|
+
if (value === "fullscreen") {
|
|
11643
11681
|
this.element.isBibFullscreen = true;
|
|
11644
11682
|
// reset the prev position
|
|
11645
|
-
this.element.bib.setAttribute(
|
|
11646
|
-
this.element.bib.style.position =
|
|
11683
|
+
this.element.bib.setAttribute("isfullscreen", "");
|
|
11684
|
+
this.element.bib.style.position = "fixed";
|
|
11647
11685
|
this.element.bib.style.top = "0px";
|
|
11648
11686
|
this.element.bib.style.left = "0px";
|
|
11649
|
-
this.element.bib.style.width =
|
|
11650
|
-
this.element.bib.style.height =
|
|
11651
|
-
this.element.style.contain =
|
|
11687
|
+
this.element.bib.style.width = "";
|
|
11688
|
+
this.element.bib.style.height = "";
|
|
11689
|
+
this.element.style.contain = "";
|
|
11652
11690
|
|
|
11653
11691
|
// reset the size that was mirroring `size` css-part
|
|
11654
|
-
const bibContent =
|
|
11692
|
+
const bibContent =
|
|
11693
|
+
this.element.bib.shadowRoot.querySelector(".container");
|
|
11655
11694
|
if (bibContent) {
|
|
11656
|
-
bibContent.style.width =
|
|
11657
|
-
bibContent.style.height =
|
|
11658
|
-
bibContent.style.maxWidth =
|
|
11695
|
+
bibContent.style.width = "";
|
|
11696
|
+
bibContent.style.height = "";
|
|
11697
|
+
bibContent.style.maxWidth = "";
|
|
11659
11698
|
bibContent.style.maxHeight = `${window?.visualViewport?.height}px`;
|
|
11660
11699
|
this.configureTrial = 0;
|
|
11661
11700
|
} else if (this.configureTrial < MAX_CONFIGURATION_COUNT) {
|
|
@@ -11670,21 +11709,26 @@ class AuroFloatingUI {
|
|
|
11670
11709
|
this.lockScroll(true);
|
|
11671
11710
|
}
|
|
11672
11711
|
} else {
|
|
11673
|
-
this.element.bib.style.position =
|
|
11674
|
-
this.element.bib.removeAttribute(
|
|
11712
|
+
this.element.bib.style.position = "";
|
|
11713
|
+
this.element.bib.removeAttribute("isfullscreen");
|
|
11675
11714
|
this.element.isBibFullscreen = false;
|
|
11676
|
-
this.element.style.contain =
|
|
11715
|
+
this.element.style.contain = "layout";
|
|
11677
11716
|
}
|
|
11678
11717
|
|
|
11679
11718
|
const isChanged = this.strategy && this.strategy !== value;
|
|
11680
11719
|
this.strategy = value;
|
|
11681
11720
|
if (isChanged) {
|
|
11682
|
-
const event = new CustomEvent(
|
|
11683
|
-
|
|
11684
|
-
|
|
11721
|
+
const event = new CustomEvent(
|
|
11722
|
+
this.eventPrefix
|
|
11723
|
+
? `${this.eventPrefix}-strategy-change`
|
|
11724
|
+
: "strategy-change",
|
|
11725
|
+
{
|
|
11726
|
+
detail: {
|
|
11727
|
+
value,
|
|
11728
|
+
},
|
|
11729
|
+
composed: true,
|
|
11685
11730
|
},
|
|
11686
|
-
|
|
11687
|
-
});
|
|
11731
|
+
);
|
|
11688
11732
|
|
|
11689
11733
|
this.element.dispatchEvent(event);
|
|
11690
11734
|
}
|
|
@@ -11716,19 +11760,24 @@ class AuroFloatingUI {
|
|
|
11716
11760
|
return;
|
|
11717
11761
|
}
|
|
11718
11762
|
|
|
11719
|
-
if (
|
|
11720
|
-
this.element.
|
|
11763
|
+
if (
|
|
11764
|
+
this.element.noHideOnThisFocusLoss ||
|
|
11765
|
+
this.element.hasAttribute("noHideOnThisFocusLoss")
|
|
11766
|
+
) {
|
|
11721
11767
|
return;
|
|
11722
11768
|
}
|
|
11723
11769
|
|
|
11724
11770
|
const { activeElement } = document;
|
|
11725
11771
|
// if focus is still inside of trigger or bib, do not close
|
|
11726
|
-
if (
|
|
11772
|
+
if (
|
|
11773
|
+
this.element.contains(activeElement) ||
|
|
11774
|
+
this.element.bib?.contains(activeElement)
|
|
11775
|
+
) {
|
|
11727
11776
|
return;
|
|
11728
11777
|
}
|
|
11729
11778
|
|
|
11730
11779
|
// if fullscreen bib is in fullscreen mode, do not close
|
|
11731
|
-
if (this.element.bib.hasAttribute(
|
|
11780
|
+
if (this.element.bib.hasAttribute("isfullscreen")) {
|
|
11732
11781
|
return;
|
|
11733
11782
|
}
|
|
11734
11783
|
|
|
@@ -11740,12 +11789,27 @@ class AuroFloatingUI {
|
|
|
11740
11789
|
this.focusHandler = () => this.handleFocusLoss();
|
|
11741
11790
|
|
|
11742
11791
|
this.clickHandler = (evt) => {
|
|
11743
|
-
|
|
11744
|
-
|
|
11745
|
-
|
|
11746
|
-
|
|
11792
|
+
// When the bib is fullscreen (modal dialog), don't close on outside
|
|
11793
|
+
// clicks. VoiceOver's synthetic click events inside a top-layer modal
|
|
11794
|
+
// <dialog> may not include the bib in composedPath(), causing false
|
|
11795
|
+
// positives. This mirrors the fullscreen guard in handleFocusLoss().
|
|
11796
|
+
if (this.element.bib && this.element.bib.hasAttribute("isfullscreen")) {
|
|
11797
|
+
return;
|
|
11798
|
+
}
|
|
11799
|
+
|
|
11800
|
+
if (
|
|
11801
|
+
(!evt.composedPath().includes(this.element.trigger) &&
|
|
11802
|
+
!evt.composedPath().includes(this.element.bib)) ||
|
|
11803
|
+
(this.element.bib.backdrop &&
|
|
11804
|
+
evt.composedPath().includes(this.element.bib.backdrop))
|
|
11805
|
+
) {
|
|
11806
|
+
const existedVisibleFloatingUI =
|
|
11807
|
+
document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
|
|
11747
11808
|
|
|
11748
|
-
if (
|
|
11809
|
+
if (
|
|
11810
|
+
existedVisibleFloatingUI &&
|
|
11811
|
+
existedVisibleFloatingUI.element.isPopoverVisible
|
|
11812
|
+
) {
|
|
11749
11813
|
// if something else is open, close that
|
|
11750
11814
|
existedVisibleFloatingUI.hideBib();
|
|
11751
11815
|
document.expandedAuroFormkitDropdown = null;
|
|
@@ -11758,9 +11822,14 @@ class AuroFloatingUI {
|
|
|
11758
11822
|
|
|
11759
11823
|
// ESC key handler
|
|
11760
11824
|
this.keyDownHandler = (evt) => {
|
|
11761
|
-
if (evt.key ===
|
|
11762
|
-
const existedVisibleFloatingUI =
|
|
11763
|
-
|
|
11825
|
+
if (evt.key === "Escape" && this.element.isPopoverVisible) {
|
|
11826
|
+
const existedVisibleFloatingUI =
|
|
11827
|
+
document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
|
|
11828
|
+
if (
|
|
11829
|
+
existedVisibleFloatingUI &&
|
|
11830
|
+
existedVisibleFloatingUI !== this &&
|
|
11831
|
+
existedVisibleFloatingUI.element.isPopoverVisible
|
|
11832
|
+
) {
|
|
11764
11833
|
// if something else is open, let it handle itself
|
|
11765
11834
|
return;
|
|
11766
11835
|
}
|
|
@@ -11768,17 +11837,17 @@ class AuroFloatingUI {
|
|
|
11768
11837
|
}
|
|
11769
11838
|
};
|
|
11770
11839
|
|
|
11771
|
-
if (this.behavior !==
|
|
11840
|
+
if (this.behavior !== "drawer" && this.behavior !== "dialog") {
|
|
11772
11841
|
// Add event listeners using the stored references
|
|
11773
|
-
document.addEventListener(
|
|
11842
|
+
document.addEventListener("focusin", this.focusHandler);
|
|
11774
11843
|
}
|
|
11775
11844
|
|
|
11776
|
-
document.addEventListener(
|
|
11845
|
+
document.addEventListener("keydown", this.keyDownHandler);
|
|
11777
11846
|
|
|
11778
11847
|
// send this task to the end of queue to prevent conflicting
|
|
11779
11848
|
// it conflicts if showBib gets call from a button that's not this.element.trigger
|
|
11780
11849
|
setTimeout(() => {
|
|
11781
|
-
window.addEventListener(
|
|
11850
|
+
window.addEventListener("click", this.clickHandler);
|
|
11782
11851
|
}, 0);
|
|
11783
11852
|
}
|
|
11784
11853
|
|
|
@@ -11786,34 +11855,38 @@ class AuroFloatingUI {
|
|
|
11786
11855
|
// Remove event listeners if they exist
|
|
11787
11856
|
|
|
11788
11857
|
if (this.focusHandler) {
|
|
11789
|
-
document.removeEventListener(
|
|
11858
|
+
document.removeEventListener("focusin", this.focusHandler);
|
|
11790
11859
|
this.focusHandler = null;
|
|
11791
11860
|
}
|
|
11792
11861
|
|
|
11793
11862
|
if (this.clickHandler) {
|
|
11794
|
-
window.removeEventListener(
|
|
11863
|
+
window.removeEventListener("click", this.clickHandler);
|
|
11795
11864
|
this.clickHandler = null;
|
|
11796
11865
|
}
|
|
11797
11866
|
|
|
11798
11867
|
if (this.keyDownHandler) {
|
|
11799
|
-
document.removeEventListener(
|
|
11868
|
+
document.removeEventListener("keydown", this.keyDownHandler);
|
|
11800
11869
|
this.keyDownHandler = null;
|
|
11801
11870
|
}
|
|
11802
11871
|
}
|
|
11803
11872
|
|
|
11804
11873
|
handleUpdate(changedProperties) {
|
|
11805
|
-
if (changedProperties.has(
|
|
11874
|
+
if (changedProperties.has("isPopoverVisible")) {
|
|
11806
11875
|
this.updateState();
|
|
11807
11876
|
}
|
|
11808
11877
|
}
|
|
11809
11878
|
|
|
11810
11879
|
updateCurrentExpandedDropdown() {
|
|
11811
11880
|
// Close any other dropdown that is already open
|
|
11812
|
-
const existedVisibleFloatingUI =
|
|
11813
|
-
|
|
11881
|
+
const existedVisibleFloatingUI =
|
|
11882
|
+
document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
|
|
11883
|
+
if (
|
|
11884
|
+
existedVisibleFloatingUI &&
|
|
11885
|
+
existedVisibleFloatingUI !== this &&
|
|
11814
11886
|
existedVisibleFloatingUI.element.isPopoverVisible &&
|
|
11815
|
-
|
|
11816
|
-
|
|
11887
|
+
existedVisibleFloatingUI.eventPrefix === this.eventPrefix
|
|
11888
|
+
) {
|
|
11889
|
+
existedVisibleFloatingUI.hideBib();
|
|
11817
11890
|
}
|
|
11818
11891
|
|
|
11819
11892
|
document.expandedAuroFloater = this;
|
|
@@ -11822,7 +11895,7 @@ class AuroFloatingUI {
|
|
|
11822
11895
|
showBib() {
|
|
11823
11896
|
if (!this.element.disabled && !this.showing) {
|
|
11824
11897
|
this.updateCurrentExpandedDropdown();
|
|
11825
|
-
this.element.triggerChevron?.setAttribute(
|
|
11898
|
+
this.element.triggerChevron?.setAttribute("data-expanded", true);
|
|
11826
11899
|
|
|
11827
11900
|
// prevent double showing: isPopovervisible gets first and showBib gets called later
|
|
11828
11901
|
if (!this.showing) {
|
|
@@ -11836,9 +11909,13 @@ class AuroFloatingUI {
|
|
|
11836
11909
|
}
|
|
11837
11910
|
|
|
11838
11911
|
// Setup auto update to handle resize and scroll
|
|
11839
|
-
this.element.cleanup = autoUpdate(
|
|
11840
|
-
this.
|
|
11841
|
-
|
|
11912
|
+
this.element.cleanup = autoUpdate(
|
|
11913
|
+
this.element.trigger || this.element.parentNode,
|
|
11914
|
+
this.element.bib,
|
|
11915
|
+
() => {
|
|
11916
|
+
this.position();
|
|
11917
|
+
},
|
|
11918
|
+
);
|
|
11842
11919
|
}
|
|
11843
11920
|
}
|
|
11844
11921
|
|
|
@@ -11849,7 +11926,7 @@ class AuroFloatingUI {
|
|
|
11849
11926
|
hideBib(eventType = "unknown") {
|
|
11850
11927
|
if (!this.element.disabled && !this.element.noToggle) {
|
|
11851
11928
|
this.lockScroll(false);
|
|
11852
|
-
this.element.triggerChevron?.removeAttribute(
|
|
11929
|
+
this.element.triggerChevron?.removeAttribute("data-expanded");
|
|
11853
11930
|
|
|
11854
11931
|
if (this.element.isPopoverVisible) {
|
|
11855
11932
|
this.element.isPopoverVisible = false;
|
|
@@ -11869,13 +11946,16 @@ class AuroFloatingUI {
|
|
|
11869
11946
|
* @param {String} eventType - The event type that triggered the toggle action.
|
|
11870
11947
|
*/
|
|
11871
11948
|
dispatchEventDropdownToggle(eventType) {
|
|
11872
|
-
const event = new CustomEvent(
|
|
11873
|
-
|
|
11874
|
-
|
|
11875
|
-
|
|
11949
|
+
const event = new CustomEvent(
|
|
11950
|
+
this.eventPrefix ? `${this.eventPrefix}-toggled` : "toggled",
|
|
11951
|
+
{
|
|
11952
|
+
detail: {
|
|
11953
|
+
expanded: this.showing,
|
|
11954
|
+
eventType: eventType || "unknown",
|
|
11955
|
+
},
|
|
11956
|
+
composed: true,
|
|
11876
11957
|
},
|
|
11877
|
-
|
|
11878
|
-
});
|
|
11958
|
+
);
|
|
11879
11959
|
|
|
11880
11960
|
this.element.dispatchEvent(event);
|
|
11881
11961
|
}
|
|
@@ -11887,12 +11967,15 @@ class AuroFloatingUI {
|
|
|
11887
11967
|
this.showBib();
|
|
11888
11968
|
}
|
|
11889
11969
|
|
|
11890
|
-
const event = new CustomEvent(
|
|
11891
|
-
|
|
11892
|
-
|
|
11893
|
-
|
|
11894
|
-
|
|
11895
|
-
|
|
11970
|
+
const event = new CustomEvent(
|
|
11971
|
+
this.eventPrefix ? `${this.eventPrefix}-triggerClick` : "triggerClick",
|
|
11972
|
+
{
|
|
11973
|
+
composed: true,
|
|
11974
|
+
detail: {
|
|
11975
|
+
expanded: this.element.isPopoverVisible,
|
|
11976
|
+
},
|
|
11977
|
+
},
|
|
11978
|
+
);
|
|
11896
11979
|
|
|
11897
11980
|
this.element.dispatchEvent(event);
|
|
11898
11981
|
}
|
|
@@ -11900,30 +11983,32 @@ class AuroFloatingUI {
|
|
|
11900
11983
|
handleEvent(event) {
|
|
11901
11984
|
if (!this.element.disableEventShow) {
|
|
11902
11985
|
switch (event.type) {
|
|
11903
|
-
case
|
|
11986
|
+
case "keydown": {
|
|
11904
11987
|
// Support both Enter and Space keys for accessibility
|
|
11905
11988
|
// Space is included as it's expected behavior for interactive elements
|
|
11906
11989
|
|
|
11907
11990
|
const origin = event.composedPath()[0];
|
|
11908
|
-
if (
|
|
11909
|
-
|
|
11991
|
+
if (
|
|
11992
|
+
event.key === "Enter" ||
|
|
11993
|
+
(event.key === " " && (!origin || origin.tagName !== "INPUT"))
|
|
11994
|
+
) {
|
|
11910
11995
|
event.preventDefault();
|
|
11911
11996
|
this.handleClick();
|
|
11912
11997
|
}
|
|
11913
11998
|
break;
|
|
11914
|
-
|
|
11999
|
+
}
|
|
12000
|
+
case "mouseenter":
|
|
11915
12001
|
if (this.element.hoverToggle) {
|
|
11916
12002
|
this.showBib();
|
|
11917
12003
|
}
|
|
11918
12004
|
break;
|
|
11919
|
-
case
|
|
12005
|
+
case "mouseleave":
|
|
11920
12006
|
if (this.element.hoverToggle) {
|
|
11921
12007
|
this.hideBib("mouseleave");
|
|
11922
12008
|
}
|
|
11923
12009
|
break;
|
|
11924
|
-
case
|
|
12010
|
+
case "focus":
|
|
11925
12011
|
if (this.element.focusShow) {
|
|
11926
|
-
|
|
11927
12012
|
/*
|
|
11928
12013
|
This needs to better handle clicking that gives focus -
|
|
11929
12014
|
currently it shows and then immediately hides the bib
|
|
@@ -11931,12 +12016,12 @@ class AuroFloatingUI {
|
|
|
11931
12016
|
this.showBib();
|
|
11932
12017
|
}
|
|
11933
12018
|
break;
|
|
11934
|
-
case
|
|
12019
|
+
case "blur":
|
|
11935
12020
|
// send this task 100ms later queue to
|
|
11936
12021
|
// wait a frame in case focus moves within the floating element/bib
|
|
11937
12022
|
setTimeout(() => this.handleFocusLoss(), 0);
|
|
11938
12023
|
break;
|
|
11939
|
-
case
|
|
12024
|
+
case "click":
|
|
11940
12025
|
if (document.activeElement === document.body) {
|
|
11941
12026
|
event.currentTarget.focus();
|
|
11942
12027
|
}
|
|
@@ -11955,15 +12040,15 @@ class AuroFloatingUI {
|
|
|
11955
12040
|
*/
|
|
11956
12041
|
handleTriggerTabIndex() {
|
|
11957
12042
|
const focusableElementSelectors = [
|
|
11958
|
-
|
|
11959
|
-
|
|
12043
|
+
"a",
|
|
12044
|
+
"button",
|
|
11960
12045
|
'input:not([type="hidden"])',
|
|
11961
|
-
|
|
11962
|
-
|
|
12046
|
+
"select",
|
|
12047
|
+
"textarea",
|
|
11963
12048
|
'[tabindex]:not([tabindex="-1"])',
|
|
11964
|
-
|
|
11965
|
-
|
|
11966
|
-
|
|
12049
|
+
"auro-button",
|
|
12050
|
+
"auro-input",
|
|
12051
|
+
"auro-hyperlink",
|
|
11967
12052
|
];
|
|
11968
12053
|
|
|
11969
12054
|
const triggerNode = this.element.querySelectorAll('[slot="trigger"]')[0];
|
|
@@ -11991,10 +12076,10 @@ class AuroFloatingUI {
|
|
|
11991
12076
|
* @param {*} eventPrefix
|
|
11992
12077
|
*/
|
|
11993
12078
|
regenerateBibId() {
|
|
11994
|
-
this.id = this.element.getAttribute(
|
|
12079
|
+
this.id = this.element.getAttribute("id");
|
|
11995
12080
|
if (!this.id) {
|
|
11996
12081
|
this.id = window.crypto.randomUUID();
|
|
11997
|
-
this.element.setAttribute(
|
|
12082
|
+
this.element.setAttribute("id", this.id);
|
|
11998
12083
|
}
|
|
11999
12084
|
|
|
12000
12085
|
this.element.bib.setAttribute("id", `${this.id}-floater-bib`);
|
|
@@ -12015,11 +12100,15 @@ class AuroFloatingUI {
|
|
|
12015
12100
|
if (this.element.trigger) {
|
|
12016
12101
|
this.disconnect();
|
|
12017
12102
|
}
|
|
12018
|
-
this.element.trigger =
|
|
12019
|
-
|
|
12020
|
-
|
|
12021
|
-
|
|
12022
|
-
|
|
12103
|
+
this.element.trigger =
|
|
12104
|
+
this.element.triggerElement ||
|
|
12105
|
+
this.element.shadowRoot.querySelector("#trigger") ||
|
|
12106
|
+
this.element.trigger;
|
|
12107
|
+
this.element.bib =
|
|
12108
|
+
this.element.shadowRoot.querySelector("#bib") || this.element.bib;
|
|
12109
|
+
this.element.bibSizer = this.element.shadowRoot.querySelector("#bibSizer");
|
|
12110
|
+
this.element.triggerChevron =
|
|
12111
|
+
this.element.shadowRoot.querySelector("#showStateIcon");
|
|
12023
12112
|
|
|
12024
12113
|
if (this.element.floaterConfig) {
|
|
12025
12114
|
this.element.hoverToggle = this.element.floaterConfig.hoverToggle;
|
|
@@ -12030,12 +12119,12 @@ class AuroFloatingUI {
|
|
|
12030
12119
|
|
|
12031
12120
|
this.handleEvent = this.handleEvent.bind(this);
|
|
12032
12121
|
if (this.element.trigger) {
|
|
12033
|
-
this.element.trigger.addEventListener(
|
|
12034
|
-
this.element.trigger.addEventListener(
|
|
12035
|
-
this.element.trigger.addEventListener(
|
|
12036
|
-
this.element.trigger.addEventListener(
|
|
12037
|
-
this.element.trigger.addEventListener(
|
|
12038
|
-
this.element.trigger.addEventListener(
|
|
12122
|
+
this.element.trigger.addEventListener("keydown", this.handleEvent);
|
|
12123
|
+
this.element.trigger.addEventListener("click", this.handleEvent);
|
|
12124
|
+
this.element.trigger.addEventListener("mouseenter", this.handleEvent);
|
|
12125
|
+
this.element.trigger.addEventListener("mouseleave", this.handleEvent);
|
|
12126
|
+
this.element.trigger.addEventListener("focus", this.handleEvent);
|
|
12127
|
+
this.element.trigger.addEventListener("blur", this.handleEvent);
|
|
12039
12128
|
}
|
|
12040
12129
|
}
|
|
12041
12130
|
|
|
@@ -12050,12 +12139,18 @@ class AuroFloatingUI {
|
|
|
12050
12139
|
|
|
12051
12140
|
// Remove event & keyboard listeners
|
|
12052
12141
|
if (this.element?.trigger) {
|
|
12053
|
-
this.element.trigger.removeEventListener(
|
|
12054
|
-
this.element.trigger.removeEventListener(
|
|
12055
|
-
this.element.trigger.removeEventListener(
|
|
12056
|
-
|
|
12057
|
-
|
|
12058
|
-
|
|
12142
|
+
this.element.trigger.removeEventListener("keydown", this.handleEvent);
|
|
12143
|
+
this.element.trigger.removeEventListener("click", this.handleEvent);
|
|
12144
|
+
this.element.trigger.removeEventListener(
|
|
12145
|
+
"mouseenter",
|
|
12146
|
+
this.handleEvent,
|
|
12147
|
+
);
|
|
12148
|
+
this.element.trigger.removeEventListener(
|
|
12149
|
+
"mouseleave",
|
|
12150
|
+
this.handleEvent,
|
|
12151
|
+
);
|
|
12152
|
+
this.element.trigger.removeEventListener("focus", this.handleEvent);
|
|
12153
|
+
this.element.trigger.removeEventListener("blur", this.handleEvent);
|
|
12059
12154
|
}
|
|
12060
12155
|
}
|
|
12061
12156
|
}
|
|
@@ -12502,7 +12597,7 @@ let p$3 = class p{registerComponent(t,a){customElements.get(t)||customElements.d
|
|
|
12502
12597
|
|
|
12503
12598
|
var iconVersion$2 = '9.1.2';
|
|
12504
12599
|
|
|
12505
|
-
var styleCss$2$1 = 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}
|
|
12600
|
+
var styleCss$2$1 = css`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host dialog{width:auto;max-width:none;height:auto;max-height:none;padding:0;border:none;margin:0;outline:none;transform:translateZ(0)}:host dialog::backdrop{background:transparent}:host(:not([isfullscreen])) dialog{position:relative;inset: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}:host(:not([isfullscreen])) .container[class*=shape-rounded]{border-radius:16px}: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([isfullscreen]) .container::backdrop{background:var(--ds-color-background-primary, #fff)}: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}.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}.util_displayHiddenVisually{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip-path:inset(50%);white-space:nowrap}`;
|
|
12506
12601
|
|
|
12507
12602
|
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)}`;
|
|
12508
12603
|
|
|
@@ -12510,6 +12605,8 @@ var tokensCss$1$1 = css`:host(:not([ondark])),:host(:not([appearance=inverse])){
|
|
|
12510
12605
|
|
|
12511
12606
|
// Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
12512
12607
|
// See LICENSE in the project root for license information.
|
|
12608
|
+
/* eslint-disable max-lines */
|
|
12609
|
+
// ---------------------------------------------------------------------
|
|
12513
12610
|
|
|
12514
12611
|
|
|
12515
12612
|
const DESIGN_TOKEN_BREAKPOINT_PREFIX = '--ds-grid-breakpoint-';
|
|
@@ -12604,6 +12701,28 @@ class AuroDropdownBib extends LitElement {
|
|
|
12604
12701
|
shape: {
|
|
12605
12702
|
type: String,
|
|
12606
12703
|
reflect: true
|
|
12704
|
+
},
|
|
12705
|
+
|
|
12706
|
+
/**
|
|
12707
|
+
* Accessible label for the dialog element, used when displayed as a modal.
|
|
12708
|
+
* Applied via aria-labelledby on a visually hidden element rather than
|
|
12709
|
+
* aria-label because iOS VoiceOver does not reliably read aria-label
|
|
12710
|
+
* on <dialog> elements.
|
|
12711
|
+
* @private
|
|
12712
|
+
*/
|
|
12713
|
+
dialogLabel: {
|
|
12714
|
+
type: String
|
|
12715
|
+
},
|
|
12716
|
+
|
|
12717
|
+
/**
|
|
12718
|
+
* Overrides the native role of the dialog element.
|
|
12719
|
+
* For example, set to `"presentation"` on desktop combobox to prevent
|
|
12720
|
+
* VoiceOver from announcing "listbox inside of a dialog".
|
|
12721
|
+
* When `undefined`, the dialog keeps its native role.
|
|
12722
|
+
* @private
|
|
12723
|
+
*/
|
|
12724
|
+
dialogRole: {
|
|
12725
|
+
type: String
|
|
12607
12726
|
}
|
|
12608
12727
|
};
|
|
12609
12728
|
}
|
|
@@ -12671,7 +12790,10 @@ class AuroDropdownBib extends LitElement {
|
|
|
12671
12790
|
firstUpdated(changedProperties) {
|
|
12672
12791
|
super.firstUpdated(changedProperties);
|
|
12673
12792
|
|
|
12674
|
-
|
|
12793
|
+
const dialog = this.shadowRoot.querySelector('dialog');
|
|
12794
|
+
this._setupCancelHandler(dialog);
|
|
12795
|
+
this._setupKeyboardBridge(dialog);
|
|
12796
|
+
|
|
12675
12797
|
this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
|
|
12676
12798
|
bubbles: true,
|
|
12677
12799
|
composed: true,
|
|
@@ -12681,6 +12803,189 @@ class AuroDropdownBib extends LitElement {
|
|
|
12681
12803
|
}));
|
|
12682
12804
|
}
|
|
12683
12805
|
|
|
12806
|
+
/**
|
|
12807
|
+
* Forwards the dialog's native `cancel` event (fired on ESC) as
|
|
12808
|
+
* an `auro-bib-cancel` custom event so parent components can close.
|
|
12809
|
+
* @param {HTMLDialogElement} dialog
|
|
12810
|
+
* @private
|
|
12811
|
+
*/
|
|
12812
|
+
_setupCancelHandler(dialog) {
|
|
12813
|
+
dialog.addEventListener('cancel', (event) => {
|
|
12814
|
+
event.preventDefault();
|
|
12815
|
+
this.dispatchEvent(new CustomEvent('auro-bib-cancel', {
|
|
12816
|
+
bubbles: true,
|
|
12817
|
+
composed: true
|
|
12818
|
+
}));
|
|
12819
|
+
});
|
|
12820
|
+
}
|
|
12821
|
+
|
|
12822
|
+
/**
|
|
12823
|
+
* showModal() creates a closed focus scope — keyboard events inside
|
|
12824
|
+
* the dialog's shadow DOM do NOT bubble out to the combobox/select
|
|
12825
|
+
* keydown handlers in the parent shadow DOM. This handler bridges
|
|
12826
|
+
* that gap by re-dispatching navigation keys so they cross the
|
|
12827
|
+
* shadow boundary and reach the menu navigation logic in the parent
|
|
12828
|
+
* component.
|
|
12829
|
+
*
|
|
12830
|
+
* The trade-off: intercepting these keys means native keyboard
|
|
12831
|
+
* behaviors that would normally "just work" must be manually
|
|
12832
|
+
* re-implemented here:
|
|
12833
|
+
*
|
|
12834
|
+
* - Enter on buttons: Custom elements (auro-button) don't get the
|
|
12835
|
+
* native Enter→click that <button> provides, so we call .click()
|
|
12836
|
+
* directly when Enter is pressed on a button-like element.
|
|
12837
|
+
*
|
|
12838
|
+
* - Tab: Intercepted and re-dispatched so parent components
|
|
12839
|
+
* (select/combobox) can select the active option and close the
|
|
12840
|
+
* dialog. The <dialog> provides containment and isolation
|
|
12841
|
+
* (inert background, VoiceOver focus trapping, top layer), while
|
|
12842
|
+
* the content inside is a role="listbox" navigated via
|
|
12843
|
+
* aria-activedescendant (options are not focusable). Tab keyboard
|
|
12844
|
+
* behavior follows listbox conventions (select + close) because
|
|
12845
|
+
* the dialog's native Tab trap only cycles between the close
|
|
12846
|
+
* button and browser chrome.
|
|
12847
|
+
*
|
|
12848
|
+
* - Escape: The native <dialog> fires a `cancel` event on ESC
|
|
12849
|
+
* (handled by _setupCancelHandler), so the re-dispatched Escape
|
|
12850
|
+
* is a secondary path for parent components that also listen for
|
|
12851
|
+
* Escape keydown.
|
|
12852
|
+
*
|
|
12853
|
+
* @param {HTMLDialogElement} dialog
|
|
12854
|
+
* @private
|
|
12855
|
+
*/
|
|
12856
|
+
_setupKeyboardBridge(dialog) {
|
|
12857
|
+
const navKeys = new Set([
|
|
12858
|
+
'ArrowUp',
|
|
12859
|
+
'ArrowDown',
|
|
12860
|
+
'Enter',
|
|
12861
|
+
'Escape',
|
|
12862
|
+
'Tab'
|
|
12863
|
+
]);
|
|
12864
|
+
|
|
12865
|
+
dialog.addEventListener('keydown', (event) => {
|
|
12866
|
+
if (!navKeys.has(event.key)) {
|
|
12867
|
+
return;
|
|
12868
|
+
}
|
|
12869
|
+
|
|
12870
|
+
// Custom elements (auro-button) don't get the native Enter→click
|
|
12871
|
+
// behavior that <button> has. Find the button in the composed path
|
|
12872
|
+
// and click it directly.
|
|
12873
|
+
if (event.key === 'Enter') {
|
|
12874
|
+
const buttonSelector = 'button, [role="button"], auro-button, [auro-button]';
|
|
12875
|
+
const btn = event.composedPath().find((el) => el.matches && el.matches(buttonSelector));
|
|
12876
|
+
if (btn) {
|
|
12877
|
+
event.preventDefault();
|
|
12878
|
+
event.stopPropagation();
|
|
12879
|
+
btn.click();
|
|
12880
|
+
return;
|
|
12881
|
+
}
|
|
12882
|
+
}
|
|
12883
|
+
|
|
12884
|
+
event.preventDefault();
|
|
12885
|
+
event.stopPropagation();
|
|
12886
|
+
const newEvent = new KeyboardEvent('keydown', {
|
|
12887
|
+
key: event.key,
|
|
12888
|
+
code: event.code,
|
|
12889
|
+
shiftKey: event.shiftKey,
|
|
12890
|
+
altKey: event.altKey,
|
|
12891
|
+
ctrlKey: event.ctrlKey,
|
|
12892
|
+
metaKey: event.metaKey,
|
|
12893
|
+
bubbles: true,
|
|
12894
|
+
composed: true,
|
|
12895
|
+
cancelable: true
|
|
12896
|
+
});
|
|
12897
|
+
this.dispatchEvent(newEvent);
|
|
12898
|
+
});
|
|
12899
|
+
}
|
|
12900
|
+
|
|
12901
|
+
/**
|
|
12902
|
+
* Blocks touch-driven page scroll while a fullscreen modal dialog is open.
|
|
12903
|
+
*
|
|
12904
|
+
* The showModal() function places the dialog in the browser's **top layer**,
|
|
12905
|
+
* which is a separate rendering layer above the normal DOM. On mobile, the
|
|
12906
|
+
* compositor processes visual-viewport panning before top-layer touch
|
|
12907
|
+
* handling. This means the entire viewport — including the top-layer dialog
|
|
12908
|
+
* — can be panned by a touch gesture, causing the page behind the dialog to
|
|
12909
|
+
* scroll into view. To prevent this, we add a touchmove listener that cancels
|
|
12910
|
+
* the event if the touch started outside the dialog or any scrollable child within it.
|
|
12911
|
+
*
|
|
12912
|
+
* @private
|
|
12913
|
+
*/
|
|
12914
|
+
_lockTouchScroll() {
|
|
12915
|
+
const dialog = this.shadowRoot.querySelector('dialog');
|
|
12916
|
+
|
|
12917
|
+
this._touchMoveHandler = (event) => {
|
|
12918
|
+
// Walk the composed path (which crosses shadow DOM boundaries) to
|
|
12919
|
+
// check whether the touch started inside a scrollable element that
|
|
12920
|
+
// lives within the dialog. If so, allow the scroll.
|
|
12921
|
+
for (const el of event.composedPath()) {
|
|
12922
|
+
if (el === dialog) {
|
|
12923
|
+
// Reached the dialog boundary without finding a scrollable child.
|
|
12924
|
+
break;
|
|
12925
|
+
}
|
|
12926
|
+
if (el instanceof HTMLElement && el.scrollHeight > el.clientHeight) {
|
|
12927
|
+
const { overflowY } = getComputedStyle(el);
|
|
12928
|
+
if (overflowY === 'auto' || overflowY === 'scroll') {
|
|
12929
|
+
return;
|
|
12930
|
+
}
|
|
12931
|
+
}
|
|
12932
|
+
}
|
|
12933
|
+
|
|
12934
|
+
event.preventDefault();
|
|
12935
|
+
};
|
|
12936
|
+
|
|
12937
|
+
document.addEventListener('touchmove', this._touchMoveHandler, { passive: false });
|
|
12938
|
+
}
|
|
12939
|
+
|
|
12940
|
+
/**
|
|
12941
|
+
* Removes the touchmove listener added by _lockTouchScroll().
|
|
12942
|
+
* @private
|
|
12943
|
+
*/
|
|
12944
|
+
_unlockTouchScroll() {
|
|
12945
|
+
if (this._touchMoveHandler) {
|
|
12946
|
+
document.removeEventListener('touchmove', this._touchMoveHandler);
|
|
12947
|
+
this._touchMoveHandler = undefined;
|
|
12948
|
+
}
|
|
12949
|
+
}
|
|
12950
|
+
|
|
12951
|
+
open(modal = true) {
|
|
12952
|
+
const dialog = this.shadowRoot.querySelector('dialog');
|
|
12953
|
+
if (dialog && !dialog.open) {
|
|
12954
|
+
if (modal) {
|
|
12955
|
+
// Prevent showModal() from scrolling the page to bring the dialog
|
|
12956
|
+
// into view. Locking overflow on <html> blocks the viewport scroll
|
|
12957
|
+
// that browsers perform natively; we release it immediately after
|
|
12958
|
+
// so it doesn't interfere with the modal's focus management.
|
|
12959
|
+
const { documentElement } = document;
|
|
12960
|
+
const prevOverflow = documentElement.style.overflow;
|
|
12961
|
+
documentElement.style.overflow = 'hidden';
|
|
12962
|
+
|
|
12963
|
+
dialog.showModal();
|
|
12964
|
+
|
|
12965
|
+
documentElement.style.overflow = prevOverflow;
|
|
12966
|
+
|
|
12967
|
+
this._lockTouchScroll();
|
|
12968
|
+
|
|
12969
|
+
} else {
|
|
12970
|
+
// Use setAttribute instead of dialog.show() to avoid the dialog
|
|
12971
|
+
// focusing steps which steal focus from the trigger and cause
|
|
12972
|
+
// the floater's handleFocusLoss() to immediately hide the bib.
|
|
12973
|
+
dialog.setAttribute('open', '');
|
|
12974
|
+
}
|
|
12975
|
+
}
|
|
12976
|
+
}
|
|
12977
|
+
|
|
12978
|
+
/**
|
|
12979
|
+
* Closes the dialog.
|
|
12980
|
+
*/
|
|
12981
|
+
close() {
|
|
12982
|
+
const dialog = this.shadowRoot.querySelector('dialog');
|
|
12983
|
+
if (dialog && dialog.open) {
|
|
12984
|
+
this._unlockTouchScroll();
|
|
12985
|
+
dialog.close();
|
|
12986
|
+
}
|
|
12987
|
+
}
|
|
12988
|
+
|
|
12684
12989
|
// function that renders the HTML and CSS into the scope of the component
|
|
12685
12990
|
render() {
|
|
12686
12991
|
const classes = {
|
|
@@ -12692,9 +12997,10 @@ class AuroDropdownBib extends LitElement {
|
|
|
12692
12997
|
classes[`shape-${this.shape}`] = true;
|
|
12693
12998
|
|
|
12694
12999
|
return html$1`
|
|
12695
|
-
<
|
|
13000
|
+
<dialog class="${classMap(classes)}" part="bibContainer" role="${ifDefined(this.dialogRole)}" aria-labelledby="${ifDefined(this.dialogLabel ? 'dialogLabel' : undefined)}">
|
|
13001
|
+
${this.dialogLabel ? html$1`<span id="dialogLabel" class="util_displayHiddenVisually" aria-hidden="true">${this.dialogLabel}</span>` : ''}
|
|
12696
13002
|
<slot></slot>
|
|
12697
|
-
</
|
|
13003
|
+
</dialog>
|
|
12698
13004
|
`;
|
|
12699
13005
|
}
|
|
12700
13006
|
}
|
|
@@ -12703,7 +13009,7 @@ var shapeSizeCss$1 = css`.shape-classic-xl,.shape-classic-lg,.shape-classic-md,.
|
|
|
12703
13009
|
|
|
12704
13010
|
var colorCss$1$1 = css`:host(:not([layout*=classic])){--ds-auro-dropdown-trigger-border-color: transparent}:host(:not([disabled],[onDark])) .wrapper:focus-within,:host(:not([disabled],[onDark])) .wrapper:active,:host(:not([disabled],[appearance=inverse])) .wrapper:focus-within,:host(:not([disabled],[appearance=inverse])) .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([disabled],[onDark])) .wrapper:hover,:host(:not([disabled],[appearance=inverse])) .wrapper:hover{--ds-auro-dropdown-trigger-background-color: var(--ds-auro-dropdown-trigger-hover-background-color)}:host(:not([ondark])) .wrapper,:host(:not([appearance=inverse])) .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])[disabled]),:host(:not([appearance=inverse])[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])[disabled]) #triggerLabel,:host(:not([appearance=inverse])[disabled]) #triggerLabel{cursor:default}:host(:not([ondark])[error]),:host(:not([appearance=inverse])[error]){--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error, #e31f26)}:host(:not([disabled])[onDark]) .wrapper:focus-within,:host(:not([disabled])[onDark]) .wrapper:active,:host(:not([disabled])[appearance=inverse]) .wrapper:focus-within,:host(:not([disabled])[appearance=inverse]) .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(:not([disabled])[onDark]) .wrapper:hover,:host(:not([disabled])[appearance=inverse]) .wrapper:hover{--ds-auro-dropdown-trigger-background-color: var(--ds-auro-dropdown-trigger-hover-background-color)}:host([onDark]) .label,:host([onDark]) .helpText,:host([appearance=inverse]) .label,:host([appearance=inverse]) .helpText{color:var(--ds-auro-dropdown-label-text-color)}:host([onDark]) .wrapper,:host([appearance=inverse]) .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][disabled]),:host([appearance=inverse][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][disabled]) #triggerLabel,:host([appearance=inverse][disabled]) #triggerLabel{cursor:default}:host([ondark][error]),:host([appearance=inverse][error]){--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}`;
|
|
12705
13011
|
|
|
12706
|
-
var styleCss$1$1 = css`:host{position:relative;display:block;text-align:left}
|
|
13012
|
+
var styleCss$1$1 = css`:host{position:relative;display:block;text-align:left}:host([open]){z-index:var(--depth-tooltip, 400)}.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([matchwidth]) #bibSizer{width:100%}`;
|
|
12707
13013
|
|
|
12708
13014
|
var classicColorCss$1 = css``;
|
|
12709
13015
|
|
|
@@ -12941,7 +13247,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
|
|
|
12941
13247
|
}
|
|
12942
13248
|
};
|
|
12943
13249
|
|
|
12944
|
-
var formkitVersion$1 = '
|
|
13250
|
+
var formkitVersion$1 = '202603102257';
|
|
12945
13251
|
|
|
12946
13252
|
let AuroElement$2 = class AuroElement extends LitElement {
|
|
12947
13253
|
static get properties() {
|
|
@@ -13055,7 +13361,7 @@ let AuroElement$2 = class AuroElement extends LitElement {
|
|
|
13055
13361
|
* The `auro-dropdown` element provides a way to place content in a bib that can be toggled.
|
|
13056
13362
|
* @customElement auro-dropdown
|
|
13057
13363
|
*
|
|
13058
|
-
* @slot - Default slot for the
|
|
13364
|
+
* @slot - Default slot for the dropdown bib content.
|
|
13059
13365
|
* @slot helpText - Defines the content of the helpText.
|
|
13060
13366
|
* @slot trigger - Defines the content of the trigger.
|
|
13061
13367
|
* @csspart trigger - The trigger content container.
|
|
@@ -13067,6 +13373,13 @@ let AuroElement$2 = class AuroElement extends LitElement {
|
|
|
13067
13373
|
* @event auroDropdown-idAdded - Notifies consumers that the unique ID for the dropdown bib has been generated.
|
|
13068
13374
|
*/
|
|
13069
13375
|
class AuroDropdown extends AuroElement$2 {
|
|
13376
|
+
static get shadowRootOptions() {
|
|
13377
|
+
return {
|
|
13378
|
+
...AuroElement$2.shadowRootOptions,
|
|
13379
|
+
delegatesFocus: true,
|
|
13380
|
+
};
|
|
13381
|
+
}
|
|
13382
|
+
|
|
13070
13383
|
constructor() {
|
|
13071
13384
|
super();
|
|
13072
13385
|
|
|
@@ -13132,15 +13445,6 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13132
13445
|
this.shift = false;
|
|
13133
13446
|
this.autoPlacement = false;
|
|
13134
13447
|
|
|
13135
|
-
/**
|
|
13136
|
-
* @private
|
|
13137
|
-
* @property {boolean} delegatesFocus - Whether the shadow root delegates focus.
|
|
13138
|
-
*/
|
|
13139
|
-
this.constructor.shadowRootOptions = {
|
|
13140
|
-
...LitElement.shadowRootOptions,
|
|
13141
|
-
delegatesFocus: true,
|
|
13142
|
-
};
|
|
13143
|
-
|
|
13144
13448
|
/**
|
|
13145
13449
|
* @private
|
|
13146
13450
|
*/
|
|
@@ -13214,6 +13518,18 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13214
13518
|
*/
|
|
13215
13519
|
show() {
|
|
13216
13520
|
this.floater.showBib();
|
|
13521
|
+
|
|
13522
|
+
// Open dialog synchronously so callers remain in the user gesture
|
|
13523
|
+
// chain. This is critical for mobile browsers (iOS Safari) to keep
|
|
13524
|
+
// the virtual keyboard open when transitioning from the trigger
|
|
13525
|
+
// input to an input inside the fullscreen dialog. Without this,
|
|
13526
|
+
// showModal() fires asynchronously via Lit's update cycle, which
|
|
13527
|
+
// falls outside the user activation window and causes iOS to
|
|
13528
|
+
// dismiss the keyboard.
|
|
13529
|
+
if (this.isBibFullscreen && this.bibElement && this.bibElement.value) {
|
|
13530
|
+
const useModal = !this.disableFocusTrap;
|
|
13531
|
+
this.bibElement.value.open(useModal);
|
|
13532
|
+
}
|
|
13217
13533
|
}
|
|
13218
13534
|
|
|
13219
13535
|
/**
|
|
@@ -13221,13 +13537,37 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13221
13537
|
* If not, trigger element will get focus.
|
|
13222
13538
|
*/
|
|
13223
13539
|
focus() {
|
|
13224
|
-
if (this.isPopoverVisible && this.
|
|
13225
|
-
this.
|
|
13540
|
+
if (this.isPopoverVisible && this.bibContent) {
|
|
13541
|
+
const focusables = getFocusableElements(this.bibContent);
|
|
13542
|
+
if (focusables.length > 0) {
|
|
13543
|
+
focusables[0].focus();
|
|
13544
|
+
}
|
|
13226
13545
|
} else {
|
|
13227
13546
|
this.trigger.focus();
|
|
13228
13547
|
}
|
|
13229
13548
|
}
|
|
13230
13549
|
|
|
13550
|
+
/**
|
|
13551
|
+
* Sets the active descendant element for accessibility.
|
|
13552
|
+
* Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
|
|
13553
|
+
* This function is used in components that contain `auro-dropdown` to set the active descendant.
|
|
13554
|
+
* @private
|
|
13555
|
+
* @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
|
|
13556
|
+
* @returns {void}
|
|
13557
|
+
*/
|
|
13558
|
+
setActiveDescendant(element) {
|
|
13559
|
+
if (!this.trigger) {
|
|
13560
|
+
return;
|
|
13561
|
+
}
|
|
13562
|
+
|
|
13563
|
+
if (element) {
|
|
13564
|
+
this.trigger.ariaActiveDescendantElement = element;
|
|
13565
|
+
} else {
|
|
13566
|
+
this.trigger.ariaActiveDescendantElement = null;
|
|
13567
|
+
this.trigger.removeAttribute('aria-activedescendant');
|
|
13568
|
+
}
|
|
13569
|
+
}
|
|
13570
|
+
|
|
13231
13571
|
// function to define props used within the scope of this component
|
|
13232
13572
|
static get properties() {
|
|
13233
13573
|
return {
|
|
@@ -13485,6 +13825,16 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13485
13825
|
*/
|
|
13486
13826
|
tabIndex: {
|
|
13487
13827
|
type: Number
|
|
13828
|
+
},
|
|
13829
|
+
|
|
13830
|
+
/**
|
|
13831
|
+
* Accessible label for the dropdown bib dialog element.
|
|
13832
|
+
* @private
|
|
13833
|
+
*/
|
|
13834
|
+
bibDialogLabel: {
|
|
13835
|
+
type: String,
|
|
13836
|
+
attribute: false,
|
|
13837
|
+
reflect: false
|
|
13488
13838
|
}
|
|
13489
13839
|
};
|
|
13490
13840
|
}
|
|
@@ -13536,7 +13886,10 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13536
13886
|
|
|
13537
13887
|
disconnectedCallback() {
|
|
13538
13888
|
super.disconnectedCallback();
|
|
13539
|
-
this.floater
|
|
13889
|
+
if (this.floater) {
|
|
13890
|
+
this.floater.hideBib('disconnect');
|
|
13891
|
+
this.floater.disconnect();
|
|
13892
|
+
}
|
|
13540
13893
|
this.clearTriggerFocusEventBinding();
|
|
13541
13894
|
}
|
|
13542
13895
|
|
|
@@ -13558,11 +13911,22 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13558
13911
|
|
|
13559
13912
|
if (changedProperties.has('isPopoverVisible') && this.bibElement.value) {
|
|
13560
13913
|
if (this.isPopoverVisible) {
|
|
13561
|
-
|
|
13914
|
+
// Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
|
|
13915
|
+
// Desktop: use show() for Floating UI positioning + FocusTrap for focus management
|
|
13916
|
+
const useModal = this.isBibFullscreen && !this.disableFocusTrap;
|
|
13917
|
+
this.bibElement.value.open(useModal);
|
|
13562
13918
|
} else {
|
|
13563
|
-
this.bibElement.value.
|
|
13919
|
+
this.bibElement.value.close();
|
|
13564
13920
|
}
|
|
13565
13921
|
}
|
|
13922
|
+
|
|
13923
|
+
// When fullscreen strategy changes while open, re-open dialog with correct mode
|
|
13924
|
+
// (e.g. resizing from desktop → mobile while dropdown is open)
|
|
13925
|
+
if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
|
|
13926
|
+
const useModal = this.isBibFullscreen && !this.disableFocusTrap;
|
|
13927
|
+
this.bibElement.value.close();
|
|
13928
|
+
this.bibElement.value.open(useModal);
|
|
13929
|
+
}
|
|
13566
13930
|
}
|
|
13567
13931
|
|
|
13568
13932
|
/**
|
|
@@ -13580,11 +13944,28 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13580
13944
|
}
|
|
13581
13945
|
|
|
13582
13946
|
firstUpdated() {
|
|
13583
|
-
|
|
13584
13947
|
// Configure the floater to, this will generate the ID for the bib
|
|
13585
13948
|
this.floater.configure(this, 'auroDropdown');
|
|
13949
|
+
|
|
13950
|
+
// Prevent `contain: layout` on the dropdown host. Layout containment
|
|
13951
|
+
// creates a containing block for position:fixed descendants (the bib),
|
|
13952
|
+
// which clips the bib inside ancestor overflow contexts such as a
|
|
13953
|
+
// <dialog> element. Without it, the bib's position:fixed is relative
|
|
13954
|
+
// to the viewport, letting Floating UI's flip middleware detect
|
|
13955
|
+
// viewport boundaries and the bib escape overflow clipping.
|
|
13956
|
+
const origConfigureBibStrategy = this.floater.configureBibStrategy.bind(this.floater);
|
|
13957
|
+
this.floater.configureBibStrategy = (value) => {
|
|
13958
|
+
origConfigureBibStrategy(value);
|
|
13959
|
+
this.style.contain = '';
|
|
13960
|
+
};
|
|
13961
|
+
|
|
13586
13962
|
this.addEventListener('auroDropdown-toggled', this.handleDropdownToggle);
|
|
13587
13963
|
|
|
13964
|
+
// Handle ESC key from dialog's cancel event
|
|
13965
|
+
this.addEventListener('auro-bib-cancel', () => {
|
|
13966
|
+
this.floater.hideBib('keydown');
|
|
13967
|
+
});
|
|
13968
|
+
|
|
13588
13969
|
/**
|
|
13589
13970
|
* @description Let subscribers know that the dropdown ID ha been generated and added.
|
|
13590
13971
|
* @event auroDropdown-idAdded
|
|
@@ -13592,9 +13973,9 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13592
13973
|
*/
|
|
13593
13974
|
this.dispatchEvent(new CustomEvent('auroDropdown-idAdded', {detail: {id: this.floater.element.id}}));
|
|
13594
13975
|
|
|
13595
|
-
// Set the bib ID locally
|
|
13976
|
+
// Set the bib ID locally for aria-controls (must be in the same shadow root as the trigger)
|
|
13596
13977
|
if (!this.triggerContentFocusable) {
|
|
13597
|
-
this.dropdownId = this.floater.element.id;
|
|
13978
|
+
this.dropdownId = this.floater.element.bib.id;
|
|
13598
13979
|
}
|
|
13599
13980
|
|
|
13600
13981
|
this.bibContent = this.floater.element.bib;
|
|
@@ -13654,21 +14035,20 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13654
14035
|
* @private
|
|
13655
14036
|
*/
|
|
13656
14037
|
updateFocusTrap() {
|
|
13657
|
-
// If the dropdown is open, create a focus trap and focus the first element
|
|
13658
14038
|
if (this.isPopoverVisible && !this.disableFocusTrap) {
|
|
13659
|
-
|
|
13660
|
-
|
|
14039
|
+
if (!this.isBibFullscreen) {
|
|
14040
|
+
// Desktop: show() doesn't trap focus, so use FocusTrap
|
|
14041
|
+
this.focusTrap = new FocusTrap(this.bibContent);
|
|
14042
|
+
this.focusTrap.focusFirstElement();
|
|
14043
|
+
}
|
|
14044
|
+
// Fullscreen: showModal() provides native focus trapping
|
|
13661
14045
|
return;
|
|
13662
14046
|
}
|
|
13663
14047
|
|
|
13664
|
-
|
|
13665
|
-
|
|
13666
|
-
|
|
14048
|
+
if (this.focusTrap) {
|
|
14049
|
+
this.focusTrap.disconnect();
|
|
14050
|
+
this.focusTrap = undefined;
|
|
13667
14051
|
}
|
|
13668
|
-
|
|
13669
|
-
// If the dropdown is not open, disconnect the focus trap if it exists
|
|
13670
|
-
this.focusTrap.disconnect();
|
|
13671
|
-
this.focusTrap = undefined;
|
|
13672
14052
|
}
|
|
13673
14053
|
|
|
13674
14054
|
/**
|
|
@@ -13884,13 +14264,14 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13884
14264
|
<div
|
|
13885
14265
|
id="showStateIcon"
|
|
13886
14266
|
class="chevron"
|
|
13887
|
-
part="chevron"
|
|
14267
|
+
part="chevron"
|
|
14268
|
+
aria-hidden="true">
|
|
13888
14269
|
<${this.iconTag}
|
|
13889
14270
|
category="interface"
|
|
13890
14271
|
name="${this.isPopoverVisible ? 'chevron-up' : `chevron-down`}"
|
|
13891
14272
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
13892
|
-
variant="${this.disabled ? 'disabled' : 'muted'}"
|
|
13893
|
-
>
|
|
14273
|
+
variant="${this.disabled ? 'disabled' : 'muted'}"
|
|
14274
|
+
ariaHidden="true">
|
|
13894
14275
|
</${this.iconTag}>
|
|
13895
14276
|
</div>
|
|
13896
14277
|
` : undefined }
|
|
@@ -13904,8 +14285,8 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
13904
14285
|
shape="${this.shape}"
|
|
13905
14286
|
?data-show="${this.isPopoverVisible}"
|
|
13906
14287
|
?isfullscreen="${this.isBibFullscreen}"
|
|
14288
|
+
.dialogLabel="${this.bibDialogLabel}"
|
|
13907
14289
|
${ref(this.bibElement)}
|
|
13908
|
-
popover="manual"
|
|
13909
14290
|
>
|
|
13910
14291
|
<div class="slotContent">
|
|
13911
14292
|
<slot @slotchange="${this.handleDefaultSlot}"></slot>
|
|
@@ -18819,7 +19200,7 @@ class AuroFormValidation {
|
|
|
18819
19200
|
}
|
|
18820
19201
|
}
|
|
18821
19202
|
|
|
18822
|
-
if (!hasValue && elem.required && elem.touched) {
|
|
19203
|
+
if (!hasValue && elem.required && (force || elem.touched)) {
|
|
18823
19204
|
elem.validity = 'valueMissing';
|
|
18824
19205
|
elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
|
|
18825
19206
|
} else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
|
|
@@ -18843,7 +19224,7 @@ class AuroFormValidation {
|
|
|
18843
19224
|
if (!isCombobox || isCombobox && !elem.persistInput) {
|
|
18844
19225
|
|
|
18845
19226
|
// run validation on all inputs since we're going to use them to set the validity of this component
|
|
18846
|
-
this.auroInputElements.forEach(input => input.validate());
|
|
19227
|
+
this.auroInputElements.forEach(input => input.validate(force));
|
|
18847
19228
|
|
|
18848
19229
|
// Reset element validity to the validity of the input
|
|
18849
19230
|
elem.validity = this.auroInputElements[0].validity;
|
|
@@ -19049,6 +19430,17 @@ let AuroElement$1 = class AuroElement extends LitElement {
|
|
|
19049
19430
|
*/
|
|
19050
19431
|
class BaseInput extends AuroElement$1 {
|
|
19051
19432
|
|
|
19433
|
+
// Delegate focus to the native <input> inside the shadow root so that
|
|
19434
|
+
// showModal()'s dialog focusing steps reach the input element.
|
|
19435
|
+
// This keeps the mobile virtual keyboard open when the fullscreen dialog
|
|
19436
|
+
// opens, because the browser sees an input-to-input focus transfer.
|
|
19437
|
+
static get shadowRootOptions() {
|
|
19438
|
+
return {
|
|
19439
|
+
...AuroElement$1.shadowRootOptions,
|
|
19440
|
+
delegatesFocus: true,
|
|
19441
|
+
};
|
|
19442
|
+
}
|
|
19443
|
+
|
|
19052
19444
|
constructor() {
|
|
19053
19445
|
super();
|
|
19054
19446
|
|
|
@@ -19066,6 +19458,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
19066
19458
|
this.icon = false;
|
|
19067
19459
|
this.disabled = false;
|
|
19068
19460
|
this.dvInputOnly = false;
|
|
19461
|
+
this.hideLabelVisually = false;
|
|
19069
19462
|
this.max = undefined;
|
|
19070
19463
|
this.maxLength = undefined;
|
|
19071
19464
|
this.min = undefined;
|
|
@@ -19173,6 +19566,15 @@ class BaseInput extends AuroElement$1 {
|
|
|
19173
19566
|
reflect: true
|
|
19174
19567
|
},
|
|
19175
19568
|
|
|
19569
|
+
/**
|
|
19570
|
+
* The value for the aria-activedescendant attribute.
|
|
19571
|
+
* Points to the ID of the currently active/highlighted option in a listbox.
|
|
19572
|
+
*/
|
|
19573
|
+
a11yActivedescendant: {
|
|
19574
|
+
type: String,
|
|
19575
|
+
reflect: true
|
|
19576
|
+
},
|
|
19577
|
+
|
|
19176
19578
|
/**
|
|
19177
19579
|
* If set, the label will remain fixed in the active position.
|
|
19178
19580
|
*/
|
|
@@ -19279,6 +19681,16 @@ class BaseInput extends AuroElement$1 {
|
|
|
19279
19681
|
attribute: false
|
|
19280
19682
|
},
|
|
19281
19683
|
|
|
19684
|
+
/**
|
|
19685
|
+
* If set, the label will be hidden visually but still accessible to assistive technologies.
|
|
19686
|
+
* @private
|
|
19687
|
+
*/
|
|
19688
|
+
hideLabelVisually: {
|
|
19689
|
+
type: Boolean,
|
|
19690
|
+
reflect: true
|
|
19691
|
+
},
|
|
19692
|
+
|
|
19693
|
+
|
|
19282
19694
|
/**
|
|
19283
19695
|
* If set, will render an icon inside the input to the left of the value. Support is limited to auro-input instances with credit card format.
|
|
19284
19696
|
*/
|
|
@@ -19856,31 +20268,34 @@ class BaseInput extends AuroElement$1 {
|
|
|
19856
20268
|
// Process credit card type detection and formatting during input
|
|
19857
20269
|
if (this.type === 'credit-card') {
|
|
19858
20270
|
this.processCreditCard();
|
|
19859
|
-
|
|
20271
|
+
this.touched = true;
|
|
20272
|
+
this.validation.validate(this);
|
|
20273
|
+
} else {
|
|
19860
20274
|
|
|
19861
|
-
|
|
19862
|
-
|
|
20275
|
+
// Sets value property to value of element value (el.value).
|
|
20276
|
+
this.value = this.inputElement.value;
|
|
19863
20277
|
|
|
19864
|
-
|
|
19865
|
-
|
|
20278
|
+
// Determine if the value change was programmatic, including autofill.
|
|
20279
|
+
const inputWasProgrammatic = !this.matches(":focus") || event.isProgrammatic;
|
|
19866
20280
|
|
|
19867
|
-
|
|
19868
|
-
|
|
19869
|
-
|
|
19870
|
-
|
|
19871
|
-
|
|
20281
|
+
// Validation on input or programmatic value change (including autofill).
|
|
20282
|
+
if (this.validateOnInput || inputWasProgrammatic) {
|
|
20283
|
+
this.touched = true;
|
|
20284
|
+
this.validation.validate(this);
|
|
20285
|
+
}
|
|
19872
20286
|
|
|
19873
|
-
|
|
19874
|
-
|
|
20287
|
+
// Prevents cursor jumping in Safari.
|
|
20288
|
+
const { selectionStart } = this.inputElement;
|
|
19875
20289
|
|
|
19876
|
-
|
|
19877
|
-
|
|
19878
|
-
|
|
19879
|
-
|
|
19880
|
-
|
|
19881
|
-
|
|
19882
|
-
|
|
19883
|
-
|
|
20290
|
+
if (this.setSelectionInputTypes.includes(this.type)) {
|
|
20291
|
+
this.updateComplete.then(() => {
|
|
20292
|
+
try {
|
|
20293
|
+
this.inputElement.setSelectionRange(selectionStart, selectionStart);
|
|
20294
|
+
} catch (error) { // eslint-disable-line
|
|
20295
|
+
// do nothing
|
|
20296
|
+
}
|
|
20297
|
+
});
|
|
20298
|
+
}
|
|
19884
20299
|
}
|
|
19885
20300
|
}
|
|
19886
20301
|
|
|
@@ -19913,6 +20328,11 @@ class BaseInput extends AuroElement$1 {
|
|
|
19913
20328
|
this.inputElement.scrollLeft = 100;
|
|
19914
20329
|
|
|
19915
20330
|
if (!this.noValidate) {
|
|
20331
|
+
// For credit card inputs with mask, ensure value is synced from mask instance
|
|
20332
|
+
if (this.type === 'credit-card' && this.maskInstance) {
|
|
20333
|
+
this.value = this.maskInstance.value;
|
|
20334
|
+
}
|
|
20335
|
+
|
|
19916
20336
|
this.validation.validate(this);
|
|
19917
20337
|
}
|
|
19918
20338
|
}
|
|
@@ -19937,6 +20357,20 @@ class BaseInput extends AuroElement$1 {
|
|
|
19937
20357
|
return activeEl;
|
|
19938
20358
|
}
|
|
19939
20359
|
|
|
20360
|
+
/**
|
|
20361
|
+
* Sets the active descendant element for accessibility.
|
|
20362
|
+
* Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
|
|
20363
|
+
* This function is used in components that contain `auro-input` to set the active descendant.
|
|
20364
|
+
* @private
|
|
20365
|
+
* @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
|
|
20366
|
+
* @returns {void}
|
|
20367
|
+
*/
|
|
20368
|
+
setActiveDescendant(element) {
|
|
20369
|
+
if (this.inputElement) {
|
|
20370
|
+
this.inputElement.ariaActiveDescendantElement = element;
|
|
20371
|
+
}
|
|
20372
|
+
}
|
|
20373
|
+
|
|
19940
20374
|
/**
|
|
19941
20375
|
* Validates value.
|
|
19942
20376
|
* @param {boolean} [force=false] - Whether to force validation.
|
|
@@ -20561,7 +20995,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
20561
20995
|
}
|
|
20562
20996
|
};
|
|
20563
20997
|
|
|
20564
|
-
var formkitVersion = '
|
|
20998
|
+
var formkitVersion = '202603102257';
|
|
20565
20999
|
|
|
20566
21000
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
20567
21001
|
// See LICENSE in the project root for license information.
|
|
@@ -20743,7 +21177,7 @@ class AuroInput extends BaseInput {
|
|
|
20743
21177
|
return {
|
|
20744
21178
|
'is-disabled': this.disabled,
|
|
20745
21179
|
'withValue': this.hasValue,
|
|
20746
|
-
'util_displayHiddenVisually': this.labelHidden,
|
|
21180
|
+
'util_displayHiddenVisually': this.labelHidden || this.hideLabelVisually,
|
|
20747
21181
|
[this.labelFontClass]: true,
|
|
20748
21182
|
};
|
|
20749
21183
|
}
|
|
@@ -20915,6 +21349,7 @@ class AuroInput extends BaseInput {
|
|
|
20915
21349
|
?activeLabel="${this.activeLabel}"
|
|
20916
21350
|
?disabled="${this.disabled}"
|
|
20917
21351
|
?required="${this.required}"
|
|
21352
|
+
aria-activedescendant=${ifDefined(this.a11yActivedescendant)}
|
|
20918
21353
|
aria-controls=${ifDefined(this.a11yControls)}
|
|
20919
21354
|
aria-describedby="${this.uniqueId}"
|
|
20920
21355
|
aria-expanded=${ifDefined(this.a11yExpanded)}
|
|
@@ -21674,6 +22109,89 @@ class p{registerComponent(t,a){customElements.get(t)||customElements.define(t,cl
|
|
|
21674
22109
|
|
|
21675
22110
|
var iconVersion = '9.1.2';
|
|
21676
22111
|
|
|
22112
|
+
/**
|
|
22113
|
+
* Announces text to screen readers via an `aria-live` region inside the given shadow root.
|
|
22114
|
+
*
|
|
22115
|
+
* Expects the shadow root to contain an element with `id="srAnnouncement"`.
|
|
22116
|
+
* The text is cleared and re-set inside a `requestAnimationFrame` so that
|
|
22117
|
+
* repeated identical announcements still fire, and is cleared again after
|
|
22118
|
+
* {@link ANNOUNCEMENT_DURATION_MS} so VoiceOver cannot swipe to stale text.
|
|
22119
|
+
*
|
|
22120
|
+
* @param {ShadowRoot} shadowRoot - The shadow root containing the live region.
|
|
22121
|
+
* @param {string} text - The text to announce.
|
|
22122
|
+
*/
|
|
22123
|
+
|
|
22124
|
+
|
|
22125
|
+
/**
|
|
22126
|
+
* Schedules a callback after two animation frames.
|
|
22127
|
+
*
|
|
22128
|
+
* Used when opening a fullscreen dialog to wait for the dialog to render
|
|
22129
|
+
* (first frame) and then for a Lit update cycle to complete (second frame)
|
|
22130
|
+
* before performing an action like focusing the close button.
|
|
22131
|
+
*
|
|
22132
|
+
* @param {Function} fn - The callback to execute after two animation frames.
|
|
22133
|
+
*/
|
|
22134
|
+
function doubleRaf(fn) {
|
|
22135
|
+
requestAnimationFrame(() => {
|
|
22136
|
+
requestAnimationFrame(fn);
|
|
22137
|
+
});
|
|
22138
|
+
}
|
|
22139
|
+
|
|
22140
|
+
/**
|
|
22141
|
+
* Prevents touch pass-through when a fullscreen dialog opens on a touch device.
|
|
22142
|
+
*
|
|
22143
|
+
* On coarse-pointer devices (phones / tablets), the tap that opens the
|
|
22144
|
+
* fullscreen dialog can "pass through" to content beneath the finger —
|
|
22145
|
+
* the touchstart opens the dialog, but the finger is still on the screen,
|
|
22146
|
+
* so the subsequent touchend / click lands on whatever element sits at
|
|
22147
|
+
* those coordinates (e.g. a menu option or calendar cell), selecting it
|
|
22148
|
+
* unintentionally. This does NOT happen with mouse clicks because
|
|
22149
|
+
* showModal() promotes the dialog to the top layer synchronously and the
|
|
22150
|
+
* click has already completed.
|
|
22151
|
+
*
|
|
22152
|
+
* Guard: only activates on devices whose primary input is coarse.
|
|
22153
|
+
* Laptops with a touchscreen report `pointer: fine` (trackpad / mouse is
|
|
22154
|
+
* primary) so they are unaffected. Re-enables on the next touchstart,
|
|
22155
|
+
* which is the user's first deliberate gesture inside the dialog.
|
|
22156
|
+
*
|
|
22157
|
+
* @param {HTMLElement} element - The element to disable pointer events on
|
|
22158
|
+
* (e.g. the menu or calendar wrapper).
|
|
22159
|
+
*/
|
|
22160
|
+
function guardTouchPassthrough(element) {
|
|
22161
|
+
if (!element || !window.matchMedia('(pointer: coarse)').matches) return;
|
|
22162
|
+
|
|
22163
|
+
element.style.pointerEvents = 'none';
|
|
22164
|
+
document.addEventListener('touchstart', () => {
|
|
22165
|
+
element.style.pointerEvents = '';
|
|
22166
|
+
}, { once: true });
|
|
22167
|
+
}
|
|
22168
|
+
|
|
22169
|
+
/**
|
|
22170
|
+
* Restores the dropdown trigger after a fullscreen dialog closes.
|
|
22171
|
+
*
|
|
22172
|
+
* Removes the `inert` attribute from the trigger so it is accessible again,
|
|
22173
|
+
* and restores focus to the given target after one animation frame. The rAF
|
|
22174
|
+
* delay lets Lit's microtask update cycle call `dialog.close()` first —
|
|
22175
|
+
* without it the browser's native dialog focus restoration can conflict.
|
|
22176
|
+
*
|
|
22177
|
+
* The focus is only applied if the dropdown is still closed at the time the
|
|
22178
|
+
* rAF fires, guarding against a rapid close-then-reopen race.
|
|
22179
|
+
*
|
|
22180
|
+
* @param {HTMLElement} dropdown - The `auro-dropdown` element.
|
|
22181
|
+
* @param {HTMLElement} focusTarget - The element to focus (e.g. trigger or input).
|
|
22182
|
+
*/
|
|
22183
|
+
function restoreTriggerAfterClose(dropdown, focusTarget) {
|
|
22184
|
+
dropdown.trigger.inert = false;
|
|
22185
|
+
|
|
22186
|
+
if (dropdown.isBibFullscreen) {
|
|
22187
|
+
requestAnimationFrame(() => {
|
|
22188
|
+
if (!dropdown.isPopoverVisible) {
|
|
22189
|
+
focusTarget.focus();
|
|
22190
|
+
}
|
|
22191
|
+
});
|
|
22192
|
+
}
|
|
22193
|
+
}
|
|
22194
|
+
|
|
21677
22195
|
// Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
21678
22196
|
// See LICENSE in the project root for license information.
|
|
21679
22197
|
|
|
@@ -21688,7 +22206,9 @@ var iconVersion = '9.1.2';
|
|
|
21688
22206
|
* @slot ariaLabel.bib.close - Sets aria-label on close button in fullscreen bib
|
|
21689
22207
|
* @slot ariaLabel.input.clear - Sets aria-label on clear button
|
|
21690
22208
|
* @slot bib.fullscreen.headline - Defines the headline to display above bib.fullscreen.dateLabels in the mobile layout.
|
|
21691
|
-
* @slot bib.fullscreen.dateLabel -
|
|
22209
|
+
* @slot bib.fullscreen.dateLabel - **DEPRECATED** - Use `bib.fullscreen.fromLabel` instead.
|
|
22210
|
+
* @slot bib.fullscreen.fromLabel - Defines the content to display above the first input in the mobile layout.
|
|
22211
|
+
* @slot bib.fullscreen.toLabel - Defines the content to display above the second input in the mobile layout when `range` is true.
|
|
21692
22212
|
* @slot label - Defines the label content for the entire datepicker when `layout="snowflake"`.
|
|
21693
22213
|
* @slot toLabel - Defines the label content for the second input when the `range` attribute is used.
|
|
21694
22214
|
* @slot fromLabel - Defines the label content for the first input.
|
|
@@ -21708,6 +22228,12 @@ var iconVersion = '9.1.2';
|
|
|
21708
22228
|
* @event auroDatePicker-newSlotContent - Notifies that new slot content has been added to the datepicker.
|
|
21709
22229
|
*/
|
|
21710
22230
|
class AuroDatePicker extends AuroElement {
|
|
22231
|
+
static get shadowRootOptions() {
|
|
22232
|
+
return {
|
|
22233
|
+
...AuroElement.shadowRootOptions,
|
|
22234
|
+
delegatesFocus: true,
|
|
22235
|
+
};
|
|
22236
|
+
}
|
|
21711
22237
|
constructor() {
|
|
21712
22238
|
super();
|
|
21713
22239
|
|
|
@@ -21848,14 +22374,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
21848
22374
|
this.shape = 'classic';
|
|
21849
22375
|
this.size = 'lg';
|
|
21850
22376
|
|
|
21851
|
-
/**
|
|
21852
|
-
* @private
|
|
21853
|
-
* @property {boolean} delegatesFocus - Whether the shadow root delegates focus.
|
|
21854
|
-
*/
|
|
21855
|
-
this.constructor.shadowRootOptions = {
|
|
21856
|
-
...LitElement.shadowRootOptions,
|
|
21857
|
-
delegatesFocus: true,
|
|
21858
|
-
};
|
|
21859
22377
|
}
|
|
21860
22378
|
|
|
21861
22379
|
// This function is to define props used within the scope of this component
|
|
@@ -22469,6 +22987,30 @@ class AuroDatePicker extends AuroElement {
|
|
|
22469
22987
|
configureDropdown() {
|
|
22470
22988
|
this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
|
|
22471
22989
|
|
|
22990
|
+
// Prevent dropdown from closing on focus loss during fullscreen transitions.
|
|
22991
|
+
// When trigger.inert is set to true (to hide the trigger from assistive
|
|
22992
|
+
// technology behind the fullscreen dialog), focus leaves the trigger, which
|
|
22993
|
+
// fires a focusout event. The floater's handleFocusLoss() would interpret
|
|
22994
|
+
// this as "close the bib" without this flag.
|
|
22995
|
+
this.dropdown.noHideOnThisFocusLoss = true;
|
|
22996
|
+
|
|
22997
|
+
// Pass label text to the dropdown bib for accessible dialog naming.
|
|
22998
|
+
// Without this, the fullscreen <dialog> has no accessible name and
|
|
22999
|
+
// screen readers announce it as just "dialog" with no context.
|
|
23000
|
+
const labelElement = this.querySelector('[slot="fromLabel"]');
|
|
23001
|
+
if (labelElement) {
|
|
23002
|
+
this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
|
|
23003
|
+
}
|
|
23004
|
+
|
|
23005
|
+
// Tab closes the fullscreen dialog (same pattern as select).
|
|
23006
|
+
// The dialog event bridge intercepts Tab and re-dispatches it as a
|
|
23007
|
+
// composed keydown; this listener catches the re-dispatched event.
|
|
23008
|
+
this.addEventListener('keydown', (evt) => {
|
|
23009
|
+
if (evt.key === 'Tab' && this.dropdown.isPopoverVisible && this.dropdown.isBibFullscreen) {
|
|
23010
|
+
this.dropdown.hide();
|
|
23011
|
+
}
|
|
23012
|
+
});
|
|
23013
|
+
|
|
22472
23014
|
this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
|
|
22473
23015
|
if (!this.isPopoverVisible) {
|
|
22474
23016
|
this.dropdown.show();
|
|
@@ -22482,6 +23024,45 @@ class AuroDatePicker extends AuroElement {
|
|
|
22482
23024
|
// It is not rendered by default
|
|
22483
23025
|
this.calendar.visible = this.dropdown.isPopoverVisible;
|
|
22484
23026
|
|
|
23027
|
+
if (this.dropdown.isPopoverVisible) {
|
|
23028
|
+
if (this.dropdown.isBibFullscreen) {
|
|
23029
|
+
// Hide the trigger from assistive technology so VoiceOver cannot
|
|
23030
|
+
// reach it behind the fullscreen dialog.
|
|
23031
|
+
// Set this immediately (before updateComplete) so that the trigger
|
|
23032
|
+
// is already inert when the modal opens. noHideOnThisFocusLoss
|
|
23033
|
+
// prevents the floater from closing the bib when focus leaves.
|
|
23034
|
+
this.dropdown.trigger.inert = true;
|
|
23035
|
+
|
|
23036
|
+
// The dropdown sets disableFocusTrap, so its own updated() lifecycle
|
|
23037
|
+
// opens the dialog as non-modal (dialog.setAttribute('open', '')).
|
|
23038
|
+
// Only showModal() promotes the dialog to the top layer and makes
|
|
23039
|
+
// background content inert — which is what prevents VoiceOver from
|
|
23040
|
+
// swiping to content behind the fullscreen calendar.
|
|
23041
|
+
//
|
|
23042
|
+
// We must wait for the dropdown's Lit update cycle to finish before
|
|
23043
|
+
// re-opening as modal. Both isPopoverVisible and isBibFullscreen
|
|
23044
|
+
// change in the same showBib() call; the dropdown's updated() handles
|
|
23045
|
+
// the isBibFullscreen change by closing and re-opening the dialog
|
|
23046
|
+
// as non-modal. Waiting for updateComplete ensures we act after that
|
|
23047
|
+
// cycle, so our close() + open(true) is the final state.
|
|
23048
|
+
this.dropdown.updateComplete.then(() => {
|
|
23049
|
+
const bibEl = this.dropdown.bibElement?.value;
|
|
23050
|
+
if (bibEl && this.dropdown.isPopoverVisible) {
|
|
23051
|
+
bibEl.close();
|
|
23052
|
+
bibEl.open(true);
|
|
23053
|
+
|
|
23054
|
+
doubleRaf(() => {
|
|
23055
|
+
this.calendar.focusCloseButton();
|
|
23056
|
+
});
|
|
23057
|
+
}
|
|
23058
|
+
});
|
|
23059
|
+
|
|
23060
|
+
guardTouchPassthrough(this.shadowRoot.querySelector('.calendarWrapper'));
|
|
23061
|
+
}
|
|
23062
|
+
} else {
|
|
23063
|
+
restoreTriggerAfterClose(this.dropdown, this.dropdown.trigger);
|
|
23064
|
+
}
|
|
23065
|
+
|
|
22485
23066
|
// If on mobile, and the calendar is opened, scroll the focus date into view if the flag is set
|
|
22486
23067
|
if (this.dropdown.isPopoverVisible && this.forceScrollOnNextMobileCalendarRender) {
|
|
22487
23068
|
|
|
@@ -22495,6 +23076,32 @@ class AuroDatePicker extends AuroElement {
|
|
|
22495
23076
|
}, 0);
|
|
22496
23077
|
}
|
|
22497
23078
|
});
|
|
23079
|
+
|
|
23080
|
+
// Handle responsive strategy changes while the dropdown is open
|
|
23081
|
+
// (e.g. resizing from desktop → mobile or vice versa).
|
|
23082
|
+
// When the strategy changes to fullscreen, the dropdown's own updated()
|
|
23083
|
+
// will close and reopen the dialog as non-modal (because disableFocusTrap
|
|
23084
|
+
// is set). We wait for that cycle to complete via updateComplete, then
|
|
23085
|
+
// re-open as modal so showModal() promotes the dialog to the top layer
|
|
23086
|
+
// and makes background content inert for screen readers.
|
|
23087
|
+
this.dropdown.addEventListener('auroDropdown-strategy-change', () => {
|
|
23088
|
+
if (this.dropdown.isBibFullscreen && this.dropdown.isPopoverVisible) {
|
|
23089
|
+
this.dropdown.trigger.inert = true;
|
|
23090
|
+
this.dropdown.updateComplete.then(() => {
|
|
23091
|
+
const bibEl = this.dropdown.bibElement?.value;
|
|
23092
|
+
if (bibEl && this.dropdown.isPopoverVisible) {
|
|
23093
|
+
bibEl.close();
|
|
23094
|
+
bibEl.open(true);
|
|
23095
|
+
doubleRaf(() => {
|
|
23096
|
+
this.calendar.focusCloseButton();
|
|
23097
|
+
});
|
|
23098
|
+
}
|
|
23099
|
+
});
|
|
23100
|
+
} else if (!this.dropdown.isBibFullscreen) {
|
|
23101
|
+
// Switching from fullscreen to floating — restore trigger accessibility
|
|
23102
|
+
this.dropdown.trigger.inert = false;
|
|
23103
|
+
}
|
|
23104
|
+
});
|
|
22498
23105
|
}
|
|
22499
23106
|
|
|
22500
23107
|
/**
|
|
@@ -23271,6 +23878,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
23271
23878
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
23272
23879
|
?disabled="${this.disabled}"
|
|
23273
23880
|
?required="${this.required}"
|
|
23881
|
+
?hideLabelVisually="${this.layout !== 'classic'}"
|
|
23274
23882
|
.format="${this.format}"
|
|
23275
23883
|
.max="${this.maxDate}"
|
|
23276
23884
|
.min="${this.minDate}"
|
|
@@ -23314,6 +23922,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
23314
23922
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
23315
23923
|
?disabled="${this.disabled}"
|
|
23316
23924
|
?required="${this.required}"
|
|
23925
|
+
?hideLabelVisually="${this.layout !== 'classic'}"
|
|
23317
23926
|
.format="${this.format}"
|
|
23318
23927
|
.max="${this.maxDate}"
|
|
23319
23928
|
.min="${this.minDate}"
|
|
@@ -23478,8 +24087,10 @@ class AuroDatePicker extends AuroElement {
|
|
|
23478
24087
|
<slot name="ariaLabel.bib.close" slot="ariaLabel.close" @slotchange="${this.handleSlotToSlot}">Close</slot>
|
|
23479
24088
|
<slot slot="bib.fullscreen.headline" name="bib.fullscreen.headline" @slotchange="${this.handleSlotToSlot}"></slot>
|
|
23480
24089
|
<slot slot="bib.fullscreen.dateLabel" name="bib.fullscreen.dateLabel" @slotchange="${this.handleSlotToSlot}"></slot>
|
|
24090
|
+
<slot slot="bib.fullscreen.toLabel" name="bib.fullscreen.toLabel" @slotchange="${this.handleSlotToSlot}"></slot>
|
|
24091
|
+
<slot slot="bib.fullscreen.fromLabel" name="bib.fullscreen.fromLabel" @slotchange="${this.handleSlotToSlot}"></slot>
|
|
23481
24092
|
<span slot="bib.fullscreen.fromStr">${this.value || html$1`<span class="placeholderDate">${this.format.toUpperCase()}</span>`}</span>
|
|
23482
|
-
${this.range ? html$1`<span slot="
|
|
24093
|
+
${this.range ? html$1`<span slot="bib.fullscreen.toStr">${this.valueEnd || html$1`<span class="placeholderDate">${this.format.toUpperCase()}</span>`}</span>` : undefined}
|
|
23483
24094
|
</auro-formkit-calendar>
|
|
23484
24095
|
`;
|
|
23485
24096
|
}
|