@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
|
@@ -640,15 +640,17 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
640
640
|
);
|
|
641
641
|
}
|
|
642
642
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
643
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
644
|
+
|
|
645
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
646
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
647
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
648
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
649
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
646
650
|
hasValue = false;
|
|
647
651
|
}
|
|
648
652
|
}
|
|
649
653
|
|
|
650
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
651
|
-
|
|
652
654
|
if (isCombobox) {
|
|
653
655
|
|
|
654
656
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -1356,7 +1358,7 @@ function normalizeDates$1(context, ...dates) {
|
|
|
1356
1358
|
* const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
|
|
1357
1359
|
* //=> Tue Sep 02 2014 00:00:00
|
|
1358
1360
|
*/
|
|
1359
|
-
function startOfDay$
|
|
1361
|
+
function startOfDay$1(date, options) {
|
|
1360
1362
|
const _date = toDate$1(date, options?.in);
|
|
1361
1363
|
_date.setHours(0, 0, 0, 0);
|
|
1362
1364
|
return _date;
|
|
@@ -1404,8 +1406,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
|
|
|
1404
1406
|
earlierDate,
|
|
1405
1407
|
);
|
|
1406
1408
|
|
|
1407
|
-
const laterStartOfDay = startOfDay$
|
|
1408
|
-
const earlierStartOfDay = startOfDay$
|
|
1409
|
+
const laterStartOfDay = startOfDay$1(laterDate_);
|
|
1410
|
+
const earlierStartOfDay = startOfDay$1(earlierDate_);
|
|
1409
1411
|
|
|
1410
1412
|
const laterTimestamp =
|
|
1411
1413
|
+laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
|
|
@@ -10507,10 +10509,18 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
10507
10509
|
* @returns {string | undefined}
|
|
10508
10510
|
*/
|
|
10509
10511
|
toFormattedValue(valueObject, format) {
|
|
10512
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
10513
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
10514
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
10515
|
+
// as "no format → no display value".
|
|
10516
|
+
if (!format) {
|
|
10517
|
+
return undefined;
|
|
10518
|
+
}
|
|
10510
10519
|
const normalizedFormat = format.toLowerCase();
|
|
10511
10520
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
10512
10521
|
|
|
10513
10522
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
10523
|
+
console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
|
|
10514
10524
|
return undefined;
|
|
10515
10525
|
}
|
|
10516
10526
|
|
|
@@ -10766,11 +10776,11 @@ var snowflakeStyle = css`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
|
|
|
10766
10776
|
|
|
10767
10777
|
var snowflakeColors = css`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
|
|
10768
10778
|
|
|
10769
|
-
var styleCss$7 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-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}`;
|
|
10779
|
+
var styleCss$7 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-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}`;
|
|
10770
10780
|
|
|
10771
|
-
var colorCss$7 = css`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);box-shadow:inset 0 0 0 1px var(--ds-auro-calendar-nav-btn-border-color)}.mobileHeader{background-color:var(--ds-auro-calendar-mobile-header-container-color)}.mobileDateLabel{color:var(--ds-auro-calendar-mobile-header-text-color)}:host(:not([noRange])) .headerDateTo:after{background-color:var(--ds-auro-calendar-mobile-header-divider-color)}::slotted([slot="bib.fullscreen.fromStr"]),::slotted([slot=mobileDateToStr]){color:var(--ds-auro-datepicker-placeholder-color)}@media screen and (max-width: 576px){.calendarNavBtn{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}}`;
|
|
10781
|
+
var colorCss$7 = css`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus-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)}}`;
|
|
10772
10782
|
|
|
10773
|
-
var styleCss$6 = css`: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)}`;
|
|
10783
|
+
var styleCss$6 = css`: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)}`;
|
|
10774
10784
|
|
|
10775
10785
|
var colorCss$6 = css`: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)}`;
|
|
10776
10786
|
|
|
@@ -10862,8 +10872,8 @@ class RangeDatepickerCell extends LitElement {
|
|
|
10862
10872
|
const parsedDateFrom = parseInt(dateFrom, 10);
|
|
10863
10873
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
10864
10874
|
if (day) {
|
|
10865
|
-
if (getTime(startOfDay$
|
|
10866
|
-
getTime(startOfDay$
|
|
10875
|
+
if (getTime(startOfDay$1(parsedDateTo * 1000)) / 1000 === day.date ||
|
|
10876
|
+
getTime(startOfDay$1(parsedDateFrom * 1000)) / 1000 === day.date) {
|
|
10867
10877
|
this.selected = true;
|
|
10868
10878
|
}
|
|
10869
10879
|
if (((hoveredDate === day.date || day.date < hoveredDate) &&
|
|
@@ -11051,7 +11061,7 @@ class RangeDatepickerCalendar extends LitElement {
|
|
|
11051
11061
|
this.dayNamesOfTheWeek = [];
|
|
11052
11062
|
this.daysOfMonth = [];
|
|
11053
11063
|
this._locale = null;
|
|
11054
|
-
this.currentDate = parseInt(format$1(startOfDay$
|
|
11064
|
+
this.currentDate = parseInt(format$1(startOfDay$1(Date.now()), 't'), 10);
|
|
11055
11065
|
this.localeChanged();
|
|
11056
11066
|
this.yearAndMonthChanged(this.year, this.month);
|
|
11057
11067
|
}
|
|
@@ -11525,7 +11535,7 @@ __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "dayN
|
|
|
11525
11535
|
__decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
|
|
11526
11536
|
AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
|
|
11527
11537
|
|
|
11528
|
-
var styleCss$5 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-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}`;
|
|
11538
|
+
var styleCss$5 = css`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-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}`;
|
|
11529
11539
|
|
|
11530
11540
|
var colorCss$5 = css`: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}`;
|
|
11531
11541
|
|
|
@@ -11550,13 +11560,103 @@ class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,cl
|
|
|
11550
11560
|
|
|
11551
11561
|
var popoverVersion = '6.0.1';
|
|
11552
11562
|
|
|
11553
|
-
|
|
11563
|
+
/**
|
|
11564
|
+
* Single source of truth for parsing and matching blackout dates across the
|
|
11565
|
+
* datepicker. Both `auro-calendar` (memoized Set + `isDateBlackout`) and the
|
|
11566
|
+
* pre-`firstUpdated` fallback inside `auro-calendar-cell` route through these
|
|
11567
|
+
* helpers so the YYYY-MM-DD → seconds conversion and the merge-with-legacy
|
|
11568
|
+
* `disabledDays` rules are defined exactly once.
|
|
11569
|
+
*/
|
|
11554
11570
|
|
|
11555
|
-
|
|
11556
|
-
|
|
11557
|
-
|
|
11558
|
-
|
|
11559
|
-
|
|
11571
|
+
/**
|
|
11572
|
+
* Converts a `YYYY-MM-DD` ISO date string to a Unix timestamp (seconds)
|
|
11573
|
+
* representing local midnight on that calendar day. Returns `null` for
|
|
11574
|
+
* inputs that don't parse to a finite timestamp.
|
|
11575
|
+
*
|
|
11576
|
+
* Uses the `new Date(year, monthIndex, day)` constructor (NOT
|
|
11577
|
+
* `new Date(isoStr)`) so the result is local-midnight rather than UTC
|
|
11578
|
+
* midnight — required to keep the calendar grid aligned with the user's
|
|
11579
|
+
* local calendar day in negative-offset timezones.
|
|
11580
|
+
*
|
|
11581
|
+
* @param {string} isoStr - Date string in `YYYY-MM-DD` format.
|
|
11582
|
+
* @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
|
|
11583
|
+
*/
|
|
11584
|
+
function parseIsoToTimestamp(isoStr) {
|
|
11585
|
+
if (typeof isoStr !== 'string') {
|
|
11586
|
+
return null;
|
|
11587
|
+
}
|
|
11588
|
+
const parts = isoStr.split('-');
|
|
11589
|
+
if (parts.length !== 3) {
|
|
11590
|
+
return null;
|
|
11591
|
+
}
|
|
11592
|
+
const year = parseInt(parts[0], 10);
|
|
11593
|
+
const month = parseInt(parts[1], 10);
|
|
11594
|
+
const day = parseInt(parts[2], 10);
|
|
11595
|
+
if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
|
|
11596
|
+
return null;
|
|
11597
|
+
}
|
|
11598
|
+
// Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
|
|
11599
|
+
// silently normalizes those to a different calendar day, which would
|
|
11600
|
+
// disable the wrong date if we let the result through.
|
|
11601
|
+
if (month < 1 || month > 12 || day < 1 || day > 31) {
|
|
11602
|
+
return null;
|
|
11603
|
+
}
|
|
11604
|
+
const date = new Date(year, month - 1, day);
|
|
11605
|
+
// Guard the residual case where JS still rolls a value (e.g. Feb 30 → Mar 2).
|
|
11606
|
+
// After construction, getFullYear/getMonth/getDate should match the inputs.
|
|
11607
|
+
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
11608
|
+
return null;
|
|
11609
|
+
}
|
|
11610
|
+
const ts = Math.floor(date.getTime() / 1000);
|
|
11611
|
+
return Number.isFinite(ts) ? ts : null;
|
|
11612
|
+
}
|
|
11613
|
+
|
|
11614
|
+
/**
|
|
11615
|
+
* Builds a `Set<number>` of seconds-since-epoch timestamps covering both the
|
|
11616
|
+
* legacy `disabledDays` (already-numeric) array and the ISO `blackoutDates`
|
|
11617
|
+
* array. Use this for O(1) membership checks in hot paths.
|
|
11618
|
+
*
|
|
11619
|
+
* @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
|
|
11620
|
+
* @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
|
|
11621
|
+
* @returns {Set<number>}
|
|
11622
|
+
*/
|
|
11623
|
+
function buildBlackoutSet(disabledDays, blackoutDates) {
|
|
11624
|
+
const set = new Set();
|
|
11625
|
+
if (Array.isArray(disabledDays)) {
|
|
11626
|
+
for (const day of disabledDays) {
|
|
11627
|
+
const ts = parseInt(day, 10);
|
|
11628
|
+
if (Number.isFinite(ts)) {
|
|
11629
|
+
set.add(ts);
|
|
11630
|
+
}
|
|
11631
|
+
}
|
|
11632
|
+
}
|
|
11633
|
+
if (Array.isArray(blackoutDates)) {
|
|
11634
|
+
for (const isoStr of blackoutDates) {
|
|
11635
|
+
const ts = parseIsoToTimestamp(isoStr);
|
|
11636
|
+
if (ts !== null) {
|
|
11637
|
+
set.add(ts);
|
|
11638
|
+
}
|
|
11639
|
+
}
|
|
11640
|
+
}
|
|
11641
|
+
return set;
|
|
11642
|
+
}
|
|
11643
|
+
|
|
11644
|
+
/**
|
|
11645
|
+
* One-shot membership test for a single timestamp against both blackout
|
|
11646
|
+
* sources. Allocates a Set on each call; only use this in cold paths
|
|
11647
|
+
* (e.g. the pre-`firstUpdated` cell fallback). Hot paths should hold the
|
|
11648
|
+
* Set returned from `buildBlackoutSet` and `.has(ts)` directly.
|
|
11649
|
+
*
|
|
11650
|
+
* @param {number} dateTs - Unix timestamp (seconds) to test.
|
|
11651
|
+
* @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
|
|
11652
|
+
* @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
|
|
11653
|
+
* @returns {boolean}
|
|
11654
|
+
*/
|
|
11655
|
+
function isBlackoutTimestamp(dateTs, disabledDays, blackoutDates) {
|
|
11656
|
+
return buildBlackoutSet(disabledDays, blackoutDates).has(dateTs);
|
|
11657
|
+
}
|
|
11658
|
+
|
|
11659
|
+
/* 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 */
|
|
11560
11660
|
|
|
11561
11661
|
class AuroCalendarCell extends LitElement {
|
|
11562
11662
|
constructor() {
|
|
@@ -11604,6 +11704,14 @@ class AuroCalendarCell extends LitElement {
|
|
|
11604
11704
|
type: Boolean,
|
|
11605
11705
|
reflect: true
|
|
11606
11706
|
},
|
|
11707
|
+
/**
|
|
11708
|
+
* @deprecated Propagated from the legacy `auro-calendar.disabledDays`
|
|
11709
|
+
* Unix-timestamp array. The cell honors it for backward compatibility
|
|
11710
|
+
* (see the divergence-check fallback inside `isBlackout`), but
|
|
11711
|
+
* consumers should migrate to `auro-datepicker.blackoutDates`
|
|
11712
|
+
* (YYYY-MM-DD ISO strings). The calendar emits a one-time
|
|
11713
|
+
* deprecation warning the first time a non-empty value is observed.
|
|
11714
|
+
*/
|
|
11607
11715
|
disabledDays: { type: Array },
|
|
11608
11716
|
isCurrentDate: { type: Boolean },
|
|
11609
11717
|
locale: { type: String },
|
|
@@ -11649,8 +11757,8 @@ class AuroCalendarCell extends LitElement {
|
|
|
11649
11757
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
11650
11758
|
|
|
11651
11759
|
if (day) {
|
|
11652
|
-
const departTimestamp =
|
|
11653
|
-
const returnTimestamp =
|
|
11760
|
+
const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11761
|
+
const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11654
11762
|
|
|
11655
11763
|
if (day.date === departTimestamp || day.date === returnTimestamp) {
|
|
11656
11764
|
this.selected = true;
|
|
@@ -11734,27 +11842,33 @@ class AuroCalendarCell extends LitElement {
|
|
|
11734
11842
|
return false;
|
|
11735
11843
|
}
|
|
11736
11844
|
|
|
11737
|
-
//
|
|
11738
|
-
|
|
11739
|
-
|
|
11740
|
-
|
|
11741
|
-
|
|
11742
|
-
|
|
11743
|
-
// Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
|
|
11744
|
-
const blackoutDates = this.datepicker?.blackoutDates;
|
|
11745
|
-
|
|
11746
|
-
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
11747
|
-
const date = new Date(this.day.date * 1000);
|
|
11748
|
-
const yyyy = date.getFullYear();
|
|
11749
|
-
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
11750
|
-
const dd = String(date.getDate()).padStart(2, '0');
|
|
11751
|
-
const cellDate = `${yyyy}-${mm}-${dd}`;
|
|
11752
|
-
if (blackoutDates.includes(cellDate)) {
|
|
11845
|
+
// Delegate to the calendar's memoized blackout Set for O(1) lookup
|
|
11846
|
+
// (instead of rescanning disabledDays + blackoutDates per render). The
|
|
11847
|
+
// Set is rebuilt only when either source array reference changes — see
|
|
11848
|
+
// auro-calendar.js#_getBlackoutSet.
|
|
11849
|
+
if (this.calendar && typeof this.calendar._getBlackoutSet === 'function') {
|
|
11850
|
+
if (this.calendar._getBlackoutSet().has(this.day.date)) {
|
|
11753
11851
|
return true;
|
|
11754
11852
|
}
|
|
11853
|
+
// If the cell's local disabledDays diverged from the calendar's (a
|
|
11854
|
+
// consumer or test mutated cell.disabledDays directly), the Set does
|
|
11855
|
+
// not reflect that addition — fall through to the per-cell scan only
|
|
11856
|
+
// when the reference no longer matches. Production data flow keeps
|
|
11857
|
+
// these identical, so this branch stays cold. Guarded with
|
|
11858
|
+
// Array.isArray to match `_getBlackoutSet`'s contract: non-array
|
|
11859
|
+
// values are treated as empty rather than crashing on `.findIndex`.
|
|
11860
|
+
if (Array.isArray(this.disabledDays) && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
|
|
11861
|
+
if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
|
|
11862
|
+
return true;
|
|
11863
|
+
}
|
|
11864
|
+
}
|
|
11865
|
+
return false;
|
|
11755
11866
|
}
|
|
11756
11867
|
|
|
11757
|
-
|
|
11868
|
+
// Pre-firstUpdated fallback — the cell may render once before the
|
|
11869
|
+
// ancestor calendar is wired up. Routes through the shared
|
|
11870
|
+
// blackoutUtils helper so the parsing rules stay in one place.
|
|
11871
|
+
return isBlackoutTimestamp(this.day.date, this.disabledDays, this.datepicker?.blackoutDates);
|
|
11758
11872
|
}
|
|
11759
11873
|
|
|
11760
11874
|
/**
|
|
@@ -11860,12 +11974,12 @@ class AuroCalendarCell extends LitElement {
|
|
|
11860
11974
|
const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
|
|
11861
11975
|
if (!Number.isFinite(parsedDateFrom)) return null;
|
|
11862
11976
|
|
|
11863
|
-
const departTimestamp =
|
|
11977
|
+
const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11864
11978
|
const dayDate = this.day.date;
|
|
11865
11979
|
|
|
11866
11980
|
const parsedDateTo = Number.parseInt(this.dateTo, 10);
|
|
11867
11981
|
const hasDateTo = Number.isFinite(parsedDateTo);
|
|
11868
|
-
const returnTimestamp = hasDateTo ?
|
|
11982
|
+
const returnTimestamp = hasDateTo ? new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
|
|
11869
11983
|
|
|
11870
11984
|
if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
|
|
11871
11985
|
|
|
@@ -11875,7 +11989,9 @@ class AuroCalendarCell extends LitElement {
|
|
|
11875
11989
|
|
|
11876
11990
|
if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
|
|
11877
11991
|
|
|
11878
|
-
|
|
11992
|
+
if (!hasDateTo && dayDate > departTimestamp) return this.datepicker.rangeLabelEndPreview || 'previewing range end';
|
|
11993
|
+
|
|
11994
|
+
// After end date when both dateFrom and dateTo are set.
|
|
11879
11995
|
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
11880
11996
|
}
|
|
11881
11997
|
|
|
@@ -11888,7 +12004,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
11888
12004
|
*/
|
|
11889
12005
|
isDepartDate(day, dateFrom) {
|
|
11890
12006
|
const parsedDateFrom = parseInt(dateFrom, 10);
|
|
11891
|
-
const departTimestamp =
|
|
12007
|
+
const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11892
12008
|
|
|
11893
12009
|
return this.selected && day.date === departTimestamp;
|
|
11894
12010
|
}
|
|
@@ -11903,7 +12019,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
11903
12019
|
*/
|
|
11904
12020
|
isReturnDate(day, dateFrom, dateTo) {
|
|
11905
12021
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
11906
|
-
const returnTimestamp =
|
|
12022
|
+
const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
11907
12023
|
|
|
11908
12024
|
return this.selected && day.date === returnTimestamp && dateFrom;
|
|
11909
12025
|
}
|
|
@@ -12067,6 +12183,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
12067
12183
|
setTimeout(() => this.firstUpdated(), 0);
|
|
12068
12184
|
return;
|
|
12069
12185
|
}
|
|
12186
|
+
this.calendar = calendar;
|
|
12070
12187
|
this.datepicker = calendar.datepicker;
|
|
12071
12188
|
this._slotContentHandler = () => {
|
|
12072
12189
|
this.handleSlotContent();
|
|
@@ -12124,15 +12241,28 @@ class AuroCalendarCell extends LitElement {
|
|
|
12124
12241
|
this._cachedButton = this.shadowRoot.querySelector('button.day');
|
|
12125
12242
|
});
|
|
12126
12243
|
|
|
12127
|
-
//
|
|
12244
|
+
// Keep the host's gridcell aria attributes in sync with the day data.
|
|
12128
12245
|
this.updateHostAria();
|
|
12129
12246
|
}
|
|
12130
12247
|
|
|
12131
12248
|
// Update host aria when selection changes (aria-selected, range labels)
|
|
12132
|
-
|
|
12249
|
+
// or when isCurrentDate flips (aria-current).
|
|
12250
|
+
if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
|
|
12133
12251
|
this.updateHostAria();
|
|
12134
12252
|
}
|
|
12135
12253
|
|
|
12254
|
+
// When the rendered range shifts (month nav, min/max change), a cell
|
|
12255
|
+
// host may be re-rendered for a new date that is now out-of-range —
|
|
12256
|
+
// but its imperatively-set `active` flag and `activeCell` ring class
|
|
12257
|
+
// from the previous date persist because setActiveCell only iterates
|
|
12258
|
+
// focusable (in-range) cells when clearing the prior active state.
|
|
12259
|
+
// Drop the active state here so the disabled cell isn't left visually
|
|
12260
|
+
// ringed.
|
|
12261
|
+
if ((properties.has('day') || properties.has('min') || properties.has('max')) &&
|
|
12262
|
+
this.active && this.isOutOfRange(this.day, this.min, this.max)) {
|
|
12263
|
+
this.clearActive();
|
|
12264
|
+
}
|
|
12265
|
+
|
|
12136
12266
|
// Configure popover when it first becomes rendered
|
|
12137
12267
|
if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
|
|
12138
12268
|
this.updateComplete.then(() => this.configurePopover());
|
|
@@ -12140,8 +12270,8 @@ class AuroCalendarCell extends LitElement {
|
|
|
12140
12270
|
}
|
|
12141
12271
|
|
|
12142
12272
|
/**
|
|
12143
|
-
*
|
|
12144
|
-
*
|
|
12273
|
+
* Sets host-level ARIA so each cell exposes its date, selection state,
|
|
12274
|
+
* and blackout status to assistive tech browsing the month grid.
|
|
12145
12275
|
* @private
|
|
12146
12276
|
* @returns {void}
|
|
12147
12277
|
*/
|
|
@@ -12150,16 +12280,27 @@ class AuroCalendarCell extends LitElement {
|
|
|
12150
12280
|
|
|
12151
12281
|
const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
|
|
12152
12282
|
if (outOfRange) {
|
|
12283
|
+
// Strip every aria attribute the in-range branch may have set on a
|
|
12284
|
+
// previous render — if a cell flips from in-range to out-of-range
|
|
12285
|
+
// (calendar shifts months, minDate/maxDate change, etc.).
|
|
12153
12286
|
this.removeAttribute('role');
|
|
12154
12287
|
this.removeAttribute('aria-label');
|
|
12288
|
+
this.removeAttribute('aria-current');
|
|
12289
|
+
this.removeAttribute('aria-selected');
|
|
12290
|
+
this.removeAttribute('aria-disabled');
|
|
12155
12291
|
return;
|
|
12156
12292
|
}
|
|
12157
12293
|
|
|
12158
|
-
// The host acts as the gridcell for ariaActiveDescendantElement.
|
|
12159
12294
|
this.setAttribute('role', 'gridcell');
|
|
12160
12295
|
this.setAttribute('aria-label', this.getAriaLabel());
|
|
12161
12296
|
this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
|
|
12162
12297
|
|
|
12298
|
+
if (this.isCurrentDate) {
|
|
12299
|
+
this.setAttribute('aria-current', 'date');
|
|
12300
|
+
} else {
|
|
12301
|
+
this.removeAttribute('aria-current');
|
|
12302
|
+
}
|
|
12303
|
+
|
|
12163
12304
|
if (this.isBlackout()) {
|
|
12164
12305
|
this.setAttribute('aria-disabled', 'true');
|
|
12165
12306
|
} else {
|
|
@@ -12174,7 +12315,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
12174
12315
|
* @returns {void}
|
|
12175
12316
|
*/
|
|
12176
12317
|
focusButton() {
|
|
12177
|
-
const button = this._cachedButton || this.shadowRoot.querySelector('button:not([
|
|
12318
|
+
const button = this._cachedButton || this.shadowRoot.querySelector('button:not([disabled])');
|
|
12178
12319
|
if (button) {
|
|
12179
12320
|
button.focus({ focusVisible: true });
|
|
12180
12321
|
}
|
|
@@ -12182,10 +12323,22 @@ class AuroCalendarCell extends LitElement {
|
|
|
12182
12323
|
|
|
12183
12324
|
/**
|
|
12184
12325
|
* Imperatively marks this cell as active without triggering a Lit re-render.
|
|
12185
|
-
*
|
|
12326
|
+
* Buttons stay tabindex="-1" because DOM focus stays on the grid wrapper —
|
|
12327
|
+
* arrow keys move the active cell imperatively and the live region carries
|
|
12328
|
+
* the SR announcement.
|
|
12329
|
+
*
|
|
12330
|
+
* Refuses to activate out-of-range cells: those are aria-hidden, have no
|
|
12331
|
+
* click/focus handlers, and are filtered out of `getFocusableCells`. The
|
|
12332
|
+
* active class showing on a disabled cell would be visually misleading,
|
|
12333
|
+
* so this guard is the single source of truth across every code path
|
|
12334
|
+
* that might call setActive (keyboard nav, focus restore, cell click).
|
|
12186
12335
|
* @returns {void}
|
|
12187
12336
|
*/
|
|
12188
12337
|
setActive() {
|
|
12338
|
+
if (this.isOutOfRange(this.day, this.min, this.max)) {
|
|
12339
|
+
return;
|
|
12340
|
+
}
|
|
12341
|
+
|
|
12189
12342
|
this.active = true;
|
|
12190
12343
|
|
|
12191
12344
|
// Show the popover when this cell becomes active via keyboard navigation.
|
|
@@ -12224,10 +12377,13 @@ class AuroCalendarCell extends LitElement {
|
|
|
12224
12377
|
if (!btn || !this.day) return;
|
|
12225
12378
|
|
|
12226
12379
|
const dayDate = this.day.date;
|
|
12227
|
-
const departTimestamp =
|
|
12380
|
+
const departTimestamp = new Date(dateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
12228
12381
|
const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
|
|
12229
|
-
|
|
12230
|
-
|
|
12382
|
+
// `>=` so hovering the depart cell itself (a same-day round-trip
|
|
12383
|
+
// preview) still surfaces a visual cue: the depart cell receives both
|
|
12384
|
+
// rangeDepartDate and lastHoveredDate.
|
|
12385
|
+
const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
|
|
12386
|
+
const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
|
|
12231
12387
|
|
|
12232
12388
|
btn.classList.toggle('inRange', isInRange);
|
|
12233
12389
|
btn.classList.toggle('lastHoveredDate', isLastHovered);
|
|
@@ -12285,7 +12441,6 @@ class AuroCalendarCell extends LitElement {
|
|
|
12285
12441
|
@focus="${outOfRange ? undefined : this.handleFocus}"
|
|
12286
12442
|
class="${classMap(buttonClasses)}"
|
|
12287
12443
|
?disabled="${outOfRange}"
|
|
12288
|
-
aria-hidden="${outOfRange ? 'true' : nothing}"
|
|
12289
12444
|
tabindex="-1">
|
|
12290
12445
|
<div class="buttonWrapper" aria-hidden="true">
|
|
12291
12446
|
<div class="currentDayMarker">${this.day?.title || nothing}</div>
|
|
@@ -12996,7 +13151,7 @@ class CalendarUtilities {
|
|
|
12996
13151
|
|
|
12997
13152
|
var colorCss$4 = css`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
|
|
12998
13153
|
|
|
12999
|
-
var styleCss$4 = css`#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
|
|
13154
|
+
var styleCss$4 = css`#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)}`;
|
|
13000
13155
|
|
|
13001
13156
|
var tokenCss = css`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
|
|
13002
13157
|
|
|
@@ -13391,7 +13546,7 @@ class AuroBibtemplate extends LitElement {
|
|
|
13391
13546
|
}
|
|
13392
13547
|
}
|
|
13393
13548
|
|
|
13394
|
-
var formkitVersion$2 = '
|
|
13549
|
+
var formkitVersion$2 = '202607010100';
|
|
13395
13550
|
|
|
13396
13551
|
let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=literal`${unsafeStatic(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1=css`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
|
|
13397
13552
|
`,u$4=css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
|
|
@@ -13496,6 +13651,15 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13496
13651
|
*/
|
|
13497
13652
|
this.activeCellDate = null;
|
|
13498
13653
|
|
|
13654
|
+
/**
|
|
13655
|
+
* Cached reference to the active cell host. Set by setActiveCell and
|
|
13656
|
+
* refreshed by scrollToActiveCell when its cache check misses (stale
|
|
13657
|
+
* or missing). Lets scrollToActiveCell skip a full cell scan on each
|
|
13658
|
+
* arrow key.
|
|
13659
|
+
* @private
|
|
13660
|
+
*/
|
|
13661
|
+
this._activeCell = null;
|
|
13662
|
+
|
|
13499
13663
|
/**
|
|
13500
13664
|
* Whether the #calendarGrid wrapper currently has focus.
|
|
13501
13665
|
* Used to determine whether the visualFocus ring should be shown.
|
|
@@ -13514,7 +13678,11 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13514
13678
|
this.calendarRangeMonths = null;
|
|
13515
13679
|
|
|
13516
13680
|
/**
|
|
13517
|
-
*
|
|
13681
|
+
* @deprecated Use `auro-datepicker.blackoutDates` (an array of
|
|
13682
|
+
* `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
|
|
13683
|
+
* timestamps is still honored for backward compatibility but emits a
|
|
13684
|
+
* one-time `console.debug` the first time a non-empty value is observed.
|
|
13685
|
+
* Support will be removed in a future major release.
|
|
13518
13686
|
* @private
|
|
13519
13687
|
*/
|
|
13520
13688
|
this.disabledDays = [];
|
|
@@ -13771,17 +13939,44 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13771
13939
|
* @returns {void}
|
|
13772
13940
|
*/
|
|
13773
13941
|
updateActiveCellForVisibleMonth() {
|
|
13774
|
-
|
|
13775
|
-
|
|
13776
|
-
requestAnimationFrame(() => {
|
|
13777
|
-
requestAnimationFrame(() => {
|
|
13778
|
-
const newDate = this.computeActiveDate({ skipDateFrom: true });
|
|
13942
|
+
this._afterMonthRender(() => {
|
|
13943
|
+
const newDate = this.computeActiveDate({ skipDateFrom: true });
|
|
13779
13944
|
|
|
13780
|
-
|
|
13781
|
-
|
|
13782
|
-
|
|
13783
|
-
|
|
13784
|
-
|
|
13945
|
+
if (newDate !== null && newDate !== undefined) {
|
|
13946
|
+
this.activeCellDate = newDate;
|
|
13947
|
+
this.setActiveCell(this.activeCellDate);
|
|
13948
|
+
}
|
|
13949
|
+
});
|
|
13950
|
+
}
|
|
13951
|
+
|
|
13952
|
+
/**
|
|
13953
|
+
* Schedules `callback` two animation frames out, giving the child
|
|
13954
|
+
* `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
|
|
13955
|
+
* a full render-and-paint cycle to settle before the callback reads or
|
|
13956
|
+
* mutates DOM.
|
|
13957
|
+
*
|
|
13958
|
+
* Why two frames, not one:
|
|
13959
|
+
* 1. Lit batches property updates and renders in a microtask, so frame N
|
|
13960
|
+
* schedules the render but the new DOM may not be painted yet.
|
|
13961
|
+
* 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
|
|
13962
|
+
* which also lands a tick later. Reading buttons from frame N+1
|
|
13963
|
+
* (after both renders + cache refresh have flushed) reliably hits the
|
|
13964
|
+
* new month's cells.
|
|
13965
|
+
*
|
|
13966
|
+
* Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
|
|
13967
|
+
* and then needs to inspect the freshly-rendered cells (cross-month
|
|
13968
|
+
* keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
|
|
13969
|
+
* Do NOT collapse to a single rAF — it intermittently lands before
|
|
13970
|
+
* `_cachedButton` is refreshed, which silently breaks focus restoration
|
|
13971
|
+
* and `setActiveCell` lookups.
|
|
13972
|
+
* @private
|
|
13973
|
+
* @param {() => void} callback - Runs once after the month re-render and
|
|
13974
|
+
* the cells' button caches have refreshed.
|
|
13975
|
+
* @returns {void}
|
|
13976
|
+
*/
|
|
13977
|
+
_afterMonthRender(callback) {
|
|
13978
|
+
requestAnimationFrame(() => {
|
|
13979
|
+
requestAnimationFrame(callback);
|
|
13785
13980
|
});
|
|
13786
13981
|
}
|
|
13787
13982
|
|
|
@@ -13899,6 +14094,47 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13899
14094
|
return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
|
|
13900
14095
|
}
|
|
13901
14096
|
|
|
14097
|
+
/**
|
|
14098
|
+
* Picks the focusable cell whose date is closest to targetTs. Used as a
|
|
14099
|
+
* fallback after a month-boundary nav when the exact target date isn't
|
|
14100
|
+
* focusable — typically because the month re-render lagged or the date
|
|
14101
|
+
* was filtered out by isOutOfRange. When two cells are equidistant, the
|
|
14102
|
+
* navigation direction breaks the tie so the user moves the way they
|
|
14103
|
+
* pressed (forward → later cell, backward → earlier cell).
|
|
14104
|
+
* @private
|
|
14105
|
+
* @param {Array} cells - Focusable cells from getAllFocusableCells.
|
|
14106
|
+
* @param {Number} targetTs - Desired Unix timestamp (seconds).
|
|
14107
|
+
* @param {'next'|'prev'} direction - Navigation direction.
|
|
14108
|
+
* @returns {Object|null} The nearest cell, or null when cells is empty.
|
|
14109
|
+
*/
|
|
14110
|
+
pickNearestCell(cells, targetTs, direction) {
|
|
14111
|
+
if (!cells.length) {
|
|
14112
|
+
return null;
|
|
14113
|
+
}
|
|
14114
|
+
const forward = direction === 'next';
|
|
14115
|
+
let best = null;
|
|
14116
|
+
let bestDelta = Infinity;
|
|
14117
|
+
cells.forEach((cell) => {
|
|
14118
|
+
if (!cell.day) {
|
|
14119
|
+
return;
|
|
14120
|
+
}
|
|
14121
|
+
const distance = Math.abs(cell.day.date - targetTs);
|
|
14122
|
+
if (distance < bestDelta) {
|
|
14123
|
+
best = cell;
|
|
14124
|
+
bestDelta = distance;
|
|
14125
|
+
return;
|
|
14126
|
+
}
|
|
14127
|
+
if (distance === bestDelta && best) {
|
|
14128
|
+
if (forward && cell.day.date > best.day.date) {
|
|
14129
|
+
best = cell;
|
|
14130
|
+
} else if (!forward && cell.day.date < best.day.date) {
|
|
14131
|
+
best = cell;
|
|
14132
|
+
}
|
|
14133
|
+
}
|
|
14134
|
+
});
|
|
14135
|
+
return best;
|
|
14136
|
+
}
|
|
14137
|
+
|
|
13902
14138
|
/**
|
|
13903
14139
|
* Gets all focusable cells across all rendered months.
|
|
13904
14140
|
* @private
|
|
@@ -13915,9 +14151,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13915
14151
|
|
|
13916
14152
|
/**
|
|
13917
14153
|
* Sets the active cell across all months. Only one cell has tabindex="0" at a time.
|
|
13918
|
-
* Uses imperative DOM manipulation — no Lit re-render triggered.
|
|
13919
|
-
*
|
|
13920
|
-
*
|
|
14154
|
+
* Uses imperative DOM manipulation — no Lit re-render triggered. DOM focus
|
|
14155
|
+
* stays on the grid wrapper; the live region (see getOrCreateLiveRegion)
|
|
14156
|
+
* is what announces the active cell to assistive tech.
|
|
13921
14157
|
* @param {Number} date - Unix timestamp of the cell to activate.
|
|
13922
14158
|
* @returns {void}
|
|
13923
14159
|
*/
|
|
@@ -13935,6 +14171,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13935
14171
|
});
|
|
13936
14172
|
|
|
13937
14173
|
this.activeCellDate = date;
|
|
14174
|
+
// Cache so scrollToActiveCell can scroll without re-querying all cells
|
|
14175
|
+
// on every arrow keypress.
|
|
14176
|
+
this._activeCell = newActiveCell;
|
|
13938
14177
|
|
|
13939
14178
|
// Apply activeCell ring only when the grid currently has focus.
|
|
13940
14179
|
if (newActiveCell && this._gridHasFocus) {
|
|
@@ -13966,10 +14205,23 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13966
14205
|
/**
|
|
13967
14206
|
* Shows the activeCell ring when the grid gains focus.
|
|
13968
14207
|
* @private
|
|
14208
|
+
* @param {FocusEvent} [event] - The focusin event.
|
|
13969
14209
|
* @returns {void}
|
|
13970
14210
|
*/
|
|
13971
|
-
handleGridFocusIn() {
|
|
14211
|
+
handleGridFocusIn(event) {
|
|
13972
14212
|
this._gridHasFocus = true;
|
|
14213
|
+
|
|
14214
|
+
// Only apply the activeCell ring when the grid wrapper itself receives focus
|
|
14215
|
+
// (Tab/programmatic). When focus moves into a cell button via mousedown,
|
|
14216
|
+
// event.target is the cell descendant — skip the ring here. The subsequent
|
|
14217
|
+
// click handler calls setActiveCell on the clicked cell, which applies the
|
|
14218
|
+
// ring there. Without this guard, mousedown briefly flashes the ring on the
|
|
14219
|
+
// previously-active cell (e.g. the 1st-of-month set by month navigation
|
|
14220
|
+
// when the grid was not focused).
|
|
14221
|
+
if (event && event.target !== event.currentTarget) {
|
|
14222
|
+
return;
|
|
14223
|
+
}
|
|
14224
|
+
|
|
13973
14225
|
const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
|
|
13974
14226
|
if (activeCell) {
|
|
13975
14227
|
const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
|
|
@@ -13998,6 +14250,65 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13998
14250
|
this.clearRangePreview();
|
|
13999
14251
|
}
|
|
14000
14252
|
|
|
14253
|
+
/**
|
|
14254
|
+
* Returns a memoized Set of blackout timestamps (seconds) drawn from both
|
|
14255
|
+
* the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
|
|
14256
|
+
* The cache invalidates when either source array's reference changes, which
|
|
14257
|
+
* matches Lit's own reactive identity semantics for array properties.
|
|
14258
|
+
* @private
|
|
14259
|
+
* @returns {Set<Number>}
|
|
14260
|
+
*/
|
|
14261
|
+
_getBlackoutSet() {
|
|
14262
|
+
// Normalize non-array values to a stable `null` sentinel rather than a
|
|
14263
|
+
// fresh `[]` per call — otherwise the reference-identity cache key
|
|
14264
|
+
// (`_cachedBlackoutDisabledDays === disabledDays`) never matches on
|
|
14265
|
+
// subsequent calls and the Set rebuilds every time. `buildBlackoutSet`
|
|
14266
|
+
// already treats null/non-array as "no legacy disabledDays" via its
|
|
14267
|
+
// own Array.isArray gate.
|
|
14268
|
+
const disabledDays = Array.isArray(this.disabledDays) ? this.disabledDays : null;
|
|
14269
|
+
const blackoutDates = this.datepicker?.blackoutDates;
|
|
14270
|
+
if (this._blackoutSet &&
|
|
14271
|
+
this._cachedBlackoutDisabledDays === disabledDays &&
|
|
14272
|
+
this._cachedBlackoutDates === blackoutDates) {
|
|
14273
|
+
return this._blackoutSet;
|
|
14274
|
+
}
|
|
14275
|
+
|
|
14276
|
+
if (disabledDays && disabledDays.length > 0) {
|
|
14277
|
+
this._warnDisabledDaysDeprecated();
|
|
14278
|
+
}
|
|
14279
|
+
|
|
14280
|
+
this._blackoutSet = buildBlackoutSet(disabledDays, blackoutDates);
|
|
14281
|
+
this._cachedBlackoutDisabledDays = disabledDays;
|
|
14282
|
+
this._cachedBlackoutDates = blackoutDates;
|
|
14283
|
+
return this._blackoutSet;
|
|
14284
|
+
}
|
|
14285
|
+
|
|
14286
|
+
/**
|
|
14287
|
+
* Per-class flag that gates the `disabledDays` deprecation warning so it
|
|
14288
|
+
* fires exactly once per page no matter how many calendars or rebuild
|
|
14289
|
+
* cycles encounter the legacy array.
|
|
14290
|
+
* @private
|
|
14291
|
+
*/
|
|
14292
|
+
static _warnedDisabledDaysDeprecation = false;
|
|
14293
|
+
|
|
14294
|
+
/**
|
|
14295
|
+
* One-time `console.debug` directing consumers from the legacy
|
|
14296
|
+
* `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
|
|
14297
|
+
* the first time `_getBlackoutSet` rebuilds from a non-empty
|
|
14298
|
+
* `disabledDays`; subsequent calls (on this or any other AuroCalendar
|
|
14299
|
+
* instance on the page) are silent.
|
|
14300
|
+
* @private
|
|
14301
|
+
* @returns {void}
|
|
14302
|
+
*/
|
|
14303
|
+
_warnDisabledDaysDeprecated() {
|
|
14304
|
+
if (AuroCalendar._warnedDisabledDaysDeprecation) {
|
|
14305
|
+
return;
|
|
14306
|
+
}
|
|
14307
|
+
AuroCalendar._warnedDisabledDaysDeprecation = true;
|
|
14308
|
+
// eslint-disable-next-line no-console
|
|
14309
|
+
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.');
|
|
14310
|
+
}
|
|
14311
|
+
|
|
14001
14312
|
/**
|
|
14002
14313
|
* Computes the initial active date from data properties alone — no DOM required.
|
|
14003
14314
|
* Priority:
|
|
@@ -14042,21 +14353,10 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14042
14353
|
const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
|
|
14043
14354
|
const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
|
|
14044
14355
|
|
|
14045
|
-
// Build a Set of blackout timestamps for O(1) lookup.
|
|
14046
|
-
|
|
14047
|
-
|
|
14048
|
-
|
|
14049
|
-
// Parse YYYY-MM-DD as local date to avoid UTC shift issues.
|
|
14050
|
-
const isoBlackouts = this.datepicker?.blackoutDates;
|
|
14051
|
-
if (Array.isArray(isoBlackouts)) {
|
|
14052
|
-
for (const isoStr of isoBlackouts) {
|
|
14053
|
-
const parts = isoStr.split('-');
|
|
14054
|
-
const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
|
|
14055
|
-
if (Number.isFinite(ts)) {
|
|
14056
|
-
blackoutSet.add(ts);
|
|
14057
|
-
}
|
|
14058
|
-
}
|
|
14059
|
-
}
|
|
14356
|
+
// Build a Set of blackout timestamps for O(1) lookup. Memoized by the
|
|
14357
|
+
// identity of the source arrays so rapid month nav doesn't rebuild the
|
|
14358
|
+
// Set (and re-parse every ISO string) on every keypress.
|
|
14359
|
+
const blackoutSet = this._getBlackoutSet();
|
|
14060
14360
|
|
|
14061
14361
|
/**
|
|
14062
14362
|
* A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
|
|
@@ -14252,8 +14552,8 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14252
14552
|
|
|
14253
14553
|
/**
|
|
14254
14554
|
* Handles arrow key navigation on the calendar grid wrapper.
|
|
14255
|
-
* Focus stays on the grid wrapper; only
|
|
14256
|
-
*
|
|
14555
|
+
* Focus stays on the grid wrapper; only the visual active-cell indicator
|
|
14556
|
+
* changes. The live region announces the new active cell.
|
|
14257
14557
|
* @private
|
|
14258
14558
|
* @param {KeyboardEvent} event - The keyboard event.
|
|
14259
14559
|
* @returns {void}
|
|
@@ -14318,21 +14618,24 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14318
14618
|
} else {
|
|
14319
14619
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14320
14620
|
}
|
|
14321
|
-
|
|
14322
|
-
|
|
14323
|
-
|
|
14324
|
-
|
|
14325
|
-
|
|
14326
|
-
|
|
14327
|
-
|
|
14328
|
-
|
|
14329
|
-
|
|
14621
|
+
this._afterMonthRender(() => {
|
|
14622
|
+
const cells = this.getAllFocusableCells();
|
|
14623
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
|
|
14624
|
+
if (target) {
|
|
14625
|
+
this.setActiveCell(target.day.date);
|
|
14626
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
14627
|
+
} else {
|
|
14628
|
+
const fallback = this.pickNearestCell(cells, targetTs, navDir);
|
|
14629
|
+
if (fallback) {
|
|
14330
14630
|
this.setActiveCell(fallback.day.date);
|
|
14331
14631
|
this.handleCellFocused({ detail: { date: fallback.day.date } });
|
|
14332
14632
|
}
|
|
14333
|
-
|
|
14334
|
-
|
|
14335
|
-
|
|
14633
|
+
}
|
|
14634
|
+
// Scroll AFTER the cross-month setActiveCell so the freshly
|
|
14635
|
+
// activated cell is what gets scrolled into view.
|
|
14636
|
+
this.scrollToActiveCell();
|
|
14637
|
+
// Re-focus grid wrapper after month change re-render
|
|
14638
|
+
this.focusActiveCell();
|
|
14336
14639
|
});
|
|
14337
14640
|
}
|
|
14338
14641
|
}
|
|
@@ -14358,26 +14661,23 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14358
14661
|
} else {
|
|
14359
14662
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14360
14663
|
}
|
|
14361
|
-
|
|
14362
|
-
|
|
14363
|
-
|
|
14364
|
-
|
|
14365
|
-
|
|
14366
|
-
|
|
14367
|
-
|
|
14368
|
-
|
|
14369
|
-
|
|
14370
|
-
|
|
14371
|
-
if (navDirection === 'next') {
|
|
14372
|
-
[nearest] = cells;
|
|
14373
|
-
} else {
|
|
14374
|
-
nearest = cells[cells.length - 1];
|
|
14375
|
-
}
|
|
14664
|
+
this._afterMonthRender(() => {
|
|
14665
|
+
const cells = this.getAllFocusableCells();
|
|
14666
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14667
|
+
if (target) {
|
|
14668
|
+
this.setActiveCell(target.day.date);
|
|
14669
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
14670
|
+
} else {
|
|
14671
|
+
const nearest = this.pickNearestCell(cells, targetDate, navDirection);
|
|
14672
|
+
if (nearest) {
|
|
14376
14673
|
this.setActiveCell(nearest.day.date);
|
|
14377
14674
|
this.handleCellFocused({ detail: { date: nearest.day.date } });
|
|
14378
14675
|
}
|
|
14379
|
-
|
|
14380
|
-
|
|
14676
|
+
}
|
|
14677
|
+
// Scroll AFTER the cross-month setActiveCell so the freshly
|
|
14678
|
+
// activated cell is what gets scrolled into view.
|
|
14679
|
+
this.scrollToActiveCell();
|
|
14680
|
+
this.focusActiveCell();
|
|
14381
14681
|
});
|
|
14382
14682
|
}
|
|
14383
14683
|
}
|
|
@@ -14411,6 +14711,8 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14411
14711
|
const targetCell = allCells[targetIndex];
|
|
14412
14712
|
this.setActiveCell(targetCell.day.date);
|
|
14413
14713
|
this.scrollToActiveCell();
|
|
14714
|
+
// Match the cross-month branches: keep DOM focus on the grid wrapper
|
|
14715
|
+
// so subsequent arrow keys continue to land on this handler.
|
|
14414
14716
|
this.focusActiveCell();
|
|
14415
14717
|
} else if (direction === 'next' && this.showNextMonthBtn) {
|
|
14416
14718
|
// Navigate to next month and focus the computed next date.
|
|
@@ -14427,19 +14729,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14427
14729
|
}
|
|
14428
14730
|
|
|
14429
14731
|
this.handleNextMonth({ skipActiveUpdate: true });
|
|
14430
|
-
|
|
14431
|
-
|
|
14432
|
-
|
|
14433
|
-
|
|
14434
|
-
|
|
14435
|
-
|
|
14436
|
-
|
|
14437
|
-
|
|
14438
|
-
|
|
14439
|
-
|
|
14440
|
-
|
|
14732
|
+
this._afterMonthRender(() => {
|
|
14733
|
+
const cells = this.getAllFocusableCells();
|
|
14734
|
+
const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
|
|
14735
|
+
if (target) {
|
|
14736
|
+
this.setActiveCell(target.day.date);
|
|
14737
|
+
} else {
|
|
14738
|
+
// Same nearest-by-date fallback handleGridKeyDown uses — direct
|
|
14739
|
+
// `cells[length - 1]` would land on the end of the new month,
|
|
14740
|
+
// far from the user's intended `nextTs`.
|
|
14741
|
+
const fallback = this.pickNearestCell(cells, nextTs, 'next');
|
|
14742
|
+
if (fallback) {
|
|
14743
|
+
this.setActiveCell(fallback.day.date);
|
|
14441
14744
|
}
|
|
14442
|
-
}
|
|
14745
|
+
}
|
|
14746
|
+
this.scrollToActiveCell();
|
|
14747
|
+
this.focusActiveCell();
|
|
14443
14748
|
});
|
|
14444
14749
|
} else if (direction === 'prev' && this.showPrevMonthBtn) {
|
|
14445
14750
|
// Navigate to previous month and focus the computed previous date.
|
|
@@ -14453,19 +14758,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14453
14758
|
}
|
|
14454
14759
|
|
|
14455
14760
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14456
|
-
|
|
14457
|
-
|
|
14458
|
-
|
|
14459
|
-
|
|
14460
|
-
|
|
14461
|
-
|
|
14462
|
-
|
|
14463
|
-
|
|
14464
|
-
|
|
14465
|
-
|
|
14466
|
-
|
|
14761
|
+
this._afterMonthRender(() => {
|
|
14762
|
+
const cells = this.getAllFocusableCells();
|
|
14763
|
+
const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
|
|
14764
|
+
if (target) {
|
|
14765
|
+
this.setActiveCell(target.day.date);
|
|
14766
|
+
} else {
|
|
14767
|
+
// Same nearest-by-date fallback handleGridKeyDown uses — direct
|
|
14768
|
+
// `cells[0]` would land on the start of the previous month, far
|
|
14769
|
+
// from the user's intended `prevTs`.
|
|
14770
|
+
const fallback = this.pickNearestCell(cells, prevTs, 'prev');
|
|
14771
|
+
if (fallback) {
|
|
14772
|
+
this.setActiveCell(fallback.day.date);
|
|
14467
14773
|
}
|
|
14468
|
-
}
|
|
14774
|
+
}
|
|
14775
|
+
this.scrollToActiveCell();
|
|
14776
|
+
this.focusActiveCell();
|
|
14469
14777
|
});
|
|
14470
14778
|
}
|
|
14471
14779
|
} else if (key === 'ArrowDown' || key === 'ArrowUp') {
|
|
@@ -14493,20 +14801,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14493
14801
|
} else {
|
|
14494
14802
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14495
14803
|
}
|
|
14496
|
-
|
|
14497
|
-
|
|
14498
|
-
|
|
14499
|
-
|
|
14500
|
-
|
|
14501
|
-
|
|
14502
|
-
|
|
14503
|
-
|
|
14504
|
-
|
|
14505
|
-
|
|
14804
|
+
this._afterMonthRender(() => {
|
|
14805
|
+
const cells = this.getAllFocusableCells();
|
|
14806
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14807
|
+
if (target) {
|
|
14808
|
+
this.setActiveCell(target.day.date);
|
|
14809
|
+
} else {
|
|
14810
|
+
// Same nearest-by-date fallback handleGridKeyDown uses — the
|
|
14811
|
+
// old direction-based `cells[0]`/`cells[length-1]` clamp
|
|
14812
|
+
// could land 25+ days from the intended target.
|
|
14813
|
+
const nearest = this.pickNearestCell(cells, targetDate, navDirection);
|
|
14814
|
+
if (nearest) {
|
|
14506
14815
|
this.setActiveCell(nearest.day.date);
|
|
14507
|
-
this.focusActiveCell();
|
|
14508
14816
|
}
|
|
14509
|
-
}
|
|
14817
|
+
}
|
|
14818
|
+
this.scrollToActiveCell();
|
|
14819
|
+
this.focusActiveCell();
|
|
14510
14820
|
});
|
|
14511
14821
|
}
|
|
14512
14822
|
}
|
|
@@ -14545,8 +14855,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14545
14855
|
return;
|
|
14546
14856
|
}
|
|
14547
14857
|
|
|
14548
|
-
//
|
|
14549
|
-
// so
|
|
14858
|
+
// DOM focus stays on the grid wrapper while arrow keys move the active
|
|
14859
|
+
// cell, so cell buttons never receive native focus. The debounced live
|
|
14860
|
+
// region carries the full-context announcement instead.
|
|
14550
14861
|
const announcement = this.buildFocusAnnouncement(date);
|
|
14551
14862
|
this.announceFocusDebounced(announcement);
|
|
14552
14863
|
|
|
@@ -14616,10 +14927,10 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14616
14927
|
return null;
|
|
14617
14928
|
}
|
|
14618
14929
|
|
|
14619
|
-
const departTs =
|
|
14930
|
+
const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
14620
14931
|
const parsedTo = Number.parseInt(this.dateTo, 10);
|
|
14621
14932
|
const hasTo = Number.isFinite(parsedTo);
|
|
14622
|
-
const returnTs = hasTo ?
|
|
14933
|
+
const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
|
|
14623
14934
|
|
|
14624
14935
|
if (date === departTs) {
|
|
14625
14936
|
return this.datepicker.rangeLabelStart || 'range start';
|
|
@@ -14633,36 +14944,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14633
14944
|
if (hasTo && date > departTs && date < returnTs) {
|
|
14634
14945
|
return this.datepicker.rangeLabelInRange || 'in range';
|
|
14635
14946
|
}
|
|
14947
|
+
if (!hasTo && date > departTs) {
|
|
14948
|
+
return this.datepicker.rangeLabelEndPreview || 'previewing range end';
|
|
14949
|
+
}
|
|
14636
14950
|
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
14637
14951
|
}
|
|
14638
14952
|
|
|
14639
14953
|
/**
|
|
14640
|
-
* Checks whether a given date is a blackout date.
|
|
14954
|
+
* Checks whether a given date is a blackout date. Delegates to the
|
|
14955
|
+
* memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
|
|
14956
|
+
* legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
|
|
14641
14957
|
* @private
|
|
14642
14958
|
* @param {Number} dateTs - Unix timestamp (seconds).
|
|
14643
14959
|
* @returns {Boolean} True if the date is blacked out.
|
|
14644
14960
|
*/
|
|
14645
14961
|
isDateBlackout(dateTs) {
|
|
14646
|
-
|
|
14647
|
-
if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
|
|
14648
|
-
if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
|
|
14649
|
-
return true;
|
|
14650
|
-
}
|
|
14651
|
-
}
|
|
14652
|
-
|
|
14653
|
-
// Check ISO blackoutDates.
|
|
14654
|
-
const blackoutDates = this.datepicker?.blackoutDates;
|
|
14655
|
-
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
14656
|
-
const date = new Date(dateTs * 1000);
|
|
14657
|
-
const yyyy = date.getFullYear();
|
|
14658
|
-
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
14659
|
-
const dd = String(date.getDate()).padStart(2, '0');
|
|
14660
|
-
if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
|
|
14661
|
-
return true;
|
|
14662
|
-
}
|
|
14663
|
-
}
|
|
14664
|
-
|
|
14665
|
-
return false;
|
|
14962
|
+
return this._getBlackoutSet().has(dateTs);
|
|
14666
14963
|
}
|
|
14667
14964
|
|
|
14668
14965
|
/**
|
|
@@ -14720,7 +15017,28 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14720
15017
|
}
|
|
14721
15018
|
|
|
14722
15019
|
/**
|
|
14723
|
-
* Scrolls the calendar
|
|
15020
|
+
* Scrolls the calendar so the active cell is visible.
|
|
15021
|
+
*
|
|
15022
|
+
* Walks the flat tree (rendered, slot-aware) outward from the active
|
|
15023
|
+
* cell's button and calls `scrollBy` on every vertically-scrollable
|
|
15024
|
+
* ancestor by whatever delta still separates the cell from that
|
|
15025
|
+
* ancestor's viewport. Native `scrollIntoView` is not used because the
|
|
15026
|
+
* cell sits inside multiple nested scroll containers (the dropdown bib's
|
|
15027
|
+
* `<dialog>`, the bibtemplate's `#bodyContainer`) and the algorithm only
|
|
15028
|
+
* scrolls one of them on its own, leaving the cell short of the
|
|
15029
|
+
* viewport in mobile fullscreen.
|
|
15030
|
+
*
|
|
15031
|
+
* Uses `behavior: 'auto'` (the spec's universally-supported non-animated
|
|
15032
|
+
* value) so each `scrollBy` resolves synchronously and the next
|
|
15033
|
+
* iteration's `getBoundingClientRect` reads post-scroll positions
|
|
15034
|
+
* accurately. This also satisfies `prefers-reduced-motion` users — the
|
|
15035
|
+
* scroll containers do not set CSS `scroll-behavior: smooth`, so `auto`
|
|
15036
|
+
* is effectively instant.
|
|
15037
|
+
*
|
|
15038
|
+
* The active cell is looked up from the cache populated by
|
|
15039
|
+
* `setActiveCell`. On a cache miss (stale or absent) the cache is
|
|
15040
|
+
* refreshed from a single full scan so subsequent calls stay on the
|
|
15041
|
+
* fast path.
|
|
14724
15042
|
* @private
|
|
14725
15043
|
* @returns {void}
|
|
14726
15044
|
*/
|
|
@@ -14729,16 +15047,69 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14729
15047
|
return;
|
|
14730
15048
|
}
|
|
14731
15049
|
|
|
14732
|
-
|
|
14733
|
-
|
|
14734
|
-
|
|
14735
|
-
|
|
14736
|
-
|
|
15050
|
+
// Prefer the cell cached by setActiveCell so arrow-key navigation does
|
|
15051
|
+
// not rebuild the full cell list on every keypress. Fall back to a
|
|
15052
|
+
// lookup when the cache is stale (e.g. detached after month re-render)
|
|
15053
|
+
// or absent (scrollToActiveCell called without a prior setActiveCell);
|
|
15054
|
+
// refresh the cache on the fallback path so a subsequent call reuses it.
|
|
15055
|
+
const activeDate = this.activeCellDate;
|
|
15056
|
+
const cached = this._activeCell;
|
|
15057
|
+
const cacheFresh = cached && cached.isConnected && cached.day && cached.day.date === activeDate;
|
|
15058
|
+
let activeCell = null;
|
|
15059
|
+
if (cacheFresh) {
|
|
15060
|
+
activeCell = cached;
|
|
15061
|
+
} else {
|
|
15062
|
+
activeCell = this.getAllFocusableCells().find((cell) => cell.day && cell.day.date === activeDate);
|
|
15063
|
+
this._activeCell = activeCell || null;
|
|
15064
|
+
}
|
|
15065
|
+
if (!activeCell) {
|
|
15066
|
+
return;
|
|
15067
|
+
}
|
|
15068
|
+
|
|
15069
|
+
// Scroll the button inside the cell — it has concrete dimensions,
|
|
15070
|
+
// which avoids quirks when the cell host has display: inline / contents
|
|
15071
|
+
// / flex-without-explicit-size.
|
|
15072
|
+
const target = activeCell._cachedButton ||
|
|
15073
|
+
activeCell.shadowRoot?.querySelector('button.day') ||
|
|
15074
|
+
activeCell;
|
|
14737
15075
|
|
|
14738
|
-
|
|
14739
|
-
|
|
14740
|
-
|
|
14741
|
-
|
|
15076
|
+
// parentNode follows the authored DOM tree and steps over shadow roots
|
|
15077
|
+
// via slot projection. A slotted element's visual parent is its
|
|
15078
|
+
// assignedSlot's parent (inside the host's shadow tree), not the host
|
|
15079
|
+
// itself. Without this hop, the walk skips right past #bodyContainer
|
|
15080
|
+
// and <dialog> and finds no scrollable ancestor at all.
|
|
15081
|
+
const flatParent = (current) => {
|
|
15082
|
+
if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
|
|
15083
|
+
return current.host || null;
|
|
15084
|
+
}
|
|
15085
|
+
if (current.assignedSlot) {
|
|
15086
|
+
return current.assignedSlot.parentNode;
|
|
15087
|
+
}
|
|
15088
|
+
return current.parentNode;
|
|
15089
|
+
};
|
|
15090
|
+
|
|
15091
|
+
let node = flatParent(target);
|
|
15092
|
+
while (node && node !== document && node !== window) {
|
|
15093
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
15094
|
+
const { overflowY } = window.getComputedStyle(node);
|
|
15095
|
+
if (overflowY === 'auto' || overflowY === 'scroll') {
|
|
15096
|
+
const targetRect = target.getBoundingClientRect();
|
|
15097
|
+
const scrollerRect = node.getBoundingClientRect();
|
|
15098
|
+
let delta = 0;
|
|
15099
|
+
if (targetRect.top < scrollerRect.top) {
|
|
15100
|
+
delta = targetRect.top - scrollerRect.top;
|
|
15101
|
+
} else if (targetRect.bottom > scrollerRect.bottom) {
|
|
15102
|
+
delta = targetRect.bottom - scrollerRect.bottom;
|
|
15103
|
+
}
|
|
15104
|
+
if (delta !== 0) {
|
|
15105
|
+
node.scrollBy({
|
|
15106
|
+
top: delta,
|
|
15107
|
+
behavior: 'auto'
|
|
15108
|
+
});
|
|
15109
|
+
}
|
|
15110
|
+
}
|
|
15111
|
+
}
|
|
15112
|
+
node = flatParent(node);
|
|
14742
15113
|
}
|
|
14743
15114
|
}
|
|
14744
15115
|
|
|
@@ -14829,9 +15200,34 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14829
15200
|
// the last one.
|
|
14830
15201
|
if (this._announceRafId) {
|
|
14831
15202
|
cancelAnimationFrame(this._announceRafId);
|
|
15203
|
+
this._announceRafId = null;
|
|
14832
15204
|
}
|
|
15205
|
+
this._deliverAnnouncement(dateStr, 0);
|
|
15206
|
+
}
|
|
15207
|
+
|
|
15208
|
+
/**
|
|
15209
|
+
* Writes `dateStr` to the live region. If the dropdown's dialog hasn't
|
|
15210
|
+
* mounted yet (so getOrCreateLiveRegion can't attach), retries on the
|
|
15211
|
+
* next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
|
|
15212
|
+
* dropping the announcement. The retry uses the same `_announceRafId`
|
|
15213
|
+
* the double-rAF below uses, so a newer announceSelection call (or
|
|
15214
|
+
* disconnectedCallback) cancels any in-flight retry.
|
|
15215
|
+
* @private
|
|
15216
|
+
* @param {String} dateStr - The localized date string to announce.
|
|
15217
|
+
* @param {Number} attempts - Number of prior retry attempts.
|
|
15218
|
+
* @returns {void}
|
|
15219
|
+
*/
|
|
15220
|
+
_deliverAnnouncement(dateStr, attempts) {
|
|
14833
15221
|
const liveRegion = this.getOrCreateLiveRegion();
|
|
14834
15222
|
if (!liveRegion) {
|
|
15223
|
+
const MAX_LIVE_REGION_RETRIES = 10;
|
|
15224
|
+
if (attempts < MAX_LIVE_REGION_RETRIES) {
|
|
15225
|
+
this._announceRafId = requestAnimationFrame(() => {
|
|
15226
|
+
this._deliverAnnouncement(dateStr, attempts + 1);
|
|
15227
|
+
});
|
|
15228
|
+
} else {
|
|
15229
|
+
this._announceRafId = null;
|
|
15230
|
+
}
|
|
14835
15231
|
return;
|
|
14836
15232
|
}
|
|
14837
15233
|
|
|
@@ -15004,7 +15400,7 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
15004
15400
|
</div>
|
|
15005
15401
|
</div>
|
|
15006
15402
|
|
|
15007
|
-
<div class="calendarWrapper
|
|
15403
|
+
<div class="calendarWrapper">
|
|
15008
15404
|
<div class="calendarNavButtons">
|
|
15009
15405
|
${this.showPrevMonthBtn ? html$1`
|
|
15010
15406
|
<button tabIndex="0" class="calendarNavBtn prevMonth" aria-label="${this.datepicker?.navLabelPrevMonth || 'Previous month'}" @click="${this.handlePrevMonth}">
|
|
@@ -15017,7 +15413,7 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
15017
15413
|
</button>
|
|
15018
15414
|
` : undefined}
|
|
15019
15415
|
</div>
|
|
15020
|
-
<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}">
|
|
15416
|
+
<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}">
|
|
15021
15417
|
${this.renderAllCalendars()}
|
|
15022
15418
|
</div>
|
|
15023
15419
|
</div>
|
|
@@ -18902,7 +19298,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
|
|
|
18902
19298
|
}
|
|
18903
19299
|
};
|
|
18904
19300
|
|
|
18905
|
-
var formkitVersion$1 = '
|
|
19301
|
+
var formkitVersion$1 = '202607010100';
|
|
18906
19302
|
|
|
18907
19303
|
let AuroElement$2 = class AuroElement extends LitElement {
|
|
18908
19304
|
static get properties() {
|
|
@@ -19853,6 +20249,14 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
19853
20249
|
};
|
|
19854
20250
|
this.addEventListener('keydown', this._bibTabHandler);
|
|
19855
20251
|
|
|
20252
|
+
// Suppress AuroFloatingUI's auto-hide-on-focus-loss while the
|
|
20253
|
+
// desktopModal trap owns focus management. Without this, the very
|
|
20254
|
+
// first focus move into the bib (from the RAF below) triggers
|
|
20255
|
+
// handleFocusLoss → hideBib, tearing down the trap before the
|
|
20256
|
+
// user can press Tab.
|
|
20257
|
+
this._priorNoHideOnFocusLoss = this.noHideOnThisFocusLoss;
|
|
20258
|
+
this.noHideOnThisFocusLoss = true;
|
|
20259
|
+
|
|
19856
20260
|
// Move initial focus into the bib content, matching FocusTrap behavior
|
|
19857
20261
|
requestAnimationFrame(() => {
|
|
19858
20262
|
const focusables = getFocusableElements(this.bibContent);
|
|
@@ -20166,6 +20570,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
20166
20570
|
role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
20167
20571
|
aria-expanded="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
20168
20572
|
aria-controls="${ifDefined(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
20573
|
+
aria-haspopup="${ifDefined(this.a11yRole === 'combobox' && !this.triggerContentFocusable ? 'listbox' : undefined)}"
|
|
20169
20574
|
aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
20170
20575
|
aria-disabled="${ifDefined(this.disabled ? 'true' : undefined)}"
|
|
20171
20576
|
@focusin="${this.handleFocusin}"
|
|
@@ -24668,15 +25073,17 @@ class AuroFormValidation {
|
|
|
24668
25073
|
);
|
|
24669
25074
|
}
|
|
24670
25075
|
|
|
24671
|
-
|
|
24672
|
-
|
|
24673
|
-
|
|
25076
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
25077
|
+
|
|
25078
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
25079
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
25080
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
25081
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
25082
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
24674
25083
|
hasValue = false;
|
|
24675
25084
|
}
|
|
24676
25085
|
}
|
|
24677
25086
|
|
|
24678
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
24679
|
-
|
|
24680
25087
|
if (isCombobox) {
|
|
24681
25088
|
|
|
24682
25089
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -30612,10 +31019,18 @@ class AuroInputUtilities {
|
|
|
30612
31019
|
* @returns {string | undefined}
|
|
30613
31020
|
*/
|
|
30614
31021
|
toFormattedValue(valueObject, format) {
|
|
31022
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
31023
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
31024
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
31025
|
+
// as "no format → no display value".
|
|
31026
|
+
if (!format) {
|
|
31027
|
+
return undefined;
|
|
31028
|
+
}
|
|
30615
31029
|
const normalizedFormat = format.toLowerCase();
|
|
30616
31030
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
30617
31031
|
|
|
30618
31032
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
31033
|
+
console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
|
|
30619
31034
|
return undefined;
|
|
30620
31035
|
}
|
|
30621
31036
|
|
|
@@ -30762,79 +31177,19 @@ class BaseInput extends AuroElement$1 {
|
|
|
30762
31177
|
constructor() {
|
|
30763
31178
|
super();
|
|
30764
31179
|
|
|
30765
|
-
|
|
30766
|
-
|
|
30767
|
-
|
|
30768
|
-
|
|
30769
|
-
|
|
30770
|
-
|
|
30771
|
-
|
|
30772
|
-
|
|
30773
|
-
|
|
30774
|
-
|
|
30775
|
-
this.required = false;
|
|
30776
|
-
this.onDark = false;
|
|
30777
|
-
this.setCustomValidityForType = undefined;
|
|
30778
|
-
this.size = 'lg';
|
|
30779
|
-
this.shape = 'classic';
|
|
30780
|
-
this.value = undefined;
|
|
30781
|
-
this._valueObject = undefined;
|
|
30782
|
-
|
|
30783
|
-
this._initializePrivateDefaults();
|
|
30784
|
-
}
|
|
30785
|
-
|
|
30786
|
-
/**
|
|
30787
|
-
* Internal Defaults.
|
|
30788
|
-
* @private
|
|
30789
|
-
* @returns {void}
|
|
30790
|
-
*/
|
|
30791
|
-
_initializePrivateDefaults() {
|
|
31180
|
+
// Single-source initialization. Alphabetized so duplicate or stale
|
|
31181
|
+
// defaults are immediately obvious on a diff. Every field is assigned
|
|
31182
|
+
// exactly once here (previously the constructor + the old
|
|
31183
|
+
// `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
|
|
31184
|
+
// fields and double-allocated `util` and `validation`, discarding the
|
|
31185
|
+
// first instance). `validation` is now allocated exactly once; `util`
|
|
31186
|
+
// is seeded here with an en-US default and then rebuilt in
|
|
31187
|
+
// `connectedCallback` once the consumer-resolved locale is available,
|
|
31188
|
+
// so a parent (datepicker/combobox) calling `validate()` synchronously
|
|
31189
|
+
// during its own update cycle sees a populated util instance.
|
|
30792
31190
|
this.activeLabel = false;
|
|
30793
|
-
this.appearance = "default";
|
|
30794
|
-
this.icon = false;
|
|
30795
|
-
this.disabled = false;
|
|
30796
|
-
this.dvInputOnly = false;
|
|
30797
|
-
this.hideLabelVisually = false;
|
|
30798
|
-
this.max = undefined;
|
|
30799
|
-
this.maxLength = undefined;
|
|
30800
|
-
this.min = undefined;
|
|
30801
|
-
this.minLength = undefined;
|
|
30802
|
-
this.noValidate = false;
|
|
30803
|
-
this.onDark = false;
|
|
30804
|
-
this.required = false;
|
|
30805
|
-
this.setCustomValidityForType = undefined;
|
|
30806
|
-
|
|
30807
|
-
// Used for storing raw values returned from input mask.
|
|
30808
|
-
this._rawMaskValue = undefined;
|
|
30809
|
-
|
|
30810
|
-
/**
|
|
30811
|
-
* @private
|
|
30812
|
-
*/
|
|
30813
|
-
this.layout = 'classic';
|
|
30814
|
-
|
|
30815
|
-
/**
|
|
30816
|
-
* @private
|
|
30817
|
-
*/
|
|
30818
|
-
this.shape = 'classic';
|
|
30819
|
-
|
|
30820
|
-
/**
|
|
30821
|
-
* @private
|
|
30822
|
-
*/
|
|
30823
|
-
this.size = 'lg';
|
|
30824
|
-
|
|
30825
|
-
this.touched = false;
|
|
30826
|
-
this.util = new AuroInputUtilities({
|
|
30827
|
-
locale: "en-US",
|
|
30828
|
-
format: this.format
|
|
30829
|
-
});
|
|
30830
|
-
this.validation = new AuroFormValidation();
|
|
30831
|
-
this.inputIconName = undefined;
|
|
30832
|
-
this.showPassword = false;
|
|
30833
|
-
this.validationCCLength = undefined;
|
|
30834
|
-
this.hasValue = false;
|
|
30835
|
-
this.label = 'Input label is undefined';
|
|
30836
|
-
|
|
30837
31191
|
|
|
31192
|
+
/** @private */
|
|
30838
31193
|
this.allowedInputTypes = [
|
|
30839
31194
|
"text",
|
|
30840
31195
|
"number",
|
|
@@ -30843,7 +31198,9 @@ class BaseInput extends AuroElement$1 {
|
|
|
30843
31198
|
"credit-card",
|
|
30844
31199
|
"tel"
|
|
30845
31200
|
];
|
|
30846
|
-
this.
|
|
31201
|
+
this.appearance = "default";
|
|
31202
|
+
|
|
31203
|
+
/** @private */
|
|
30847
31204
|
this.dateFormatMap = {
|
|
30848
31205
|
'mm/dd/yyyy': 'dateMMDDYYYY',
|
|
30849
31206
|
'dd/mm/yyyy': 'dateDDMMYYYY',
|
|
@@ -30860,27 +31217,62 @@ class BaseInput extends AuroElement$1 {
|
|
|
30860
31217
|
'dd/mm': 'dateDDMM',
|
|
30861
31218
|
'mm/dd': 'dateMMDD'
|
|
30862
31219
|
};
|
|
31220
|
+
this.disabled = false;
|
|
31221
|
+
|
|
31222
|
+
/** @private */
|
|
30863
31223
|
this.domHandler = new DomHandler();
|
|
30864
31224
|
this.dvInputOnly = false;
|
|
30865
31225
|
this.hasValue = false;
|
|
31226
|
+
this.hideLabelVisually = false;
|
|
31227
|
+
this.icon = false;
|
|
31228
|
+
|
|
31229
|
+
/** @private */
|
|
30866
31230
|
this.inputIconName = undefined;
|
|
31231
|
+
|
|
31232
|
+
/** @private */
|
|
30867
31233
|
this.label = 'Input label is undefined';
|
|
31234
|
+
this.layout = 'classic';
|
|
31235
|
+
this.locale = 'en-US';
|
|
31236
|
+
this.max = undefined;
|
|
31237
|
+
this.maxLength = undefined;
|
|
31238
|
+
this.min = undefined;
|
|
31239
|
+
this.minLength = undefined;
|
|
30868
31240
|
this.noValidate = false;
|
|
30869
|
-
this.
|
|
31241
|
+
this.onDark = false;
|
|
31242
|
+
// Raw values returned from the input mask before model normalization.
|
|
31243
|
+
this._rawMaskValue = undefined;
|
|
31244
|
+
this.required = false;
|
|
31245
|
+
this.setCustomValidityForType = undefined;
|
|
31246
|
+
// Credit Card is intentionally excluded — its mask manages the cursor
|
|
31247
|
+
// itself, and listing it here caused cursor placement issues in Safari.
|
|
31248
|
+
/** @private */
|
|
30870
31249
|
this.setSelectionInputTypes = [
|
|
30871
31250
|
"text",
|
|
30872
31251
|
"password",
|
|
30873
31252
|
"email"
|
|
30874
|
-
];
|
|
31253
|
+
];
|
|
31254
|
+
this.shape = 'classic';
|
|
31255
|
+
|
|
31256
|
+
/** @private */
|
|
30875
31257
|
this.showPassword = false;
|
|
31258
|
+
this.size = 'lg';
|
|
30876
31259
|
this.touched = false;
|
|
31260
|
+
|
|
31261
|
+
/** @private */
|
|
30877
31262
|
this.uniqueId = new UniqueId().create();
|
|
31263
|
+
|
|
31264
|
+
/** @private */
|
|
30878
31265
|
this.util = new AuroInputUtilities({
|
|
30879
31266
|
locale: this.locale,
|
|
30880
31267
|
format: this.format
|
|
30881
31268
|
});
|
|
31269
|
+
|
|
31270
|
+
/** @private */
|
|
30882
31271
|
this.validation = new AuroFormValidation();
|
|
31272
|
+
|
|
31273
|
+
/** @private */
|
|
30883
31274
|
this.validationCCLength = undefined;
|
|
31275
|
+
this.value = undefined;
|
|
30884
31276
|
}
|
|
30885
31277
|
|
|
30886
31278
|
// function to define props used within the scope of this component
|
|
@@ -31318,7 +31710,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31318
31710
|
* @returns {Date|undefined}
|
|
31319
31711
|
*/
|
|
31320
31712
|
get valueObject() {
|
|
31321
|
-
return this.
|
|
31713
|
+
return this.value && dateFormatter.isValidDate(this.value) ? dateFormatter.stringToDateInstance(this.value) : undefined;
|
|
31322
31714
|
}
|
|
31323
31715
|
|
|
31324
31716
|
/**
|
|
@@ -31326,7 +31718,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31326
31718
|
* @returns {Date|undefined}
|
|
31327
31719
|
*/
|
|
31328
31720
|
get minObject() {
|
|
31329
|
-
return this.
|
|
31721
|
+
return this.min && dateFormatter.isValidDate(this.min) ? dateFormatter.stringToDateInstance(this.min) : undefined;
|
|
31330
31722
|
}
|
|
31331
31723
|
|
|
31332
31724
|
/**
|
|
@@ -31334,50 +31726,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31334
31726
|
* @returns {Date|undefined}
|
|
31335
31727
|
*/
|
|
31336
31728
|
get maxObject() {
|
|
31337
|
-
return this.
|
|
31338
|
-
}
|
|
31339
|
-
|
|
31340
|
-
/**
|
|
31341
|
-
* Parses a date string into a Date object when the corresponding `_*Object`
|
|
31342
|
-
* field hasn't been synced yet by `updated()`. Returns undefined when the
|
|
31343
|
-
* input type/format isn't a full date or the string is not a valid date.
|
|
31344
|
-
*
|
|
31345
|
-
* Why this exists: a parent (datepicker) can call `inputN.validate()` from
|
|
31346
|
-
* inside its own `updated()` before this input's `updated()` has run
|
|
31347
|
-
* `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
|
|
31348
|
-
* and range checks would otherwise silently no-op (flipping the result to
|
|
31349
|
-
* `valid` or `patternMismatch`).
|
|
31350
|
-
* @private
|
|
31351
|
-
* @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
|
|
31352
|
-
* @returns {Date|undefined}
|
|
31353
|
-
*/
|
|
31354
|
-
_computeDateObjectFallback(dateStr) {
|
|
31355
|
-
if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
|
|
31356
|
-
return undefined;
|
|
31357
|
-
}
|
|
31358
|
-
if (!dateFormatter.isValidDate(dateStr)) {
|
|
31359
|
-
return undefined;
|
|
31360
|
-
}
|
|
31361
|
-
return dateFormatter.stringToDateInstance(dateStr);
|
|
31362
|
-
}
|
|
31363
|
-
|
|
31364
|
-
/**
|
|
31365
|
-
* Internal setter for readonly date object properties.
|
|
31366
|
-
* @private
|
|
31367
|
-
* @param {'valueObject'|'minObject'|'maxObject'} propertyName - Public object property name.
|
|
31368
|
-
* @param {Date|undefined} propertyValue - Value to assign.
|
|
31369
|
-
* @returns {void}
|
|
31370
|
-
*/
|
|
31371
|
-
setDateObjectProperty(propertyName, propertyValue) {
|
|
31372
|
-
const internalPropertyName = `_${propertyName}`;
|
|
31373
|
-
const previousValue = this[internalPropertyName];
|
|
31374
|
-
|
|
31375
|
-
if (previousValue === propertyValue) {
|
|
31376
|
-
return;
|
|
31377
|
-
}
|
|
31378
|
-
|
|
31379
|
-
this[internalPropertyName] = propertyValue;
|
|
31380
|
-
this.requestUpdate(propertyName, previousValue);
|
|
31729
|
+
return this.max && dateFormatter.isValidDate(this.max) ? dateFormatter.stringToDateInstance(this.max) : undefined;
|
|
31381
31730
|
}
|
|
31382
31731
|
|
|
31383
31732
|
connectedCallback() {
|
|
@@ -31406,7 +31755,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31406
31755
|
format: this.format
|
|
31407
31756
|
});
|
|
31408
31757
|
this.configureDataForType();
|
|
31409
|
-
this.syncDateValues();
|
|
31410
31758
|
}
|
|
31411
31759
|
|
|
31412
31760
|
disconnectedCallback() {
|
|
@@ -31426,12 +31774,17 @@ class BaseInput extends AuroElement$1 {
|
|
|
31426
31774
|
this.wrapperElement.addEventListener('click', this.handleClick);
|
|
31427
31775
|
}
|
|
31428
31776
|
|
|
31429
|
-
// add attribute for query selectors when auro-input is registered under a custom name
|
|
31430
|
-
if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
|
|
31431
|
-
this.setAttribute('auro-input', '');
|
|
31432
|
-
}
|
|
31433
31777
|
this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
|
|
31434
31778
|
|
|
31779
|
+
// Normalize the format token to lowercase so case-mixed values supplied
|
|
31780
|
+
// via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
|
|
31781
|
+
// lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
|
|
31782
|
+
// format silently misses the map and leaves `setCustomValidityForType`
|
|
31783
|
+
// unset.
|
|
31784
|
+
if (this.format) {
|
|
31785
|
+
this.format = this.format.toLowerCase();
|
|
31786
|
+
}
|
|
31787
|
+
|
|
31435
31788
|
// use validity message override if declared when initializing the component
|
|
31436
31789
|
if (this.hasAttribute('setCustomValidity')) {
|
|
31437
31790
|
this.ValidityMessageOverride = this.setCustomValidity;
|
|
@@ -31440,7 +31793,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31440
31793
|
this.setCustomHelpTextMessage();
|
|
31441
31794
|
this.configureAutoFormatting();
|
|
31442
31795
|
this.configureDataForType();
|
|
31443
|
-
this.syncDateValues();
|
|
31444
31796
|
}
|
|
31445
31797
|
|
|
31446
31798
|
/**
|
|
@@ -31516,6 +31868,13 @@ class BaseInput extends AuroElement$1 {
|
|
|
31516
31868
|
|
|
31517
31869
|
if (typeToI18n.includes(this.type)) {
|
|
31518
31870
|
this.setCustomValidityForType = i18n$1(this.lang, this.type);
|
|
31871
|
+
// COVERAGE: this `else if` branch is unreachable in WTR. connectedCallback
|
|
31872
|
+
// (L682) calls configureDataForType, which at L1266-1268 assigns
|
|
31873
|
+
// `this.format = this.util.getDateMaskFromLocale().toLowerCase()` for any
|
|
31874
|
+
// type=date input whose `format` attribute is unset. That runs before
|
|
31875
|
+
// firstUpdated invokes setCustomHelpTextMessage, so `!this.format` is
|
|
31876
|
+
// always false here. Retained as a defensive fallback; the whole function
|
|
31877
|
+
// is @deprecated per AB#1557296 and slated for removal.
|
|
31519
31878
|
} else if (!this.format && this.type === 'date') {
|
|
31520
31879
|
this.setCustomValidityForType = i18n$1(this.lang, 'dateMMDDYYYY');
|
|
31521
31880
|
} else if (this.dateFormatMap[this.format]) {
|
|
@@ -31577,8 +31936,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31577
31936
|
this.configureDataForType();
|
|
31578
31937
|
}
|
|
31579
31938
|
|
|
31580
|
-
this.syncDateValues(changedProperties);
|
|
31581
|
-
|
|
31582
31939
|
if (changedProperties.has('value')) {
|
|
31583
31940
|
if (this.value && this.value.length > 0) {
|
|
31584
31941
|
this.hasValue = true;
|
|
@@ -31600,14 +31957,14 @@ class BaseInput extends AuroElement$1 {
|
|
|
31600
31957
|
|
|
31601
31958
|
if (formattedValue !== this.inputElement.value) {
|
|
31602
31959
|
this.skipNextProgrammaticInputEvent = true;
|
|
31603
|
-
if (this.maskInstance && this.type
|
|
31960
|
+
if (this.maskInstance && this.type !== 'date') {
|
|
31604
31961
|
// Route through the mask so its _value and el.value stay in lock-step
|
|
31605
31962
|
// (set value calls updateControl which writes el.value = displayValue).
|
|
31606
31963
|
// Writing el.value directly leaves the mask thinking displayValue is
|
|
31607
|
-
// stale; _saveSelection on the next focus/click then warns.
|
|
31608
|
-
//
|
|
31609
|
-
//
|
|
31610
|
-
//
|
|
31964
|
+
// stale; _saveSelection on the next focus/click then warns. Date is
|
|
31965
|
+
// excluded because its formattedValue can be raw ISO when the calendar
|
|
31966
|
+
// is invalid, and re-masking through mm/dd/yyyy would truncate it and
|
|
31967
|
+
// flip validity from patternMismatch to tooShort.
|
|
31611
31968
|
this.maskInstance.value = formattedValue || '';
|
|
31612
31969
|
} else if (formattedValue) {
|
|
31613
31970
|
this.inputElement.value = formattedValue;
|
|
@@ -31649,120 +32006,65 @@ class BaseInput extends AuroElement$1 {
|
|
|
31649
32006
|
}));
|
|
31650
32007
|
}
|
|
31651
32008
|
|
|
31652
|
-
|
|
31653
|
-
/**
|
|
31654
|
-
* Synchronizes the ISO string values and Date object representations for date-related properties.
|
|
31655
|
-
* This keeps the model and display values aligned when either side changes.
|
|
31656
|
-
*
|
|
31657
|
-
* When a full date format is in use, this method updates `value`, `min`, and `max` from their corresponding
|
|
31658
|
-
* Date objects or vice versa, based on which properties have changed. It only runs when the current configuration
|
|
31659
|
-
* represents a full year/month/day date format.
|
|
31660
|
-
*
|
|
31661
|
-
* @param {Map<string, unknown>|undefined} [changedProperties=undefined] - Optional map of changed properties used to limit which values are synchronized.
|
|
31662
|
-
* @returns {void}
|
|
31663
|
-
* @private
|
|
31664
|
-
*/
|
|
31665
|
-
syncDateValues(changedProperties = undefined) {
|
|
31666
|
-
if (!this.util.isFullDateFormat(this.type, this.format)) {
|
|
31667
|
-
return;
|
|
31668
|
-
}
|
|
31669
|
-
|
|
31670
|
-
this.syncSingleDateValue(changedProperties, 'valueObject', 'value');
|
|
31671
|
-
this.syncSingleDateValue(changedProperties, 'minObject', 'min');
|
|
31672
|
-
this.syncSingleDateValue(changedProperties, 'maxObject', 'max');
|
|
31673
|
-
}
|
|
31674
|
-
|
|
31675
|
-
/**
|
|
31676
|
-
* Synchronizes one date object/string property pair.
|
|
31677
|
-
* @private
|
|
31678
|
-
* @param {Map<string, unknown>|undefined} changedProperties - Map of changed properties from Lit.
|
|
31679
|
-
* @param {string} objectProperty - Date object property name.
|
|
31680
|
-
* @param {string} valueProperty - ISO string property name.
|
|
31681
|
-
* @returns {void}
|
|
31682
|
-
*/
|
|
31683
|
-
syncSingleDateValue(changedProperties, objectProperty, valueProperty) {
|
|
31684
|
-
const objectPropertyChanged = !changedProperties || changedProperties.has(objectProperty);
|
|
31685
|
-
|
|
31686
|
-
// objectProperty wins over valueProperty when both changed
|
|
31687
|
-
if (objectPropertyChanged && this[objectProperty]) {
|
|
31688
|
-
this[valueProperty] = dateFormatter.toISOFormatString(this[objectProperty]);
|
|
31689
|
-
return;
|
|
31690
|
-
}
|
|
31691
|
-
|
|
31692
|
-
const valuePropertyChanged = !changedProperties || changedProperties.has(valueProperty);
|
|
31693
|
-
if (!valuePropertyChanged) {
|
|
31694
|
-
return;
|
|
31695
|
-
}
|
|
31696
|
-
|
|
31697
|
-
// 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)
|
|
31698
|
-
if (
|
|
31699
|
-
changedProperties &&
|
|
31700
|
-
valueProperty === 'value' &&
|
|
31701
|
-
changedProperties.get('value') === undefined &&
|
|
31702
|
-
this[objectProperty] instanceof Date &&
|
|
31703
|
-
this[valueProperty] === dateFormatter.toISOFormatString(this[objectProperty])
|
|
31704
|
-
) {
|
|
31705
|
-
return;
|
|
31706
|
-
}
|
|
31707
|
-
|
|
31708
|
-
if (dateFormatter.isValidDate(this[valueProperty])) {
|
|
31709
|
-
this.setDateObjectProperty(objectProperty, dateFormatter.stringToDateInstance(this[valueProperty]));
|
|
31710
|
-
} else {
|
|
31711
|
-
this.setDateObjectProperty(objectProperty, undefined);
|
|
31712
|
-
}
|
|
31713
|
-
}
|
|
31714
|
-
|
|
31715
32009
|
/**
|
|
31716
32010
|
* Sets up IMasks and logic based on auto-formatting requirements.
|
|
31717
32011
|
* @private
|
|
31718
32012
|
* @returns {void}
|
|
31719
32013
|
*/
|
|
31720
32014
|
configureAutoFormatting() {
|
|
31721
|
-
//
|
|
31722
|
-
//
|
|
31723
|
-
//
|
|
31724
|
-
//
|
|
32015
|
+
// _configuringMask gates two things: external re-entry into this method
|
|
32016
|
+
// while setup is mid-flight (from property changes that call back here),
|
|
32017
|
+
// and the accept/complete listeners below — both need to ignore the mask
|
|
32018
|
+
// events fired by our own value-restore step.
|
|
31725
32019
|
if (this._configuringMask) return;
|
|
31726
32020
|
this._configuringMask = true;
|
|
31727
32021
|
try {
|
|
32022
|
+
// Destroy any prior mask so IMask can attach fresh under the new format.
|
|
32023
|
+
// Null the reference too — if the new maskOptions.mask is falsy (e.g.
|
|
32024
|
+
// type switched from credit-card to text) the IMask() reassignment
|
|
32025
|
+
// below is skipped, and downstream writes at line ~823 would otherwise
|
|
32026
|
+
// route through the destroyed instance.
|
|
31728
32027
|
if (this.maskInstance) {
|
|
31729
32028
|
this.maskInstance.destroy();
|
|
32029
|
+
this.maskInstance = null;
|
|
31730
32030
|
}
|
|
31731
32031
|
|
|
31732
|
-
// Pass new format to util
|
|
31733
32032
|
this.util.updateFormat(this.format);
|
|
31734
32033
|
|
|
31735
32034
|
const maskOptions = this.util.getMaskOptions(this.type, this.format);
|
|
31736
32035
|
|
|
31737
32036
|
if (this.inputElement && maskOptions.mask) {
|
|
31738
|
-
|
|
31739
|
-
//
|
|
31740
|
-
//
|
|
31741
|
-
//
|
|
31742
|
-
// When the format changes (e.g. locale switch) and we have a valid ISO
|
|
31743
|
-
// model value, compute the display string for the NEW format instead of
|
|
31744
|
-
// re-using the old display string, which may be invalid in the new mask.
|
|
32037
|
+
// Capture the current display so it can be re-applied after IMask
|
|
32038
|
+
// attaches. The restore at the bottom goes through maskInstance.value
|
|
32039
|
+
// (not inputElement.value directly) so the mask's internal state and
|
|
32040
|
+
// the input's displayed text stay in lock-step.
|
|
31745
32041
|
let existingValue = this.inputElement.value;
|
|
32042
|
+
|
|
32043
|
+
// Format-change case (e.g. locale switch): existingValue is the OLD
|
|
32044
|
+
// mask's display string and may not parse under the new mask. When
|
|
32045
|
+
// we have a valid date model, rebuild the display from valueObject
|
|
32046
|
+
// (the canonical source) using the new mask's format function.
|
|
31746
32047
|
if (
|
|
31747
32048
|
this.util.isFullDateFormat(this.type, this.format) &&
|
|
31748
32049
|
this.value &&
|
|
31749
|
-
|
|
31750
|
-
this.valueObject instanceof Date &&
|
|
31751
|
-
!Number.isNaN(this.valueObject.getTime()) &&
|
|
32050
|
+
this.valueObject &&
|
|
31752
32051
|
typeof maskOptions.format === 'function'
|
|
31753
32052
|
) {
|
|
31754
32053
|
existingValue = maskOptions.format(this.valueObject);
|
|
31755
32054
|
}
|
|
31756
32055
|
|
|
32056
|
+
// Clear before IMask attaches so the constructor seeds an empty
|
|
32057
|
+
// internal value. Otherwise IMask reads the stale unmasked string
|
|
32058
|
+
// and emits a spurious 'accept' before the restore below runs.
|
|
31757
32059
|
this.skipNextProgrammaticInputEvent = true;
|
|
31758
32060
|
this.inputElement.value = '';
|
|
31759
32061
|
|
|
31760
32062
|
this.maskInstance = IMask(this.inputElement, maskOptions);
|
|
31761
32063
|
|
|
32064
|
+
// Mask fires 'accept' on every value change, including the restore
|
|
32065
|
+
// step below. Skip events fired during configureAutoFormatting so
|
|
32066
|
+
// we don't overwrite a value the parent just pushed.
|
|
31762
32067
|
this.maskInstance.on('accept', () => {
|
|
31763
|
-
// Suppress propagation during configureAutoFormatting's own value-restoration
|
|
31764
|
-
// (line below) — the mask emits 'accept' on every value-set, including ours,
|
|
31765
|
-
// and we don't want to overwrite a value the parent just pushed.
|
|
31766
32068
|
if (this._configuringMask) return;
|
|
31767
32069
|
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
31768
32070
|
if (this.type === "date") {
|
|
@@ -31770,6 +32072,8 @@ class BaseInput extends AuroElement$1 {
|
|
|
31770
32072
|
}
|
|
31771
32073
|
});
|
|
31772
32074
|
|
|
32075
|
+
// Mask fires 'complete' on the restore step below for any value that
|
|
32076
|
+
// happens to be a complete match. Same setup-suppression as 'accept'.
|
|
31773
32077
|
this.maskInstance.on('complete', () => {
|
|
31774
32078
|
if (this._configuringMask) return;
|
|
31775
32079
|
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
@@ -31778,7 +32082,9 @@ class BaseInput extends AuroElement$1 {
|
|
|
31778
32082
|
}
|
|
31779
32083
|
});
|
|
31780
32084
|
|
|
31781
|
-
//
|
|
32085
|
+
// Write existingValue through the mask (not the input directly) so
|
|
32086
|
+
// the mask reformats it under the new rules and keeps its internal
|
|
32087
|
+
// _value aligned with the input's displayed text.
|
|
31782
32088
|
if (existingValue) {
|
|
31783
32089
|
this.maskInstance.value = existingValue;
|
|
31784
32090
|
}
|
|
@@ -31858,6 +32164,38 @@ class BaseInput extends AuroElement$1 {
|
|
|
31858
32164
|
this.touched = true;
|
|
31859
32165
|
this.validation.validate(this);
|
|
31860
32166
|
}
|
|
32167
|
+
|
|
32168
|
+
// Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
|
|
32169
|
+
// update that can re-render the input and reset the native cursor; we
|
|
32170
|
+
// capture the caret position before that update commits and restore it
|
|
32171
|
+
// via `setSelectionRange` once the update has flushed. Gated on
|
|
32172
|
+
// `setSelectionInputTypes` so credit-card (and other masked types whose
|
|
32173
|
+
// formatter manages the cursor itself) doesn't get a competing write.
|
|
32174
|
+
// Capture the caret position INSIDE the gate — reading `selectionStart`
|
|
32175
|
+
// on input types that don't support text selection (number, email in
|
|
32176
|
+
// some browsers) throws InvalidStateError, which would crash all input
|
|
32177
|
+
// handling. Wrap the read in try/catch belt-and-suspenders even though
|
|
32178
|
+
// the gated types currently support it, since the list is a public
|
|
32179
|
+
// property a consumer could mutate.
|
|
32180
|
+
if (this.setSelectionInputTypes.includes(this.type)) {
|
|
32181
|
+
let selectionStart = null;
|
|
32182
|
+
try {
|
|
32183
|
+
({ selectionStart } = this.inputElement);
|
|
32184
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
32185
|
+
return;
|
|
32186
|
+
}
|
|
32187
|
+
if (typeof selectionStart !== 'number') {
|
|
32188
|
+
return;
|
|
32189
|
+
}
|
|
32190
|
+
this.updateComplete.then(() => {
|
|
32191
|
+
try {
|
|
32192
|
+
this.inputElement.setSelectionRange(selectionStart, selectionStart);
|
|
32193
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
32194
|
+
// Some input types (number/email in certain UAs) throw on
|
|
32195
|
+
// setSelectionRange; swallow and let the native cursor stand.
|
|
32196
|
+
}
|
|
32197
|
+
});
|
|
32198
|
+
}
|
|
31861
32199
|
}
|
|
31862
32200
|
|
|
31863
32201
|
/**
|
|
@@ -31946,7 +32284,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31946
32284
|
*/
|
|
31947
32285
|
reset() {
|
|
31948
32286
|
this.value = undefined;
|
|
31949
|
-
this.setDateObjectProperty('valueObject', undefined);
|
|
31950
32287
|
this.validation.reset(this);
|
|
31951
32288
|
}
|
|
31952
32289
|
|
|
@@ -31955,7 +32292,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31955
32292
|
*/
|
|
31956
32293
|
clear() {
|
|
31957
32294
|
this.value = undefined;
|
|
31958
|
-
this.setDateObjectProperty('valueObject', undefined);
|
|
31959
32295
|
}
|
|
31960
32296
|
|
|
31961
32297
|
/**
|
|
@@ -31993,7 +32329,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31993
32329
|
*/
|
|
31994
32330
|
get placeholderStr() {
|
|
31995
32331
|
if (!this.placeholder && this.type === 'date') {
|
|
31996
|
-
return this.format
|
|
32332
|
+
return this.format.toUpperCase();
|
|
31997
32333
|
}
|
|
31998
32334
|
return this.placeholder || "";
|
|
31999
32335
|
}
|
|
@@ -32484,7 +32820,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
32484
32820
|
}
|
|
32485
32821
|
};
|
|
32486
32822
|
|
|
32487
|
-
var formkitVersion = '
|
|
32823
|
+
var formkitVersion = '202607010100';
|
|
32488
32824
|
|
|
32489
32825
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
32490
32826
|
// See LICENSE in the project root for license information.
|
|
@@ -32987,6 +33323,7 @@ class AuroInput extends BaseInput {
|
|
|
32987
33323
|
<${this.buttonTag}
|
|
32988
33324
|
@click="${this.handleClickShowPassword}"
|
|
32989
33325
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
33326
|
+
aria-pressed="${this.showPassword ? 'true' : 'false'}"
|
|
32990
33327
|
class="notificationBtn passwordBtn"
|
|
32991
33328
|
shape="circle"
|
|
32992
33329
|
size="sm"
|
|
@@ -33060,25 +33397,29 @@ class AuroInput extends BaseInput {
|
|
|
33060
33397
|
* @returns {html} - Returns HTML for the help text and error message.
|
|
33061
33398
|
*/
|
|
33062
33399
|
renderHtmlHelpText() {
|
|
33400
|
+
// Single `<p>` with stable identity across validity transitions —
|
|
33401
|
+
// previously two distinct templates (valid vs invalid) caused Lit to
|
|
33402
|
+
// replace the node entirely on a flip, and VoiceOver wouldn't
|
|
33403
|
+
// re-announce because the live-region element it was watching had been
|
|
33404
|
+
// removed and a new one inserted. Keeping one node means the `role`,
|
|
33405
|
+
// `aria-live`, and text content all change in-place, which AT does
|
|
33406
|
+
// observe and announce.
|
|
33407
|
+
const isError = this.validity && this.validity !== 'valid';
|
|
33063
33408
|
return html$1`
|
|
33064
|
-
|
|
33065
|
-
?
|
|
33066
|
-
|
|
33067
|
-
|
|
33068
|
-
|
|
33069
|
-
|
|
33070
|
-
|
|
33071
|
-
|
|
33072
|
-
|
|
33073
|
-
|
|
33074
|
-
|
|
33075
|
-
|
|
33076
|
-
|
|
33077
|
-
|
|
33078
|
-
</p>
|
|
33079
|
-
</${this.helpTextTag}>
|
|
33080
|
-
`
|
|
33081
|
-
}
|
|
33409
|
+
<${this.helpTextTag}
|
|
33410
|
+
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
33411
|
+
?error=${isError}>
|
|
33412
|
+
<p
|
|
33413
|
+
id="${this.uniqueId}"
|
|
33414
|
+
part="helpText"
|
|
33415
|
+
role="${ifDefined(isError ? 'alert' : undefined)}"
|
|
33416
|
+
aria-live="${ifDefined(isError ? 'assertive' : undefined)}">
|
|
33417
|
+
${isError
|
|
33418
|
+
? this.errorMessage
|
|
33419
|
+
: html$1`<slot name="helpText">${this.getHelpText()}</slot>`
|
|
33420
|
+
}
|
|
33421
|
+
</p>
|
|
33422
|
+
</${this.helpTextTag}>
|
|
33082
33423
|
`;
|
|
33083
33424
|
}
|
|
33084
33425
|
|
|
@@ -33225,6 +33566,15 @@ function formatISODate(isoStr, format) {
|
|
|
33225
33566
|
try {
|
|
33226
33567
|
const date = dateFormatter.stringToDateInstance(isoStr);
|
|
33227
33568
|
|
|
33569
|
+
// `stringToDateInstance` returns an `Invalid Date` for malformed strings
|
|
33570
|
+
// and `null` for non-string input — it does NOT throw. Without this
|
|
33571
|
+
// guard, `getFullYear()`/`getMonth()`/`getDate()` on an Invalid Date
|
|
33572
|
+
// yield `NaN`, and `String(NaN).padStart(4, '0')` produces literals
|
|
33573
|
+
// like "0NaN/0NaN/0NaN" instead of `undefined`.
|
|
33574
|
+
if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
|
|
33575
|
+
return undefined;
|
|
33576
|
+
}
|
|
33577
|
+
|
|
33228
33578
|
const year = String(date.getFullYear()).padStart(4, '0');
|
|
33229
33579
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
33230
33580
|
const day = String(date.getDate()).padStart(2, '0');
|
|
@@ -33235,7 +33585,10 @@ function formatISODate(isoStr, format) {
|
|
|
33235
33585
|
replace(/mm/iu, month).
|
|
33236
33586
|
replace(/dd/iu, day);
|
|
33237
33587
|
} catch (err) {
|
|
33238
|
-
//
|
|
33588
|
+
// Defensive: the Date-returning path is guarded above, but `parseDate`
|
|
33589
|
+
// (inside `stringToDateInstance`) could throw on pathological input
|
|
33590
|
+
// future-library-versions might introduce. Treat any thrown error as
|
|
33591
|
+
// "not a valid date" and return undefined.
|
|
33239
33592
|
return undefined;
|
|
33240
33593
|
}
|
|
33241
33594
|
}
|
|
@@ -33904,6 +34257,8 @@ const datepickerKeyboardStrategy = {
|
|
|
33904
34257
|
* @slot label - Defines the label content for the entire datepicker when `layout="snowflake"`.
|
|
33905
34258
|
* @slot toLabel - Defines the label content for the second input when the `range` attribute is used.
|
|
33906
34259
|
* @slot fromLabel - Defines the label content for the first input.
|
|
34260
|
+
* @slot optionalFromLabel - Overrides the "(optional)" text rendered next to the first input's label when the datepicker is not `required`.
|
|
34261
|
+
* @slot optionalToLabel - Overrides the "(optional)" text rendered next to the second input's label when `range` is set and the datepicker is not `required`.
|
|
33907
34262
|
* @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.
|
|
33908
34263
|
* @slot popover_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell popover for the specified date.
|
|
33909
34264
|
* @csspart dropdown - Use for customizing the style of the dropdown.
|
|
@@ -33959,6 +34314,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33959
34314
|
this.rangeLabelBeforeRange = 'before range';
|
|
33960
34315
|
this.rangeLabelInRange = 'in range';
|
|
33961
34316
|
this.rangeLabelAfterRange = 'after range';
|
|
34317
|
+
this.rangeLabelEndPreview = 'previewing range end';
|
|
33962
34318
|
this.blackoutDates = [];
|
|
33963
34319
|
this.blackoutLabel = 'unavailable';
|
|
33964
34320
|
this.navLabelPrevMonth = 'Previous month';
|
|
@@ -34058,6 +34414,22 @@ class AuroDatePicker extends AuroElement {
|
|
|
34058
34414
|
*/
|
|
34059
34415
|
this.handleClick = this.handleClick.bind(this);
|
|
34060
34416
|
|
|
34417
|
+
/**
|
|
34418
|
+
* Single AbortController shared by every listener registered in the
|
|
34419
|
+
* configure* methods. Lets disconnectedCallback tear all of them down
|
|
34420
|
+
* with one abort() call.
|
|
34421
|
+
*
|
|
34422
|
+
* The genuine leak risk is the listeners attached to children that can
|
|
34423
|
+
* outlive the host if they get reparented — `this.dropdown`,
|
|
34424
|
+
* `this.calendar`, and the inputs inside the dropdown's slot.
|
|
34425
|
+
* Listeners attached to `this` (e.g. focusin/focusout on the host)
|
|
34426
|
+
* form a self-contained reference graph that the GC can collect with
|
|
34427
|
+
* the host anyway, but they share the same signal so the cleanup
|
|
34428
|
+
* pattern stays uniform across all configure* sites.
|
|
34429
|
+
* @private
|
|
34430
|
+
*/
|
|
34431
|
+
this._listenerAbortController = new AbortController();
|
|
34432
|
+
|
|
34061
34433
|
/**
|
|
34062
34434
|
* @private
|
|
34063
34435
|
*/
|
|
@@ -34106,6 +34478,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34106
34478
|
|
|
34107
34479
|
/**
|
|
34108
34480
|
* Label announced for blackout (disabled but in-range) date cells.
|
|
34481
|
+
* @default 'unavailable'
|
|
34109
34482
|
*/
|
|
34110
34483
|
blackoutLabel: {
|
|
34111
34484
|
type: String,
|
|
@@ -34122,6 +34495,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34122
34495
|
|
|
34123
34496
|
/**
|
|
34124
34497
|
* Accessible label for the calendar grid containing the days of the month.
|
|
34498
|
+
* @default 'Calendar days of the month'
|
|
34125
34499
|
*/
|
|
34126
34500
|
calendarGridLabel: {
|
|
34127
34501
|
type: String,
|
|
@@ -34284,6 +34658,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34284
34658
|
|
|
34285
34659
|
/**
|
|
34286
34660
|
* Accessible label for the next month navigation button.
|
|
34661
|
+
* @default 'Next month'
|
|
34287
34662
|
*/
|
|
34288
34663
|
navLabelNextMonth: {
|
|
34289
34664
|
type: String,
|
|
@@ -34292,6 +34667,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34292
34667
|
|
|
34293
34668
|
/**
|
|
34294
34669
|
* Accessible label for the previous month navigation button.
|
|
34670
|
+
* @default 'Previous month'
|
|
34295
34671
|
*/
|
|
34296
34672
|
navLabelPrevMonth: {
|
|
34297
34673
|
type: String,
|
|
@@ -34369,7 +34745,11 @@ class AuroDatePicker extends AuroElement {
|
|
|
34369
34745
|
},
|
|
34370
34746
|
|
|
34371
34747
|
/**
|
|
34372
|
-
* Label announced for cells after
|
|
34748
|
+
* Label announced for cells after a fully selected range (both
|
|
34749
|
+
* `dateFrom` and `dateTo` are set). While a range is still being
|
|
34750
|
+
* picked (`dateFrom` set, `dateTo` unset), focused cells past the
|
|
34751
|
+
* start use `rangeLabelEndPreview` instead.
|
|
34752
|
+
* @default 'after range'
|
|
34373
34753
|
*/
|
|
34374
34754
|
rangeLabelAfterRange: {
|
|
34375
34755
|
type: String,
|
|
@@ -34378,6 +34758,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34378
34758
|
|
|
34379
34759
|
/**
|
|
34380
34760
|
* Label announced for cells before the range start.
|
|
34761
|
+
* @default 'before range'
|
|
34381
34762
|
*/
|
|
34382
34763
|
rangeLabelBeforeRange: {
|
|
34383
34764
|
type: String,
|
|
@@ -34386,14 +34767,27 @@ class AuroDatePicker extends AuroElement {
|
|
|
34386
34767
|
|
|
34387
34768
|
/**
|
|
34388
34769
|
* Label announced for the range end date cell.
|
|
34770
|
+
* @default 'range end'
|
|
34389
34771
|
*/
|
|
34390
34772
|
rangeLabelEnd: {
|
|
34391
34773
|
type: String,
|
|
34392
34774
|
reflect: true
|
|
34393
34775
|
},
|
|
34394
34776
|
|
|
34777
|
+
/**
|
|
34778
|
+
* Label announced for the focused cell while previewing a range end
|
|
34779
|
+
* (dateFrom set, dateTo not yet selected). Tells AT users that
|
|
34780
|
+
* pressing Enter would commit this cell as the range end.
|
|
34781
|
+
* @default 'previewing range end'
|
|
34782
|
+
*/
|
|
34783
|
+
rangeLabelEndPreview: {
|
|
34784
|
+
type: String,
|
|
34785
|
+
reflect: true
|
|
34786
|
+
},
|
|
34787
|
+
|
|
34395
34788
|
/**
|
|
34396
34789
|
* Label announced for cells within the selected range.
|
|
34790
|
+
* @default 'in range'
|
|
34397
34791
|
*/
|
|
34398
34792
|
rangeLabelInRange: {
|
|
34399
34793
|
type: String,
|
|
@@ -34402,6 +34796,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34402
34796
|
|
|
34403
34797
|
/**
|
|
34404
34798
|
* Label announced for the range start date cell.
|
|
34799
|
+
* @default 'range start'
|
|
34405
34800
|
*/
|
|
34406
34801
|
rangeLabelStart: {
|
|
34407
34802
|
type: String,
|
|
@@ -34409,7 +34804,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34409
34804
|
},
|
|
34410
34805
|
|
|
34411
34806
|
/**
|
|
34412
|
-
* Dates that the user should have for reference as part of their decision
|
|
34807
|
+
* Dates that the user should have for reference as part of their decision-making when selecting a date.
|
|
34413
34808
|
* This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
|
|
34414
34809
|
*/
|
|
34415
34810
|
referenceDates: {
|
|
@@ -34766,10 +35161,26 @@ class AuroDatePicker extends AuroElement {
|
|
|
34766
35161
|
// ─── Vendor calendar time conversions ─────────────────────────────────────
|
|
34767
35162
|
|
|
34768
35163
|
/**
|
|
34769
|
-
* Converts a Unix timestamp (seconds) from the
|
|
35164
|
+
* Converts a Unix timestamp (seconds) from the vendored range-datepicker
|
|
35165
|
+
* (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
|
|
35166
|
+
*
|
|
35167
|
+
* Timezone contract:
|
|
35168
|
+
* - INPUT: `time` is assumed to be the seconds-since-epoch of **local
|
|
35169
|
+
* midnight** for the intended calendar day. The vendor's Day constructor
|
|
35170
|
+
* builds it via `date-fns format(date, 't')` from a locally-constructed
|
|
35171
|
+
* Date, so this assumption currently holds end-to-end.
|
|
35172
|
+
* - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
|
|
35173
|
+
* getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
|
|
35174
|
+
* string matches the local calendar day.
|
|
35175
|
+
*
|
|
35176
|
+
* If the vendor ever switches to emitting UTC-midnight timestamps, this
|
|
35177
|
+
* conversion will silently shift the returned date by one day in zones
|
|
35178
|
+
* west of UTC. Any vendor swap should re-verify this contract; the TZ
|
|
35179
|
+
* regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
|
|
35180
|
+
*
|
|
34770
35181
|
* @private
|
|
34771
|
-
* @param {number} time - Unix timestamp
|
|
34772
|
-
* @returns {string} ISO date string (yyyy-mm-dd).
|
|
35182
|
+
* @param {number} time - Unix timestamp (seconds), local midnight of the day.
|
|
35183
|
+
* @returns {string} ISO date string (yyyy-mm-dd) reflecting the local calendar day.
|
|
34773
35184
|
*/
|
|
34774
35185
|
convertWcTimeToDate(time) {
|
|
34775
35186
|
return dateFormatter$1.toISOFormatString(new Date(time * 1000));
|
|
@@ -34871,8 +35282,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
34871
35282
|
}
|
|
34872
35283
|
}
|
|
34873
35284
|
|
|
34874
|
-
// Focus the calendar grid wrapper (
|
|
34875
|
-
// the SR announcement for the active cell
|
|
35285
|
+
// Focus the calendar grid wrapper. The live region (announced just
|
|
35286
|
+
// below) handles the SR announcement for the active cell.
|
|
34876
35287
|
if (activeCell) {
|
|
34877
35288
|
this.calendar.focusActiveCell();
|
|
34878
35289
|
|
|
@@ -34886,11 +35297,14 @@ class AuroDatePicker extends AuroElement {
|
|
|
34886
35297
|
this.calendar.announceSelection(announcement);
|
|
34887
35298
|
}, 500);
|
|
34888
35299
|
|
|
34889
|
-
// On mobile fullscreen
|
|
34890
|
-
//
|
|
34891
|
-
//
|
|
34892
|
-
|
|
35300
|
+
// On mobile fullscreen — or when an explicit focusDate change has
|
|
35301
|
+
// requested a forced scroll on the next render — scroll the active
|
|
35302
|
+
// cell into view. Doing this here (after activeCellDate has been
|
|
35303
|
+
// resolved by the rAF loop above) prevents a no-op scroll that
|
|
35304
|
+
// would happen if we tried to scroll before the cell was set.
|
|
35305
|
+
if (this.dropdown.isBibFullscreen || this.forceScrollOnNextMobileCalendarRender) {
|
|
34893
35306
|
this.calendar.scrollToActiveCell();
|
|
35307
|
+
this.forceScrollOnNextMobileCalendarRender = false;
|
|
34894
35308
|
}
|
|
34895
35309
|
} else if (attempts < MAX_ATTEMPTS) {
|
|
34896
35310
|
requestAnimationFrame(tryFocus);
|
|
@@ -34922,11 +35336,13 @@ class AuroDatePicker extends AuroElement {
|
|
|
34922
35336
|
this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
|
|
34923
35337
|
}
|
|
34924
35338
|
|
|
35339
|
+
const { signal } = this._listenerAbortController;
|
|
35340
|
+
|
|
34925
35341
|
this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
|
|
34926
35342
|
if (!this.isPopoverVisible) {
|
|
34927
35343
|
this.dropdown.show();
|
|
34928
35344
|
}
|
|
34929
|
-
});
|
|
35345
|
+
}, { signal });
|
|
34930
35346
|
|
|
34931
35347
|
this.dropdown.addEventListener('auroDropdown-toggled', () => {
|
|
34932
35348
|
this.notifyDatepickerToggled();
|
|
@@ -34944,7 +35360,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34944
35360
|
if (this.valueObject) {
|
|
34945
35361
|
this.centralDate = this.value;
|
|
34946
35362
|
} else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
|
|
34947
|
-
this.centralDate = new Date();
|
|
35363
|
+
this.centralDate = dateFormatter$1.toISOFormatString(new Date());
|
|
34948
35364
|
}
|
|
34949
35365
|
}
|
|
34950
35366
|
|
|
@@ -35012,19 +35428,11 @@ class AuroDatePicker extends AuroElement {
|
|
|
35012
35428
|
}
|
|
35013
35429
|
}
|
|
35014
35430
|
|
|
35015
|
-
//
|
|
35016
|
-
|
|
35017
|
-
|
|
35018
|
-
|
|
35019
|
-
|
|
35020
|
-
// we need to wait until the next frame to ensure the calendar is fully rendered
|
|
35021
|
-
// and the area we're trying to scroll to is present in the DOM.
|
|
35022
|
-
setTimeout(() => {
|
|
35023
|
-
this.calendar.scrollMonthIntoView(this.calendarFocusDate);
|
|
35024
|
-
this.forceScrollOnNextMobileCalendarRender = false;
|
|
35025
|
-
}, 0);
|
|
35026
|
-
}
|
|
35027
|
-
});
|
|
35431
|
+
// Note: the forceScrollOnNextMobileCalendarRender scroll-into-view
|
|
35432
|
+
// happens inside focusActiveCellWhenReady() once activeCellDate has
|
|
35433
|
+
// been resolved by its rAF wait — not here in a setTimeout(0), which
|
|
35434
|
+
// fired before the active date was set and silently no-op'd.
|
|
35435
|
+
}, { signal });
|
|
35028
35436
|
|
|
35029
35437
|
// Handle responsive strategy changes while the dropdown is open
|
|
35030
35438
|
// (e.g. resizing from desktop → mobile or vice versa).
|
|
@@ -35071,7 +35479,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35071
35479
|
});
|
|
35072
35480
|
});
|
|
35073
35481
|
}
|
|
35074
|
-
});
|
|
35482
|
+
}, { signal });
|
|
35075
35483
|
}
|
|
35076
35484
|
|
|
35077
35485
|
/**
|
|
@@ -35084,6 +35492,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
35084
35492
|
|
|
35085
35493
|
this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
|
|
35086
35494
|
|
|
35495
|
+
const { signal } = this._listenerAbortController;
|
|
35496
|
+
|
|
35087
35497
|
this.inputList.forEach((input, index) => {
|
|
35088
35498
|
input.addEventListener('input', (event) => {
|
|
35089
35499
|
event.stopPropagation();
|
|
@@ -35095,7 +35505,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35095
35505
|
}
|
|
35096
35506
|
|
|
35097
35507
|
this.notifyValueChanged();
|
|
35098
|
-
});
|
|
35508
|
+
}, { signal });
|
|
35099
35509
|
|
|
35100
35510
|
input.addEventListener('auroFormElement-validated', (evt) => {
|
|
35101
35511
|
// not to bubble up input's validated event.
|
|
@@ -35111,7 +35521,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35111
35521
|
this.validity = evt.detail.validity;
|
|
35112
35522
|
this.errorMessage = evt.detail.message;
|
|
35113
35523
|
}
|
|
35114
|
-
});
|
|
35524
|
+
}, { signal });
|
|
35115
35525
|
});
|
|
35116
35526
|
}
|
|
35117
35527
|
|
|
@@ -35125,19 +35535,32 @@ class AuroDatePicker extends AuroElement {
|
|
|
35125
35535
|
this.calendar.datepicker = this;
|
|
35126
35536
|
this.calendar.dropdown = this.dropdown;
|
|
35127
35537
|
|
|
35538
|
+
const { signal } = this._listenerAbortController;
|
|
35539
|
+
|
|
35128
35540
|
this.calendar.addEventListener('auroCalendar-dateSelected', () => {
|
|
35129
|
-
|
|
35130
|
-
|
|
35541
|
+
// Compare the input's ISO value against the *converted* calendar
|
|
35542
|
+
// timestamp (the vendor's `dateFrom`/`dateTo` are Unix-seconds
|
|
35543
|
+
// strings — comparing the input ISO directly against them would
|
|
35544
|
+
// never match, so the write would fire on every event and emit
|
|
35545
|
+
// redundant input/change activity).
|
|
35546
|
+
if (this.calendar.dateFrom !== undefined) {
|
|
35547
|
+
const fromIso = this.convertWcTimeToDate(this.calendar.dateFrom);
|
|
35548
|
+
if (this.inputList[0].value !== fromIso) {
|
|
35549
|
+
this.inputList[0].value = fromIso;
|
|
35550
|
+
}
|
|
35131
35551
|
}
|
|
35132
35552
|
|
|
35133
|
-
if (this.inputList[1] && this.calendar.dateTo
|
|
35134
|
-
|
|
35553
|
+
if (this.inputList[1] && this.calendar.dateTo) {
|
|
35554
|
+
const toIso = this.convertWcTimeToDate(this.calendar.dateTo);
|
|
35555
|
+
if (this.inputList[1].value !== toIso) {
|
|
35556
|
+
this.inputList[1].value = toIso;
|
|
35557
|
+
}
|
|
35135
35558
|
}
|
|
35136
|
-
});
|
|
35559
|
+
}, { signal });
|
|
35137
35560
|
|
|
35138
35561
|
this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
|
|
35139
35562
|
this.dropdown.hide();
|
|
35140
|
-
});
|
|
35563
|
+
}, { signal });
|
|
35141
35564
|
|
|
35142
35565
|
this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
|
|
35143
35566
|
const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
|
|
@@ -35147,7 +35570,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35147
35570
|
}
|
|
35148
35571
|
|
|
35149
35572
|
this.notifyMonthChanged(event);
|
|
35150
|
-
});
|
|
35573
|
+
}, { signal });
|
|
35151
35574
|
}
|
|
35152
35575
|
|
|
35153
35576
|
/**
|
|
@@ -35156,10 +35579,17 @@ class AuroDatePicker extends AuroElement {
|
|
|
35156
35579
|
* @returns {void}
|
|
35157
35580
|
*/
|
|
35158
35581
|
configureDatepicker() {
|
|
35582
|
+
// These listeners are on `this` (the host), so they would GC with the
|
|
35583
|
+
// host even without the abort signal — see the leak rationale on
|
|
35584
|
+
// `_listenerAbortController`. The signal is still passed for uniform
|
|
35585
|
+
// cleanup semantics with the child-element listeners in the other
|
|
35586
|
+
// configure* methods.
|
|
35587
|
+
const { signal } = this._listenerAbortController;
|
|
35588
|
+
|
|
35159
35589
|
this.addEventListener('focusin', () => {
|
|
35160
35590
|
this.touched = true;
|
|
35161
35591
|
this.hasFocus = true;
|
|
35162
|
-
});
|
|
35592
|
+
}, { signal });
|
|
35163
35593
|
|
|
35164
35594
|
this.addEventListener('focusout', () => {
|
|
35165
35595
|
this.hasFocus = false;
|
|
@@ -35171,7 +35601,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35171
35601
|
if (!this.matches(':focus-within')) {
|
|
35172
35602
|
this.validate();
|
|
35173
35603
|
}
|
|
35174
|
-
});
|
|
35604
|
+
}, { signal });
|
|
35175
35605
|
|
|
35176
35606
|
if (this.valueObject) {
|
|
35177
35607
|
this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
|
|
@@ -35369,6 +35799,41 @@ class AuroDatePicker extends AuroElement {
|
|
|
35369
35799
|
return this.validity !== undefined && this.validity !== 'valid';
|
|
35370
35800
|
}
|
|
35371
35801
|
|
|
35802
|
+
/**
|
|
35803
|
+
* Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
|
|
35804
|
+
* spans every datepicker instance on the page; lives on the class (not
|
|
35805
|
+
* at module scope) so it stays an encapsulated implementation detail of
|
|
35806
|
+
* this component and does not interfere with WCA's class-JSDoc
|
|
35807
|
+
* attachment.
|
|
35808
|
+
* @private
|
|
35809
|
+
*/
|
|
35810
|
+
static _warnedInvalidLocales = new Set();
|
|
35811
|
+
|
|
35812
|
+
/**
|
|
35813
|
+
* Logs a one-time `console.debug` when an unsupported locale falls back to
|
|
35814
|
+
* en-US. Deduped by the offending tag so noisy re-renders that resurface
|
|
35815
|
+
* the same bad value stay quiet, but each new bad value still signals so
|
|
35816
|
+
* consumers can spot the typo or missing tag.
|
|
35817
|
+
* @private
|
|
35818
|
+
* @param {string|undefined} badLocale - The locale value that failed.
|
|
35819
|
+
* @returns {void}
|
|
35820
|
+
*/
|
|
35821
|
+
_warnInvalidLocale(badLocale) {
|
|
35822
|
+
// Stringify without coalescing — `String(undefined)` / `String(null)`
|
|
35823
|
+
// surface the actual offending value in the log, instead of the
|
|
35824
|
+
// ambiguous `Locale ""` that `String(badLocale ?? '')` would produce.
|
|
35825
|
+
// Dedup still works correctly because each unique stringification
|
|
35826
|
+
// becomes its own Set entry.
|
|
35827
|
+
const key = String(badLocale);
|
|
35828
|
+
const seen = AuroDatePicker._warnedInvalidLocales;
|
|
35829
|
+
if (seen.has(key)) {
|
|
35830
|
+
return;
|
|
35831
|
+
}
|
|
35832
|
+
seen.add(key);
|
|
35833
|
+
// eslint-disable-next-line no-console
|
|
35834
|
+
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".`);
|
|
35835
|
+
}
|
|
35836
|
+
|
|
35372
35837
|
/**
|
|
35373
35838
|
* Lifecycle method to check if the locale is valid.
|
|
35374
35839
|
* @ignore
|
|
@@ -35379,10 +35844,15 @@ class AuroDatePicker extends AuroElement {
|
|
|
35379
35844
|
if (changedProperties.has('locale')) {
|
|
35380
35845
|
try {
|
|
35381
35846
|
const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
|
|
35382
|
-
|
|
35847
|
+
if (supported.length > 0) {
|
|
35848
|
+
this._validLocale = this.locale;
|
|
35849
|
+
} else {
|
|
35850
|
+
this._validLocale = 'en-US';
|
|
35851
|
+
this._warnInvalidLocale(this.locale);
|
|
35852
|
+
}
|
|
35383
35853
|
} catch {
|
|
35384
|
-
console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
|
|
35385
35854
|
this._validLocale = 'en-US';
|
|
35855
|
+
this._warnInvalidLocale(this.locale);
|
|
35386
35856
|
}
|
|
35387
35857
|
|
|
35388
35858
|
const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
|
|
@@ -35464,8 +35934,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
35464
35934
|
// Skip centralDate update when user clicked a cell in range mode
|
|
35465
35935
|
// to prevent the displayed months from shifting
|
|
35466
35936
|
this.centralDate = this.value;
|
|
35467
|
-
//TODO: TEST THIS CHANGE
|
|
35468
|
-
// this.calendarRenderUtil.updateCentralDate(this, this.value);
|
|
35469
35937
|
}
|
|
35470
35938
|
|
|
35471
35939
|
this.setHasValue();
|
|
@@ -35499,7 +35967,9 @@ class AuroDatePicker extends AuroElement {
|
|
|
35499
35967
|
// update the calendar
|
|
35500
35968
|
if (this.valueEndObject) {
|
|
35501
35969
|
this.calendar.dateTo = this.convertToWcValidTime(this.valueEndObject);
|
|
35502
|
-
|
|
35970
|
+
if (!this.wasCellClick) {
|
|
35971
|
+
this.calendarRenderUtil.updateCentralDate(this, this.valueEndObject);
|
|
35972
|
+
}
|
|
35503
35973
|
} else {
|
|
35504
35974
|
if (this.inputList[1].value !== this.valueEnd) {
|
|
35505
35975
|
this.inputList[1].value = this.valueEnd || '';
|
|
@@ -35523,8 +35993,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
35523
35993
|
// Skip centralDate update when user clicked a cell in range mode
|
|
35524
35994
|
// to prevent the displayed months from shifting
|
|
35525
35995
|
this.centralDate = this.valueEnd;
|
|
35526
|
-
// TODO: TEST THIS CHANGE
|
|
35527
|
-
// this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
|
|
35528
35996
|
}
|
|
35529
35997
|
|
|
35530
35998
|
this.validate();
|
|
@@ -35666,7 +36134,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35666
36134
|
* @returns {void}
|
|
35667
36135
|
*/
|
|
35668
36136
|
configureClickHandler() {
|
|
35669
|
-
this.addEventListener('click', this.handleClick);
|
|
36137
|
+
this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
|
|
35670
36138
|
}
|
|
35671
36139
|
|
|
35672
36140
|
firstUpdated() {
|
|
@@ -35674,6 +36142,15 @@ class AuroDatePicker extends AuroElement {
|
|
|
35674
36142
|
// Add the tag name as an attribute if it is different than the component name
|
|
35675
36143
|
this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
|
|
35676
36144
|
|
|
36145
|
+
// If the element was disconnected before this first render finished,
|
|
36146
|
+
// disconnectedCallback's microtask already aborted the controller. The
|
|
36147
|
+
// connectedCallback reinit guard skips that case because `hasUpdated`
|
|
36148
|
+
// is still false. Mint a fresh controller here so configure* registers
|
|
36149
|
+
// listeners against a live signal.
|
|
36150
|
+
if (this._listenerAbortController.signal.aborted) {
|
|
36151
|
+
this._listenerAbortController = new AbortController();
|
|
36152
|
+
}
|
|
36153
|
+
|
|
35677
36154
|
this.configureDropdown();
|
|
35678
36155
|
this.configureInput();
|
|
35679
36156
|
this.configureCalendar();
|
|
@@ -35685,9 +36162,36 @@ class AuroDatePicker extends AuroElement {
|
|
|
35685
36162
|
connectedCallback() {
|
|
35686
36163
|
super.connectedCallback();
|
|
35687
36164
|
|
|
36165
|
+
// True reconnect after `disconnectedCallback` aborted our controller:
|
|
36166
|
+
// the existing signal is dead, so listeners registered against it
|
|
36167
|
+
// would never fire. Create a fresh controller and re-run the
|
|
36168
|
+
// configure* wiring (each method is idempotent — it just re-caches
|
|
36169
|
+
// child refs and re-registers listeners against the new signal).
|
|
36170
|
+
// `hasUpdated` gates this so the *first* connect (which precedes
|
|
36171
|
+
// firstUpdated) still falls through to firstUpdated's initial wiring.
|
|
36172
|
+
if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
|
|
36173
|
+
this._listenerAbortController = new AbortController();
|
|
36174
|
+
this.configureDropdown();
|
|
36175
|
+
this.configureInput();
|
|
36176
|
+
this.configureCalendar();
|
|
36177
|
+
this.configureDatepicker();
|
|
36178
|
+
this.configureClickHandler();
|
|
36179
|
+
}
|
|
36180
|
+
|
|
35688
36181
|
this.locale = this.domHandler.getLocale(this);
|
|
35689
36182
|
}
|
|
35690
36183
|
|
|
36184
|
+
disconnectedCallback() {
|
|
36185
|
+
super.disconnectedCallback();
|
|
36186
|
+
// Defer so that re-parenting (auro-drawer slotting it into a dialog,
|
|
36187
|
+
// for example) does not abort listeners we still need after reconnect.
|
|
36188
|
+
queueMicrotask(() => {
|
|
36189
|
+
if (!this.isConnected) {
|
|
36190
|
+
this._listenerAbortController.abort();
|
|
36191
|
+
}
|
|
36192
|
+
});
|
|
36193
|
+
}
|
|
36194
|
+
|
|
35691
36195
|
// layout render methods
|
|
35692
36196
|
// ------------------------------------
|
|
35693
36197
|
|
|
@@ -35894,6 +36398,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35894
36398
|
}
|
|
35895
36399
|
<span slot="ariaLabel.clear">${this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || i18n(this.lang, 'clearInput')}</span>
|
|
35896
36400
|
<span slot="label"><slot name="fromLabel"></slot></span>
|
|
36401
|
+
<slot name="optionalFromLabel" slot="optionalLabel"> (optional)</slot>
|
|
35897
36402
|
</${this.inputTag}>
|
|
35898
36403
|
</div>
|
|
35899
36404
|
|
|
@@ -35938,6 +36443,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35938
36443
|
}
|
|
35939
36444
|
<span slot="ariaLabel.clear">${this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || this.runtimeUtils.getSlotText(this, 'ariaLabel.input.clear') || i18n(this.lang, 'clearInput')}</span>
|
|
35940
36445
|
<span slot="label"><slot name="toLabel"></slot></span>
|
|
36446
|
+
<slot name="optionalToLabel" slot="optionalLabel"> (optional)</slot>
|
|
35941
36447
|
</${this.inputTag}>
|
|
35942
36448
|
</div>
|
|
35943
36449
|
` : undefined}
|