@aurodesignsystem-dev/auro-formkit 0.0.0-pr1507.0 → 0.0.0-pr1508.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/bibtemplate/dist/index.js +1 -1
- package/components/bibtemplate/dist/registered.js +1 -1
- package/components/checkbox/demo/customize.html +1 -2
- package/components/checkbox/demo/customize.min.js +8 -6
- package/components/checkbox/demo/getting-started.min.js +8 -6
- package/components/checkbox/demo/index.min.js +8 -6
- package/components/checkbox/dist/index.js +8 -6
- package/components/checkbox/dist/registered.js +8 -6
- package/components/combobox/demo/customize.html +1 -2
- package/components/combobox/demo/customize.md +105 -137
- package/components/combobox/demo/customize.min.js +506 -568
- package/components/combobox/demo/getting-started.min.js +506 -564
- package/components/combobox/demo/index.min.js +506 -564
- package/components/combobox/demo/keyboard-behavior.md +2 -142
- package/components/combobox/demo/why-combobox.md +1 -1
- package/components/combobox/dist/auro-combobox.d.ts +30 -14
- package/components/combobox/dist/index.js +505 -563
- package/components/combobox/dist/registered.js +505 -563
- package/components/counter/demo/customize.min.js +26 -8
- package/components/counter/demo/index.min.js +26 -8
- package/components/counter/dist/index.js +26 -8
- package/components/counter/dist/registered.js +26 -8
- package/components/datepicker/demo/accessibility.md +2 -1
- package/components/datepicker/demo/api.md +65 -62
- package/components/datepicker/demo/customize.md +150 -39
- package/components/datepicker/demo/customize.min.js +988 -500
- package/components/datepicker/demo/index.min.js +988 -482
- package/components/datepicker/dist/{src/auro-calendar-cell.d.ts → auro-calendar-cell.d.ts} +20 -3
- package/components/datepicker/dist/{src/auro-calendar.d.ts → auro-calendar.d.ts} +121 -7
- package/components/datepicker/dist/{src/auro-datepicker.d.ts → auro-datepicker.d.ts} +80 -5
- package/components/datepicker/dist/blackoutUtils.d.ts +43 -0
- package/components/datepicker/dist/index.js +988 -482
- package/components/datepicker/dist/registered.js +988 -482
- package/components/dropdown/demo/customize.min.js +10 -1
- package/components/dropdown/demo/getting-started.min.js +10 -1
- package/components/dropdown/demo/index.min.js +10 -1
- package/components/dropdown/dist/auro-dropdown.d.ts +1 -0
- package/components/dropdown/dist/index.js +10 -1
- package/components/dropdown/dist/registered.js +10 -1
- package/components/form/demo/customize.html +6 -6
- package/components/form/demo/customize.md +203 -51
- package/components/form/demo/customize.min.js +2357 -1419
- package/components/form/demo/getting-started.min.js +2285 -1419
- package/components/form/demo/index.min.js +2285 -1419
- package/components/form/demo/registerDemoDeps.min.js +1922 -1382
- package/components/form/dist/auro-form.d.ts +122 -4
- package/components/form/dist/index.js +363 -37
- package/components/form/dist/registered.js +363 -37
- package/components/input/demo/api.md +5 -5
- package/components/input/demo/customize.html +1 -2
- package/components/input/demo/customize.md +62 -61
- package/components/input/demo/customize.min.js +177 -241
- package/components/input/demo/getting-started.min.js +177 -241
- package/components/input/demo/index.min.js +177 -241
- package/components/input/dist/base-input.d.ts +34 -93
- package/components/input/dist/index.js +190 -242
- package/components/input/dist/registered.js +177 -241
- package/components/radio/demo/customize.min.js +8 -6
- package/components/radio/demo/getting-started.min.js +8 -6
- package/components/radio/demo/index.min.js +8 -6
- package/components/radio/dist/index.js +8 -6
- package/components/radio/dist/registered.js +8 -6
- package/components/select/demo/customize.html +1 -2
- package/components/select/demo/customize.md +86 -0
- package/components/select/demo/customize.min.js +202 -68
- package/components/select/demo/getting-started.min.js +204 -115
- package/components/select/demo/index.min.js +202 -68
- package/components/select/demo/keyboard-behavior.md +18 -4
- package/components/select/dist/auro-select.d.ts +20 -8
- package/components/select/dist/index.js +202 -68
- package/components/select/dist/registered.js +202 -68
- package/custom-elements.json +1035 -604
- package/package.json +6 -2
- package/components/checkbox/demo/customize.js +0 -22
- package/components/checkbox/demo/demo-support.js +0 -1
- package/components/checkbox/demo/getting-started.js +0 -22
- package/components/checkbox/demo/index.js +0 -8
- package/components/checkbox/demo/styles.scss +0 -1
- package/components/combobox/demo/customize.js +0 -24
- package/components/combobox/demo/demo-support.js +0 -1
- package/components/combobox/demo/getting-started.js +0 -21
- package/components/combobox/demo/index.js +0 -23
- package/components/combobox/demo/styles.scss +0 -1
- package/components/counter/demo/customize.js +0 -21
- package/components/counter/demo/demo-support.js +0 -1
- package/components/counter/demo/index.js +0 -21
- package/components/counter/demo/styles.scss +0 -1
- package/components/datepicker/demo/customize.js +0 -19
- package/components/datepicker/demo/demo-support.js +0 -1
- package/components/datepicker/demo/index.js +0 -23
- package/components/datepicker/demo/styles.scss +0 -1
- package/components/dropdown/demo/customize.js +0 -9
- package/components/dropdown/demo/demo-support.js +0 -1
- package/components/dropdown/demo/getting-started.js +0 -9
- package/components/dropdown/demo/index.js +0 -16
- package/components/dropdown/demo/styles.scss +0 -1
- package/components/form/demo/customize.js +0 -9
- package/components/form/demo/demo-support.js +0 -1
- package/components/form/demo/getting-started.js +0 -9
- package/components/form/demo/index.js +0 -5
- package/components/form/demo/registerDemoDeps.js +0 -23
- package/components/form/demo/styles.scss +0 -1
- package/components/input/demo/customize.js +0 -25
- package/components/input/demo/demo-support.js +0 -1
- package/components/input/demo/getting-started.js +0 -8
- package/components/input/demo/index.js +0 -8
- package/components/input/demo/styles.css +0 -974
- package/components/input/demo/styles.scss +0 -1
- package/components/menu/demo/demo-support.js +0 -1
- package/components/menu/demo/index.js +0 -25
- package/components/menu/demo/styles.scss +0 -1
- package/components/radio/demo/customize.js +0 -22
- package/components/radio/demo/demo-support.js +0 -1
- package/components/radio/demo/getting-started.js +0 -24
- package/components/radio/demo/index.js +0 -8
- package/components/radio/demo/styles.scss +0 -1
- package/components/select/demo/customize.js +0 -11
- package/components/select/demo/demo-support.js +0 -1
- package/components/select/demo/getting-started.js +0 -26
- package/components/select/demo/index.js +0 -11
- package/components/select/demo/styles.scss +0 -1
- /package/components/datepicker/dist/{src/auro-calendar-month.d.ts → auro-calendar-month.d.ts} +0 -0
- /package/components/datepicker/dist/{src/buttonVersion.d.ts → buttonVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{src/datepickerKeyboardStrategy.d.ts → datepickerKeyboardStrategy.d.ts} +0 -0
- /package/components/datepicker/dist/{src/iconVersion.d.ts → iconVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/components/datepicker/dist/{src/popoverVersion.d.ts → popoverVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/classic/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/classic/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-calendar-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-cell-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-month-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/shapeSize-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/snowflake/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/snowflake/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-cell-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-month-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/tokens-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/utilities.d.ts → utilities.d.ts} +0 -0
- /package/components/datepicker/dist/{src/utilitiesCalendar.d.ts → utilitiesCalendar.d.ts} +0 -0
- /package/components/datepicker/dist/{src/utilitiesCalendarRender.d.ts → utilitiesCalendarRender.d.ts} +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/day.d.ts +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
|
@@ -657,15 +657,17 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
657
657
|
);
|
|
658
658
|
}
|
|
659
659
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
660
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
661
|
+
|
|
662
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
663
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
664
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
665
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
666
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
663
667
|
hasValue = false;
|
|
664
668
|
}
|
|
665
669
|
}
|
|
666
670
|
|
|
667
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
668
|
-
|
|
669
671
|
if (isCombobox) {
|
|
670
672
|
|
|
671
673
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -1373,7 +1375,7 @@ function normalizeDates$1(context, ...dates) {
|
|
|
1373
1375
|
* const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
|
|
1374
1376
|
* //=> Tue Sep 02 2014 00:00:00
|
|
1375
1377
|
*/
|
|
1376
|
-
function startOfDay$
|
|
1378
|
+
function startOfDay$1(date, options) {
|
|
1377
1379
|
const _date = toDate$1(date, options?.in);
|
|
1378
1380
|
_date.setHours(0, 0, 0, 0);
|
|
1379
1381
|
return _date;
|
|
@@ -1421,8 +1423,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
|
|
|
1421
1423
|
earlierDate,
|
|
1422
1424
|
);
|
|
1423
1425
|
|
|
1424
|
-
const laterStartOfDay = startOfDay$
|
|
1425
|
-
const earlierStartOfDay = startOfDay$
|
|
1426
|
+
const laterStartOfDay = startOfDay$1(laterDate_);
|
|
1427
|
+
const earlierStartOfDay = startOfDay$1(earlierDate_);
|
|
1426
1428
|
|
|
1427
1429
|
const laterTimestamp =
|
|
1428
1430
|
+laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
|
|
@@ -10524,10 +10526,18 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
10524
10526
|
* @returns {string | undefined}
|
|
10525
10527
|
*/
|
|
10526
10528
|
toFormattedValue(valueObject, format) {
|
|
10529
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
10530
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
10531
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
10532
|
+
// as "no format → no display value".
|
|
10533
|
+
if (!format) {
|
|
10534
|
+
return undefined;
|
|
10535
|
+
}
|
|
10527
10536
|
const normalizedFormat = format.toLowerCase();
|
|
10528
10537
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
10529
10538
|
|
|
10530
10539
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
10540
|
+
console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
|
|
10531
10541
|
return undefined;
|
|
10532
10542
|
}
|
|
10533
10543
|
|
|
@@ -10802,11 +10812,11 @@ var snowflakeStyle = i$3`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
|
|
|
10802
10812
|
|
|
10803
10813
|
var snowflakeColors = i$3`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
|
|
10804
10814
|
|
|
10805
|
-
var styleCss$7 = i$3`.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-default-weight, );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-default-emphasized{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-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-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-lg-weight, );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-lg-emphasized{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-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-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-sm-weight, );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-sm-emphasized{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-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-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-xs-weight, );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-xs-emphasized{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-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-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-2xs-weight, );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)}.body-2xs-emphasized{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-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-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);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));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.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-weight:var(--wcss-heading-xs-weight, 300);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));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.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-weight:var(--wcss-heading-2xs-weight, 300);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));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);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);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));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;--desktop-footer-height: 80px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendars:focus{outline:none}.calendarNavButtons{position:absolute;z-index:1;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%}.calendarWrapper.hasFooter{padding-bottom:var(--desktop-footer-height)}: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:""}.sr-only{position:absolute;overflow:hidden;clip:rect(0, 0, 0, 0);width:1px;height:1px;margin:-1px;padding:0;border:0;white-space:nowrap}`;
|
|
10815
|
+
var styleCss$7 = i$3`.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-default-weight, );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-default-emphasized{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-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-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-lg-weight, );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-lg-emphasized{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-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-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-sm-weight, );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-sm-emphasized{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-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-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-xs-weight, );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-xs-emphasized{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-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-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-2xs-weight, );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)}.body-2xs-emphasized{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-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-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);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));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.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-weight:var(--wcss-heading-xs-weight, 300);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));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.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-weight:var(--wcss-heading-2xs-weight, 300);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));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);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);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));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;--desktop-footer-height: 80px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendars:focus{outline:none}.calendarNavButtons{position:absolute;z-index:1;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:""}.sr-only{position:absolute;overflow:hidden;clip:rect(0, 0, 0, 0);width:1px;height:1px;margin:-1px;padding:0;border:0;white-space:nowrap}`;
|
|
10806
10816
|
|
|
10807
|
-
var colorCss$7 = i$3`.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)}}`;
|
|
10817
|
+
var colorCss$7 = i$3`.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-visible{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);outline:2px solid var(--ds-basic-color-brand-primary, #01426a);outline-offset:-2px}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);outline:2px solid var(--ds-basic-color-brand-primary, #01426a);outline-offset:-2px;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)}}`;
|
|
10808
10818
|
|
|
10809
|
-
var styleCss$6 = i$3`:focus:not(:focus-visible){outline:3px solid transparent}.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-default-weight, );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-default-emphasized{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-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-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-lg-weight, );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-lg-emphasized{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-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-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-sm-weight, );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-sm-emphasized{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-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-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-xs-weight, );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-xs-emphasized{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-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-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-2xs-weight, );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)}.body-2xs-emphasized{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-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-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);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));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.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-weight:var(--wcss-heading-xs-weight, 300);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));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.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-weight:var(--wcss-heading-2xs-weight, 300);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));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);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);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));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem) var(--ds-size-200, 1rem) 0}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;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}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:376px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%;border-radius:10px;overflow:hidden}.tr:not(:last-of-type){margin-bottom:var(--ds-size-100, 0.5rem)}`;
|
|
10819
|
+
var styleCss$6 = i$3`:focus:not(:focus-visible){outline:3px solid transparent}.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-default-weight, );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-default-emphasized{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-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-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-lg-weight, );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-lg-emphasized{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-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-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-sm-weight, );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-sm-emphasized{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-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-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-xs-weight, );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-xs-emphasized{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-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-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-2xs-weight, );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)}.body-2xs-emphasized{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-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-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);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));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.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-weight:var(--wcss-heading-xs-weight, 300);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));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.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-weight:var(--wcss-heading-2xs-weight, 300);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));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);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);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));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:336px;margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem) var(--ds-size-200, 1rem) 0}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;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}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:376px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%;border-radius:10px;overflow:hidden}.tr:not(:last-of-type){margin-bottom:var(--ds-size-100, 0.5rem)}`;
|
|
10810
10820
|
|
|
10811
10821
|
var colorCss$6 = i$3`:focus:not(:focus-visible){outline:3px solid transparent}:host{background-color:var(--ds-auro-calendar-month-container-color)}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{background-color:var(--ds-auro-calendar-month-divider-color)}}.header{color:var(--ds-auro-calendar-month-header-color)}`;
|
|
10812
10822
|
|
|
@@ -10904,8 +10914,8 @@ class RangeDatepickerCell extends i$1 {
|
|
|
10904
10914
|
const parsedDateFrom = parseInt(dateFrom, 10);
|
|
10905
10915
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
10906
10916
|
if (day) {
|
|
10907
|
-
if (getTime(startOfDay$
|
|
10908
|
-
getTime(startOfDay$
|
|
10917
|
+
if (getTime(startOfDay$1(parsedDateTo * 1000)) / 1000 === day.date ||
|
|
10918
|
+
getTime(startOfDay$1(parsedDateFrom * 1000)) / 1000 === day.date) {
|
|
10909
10919
|
this.selected = true;
|
|
10910
10920
|
}
|
|
10911
10921
|
if (((hoveredDate === day.date || day.date < hoveredDate) &&
|
|
@@ -11093,7 +11103,7 @@ class RangeDatepickerCalendar extends i$1 {
|
|
|
11093
11103
|
this.dayNamesOfTheWeek = [];
|
|
11094
11104
|
this.daysOfMonth = [];
|
|
11095
11105
|
this._locale = null;
|
|
11096
|
-
this.currentDate = parseInt(format$1(startOfDay$
|
|
11106
|
+
this.currentDate = parseInt(format$1(startOfDay$1(Date.now()), 't'), 10);
|
|
11097
11107
|
this.localeChanged();
|
|
11098
11108
|
this.yearAndMonthChanged(this.year, this.month);
|
|
11099
11109
|
}
|
|
@@ -11567,7 +11577,7 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
|
|
|
11567
11577
|
__decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
|
|
11568
11578
|
AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
|
|
11569
11579
|
|
|
11570
|
-
var styleCss$5 = i$3`.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-default-weight, );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-default-emphasized{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-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-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-lg-weight, );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-lg-emphasized{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-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-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-sm-weight, );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-sm-emphasized{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-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-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-xs-weight, );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-xs-emphasized{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-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-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-2xs-weight, );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)}.body-2xs-emphasized{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-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-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);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));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.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-weight:var(--wcss-heading-xs-weight, 300);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));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.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-weight:var(--wcss-heading-2xs-weight, 300);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));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);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);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));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
|
|
11580
|
+
var styleCss$5 = i$3`.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-default-weight, );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-default-emphasized{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-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-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-lg-weight, );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-lg-emphasized{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-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-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-sm-weight, );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-sm-emphasized{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-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-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-xs-weight, );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-xs-emphasized{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-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-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-2xs-weight, );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)}.body-2xs-emphasized{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-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-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);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));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.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-weight:var(--wcss-heading-xs-weight, 300);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));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.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-weight:var(--wcss-heading-2xs-weight, 300);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));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.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-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));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);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);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));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);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-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));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);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);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));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.rangeDepartDate.lastHoveredDate::before{border-radius:10px}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
|
|
11571
11581
|
|
|
11572
11582
|
var colorCss$5 = i$3`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day.activeCell:not(.selected){--ds-auro-calendar-cell-container-color: var(--ds-auro-calendar-cell-in-range-color);border-color:var(--ds-advanced-color-state-selected);outline-color:var(--ds-auro-calendar-cell-container-color)}:host .day.selected{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.selected ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success-subtle, #d6eac7)}:host .day.selected:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected-hover, #00274a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.reference:after{border-color:var(--ds-basic-color-border-default, #959595);box-shadow:inset 0 0 0 2px var(--ds-basic-color-surface-default, #ffffff)}:host .day.reference:hover::after{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background-muted, #f7f7f7)}:host .day:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host .day.disabled{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.blackout{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.inRange:before,:host .day.rangeDepartDate:before,:host .day.rangeReturnDate:before,:host .day.lastHoveredDate:before{background-color:var(--ds-auro-calendar-cell-in-range-color)}:host .day.sameDateTrip:before{--ds-auro-calendar-cell-in-range-color: transparent}`;
|
|
11573
11583
|
|
|
@@ -11592,13 +11602,103 @@ let s$2 = class s{registerComponent(e,t){customElements.get(e)||customElements.d
|
|
|
11592
11602
|
|
|
11593
11603
|
var popoverVersion = '6.0.1';
|
|
11594
11604
|
|
|
11595
|
-
|
|
11605
|
+
/**
|
|
11606
|
+
* Single source of truth for parsing and matching blackout dates across the
|
|
11607
|
+
* datepicker. Both `auro-calendar` (memoized Set + `isDateBlackout`) and the
|
|
11608
|
+
* pre-`firstUpdated` fallback inside `auro-calendar-cell` route through these
|
|
11609
|
+
* helpers so the YYYY-MM-DD → seconds conversion and the merge-with-legacy
|
|
11610
|
+
* `disabledDays` rules are defined exactly once.
|
|
11611
|
+
*/
|
|
11596
11612
|
|
|
11597
|
-
|
|
11598
|
-
|
|
11599
|
-
|
|
11600
|
-
|
|
11601
|
-
|
|
11613
|
+
/**
|
|
11614
|
+
* Converts a `YYYY-MM-DD` ISO date string to a Unix timestamp (seconds)
|
|
11615
|
+
* representing local midnight on that calendar day. Returns `null` for
|
|
11616
|
+
* inputs that don't parse to a finite timestamp.
|
|
11617
|
+
*
|
|
11618
|
+
* Uses the `new Date(year, monthIndex, day)` constructor (NOT
|
|
11619
|
+
* `new Date(isoStr)`) so the result is local-midnight rather than UTC
|
|
11620
|
+
* midnight — required to keep the calendar grid aligned with the user's
|
|
11621
|
+
* local calendar day in negative-offset timezones.
|
|
11622
|
+
*
|
|
11623
|
+
* @param {string} isoStr - Date string in `YYYY-MM-DD` format.
|
|
11624
|
+
* @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
|
|
11625
|
+
*/
|
|
11626
|
+
function parseIsoToTimestamp(isoStr) {
|
|
11627
|
+
if (typeof isoStr !== 'string') {
|
|
11628
|
+
return null;
|
|
11629
|
+
}
|
|
11630
|
+
const parts = isoStr.split('-');
|
|
11631
|
+
if (parts.length !== 3) {
|
|
11632
|
+
return null;
|
|
11633
|
+
}
|
|
11634
|
+
const year = parseInt(parts[0], 10);
|
|
11635
|
+
const month = parseInt(parts[1], 10);
|
|
11636
|
+
const day = parseInt(parts[2], 10);
|
|
11637
|
+
if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
|
|
11638
|
+
return null;
|
|
11639
|
+
}
|
|
11640
|
+
// Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
|
|
11641
|
+
// silently normalizes those to a different calendar day, which would
|
|
11642
|
+
// disable the wrong date if we let the result through.
|
|
11643
|
+
if (month < 1 || month > 12 || day < 1 || day > 31) {
|
|
11644
|
+
return null;
|
|
11645
|
+
}
|
|
11646
|
+
const date = new Date(year, month - 1, day);
|
|
11647
|
+
// Guard the residual case where JS still rolls a value (e.g. Feb 30 → Mar 2).
|
|
11648
|
+
// After construction, getFullYear/getMonth/getDate should match the inputs.
|
|
11649
|
+
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
11650
|
+
return null;
|
|
11651
|
+
}
|
|
11652
|
+
const ts = Math.floor(date.getTime() / 1000);
|
|
11653
|
+
return Number.isFinite(ts) ? ts : null;
|
|
11654
|
+
}
|
|
11655
|
+
|
|
11656
|
+
/**
|
|
11657
|
+
* Builds a `Set<number>` of seconds-since-epoch timestamps covering both the
|
|
11658
|
+
* legacy `disabledDays` (already-numeric) array and the ISO `blackoutDates`
|
|
11659
|
+
* array. Use this for O(1) membership checks in hot paths.
|
|
11660
|
+
*
|
|
11661
|
+
* @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
|
|
11662
|
+
* @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
|
|
11663
|
+
* @returns {Set<number>}
|
|
11664
|
+
*/
|
|
11665
|
+
function buildBlackoutSet(disabledDays, blackoutDates) {
|
|
11666
|
+
const set = new Set();
|
|
11667
|
+
if (Array.isArray(disabledDays)) {
|
|
11668
|
+
for (const day of disabledDays) {
|
|
11669
|
+
const ts = parseInt(day, 10);
|
|
11670
|
+
if (Number.isFinite(ts)) {
|
|
11671
|
+
set.add(ts);
|
|
11672
|
+
}
|
|
11673
|
+
}
|
|
11674
|
+
}
|
|
11675
|
+
if (Array.isArray(blackoutDates)) {
|
|
11676
|
+
for (const isoStr of blackoutDates) {
|
|
11677
|
+
const ts = parseIsoToTimestamp(isoStr);
|
|
11678
|
+
if (ts !== null) {
|
|
11679
|
+
set.add(ts);
|
|
11680
|
+
}
|
|
11681
|
+
}
|
|
11682
|
+
}
|
|
11683
|
+
return set;
|
|
11684
|
+
}
|
|
11685
|
+
|
|
11686
|
+
/**
|
|
11687
|
+
* One-shot membership test for a single timestamp against both blackout
|
|
11688
|
+
* sources. Allocates a Set on each call; only use this in cold paths
|
|
11689
|
+
* (e.g. the pre-`firstUpdated` cell fallback). Hot paths should hold the
|
|
11690
|
+
* Set returned from `buildBlackoutSet` and `.has(ts)` directly.
|
|
11691
|
+
*
|
|
11692
|
+
* @param {number} dateTs - Unix timestamp (seconds) to test.
|
|
11693
|
+
* @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
|
|
11694
|
+
* @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
|
|
11695
|
+
* @returns {boolean}
|
|
11696
|
+
*/
|
|
11697
|
+
function isBlackoutTimestamp(dateTs, disabledDays, blackoutDates) {
|
|
11698
|
+
return buildBlackoutSet(disabledDays, blackoutDates).has(dateTs);
|
|
11699
|
+
}
|
|
11700
|
+
|
|
11701
|
+
/* eslint-disable curly, max-lines, no-underscore-dangle, no-magic-numbers, no-underscore-dangle, max-params, no-extra-parens, arrow-parens, max-lines, line-comment-position, no-inline-comments, lit/binding-positions, lit/no-invalid-html */
|
|
11602
11702
|
|
|
11603
11703
|
class AuroCalendarCell extends i$1 {
|
|
11604
11704
|
constructor() {
|
|
@@ -11646,6 +11746,14 @@ class AuroCalendarCell extends i$1 {
|
|
|
11646
11746
|
type: Boolean,
|
|
11647
11747
|
reflect: true
|
|
11648
11748
|
},
|
|
11749
|
+
/**
|
|
11750
|
+
* @deprecated Propagated from the legacy `auro-calendar.disabledDays`
|
|
11751
|
+
* Unix-timestamp array. The cell honors it for backward compatibility
|
|
11752
|
+
* (see the divergence-check fallback inside `isBlackout`), but
|
|
11753
|
+
* consumers should migrate to `auro-datepicker.blackoutDates`
|
|
11754
|
+
* (YYYY-MM-DD ISO strings). The calendar emits a one-time
|
|
11755
|
+
* deprecation warning the first time a non-empty value is observed.
|
|
11756
|
+
*/
|
|
11649
11757
|
disabledDays: { type: Array },
|
|
11650
11758
|
isCurrentDate: { type: Boolean },
|
|
11651
11759
|
locale: { type: String },
|
|
@@ -11691,8 +11799,8 @@ class AuroCalendarCell extends i$1 {
|
|
|
11691
11799
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
11692
11800
|
|
|
11693
11801
|
if (day) {
|
|
11694
|
-
const departTimestamp =
|
|
11695
|
-
const returnTimestamp =
|
|
11802
|
+
const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11803
|
+
const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11696
11804
|
|
|
11697
11805
|
if (day.date === departTimestamp || day.date === returnTimestamp) {
|
|
11698
11806
|
this.selected = true;
|
|
@@ -11776,27 +11884,33 @@ class AuroCalendarCell extends i$1 {
|
|
|
11776
11884
|
return false;
|
|
11777
11885
|
}
|
|
11778
11886
|
|
|
11779
|
-
//
|
|
11780
|
-
|
|
11781
|
-
|
|
11782
|
-
|
|
11783
|
-
|
|
11784
|
-
|
|
11785
|
-
// Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
|
|
11786
|
-
const blackoutDates = this.datepicker?.blackoutDates;
|
|
11787
|
-
|
|
11788
|
-
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
11789
|
-
const date = new Date(this.day.date * 1000);
|
|
11790
|
-
const yyyy = date.getFullYear();
|
|
11791
|
-
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
11792
|
-
const dd = String(date.getDate()).padStart(2, '0');
|
|
11793
|
-
const cellDate = `${yyyy}-${mm}-${dd}`;
|
|
11794
|
-
if (blackoutDates.includes(cellDate)) {
|
|
11887
|
+
// Delegate to the calendar's memoized blackout Set for O(1) lookup
|
|
11888
|
+
// (instead of rescanning disabledDays + blackoutDates per render). The
|
|
11889
|
+
// Set is rebuilt only when either source array reference changes — see
|
|
11890
|
+
// auro-calendar.js#_getBlackoutSet.
|
|
11891
|
+
if (this.calendar && typeof this.calendar._getBlackoutSet === 'function') {
|
|
11892
|
+
if (this.calendar._getBlackoutSet().has(this.day.date)) {
|
|
11795
11893
|
return true;
|
|
11796
11894
|
}
|
|
11895
|
+
// If the cell's local disabledDays diverged from the calendar's (a
|
|
11896
|
+
// consumer or test mutated cell.disabledDays directly), the Set does
|
|
11897
|
+
// not reflect that addition — fall through to the per-cell scan only
|
|
11898
|
+
// when the reference no longer matches. Production data flow keeps
|
|
11899
|
+
// these identical, so this branch stays cold. Guarded with
|
|
11900
|
+
// Array.isArray to match `_getBlackoutSet`'s contract: non-array
|
|
11901
|
+
// values are treated as empty rather than crashing on `.findIndex`.
|
|
11902
|
+
if (Array.isArray(this.disabledDays) && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
|
|
11903
|
+
if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
|
|
11904
|
+
return true;
|
|
11905
|
+
}
|
|
11906
|
+
}
|
|
11907
|
+
return false;
|
|
11797
11908
|
}
|
|
11798
11909
|
|
|
11799
|
-
|
|
11910
|
+
// Pre-firstUpdated fallback — the cell may render once before the
|
|
11911
|
+
// ancestor calendar is wired up. Routes through the shared
|
|
11912
|
+
// blackoutUtils helper so the parsing rules stay in one place.
|
|
11913
|
+
return isBlackoutTimestamp(this.day.date, this.disabledDays, this.datepicker?.blackoutDates);
|
|
11800
11914
|
}
|
|
11801
11915
|
|
|
11802
11916
|
/**
|
|
@@ -11902,12 +12016,12 @@ class AuroCalendarCell extends i$1 {
|
|
|
11902
12016
|
const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
|
|
11903
12017
|
if (!Number.isFinite(parsedDateFrom)) return null;
|
|
11904
12018
|
|
|
11905
|
-
const departTimestamp =
|
|
12019
|
+
const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11906
12020
|
const dayDate = this.day.date;
|
|
11907
12021
|
|
|
11908
12022
|
const parsedDateTo = Number.parseInt(this.dateTo, 10);
|
|
11909
12023
|
const hasDateTo = Number.isFinite(parsedDateTo);
|
|
11910
|
-
const returnTimestamp = hasDateTo ?
|
|
12024
|
+
const returnTimestamp = hasDateTo ? new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
|
|
11911
12025
|
|
|
11912
12026
|
if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
|
|
11913
12027
|
|
|
@@ -11917,7 +12031,9 @@ class AuroCalendarCell extends i$1 {
|
|
|
11917
12031
|
|
|
11918
12032
|
if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
|
|
11919
12033
|
|
|
11920
|
-
|
|
12034
|
+
if (!hasDateTo && dayDate > departTimestamp) return this.datepicker.rangeLabelEndPreview || 'previewing range end';
|
|
12035
|
+
|
|
12036
|
+
// After end date when both dateFrom and dateTo are set.
|
|
11921
12037
|
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
11922
12038
|
}
|
|
11923
12039
|
|
|
@@ -11930,7 +12046,7 @@ class AuroCalendarCell extends i$1 {
|
|
|
11930
12046
|
*/
|
|
11931
12047
|
isDepartDate(day, dateFrom) {
|
|
11932
12048
|
const parsedDateFrom = parseInt(dateFrom, 10);
|
|
11933
|
-
const departTimestamp =
|
|
12049
|
+
const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11934
12050
|
|
|
11935
12051
|
return this.selected && day.date === departTimestamp;
|
|
11936
12052
|
}
|
|
@@ -11945,7 +12061,7 @@ class AuroCalendarCell extends i$1 {
|
|
|
11945
12061
|
*/
|
|
11946
12062
|
isReturnDate(day, dateFrom, dateTo) {
|
|
11947
12063
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
11948
|
-
const returnTimestamp =
|
|
12064
|
+
const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11949
12065
|
|
|
11950
12066
|
return this.selected && day.date === returnTimestamp && dateFrom;
|
|
11951
12067
|
}
|
|
@@ -12109,6 +12225,7 @@ class AuroCalendarCell extends i$1 {
|
|
|
12109
12225
|
setTimeout(() => this.firstUpdated(), 0);
|
|
12110
12226
|
return;
|
|
12111
12227
|
}
|
|
12228
|
+
this.calendar = calendar;
|
|
12112
12229
|
this.datepicker = calendar.datepicker;
|
|
12113
12230
|
this._slotContentHandler = () => {
|
|
12114
12231
|
this.handleSlotContent();
|
|
@@ -12166,15 +12283,28 @@ class AuroCalendarCell extends i$1 {
|
|
|
12166
12283
|
this._cachedButton = this.shadowRoot.querySelector('button.day');
|
|
12167
12284
|
});
|
|
12168
12285
|
|
|
12169
|
-
//
|
|
12286
|
+
// Keep the host's gridcell aria attributes in sync with the day data.
|
|
12170
12287
|
this.updateHostAria();
|
|
12171
12288
|
}
|
|
12172
12289
|
|
|
12173
12290
|
// Update host aria when selection changes (aria-selected, range labels)
|
|
12174
|
-
|
|
12291
|
+
// or when isCurrentDate flips (aria-current).
|
|
12292
|
+
if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
|
|
12175
12293
|
this.updateHostAria();
|
|
12176
12294
|
}
|
|
12177
12295
|
|
|
12296
|
+
// When the rendered range shifts (month nav, min/max change), a cell
|
|
12297
|
+
// host may be re-rendered for a new date that is now out-of-range —
|
|
12298
|
+
// but its imperatively-set `active` flag and `activeCell` ring class
|
|
12299
|
+
// from the previous date persist because setActiveCell only iterates
|
|
12300
|
+
// focusable (in-range) cells when clearing the prior active state.
|
|
12301
|
+
// Drop the active state here so the disabled cell isn't left visually
|
|
12302
|
+
// ringed.
|
|
12303
|
+
if ((properties.has('day') || properties.has('min') || properties.has('max')) &&
|
|
12304
|
+
this.active && this.isOutOfRange(this.day, this.min, this.max)) {
|
|
12305
|
+
this.clearActive();
|
|
12306
|
+
}
|
|
12307
|
+
|
|
12178
12308
|
// Configure popover when it first becomes rendered
|
|
12179
12309
|
if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
|
|
12180
12310
|
this.updateComplete.then(() => this.configurePopover());
|
|
@@ -12182,8 +12312,8 @@ class AuroCalendarCell extends i$1 {
|
|
|
12182
12312
|
}
|
|
12183
12313
|
|
|
12184
12314
|
/**
|
|
12185
|
-
*
|
|
12186
|
-
*
|
|
12315
|
+
* Sets host-level ARIA so each cell exposes its date, selection state,
|
|
12316
|
+
* and blackout status to assistive tech browsing the month grid.
|
|
12187
12317
|
* @private
|
|
12188
12318
|
* @returns {void}
|
|
12189
12319
|
*/
|
|
@@ -12192,16 +12322,27 @@ class AuroCalendarCell extends i$1 {
|
|
|
12192
12322
|
|
|
12193
12323
|
const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
|
|
12194
12324
|
if (outOfRange) {
|
|
12325
|
+
// Strip every aria attribute the in-range branch may have set on a
|
|
12326
|
+
// previous render — if a cell flips from in-range to out-of-range
|
|
12327
|
+
// (calendar shifts months, minDate/maxDate change, etc.).
|
|
12195
12328
|
this.removeAttribute('role');
|
|
12196
12329
|
this.removeAttribute('aria-label');
|
|
12330
|
+
this.removeAttribute('aria-current');
|
|
12331
|
+
this.removeAttribute('aria-selected');
|
|
12332
|
+
this.removeAttribute('aria-disabled');
|
|
12197
12333
|
return;
|
|
12198
12334
|
}
|
|
12199
12335
|
|
|
12200
|
-
// The host acts as the gridcell for ariaActiveDescendantElement.
|
|
12201
12336
|
this.setAttribute('role', 'gridcell');
|
|
12202
12337
|
this.setAttribute('aria-label', this.getAriaLabel());
|
|
12203
12338
|
this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
|
|
12204
12339
|
|
|
12340
|
+
if (this.isCurrentDate) {
|
|
12341
|
+
this.setAttribute('aria-current', 'date');
|
|
12342
|
+
} else {
|
|
12343
|
+
this.removeAttribute('aria-current');
|
|
12344
|
+
}
|
|
12345
|
+
|
|
12205
12346
|
if (this.isBlackout()) {
|
|
12206
12347
|
this.setAttribute('aria-disabled', 'true');
|
|
12207
12348
|
} else {
|
|
@@ -12216,7 +12357,7 @@ class AuroCalendarCell extends i$1 {
|
|
|
12216
12357
|
* @returns {void}
|
|
12217
12358
|
*/
|
|
12218
12359
|
focusButton() {
|
|
12219
|
-
const button = this._cachedButton || this.shadowRoot.querySelector('button:not([
|
|
12360
|
+
const button = this._cachedButton || this.shadowRoot.querySelector('button:not([disabled])');
|
|
12220
12361
|
if (button) {
|
|
12221
12362
|
button.focus({ focusVisible: true });
|
|
12222
12363
|
}
|
|
@@ -12224,10 +12365,22 @@ class AuroCalendarCell extends i$1 {
|
|
|
12224
12365
|
|
|
12225
12366
|
/**
|
|
12226
12367
|
* Imperatively marks this cell as active without triggering a Lit re-render.
|
|
12227
|
-
*
|
|
12368
|
+
* Buttons stay tabindex="-1" because DOM focus stays on the grid wrapper —
|
|
12369
|
+
* arrow keys move the active cell imperatively and the live region carries
|
|
12370
|
+
* the SR announcement.
|
|
12371
|
+
*
|
|
12372
|
+
* Refuses to activate out-of-range cells: those are aria-hidden, have no
|
|
12373
|
+
* click/focus handlers, and are filtered out of `getFocusableCells`. The
|
|
12374
|
+
* active class showing on a disabled cell would be visually misleading,
|
|
12375
|
+
* so this guard is the single source of truth across every code path
|
|
12376
|
+
* that might call setActive (keyboard nav, focus restore, cell click).
|
|
12228
12377
|
* @returns {void}
|
|
12229
12378
|
*/
|
|
12230
12379
|
setActive() {
|
|
12380
|
+
if (this.isOutOfRange(this.day, this.min, this.max)) {
|
|
12381
|
+
return;
|
|
12382
|
+
}
|
|
12383
|
+
|
|
12231
12384
|
this.active = true;
|
|
12232
12385
|
|
|
12233
12386
|
// Show the popover when this cell becomes active via keyboard navigation.
|
|
@@ -12266,10 +12419,13 @@ class AuroCalendarCell extends i$1 {
|
|
|
12266
12419
|
if (!btn || !this.day) return;
|
|
12267
12420
|
|
|
12268
12421
|
const dayDate = this.day.date;
|
|
12269
|
-
const departTimestamp =
|
|
12422
|
+
const departTimestamp = new Date(dateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
12270
12423
|
const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
|
|
12271
|
-
|
|
12272
|
-
|
|
12424
|
+
// `>=` so hovering the depart cell itself (a same-day round-trip
|
|
12425
|
+
// preview) still surfaces a visual cue: the depart cell receives both
|
|
12426
|
+
// rangeDepartDate and lastHoveredDate.
|
|
12427
|
+
const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
|
|
12428
|
+
const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
|
|
12273
12429
|
|
|
12274
12430
|
btn.classList.toggle('inRange', isInRange);
|
|
12275
12431
|
btn.classList.toggle('lastHoveredDate', isLastHovered);
|
|
@@ -12327,7 +12483,6 @@ class AuroCalendarCell extends i$1 {
|
|
|
12327
12483
|
@focus="${outOfRange ? undefined : this.handleFocus}"
|
|
12328
12484
|
class="${e$4(buttonClasses)}"
|
|
12329
12485
|
?disabled="${outOfRange}"
|
|
12330
|
-
aria-hidden="${outOfRange ? 'true' : A$4}"
|
|
12331
12486
|
tabindex="-1">
|
|
12332
12487
|
<div class="buttonWrapper" aria-hidden="true">
|
|
12333
12488
|
<div class="currentDayMarker">${this.day?.title || A$4}</div>
|
|
@@ -13044,7 +13199,7 @@ class CalendarUtilities {
|
|
|
13044
13199
|
|
|
13045
13200
|
var colorCss$4 = i$3`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
|
|
13046
13201
|
|
|
13047
|
-
var styleCss$4 = i$3`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1
|
|
13202
|
+
var styleCss$4 = i$3`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{padding:var(--ds-size-200, 1rem)}`;
|
|
13048
13203
|
|
|
13049
13204
|
var tokenCss = i$3`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
|
|
13050
13205
|
|
|
@@ -13439,7 +13594,7 @@ class AuroBibtemplate extends i$1 {
|
|
|
13439
13594
|
}
|
|
13440
13595
|
}
|
|
13441
13596
|
|
|
13442
|
-
var formkitVersion$2 = '
|
|
13597
|
+
var formkitVersion$2 = '202607010100';
|
|
13443
13598
|
|
|
13444
13599
|
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=i$5`${s$5(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$4 = 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$3=i$3`: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}
|
|
13445
13600
|
`,u$6=i$3`.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}}
|
|
@@ -13544,6 +13699,15 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13544
13699
|
*/
|
|
13545
13700
|
this.activeCellDate = null;
|
|
13546
13701
|
|
|
13702
|
+
/**
|
|
13703
|
+
* Cached reference to the active cell host. Set by setActiveCell and
|
|
13704
|
+
* refreshed by scrollToActiveCell when its cache check misses (stale
|
|
13705
|
+
* or missing). Lets scrollToActiveCell skip a full cell scan on each
|
|
13706
|
+
* arrow key.
|
|
13707
|
+
* @private
|
|
13708
|
+
*/
|
|
13709
|
+
this._activeCell = null;
|
|
13710
|
+
|
|
13547
13711
|
/**
|
|
13548
13712
|
* Whether the #calendarGrid wrapper currently has focus.
|
|
13549
13713
|
* Used to determine whether the visualFocus ring should be shown.
|
|
@@ -13562,7 +13726,11 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13562
13726
|
this.calendarRangeMonths = null;
|
|
13563
13727
|
|
|
13564
13728
|
/**
|
|
13565
|
-
*
|
|
13729
|
+
* @deprecated Use `auro-datepicker.blackoutDates` (an array of
|
|
13730
|
+
* `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
|
|
13731
|
+
* timestamps is still honored for backward compatibility but emits a
|
|
13732
|
+
* one-time `console.debug` the first time a non-empty value is observed.
|
|
13733
|
+
* Support will be removed in a future major release.
|
|
13566
13734
|
* @private
|
|
13567
13735
|
*/
|
|
13568
13736
|
this.disabledDays = [];
|
|
@@ -13819,17 +13987,44 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13819
13987
|
* @returns {void}
|
|
13820
13988
|
*/
|
|
13821
13989
|
updateActiveCellForVisibleMonth() {
|
|
13822
|
-
|
|
13823
|
-
|
|
13824
|
-
requestAnimationFrame(() => {
|
|
13825
|
-
requestAnimationFrame(() => {
|
|
13826
|
-
const newDate = this.computeActiveDate({ skipDateFrom: true });
|
|
13990
|
+
this._afterMonthRender(() => {
|
|
13991
|
+
const newDate = this.computeActiveDate({ skipDateFrom: true });
|
|
13827
13992
|
|
|
13828
|
-
|
|
13829
|
-
|
|
13830
|
-
|
|
13831
|
-
|
|
13832
|
-
|
|
13993
|
+
if (newDate !== null && newDate !== undefined) {
|
|
13994
|
+
this.activeCellDate = newDate;
|
|
13995
|
+
this.setActiveCell(this.activeCellDate);
|
|
13996
|
+
}
|
|
13997
|
+
});
|
|
13998
|
+
}
|
|
13999
|
+
|
|
14000
|
+
/**
|
|
14001
|
+
* Schedules `callback` two animation frames out, giving the child
|
|
14002
|
+
* `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
|
|
14003
|
+
* a full render-and-paint cycle to settle before the callback reads or
|
|
14004
|
+
* mutates DOM.
|
|
14005
|
+
*
|
|
14006
|
+
* Why two frames, not one:
|
|
14007
|
+
* 1. Lit batches property updates and renders in a microtask, so frame N
|
|
14008
|
+
* schedules the render but the new DOM may not be painted yet.
|
|
14009
|
+
* 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
|
|
14010
|
+
* which also lands a tick later. Reading buttons from frame N+1
|
|
14011
|
+
* (after both renders + cache refresh have flushed) reliably hits the
|
|
14012
|
+
* new month's cells.
|
|
14013
|
+
*
|
|
14014
|
+
* Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
|
|
14015
|
+
* and then needs to inspect the freshly-rendered cells (cross-month
|
|
14016
|
+
* keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
|
|
14017
|
+
* Do NOT collapse to a single rAF — it intermittently lands before
|
|
14018
|
+
* `_cachedButton` is refreshed, which silently breaks focus restoration
|
|
14019
|
+
* and `setActiveCell` lookups.
|
|
14020
|
+
* @private
|
|
14021
|
+
* @param {() => void} callback - Runs once after the month re-render and
|
|
14022
|
+
* the cells' button caches have refreshed.
|
|
14023
|
+
* @returns {void}
|
|
14024
|
+
*/
|
|
14025
|
+
_afterMonthRender(callback) {
|
|
14026
|
+
requestAnimationFrame(() => {
|
|
14027
|
+
requestAnimationFrame(callback);
|
|
13833
14028
|
});
|
|
13834
14029
|
}
|
|
13835
14030
|
|
|
@@ -13947,6 +14142,47 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13947
14142
|
return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
|
|
13948
14143
|
}
|
|
13949
14144
|
|
|
14145
|
+
/**
|
|
14146
|
+
* Picks the focusable cell whose date is closest to targetTs. Used as a
|
|
14147
|
+
* fallback after a month-boundary nav when the exact target date isn't
|
|
14148
|
+
* focusable — typically because the month re-render lagged or the date
|
|
14149
|
+
* was filtered out by isOutOfRange. When two cells are equidistant, the
|
|
14150
|
+
* navigation direction breaks the tie so the user moves the way they
|
|
14151
|
+
* pressed (forward → later cell, backward → earlier cell).
|
|
14152
|
+
* @private
|
|
14153
|
+
* @param {Array} cells - Focusable cells from getAllFocusableCells.
|
|
14154
|
+
* @param {Number} targetTs - Desired Unix timestamp (seconds).
|
|
14155
|
+
* @param {'next'|'prev'} direction - Navigation direction.
|
|
14156
|
+
* @returns {Object|null} The nearest cell, or null when cells is empty.
|
|
14157
|
+
*/
|
|
14158
|
+
pickNearestCell(cells, targetTs, direction) {
|
|
14159
|
+
if (!cells.length) {
|
|
14160
|
+
return null;
|
|
14161
|
+
}
|
|
14162
|
+
const forward = direction === 'next';
|
|
14163
|
+
let best = null;
|
|
14164
|
+
let bestDelta = Infinity;
|
|
14165
|
+
cells.forEach((cell) => {
|
|
14166
|
+
if (!cell.day) {
|
|
14167
|
+
return;
|
|
14168
|
+
}
|
|
14169
|
+
const distance = Math.abs(cell.day.date - targetTs);
|
|
14170
|
+
if (distance < bestDelta) {
|
|
14171
|
+
best = cell;
|
|
14172
|
+
bestDelta = distance;
|
|
14173
|
+
return;
|
|
14174
|
+
}
|
|
14175
|
+
if (distance === bestDelta && best) {
|
|
14176
|
+
if (forward && cell.day.date > best.day.date) {
|
|
14177
|
+
best = cell;
|
|
14178
|
+
} else if (!forward && cell.day.date < best.day.date) {
|
|
14179
|
+
best = cell;
|
|
14180
|
+
}
|
|
14181
|
+
}
|
|
14182
|
+
});
|
|
14183
|
+
return best;
|
|
14184
|
+
}
|
|
14185
|
+
|
|
13950
14186
|
/**
|
|
13951
14187
|
* Gets all focusable cells across all rendered months.
|
|
13952
14188
|
* @private
|
|
@@ -13963,9 +14199,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13963
14199
|
|
|
13964
14200
|
/**
|
|
13965
14201
|
* Sets the active cell across all months. Only one cell has tabindex="0" at a time.
|
|
13966
|
-
* Uses imperative DOM manipulation — no Lit re-render triggered.
|
|
13967
|
-
*
|
|
13968
|
-
*
|
|
14202
|
+
* Uses imperative DOM manipulation — no Lit re-render triggered. DOM focus
|
|
14203
|
+
* stays on the grid wrapper; the live region (see getOrCreateLiveRegion)
|
|
14204
|
+
* is what announces the active cell to assistive tech.
|
|
13969
14205
|
* @param {Number} date - Unix timestamp of the cell to activate.
|
|
13970
14206
|
* @returns {void}
|
|
13971
14207
|
*/
|
|
@@ -13983,6 +14219,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13983
14219
|
});
|
|
13984
14220
|
|
|
13985
14221
|
this.activeCellDate = date;
|
|
14222
|
+
// Cache so scrollToActiveCell can scroll without re-querying all cells
|
|
14223
|
+
// on every arrow keypress.
|
|
14224
|
+
this._activeCell = newActiveCell;
|
|
13986
14225
|
|
|
13987
14226
|
// Apply activeCell ring only when the grid currently has focus.
|
|
13988
14227
|
if (newActiveCell && this._gridHasFocus) {
|
|
@@ -14014,10 +14253,23 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14014
14253
|
/**
|
|
14015
14254
|
* Shows the activeCell ring when the grid gains focus.
|
|
14016
14255
|
* @private
|
|
14256
|
+
* @param {FocusEvent} [event] - The focusin event.
|
|
14017
14257
|
* @returns {void}
|
|
14018
14258
|
*/
|
|
14019
|
-
handleGridFocusIn() {
|
|
14259
|
+
handleGridFocusIn(event) {
|
|
14020
14260
|
this._gridHasFocus = true;
|
|
14261
|
+
|
|
14262
|
+
// Only apply the activeCell ring when the grid wrapper itself receives focus
|
|
14263
|
+
// (Tab/programmatic). When focus moves into a cell button via mousedown,
|
|
14264
|
+
// event.target is the cell descendant — skip the ring here. The subsequent
|
|
14265
|
+
// click handler calls setActiveCell on the clicked cell, which applies the
|
|
14266
|
+
// ring there. Without this guard, mousedown briefly flashes the ring on the
|
|
14267
|
+
// previously-active cell (e.g. the 1st-of-month set by month navigation
|
|
14268
|
+
// when the grid was not focused).
|
|
14269
|
+
if (event && event.target !== event.currentTarget) {
|
|
14270
|
+
return;
|
|
14271
|
+
}
|
|
14272
|
+
|
|
14021
14273
|
const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
|
|
14022
14274
|
if (activeCell) {
|
|
14023
14275
|
const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
|
|
@@ -14046,6 +14298,65 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14046
14298
|
this.clearRangePreview();
|
|
14047
14299
|
}
|
|
14048
14300
|
|
|
14301
|
+
/**
|
|
14302
|
+
* Returns a memoized Set of blackout timestamps (seconds) drawn from both
|
|
14303
|
+
* the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
|
|
14304
|
+
* The cache invalidates when either source array's reference changes, which
|
|
14305
|
+
* matches Lit's own reactive identity semantics for array properties.
|
|
14306
|
+
* @private
|
|
14307
|
+
* @returns {Set<Number>}
|
|
14308
|
+
*/
|
|
14309
|
+
_getBlackoutSet() {
|
|
14310
|
+
// Normalize non-array values to a stable `null` sentinel rather than a
|
|
14311
|
+
// fresh `[]` per call — otherwise the reference-identity cache key
|
|
14312
|
+
// (`_cachedBlackoutDisabledDays === disabledDays`) never matches on
|
|
14313
|
+
// subsequent calls and the Set rebuilds every time. `buildBlackoutSet`
|
|
14314
|
+
// already treats null/non-array as "no legacy disabledDays" via its
|
|
14315
|
+
// own Array.isArray gate.
|
|
14316
|
+
const disabledDays = Array.isArray(this.disabledDays) ? this.disabledDays : null;
|
|
14317
|
+
const blackoutDates = this.datepicker?.blackoutDates;
|
|
14318
|
+
if (this._blackoutSet &&
|
|
14319
|
+
this._cachedBlackoutDisabledDays === disabledDays &&
|
|
14320
|
+
this._cachedBlackoutDates === blackoutDates) {
|
|
14321
|
+
return this._blackoutSet;
|
|
14322
|
+
}
|
|
14323
|
+
|
|
14324
|
+
if (disabledDays && disabledDays.length > 0) {
|
|
14325
|
+
this._warnDisabledDaysDeprecated();
|
|
14326
|
+
}
|
|
14327
|
+
|
|
14328
|
+
this._blackoutSet = buildBlackoutSet(disabledDays, blackoutDates);
|
|
14329
|
+
this._cachedBlackoutDisabledDays = disabledDays;
|
|
14330
|
+
this._cachedBlackoutDates = blackoutDates;
|
|
14331
|
+
return this._blackoutSet;
|
|
14332
|
+
}
|
|
14333
|
+
|
|
14334
|
+
/**
|
|
14335
|
+
* Per-class flag that gates the `disabledDays` deprecation warning so it
|
|
14336
|
+
* fires exactly once per page no matter how many calendars or rebuild
|
|
14337
|
+
* cycles encounter the legacy array.
|
|
14338
|
+
* @private
|
|
14339
|
+
*/
|
|
14340
|
+
static _warnedDisabledDaysDeprecation = false;
|
|
14341
|
+
|
|
14342
|
+
/**
|
|
14343
|
+
* One-time `console.debug` directing consumers from the legacy
|
|
14344
|
+
* `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
|
|
14345
|
+
* the first time `_getBlackoutSet` rebuilds from a non-empty
|
|
14346
|
+
* `disabledDays`; subsequent calls (on this or any other AuroCalendar
|
|
14347
|
+
* instance on the page) are silent.
|
|
14348
|
+
* @private
|
|
14349
|
+
* @returns {void}
|
|
14350
|
+
*/
|
|
14351
|
+
_warnDisabledDaysDeprecated() {
|
|
14352
|
+
if (AuroCalendar._warnedDisabledDaysDeprecation) {
|
|
14353
|
+
return;
|
|
14354
|
+
}
|
|
14355
|
+
AuroCalendar._warnedDisabledDaysDeprecation = true;
|
|
14356
|
+
// eslint-disable-next-line no-console
|
|
14357
|
+
console.debug('[auro-datepicker] The `disabledDays` property (Unix timestamps) is deprecated. Migrate to the `blackoutDates` property on auro-datepicker (an array of `YYYY-MM-DD` ISO strings). `disabledDays` will be removed in a future major release.');
|
|
14358
|
+
}
|
|
14359
|
+
|
|
14049
14360
|
/**
|
|
14050
14361
|
* Computes the initial active date from data properties alone — no DOM required.
|
|
14051
14362
|
* Priority:
|
|
@@ -14090,21 +14401,10 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14090
14401
|
const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
|
|
14091
14402
|
const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
|
|
14092
14403
|
|
|
14093
|
-
// Build a Set of blackout timestamps for O(1) lookup.
|
|
14094
|
-
|
|
14095
|
-
|
|
14096
|
-
|
|
14097
|
-
// Parse YYYY-MM-DD as local date to avoid UTC shift issues.
|
|
14098
|
-
const isoBlackouts = this.datepicker?.blackoutDates;
|
|
14099
|
-
if (Array.isArray(isoBlackouts)) {
|
|
14100
|
-
for (const isoStr of isoBlackouts) {
|
|
14101
|
-
const parts = isoStr.split('-');
|
|
14102
|
-
const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
|
|
14103
|
-
if (Number.isFinite(ts)) {
|
|
14104
|
-
blackoutSet.add(ts);
|
|
14105
|
-
}
|
|
14106
|
-
}
|
|
14107
|
-
}
|
|
14404
|
+
// Build a Set of blackout timestamps for O(1) lookup. Memoized by the
|
|
14405
|
+
// identity of the source arrays so rapid month nav doesn't rebuild the
|
|
14406
|
+
// Set (and re-parse every ISO string) on every keypress.
|
|
14407
|
+
const blackoutSet = this._getBlackoutSet();
|
|
14108
14408
|
|
|
14109
14409
|
/**
|
|
14110
14410
|
* A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
|
|
@@ -14300,8 +14600,8 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14300
14600
|
|
|
14301
14601
|
/**
|
|
14302
14602
|
* Handles arrow key navigation on the calendar grid wrapper.
|
|
14303
|
-
* Focus stays on the grid wrapper; only
|
|
14304
|
-
*
|
|
14603
|
+
* Focus stays on the grid wrapper; only the visual active-cell indicator
|
|
14604
|
+
* changes. The live region announces the new active cell.
|
|
14305
14605
|
* @private
|
|
14306
14606
|
* @param {KeyboardEvent} event - The keyboard event.
|
|
14307
14607
|
* @returns {void}
|
|
@@ -14366,21 +14666,24 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14366
14666
|
} else {
|
|
14367
14667
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14368
14668
|
}
|
|
14369
|
-
|
|
14370
|
-
|
|
14371
|
-
|
|
14372
|
-
|
|
14373
|
-
|
|
14374
|
-
|
|
14375
|
-
|
|
14376
|
-
|
|
14377
|
-
|
|
14669
|
+
this._afterMonthRender(() => {
|
|
14670
|
+
const cells = this.getAllFocusableCells();
|
|
14671
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
|
|
14672
|
+
if (target) {
|
|
14673
|
+
this.setActiveCell(target.day.date);
|
|
14674
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
14675
|
+
} else {
|
|
14676
|
+
const fallback = this.pickNearestCell(cells, targetTs, navDir);
|
|
14677
|
+
if (fallback) {
|
|
14378
14678
|
this.setActiveCell(fallback.day.date);
|
|
14379
14679
|
this.handleCellFocused({ detail: { date: fallback.day.date } });
|
|
14380
14680
|
}
|
|
14381
|
-
|
|
14382
|
-
|
|
14383
|
-
|
|
14681
|
+
}
|
|
14682
|
+
// Scroll AFTER the cross-month setActiveCell so the freshly
|
|
14683
|
+
// activated cell is what gets scrolled into view.
|
|
14684
|
+
this.scrollToActiveCell();
|
|
14685
|
+
// Re-focus grid wrapper after month change re-render
|
|
14686
|
+
this.focusActiveCell();
|
|
14384
14687
|
});
|
|
14385
14688
|
}
|
|
14386
14689
|
}
|
|
@@ -14406,26 +14709,23 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14406
14709
|
} else {
|
|
14407
14710
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14408
14711
|
}
|
|
14409
|
-
|
|
14410
|
-
|
|
14411
|
-
|
|
14412
|
-
|
|
14413
|
-
|
|
14414
|
-
|
|
14415
|
-
|
|
14416
|
-
|
|
14417
|
-
|
|
14418
|
-
|
|
14419
|
-
if (navDirection === 'next') {
|
|
14420
|
-
[nearest] = cells;
|
|
14421
|
-
} else {
|
|
14422
|
-
nearest = cells[cells.length - 1];
|
|
14423
|
-
}
|
|
14712
|
+
this._afterMonthRender(() => {
|
|
14713
|
+
const cells = this.getAllFocusableCells();
|
|
14714
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14715
|
+
if (target) {
|
|
14716
|
+
this.setActiveCell(target.day.date);
|
|
14717
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
14718
|
+
} else {
|
|
14719
|
+
const nearest = this.pickNearestCell(cells, targetDate, navDirection);
|
|
14720
|
+
if (nearest) {
|
|
14424
14721
|
this.setActiveCell(nearest.day.date);
|
|
14425
14722
|
this.handleCellFocused({ detail: { date: nearest.day.date } });
|
|
14426
14723
|
}
|
|
14427
|
-
|
|
14428
|
-
|
|
14724
|
+
}
|
|
14725
|
+
// Scroll AFTER the cross-month setActiveCell so the freshly
|
|
14726
|
+
// activated cell is what gets scrolled into view.
|
|
14727
|
+
this.scrollToActiveCell();
|
|
14728
|
+
this.focusActiveCell();
|
|
14429
14729
|
});
|
|
14430
14730
|
}
|
|
14431
14731
|
}
|
|
@@ -14459,6 +14759,8 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14459
14759
|
const targetCell = allCells[targetIndex];
|
|
14460
14760
|
this.setActiveCell(targetCell.day.date);
|
|
14461
14761
|
this.scrollToActiveCell();
|
|
14762
|
+
// Match the cross-month branches: keep DOM focus on the grid wrapper
|
|
14763
|
+
// so subsequent arrow keys continue to land on this handler.
|
|
14462
14764
|
this.focusActiveCell();
|
|
14463
14765
|
} else if (direction === 'next' && this.showNextMonthBtn) {
|
|
14464
14766
|
// Navigate to next month and focus the computed next date.
|
|
@@ -14475,19 +14777,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14475
14777
|
}
|
|
14476
14778
|
|
|
14477
14779
|
this.handleNextMonth({ skipActiveUpdate: true });
|
|
14478
|
-
|
|
14479
|
-
|
|
14480
|
-
|
|
14481
|
-
|
|
14482
|
-
|
|
14483
|
-
|
|
14484
|
-
|
|
14485
|
-
|
|
14486
|
-
|
|
14487
|
-
|
|
14488
|
-
|
|
14780
|
+
this._afterMonthRender(() => {
|
|
14781
|
+
const cells = this.getAllFocusableCells();
|
|
14782
|
+
const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
|
|
14783
|
+
if (target) {
|
|
14784
|
+
this.setActiveCell(target.day.date);
|
|
14785
|
+
} else {
|
|
14786
|
+
// Same nearest-by-date fallback handleGridKeyDown uses — direct
|
|
14787
|
+
// `cells[length - 1]` would land on the end of the new month,
|
|
14788
|
+
// far from the user's intended `nextTs`.
|
|
14789
|
+
const fallback = this.pickNearestCell(cells, nextTs, 'next');
|
|
14790
|
+
if (fallback) {
|
|
14791
|
+
this.setActiveCell(fallback.day.date);
|
|
14489
14792
|
}
|
|
14490
|
-
}
|
|
14793
|
+
}
|
|
14794
|
+
this.scrollToActiveCell();
|
|
14795
|
+
this.focusActiveCell();
|
|
14491
14796
|
});
|
|
14492
14797
|
} else if (direction === 'prev' && this.showPrevMonthBtn) {
|
|
14493
14798
|
// Navigate to previous month and focus the computed previous date.
|
|
@@ -14501,19 +14806,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14501
14806
|
}
|
|
14502
14807
|
|
|
14503
14808
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14504
|
-
|
|
14505
|
-
|
|
14506
|
-
|
|
14507
|
-
|
|
14508
|
-
|
|
14509
|
-
|
|
14510
|
-
|
|
14511
|
-
|
|
14512
|
-
|
|
14513
|
-
|
|
14514
|
-
|
|
14809
|
+
this._afterMonthRender(() => {
|
|
14810
|
+
const cells = this.getAllFocusableCells();
|
|
14811
|
+
const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
|
|
14812
|
+
if (target) {
|
|
14813
|
+
this.setActiveCell(target.day.date);
|
|
14814
|
+
} else {
|
|
14815
|
+
// Same nearest-by-date fallback handleGridKeyDown uses — direct
|
|
14816
|
+
// `cells[0]` would land on the start of the previous month, far
|
|
14817
|
+
// from the user's intended `prevTs`.
|
|
14818
|
+
const fallback = this.pickNearestCell(cells, prevTs, 'prev');
|
|
14819
|
+
if (fallback) {
|
|
14820
|
+
this.setActiveCell(fallback.day.date);
|
|
14515
14821
|
}
|
|
14516
|
-
}
|
|
14822
|
+
}
|
|
14823
|
+
this.scrollToActiveCell();
|
|
14824
|
+
this.focusActiveCell();
|
|
14517
14825
|
});
|
|
14518
14826
|
}
|
|
14519
14827
|
} else if (key === 'ArrowDown' || key === 'ArrowUp') {
|
|
@@ -14541,20 +14849,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14541
14849
|
} else {
|
|
14542
14850
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14543
14851
|
}
|
|
14544
|
-
|
|
14545
|
-
|
|
14546
|
-
|
|
14547
|
-
|
|
14548
|
-
|
|
14549
|
-
|
|
14550
|
-
|
|
14551
|
-
|
|
14552
|
-
|
|
14553
|
-
|
|
14852
|
+
this._afterMonthRender(() => {
|
|
14853
|
+
const cells = this.getAllFocusableCells();
|
|
14854
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14855
|
+
if (target) {
|
|
14856
|
+
this.setActiveCell(target.day.date);
|
|
14857
|
+
} else {
|
|
14858
|
+
// Same nearest-by-date fallback handleGridKeyDown uses — the
|
|
14859
|
+
// old direction-based `cells[0]`/`cells[length-1]` clamp
|
|
14860
|
+
// could land 25+ days from the intended target.
|
|
14861
|
+
const nearest = this.pickNearestCell(cells, targetDate, navDirection);
|
|
14862
|
+
if (nearest) {
|
|
14554
14863
|
this.setActiveCell(nearest.day.date);
|
|
14555
|
-
this.focusActiveCell();
|
|
14556
14864
|
}
|
|
14557
|
-
}
|
|
14865
|
+
}
|
|
14866
|
+
this.scrollToActiveCell();
|
|
14867
|
+
this.focusActiveCell();
|
|
14558
14868
|
});
|
|
14559
14869
|
}
|
|
14560
14870
|
}
|
|
@@ -14593,8 +14903,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14593
14903
|
return;
|
|
14594
14904
|
}
|
|
14595
14905
|
|
|
14596
|
-
//
|
|
14597
|
-
// so
|
|
14906
|
+
// DOM focus stays on the grid wrapper while arrow keys move the active
|
|
14907
|
+
// cell, so cell buttons never receive native focus. The debounced live
|
|
14908
|
+
// region carries the full-context announcement instead.
|
|
14598
14909
|
const announcement = this.buildFocusAnnouncement(date);
|
|
14599
14910
|
this.announceFocusDebounced(announcement);
|
|
14600
14911
|
|
|
@@ -14664,10 +14975,10 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14664
14975
|
return null;
|
|
14665
14976
|
}
|
|
14666
14977
|
|
|
14667
|
-
const departTs =
|
|
14978
|
+
const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
14668
14979
|
const parsedTo = Number.parseInt(this.dateTo, 10);
|
|
14669
14980
|
const hasTo = Number.isFinite(parsedTo);
|
|
14670
|
-
const returnTs = hasTo ?
|
|
14981
|
+
const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
|
|
14671
14982
|
|
|
14672
14983
|
if (date === departTs) {
|
|
14673
14984
|
return this.datepicker.rangeLabelStart || 'range start';
|
|
@@ -14681,36 +14992,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14681
14992
|
if (hasTo && date > departTs && date < returnTs) {
|
|
14682
14993
|
return this.datepicker.rangeLabelInRange || 'in range';
|
|
14683
14994
|
}
|
|
14995
|
+
if (!hasTo && date > departTs) {
|
|
14996
|
+
return this.datepicker.rangeLabelEndPreview || 'previewing range end';
|
|
14997
|
+
}
|
|
14684
14998
|
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
14685
14999
|
}
|
|
14686
15000
|
|
|
14687
15001
|
/**
|
|
14688
|
-
* Checks whether a given date is a blackout date.
|
|
15002
|
+
* Checks whether a given date is a blackout date. Delegates to the
|
|
15003
|
+
* memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
|
|
15004
|
+
* legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
|
|
14689
15005
|
* @private
|
|
14690
15006
|
* @param {Number} dateTs - Unix timestamp (seconds).
|
|
14691
15007
|
* @returns {Boolean} True if the date is blacked out.
|
|
14692
15008
|
*/
|
|
14693
15009
|
isDateBlackout(dateTs) {
|
|
14694
|
-
|
|
14695
|
-
if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
|
|
14696
|
-
if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
|
|
14697
|
-
return true;
|
|
14698
|
-
}
|
|
14699
|
-
}
|
|
14700
|
-
|
|
14701
|
-
// Check ISO blackoutDates.
|
|
14702
|
-
const blackoutDates = this.datepicker?.blackoutDates;
|
|
14703
|
-
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
14704
|
-
const date = new Date(dateTs * 1000);
|
|
14705
|
-
const yyyy = date.getFullYear();
|
|
14706
|
-
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
14707
|
-
const dd = String(date.getDate()).padStart(2, '0');
|
|
14708
|
-
if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
|
|
14709
|
-
return true;
|
|
14710
|
-
}
|
|
14711
|
-
}
|
|
14712
|
-
|
|
14713
|
-
return false;
|
|
15010
|
+
return this._getBlackoutSet().has(dateTs);
|
|
14714
15011
|
}
|
|
14715
15012
|
|
|
14716
15013
|
/**
|
|
@@ -14768,7 +15065,28 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14768
15065
|
}
|
|
14769
15066
|
|
|
14770
15067
|
/**
|
|
14771
|
-
* Scrolls the calendar
|
|
15068
|
+
* Scrolls the calendar so the active cell is visible.
|
|
15069
|
+
*
|
|
15070
|
+
* Walks the flat tree (rendered, slot-aware) outward from the active
|
|
15071
|
+
* cell's button and calls `scrollBy` on every vertically-scrollable
|
|
15072
|
+
* ancestor by whatever delta still separates the cell from that
|
|
15073
|
+
* ancestor's viewport. Native `scrollIntoView` is not used because the
|
|
15074
|
+
* cell sits inside multiple nested scroll containers (the dropdown bib's
|
|
15075
|
+
* `<dialog>`, the bibtemplate's `#bodyContainer`) and the algorithm only
|
|
15076
|
+
* scrolls one of them on its own, leaving the cell short of the
|
|
15077
|
+
* viewport in mobile fullscreen.
|
|
15078
|
+
*
|
|
15079
|
+
* Uses `behavior: 'auto'` (the spec's universally-supported non-animated
|
|
15080
|
+
* value) so each `scrollBy` resolves synchronously and the next
|
|
15081
|
+
* iteration's `getBoundingClientRect` reads post-scroll positions
|
|
15082
|
+
* accurately. This also satisfies `prefers-reduced-motion` users — the
|
|
15083
|
+
* scroll containers do not set CSS `scroll-behavior: smooth`, so `auto`
|
|
15084
|
+
* is effectively instant.
|
|
15085
|
+
*
|
|
15086
|
+
* The active cell is looked up from the cache populated by
|
|
15087
|
+
* `setActiveCell`. On a cache miss (stale or absent) the cache is
|
|
15088
|
+
* refreshed from a single full scan so subsequent calls stay on the
|
|
15089
|
+
* fast path.
|
|
14772
15090
|
* @private
|
|
14773
15091
|
* @returns {void}
|
|
14774
15092
|
*/
|
|
@@ -14777,16 +15095,69 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14777
15095
|
return;
|
|
14778
15096
|
}
|
|
14779
15097
|
|
|
14780
|
-
|
|
14781
|
-
|
|
14782
|
-
|
|
14783
|
-
|
|
14784
|
-
|
|
15098
|
+
// Prefer the cell cached by setActiveCell so arrow-key navigation does
|
|
15099
|
+
// not rebuild the full cell list on every keypress. Fall back to a
|
|
15100
|
+
// lookup when the cache is stale (e.g. detached after month re-render)
|
|
15101
|
+
// or absent (scrollToActiveCell called without a prior setActiveCell);
|
|
15102
|
+
// refresh the cache on the fallback path so a subsequent call reuses it.
|
|
15103
|
+
const activeDate = this.activeCellDate;
|
|
15104
|
+
const cached = this._activeCell;
|
|
15105
|
+
const cacheFresh = cached && cached.isConnected && cached.day && cached.day.date === activeDate;
|
|
15106
|
+
let activeCell = null;
|
|
15107
|
+
if (cacheFresh) {
|
|
15108
|
+
activeCell = cached;
|
|
15109
|
+
} else {
|
|
15110
|
+
activeCell = this.getAllFocusableCells().find((cell) => cell.day && cell.day.date === activeDate);
|
|
15111
|
+
this._activeCell = activeCell || null;
|
|
15112
|
+
}
|
|
15113
|
+
if (!activeCell) {
|
|
15114
|
+
return;
|
|
15115
|
+
}
|
|
15116
|
+
|
|
15117
|
+
// Scroll the button inside the cell — it has concrete dimensions,
|
|
15118
|
+
// which avoids quirks when the cell host has display: inline / contents
|
|
15119
|
+
// / flex-without-explicit-size.
|
|
15120
|
+
const target = activeCell._cachedButton ||
|
|
15121
|
+
activeCell.shadowRoot?.querySelector('button.day') ||
|
|
15122
|
+
activeCell;
|
|
15123
|
+
|
|
15124
|
+
// parentNode follows the authored DOM tree and steps over shadow roots
|
|
15125
|
+
// via slot projection. A slotted element's visual parent is its
|
|
15126
|
+
// assignedSlot's parent (inside the host's shadow tree), not the host
|
|
15127
|
+
// itself. Without this hop, the walk skips right past #bodyContainer
|
|
15128
|
+
// and <dialog> and finds no scrollable ancestor at all.
|
|
15129
|
+
const flatParent = (current) => {
|
|
15130
|
+
if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
|
|
15131
|
+
return current.host || null;
|
|
15132
|
+
}
|
|
15133
|
+
if (current.assignedSlot) {
|
|
15134
|
+
return current.assignedSlot.parentNode;
|
|
15135
|
+
}
|
|
15136
|
+
return current.parentNode;
|
|
15137
|
+
};
|
|
14785
15138
|
|
|
14786
|
-
|
|
14787
|
-
|
|
14788
|
-
|
|
14789
|
-
|
|
15139
|
+
let node = flatParent(target);
|
|
15140
|
+
while (node && node !== document && node !== window) {
|
|
15141
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
15142
|
+
const { overflowY } = window.getComputedStyle(node);
|
|
15143
|
+
if (overflowY === 'auto' || overflowY === 'scroll') {
|
|
15144
|
+
const targetRect = target.getBoundingClientRect();
|
|
15145
|
+
const scrollerRect = node.getBoundingClientRect();
|
|
15146
|
+
let delta = 0;
|
|
15147
|
+
if (targetRect.top < scrollerRect.top) {
|
|
15148
|
+
delta = targetRect.top - scrollerRect.top;
|
|
15149
|
+
} else if (targetRect.bottom > scrollerRect.bottom) {
|
|
15150
|
+
delta = targetRect.bottom - scrollerRect.bottom;
|
|
15151
|
+
}
|
|
15152
|
+
if (delta !== 0) {
|
|
15153
|
+
node.scrollBy({
|
|
15154
|
+
top: delta,
|
|
15155
|
+
behavior: 'auto'
|
|
15156
|
+
});
|
|
15157
|
+
}
|
|
15158
|
+
}
|
|
15159
|
+
}
|
|
15160
|
+
node = flatParent(node);
|
|
14790
15161
|
}
|
|
14791
15162
|
}
|
|
14792
15163
|
|
|
@@ -14877,9 +15248,34 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14877
15248
|
// the last one.
|
|
14878
15249
|
if (this._announceRafId) {
|
|
14879
15250
|
cancelAnimationFrame(this._announceRafId);
|
|
15251
|
+
this._announceRafId = null;
|
|
14880
15252
|
}
|
|
15253
|
+
this._deliverAnnouncement(dateStr, 0);
|
|
15254
|
+
}
|
|
15255
|
+
|
|
15256
|
+
/**
|
|
15257
|
+
* Writes `dateStr` to the live region. If the dropdown's dialog hasn't
|
|
15258
|
+
* mounted yet (so getOrCreateLiveRegion can't attach), retries on the
|
|
15259
|
+
* next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
|
|
15260
|
+
* dropping the announcement. The retry uses the same `_announceRafId`
|
|
15261
|
+
* the double-rAF below uses, so a newer announceSelection call (or
|
|
15262
|
+
* disconnectedCallback) cancels any in-flight retry.
|
|
15263
|
+
* @private
|
|
15264
|
+
* @param {String} dateStr - The localized date string to announce.
|
|
15265
|
+
* @param {Number} attempts - Number of prior retry attempts.
|
|
15266
|
+
* @returns {void}
|
|
15267
|
+
*/
|
|
15268
|
+
_deliverAnnouncement(dateStr, attempts) {
|
|
14881
15269
|
const liveRegion = this.getOrCreateLiveRegion();
|
|
14882
15270
|
if (!liveRegion) {
|
|
15271
|
+
const MAX_LIVE_REGION_RETRIES = 10;
|
|
15272
|
+
if (attempts < MAX_LIVE_REGION_RETRIES) {
|
|
15273
|
+
this._announceRafId = requestAnimationFrame(() => {
|
|
15274
|
+
this._deliverAnnouncement(dateStr, attempts + 1);
|
|
15275
|
+
});
|
|
15276
|
+
} else {
|
|
15277
|
+
this._announceRafId = null;
|
|
15278
|
+
}
|
|
14883
15279
|
return;
|
|
14884
15280
|
}
|
|
14885
15281
|
|
|
@@ -15052,7 +15448,7 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
15052
15448
|
</div>
|
|
15053
15449
|
</div>
|
|
15054
15450
|
|
|
15055
|
-
<div class="calendarWrapper
|
|
15451
|
+
<div class="calendarWrapper">
|
|
15056
15452
|
<div class="calendarNavButtons">
|
|
15057
15453
|
${this.showPrevMonthBtn ? u$a`
|
|
15058
15454
|
<button tabIndex="0" class="calendarNavBtn prevMonth" aria-label="${this.datepicker?.navLabelPrevMonth || 'Previous month'}" @click="${this.handlePrevMonth}">
|
|
@@ -15065,7 +15461,7 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
15065
15461
|
</button>
|
|
15066
15462
|
` : undefined}
|
|
15067
15463
|
</div>
|
|
15068
|
-
<div id="calendarGrid" class="calendars" role="group" tabindex="0" aria-label="${this.datepicker?.calendarGridLabel}" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}" @calendar-month-mouseleave="${this.clearRangePreview}">
|
|
15464
|
+
<div id="calendarGrid" class="calendars" role="group" aria-roledescription="calendar" tabindex="0" aria-label="${this.datepicker?.calendarGridLabel}" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}" @calendar-month-mouseleave="${this.clearRangePreview}">
|
|
15069
15465
|
${this.renderAllCalendars()}
|
|
15070
15466
|
</div>
|
|
15071
15467
|
</div>
|
|
@@ -18974,7 +19370,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
|
|
|
18974
19370
|
}
|
|
18975
19371
|
};
|
|
18976
19372
|
|
|
18977
|
-
var formkitVersion$1 = '
|
|
19373
|
+
var formkitVersion$1 = '202607010100';
|
|
18978
19374
|
|
|
18979
19375
|
let AuroElement$2 = class AuroElement extends i$1 {
|
|
18980
19376
|
static get properties() {
|
|
@@ -19925,6 +20321,14 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
19925
20321
|
};
|
|
19926
20322
|
this.addEventListener('keydown', this._bibTabHandler);
|
|
19927
20323
|
|
|
20324
|
+
// Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
|
|
20325
|
+
// desktopModal trap owns focus management. Without this, the very
|
|
20326
|
+
// first focus move into the bib (from the RAF below) triggers
|
|
20327
|
+
// handleFocusLoss → hideBib, tearing down the trap before the
|
|
20328
|
+
// user can press Tab.
|
|
20329
|
+
this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
|
|
20330
|
+
this.noHideOnThisFocusLoss = true;
|
|
20331
|
+
|
|
19928
20332
|
// Move initial focus into the bib content, matching FocusTrap behavior
|
|
19929
20333
|
requestAnimationFrame(() => {
|
|
19930
20334
|
const focusables = getFocusableElements(this.bibContent);
|
|
@@ -20238,6 +20642,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
20238
20642
|
role="${o$2(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
20239
20643
|
aria-expanded="${o$2(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
20240
20644
|
aria-controls="${o$2(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
20645
|
+
aria-haspopup="${o$2(this.a11yRole === 'combobox' && !this.triggerContentFocusable ? 'listbox' : undefined)}"
|
|
20241
20646
|
aria-labelledby="${o$2(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
20242
20647
|
aria-disabled="${o$2(this.disabled ? 'true' : undefined)}"
|
|
20243
20648
|
@focusin="${this.handleFocusin}"
|
|
@@ -24747,15 +25152,17 @@ class AuroFormValidation {
|
|
|
24747
25152
|
);
|
|
24748
25153
|
}
|
|
24749
25154
|
|
|
24750
|
-
|
|
24751
|
-
|
|
24752
|
-
|
|
25155
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
25156
|
+
|
|
25157
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
25158
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
25159
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
25160
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
25161
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
24753
25162
|
hasValue = false;
|
|
24754
25163
|
}
|
|
24755
25164
|
}
|
|
24756
25165
|
|
|
24757
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
24758
|
-
|
|
24759
25166
|
if (isCombobox) {
|
|
24760
25167
|
|
|
24761
25168
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -30691,10 +31098,18 @@ class AuroInputUtilities {
|
|
|
30691
31098
|
* @returns {string | undefined}
|
|
30692
31099
|
*/
|
|
30693
31100
|
toFormattedValue(valueObject, format) {
|
|
31101
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
31102
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
31103
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
31104
|
+
// as "no format → no display value".
|
|
31105
|
+
if (!format) {
|
|
31106
|
+
return undefined;
|
|
31107
|
+
}
|
|
30694
31108
|
const normalizedFormat = format.toLowerCase();
|
|
30695
31109
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
30696
31110
|
|
|
30697
31111
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
31112
|
+
console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
|
|
30698
31113
|
return undefined;
|
|
30699
31114
|
}
|
|
30700
31115
|
|
|
@@ -30841,79 +31256,19 @@ class BaseInput extends AuroElement$1 {
|
|
|
30841
31256
|
constructor() {
|
|
30842
31257
|
super();
|
|
30843
31258
|
|
|
30844
|
-
|
|
30845
|
-
|
|
30846
|
-
|
|
30847
|
-
|
|
30848
|
-
|
|
30849
|
-
|
|
30850
|
-
|
|
30851
|
-
|
|
30852
|
-
|
|
30853
|
-
|
|
30854
|
-
this.required = false;
|
|
30855
|
-
this.onDark = false;
|
|
30856
|
-
this.setCustomValidityForType = undefined;
|
|
30857
|
-
this.size = 'lg';
|
|
30858
|
-
this.shape = 'classic';
|
|
30859
|
-
this.value = undefined;
|
|
30860
|
-
this._valueObject = undefined;
|
|
30861
|
-
|
|
30862
|
-
this._initializePrivateDefaults();
|
|
30863
|
-
}
|
|
30864
|
-
|
|
30865
|
-
/**
|
|
30866
|
-
* Internal Defaults.
|
|
30867
|
-
* @private
|
|
30868
|
-
* @returns {void}
|
|
30869
|
-
*/
|
|
30870
|
-
_initializePrivateDefaults() {
|
|
31259
|
+
// Single-source initialization. Alphabetized so duplicate or stale
|
|
31260
|
+
// defaults are immediately obvious on a diff. Every field is assigned
|
|
31261
|
+
// exactly once here (previously the constructor + the old
|
|
31262
|
+
// `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
|
|
31263
|
+
// fields and double-allocated `util` and `validation`, discarding the
|
|
31264
|
+
// first instance). `validation` is now allocated exactly once; `util`
|
|
31265
|
+
// is seeded here with an en-US default and then rebuilt in
|
|
31266
|
+
// `connectedCallback` once the consumer-resolved locale is available,
|
|
31267
|
+
// so a parent (datepicker/combobox) calling `validate()` synchronously
|
|
31268
|
+
// during its own update cycle sees a populated util instance.
|
|
30871
31269
|
this.activeLabel = false;
|
|
30872
|
-
this.appearance = "default";
|
|
30873
|
-
this.icon = false;
|
|
30874
|
-
this.disabled = false;
|
|
30875
|
-
this.dvInputOnly = false;
|
|
30876
|
-
this.hideLabelVisually = false;
|
|
30877
|
-
this.max = undefined;
|
|
30878
|
-
this.maxLength = undefined;
|
|
30879
|
-
this.min = undefined;
|
|
30880
|
-
this.minLength = undefined;
|
|
30881
|
-
this.noValidate = false;
|
|
30882
|
-
this.onDark = false;
|
|
30883
|
-
this.required = false;
|
|
30884
|
-
this.setCustomValidityForType = undefined;
|
|
30885
|
-
|
|
30886
|
-
// Used for storing raw values returned from input mask.
|
|
30887
|
-
this._rawMaskValue = undefined;
|
|
30888
|
-
|
|
30889
|
-
/**
|
|
30890
|
-
* @private
|
|
30891
|
-
*/
|
|
30892
|
-
this.layout = 'classic';
|
|
30893
|
-
|
|
30894
|
-
/**
|
|
30895
|
-
* @private
|
|
30896
|
-
*/
|
|
30897
|
-
this.shape = 'classic';
|
|
30898
|
-
|
|
30899
|
-
/**
|
|
30900
|
-
* @private
|
|
30901
|
-
*/
|
|
30902
|
-
this.size = 'lg';
|
|
30903
|
-
|
|
30904
|
-
this.touched = false;
|
|
30905
|
-
this.util = new AuroInputUtilities({
|
|
30906
|
-
locale: "en-US",
|
|
30907
|
-
format: this.format
|
|
30908
|
-
});
|
|
30909
|
-
this.validation = new AuroFormValidation();
|
|
30910
|
-
this.inputIconName = undefined;
|
|
30911
|
-
this.showPassword = false;
|
|
30912
|
-
this.validationCCLength = undefined;
|
|
30913
|
-
this.hasValue = false;
|
|
30914
|
-
this.label = 'Input label is undefined';
|
|
30915
|
-
|
|
30916
31270
|
|
|
31271
|
+
/** @private */
|
|
30917
31272
|
this.allowedInputTypes = [
|
|
30918
31273
|
"text",
|
|
30919
31274
|
"number",
|
|
@@ -30922,7 +31277,9 @@ class BaseInput extends AuroElement$1 {
|
|
|
30922
31277
|
"credit-card",
|
|
30923
31278
|
"tel"
|
|
30924
31279
|
];
|
|
30925
|
-
this.
|
|
31280
|
+
this.appearance = "default";
|
|
31281
|
+
|
|
31282
|
+
/** @private */
|
|
30926
31283
|
this.dateFormatMap = {
|
|
30927
31284
|
'mm/dd/yyyy': 'dateMMDDYYYY',
|
|
30928
31285
|
'dd/mm/yyyy': 'dateDDMMYYYY',
|
|
@@ -30939,27 +31296,62 @@ class BaseInput extends AuroElement$1 {
|
|
|
30939
31296
|
'dd/mm': 'dateDDMM',
|
|
30940
31297
|
'mm/dd': 'dateMMDD'
|
|
30941
31298
|
};
|
|
31299
|
+
this.disabled = false;
|
|
31300
|
+
|
|
31301
|
+
/** @private */
|
|
30942
31302
|
this.domHandler = new DomHandler();
|
|
30943
31303
|
this.dvInputOnly = false;
|
|
30944
31304
|
this.hasValue = false;
|
|
31305
|
+
this.hideLabelVisually = false;
|
|
31306
|
+
this.icon = false;
|
|
31307
|
+
|
|
31308
|
+
/** @private */
|
|
30945
31309
|
this.inputIconName = undefined;
|
|
31310
|
+
|
|
31311
|
+
/** @private */
|
|
30946
31312
|
this.label = 'Input label is undefined';
|
|
31313
|
+
this.layout = 'classic';
|
|
31314
|
+
this.locale = 'en-US';
|
|
31315
|
+
this.max = undefined;
|
|
31316
|
+
this.maxLength = undefined;
|
|
31317
|
+
this.min = undefined;
|
|
31318
|
+
this.minLength = undefined;
|
|
30947
31319
|
this.noValidate = false;
|
|
30948
|
-
this.
|
|
31320
|
+
this.onDark = false;
|
|
31321
|
+
// Raw values returned from the input mask before model normalization.
|
|
31322
|
+
this._rawMaskValue = undefined;
|
|
31323
|
+
this.required = false;
|
|
31324
|
+
this.setCustomValidityForType = undefined;
|
|
31325
|
+
// Credit Card is intentionally excluded — its mask manages the cursor
|
|
31326
|
+
// itself, and listing it here caused cursor placement issues in Safari.
|
|
31327
|
+
/** @private */
|
|
30949
31328
|
this.setSelectionInputTypes = [
|
|
30950
31329
|
"text",
|
|
30951
31330
|
"password",
|
|
30952
31331
|
"email"
|
|
30953
|
-
];
|
|
31332
|
+
];
|
|
31333
|
+
this.shape = 'classic';
|
|
31334
|
+
|
|
31335
|
+
/** @private */
|
|
30954
31336
|
this.showPassword = false;
|
|
31337
|
+
this.size = 'lg';
|
|
30955
31338
|
this.touched = false;
|
|
31339
|
+
|
|
31340
|
+
/** @private */
|
|
30956
31341
|
this.uniqueId = new UniqueId().create();
|
|
31342
|
+
|
|
31343
|
+
/** @private */
|
|
30957
31344
|
this.util = new AuroInputUtilities({
|
|
30958
31345
|
locale: this.locale,
|
|
30959
31346
|
format: this.format
|
|
30960
31347
|
});
|
|
31348
|
+
|
|
31349
|
+
/** @private */
|
|
30961
31350
|
this.validation = new AuroFormValidation();
|
|
31351
|
+
|
|
31352
|
+
/** @private */
|
|
30962
31353
|
this.validationCCLength = undefined;
|
|
31354
|
+
this.value = undefined;
|
|
30963
31355
|
}
|
|
30964
31356
|
|
|
30965
31357
|
// function to define props used within the scope of this component
|
|
@@ -31397,7 +31789,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31397
31789
|
* @returns {Date|undefined}
|
|
31398
31790
|
*/
|
|
31399
31791
|
get valueObject() {
|
|
31400
|
-
return this.
|
|
31792
|
+
return this.value && dateFormatter.isValidDate(this.value) ? dateFormatter.stringToDateInstance(this.value) : undefined;
|
|
31401
31793
|
}
|
|
31402
31794
|
|
|
31403
31795
|
/**
|
|
@@ -31405,7 +31797,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31405
31797
|
* @returns {Date|undefined}
|
|
31406
31798
|
*/
|
|
31407
31799
|
get minObject() {
|
|
31408
|
-
return this.
|
|
31800
|
+
return this.min && dateFormatter.isValidDate(this.min) ? dateFormatter.stringToDateInstance(this.min) : undefined;
|
|
31409
31801
|
}
|
|
31410
31802
|
|
|
31411
31803
|
/**
|
|
@@ -31413,50 +31805,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31413
31805
|
* @returns {Date|undefined}
|
|
31414
31806
|
*/
|
|
31415
31807
|
get maxObject() {
|
|
31416
|
-
return this.
|
|
31417
|
-
}
|
|
31418
|
-
|
|
31419
|
-
/**
|
|
31420
|
-
* Parses a date string into a Date object when the corresponding `_*Object`
|
|
31421
|
-
* field hasn't been synced yet by `updated()`. Returns undefined when the
|
|
31422
|
-
* input type/format isn't a full date or the string is not a valid date.
|
|
31423
|
-
*
|
|
31424
|
-
* Why this exists: a parent (datepicker) can call `inputN.validate()` from
|
|
31425
|
-
* inside its own `updated()` before this input's `updated()` has run
|
|
31426
|
-
* `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
|
|
31427
|
-
* and range checks would otherwise silently no-op (flipping the result to
|
|
31428
|
-
* `valid` or `patternMismatch`).
|
|
31429
|
-
* @private
|
|
31430
|
-
* @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
|
|
31431
|
-
* @returns {Date|undefined}
|
|
31432
|
-
*/
|
|
31433
|
-
_computeDateObjectFallback(dateStr) {
|
|
31434
|
-
if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
|
|
31435
|
-
return undefined;
|
|
31436
|
-
}
|
|
31437
|
-
if (!dateFormatter.isValidDate(dateStr)) {
|
|
31438
|
-
return undefined;
|
|
31439
|
-
}
|
|
31440
|
-
return dateFormatter.stringToDateInstance(dateStr);
|
|
31441
|
-
}
|
|
31442
|
-
|
|
31443
|
-
/**
|
|
31444
|
-
* Internal setter for readonly date object properties.
|
|
31445
|
-
* @private
|
|
31446
|
-
* @param {'valueObject'|'minObject'|'maxObject'} propertyName - Public object property name.
|
|
31447
|
-
* @param {Date|undefined} propertyValue - Value to assign.
|
|
31448
|
-
* @returns {void}
|
|
31449
|
-
*/
|
|
31450
|
-
setDateObjectProperty(propertyName, propertyValue) {
|
|
31451
|
-
const internalPropertyName = `_${propertyName}`;
|
|
31452
|
-
const previousValue = this[internalPropertyName];
|
|
31453
|
-
|
|
31454
|
-
if (previousValue === propertyValue) {
|
|
31455
|
-
return;
|
|
31456
|
-
}
|
|
31457
|
-
|
|
31458
|
-
this[internalPropertyName] = propertyValue;
|
|
31459
|
-
this.requestUpdate(propertyName, previousValue);
|
|
31808
|
+
return this.max && dateFormatter.isValidDate(this.max) ? dateFormatter.stringToDateInstance(this.max) : undefined;
|
|
31460
31809
|
}
|
|
31461
31810
|
|
|
31462
31811
|
connectedCallback() {
|
|
@@ -31485,7 +31834,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31485
31834
|
format: this.format
|
|
31486
31835
|
});
|
|
31487
31836
|
this.configureDataForType();
|
|
31488
|
-
this.syncDateValues();
|
|
31489
31837
|
}
|
|
31490
31838
|
|
|
31491
31839
|
disconnectedCallback() {
|
|
@@ -31505,12 +31853,17 @@ class BaseInput extends AuroElement$1 {
|
|
|
31505
31853
|
this.wrapperElement.addEventListener('click', this.handleClick);
|
|
31506
31854
|
}
|
|
31507
31855
|
|
|
31508
|
-
// add attribute for query selectors when auro-input is registered under a custom name
|
|
31509
|
-
if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
|
|
31510
|
-
this.setAttribute('auro-input', '');
|
|
31511
|
-
}
|
|
31512
31856
|
this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
|
|
31513
31857
|
|
|
31858
|
+
// Normalize the format token to lowercase so case-mixed values supplied
|
|
31859
|
+
// via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
|
|
31860
|
+
// lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
|
|
31861
|
+
// format silently misses the map and leaves `setCustomValidityForType`
|
|
31862
|
+
// unset.
|
|
31863
|
+
if (this.format) {
|
|
31864
|
+
this.format = this.format.toLowerCase();
|
|
31865
|
+
}
|
|
31866
|
+
|
|
31514
31867
|
// use validity message override if declared when initializing the component
|
|
31515
31868
|
if (this.hasAttribute('setCustomValidity')) {
|
|
31516
31869
|
this.ValidityMessageOverride = this.setCustomValidity;
|
|
@@ -31519,7 +31872,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31519
31872
|
this.setCustomHelpTextMessage();
|
|
31520
31873
|
this.configureAutoFormatting();
|
|
31521
31874
|
this.configureDataForType();
|
|
31522
|
-
this.syncDateValues();
|
|
31523
31875
|
}
|
|
31524
31876
|
|
|
31525
31877
|
/**
|
|
@@ -31595,6 +31947,13 @@ class BaseInput extends AuroElement$1 {
|
|
|
31595
31947
|
|
|
31596
31948
|
if (typeToI18n.includes(this.type)) {
|
|
31597
31949
|
this.setCustomValidityForType = i18n$1(this.lang, this.type);
|
|
31950
|
+
// COVERAGE: this `else if` branch is unreachable in WTR. connectedCallback
|
|
31951
|
+
// (L682) calls configureDataForType, which at L1266-1268 assigns
|
|
31952
|
+
// `this.format = this.util.getDateMaskFromLocale().toLowerCase()` for any
|
|
31953
|
+
// type=date input whose `format` attribute is unset. That runs before
|
|
31954
|
+
// firstUpdated invokes setCustomHelpTextMessage, so `!this.format` is
|
|
31955
|
+
// always false here. Retained as a defensive fallback; the whole function
|
|
31956
|
+
// is @deprecated per AB#1557296 and slated for removal.
|
|
31598
31957
|
} else if (!this.format && this.type === 'date') {
|
|
31599
31958
|
this.setCustomValidityForType = i18n$1(this.lang, 'dateMMDDYYYY');
|
|
31600
31959
|
} else if (this.dateFormatMap[this.format]) {
|
|
@@ -31656,8 +32015,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31656
32015
|
this.configureDataForType();
|
|
31657
32016
|
}
|
|
31658
32017
|
|
|
31659
|
-
this.syncDateValues(changedProperties);
|
|
31660
|
-
|
|
31661
32018
|
if (changedProperties.has('value')) {
|
|
31662
32019
|
if (this.value && this.value.length > 0) {
|
|
31663
32020
|
this.hasValue = true;
|
|
@@ -31679,14 +32036,14 @@ class BaseInput extends AuroElement$1 {
|
|
|
31679
32036
|
|
|
31680
32037
|
if (formattedValue !== this.inputElement.value) {
|
|
31681
32038
|
this.skipNextProgrammaticInputEvent = true;
|
|
31682
|
-
if (this.maskInstance && this.type
|
|
32039
|
+
if (this.maskInstance && this.type !== 'date') {
|
|
31683
32040
|
// Route through the mask so its _value and el.value stay in lock-step
|
|
31684
32041
|
// (set value calls updateControl which writes el.value = displayValue).
|
|
31685
32042
|
// Writing el.value directly leaves the mask thinking displayValue is
|
|
31686
|
-
// stale; _saveSelection on the next focus/click then warns.
|
|
31687
|
-
//
|
|
31688
|
-
//
|
|
31689
|
-
//
|
|
32043
|
+
// stale; _saveSelection on the next focus/click then warns. Date is
|
|
32044
|
+
// excluded because its formattedValue can be raw ISO when the calendar
|
|
32045
|
+
// is invalid, and re-masking through mm/dd/yyyy would truncate it and
|
|
32046
|
+
// flip validity from patternMismatch to tooShort.
|
|
31690
32047
|
this.maskInstance.value = formattedValue || '';
|
|
31691
32048
|
} else if (formattedValue) {
|
|
31692
32049
|
this.inputElement.value = formattedValue;
|
|
@@ -31728,120 +32085,65 @@ class BaseInput extends AuroElement$1 {
|
|
|
31728
32085
|
}));
|
|
31729
32086
|
}
|
|
31730
32087
|
|
|
31731
|
-
|
|
31732
|
-
/**
|
|
31733
|
-
* Synchronizes the ISO string values and Date object representations for date-related properties.
|
|
31734
|
-
* This keeps the model and display values aligned when either side changes.
|
|
31735
|
-
*
|
|
31736
|
-
* When a full date format is in use, this method updates `value`, `min`, and `max` from their corresponding
|
|
31737
|
-
* Date objects or vice versa, based on which properties have changed. It only runs when the current configuration
|
|
31738
|
-
* represents a full year/month/day date format.
|
|
31739
|
-
*
|
|
31740
|
-
* @param {Map<string, unknown>|undefined} [changedProperties=undefined] - Optional map of changed properties used to limit which values are synchronized.
|
|
31741
|
-
* @returns {void}
|
|
31742
|
-
* @private
|
|
31743
|
-
*/
|
|
31744
|
-
syncDateValues(changedProperties = undefined) {
|
|
31745
|
-
if (!this.util.isFullDateFormat(this.type, this.format)) {
|
|
31746
|
-
return;
|
|
31747
|
-
}
|
|
31748
|
-
|
|
31749
|
-
this.syncSingleDateValue(changedProperties, 'valueObject', 'value');
|
|
31750
|
-
this.syncSingleDateValue(changedProperties, 'minObject', 'min');
|
|
31751
|
-
this.syncSingleDateValue(changedProperties, 'maxObject', 'max');
|
|
31752
|
-
}
|
|
31753
|
-
|
|
31754
|
-
/**
|
|
31755
|
-
* Synchronizes one date object/string property pair.
|
|
31756
|
-
* @private
|
|
31757
|
-
* @param {Map<string, unknown>|undefined} changedProperties - Map of changed properties from Lit.
|
|
31758
|
-
* @param {string} objectProperty - Date object property name.
|
|
31759
|
-
* @param {string} valueProperty - ISO string property name.
|
|
31760
|
-
* @returns {void}
|
|
31761
|
-
*/
|
|
31762
|
-
syncSingleDateValue(changedProperties, objectProperty, valueProperty) {
|
|
31763
|
-
const objectPropertyChanged = !changedProperties || changedProperties.has(objectProperty);
|
|
31764
|
-
|
|
31765
|
-
// objectProperty wins over valueProperty when both changed
|
|
31766
|
-
if (objectPropertyChanged && this[objectProperty]) {
|
|
31767
|
-
this[valueProperty] = dateFormatter.toISOFormatString(this[objectProperty]);
|
|
31768
|
-
return;
|
|
31769
|
-
}
|
|
31770
|
-
|
|
31771
|
-
const valuePropertyChanged = !changedProperties || changedProperties.has(valueProperty);
|
|
31772
|
-
if (!valuePropertyChanged) {
|
|
31773
|
-
return;
|
|
31774
|
-
}
|
|
31775
|
-
|
|
31776
|
-
// when value is newly set to the same ISO string that corresponds to the existing Date object, do not clear the Date object (avoid unnecessary updates)
|
|
31777
|
-
if (
|
|
31778
|
-
changedProperties &&
|
|
31779
|
-
valueProperty === 'value' &&
|
|
31780
|
-
changedProperties.get('value') === undefined &&
|
|
31781
|
-
this[objectProperty] instanceof Date &&
|
|
31782
|
-
this[valueProperty] === dateFormatter.toISOFormatString(this[objectProperty])
|
|
31783
|
-
) {
|
|
31784
|
-
return;
|
|
31785
|
-
}
|
|
31786
|
-
|
|
31787
|
-
if (dateFormatter.isValidDate(this[valueProperty])) {
|
|
31788
|
-
this.setDateObjectProperty(objectProperty, dateFormatter.stringToDateInstance(this[valueProperty]));
|
|
31789
|
-
} else {
|
|
31790
|
-
this.setDateObjectProperty(objectProperty, undefined);
|
|
31791
|
-
}
|
|
31792
|
-
}
|
|
31793
|
-
|
|
31794
32088
|
/**
|
|
31795
32089
|
* Sets up IMasks and logic based on auto-formatting requirements.
|
|
31796
32090
|
* @private
|
|
31797
32091
|
* @returns {void}
|
|
31798
32092
|
*/
|
|
31799
32093
|
configureAutoFormatting() {
|
|
31800
|
-
//
|
|
31801
|
-
//
|
|
31802
|
-
//
|
|
31803
|
-
//
|
|
32094
|
+
// _configuringMask gates two things: external re-entry into this method
|
|
32095
|
+
// while setup is mid-flight (from property changes that call back here),
|
|
32096
|
+
// and the accept/complete listeners below — both need to ignore the mask
|
|
32097
|
+
// events fired by our own value-restore step.
|
|
31804
32098
|
if (this._configuringMask) return;
|
|
31805
32099
|
this._configuringMask = true;
|
|
31806
32100
|
try {
|
|
32101
|
+
// Destroy any prior mask so IMask can attach fresh under the new format.
|
|
32102
|
+
// Null the reference too — if the new maskOptions.mask is falsy (e.g.
|
|
32103
|
+
// type switched from credit-card to text) the IMask() reassignment
|
|
32104
|
+
// below is skipped, and downstream writes at line ~823 would otherwise
|
|
32105
|
+
// route through the destroyed instance.
|
|
31807
32106
|
if (this.maskInstance) {
|
|
31808
32107
|
this.maskInstance.destroy();
|
|
32108
|
+
this.maskInstance = null;
|
|
31809
32109
|
}
|
|
31810
32110
|
|
|
31811
|
-
// Pass new format to util
|
|
31812
32111
|
this.util.updateFormat(this.format);
|
|
31813
32112
|
|
|
31814
32113
|
const maskOptions = this.util.getMaskOptions(this.type, this.format);
|
|
31815
32114
|
|
|
31816
32115
|
if (this.inputElement && maskOptions.mask) {
|
|
31817
|
-
|
|
31818
|
-
//
|
|
31819
|
-
//
|
|
31820
|
-
//
|
|
31821
|
-
// When the format changes (e.g. locale switch) and we have a valid ISO
|
|
31822
|
-
// model value, compute the display string for the NEW format instead of
|
|
31823
|
-
// re-using the old display string, which may be invalid in the new mask.
|
|
32116
|
+
// Capture the current display so it can be re-applied after IMask
|
|
32117
|
+
// attaches. The restore at the bottom goes through maskInstance.value
|
|
32118
|
+
// (not inputElement.value directly) so the mask's internal state and
|
|
32119
|
+
// the input's displayed text stay in lock-step.
|
|
31824
32120
|
let existingValue = this.inputElement.value;
|
|
32121
|
+
|
|
32122
|
+
// Format-change case (e.g. locale switch): existingValue is the OLD
|
|
32123
|
+
// mask's display string and may not parse under the new mask. When
|
|
32124
|
+
// we have a valid date model, rebuild the display from valueObject
|
|
32125
|
+
// (the canonical source) using the new mask's format function.
|
|
31825
32126
|
if (
|
|
31826
32127
|
this.util.isFullDateFormat(this.type, this.format) &&
|
|
31827
32128
|
this.value &&
|
|
31828
|
-
|
|
31829
|
-
this.valueObject instanceof Date &&
|
|
31830
|
-
!Number.isNaN(this.valueObject.getTime()) &&
|
|
32129
|
+
this.valueObject &&
|
|
31831
32130
|
typeof maskOptions.format === 'function'
|
|
31832
32131
|
) {
|
|
31833
32132
|
existingValue = maskOptions.format(this.valueObject);
|
|
31834
32133
|
}
|
|
31835
32134
|
|
|
32135
|
+
// Clear before IMask attaches so the constructor seeds an empty
|
|
32136
|
+
// internal value. Otherwise IMask reads the stale unmasked string
|
|
32137
|
+
// and emits a spurious 'accept' before the restore below runs.
|
|
31836
32138
|
this.skipNextProgrammaticInputEvent = true;
|
|
31837
32139
|
this.inputElement.value = '';
|
|
31838
32140
|
|
|
31839
32141
|
this.maskInstance = IMask(this.inputElement, maskOptions);
|
|
31840
32142
|
|
|
32143
|
+
// Mask fires 'accept' on every value change, including the restore
|
|
32144
|
+
// step below. Skip events fired during configureAutoFormatting so
|
|
32145
|
+
// we don't overwrite a value the parent just pushed.
|
|
31841
32146
|
this.maskInstance.on('accept', () => {
|
|
31842
|
-
// Suppress propagation during configureAutoFormatting's own value-restoration
|
|
31843
|
-
// (line below) — the mask emits 'accept' on every value-set, including ours,
|
|
31844
|
-
// and we don't want to overwrite a value the parent just pushed.
|
|
31845
32147
|
if (this._configuringMask) return;
|
|
31846
32148
|
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
31847
32149
|
if (this.type === "date") {
|
|
@@ -31849,6 +32151,8 @@ class BaseInput extends AuroElement$1 {
|
|
|
31849
32151
|
}
|
|
31850
32152
|
});
|
|
31851
32153
|
|
|
32154
|
+
// Mask fires 'complete' on the restore step below for any value that
|
|
32155
|
+
// happens to be a complete match. Same setup-suppression as 'accept'.
|
|
31852
32156
|
this.maskInstance.on('complete', () => {
|
|
31853
32157
|
if (this._configuringMask) return;
|
|
31854
32158
|
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
@@ -31857,7 +32161,9 @@ class BaseInput extends AuroElement$1 {
|
|
|
31857
32161
|
}
|
|
31858
32162
|
});
|
|
31859
32163
|
|
|
31860
|
-
//
|
|
32164
|
+
// Write existingValue through the mask (not the input directly) so
|
|
32165
|
+
// the mask reformats it under the new rules and keeps its internal
|
|
32166
|
+
// _value aligned with the input's displayed text.
|
|
31861
32167
|
if (existingValue) {
|
|
31862
32168
|
this.maskInstance.value = existingValue;
|
|
31863
32169
|
}
|
|
@@ -31937,6 +32243,38 @@ class BaseInput extends AuroElement$1 {
|
|
|
31937
32243
|
this.touched = true;
|
|
31938
32244
|
this.validation.validate(this);
|
|
31939
32245
|
}
|
|
32246
|
+
|
|
32247
|
+
// Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
|
|
32248
|
+
// update that can re-render the input and reset the native cursor; we
|
|
32249
|
+
// capture the caret position before that update commits and restore it
|
|
32250
|
+
// via `setSelectionRange` once the update has flushed. Gated on
|
|
32251
|
+
// `setSelectionInputTypes` so credit-card (and other masked types whose
|
|
32252
|
+
// formatter manages the cursor itself) doesn't get a competing write.
|
|
32253
|
+
// Capture the caret position INSIDE the gate — reading `selectionStart`
|
|
32254
|
+
// on input types that don't support text selection (number, email in
|
|
32255
|
+
// some browsers) throws InvalidStateError, which would crash all input
|
|
32256
|
+
// handling. Wrap the read in try/catch belt-and-suspenders even though
|
|
32257
|
+
// the gated types currently support it, since the list is a public
|
|
32258
|
+
// property a consumer could mutate.
|
|
32259
|
+
if (this.setSelectionInputTypes.includes(this.type)) {
|
|
32260
|
+
let selectionStart = null;
|
|
32261
|
+
try {
|
|
32262
|
+
({ selectionStart } = this.inputElement);
|
|
32263
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
32264
|
+
return;
|
|
32265
|
+
}
|
|
32266
|
+
if (typeof selectionStart !== 'number') {
|
|
32267
|
+
return;
|
|
32268
|
+
}
|
|
32269
|
+
this.updateComplete.then(() => {
|
|
32270
|
+
try {
|
|
32271
|
+
this.inputElement.setSelectionRange(selectionStart, selectionStart);
|
|
32272
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
32273
|
+
// Some input types (number/email in certain UAs) throw on
|
|
32274
|
+
// setSelectionRange; swallow and let the native cursor stand.
|
|
32275
|
+
}
|
|
32276
|
+
});
|
|
32277
|
+
}
|
|
31940
32278
|
}
|
|
31941
32279
|
|
|
31942
32280
|
/**
|
|
@@ -32025,7 +32363,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
32025
32363
|
*/
|
|
32026
32364
|
reset() {
|
|
32027
32365
|
this.value = undefined;
|
|
32028
|
-
this.setDateObjectProperty('valueObject', undefined);
|
|
32029
32366
|
this.validation.reset(this);
|
|
32030
32367
|
}
|
|
32031
32368
|
|
|
@@ -32034,7 +32371,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
32034
32371
|
*/
|
|
32035
32372
|
clear() {
|
|
32036
32373
|
this.value = undefined;
|
|
32037
|
-
this.setDateObjectProperty('valueObject', undefined);
|
|
32038
32374
|
}
|
|
32039
32375
|
|
|
32040
32376
|
/**
|
|
@@ -32072,7 +32408,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
32072
32408
|
*/
|
|
32073
32409
|
get placeholderStr() {
|
|
32074
32410
|
if (!this.placeholder && this.type === 'date') {
|
|
32075
|
-
return this.format
|
|
32411
|
+
return this.format.toUpperCase();
|
|
32076
32412
|
}
|
|
32077
32413
|
return this.placeholder || "";
|
|
32078
32414
|
}
|
|
@@ -32563,7 +32899,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
|
|
|
32563
32899
|
}
|
|
32564
32900
|
};
|
|
32565
32901
|
|
|
32566
|
-
var formkitVersion = '
|
|
32902
|
+
var formkitVersion = '202607010100';
|
|
32567
32903
|
|
|
32568
32904
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
32569
32905
|
// See LICENSE in the project root for license information.
|
|
@@ -33066,6 +33402,7 @@ class AuroInput extends BaseInput {
|
|
|
33066
33402
|
<${this.buttonTag}
|
|
33067
33403
|
@click="${this.handleClickShowPassword}"
|
|
33068
33404
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
33405
|
+
aria-pressed="${this.showPassword ? 'true' : 'false'}"
|
|
33069
33406
|
class="notificationBtn passwordBtn"
|
|
33070
33407
|
shape="circle"
|
|
33071
33408
|
size="sm"
|
|
@@ -33139,25 +33476,29 @@ class AuroInput extends BaseInput {
|
|
|
33139
33476
|
* @returns {html} - Returns HTML for the help text and error message.
|
|
33140
33477
|
*/
|
|
33141
33478
|
renderHtmlHelpText() {
|
|
33479
|
+
// Single `<p>` with stable identity across validity transitions —
|
|
33480
|
+
// previously two distinct templates (valid vs invalid) caused Lit to
|
|
33481
|
+
// replace the node entirely on a flip, and VoiceOver wouldn't
|
|
33482
|
+
// re-announce because the live-region element it was watching had been
|
|
33483
|
+
// removed and a new one inserted. Keeping one node means the `role`,
|
|
33484
|
+
// `aria-live`, and text content all change in-place, which AT does
|
|
33485
|
+
// observe and announce.
|
|
33486
|
+
const isError = this.validity && this.validity !== 'valid';
|
|
33142
33487
|
return u$a`
|
|
33143
|
-
|
|
33144
|
-
?
|
|
33145
|
-
|
|
33146
|
-
|
|
33147
|
-
|
|
33148
|
-
|
|
33149
|
-
|
|
33150
|
-
|
|
33151
|
-
|
|
33152
|
-
|
|
33153
|
-
|
|
33154
|
-
|
|
33155
|
-
|
|
33156
|
-
|
|
33157
|
-
</p>
|
|
33158
|
-
</${this.helpTextTag}>
|
|
33159
|
-
`
|
|
33160
|
-
}
|
|
33488
|
+
<${this.helpTextTag}
|
|
33489
|
+
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
33490
|
+
?error=${isError}>
|
|
33491
|
+
<p
|
|
33492
|
+
id="${this.uniqueId}"
|
|
33493
|
+
part="helpText"
|
|
33494
|
+
role="${o$2(isError ? 'alert' : undefined)}"
|
|
33495
|
+
aria-live="${o$2(isError ? 'assertive' : undefined)}">
|
|
33496
|
+
${isError
|
|
33497
|
+
? this.errorMessage
|
|
33498
|
+
: u$a`<slot name="helpText">${this.getHelpText()}</slot>`
|
|
33499
|
+
}
|
|
33500
|
+
</p>
|
|
33501
|
+
</${this.helpTextTag}>
|
|
33161
33502
|
`;
|
|
33162
33503
|
}
|
|
33163
33504
|
|
|
@@ -33304,6 +33645,15 @@ function formatISODate(isoStr, format) {
|
|
|
33304
33645
|
try {
|
|
33305
33646
|
const date = dateFormatter.stringToDateInstance(isoStr);
|
|
33306
33647
|
|
|
33648
|
+
// `stringToDateInstance` returns an `Invalid Date` for malformed strings
|
|
33649
|
+
// and `null` for non-string input — it does NOT throw. Without this
|
|
33650
|
+
// guard, `getFullYear()`/`getMonth()`/`getDate()` on an Invalid Date
|
|
33651
|
+
// yield `NaN`, and `String(NaN).padStart(4, '0')` produces literals
|
|
33652
|
+
// like "0NaN/0NaN/0NaN" instead of `undefined`.
|
|
33653
|
+
if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
|
|
33654
|
+
return undefined;
|
|
33655
|
+
}
|
|
33656
|
+
|
|
33307
33657
|
const year = String(date.getFullYear()).padStart(4, '0');
|
|
33308
33658
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
33309
33659
|
const day = String(date.getDate()).padStart(2, '0');
|
|
@@ -33314,7 +33664,10 @@ function formatISODate(isoStr, format) {
|
|
|
33314
33664
|
replace(/mm/iu, month).
|
|
33315
33665
|
replace(/dd/iu, day);
|
|
33316
33666
|
} catch (err) {
|
|
33317
|
-
//
|
|
33667
|
+
// Defensive: the Date-returning path is guarded above, but `parseDate`
|
|
33668
|
+
// (inside `stringToDateInstance`) could throw on pathological input
|
|
33669
|
+
// future-library-versions might introduce. Treat any thrown error as
|
|
33670
|
+
// "not a valid date" and return undefined.
|
|
33318
33671
|
return undefined;
|
|
33319
33672
|
}
|
|
33320
33673
|
}
|
|
@@ -33983,6 +34336,8 @@ const datepickerKeyboardStrategy = {
|
|
|
33983
34336
|
* @slot label - Defines the label content for the entire datepicker when `layout="snowflake"`.
|
|
33984
34337
|
* @slot toLabel - Defines the label content for the second input when the `range` attribute is used.
|
|
33985
34338
|
* @slot fromLabel - Defines the label content for the first input.
|
|
34339
|
+
* @slot optionalFromLabel - Overrides the "(optional)" text rendered next to the first input's label when the datepicker is not `required`.
|
|
34340
|
+
* @slot optionalToLabel - Overrides the "(optional)" text rendered next to the second input's label when `range` is set and the datepicker is not `required`.
|
|
33986
34341
|
* @slot date_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell for the specified date. The content text is colored using the success state token when the `highlight` attribute is applied to the slot.
|
|
33987
34342
|
* @slot popover_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell popover for the specified date.
|
|
33988
34343
|
* @csspart dropdown - Use for customizing the style of the dropdown.
|
|
@@ -34038,6 +34393,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34038
34393
|
this.rangeLabelBeforeRange = 'before range';
|
|
34039
34394
|
this.rangeLabelInRange = 'in range';
|
|
34040
34395
|
this.rangeLabelAfterRange = 'after range';
|
|
34396
|
+
this.rangeLabelEndPreview = 'previewing range end';
|
|
34041
34397
|
this.blackoutDates = [];
|
|
34042
34398
|
this.blackoutLabel = 'unavailable';
|
|
34043
34399
|
this.navLabelPrevMonth = 'Previous month';
|
|
@@ -34137,6 +34493,22 @@ class AuroDatePicker extends AuroElement {
|
|
|
34137
34493
|
*/
|
|
34138
34494
|
this.handleClick = this.handleClick.bind(this);
|
|
34139
34495
|
|
|
34496
|
+
/**
|
|
34497
|
+
* Single AbortController shared by every listener registered in the
|
|
34498
|
+
* configure* methods. Lets disconnectedCallback tear all of them down
|
|
34499
|
+
* with one abort() call.
|
|
34500
|
+
*
|
|
34501
|
+
* The genuine leak risk is the listeners attached to children that can
|
|
34502
|
+
* outlive the host if they get reparented — `this.dropdown`,
|
|
34503
|
+
* `this.calendar`, and the inputs inside the dropdown's slot.
|
|
34504
|
+
* Listeners attached to `this` (e.g. focusin/focusout on the host)
|
|
34505
|
+
* form a self-contained reference graph that the GC can collect with
|
|
34506
|
+
* the host anyway, but they share the same signal so the cleanup
|
|
34507
|
+
* pattern stays uniform across all configure* sites.
|
|
34508
|
+
* @private
|
|
34509
|
+
*/
|
|
34510
|
+
this._listenerAbortController = new AbortController();
|
|
34511
|
+
|
|
34140
34512
|
/**
|
|
34141
34513
|
* @private
|
|
34142
34514
|
*/
|
|
@@ -34185,6 +34557,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34185
34557
|
|
|
34186
34558
|
/**
|
|
34187
34559
|
* Label announced for blackout (disabled but in-range) date cells.
|
|
34560
|
+
* @default 'unavailable'
|
|
34188
34561
|
*/
|
|
34189
34562
|
blackoutLabel: {
|
|
34190
34563
|
type: String,
|
|
@@ -34201,6 +34574,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34201
34574
|
|
|
34202
34575
|
/**
|
|
34203
34576
|
* Accessible label for the calendar grid containing the days of the month.
|
|
34577
|
+
* @default 'Calendar days of the month'
|
|
34204
34578
|
*/
|
|
34205
34579
|
calendarGridLabel: {
|
|
34206
34580
|
type: String,
|
|
@@ -34363,6 +34737,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34363
34737
|
|
|
34364
34738
|
/**
|
|
34365
34739
|
* Accessible label for the next month navigation button.
|
|
34740
|
+
* @default 'Next month'
|
|
34366
34741
|
*/
|
|
34367
34742
|
navLabelNextMonth: {
|
|
34368
34743
|
type: String,
|
|
@@ -34371,6 +34746,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34371
34746
|
|
|
34372
34747
|
/**
|
|
34373
34748
|
* Accessible label for the previous month navigation button.
|
|
34749
|
+
* @default 'Previous month'
|
|
34374
34750
|
*/
|
|
34375
34751
|
navLabelPrevMonth: {
|
|
34376
34752
|
type: String,
|
|
@@ -34448,7 +34824,11 @@ class AuroDatePicker extends AuroElement {
|
|
|
34448
34824
|
},
|
|
34449
34825
|
|
|
34450
34826
|
/**
|
|
34451
|
-
* Label announced for cells after
|
|
34827
|
+
* Label announced for cells after a fully selected range (both
|
|
34828
|
+
* `dateFrom` and `dateTo` are set). While a range is still being
|
|
34829
|
+
* picked (`dateFrom` set, `dateTo` unset), focused cells past the
|
|
34830
|
+
* start use `rangeLabelEndPreview` instead.
|
|
34831
|
+
* @default 'after range'
|
|
34452
34832
|
*/
|
|
34453
34833
|
rangeLabelAfterRange: {
|
|
34454
34834
|
type: String,
|
|
@@ -34457,6 +34837,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34457
34837
|
|
|
34458
34838
|
/**
|
|
34459
34839
|
* Label announced for cells before the range start.
|
|
34840
|
+
* @default 'before range'
|
|
34460
34841
|
*/
|
|
34461
34842
|
rangeLabelBeforeRange: {
|
|
34462
34843
|
type: String,
|
|
@@ -34465,14 +34846,27 @@ class AuroDatePicker extends AuroElement {
|
|
|
34465
34846
|
|
|
34466
34847
|
/**
|
|
34467
34848
|
* Label announced for the range end date cell.
|
|
34849
|
+
* @default 'range end'
|
|
34468
34850
|
*/
|
|
34469
34851
|
rangeLabelEnd: {
|
|
34470
34852
|
type: String,
|
|
34471
34853
|
reflect: true
|
|
34472
34854
|
},
|
|
34473
34855
|
|
|
34856
|
+
/**
|
|
34857
|
+
* Label announced for the focused cell while previewing a range end
|
|
34858
|
+
* (dateFrom set, dateTo not yet selected). Tells AT users that
|
|
34859
|
+
* pressing Enter would commit this cell as the range end.
|
|
34860
|
+
* @default 'previewing range end'
|
|
34861
|
+
*/
|
|
34862
|
+
rangeLabelEndPreview: {
|
|
34863
|
+
type: String,
|
|
34864
|
+
reflect: true
|
|
34865
|
+
},
|
|
34866
|
+
|
|
34474
34867
|
/**
|
|
34475
34868
|
* Label announced for cells within the selected range.
|
|
34869
|
+
* @default 'in range'
|
|
34476
34870
|
*/
|
|
34477
34871
|
rangeLabelInRange: {
|
|
34478
34872
|
type: String,
|
|
@@ -34481,6 +34875,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34481
34875
|
|
|
34482
34876
|
/**
|
|
34483
34877
|
* Label announced for the range start date cell.
|
|
34878
|
+
* @default 'range start'
|
|
34484
34879
|
*/
|
|
34485
34880
|
rangeLabelStart: {
|
|
34486
34881
|
type: String,
|
|
@@ -34488,7 +34883,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34488
34883
|
},
|
|
34489
34884
|
|
|
34490
34885
|
/**
|
|
34491
|
-
* Dates that the user should have for reference as part of their decision
|
|
34886
|
+
* Dates that the user should have for reference as part of their decision-making when selecting a date.
|
|
34492
34887
|
* This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
|
|
34493
34888
|
*/
|
|
34494
34889
|
referenceDates: {
|
|
@@ -34845,10 +35240,26 @@ class AuroDatePicker extends AuroElement {
|
|
|
34845
35240
|
// ─── Vendor calendar time conversions ─────────────────────────────────────
|
|
34846
35241
|
|
|
34847
35242
|
/**
|
|
34848
|
-
* Converts a Unix timestamp (seconds) from the
|
|
35243
|
+
* Converts a Unix timestamp (seconds) from the vendored range-datepicker
|
|
35244
|
+
* (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
|
|
35245
|
+
*
|
|
35246
|
+
* Timezone contract:
|
|
35247
|
+
* - INPUT: `time` is assumed to be the seconds-since-epoch of **local
|
|
35248
|
+
* midnight** for the intended calendar day. The vendor's Day constructor
|
|
35249
|
+
* builds it via `date-fns format(date, 't')` from a locally-constructed
|
|
35250
|
+
* Date, so this assumption currently holds end-to-end.
|
|
35251
|
+
* - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
|
|
35252
|
+
* getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
|
|
35253
|
+
* string matches the local calendar day.
|
|
35254
|
+
*
|
|
35255
|
+
* If the vendor ever switches to emitting UTC-midnight timestamps, this
|
|
35256
|
+
* conversion will silently shift the returned date by one day in zones
|
|
35257
|
+
* west of UTC. Any vendor swap should re-verify this contract; the TZ
|
|
35258
|
+
* regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
|
|
35259
|
+
*
|
|
34849
35260
|
* @private
|
|
34850
|
-
* @param {number} time - Unix timestamp
|
|
34851
|
-
* @returns {string} ISO date string (yyyy-mm-dd).
|
|
35261
|
+
* @param {number} time - Unix timestamp (seconds), local midnight of the day.
|
|
35262
|
+
* @returns {string} ISO date string (yyyy-mm-dd) reflecting the local calendar day.
|
|
34852
35263
|
*/
|
|
34853
35264
|
convertWcTimeToDate(time) {
|
|
34854
35265
|
return dateFormatter$1.toISOFormatString(new Date(time * 1000));
|
|
@@ -34950,8 +35361,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
34950
35361
|
}
|
|
34951
35362
|
}
|
|
34952
35363
|
|
|
34953
|
-
// Focus the calendar grid wrapper (
|
|
34954
|
-
// the SR announcement for the active cell
|
|
35364
|
+
// Focus the calendar grid wrapper. The live region (announced just
|
|
35365
|
+
// below) handles the SR announcement for the active cell.
|
|
34955
35366
|
if (activeCell) {
|
|
34956
35367
|
this.calendar.focusActiveCell();
|
|
34957
35368
|
|
|
@@ -34965,11 +35376,14 @@ class AuroDatePicker extends AuroElement {
|
|
|
34965
35376
|
this.calendar.announceSelection(announcement);
|
|
34966
35377
|
}, 500);
|
|
34967
35378
|
|
|
34968
|
-
// On mobile fullscreen
|
|
34969
|
-
//
|
|
34970
|
-
//
|
|
34971
|
-
|
|
35379
|
+
// On mobile fullscreen — or when an explicit focusDate change has
|
|
35380
|
+
// requested a forced scroll on the next render — scroll the active
|
|
35381
|
+
// cell into view. Doing this here (after activeCellDate has been
|
|
35382
|
+
// resolved by the rAF loop above) prevents a no-op scroll that
|
|
35383
|
+
// would happen if we tried to scroll before the cell was set.
|
|
35384
|
+
if (this.dropdown.isBibFullscreen || this.forceScrollOnNextMobileCalendarRender) {
|
|
34972
35385
|
this.calendar.scrollToActiveCell();
|
|
35386
|
+
this.forceScrollOnNextMobileCalendarRender = false;
|
|
34973
35387
|
}
|
|
34974
35388
|
} else if (attempts < MAX_ATTEMPTS) {
|
|
34975
35389
|
requestAnimationFrame(tryFocus);
|
|
@@ -35001,11 +35415,13 @@ class AuroDatePicker extends AuroElement {
|
|
|
35001
35415
|
this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
|
|
35002
35416
|
}
|
|
35003
35417
|
|
|
35418
|
+
const { signal } = this._listenerAbortController;
|
|
35419
|
+
|
|
35004
35420
|
this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
|
|
35005
35421
|
if (!this.isPopoverVisible) {
|
|
35006
35422
|
this.dropdown.show();
|
|
35007
35423
|
}
|
|
35008
|
-
});
|
|
35424
|
+
}, { signal });
|
|
35009
35425
|
|
|
35010
35426
|
this.dropdown.addEventListener('auroDropdown-toggled', () => {
|
|
35011
35427
|
this.notifyDatepickerToggled();
|
|
@@ -35023,7 +35439,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35023
35439
|
if (this.valueObject) {
|
|
35024
35440
|
this.centralDate = this.value;
|
|
35025
35441
|
} else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
|
|
35026
|
-
this.centralDate = new Date();
|
|
35442
|
+
this.centralDate = dateFormatter$1.toISOFormatString(new Date());
|
|
35027
35443
|
}
|
|
35028
35444
|
}
|
|
35029
35445
|
|
|
@@ -35091,19 +35507,11 @@ class AuroDatePicker extends AuroElement {
|
|
|
35091
35507
|
}
|
|
35092
35508
|
}
|
|
35093
35509
|
|
|
35094
|
-
//
|
|
35095
|
-
|
|
35096
|
-
|
|
35097
|
-
|
|
35098
|
-
|
|
35099
|
-
// we need to wait until the next frame to ensure the calendar is fully rendered
|
|
35100
|
-
// and the area we're trying to scroll to is present in the DOM.
|
|
35101
|
-
setTimeout(() => {
|
|
35102
|
-
this.calendar.scrollMonthIntoView(this.calendarFocusDate);
|
|
35103
|
-
this.forceScrollOnNextMobileCalendarRender = false;
|
|
35104
|
-
}, 0);
|
|
35105
|
-
}
|
|
35106
|
-
});
|
|
35510
|
+
// Note: the forceScrollOnNextMobileCalendarRender scroll-into-view
|
|
35511
|
+
// happens inside focusActiveCellWhenReady() once activeCellDate has
|
|
35512
|
+
// been resolved by its rAF wait — not here in a setTimeout(0), which
|
|
35513
|
+
// fired before the active date was set and silently no-op'd.
|
|
35514
|
+
}, { signal });
|
|
35107
35515
|
|
|
35108
35516
|
// Handle responsive strategy changes while the dropdown is open
|
|
35109
35517
|
// (e.g. resizing from desktop → mobile or vice versa).
|
|
@@ -35150,7 +35558,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35150
35558
|
});
|
|
35151
35559
|
});
|
|
35152
35560
|
}
|
|
35153
|
-
});
|
|
35561
|
+
}, { signal });
|
|
35154
35562
|
}
|
|
35155
35563
|
|
|
35156
35564
|
/**
|
|
@@ -35163,6 +35571,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
35163
35571
|
|
|
35164
35572
|
this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
|
|
35165
35573
|
|
|
35574
|
+
const { signal } = this._listenerAbortController;
|
|
35575
|
+
|
|
35166
35576
|
this.inputList.forEach((input, index) => {
|
|
35167
35577
|
input.addEventListener('input', (event) => {
|
|
35168
35578
|
event.stopPropagation();
|
|
@@ -35174,7 +35584,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35174
35584
|
}
|
|
35175
35585
|
|
|
35176
35586
|
this.notifyValueChanged();
|
|
35177
|
-
});
|
|
35587
|
+
}, { signal });
|
|
35178
35588
|
|
|
35179
35589
|
input.addEventListener('auroFormElement-validated', (evt) => {
|
|
35180
35590
|
// not to bubble up input's validated event.
|
|
@@ -35190,7 +35600,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35190
35600
|
this.validity = evt.detail.validity;
|
|
35191
35601
|
this.errorMessage = evt.detail.message;
|
|
35192
35602
|
}
|
|
35193
|
-
});
|
|
35603
|
+
}, { signal });
|
|
35194
35604
|
});
|
|
35195
35605
|
}
|
|
35196
35606
|
|
|
@@ -35204,19 +35614,32 @@ class AuroDatePicker extends AuroElement {
|
|
|
35204
35614
|
this.calendar.datepicker = this;
|
|
35205
35615
|
this.calendar.dropdown = this.dropdown;
|
|
35206
35616
|
|
|
35617
|
+
const { signal } = this._listenerAbortController;
|
|
35618
|
+
|
|
35207
35619
|
this.calendar.addEventListener('auroCalendar-dateSelected', () => {
|
|
35208
|
-
|
|
35209
|
-
|
|
35620
|
+
// Compare the input's ISO value against the *converted* calendar
|
|
35621
|
+
// timestamp (the vendor's `dateFrom`/`dateTo` are Unix-seconds
|
|
35622
|
+
// strings — comparing the input ISO directly against them would
|
|
35623
|
+
// never match, so the write would fire on every event and emit
|
|
35624
|
+
// redundant input/change activity).
|
|
35625
|
+
if (this.calendar.dateFrom !== undefined) {
|
|
35626
|
+
const fromIso = this.convertWcTimeToDate(this.calendar.dateFrom);
|
|
35627
|
+
if (this.inputList[0].value !== fromIso) {
|
|
35628
|
+
this.inputList[0].value = fromIso;
|
|
35629
|
+
}
|
|
35210
35630
|
}
|
|
35211
35631
|
|
|
35212
|
-
if (this.inputList[1] && this.calendar.dateTo
|
|
35213
|
-
|
|
35632
|
+
if (this.inputList[1] && this.calendar.dateTo) {
|
|
35633
|
+
const toIso = this.convertWcTimeToDate(this.calendar.dateTo);
|
|
35634
|
+
if (this.inputList[1].value !== toIso) {
|
|
35635
|
+
this.inputList[1].value = toIso;
|
|
35636
|
+
}
|
|
35214
35637
|
}
|
|
35215
|
-
});
|
|
35638
|
+
}, { signal });
|
|
35216
35639
|
|
|
35217
35640
|
this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
|
|
35218
35641
|
this.dropdown.hide();
|
|
35219
|
-
});
|
|
35642
|
+
}, { signal });
|
|
35220
35643
|
|
|
35221
35644
|
this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
|
|
35222
35645
|
const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
|
|
@@ -35226,7 +35649,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35226
35649
|
}
|
|
35227
35650
|
|
|
35228
35651
|
this.notifyMonthChanged(event);
|
|
35229
|
-
});
|
|
35652
|
+
}, { signal });
|
|
35230
35653
|
}
|
|
35231
35654
|
|
|
35232
35655
|
/**
|
|
@@ -35235,10 +35658,17 @@ class AuroDatePicker extends AuroElement {
|
|
|
35235
35658
|
* @returns {void}
|
|
35236
35659
|
*/
|
|
35237
35660
|
configureDatepicker() {
|
|
35661
|
+
// These listeners are on `this` (the host), so they would GC with the
|
|
35662
|
+
// host even without the abort signal — see the leak rationale on
|
|
35663
|
+
// `_listenerAbortController`. The signal is still passed for uniform
|
|
35664
|
+
// cleanup semantics with the child-element listeners in the other
|
|
35665
|
+
// configure* methods.
|
|
35666
|
+
const { signal } = this._listenerAbortController;
|
|
35667
|
+
|
|
35238
35668
|
this.addEventListener('focusin', () => {
|
|
35239
35669
|
this.touched = true;
|
|
35240
35670
|
this.hasFocus = true;
|
|
35241
|
-
});
|
|
35671
|
+
}, { signal });
|
|
35242
35672
|
|
|
35243
35673
|
this.addEventListener('focusout', () => {
|
|
35244
35674
|
this.hasFocus = false;
|
|
@@ -35250,7 +35680,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35250
35680
|
if (!this.matches(':focus-within')) {
|
|
35251
35681
|
this.validate();
|
|
35252
35682
|
}
|
|
35253
|
-
});
|
|
35683
|
+
}, { signal });
|
|
35254
35684
|
|
|
35255
35685
|
if (this.valueObject) {
|
|
35256
35686
|
this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
|
|
@@ -35448,6 +35878,41 @@ class AuroDatePicker extends AuroElement {
|
|
|
35448
35878
|
return this.validity !== undefined && this.validity !== 'valid';
|
|
35449
35879
|
}
|
|
35450
35880
|
|
|
35881
|
+
/**
|
|
35882
|
+
* Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
|
|
35883
|
+
* spans every datepicker instance on the page; lives on the class (not
|
|
35884
|
+
* at module scope) so it stays an encapsulated implementation detail of
|
|
35885
|
+
* this component and does not interfere with WCA's class-JSDoc
|
|
35886
|
+
* attachment.
|
|
35887
|
+
* @private
|
|
35888
|
+
*/
|
|
35889
|
+
static _warnedInvalidLocales = new Set();
|
|
35890
|
+
|
|
35891
|
+
/**
|
|
35892
|
+
* Logs a one-time `console.debug` when an unsupported locale falls back to
|
|
35893
|
+
* en-US. Deduped by the offending tag so noisy re-renders that resurface
|
|
35894
|
+
* the same bad value stay quiet, but each new bad value still signals so
|
|
35895
|
+
* consumers can spot the typo or missing tag.
|
|
35896
|
+
* @private
|
|
35897
|
+
* @param {string|undefined} badLocale - The locale value that failed.
|
|
35898
|
+
* @returns {void}
|
|
35899
|
+
*/
|
|
35900
|
+
_warnInvalidLocale(badLocale) {
|
|
35901
|
+
// Stringify without coalescing — `String(undefined)` / `String(null)`
|
|
35902
|
+
// surface the actual offending value in the log, instead of the
|
|
35903
|
+
// ambiguous `Locale ""` that `String(badLocale ?? '')` would produce.
|
|
35904
|
+
// Dedup still works correctly because each unique stringification
|
|
35905
|
+
// becomes its own Set entry.
|
|
35906
|
+
const key = String(badLocale);
|
|
35907
|
+
const seen = AuroDatePicker._warnedInvalidLocales;
|
|
35908
|
+
if (seen.has(key)) {
|
|
35909
|
+
return;
|
|
35910
|
+
}
|
|
35911
|
+
seen.add(key);
|
|
35912
|
+
// eslint-disable-next-line no-console
|
|
35913
|
+
console.debug(`[auro-datepicker] Locale "${key}" is not supported by Intl.DateTimeFormat. Falling back to "en-US". Pass a BCP 47 tag such as "en-US", "fr-FR", or "ja-JP".`);
|
|
35914
|
+
}
|
|
35915
|
+
|
|
35451
35916
|
/**
|
|
35452
35917
|
* Lifecycle method to check if the locale is valid.
|
|
35453
35918
|
* @ignore
|
|
@@ -35458,10 +35923,15 @@ class AuroDatePicker extends AuroElement {
|
|
|
35458
35923
|
if (changedProperties.has('locale')) {
|
|
35459
35924
|
try {
|
|
35460
35925
|
const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
|
|
35461
|
-
|
|
35926
|
+
if (supported.length > 0) {
|
|
35927
|
+
this._validLocale = this.locale;
|
|
35928
|
+
} else {
|
|
35929
|
+
this._validLocale = 'en-US';
|
|
35930
|
+
this._warnInvalidLocale(this.locale);
|
|
35931
|
+
}
|
|
35462
35932
|
} catch {
|
|
35463
|
-
console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
|
|
35464
35933
|
this._validLocale = 'en-US';
|
|
35934
|
+
this._warnInvalidLocale(this.locale);
|
|
35465
35935
|
}
|
|
35466
35936
|
|
|
35467
35937
|
const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
|
|
@@ -35543,8 +36013,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
35543
36013
|
// Skip centralDate update when user clicked a cell in range mode
|
|
35544
36014
|
// to prevent the displayed months from shifting
|
|
35545
36015
|
this.centralDate = this.value;
|
|
35546
|
-
//TODO: TEST THIS CHANGE
|
|
35547
|
-
// this.calendarRenderUtil.updateCentralDate(this, this.value);
|
|
35548
36016
|
}
|
|
35549
36017
|
|
|
35550
36018
|
this.setHasValue();
|
|
@@ -35578,7 +36046,9 @@ class AuroDatePicker extends AuroElement {
|
|
|
35578
36046
|
// update the calendar
|
|
35579
36047
|
if (this.valueEndObject) {
|
|
35580
36048
|
this.calendar.dateTo = this.convertToWcValidTime(this.valueEndObject);
|
|
35581
|
-
|
|
36049
|
+
if (!this.wasCellClick) {
|
|
36050
|
+
this.calendarRenderUtil.updateCentralDate(this, this.valueEndObject);
|
|
36051
|
+
}
|
|
35582
36052
|
} else {
|
|
35583
36053
|
if (this.inputList[1].value !== this.valueEnd) {
|
|
35584
36054
|
this.inputList[1].value = this.valueEnd || '';
|
|
@@ -35602,8 +36072,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
35602
36072
|
// Skip centralDate update when user clicked a cell in range mode
|
|
35603
36073
|
// to prevent the displayed months from shifting
|
|
35604
36074
|
this.centralDate = this.valueEnd;
|
|
35605
|
-
// TODO: TEST THIS CHANGE
|
|
35606
|
-
// this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
|
|
35607
36075
|
}
|
|
35608
36076
|
|
|
35609
36077
|
this.validate();
|
|
@@ -35745,7 +36213,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35745
36213
|
* @returns {void}
|
|
35746
36214
|
*/
|
|
35747
36215
|
configureClickHandler() {
|
|
35748
|
-
this.addEventListener('click', this.handleClick);
|
|
36216
|
+
this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
|
|
35749
36217
|
}
|
|
35750
36218
|
|
|
35751
36219
|
firstUpdated() {
|
|
@@ -35753,6 +36221,15 @@ class AuroDatePicker extends AuroElement {
|
|
|
35753
36221
|
// Add the tag name as an attribute if it is different than the component name
|
|
35754
36222
|
this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
|
|
35755
36223
|
|
|
36224
|
+
// If the element was disconnected before this first render finished,
|
|
36225
|
+
// disconnectedCallback's microtask already aborted the controller. The
|
|
36226
|
+
// connectedCallback reinit guard skips that case because `hasUpdated`
|
|
36227
|
+
// is still false. Mint a fresh controller here so configure* registers
|
|
36228
|
+
// listeners against a live signal.
|
|
36229
|
+
if (this._listenerAbortController.signal.aborted) {
|
|
36230
|
+
this._listenerAbortController = new AbortController();
|
|
36231
|
+
}
|
|
36232
|
+
|
|
35756
36233
|
this.configureDropdown();
|
|
35757
36234
|
this.configureInput();
|
|
35758
36235
|
this.configureCalendar();
|
|
@@ -35764,9 +36241,36 @@ class AuroDatePicker extends AuroElement {
|
|
|
35764
36241
|
connectedCallback() {
|
|
35765
36242
|
super.connectedCallback();
|
|
35766
36243
|
|
|
36244
|
+
// True reconnect after `disconnectedCallback` aborted our controller:
|
|
36245
|
+
// the existing signal is dead, so listeners registered against it
|
|
36246
|
+
// would never fire. Create a fresh controller and re-run the
|
|
36247
|
+
// configure* wiring (each method is idempotent — it just re-caches
|
|
36248
|
+
// child refs and re-registers listeners against the new signal).
|
|
36249
|
+
// `hasUpdated` gates this so the *first* connect (which precedes
|
|
36250
|
+
// firstUpdated) still falls through to firstUpdated's initial wiring.
|
|
36251
|
+
if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
|
|
36252
|
+
this._listenerAbortController = new AbortController();
|
|
36253
|
+
this.configureDropdown();
|
|
36254
|
+
this.configureInput();
|
|
36255
|
+
this.configureCalendar();
|
|
36256
|
+
this.configureDatepicker();
|
|
36257
|
+
this.configureClickHandler();
|
|
36258
|
+
}
|
|
36259
|
+
|
|
35767
36260
|
this.locale = this.domHandler.getLocale(this);
|
|
35768
36261
|
}
|
|
35769
36262
|
|
|
36263
|
+
disconnectedCallback() {
|
|
36264
|
+
super.disconnectedCallback();
|
|
36265
|
+
// Defer so that re-parenting (auro-drawer slotting it into a dialog,
|
|
36266
|
+
// for example) does not abort listeners we still need after reconnect.
|
|
36267
|
+
queueMicrotask(() => {
|
|
36268
|
+
if (!this.isConnected) {
|
|
36269
|
+
this._listenerAbortController.abort();
|
|
36270
|
+
}
|
|
36271
|
+
});
|
|
36272
|
+
}
|
|
36273
|
+
|
|
35770
36274
|
// layout render methods
|
|
35771
36275
|
// ------------------------------------
|
|
35772
36276
|
|
|
@@ -35973,6 +36477,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35973
36477
|
}
|
|
35974
36478
|
<span slot="ariaLabel.clear">${this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || i18n(this.lang, 'clearInput')}</span>
|
|
35975
36479
|
<span slot="label"><slot name="fromLabel"></slot></span>
|
|
36480
|
+
<slot name="optionalFromLabel" slot="optionalLabel"> (optional)</slot>
|
|
35976
36481
|
</${this.inputTag}>
|
|
35977
36482
|
</div>
|
|
35978
36483
|
|
|
@@ -36017,6 +36522,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
36017
36522
|
}
|
|
36018
36523
|
<span slot="ariaLabel.clear">${this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || i18n(this.lang, 'clearInput')}</span>
|
|
36019
36524
|
<span slot="label"><slot name="toLabel"></slot></span>
|
|
36525
|
+
<slot name="optionalToLabel" slot="optionalLabel"> (optional)</slot>
|
|
36020
36526
|
</${this.inputTag}>
|
|
36021
36527
|
</div>
|
|
36022
36528
|
` : undefined}
|
|
@@ -36217,27 +36723,9 @@ class AuroDatePicker extends AuroElement {
|
|
|
36217
36723
|
}
|
|
36218
36724
|
}
|
|
36219
36725
|
|
|
36220
|
-
function localizationExample() {
|
|
36221
|
-
const localizedDatepicker = document.querySelector("#localizationExample");
|
|
36222
|
-
|
|
36223
|
-
localizedDatepicker.monthNames = ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'];
|
|
36224
|
-
}
|
|
36225
|
-
|
|
36226
36726
|
AuroDatePicker.register();
|
|
36227
36727
|
|
|
36228
36728
|
function initExamples(initCount) {
|
|
36229
|
-
initCount = initCount || 0;
|
|
36230
|
-
|
|
36231
|
-
try {
|
|
36232
|
-
localizationExample();
|
|
36233
|
-
} catch {
|
|
36234
|
-
if (initCount <= 20) {
|
|
36235
|
-
// setTimeout handles issue where content is sometimes loaded after the functions get called
|
|
36236
|
-
setTimeout(() => {
|
|
36237
|
-
initExamples(initCount + 1);
|
|
36238
|
-
}, 100);
|
|
36239
|
-
}
|
|
36240
|
-
}
|
|
36241
36729
|
}
|
|
36242
36730
|
|
|
36243
36731
|
export { initExamples };
|