@aurodesignsystem-dev/auro-formkit 0.0.0-pr1510.3 → 0.0.0-pr1512.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/checkbox/demo/customize.js +22 -0
- package/components/checkbox/demo/customize.min.js +1 -1
- package/components/checkbox/demo/demo-support.js +1 -0
- package/components/checkbox/demo/getting-started.js +22 -0
- package/components/checkbox/demo/getting-started.min.js +1 -1
- package/components/checkbox/demo/index.js +8 -0
- package/components/checkbox/demo/index.min.js +1 -1
- package/components/checkbox/demo/styles.scss +1 -0
- package/components/checkbox/dist/index.js +1 -1
- package/components/checkbox/dist/registered.js +1 -1
- package/components/combobox/demo/customize.js +24 -0
- package/components/combobox/demo/customize.min.js +119 -96
- package/components/combobox/demo/demo-support.js +1 -0
- package/components/combobox/demo/getting-started.js +21 -0
- package/components/combobox/demo/getting-started.min.js +119 -96
- package/components/combobox/demo/index.js +23 -0
- package/components/combobox/demo/index.min.js +119 -96
- package/components/combobox/demo/styles.scss +1 -0
- package/components/combobox/dist/index.js +118 -95
- package/components/combobox/dist/registered.js +118 -95
- package/components/counter/demo/customize.js +21 -0
- package/components/counter/demo/customize.min.js +2 -2
- package/components/counter/demo/demo-support.js +1 -0
- package/components/counter/demo/index.js +21 -0
- package/components/counter/demo/index.min.js +2 -2
- package/components/counter/demo/styles.scss +1 -0
- package/components/counter/dist/index.js +2 -2
- package/components/counter/dist/registered.js +2 -2
- package/components/datepicker/demo/accessibility.md +1 -2
- package/components/datepicker/demo/api.md +62 -63
- package/components/datepicker/demo/customize.js +17 -0
- package/components/datepicker/demo/customize.md +1 -12
- package/components/datepicker/demo/customize.min.js +335 -702
- package/components/datepicker/demo/demo-support.js +1 -0
- package/components/datepicker/demo/index.js +23 -0
- package/components/datepicker/demo/index.min.js +335 -702
- package/components/datepicker/demo/styles.scss +1 -0
- package/components/datepicker/dist/index.js +335 -702
- package/components/datepicker/dist/registered.js +335 -702
- package/components/datepicker/dist/{auro-calendar-cell.d.ts → src/auro-calendar-cell.d.ts} +3 -14
- package/components/datepicker/dist/{auro-calendar.d.ts → src/auro-calendar.d.ts} +6 -90
- package/components/datepicker/dist/{auro-datepicker.d.ts → src/auro-datepicker.d.ts} +5 -78
- package/components/dropdown/demo/customize.js +9 -0
- package/components/dropdown/demo/customize.min.js +1 -1
- package/components/dropdown/demo/demo-support.js +1 -0
- package/components/dropdown/demo/getting-started.js +9 -0
- package/components/dropdown/demo/getting-started.min.js +1 -1
- package/components/dropdown/demo/index.js +16 -0
- package/components/dropdown/demo/index.min.js +1 -1
- package/components/dropdown/demo/styles.scss +1 -0
- package/components/dropdown/dist/index.js +1 -1
- package/components/dropdown/dist/registered.js +1 -1
- package/components/form/demo/customize.js +28 -0
- package/components/form/demo/customize.min.js +583 -904
- package/components/form/demo/demo-support.js +1 -0
- package/components/form/demo/getting-started.js +9 -0
- package/components/form/demo/getting-started.min.js +583 -904
- package/components/form/demo/index.js +5 -0
- package/components/form/demo/index.min.js +583 -904
- package/components/form/demo/registerDemoDeps.js +23 -0
- package/components/form/demo/registerDemoDeps.min.js +583 -904
- package/components/form/demo/styles.scss +1 -0
- package/components/input/demo/api.md +5 -5
- package/components/input/demo/customize.js +25 -0
- package/components/input/demo/customize.md +8 -8
- package/components/input/demo/customize.min.js +116 -93
- package/components/input/demo/demo-support.js +1 -0
- package/components/input/demo/getting-started.js +8 -0
- package/components/input/demo/getting-started.min.js +116 -93
- package/components/input/demo/index.js +8 -0
- package/components/input/demo/index.min.js +116 -93
- package/components/input/demo/styles.css +974 -0
- package/components/input/demo/styles.scss +1 -0
- package/components/input/dist/base-input.d.ts +33 -44
- package/components/input/dist/index.js +129 -94
- package/components/input/dist/registered.js +116 -93
- package/components/menu/demo/demo-support.js +1 -0
- package/components/menu/demo/index.js +25 -0
- package/components/menu/demo/styles.scss +1 -0
- package/components/radio/demo/customize.js +22 -0
- package/components/radio/demo/customize.min.js +1 -1
- package/components/radio/demo/demo-support.js +1 -0
- package/components/radio/demo/getting-started.js +24 -0
- package/components/radio/demo/getting-started.min.js +1 -1
- package/components/radio/demo/index.js +8 -0
- package/components/radio/demo/index.min.js +1 -1
- package/components/radio/demo/styles.scss +1 -0
- package/components/radio/dist/index.js +1 -1
- package/components/radio/dist/registered.js +1 -1
- package/components/select/demo/customize.js +11 -0
- package/components/select/demo/customize.min.js +2 -2
- package/components/select/demo/demo-support.js +1 -0
- package/components/select/demo/getting-started.js +26 -0
- package/components/select/demo/getting-started.min.js +2 -2
- package/components/select/demo/index.js +11 -0
- package/components/select/demo/index.min.js +2 -2
- package/components/select/demo/styles.scss +1 -0
- package/components/select/dist/index.js +2 -2
- package/components/select/dist/registered.js +2 -2
- package/custom-elements.json +2146 -2218
- package/package.json +2 -6
- package/components/datepicker/dist/blackoutUtils.d.ts +0 -43
- /package/components/datepicker/dist/{auro-calendar-month.d.ts → src/auro-calendar-month.d.ts} +0 -0
- /package/components/datepicker/dist/{buttonVersion.d.ts → src/buttonVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{datepickerKeyboardStrategy.d.ts → src/datepickerKeyboardStrategy.d.ts} +0 -0
- /package/components/datepicker/dist/{iconVersion.d.ts → src/iconVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/components/datepicker/dist/{popoverVersion.d.ts → src/popoverVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/classic/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/classic/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/color-calendar-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/color-cell-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/color-month-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/shapeSize-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/snowflake/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/snowflake/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/style-auro-calendar-cell-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/style-auro-calendar-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/style-auro-calendar-month-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{styles → src/styles}/tokens-css.d.ts +0 -0
- /package/components/datepicker/dist/{utilities.d.ts → src/utilities.d.ts} +0 -0
- /package/components/datepicker/dist/{utilitiesCalendar.d.ts → src/utilitiesCalendar.d.ts} +0 -0
- /package/components/datepicker/dist/{utilitiesCalendarRender.d.ts → src/utilitiesCalendarRender.d.ts} +0 -0
- /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/day.d.ts +0 -0
- /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
- /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
- /package/components/datepicker/dist/{vendor → src/vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
|
@@ -1356,7 +1356,7 @@ function normalizeDates$1(context, ...dates) {
|
|
|
1356
1356
|
* const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
|
|
1357
1357
|
* //=> Tue Sep 02 2014 00:00:00
|
|
1358
1358
|
*/
|
|
1359
|
-
function startOfDay$
|
|
1359
|
+
function startOfDay$2(date, options) {
|
|
1360
1360
|
const _date = toDate$1(date, options?.in);
|
|
1361
1361
|
_date.setHours(0, 0, 0, 0);
|
|
1362
1362
|
return _date;
|
|
@@ -1404,8 +1404,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
|
|
|
1404
1404
|
earlierDate,
|
|
1405
1405
|
);
|
|
1406
1406
|
|
|
1407
|
-
const laterStartOfDay = startOfDay$
|
|
1408
|
-
const earlierStartOfDay = startOfDay$
|
|
1407
|
+
const laterStartOfDay = startOfDay$2(laterDate_);
|
|
1408
|
+
const earlierStartOfDay = startOfDay$2(earlierDate_);
|
|
1409
1409
|
|
|
1410
1410
|
const laterTimestamp =
|
|
1411
1411
|
+laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
|
|
@@ -10507,6 +10507,13 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
10507
10507
|
* @returns {string | undefined}
|
|
10508
10508
|
*/
|
|
10509
10509
|
toFormattedValue(valueObject, format) {
|
|
10510
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
10511
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
10512
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
10513
|
+
// as "no format → no display value".
|
|
10514
|
+
if (!format) {
|
|
10515
|
+
return undefined;
|
|
10516
|
+
}
|
|
10510
10517
|
const normalizedFormat = format.toLowerCase();
|
|
10511
10518
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
10512
10519
|
|
|
@@ -10862,8 +10869,8 @@ class RangeDatepickerCell extends LitElement {
|
|
|
10862
10869
|
const parsedDateFrom = parseInt(dateFrom, 10);
|
|
10863
10870
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
10864
10871
|
if (day) {
|
|
10865
|
-
if (getTime(startOfDay$
|
|
10866
|
-
getTime(startOfDay$
|
|
10872
|
+
if (getTime(startOfDay$2(parsedDateTo * 1000)) / 1000 === day.date ||
|
|
10873
|
+
getTime(startOfDay$2(parsedDateFrom * 1000)) / 1000 === day.date) {
|
|
10867
10874
|
this.selected = true;
|
|
10868
10875
|
}
|
|
10869
10876
|
if (((hoveredDate === day.date || day.date < hoveredDate) &&
|
|
@@ -11051,7 +11058,7 @@ class RangeDatepickerCalendar extends LitElement {
|
|
|
11051
11058
|
this.dayNamesOfTheWeek = [];
|
|
11052
11059
|
this.daysOfMonth = [];
|
|
11053
11060
|
this._locale = null;
|
|
11054
|
-
this.currentDate = parseInt(format$1(startOfDay$
|
|
11061
|
+
this.currentDate = parseInt(format$1(startOfDay$2(Date.now()), 't'), 10);
|
|
11055
11062
|
this.localeChanged();
|
|
11056
11063
|
this.yearAndMonthChanged(this.year, this.month);
|
|
11057
11064
|
}
|
|
@@ -11525,7 +11532,7 @@ __decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "dayN
|
|
|
11525
11532
|
__decorate([property({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
|
|
11526
11533
|
AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
|
|
11527
11534
|
|
|
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.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}`;
|
|
11535
|
+
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}`;
|
|
11529
11536
|
|
|
11530
11537
|
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
11538
|
|
|
@@ -11550,104 +11557,14 @@ class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,cl
|
|
|
11550
11557
|
|
|
11551
11558
|
var popoverVersion = '6.0.1';
|
|
11552
11559
|
|
|
11553
|
-
/**
|
|
11554
|
-
* Single source of truth for parsing and matching blackout dates across the
|
|
11555
|
-
* datepicker. Both `auro-calendar` (memoized Set + `isDateBlackout`) and the
|
|
11556
|
-
* pre-`firstUpdated` fallback inside `auro-calendar-cell` route through these
|
|
11557
|
-
* helpers so the YYYY-MM-DD → seconds conversion and the merge-with-legacy
|
|
11558
|
-
* `disabledDays` rules are defined exactly once.
|
|
11559
|
-
*/
|
|
11560
|
-
|
|
11561
|
-
/**
|
|
11562
|
-
* Converts a `YYYY-MM-DD` ISO date string to a Unix timestamp (seconds)
|
|
11563
|
-
* representing local midnight on that calendar day. Returns `null` for
|
|
11564
|
-
* inputs that don't parse to a finite timestamp.
|
|
11565
|
-
*
|
|
11566
|
-
* Uses the `new Date(year, monthIndex, day)` constructor (NOT
|
|
11567
|
-
* `new Date(isoStr)`) so the result is local-midnight rather than UTC
|
|
11568
|
-
* midnight — required to keep the calendar grid aligned with the user's
|
|
11569
|
-
* local calendar day in negative-offset timezones.
|
|
11570
|
-
*
|
|
11571
|
-
* @param {string} isoStr - Date string in `YYYY-MM-DD` format.
|
|
11572
|
-
* @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
|
|
11573
|
-
*/
|
|
11574
|
-
function parseIsoToTimestamp(isoStr) {
|
|
11575
|
-
if (typeof isoStr !== 'string') {
|
|
11576
|
-
return null;
|
|
11577
|
-
}
|
|
11578
|
-
const parts = isoStr.split('-');
|
|
11579
|
-
if (parts.length !== 3) {
|
|
11580
|
-
return null;
|
|
11581
|
-
}
|
|
11582
|
-
const year = parseInt(parts[0], 10);
|
|
11583
|
-
const month = parseInt(parts[1], 10);
|
|
11584
|
-
const day = parseInt(parts[2], 10);
|
|
11585
|
-
if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
|
|
11586
|
-
return null;
|
|
11587
|
-
}
|
|
11588
|
-
// Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
|
|
11589
|
-
// silently normalizes those to a different calendar day, which would
|
|
11590
|
-
// disable the wrong date if we let the result through.
|
|
11591
|
-
if (month < 1 || month > 12 || day < 1 || day > 31) {
|
|
11592
|
-
return null;
|
|
11593
|
-
}
|
|
11594
|
-
const date = new Date(year, month - 1, day);
|
|
11595
|
-
// Guard the residual case where JS still rolls a value (e.g. Feb 30 → Mar 2).
|
|
11596
|
-
// After construction, getFullYear/getMonth/getDate should match the inputs.
|
|
11597
|
-
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
11598
|
-
return null;
|
|
11599
|
-
}
|
|
11600
|
-
const ts = Math.floor(date.getTime() / 1000);
|
|
11601
|
-
return Number.isFinite(ts) ? ts : null;
|
|
11602
|
-
}
|
|
11603
|
-
|
|
11604
|
-
/**
|
|
11605
|
-
* Builds a `Set<number>` of seconds-since-epoch timestamps covering both the
|
|
11606
|
-
* legacy `disabledDays` (already-numeric) array and the ISO `blackoutDates`
|
|
11607
|
-
* array. Use this for O(1) membership checks in hot paths.
|
|
11608
|
-
*
|
|
11609
|
-
* @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
|
|
11610
|
-
* @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
|
|
11611
|
-
* @returns {Set<number>}
|
|
11612
|
-
*/
|
|
11613
|
-
function buildBlackoutSet(disabledDays, blackoutDates) {
|
|
11614
|
-
const set = new Set();
|
|
11615
|
-
if (Array.isArray(disabledDays)) {
|
|
11616
|
-
for (const day of disabledDays) {
|
|
11617
|
-
const ts = parseInt(day, 10);
|
|
11618
|
-
if (Number.isFinite(ts)) {
|
|
11619
|
-
set.add(ts);
|
|
11620
|
-
}
|
|
11621
|
-
}
|
|
11622
|
-
}
|
|
11623
|
-
if (Array.isArray(blackoutDates)) {
|
|
11624
|
-
for (const isoStr of blackoutDates) {
|
|
11625
|
-
const ts = parseIsoToTimestamp(isoStr);
|
|
11626
|
-
if (ts !== null) {
|
|
11627
|
-
set.add(ts);
|
|
11628
|
-
}
|
|
11629
|
-
}
|
|
11630
|
-
}
|
|
11631
|
-
return set;
|
|
11632
|
-
}
|
|
11633
|
-
|
|
11634
|
-
/**
|
|
11635
|
-
* One-shot membership test for a single timestamp against both blackout
|
|
11636
|
-
* sources. Allocates a Set on each call; only use this in cold paths
|
|
11637
|
-
* (e.g. the pre-`firstUpdated` cell fallback). Hot paths should hold the
|
|
11638
|
-
* Set returned from `buildBlackoutSet` and `.has(ts)` directly.
|
|
11639
|
-
*
|
|
11640
|
-
* @param {number} dateTs - Unix timestamp (seconds) to test.
|
|
11641
|
-
* @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
|
|
11642
|
-
* @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
|
|
11643
|
-
* @returns {boolean}
|
|
11644
|
-
*/
|
|
11645
|
-
function isBlackoutTimestamp(dateTs, disabledDays, blackoutDates) {
|
|
11646
|
-
return buildBlackoutSet(disabledDays, blackoutDates).has(dateTs);
|
|
11647
|
-
}
|
|
11648
|
-
|
|
11649
11560
|
/* 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 */
|
|
11650
11561
|
|
|
11562
|
+
const startOfDay$1 = (ms) => {
|
|
11563
|
+
const date = new Date(ms);
|
|
11564
|
+
date.setHours(0, 0, 0, 0);
|
|
11565
|
+
return date.getTime();
|
|
11566
|
+
};
|
|
11567
|
+
|
|
11651
11568
|
class AuroCalendarCell extends LitElement {
|
|
11652
11569
|
constructor() {
|
|
11653
11570
|
super();
|
|
@@ -11694,14 +11611,6 @@ class AuroCalendarCell extends LitElement {
|
|
|
11694
11611
|
type: Boolean,
|
|
11695
11612
|
reflect: true
|
|
11696
11613
|
},
|
|
11697
|
-
/**
|
|
11698
|
-
* @deprecated Propagated from the legacy `auro-calendar.disabledDays`
|
|
11699
|
-
* Unix-timestamp array. The cell honors it for backward compatibility
|
|
11700
|
-
* (see the divergence-check fallback inside `isBlackout`), but
|
|
11701
|
-
* consumers should migrate to `auro-datepicker.blackoutDates`
|
|
11702
|
-
* (YYYY-MM-DD ISO strings). The calendar emits a one-time
|
|
11703
|
-
* deprecation warning the first time a non-empty value is observed.
|
|
11704
|
-
*/
|
|
11705
11614
|
disabledDays: { type: Array },
|
|
11706
11615
|
isCurrentDate: { type: Boolean },
|
|
11707
11616
|
locale: { type: String },
|
|
@@ -11747,8 +11656,8 @@ class AuroCalendarCell extends LitElement {
|
|
|
11747
11656
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
11748
11657
|
|
|
11749
11658
|
if (day) {
|
|
11750
|
-
const departTimestamp =
|
|
11751
|
-
const returnTimestamp =
|
|
11659
|
+
const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
|
|
11660
|
+
const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
|
|
11752
11661
|
|
|
11753
11662
|
if (day.date === departTimestamp || day.date === returnTimestamp) {
|
|
11754
11663
|
this.selected = true;
|
|
@@ -11832,33 +11741,27 @@ class AuroCalendarCell extends LitElement {
|
|
|
11832
11741
|
return false;
|
|
11833
11742
|
}
|
|
11834
11743
|
|
|
11835
|
-
//
|
|
11836
|
-
|
|
11837
|
-
|
|
11838
|
-
|
|
11839
|
-
|
|
11840
|
-
|
|
11744
|
+
// Check against disabledDays timestamps (legacy path)
|
|
11745
|
+
if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
|
|
11746
|
+
(this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
|
|
11747
|
+
return true;
|
|
11748
|
+
}
|
|
11749
|
+
|
|
11750
|
+
// Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
|
|
11751
|
+
const blackoutDates = this.datepicker?.blackoutDates;
|
|
11752
|
+
|
|
11753
|
+
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
11754
|
+
const date = new Date(this.day.date * 1000);
|
|
11755
|
+
const yyyy = date.getFullYear();
|
|
11756
|
+
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
11757
|
+
const dd = String(date.getDate()).padStart(2, '0');
|
|
11758
|
+
const cellDate = `${yyyy}-${mm}-${dd}`;
|
|
11759
|
+
if (blackoutDates.includes(cellDate)) {
|
|
11841
11760
|
return true;
|
|
11842
11761
|
}
|
|
11843
|
-
// If the cell's local disabledDays diverged from the calendar's (a
|
|
11844
|
-
// consumer or test mutated cell.disabledDays directly), the Set does
|
|
11845
|
-
// not reflect that addition — fall through to the per-cell scan only
|
|
11846
|
-
// when the reference no longer matches. Production data flow keeps
|
|
11847
|
-
// these identical, so this branch stays cold. Guarded with
|
|
11848
|
-
// Array.isArray to match `_getBlackoutSet`'s contract: non-array
|
|
11849
|
-
// values are treated as empty rather than crashing on `.findIndex`.
|
|
11850
|
-
if (Array.isArray(this.disabledDays) && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
|
|
11851
|
-
if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
|
|
11852
|
-
return true;
|
|
11853
|
-
}
|
|
11854
|
-
}
|
|
11855
|
-
return false;
|
|
11856
11762
|
}
|
|
11857
11763
|
|
|
11858
|
-
|
|
11859
|
-
// ancestor calendar is wired up. Routes through the shared
|
|
11860
|
-
// blackoutUtils helper so the parsing rules stay in one place.
|
|
11861
|
-
return isBlackoutTimestamp(this.day.date, this.disabledDays, this.datepicker?.blackoutDates);
|
|
11764
|
+
return false;
|
|
11862
11765
|
}
|
|
11863
11766
|
|
|
11864
11767
|
/**
|
|
@@ -11964,12 +11867,12 @@ class AuroCalendarCell extends LitElement {
|
|
|
11964
11867
|
const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
|
|
11965
11868
|
if (!Number.isFinite(parsedDateFrom)) return null;
|
|
11966
11869
|
|
|
11967
|
-
const departTimestamp =
|
|
11870
|
+
const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
|
|
11968
11871
|
const dayDate = this.day.date;
|
|
11969
11872
|
|
|
11970
11873
|
const parsedDateTo = Number.parseInt(this.dateTo, 10);
|
|
11971
11874
|
const hasDateTo = Number.isFinite(parsedDateTo);
|
|
11972
|
-
const returnTimestamp = hasDateTo ?
|
|
11875
|
+
const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
|
|
11973
11876
|
|
|
11974
11877
|
if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
|
|
11975
11878
|
|
|
@@ -11979,9 +11882,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
11979
11882
|
|
|
11980
11883
|
if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
|
|
11981
11884
|
|
|
11982
|
-
|
|
11983
|
-
|
|
11984
|
-
// After end date when both dateFrom and dateTo are set.
|
|
11885
|
+
// After start date, no end date yet, or after end date
|
|
11985
11886
|
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
11986
11887
|
}
|
|
11987
11888
|
|
|
@@ -11994,7 +11895,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
11994
11895
|
*/
|
|
11995
11896
|
isDepartDate(day, dateFrom) {
|
|
11996
11897
|
const parsedDateFrom = parseInt(dateFrom, 10);
|
|
11997
|
-
const departTimestamp =
|
|
11898
|
+
const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
|
|
11998
11899
|
|
|
11999
11900
|
return this.selected && day.date === departTimestamp;
|
|
12000
11901
|
}
|
|
@@ -12009,7 +11910,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
12009
11910
|
*/
|
|
12010
11911
|
isReturnDate(day, dateFrom, dateTo) {
|
|
12011
11912
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
12012
|
-
const returnTimestamp =
|
|
11913
|
+
const returnTimestamp = startOfDay$1(parsedDateTo * 1000) / 1000;
|
|
12013
11914
|
|
|
12014
11915
|
return this.selected && day.date === returnTimestamp && dateFrom;
|
|
12015
11916
|
}
|
|
@@ -12173,7 +12074,6 @@ class AuroCalendarCell extends LitElement {
|
|
|
12173
12074
|
setTimeout(() => this.firstUpdated(), 0);
|
|
12174
12075
|
return;
|
|
12175
12076
|
}
|
|
12176
|
-
this.calendar = calendar;
|
|
12177
12077
|
this.datepicker = calendar.datepicker;
|
|
12178
12078
|
this._slotContentHandler = () => {
|
|
12179
12079
|
this.handleSlotContent();
|
|
@@ -12231,13 +12131,12 @@ class AuroCalendarCell extends LitElement {
|
|
|
12231
12131
|
this._cachedButton = this.shadowRoot.querySelector('button.day');
|
|
12232
12132
|
});
|
|
12233
12133
|
|
|
12234
|
-
//
|
|
12134
|
+
// Update host-level aria attributes for ariaActiveDescendantElement.
|
|
12235
12135
|
this.updateHostAria();
|
|
12236
12136
|
}
|
|
12237
12137
|
|
|
12238
12138
|
// Update host aria when selection changes (aria-selected, range labels)
|
|
12239
|
-
|
|
12240
|
-
if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
|
|
12139
|
+
if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
|
|
12241
12140
|
this.updateHostAria();
|
|
12242
12141
|
}
|
|
12243
12142
|
|
|
@@ -12248,8 +12147,8 @@ class AuroCalendarCell extends LitElement {
|
|
|
12248
12147
|
}
|
|
12249
12148
|
|
|
12250
12149
|
/**
|
|
12251
|
-
*
|
|
12252
|
-
*
|
|
12150
|
+
* Updates ARIA attributes on the host element so that
|
|
12151
|
+
* ariaActiveDescendantElement can expose cell info to the SR.
|
|
12253
12152
|
* @private
|
|
12254
12153
|
* @returns {void}
|
|
12255
12154
|
*/
|
|
@@ -12258,27 +12157,16 @@ class AuroCalendarCell extends LitElement {
|
|
|
12258
12157
|
|
|
12259
12158
|
const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
|
|
12260
12159
|
if (outOfRange) {
|
|
12261
|
-
// Strip every aria attribute the in-range branch may have set on a
|
|
12262
|
-
// previous render — if a cell flips from in-range to out-of-range
|
|
12263
|
-
// (calendar shifts months, minDate/maxDate change, etc.).
|
|
12264
12160
|
this.removeAttribute('role');
|
|
12265
12161
|
this.removeAttribute('aria-label');
|
|
12266
|
-
this.removeAttribute('aria-current');
|
|
12267
|
-
this.removeAttribute('aria-selected');
|
|
12268
|
-
this.removeAttribute('aria-disabled');
|
|
12269
12162
|
return;
|
|
12270
12163
|
}
|
|
12271
12164
|
|
|
12165
|
+
// The host acts as the gridcell for ariaActiveDescendantElement.
|
|
12272
12166
|
this.setAttribute('role', 'gridcell');
|
|
12273
12167
|
this.setAttribute('aria-label', this.getAriaLabel());
|
|
12274
12168
|
this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
|
|
12275
12169
|
|
|
12276
|
-
if (this.isCurrentDate) {
|
|
12277
|
-
this.setAttribute('aria-current', 'date');
|
|
12278
|
-
} else {
|
|
12279
|
-
this.removeAttribute('aria-current');
|
|
12280
|
-
}
|
|
12281
|
-
|
|
12282
12170
|
if (this.isBlackout()) {
|
|
12283
12171
|
this.setAttribute('aria-disabled', 'true');
|
|
12284
12172
|
} else {
|
|
@@ -12293,7 +12181,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
12293
12181
|
* @returns {void}
|
|
12294
12182
|
*/
|
|
12295
12183
|
focusButton() {
|
|
12296
|
-
const button = this._cachedButton || this.shadowRoot.querySelector('button:not([
|
|
12184
|
+
const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
|
|
12297
12185
|
if (button) {
|
|
12298
12186
|
button.focus({ focusVisible: true });
|
|
12299
12187
|
}
|
|
@@ -12301,9 +12189,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
12301
12189
|
|
|
12302
12190
|
/**
|
|
12303
12191
|
* Imperatively marks this cell as active without triggering a Lit re-render.
|
|
12304
|
-
*
|
|
12305
|
-
* arrow keys move the active cell imperatively and the live region carries
|
|
12306
|
-
* the SR announcement.
|
|
12192
|
+
* Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
|
|
12307
12193
|
* @returns {void}
|
|
12308
12194
|
*/
|
|
12309
12195
|
setActive() {
|
|
@@ -12345,13 +12231,10 @@ class AuroCalendarCell extends LitElement {
|
|
|
12345
12231
|
if (!btn || !this.day) return;
|
|
12346
12232
|
|
|
12347
12233
|
const dayDate = this.day.date;
|
|
12348
|
-
const departTimestamp =
|
|
12234
|
+
const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
|
|
12349
12235
|
const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
|
|
12350
|
-
|
|
12351
|
-
|
|
12352
|
-
// rangeDepartDate and lastHoveredDate.
|
|
12353
|
-
const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
|
|
12354
|
-
const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
|
|
12236
|
+
const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
|
|
12237
|
+
const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
|
|
12355
12238
|
|
|
12356
12239
|
btn.classList.toggle('inRange', isInRange);
|
|
12357
12240
|
btn.classList.toggle('lastHoveredDate', isLastHovered);
|
|
@@ -12409,6 +12292,7 @@ class AuroCalendarCell extends LitElement {
|
|
|
12409
12292
|
@focus="${outOfRange ? undefined : this.handleFocus}"
|
|
12410
12293
|
class="${classMap(buttonClasses)}"
|
|
12411
12294
|
?disabled="${outOfRange}"
|
|
12295
|
+
aria-hidden="${outOfRange ? 'true' : nothing}"
|
|
12412
12296
|
tabindex="-1">
|
|
12413
12297
|
<div class="buttonWrapper" aria-hidden="true">
|
|
12414
12298
|
<div class="currentDayMarker">${this.day?.title || nothing}</div>
|
|
@@ -13514,7 +13398,7 @@ class AuroBibtemplate extends LitElement {
|
|
|
13514
13398
|
}
|
|
13515
13399
|
}
|
|
13516
13400
|
|
|
13517
|
-
var formkitVersion$2 = '
|
|
13401
|
+
var formkitVersion$2 = '202606252337';
|
|
13518
13402
|
|
|
13519
13403
|
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}
|
|
13520
13404
|
`,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}}
|
|
@@ -13637,11 +13521,7 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13637
13521
|
this.calendarRangeMonths = null;
|
|
13638
13522
|
|
|
13639
13523
|
/**
|
|
13640
|
-
*
|
|
13641
|
-
* `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
|
|
13642
|
-
* timestamps is still honored for backward compatibility but emits a
|
|
13643
|
-
* one-time `console.debug` the first time a non-empty value is observed.
|
|
13644
|
-
* Support will be removed in a future major release.
|
|
13524
|
+
* Legacy array of disabled-date timestamps.
|
|
13645
13525
|
* @private
|
|
13646
13526
|
*/
|
|
13647
13527
|
this.disabledDays = [];
|
|
@@ -13898,44 +13778,17 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13898
13778
|
* @returns {void}
|
|
13899
13779
|
*/
|
|
13900
13780
|
updateActiveCellForVisibleMonth() {
|
|
13901
|
-
|
|
13902
|
-
|
|
13903
|
-
|
|
13904
|
-
if (newDate !== null && newDate !== undefined) {
|
|
13905
|
-
this.activeCellDate = newDate;
|
|
13906
|
-
this.setActiveCell(this.activeCellDate);
|
|
13907
|
-
}
|
|
13908
|
-
});
|
|
13909
|
-
}
|
|
13910
|
-
|
|
13911
|
-
/**
|
|
13912
|
-
* Schedules `callback` two animation frames out, giving the child
|
|
13913
|
-
* `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
|
|
13914
|
-
* a full render-and-paint cycle to settle before the callback reads or
|
|
13915
|
-
* mutates DOM.
|
|
13916
|
-
*
|
|
13917
|
-
* Why two frames, not one:
|
|
13918
|
-
* 1. Lit batches property updates and renders in a microtask, so frame N
|
|
13919
|
-
* schedules the render but the new DOM may not be painted yet.
|
|
13920
|
-
* 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
|
|
13921
|
-
* which also lands a tick later. Reading buttons from frame N+1
|
|
13922
|
-
* (after both renders + cache refresh have flushed) reliably hits the
|
|
13923
|
-
* new month's cells.
|
|
13924
|
-
*
|
|
13925
|
-
* Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
|
|
13926
|
-
* and then needs to inspect the freshly-rendered cells (cross-month
|
|
13927
|
-
* keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
|
|
13928
|
-
* Do NOT collapse to a single rAF — it intermittently lands before
|
|
13929
|
-
* `_cachedButton` is refreshed, which silently breaks focus restoration
|
|
13930
|
-
* and `setActiveCell` lookups.
|
|
13931
|
-
* @private
|
|
13932
|
-
* @param {() => void} callback - Runs once after the month re-render and
|
|
13933
|
-
* the cells' button caches have refreshed.
|
|
13934
|
-
* @returns {void}
|
|
13935
|
-
*/
|
|
13936
|
-
_afterMonthRender(callback) {
|
|
13781
|
+
// Use double-rAF to ensure child month/cell components have fully
|
|
13782
|
+
// rendered and cached their button references before we set tabindex.
|
|
13937
13783
|
requestAnimationFrame(() => {
|
|
13938
|
-
requestAnimationFrame(
|
|
13784
|
+
requestAnimationFrame(() => {
|
|
13785
|
+
const newDate = this.computeActiveDate({ skipDateFrom: true });
|
|
13786
|
+
|
|
13787
|
+
if (newDate !== null && newDate !== undefined) {
|
|
13788
|
+
this.activeCellDate = newDate;
|
|
13789
|
+
this.setActiveCell(this.activeCellDate);
|
|
13790
|
+
}
|
|
13791
|
+
});
|
|
13939
13792
|
});
|
|
13940
13793
|
}
|
|
13941
13794
|
|
|
@@ -14053,47 +13906,6 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14053
13906
|
return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
|
|
14054
13907
|
}
|
|
14055
13908
|
|
|
14056
|
-
/**
|
|
14057
|
-
* Picks the focusable cell whose date is closest to targetTs. Used as a
|
|
14058
|
-
* fallback after a month-boundary nav when the exact target date isn't
|
|
14059
|
-
* focusable — typically because the month re-render lagged or the date
|
|
14060
|
-
* was filtered out by isOutOfRange. When two cells are equidistant, the
|
|
14061
|
-
* navigation direction breaks the tie so the user moves the way they
|
|
14062
|
-
* pressed (forward → later cell, backward → earlier cell).
|
|
14063
|
-
* @private
|
|
14064
|
-
* @param {Array} cells - Focusable cells from getAllFocusableCells.
|
|
14065
|
-
* @param {Number} targetTs - Desired Unix timestamp (seconds).
|
|
14066
|
-
* @param {'next'|'prev'} direction - Navigation direction.
|
|
14067
|
-
* @returns {Object|null} The nearest cell, or null when cells is empty.
|
|
14068
|
-
*/
|
|
14069
|
-
pickNearestCell(cells, targetTs, direction) {
|
|
14070
|
-
if (!cells.length) {
|
|
14071
|
-
return null;
|
|
14072
|
-
}
|
|
14073
|
-
const forward = direction === 'next';
|
|
14074
|
-
let best = null;
|
|
14075
|
-
let bestDelta = Infinity;
|
|
14076
|
-
cells.forEach((cell) => {
|
|
14077
|
-
if (!cell.day) {
|
|
14078
|
-
return;
|
|
14079
|
-
}
|
|
14080
|
-
const distance = Math.abs(cell.day.date - targetTs);
|
|
14081
|
-
if (distance < bestDelta) {
|
|
14082
|
-
best = cell;
|
|
14083
|
-
bestDelta = distance;
|
|
14084
|
-
return;
|
|
14085
|
-
}
|
|
14086
|
-
if (distance === bestDelta && best) {
|
|
14087
|
-
if (forward && cell.day.date > best.day.date) {
|
|
14088
|
-
best = cell;
|
|
14089
|
-
} else if (!forward && cell.day.date < best.day.date) {
|
|
14090
|
-
best = cell;
|
|
14091
|
-
}
|
|
14092
|
-
}
|
|
14093
|
-
});
|
|
14094
|
-
return best;
|
|
14095
|
-
}
|
|
14096
|
-
|
|
14097
13909
|
/**
|
|
14098
13910
|
* Gets all focusable cells across all rendered months.
|
|
14099
13911
|
* @private
|
|
@@ -14110,9 +13922,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14110
13922
|
|
|
14111
13923
|
/**
|
|
14112
13924
|
* Sets the active cell across all months. Only one cell has tabindex="0" at a time.
|
|
14113
|
-
* Uses imperative DOM manipulation — no Lit re-render triggered.
|
|
14114
|
-
*
|
|
14115
|
-
*
|
|
13925
|
+
* Uses imperative DOM manipulation — no Lit re-render triggered.
|
|
13926
|
+
* Also updates ariaActiveDescendantElement on the grid wrapper so
|
|
13927
|
+
* screen readers announce the active cell without moving DOM focus.
|
|
14116
13928
|
* @param {Number} date - Unix timestamp of the cell to activate.
|
|
14117
13929
|
* @returns {void}
|
|
14118
13930
|
*/
|
|
@@ -14193,65 +14005,6 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14193
14005
|
this.clearRangePreview();
|
|
14194
14006
|
}
|
|
14195
14007
|
|
|
14196
|
-
/**
|
|
14197
|
-
* Returns a memoized Set of blackout timestamps (seconds) drawn from both
|
|
14198
|
-
* the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
|
|
14199
|
-
* The cache invalidates when either source array's reference changes, which
|
|
14200
|
-
* matches Lit's own reactive identity semantics for array properties.
|
|
14201
|
-
* @private
|
|
14202
|
-
* @returns {Set<Number>}
|
|
14203
|
-
*/
|
|
14204
|
-
_getBlackoutSet() {
|
|
14205
|
-
// Normalize non-array values to a stable `null` sentinel rather than a
|
|
14206
|
-
// fresh `[]` per call — otherwise the reference-identity cache key
|
|
14207
|
-
// (`_cachedBlackoutDisabledDays === disabledDays`) never matches on
|
|
14208
|
-
// subsequent calls and the Set rebuilds every time. `buildBlackoutSet`
|
|
14209
|
-
// already treats null/non-array as "no legacy disabledDays" via its
|
|
14210
|
-
// own Array.isArray gate.
|
|
14211
|
-
const disabledDays = Array.isArray(this.disabledDays) ? this.disabledDays : null;
|
|
14212
|
-
const blackoutDates = this.datepicker?.blackoutDates;
|
|
14213
|
-
if (this._blackoutSet &&
|
|
14214
|
-
this._cachedBlackoutDisabledDays === disabledDays &&
|
|
14215
|
-
this._cachedBlackoutDates === blackoutDates) {
|
|
14216
|
-
return this._blackoutSet;
|
|
14217
|
-
}
|
|
14218
|
-
|
|
14219
|
-
if (disabledDays && disabledDays.length > 0) {
|
|
14220
|
-
this._warnDisabledDaysDeprecated();
|
|
14221
|
-
}
|
|
14222
|
-
|
|
14223
|
-
this._blackoutSet = buildBlackoutSet(disabledDays, blackoutDates);
|
|
14224
|
-
this._cachedBlackoutDisabledDays = disabledDays;
|
|
14225
|
-
this._cachedBlackoutDates = blackoutDates;
|
|
14226
|
-
return this._blackoutSet;
|
|
14227
|
-
}
|
|
14228
|
-
|
|
14229
|
-
/**
|
|
14230
|
-
* Per-class flag that gates the `disabledDays` deprecation warning so it
|
|
14231
|
-
* fires exactly once per page no matter how many calendars or rebuild
|
|
14232
|
-
* cycles encounter the legacy array.
|
|
14233
|
-
* @private
|
|
14234
|
-
*/
|
|
14235
|
-
static _warnedDisabledDaysDeprecation = false;
|
|
14236
|
-
|
|
14237
|
-
/**
|
|
14238
|
-
* One-time `console.debug` directing consumers from the legacy
|
|
14239
|
-
* `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
|
|
14240
|
-
* the first time `_getBlackoutSet` rebuilds from a non-empty
|
|
14241
|
-
* `disabledDays`; subsequent calls (on this or any other AuroCalendar
|
|
14242
|
-
* instance on the page) are silent.
|
|
14243
|
-
* @private
|
|
14244
|
-
* @returns {void}
|
|
14245
|
-
*/
|
|
14246
|
-
_warnDisabledDaysDeprecated() {
|
|
14247
|
-
if (AuroCalendar._warnedDisabledDaysDeprecation) {
|
|
14248
|
-
return;
|
|
14249
|
-
}
|
|
14250
|
-
AuroCalendar._warnedDisabledDaysDeprecation = true;
|
|
14251
|
-
// eslint-disable-next-line no-console
|
|
14252
|
-
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.');
|
|
14253
|
-
}
|
|
14254
|
-
|
|
14255
14008
|
/**
|
|
14256
14009
|
* Computes the initial active date from data properties alone — no DOM required.
|
|
14257
14010
|
* Priority:
|
|
@@ -14296,10 +14049,21 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14296
14049
|
const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
|
|
14297
14050
|
const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
|
|
14298
14051
|
|
|
14299
|
-
// Build a Set of blackout timestamps for O(1) lookup.
|
|
14300
|
-
|
|
14301
|
-
|
|
14302
|
-
|
|
14052
|
+
// Build a Set of blackout timestamps for O(1) lookup.
|
|
14053
|
+
const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
|
|
14054
|
+
|
|
14055
|
+
// Also include ISO-format blackoutDates from the datepicker if available.
|
|
14056
|
+
// Parse YYYY-MM-DD as local date to avoid UTC shift issues.
|
|
14057
|
+
const isoBlackouts = this.datepicker?.blackoutDates;
|
|
14058
|
+
if (Array.isArray(isoBlackouts)) {
|
|
14059
|
+
for (const isoStr of isoBlackouts) {
|
|
14060
|
+
const parts = isoStr.split('-');
|
|
14061
|
+
const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
|
|
14062
|
+
if (Number.isFinite(ts)) {
|
|
14063
|
+
blackoutSet.add(ts);
|
|
14064
|
+
}
|
|
14065
|
+
}
|
|
14066
|
+
}
|
|
14303
14067
|
|
|
14304
14068
|
/**
|
|
14305
14069
|
* A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
|
|
@@ -14495,8 +14259,8 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14495
14259
|
|
|
14496
14260
|
/**
|
|
14497
14261
|
* Handles arrow key navigation on the calendar grid wrapper.
|
|
14498
|
-
* Focus stays on the grid wrapper; only
|
|
14499
|
-
*
|
|
14262
|
+
* Focus stays on the grid wrapper; only ariaActiveDescendantElement
|
|
14263
|
+
* and the visual active-cell indicator change.
|
|
14500
14264
|
* @private
|
|
14501
14265
|
* @param {KeyboardEvent} event - The keyboard event.
|
|
14502
14266
|
* @returns {void}
|
|
@@ -14561,21 +14325,21 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14561
14325
|
} else {
|
|
14562
14326
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14563
14327
|
}
|
|
14564
|
-
|
|
14565
|
-
|
|
14566
|
-
|
|
14567
|
-
|
|
14568
|
-
|
|
14569
|
-
|
|
14570
|
-
|
|
14571
|
-
|
|
14572
|
-
|
|
14328
|
+
requestAnimationFrame(() => {
|
|
14329
|
+
requestAnimationFrame(() => {
|
|
14330
|
+
const cells = this.getAllFocusableCells();
|
|
14331
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
|
|
14332
|
+
if (target) {
|
|
14333
|
+
this.setActiveCell(target.day.date);
|
|
14334
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
14335
|
+
} else if (cells.length > 0) {
|
|
14336
|
+
const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
|
|
14573
14337
|
this.setActiveCell(fallback.day.date);
|
|
14574
14338
|
this.handleCellFocused({ detail: { date: fallback.day.date } });
|
|
14575
14339
|
}
|
|
14576
|
-
|
|
14577
|
-
|
|
14578
|
-
|
|
14340
|
+
// Re-focus grid wrapper after month change re-render
|
|
14341
|
+
this.focusActiveCell();
|
|
14342
|
+
});
|
|
14579
14343
|
});
|
|
14580
14344
|
}
|
|
14581
14345
|
}
|
|
@@ -14601,20 +14365,26 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14601
14365
|
} else {
|
|
14602
14366
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14603
14367
|
}
|
|
14604
|
-
|
|
14605
|
-
|
|
14606
|
-
|
|
14607
|
-
|
|
14608
|
-
|
|
14609
|
-
|
|
14610
|
-
|
|
14611
|
-
|
|
14612
|
-
|
|
14368
|
+
requestAnimationFrame(() => {
|
|
14369
|
+
requestAnimationFrame(() => {
|
|
14370
|
+
const cells = this.getAllFocusableCells();
|
|
14371
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14372
|
+
if (target) {
|
|
14373
|
+
this.setActiveCell(target.day.date);
|
|
14374
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
14375
|
+
} else if (cells.length > 0) {
|
|
14376
|
+
let nearest = null;
|
|
14377
|
+
|
|
14378
|
+
if (navDirection === 'next') {
|
|
14379
|
+
[nearest] = cells;
|
|
14380
|
+
} else {
|
|
14381
|
+
nearest = cells[cells.length - 1];
|
|
14382
|
+
}
|
|
14613
14383
|
this.setActiveCell(nearest.day.date);
|
|
14614
14384
|
this.handleCellFocused({ detail: { date: nearest.day.date } });
|
|
14615
14385
|
}
|
|
14616
|
-
|
|
14617
|
-
|
|
14386
|
+
this.focusActiveCell();
|
|
14387
|
+
});
|
|
14618
14388
|
});
|
|
14619
14389
|
}
|
|
14620
14390
|
}
|
|
@@ -14664,22 +14434,19 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14664
14434
|
}
|
|
14665
14435
|
|
|
14666
14436
|
this.handleNextMonth({ skipActiveUpdate: true });
|
|
14667
|
-
|
|
14668
|
-
|
|
14669
|
-
|
|
14670
|
-
|
|
14671
|
-
|
|
14672
|
-
|
|
14673
|
-
|
|
14674
|
-
|
|
14675
|
-
|
|
14676
|
-
|
|
14677
|
-
const fallback = this.pickNearestCell(cells, nextTs, 'next');
|
|
14678
|
-
if (fallback) {
|
|
14679
|
-
this.setActiveCell(fallback.day.date);
|
|
14437
|
+
requestAnimationFrame(() => {
|
|
14438
|
+
requestAnimationFrame(() => {
|
|
14439
|
+
const cells = this.getAllFocusableCells();
|
|
14440
|
+
const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
|
|
14441
|
+
if (target) {
|
|
14442
|
+
this.setActiveCell(target.day.date);
|
|
14443
|
+
this.focusActiveCell();
|
|
14444
|
+
} else if (cells.length > 0) {
|
|
14445
|
+
// Fallback: first cell of the last rendered month
|
|
14446
|
+
this.setActiveCell(cells[cells.length - 1].day.date);
|
|
14680
14447
|
this.focusActiveCell();
|
|
14681
14448
|
}
|
|
14682
|
-
}
|
|
14449
|
+
});
|
|
14683
14450
|
});
|
|
14684
14451
|
} else if (direction === 'prev' && this.showPrevMonthBtn) {
|
|
14685
14452
|
// Navigate to previous month and focus the computed previous date.
|
|
@@ -14693,22 +14460,19 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14693
14460
|
}
|
|
14694
14461
|
|
|
14695
14462
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14696
|
-
|
|
14697
|
-
|
|
14698
|
-
|
|
14699
|
-
|
|
14700
|
-
|
|
14701
|
-
|
|
14702
|
-
|
|
14703
|
-
|
|
14704
|
-
|
|
14705
|
-
|
|
14706
|
-
const fallback = this.pickNearestCell(cells, prevTs, 'prev');
|
|
14707
|
-
if (fallback) {
|
|
14708
|
-
this.setActiveCell(fallback.day.date);
|
|
14463
|
+
requestAnimationFrame(() => {
|
|
14464
|
+
requestAnimationFrame(() => {
|
|
14465
|
+
const cells = this.getAllFocusableCells();
|
|
14466
|
+
const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
|
|
14467
|
+
if (target) {
|
|
14468
|
+
this.setActiveCell(target.day.date);
|
|
14469
|
+
this.focusActiveCell();
|
|
14470
|
+
} else if (cells.length > 0) {
|
|
14471
|
+
// Fallback: last cell of the first rendered month
|
|
14472
|
+
this.setActiveCell(cells[0].day.date);
|
|
14709
14473
|
this.focusActiveCell();
|
|
14710
14474
|
}
|
|
14711
|
-
}
|
|
14475
|
+
});
|
|
14712
14476
|
});
|
|
14713
14477
|
}
|
|
14714
14478
|
} else if (key === 'ArrowDown' || key === 'ArrowUp') {
|
|
@@ -14736,22 +14500,20 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14736
14500
|
} else {
|
|
14737
14501
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14738
14502
|
}
|
|
14739
|
-
|
|
14740
|
-
|
|
14741
|
-
|
|
14742
|
-
|
|
14743
|
-
|
|
14744
|
-
|
|
14745
|
-
|
|
14746
|
-
|
|
14747
|
-
|
|
14748
|
-
|
|
14749
|
-
const nearest = this.pickNearestCell(cells, targetDate, navDirection);
|
|
14750
|
-
if (nearest) {
|
|
14503
|
+
requestAnimationFrame(() => {
|
|
14504
|
+
requestAnimationFrame(() => {
|
|
14505
|
+
const cells = this.getAllFocusableCells();
|
|
14506
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14507
|
+
if (target) {
|
|
14508
|
+
this.setActiveCell(target.day.date);
|
|
14509
|
+
this.focusActiveCell();
|
|
14510
|
+
} else if (cells.length > 0) {
|
|
14511
|
+
// Clamp to nearest focusable cell
|
|
14512
|
+
const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
|
|
14751
14513
|
this.setActiveCell(nearest.day.date);
|
|
14752
14514
|
this.focusActiveCell();
|
|
14753
14515
|
}
|
|
14754
|
-
}
|
|
14516
|
+
});
|
|
14755
14517
|
});
|
|
14756
14518
|
}
|
|
14757
14519
|
}
|
|
@@ -14790,9 +14552,8 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14790
14552
|
return;
|
|
14791
14553
|
}
|
|
14792
14554
|
|
|
14793
|
-
//
|
|
14794
|
-
//
|
|
14795
|
-
// region carries the full-context announcement instead.
|
|
14555
|
+
// With aria-activedescendant, the button no longer receives native focus,
|
|
14556
|
+
// so we use the debounced live region for the full context announcement.
|
|
14796
14557
|
const announcement = this.buildFocusAnnouncement(date);
|
|
14797
14558
|
this.announceFocusDebounced(announcement);
|
|
14798
14559
|
|
|
@@ -14862,10 +14623,10 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14862
14623
|
return null;
|
|
14863
14624
|
}
|
|
14864
14625
|
|
|
14865
|
-
const departTs =
|
|
14626
|
+
const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
|
|
14866
14627
|
const parsedTo = Number.parseInt(this.dateTo, 10);
|
|
14867
14628
|
const hasTo = Number.isFinite(parsedTo);
|
|
14868
|
-
const returnTs = hasTo ?
|
|
14629
|
+
const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
|
|
14869
14630
|
|
|
14870
14631
|
if (date === departTs) {
|
|
14871
14632
|
return this.datepicker.rangeLabelStart || 'range start';
|
|
@@ -14879,22 +14640,36 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
14879
14640
|
if (hasTo && date > departTs && date < returnTs) {
|
|
14880
14641
|
return this.datepicker.rangeLabelInRange || 'in range';
|
|
14881
14642
|
}
|
|
14882
|
-
if (!hasTo && date > departTs) {
|
|
14883
|
-
return this.datepicker.rangeLabelEndPreview || 'previewing range end';
|
|
14884
|
-
}
|
|
14885
14643
|
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
14886
14644
|
}
|
|
14887
14645
|
|
|
14888
14646
|
/**
|
|
14889
|
-
* Checks whether a given date is a blackout date.
|
|
14890
|
-
* memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
|
|
14891
|
-
* legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
|
|
14647
|
+
* Checks whether a given date is a blackout date.
|
|
14892
14648
|
* @private
|
|
14893
14649
|
* @param {Number} dateTs - Unix timestamp (seconds).
|
|
14894
14650
|
* @returns {Boolean} True if the date is blacked out.
|
|
14895
14651
|
*/
|
|
14896
14652
|
isDateBlackout(dateTs) {
|
|
14897
|
-
|
|
14653
|
+
// Check legacy disabledDays.
|
|
14654
|
+
if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
|
|
14655
|
+
if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
|
|
14656
|
+
return true;
|
|
14657
|
+
}
|
|
14658
|
+
}
|
|
14659
|
+
|
|
14660
|
+
// Check ISO blackoutDates.
|
|
14661
|
+
const blackoutDates = this.datepicker?.blackoutDates;
|
|
14662
|
+
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
14663
|
+
const date = new Date(dateTs * 1000);
|
|
14664
|
+
const yyyy = date.getFullYear();
|
|
14665
|
+
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
14666
|
+
const dd = String(date.getDate()).padStart(2, '0');
|
|
14667
|
+
if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
|
|
14668
|
+
return true;
|
|
14669
|
+
}
|
|
14670
|
+
}
|
|
14671
|
+
|
|
14672
|
+
return false;
|
|
14898
14673
|
}
|
|
14899
14674
|
|
|
14900
14675
|
/**
|
|
@@ -15061,34 +14836,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
15061
14836
|
// the last one.
|
|
15062
14837
|
if (this._announceRafId) {
|
|
15063
14838
|
cancelAnimationFrame(this._announceRafId);
|
|
15064
|
-
this._announceRafId = null;
|
|
15065
14839
|
}
|
|
15066
|
-
this._deliverAnnouncement(dateStr, 0);
|
|
15067
|
-
}
|
|
15068
|
-
|
|
15069
|
-
/**
|
|
15070
|
-
* Writes `dateStr` to the live region. If the dropdown's dialog hasn't
|
|
15071
|
-
* mounted yet (so getOrCreateLiveRegion can't attach), retries on the
|
|
15072
|
-
* next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
|
|
15073
|
-
* dropping the announcement. The retry uses the same `_announceRafId`
|
|
15074
|
-
* the double-rAF below uses, so a newer announceSelection call (or
|
|
15075
|
-
* disconnectedCallback) cancels any in-flight retry.
|
|
15076
|
-
* @private
|
|
15077
|
-
* @param {String} dateStr - The localized date string to announce.
|
|
15078
|
-
* @param {Number} attempts - Number of prior retry attempts.
|
|
15079
|
-
* @returns {void}
|
|
15080
|
-
*/
|
|
15081
|
-
_deliverAnnouncement(dateStr, attempts) {
|
|
15082
14840
|
const liveRegion = this.getOrCreateLiveRegion();
|
|
15083
14841
|
if (!liveRegion) {
|
|
15084
|
-
const MAX_LIVE_REGION_RETRIES = 10;
|
|
15085
|
-
if (attempts < MAX_LIVE_REGION_RETRIES) {
|
|
15086
|
-
this._announceRafId = requestAnimationFrame(() => {
|
|
15087
|
-
this._deliverAnnouncement(dateStr, attempts + 1);
|
|
15088
|
-
});
|
|
15089
|
-
} else {
|
|
15090
|
-
this._announceRafId = null;
|
|
15091
|
-
}
|
|
15092
14842
|
return;
|
|
15093
14843
|
}
|
|
15094
14844
|
|
|
@@ -15274,7 +15024,7 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
15274
15024
|
</button>
|
|
15275
15025
|
` : undefined}
|
|
15276
15026
|
</div>
|
|
15277
|
-
<div id="calendarGrid" class="calendars" role="group"
|
|
15027
|
+
<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}">
|
|
15278
15028
|
${this.renderAllCalendars()}
|
|
15279
15029
|
</div>
|
|
15280
15030
|
</div>
|
|
@@ -19159,7 +18909,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
|
|
|
19159
18909
|
}
|
|
19160
18910
|
};
|
|
19161
18911
|
|
|
19162
|
-
var formkitVersion$1 = '
|
|
18912
|
+
var formkitVersion$1 = '202606252337';
|
|
19163
18913
|
|
|
19164
18914
|
let AuroElement$2 = class AuroElement extends LitElement {
|
|
19165
18915
|
static get properties() {
|
|
@@ -30877,6 +30627,13 @@ class AuroInputUtilities {
|
|
|
30877
30627
|
* @returns {string | undefined}
|
|
30878
30628
|
*/
|
|
30879
30629
|
toFormattedValue(valueObject, format) {
|
|
30630
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
30631
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
30632
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
30633
|
+
// as "no format → no display value".
|
|
30634
|
+
if (!format) {
|
|
30635
|
+
return undefined;
|
|
30636
|
+
}
|
|
30880
30637
|
const normalizedFormat = format.toLowerCase();
|
|
30881
30638
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
30882
30639
|
|
|
@@ -31027,79 +30784,18 @@ class BaseInput extends AuroElement$1 {
|
|
|
31027
30784
|
constructor() {
|
|
31028
30785
|
super();
|
|
31029
30786
|
|
|
31030
|
-
|
|
31031
|
-
|
|
31032
|
-
|
|
31033
|
-
|
|
31034
|
-
|
|
31035
|
-
|
|
31036
|
-
|
|
31037
|
-
|
|
31038
|
-
|
|
31039
|
-
|
|
31040
|
-
this.required = false;
|
|
31041
|
-
this.onDark = false;
|
|
31042
|
-
this.setCustomValidityForType = undefined;
|
|
31043
|
-
this.size = 'lg';
|
|
31044
|
-
this.shape = 'classic';
|
|
31045
|
-
this.value = undefined;
|
|
31046
|
-
this._valueObject = undefined;
|
|
31047
|
-
|
|
31048
|
-
this._initializePrivateDefaults();
|
|
31049
|
-
}
|
|
31050
|
-
|
|
31051
|
-
/**
|
|
31052
|
-
* Internal Defaults.
|
|
31053
|
-
* @private
|
|
31054
|
-
* @returns {void}
|
|
31055
|
-
*/
|
|
31056
|
-
_initializePrivateDefaults() {
|
|
30787
|
+
// Single-source initialization. Alphabetized so duplicate or stale
|
|
30788
|
+
// defaults are immediately obvious on a diff. Every field is assigned
|
|
30789
|
+
// exactly once here (previously the constructor + the old
|
|
30790
|
+
// `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
|
|
30791
|
+
// fields and double-allocated `util` and `validation`, discarding the
|
|
30792
|
+
// first instance). `validation` is now allocated exactly once; `util`
|
|
30793
|
+
// is seeded here with an en-US default and then rebuilt in
|
|
30794
|
+
// `connectedCallback` once the consumer-resolved locale is available,
|
|
30795
|
+
// so a parent (datepicker/combobox) calling `validate()` synchronously
|
|
30796
|
+
// during its own update cycle sees a populated util instance.
|
|
31057
30797
|
this.activeLabel = false;
|
|
31058
|
-
|
|
31059
|
-
this.icon = false;
|
|
31060
|
-
this.disabled = false;
|
|
31061
|
-
this.dvInputOnly = false;
|
|
31062
|
-
this.hideLabelVisually = false;
|
|
31063
|
-
this.max = undefined;
|
|
31064
|
-
this.maxLength = undefined;
|
|
31065
|
-
this.min = undefined;
|
|
31066
|
-
this.minLength = undefined;
|
|
31067
|
-
this.noValidate = false;
|
|
31068
|
-
this.onDark = false;
|
|
31069
|
-
this.required = false;
|
|
31070
|
-
this.setCustomValidityForType = undefined;
|
|
31071
|
-
|
|
31072
|
-
// Used for storing raw values returned from input mask.
|
|
31073
|
-
this._rawMaskValue = undefined;
|
|
31074
|
-
|
|
31075
|
-
/**
|
|
31076
|
-
* @private
|
|
31077
|
-
*/
|
|
31078
|
-
this.layout = 'classic';
|
|
31079
|
-
|
|
31080
|
-
/**
|
|
31081
|
-
* @private
|
|
31082
|
-
*/
|
|
31083
|
-
this.shape = 'classic';
|
|
31084
|
-
|
|
31085
|
-
/**
|
|
31086
|
-
* @private
|
|
31087
|
-
*/
|
|
31088
|
-
this.size = 'lg';
|
|
31089
|
-
|
|
31090
|
-
this.touched = false;
|
|
31091
|
-
this.util = new AuroInputUtilities({
|
|
31092
|
-
locale: "en-US",
|
|
31093
|
-
format: this.format
|
|
31094
|
-
});
|
|
31095
|
-
this.validation = new AuroFormValidation();
|
|
31096
|
-
this.inputIconName = undefined;
|
|
31097
|
-
this.showPassword = false;
|
|
31098
|
-
this.validationCCLength = undefined;
|
|
31099
|
-
this.hasValue = false;
|
|
31100
|
-
this.label = 'Input label is undefined';
|
|
31101
|
-
|
|
31102
|
-
|
|
30798
|
+
/** @private */
|
|
31103
30799
|
this.allowedInputTypes = [
|
|
31104
30800
|
"text",
|
|
31105
30801
|
"number",
|
|
@@ -31108,7 +30804,8 @@ class BaseInput extends AuroElement$1 {
|
|
|
31108
30804
|
"credit-card",
|
|
31109
30805
|
"tel"
|
|
31110
30806
|
];
|
|
31111
|
-
this.
|
|
30807
|
+
this.appearance = "default";
|
|
30808
|
+
/** @private */
|
|
31112
30809
|
this.dateFormatMap = {
|
|
31113
30810
|
'mm/dd/yyyy': 'dateMMDDYYYY',
|
|
31114
30811
|
'dd/mm/yyyy': 'dateDDMMYYYY',
|
|
@@ -31125,27 +30822,57 @@ class BaseInput extends AuroElement$1 {
|
|
|
31125
30822
|
'dd/mm': 'dateDDMM',
|
|
31126
30823
|
'mm/dd': 'dateMMDD'
|
|
31127
30824
|
};
|
|
30825
|
+
this.disabled = false;
|
|
30826
|
+
/** @private */
|
|
31128
30827
|
this.domHandler = new DomHandler();
|
|
31129
30828
|
this.dvInputOnly = false;
|
|
31130
30829
|
this.hasValue = false;
|
|
30830
|
+
this.hideLabelVisually = false;
|
|
30831
|
+
this.icon = false;
|
|
30832
|
+
/** @private */
|
|
31131
30833
|
this.inputIconName = undefined;
|
|
30834
|
+
/** @private */
|
|
31132
30835
|
this.label = 'Input label is undefined';
|
|
30836
|
+
this.layout = 'classic';
|
|
30837
|
+
this.locale = 'en-US';
|
|
30838
|
+
this.max = undefined;
|
|
30839
|
+
this._maxObject = undefined;
|
|
30840
|
+
this.maxLength = undefined;
|
|
30841
|
+
this.min = undefined;
|
|
30842
|
+
this._minObject = undefined;
|
|
30843
|
+
this.minLength = undefined;
|
|
31133
30844
|
this.noValidate = false;
|
|
31134
|
-
this.
|
|
30845
|
+
this.onDark = false;
|
|
30846
|
+
// Raw values returned from the input mask before model normalization.
|
|
30847
|
+
this._rawMaskValue = undefined;
|
|
30848
|
+
this.required = false;
|
|
30849
|
+
this.setCustomValidityForType = undefined;
|
|
30850
|
+
// Credit Card is intentionally excluded — its mask manages the cursor
|
|
30851
|
+
// itself, and listing it here caused cursor placement issues in Safari.
|
|
30852
|
+
/** @private */
|
|
31135
30853
|
this.setSelectionInputTypes = [
|
|
31136
30854
|
"text",
|
|
31137
30855
|
"password",
|
|
31138
30856
|
"email"
|
|
31139
|
-
];
|
|
30857
|
+
];
|
|
30858
|
+
this.shape = 'classic';
|
|
30859
|
+
/** @private */
|
|
31140
30860
|
this.showPassword = false;
|
|
30861
|
+
this.size = 'lg';
|
|
31141
30862
|
this.touched = false;
|
|
30863
|
+
/** @private */
|
|
31142
30864
|
this.uniqueId = new UniqueId().create();
|
|
30865
|
+
/** @private */
|
|
31143
30866
|
this.util = new AuroInputUtilities({
|
|
31144
30867
|
locale: this.locale,
|
|
31145
30868
|
format: this.format
|
|
31146
30869
|
});
|
|
30870
|
+
/** @private */
|
|
31147
30871
|
this.validation = new AuroFormValidation();
|
|
30872
|
+
/** @private */
|
|
31148
30873
|
this.validationCCLength = undefined;
|
|
30874
|
+
this.value = undefined;
|
|
30875
|
+
this._valueObject = undefined;
|
|
31149
30876
|
}
|
|
31150
30877
|
|
|
31151
30878
|
// function to define props used within the scope of this component
|
|
@@ -31693,6 +31420,15 @@ class BaseInput extends AuroElement$1 {
|
|
|
31693
31420
|
|
|
31694
31421
|
this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
|
|
31695
31422
|
|
|
31423
|
+
// Normalize the format token to lowercase so case-mixed values supplied
|
|
31424
|
+
// via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
|
|
31425
|
+
// lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
|
|
31426
|
+
// format silently misses the map and leaves `setCustomValidityForType`
|
|
31427
|
+
// unset.
|
|
31428
|
+
if (this.format) {
|
|
31429
|
+
this.format = this.format.toLowerCase();
|
|
31430
|
+
}
|
|
31431
|
+
|
|
31696
31432
|
// use validity message override if declared when initializing the component
|
|
31697
31433
|
if (this.hasAttribute('setCustomValidity')) {
|
|
31698
31434
|
this.ValidityMessageOverride = this.setCustomValidity;
|
|
@@ -32126,6 +31862,38 @@ class BaseInput extends AuroElement$1 {
|
|
|
32126
31862
|
this.touched = true;
|
|
32127
31863
|
this.validation.validate(this);
|
|
32128
31864
|
}
|
|
31865
|
+
|
|
31866
|
+
// Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
|
|
31867
|
+
// update that can re-render the input and reset the native cursor; we
|
|
31868
|
+
// capture the caret position before that update commits and restore it
|
|
31869
|
+
// via `setSelectionRange` once the update has flushed. Gated on
|
|
31870
|
+
// `setSelectionInputTypes` so credit-card (and other masked types whose
|
|
31871
|
+
// formatter manages the cursor itself) doesn't get a competing write.
|
|
31872
|
+
// Capture the caret position INSIDE the gate — reading `selectionStart`
|
|
31873
|
+
// on input types that don't support text selection (number, email in
|
|
31874
|
+
// some browsers) throws InvalidStateError, which would crash all input
|
|
31875
|
+
// handling. Wrap the read in try/catch belt-and-suspenders even though
|
|
31876
|
+
// the gated types currently support it, since the list is a public
|
|
31877
|
+
// property a consumer could mutate.
|
|
31878
|
+
if (this.setSelectionInputTypes.includes(this.type)) {
|
|
31879
|
+
let selectionStart;
|
|
31880
|
+
try {
|
|
31881
|
+
selectionStart = this.inputElement.selectionStart;
|
|
31882
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
31883
|
+
return;
|
|
31884
|
+
}
|
|
31885
|
+
if (typeof selectionStart !== 'number') {
|
|
31886
|
+
return;
|
|
31887
|
+
}
|
|
31888
|
+
this.updateComplete.then(() => {
|
|
31889
|
+
try {
|
|
31890
|
+
this.inputElement.setSelectionRange(selectionStart, selectionStart);
|
|
31891
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
31892
|
+
// Some input types (number/email in certain UAs) throw on
|
|
31893
|
+
// setSelectionRange; swallow and let the native cursor stand.
|
|
31894
|
+
}
|
|
31895
|
+
});
|
|
31896
|
+
}
|
|
32129
31897
|
}
|
|
32130
31898
|
|
|
32131
31899
|
/**
|
|
@@ -32752,7 +32520,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
32752
32520
|
}
|
|
32753
32521
|
};
|
|
32754
32522
|
|
|
32755
|
-
var formkitVersion = '
|
|
32523
|
+
var formkitVersion = '202606252337';
|
|
32756
32524
|
|
|
32757
32525
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
32758
32526
|
// See LICENSE in the project root for license information.
|
|
@@ -33255,6 +33023,7 @@ class AuroInput extends BaseInput {
|
|
|
33255
33023
|
<${this.buttonTag}
|
|
33256
33024
|
@click="${this.handleClickShowPassword}"
|
|
33257
33025
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
33026
|
+
aria-pressed="${this.showPassword ? 'true' : 'false'}"
|
|
33258
33027
|
class="notificationBtn passwordBtn"
|
|
33259
33028
|
shape="circle"
|
|
33260
33029
|
size="sm"
|
|
@@ -33328,25 +33097,29 @@ class AuroInput extends BaseInput {
|
|
|
33328
33097
|
* @returns {html} - Returns HTML for the help text and error message.
|
|
33329
33098
|
*/
|
|
33330
33099
|
renderHtmlHelpText() {
|
|
33100
|
+
// Single `<p>` with stable identity across validity transitions —
|
|
33101
|
+
// previously two distinct templates (valid vs invalid) caused Lit to
|
|
33102
|
+
// replace the node entirely on a flip, and VoiceOver wouldn't
|
|
33103
|
+
// re-announce because the live-region element it was watching had been
|
|
33104
|
+
// removed and a new one inserted. Keeping one node means the `role`,
|
|
33105
|
+
// `aria-live`, and text content all change in-place, which AT does
|
|
33106
|
+
// observe and announce.
|
|
33107
|
+
const isError = this.validity && this.validity !== 'valid';
|
|
33331
33108
|
return html$1`
|
|
33332
|
-
|
|
33333
|
-
?
|
|
33334
|
-
|
|
33335
|
-
|
|
33336
|
-
|
|
33337
|
-
|
|
33338
|
-
|
|
33339
|
-
|
|
33340
|
-
|
|
33341
|
-
|
|
33342
|
-
|
|
33343
|
-
|
|
33344
|
-
|
|
33345
|
-
|
|
33346
|
-
</p>
|
|
33347
|
-
</${this.helpTextTag}>
|
|
33348
|
-
`
|
|
33349
|
-
}
|
|
33109
|
+
<${this.helpTextTag}
|
|
33110
|
+
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
33111
|
+
?error=${isError}>
|
|
33112
|
+
<p
|
|
33113
|
+
id="${this.uniqueId}"
|
|
33114
|
+
part="helpText"
|
|
33115
|
+
role="${ifDefined(isError ? 'alert' : undefined)}"
|
|
33116
|
+
aria-live="${ifDefined(isError ? 'assertive' : undefined)}">
|
|
33117
|
+
${isError
|
|
33118
|
+
? this.errorMessage
|
|
33119
|
+
: html$1`<slot name="helpText">${this.getHelpText()}</slot>`
|
|
33120
|
+
}
|
|
33121
|
+
</p>
|
|
33122
|
+
</${this.helpTextTag}>
|
|
33350
33123
|
`;
|
|
33351
33124
|
}
|
|
33352
33125
|
|
|
@@ -33493,6 +33266,15 @@ function formatISODate(isoStr, format) {
|
|
|
33493
33266
|
try {
|
|
33494
33267
|
const date = dateFormatter.stringToDateInstance(isoStr);
|
|
33495
33268
|
|
|
33269
|
+
// `stringToDateInstance` returns an `Invalid Date` for malformed strings
|
|
33270
|
+
// and `null` for non-string input — it does NOT throw. Without this
|
|
33271
|
+
// guard, `getFullYear()`/`getMonth()`/`getDate()` on an Invalid Date
|
|
33272
|
+
// yield `NaN`, and `String(NaN).padStart(4, '0')` produces literals
|
|
33273
|
+
// like "0NaN/0NaN/0NaN" instead of `undefined`.
|
|
33274
|
+
if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
|
|
33275
|
+
return undefined;
|
|
33276
|
+
}
|
|
33277
|
+
|
|
33496
33278
|
const year = String(date.getFullYear()).padStart(4, '0');
|
|
33497
33279
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
33498
33280
|
const day = String(date.getDate()).padStart(2, '0');
|
|
@@ -33503,7 +33285,10 @@ function formatISODate(isoStr, format) {
|
|
|
33503
33285
|
replace(/mm/iu, month).
|
|
33504
33286
|
replace(/dd/iu, day);
|
|
33505
33287
|
} catch (err) {
|
|
33506
|
-
//
|
|
33288
|
+
// Defensive: the Date-returning path is guarded above, but `parseDate`
|
|
33289
|
+
// (inside `stringToDateInstance`) could throw on pathological input
|
|
33290
|
+
// future-library-versions might introduce. Treat any thrown error as
|
|
33291
|
+
// "not a valid date" and return undefined.
|
|
33507
33292
|
return undefined;
|
|
33508
33293
|
}
|
|
33509
33294
|
}
|
|
@@ -34229,7 +34014,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
34229
34014
|
this.rangeLabelBeforeRange = 'before range';
|
|
34230
34015
|
this.rangeLabelInRange = 'in range';
|
|
34231
34016
|
this.rangeLabelAfterRange = 'after range';
|
|
34232
|
-
this.rangeLabelEndPreview = 'previewing range end';
|
|
34233
34017
|
this.blackoutDates = [];
|
|
34234
34018
|
this.blackoutLabel = 'unavailable';
|
|
34235
34019
|
this.navLabelPrevMonth = 'Previous month';
|
|
@@ -34329,22 +34113,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
34329
34113
|
*/
|
|
34330
34114
|
this.handleClick = this.handleClick.bind(this);
|
|
34331
34115
|
|
|
34332
|
-
/**
|
|
34333
|
-
* Single AbortController shared by every listener registered in the
|
|
34334
|
-
* configure* methods. Lets disconnectedCallback tear all of them down
|
|
34335
|
-
* with one abort() call.
|
|
34336
|
-
*
|
|
34337
|
-
* The genuine leak risk is the listeners attached to children that can
|
|
34338
|
-
* outlive the host if they get reparented — `this.dropdown`,
|
|
34339
|
-
* `this.calendar`, and the inputs inside the dropdown's slot.
|
|
34340
|
-
* Listeners attached to `this` (e.g. focusin/focusout on the host)
|
|
34341
|
-
* form a self-contained reference graph that the GC can collect with
|
|
34342
|
-
* the host anyway, but they share the same signal so the cleanup
|
|
34343
|
-
* pattern stays uniform across all configure* sites.
|
|
34344
|
-
* @private
|
|
34345
|
-
*/
|
|
34346
|
-
this._listenerAbortController = new AbortController();
|
|
34347
|
-
|
|
34348
34116
|
/**
|
|
34349
34117
|
* @private
|
|
34350
34118
|
*/
|
|
@@ -34393,7 +34161,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
34393
34161
|
|
|
34394
34162
|
/**
|
|
34395
34163
|
* Label announced for blackout (disabled but in-range) date cells.
|
|
34396
|
-
* @default 'unavailable'
|
|
34397
34164
|
*/
|
|
34398
34165
|
blackoutLabel: {
|
|
34399
34166
|
type: String,
|
|
@@ -34410,7 +34177,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
34410
34177
|
|
|
34411
34178
|
/**
|
|
34412
34179
|
* Accessible label for the calendar grid containing the days of the month.
|
|
34413
|
-
* @default 'Calendar days of the month'
|
|
34414
34180
|
*/
|
|
34415
34181
|
calendarGridLabel: {
|
|
34416
34182
|
type: String,
|
|
@@ -34573,7 +34339,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
34573
34339
|
|
|
34574
34340
|
/**
|
|
34575
34341
|
* Accessible label for the next month navigation button.
|
|
34576
|
-
* @default 'Next month'
|
|
34577
34342
|
*/
|
|
34578
34343
|
navLabelNextMonth: {
|
|
34579
34344
|
type: String,
|
|
@@ -34582,7 +34347,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
34582
34347
|
|
|
34583
34348
|
/**
|
|
34584
34349
|
* Accessible label for the previous month navigation button.
|
|
34585
|
-
* @default 'Previous month'
|
|
34586
34350
|
*/
|
|
34587
34351
|
navLabelPrevMonth: {
|
|
34588
34352
|
type: String,
|
|
@@ -34660,11 +34424,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34660
34424
|
},
|
|
34661
34425
|
|
|
34662
34426
|
/**
|
|
34663
|
-
* Label announced for cells after
|
|
34664
|
-
* `dateFrom` and `dateTo` are set). While a range is still being
|
|
34665
|
-
* picked (`dateFrom` set, `dateTo` unset), focused cells past the
|
|
34666
|
-
* start use `rangeLabelEndPreview` instead.
|
|
34667
|
-
* @default 'after range'
|
|
34427
|
+
* Label announced for cells after the range (or after start when no end is selected).
|
|
34668
34428
|
*/
|
|
34669
34429
|
rangeLabelAfterRange: {
|
|
34670
34430
|
type: String,
|
|
@@ -34673,7 +34433,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
34673
34433
|
|
|
34674
34434
|
/**
|
|
34675
34435
|
* Label announced for cells before the range start.
|
|
34676
|
-
* @default 'before range'
|
|
34677
34436
|
*/
|
|
34678
34437
|
rangeLabelBeforeRange: {
|
|
34679
34438
|
type: String,
|
|
@@ -34682,27 +34441,14 @@ class AuroDatePicker extends AuroElement {
|
|
|
34682
34441
|
|
|
34683
34442
|
/**
|
|
34684
34443
|
* Label announced for the range end date cell.
|
|
34685
|
-
* @default 'range end'
|
|
34686
34444
|
*/
|
|
34687
34445
|
rangeLabelEnd: {
|
|
34688
34446
|
type: String,
|
|
34689
34447
|
reflect: true
|
|
34690
34448
|
},
|
|
34691
34449
|
|
|
34692
|
-
/**
|
|
34693
|
-
* Label announced for the focused cell while previewing a range end
|
|
34694
|
-
* (dateFrom set, dateTo not yet selected). Tells AT users that
|
|
34695
|
-
* pressing Enter would commit this cell as the range end.
|
|
34696
|
-
* @default 'previewing range end'
|
|
34697
|
-
*/
|
|
34698
|
-
rangeLabelEndPreview: {
|
|
34699
|
-
type: String,
|
|
34700
|
-
reflect: true
|
|
34701
|
-
},
|
|
34702
|
-
|
|
34703
34450
|
/**
|
|
34704
34451
|
* Label announced for cells within the selected range.
|
|
34705
|
-
* @default 'in range'
|
|
34706
34452
|
*/
|
|
34707
34453
|
rangeLabelInRange: {
|
|
34708
34454
|
type: String,
|
|
@@ -34711,7 +34457,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
34711
34457
|
|
|
34712
34458
|
/**
|
|
34713
34459
|
* Label announced for the range start date cell.
|
|
34714
|
-
* @default 'range start'
|
|
34715
34460
|
*/
|
|
34716
34461
|
rangeLabelStart: {
|
|
34717
34462
|
type: String,
|
|
@@ -34719,7 +34464,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
34719
34464
|
},
|
|
34720
34465
|
|
|
34721
34466
|
/**
|
|
34722
|
-
* Dates that the user should have for reference as part of their decision
|
|
34467
|
+
* Dates that the user should have for reference as part of their decision making when selecting a date.
|
|
34723
34468
|
* This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
|
|
34724
34469
|
*/
|
|
34725
34470
|
referenceDates: {
|
|
@@ -35076,26 +34821,10 @@ class AuroDatePicker extends AuroElement {
|
|
|
35076
34821
|
// ─── Vendor calendar time conversions ─────────────────────────────────────
|
|
35077
34822
|
|
|
35078
34823
|
/**
|
|
35079
|
-
* Converts a Unix timestamp (seconds) from the
|
|
35080
|
-
* (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
|
|
35081
|
-
*
|
|
35082
|
-
* Timezone contract:
|
|
35083
|
-
* - INPUT: `time` is assumed to be the seconds-since-epoch of **local
|
|
35084
|
-
* midnight** for the intended calendar day. The vendor's Day constructor
|
|
35085
|
-
* builds it via `date-fns format(date, 't')` from a locally-constructed
|
|
35086
|
-
* Date, so this assumption currently holds end-to-end.
|
|
35087
|
-
* - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
|
|
35088
|
-
* getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
|
|
35089
|
-
* string matches the local calendar day.
|
|
35090
|
-
*
|
|
35091
|
-
* If the vendor ever switches to emitting UTC-midnight timestamps, this
|
|
35092
|
-
* conversion will silently shift the returned date by one day in zones
|
|
35093
|
-
* west of UTC. Any vendor swap should re-verify this contract; the TZ
|
|
35094
|
-
* regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
|
|
35095
|
-
*
|
|
34824
|
+
* Converts a Unix timestamp (seconds) from the vendor calendar to an ISO date string.
|
|
35096
34825
|
* @private
|
|
35097
|
-
* @param {number} time - Unix timestamp
|
|
35098
|
-
* @returns {string} ISO date string (yyyy-mm-dd)
|
|
34826
|
+
* @param {number} time - Unix timestamp in seconds.
|
|
34827
|
+
* @returns {string} ISO date string (yyyy-mm-dd).
|
|
35099
34828
|
*/
|
|
35100
34829
|
convertWcTimeToDate(time) {
|
|
35101
34830
|
return dateFormatter$1.toISOFormatString(new Date(time * 1000));
|
|
@@ -35197,8 +34926,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
35197
34926
|
}
|
|
35198
34927
|
}
|
|
35199
34928
|
|
|
35200
|
-
// Focus the calendar grid wrapper
|
|
35201
|
-
//
|
|
34929
|
+
// Focus the calendar grid wrapper (aria-activedescendant handles
|
|
34930
|
+
// the SR announcement for the active cell).
|
|
35202
34931
|
if (activeCell) {
|
|
35203
34932
|
this.calendar.focusActiveCell();
|
|
35204
34933
|
|
|
@@ -35248,13 +34977,11 @@ class AuroDatePicker extends AuroElement {
|
|
|
35248
34977
|
this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
|
|
35249
34978
|
}
|
|
35250
34979
|
|
|
35251
|
-
const { signal } = this._listenerAbortController;
|
|
35252
|
-
|
|
35253
34980
|
this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
|
|
35254
34981
|
if (!this.isPopoverVisible) {
|
|
35255
34982
|
this.dropdown.show();
|
|
35256
34983
|
}
|
|
35257
|
-
}
|
|
34984
|
+
});
|
|
35258
34985
|
|
|
35259
34986
|
this.dropdown.addEventListener('auroDropdown-toggled', () => {
|
|
35260
34987
|
this.notifyDatepickerToggled();
|
|
@@ -35272,7 +34999,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35272
34999
|
if (this.valueObject) {
|
|
35273
35000
|
this.centralDate = this.value;
|
|
35274
35001
|
} else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
|
|
35275
|
-
this.centralDate =
|
|
35002
|
+
this.centralDate = new Date();
|
|
35276
35003
|
}
|
|
35277
35004
|
}
|
|
35278
35005
|
|
|
@@ -35352,7 +35079,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35352
35079
|
this.forceScrollOnNextMobileCalendarRender = false;
|
|
35353
35080
|
}, 0);
|
|
35354
35081
|
}
|
|
35355
|
-
}
|
|
35082
|
+
});
|
|
35356
35083
|
|
|
35357
35084
|
// Handle responsive strategy changes while the dropdown is open
|
|
35358
35085
|
// (e.g. resizing from desktop → mobile or vice versa).
|
|
@@ -35399,7 +35126,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35399
35126
|
});
|
|
35400
35127
|
});
|
|
35401
35128
|
}
|
|
35402
|
-
}
|
|
35129
|
+
});
|
|
35403
35130
|
}
|
|
35404
35131
|
|
|
35405
35132
|
/**
|
|
@@ -35412,8 +35139,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
35412
35139
|
|
|
35413
35140
|
this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
|
|
35414
35141
|
|
|
35415
|
-
const { signal } = this._listenerAbortController;
|
|
35416
|
-
|
|
35417
35142
|
this.inputList.forEach((input, index) => {
|
|
35418
35143
|
input.addEventListener('input', (event) => {
|
|
35419
35144
|
event.stopPropagation();
|
|
@@ -35425,7 +35150,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35425
35150
|
}
|
|
35426
35151
|
|
|
35427
35152
|
this.notifyValueChanged();
|
|
35428
|
-
}
|
|
35153
|
+
});
|
|
35429
35154
|
|
|
35430
35155
|
input.addEventListener('auroFormElement-validated', (evt) => {
|
|
35431
35156
|
// not to bubble up input's validated event.
|
|
@@ -35441,7 +35166,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35441
35166
|
this.validity = evt.detail.validity;
|
|
35442
35167
|
this.errorMessage = evt.detail.message;
|
|
35443
35168
|
}
|
|
35444
|
-
}
|
|
35169
|
+
});
|
|
35445
35170
|
});
|
|
35446
35171
|
}
|
|
35447
35172
|
|
|
@@ -35455,32 +35180,19 @@ class AuroDatePicker extends AuroElement {
|
|
|
35455
35180
|
this.calendar.datepicker = this;
|
|
35456
35181
|
this.calendar.dropdown = this.dropdown;
|
|
35457
35182
|
|
|
35458
|
-
const { signal } = this._listenerAbortController;
|
|
35459
|
-
|
|
35460
35183
|
this.calendar.addEventListener('auroCalendar-dateSelected', () => {
|
|
35461
|
-
|
|
35462
|
-
|
|
35463
|
-
// strings — comparing the input ISO directly against them would
|
|
35464
|
-
// never match, so the write would fire on every event and emit
|
|
35465
|
-
// redundant input/change activity).
|
|
35466
|
-
if (this.calendar.dateFrom !== undefined) {
|
|
35467
|
-
const fromIso = this.convertWcTimeToDate(this.calendar.dateFrom);
|
|
35468
|
-
if (this.inputList[0].value !== fromIso) {
|
|
35469
|
-
this.inputList[0].value = fromIso;
|
|
35470
|
-
}
|
|
35184
|
+
if (this.inputList[0].value !== this.calendar.dateFrom && this.calendar.dateFrom !== undefined) {
|
|
35185
|
+
this.inputList[0].value = this.convertWcTimeToDate(this.calendar.dateFrom);
|
|
35471
35186
|
}
|
|
35472
35187
|
|
|
35473
|
-
if (this.inputList[1] && this.calendar.dateTo) {
|
|
35474
|
-
|
|
35475
|
-
if (this.inputList[1].value !== toIso) {
|
|
35476
|
-
this.inputList[1].value = toIso;
|
|
35477
|
-
}
|
|
35188
|
+
if (this.inputList[1] && this.calendar.dateTo && this.inputList[1].value !== this.calendar.dateTo) {
|
|
35189
|
+
this.inputList[1].value = this.convertWcTimeToDate(this.calendar.dateTo);
|
|
35478
35190
|
}
|
|
35479
|
-
}
|
|
35191
|
+
});
|
|
35480
35192
|
|
|
35481
35193
|
this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
|
|
35482
35194
|
this.dropdown.hide();
|
|
35483
|
-
}
|
|
35195
|
+
});
|
|
35484
35196
|
|
|
35485
35197
|
this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
|
|
35486
35198
|
const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
|
|
@@ -35490,7 +35202,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35490
35202
|
}
|
|
35491
35203
|
|
|
35492
35204
|
this.notifyMonthChanged(event);
|
|
35493
|
-
}
|
|
35205
|
+
});
|
|
35494
35206
|
}
|
|
35495
35207
|
|
|
35496
35208
|
/**
|
|
@@ -35499,17 +35211,10 @@ class AuroDatePicker extends AuroElement {
|
|
|
35499
35211
|
* @returns {void}
|
|
35500
35212
|
*/
|
|
35501
35213
|
configureDatepicker() {
|
|
35502
|
-
// These listeners are on `this` (the host), so they would GC with the
|
|
35503
|
-
// host even without the abort signal — see the leak rationale on
|
|
35504
|
-
// `_listenerAbortController`. The signal is still passed for uniform
|
|
35505
|
-
// cleanup semantics with the child-element listeners in the other
|
|
35506
|
-
// configure* methods.
|
|
35507
|
-
const { signal } = this._listenerAbortController;
|
|
35508
|
-
|
|
35509
35214
|
this.addEventListener('focusin', () => {
|
|
35510
35215
|
this.touched = true;
|
|
35511
35216
|
this.hasFocus = true;
|
|
35512
|
-
}
|
|
35217
|
+
});
|
|
35513
35218
|
|
|
35514
35219
|
this.addEventListener('focusout', () => {
|
|
35515
35220
|
this.hasFocus = false;
|
|
@@ -35521,7 +35226,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
35521
35226
|
if (!this.matches(':focus-within')) {
|
|
35522
35227
|
this.validate();
|
|
35523
35228
|
}
|
|
35524
|
-
}
|
|
35229
|
+
});
|
|
35525
35230
|
|
|
35526
35231
|
if (this.valueObject) {
|
|
35527
35232
|
this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
|
|
@@ -35719,41 +35424,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
35719
35424
|
return this.validity !== undefined && this.validity !== 'valid';
|
|
35720
35425
|
}
|
|
35721
35426
|
|
|
35722
|
-
/**
|
|
35723
|
-
* Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
|
|
35724
|
-
* spans every datepicker instance on the page; lives on the class (not
|
|
35725
|
-
* at module scope) so it stays an encapsulated implementation detail of
|
|
35726
|
-
* this component and does not interfere with WCA's class-JSDoc
|
|
35727
|
-
* attachment.
|
|
35728
|
-
* @private
|
|
35729
|
-
*/
|
|
35730
|
-
static _warnedInvalidLocales = new Set();
|
|
35731
|
-
|
|
35732
|
-
/**
|
|
35733
|
-
* Logs a one-time `console.debug` when an unsupported locale falls back to
|
|
35734
|
-
* en-US. Deduped by the offending tag so noisy re-renders that resurface
|
|
35735
|
-
* the same bad value stay quiet, but each new bad value still signals so
|
|
35736
|
-
* consumers can spot the typo or missing tag.
|
|
35737
|
-
* @private
|
|
35738
|
-
* @param {string|undefined} badLocale - The locale value that failed.
|
|
35739
|
-
* @returns {void}
|
|
35740
|
-
*/
|
|
35741
|
-
_warnInvalidLocale(badLocale) {
|
|
35742
|
-
// Stringify without coalescing — `String(undefined)` / `String(null)`
|
|
35743
|
-
// surface the actual offending value in the log, instead of the
|
|
35744
|
-
// ambiguous `Locale ""` that `String(badLocale ?? '')` would produce.
|
|
35745
|
-
// Dedup still works correctly because each unique stringification
|
|
35746
|
-
// becomes its own Set entry.
|
|
35747
|
-
const key = String(badLocale);
|
|
35748
|
-
const seen = AuroDatePicker._warnedInvalidLocales;
|
|
35749
|
-
if (seen.has(key)) {
|
|
35750
|
-
return;
|
|
35751
|
-
}
|
|
35752
|
-
seen.add(key);
|
|
35753
|
-
// eslint-disable-next-line no-console
|
|
35754
|
-
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".`);
|
|
35755
|
-
}
|
|
35756
|
-
|
|
35757
35427
|
/**
|
|
35758
35428
|
* Lifecycle method to check if the locale is valid.
|
|
35759
35429
|
* @ignore
|
|
@@ -35764,15 +35434,10 @@ class AuroDatePicker extends AuroElement {
|
|
|
35764
35434
|
if (changedProperties.has('locale')) {
|
|
35765
35435
|
try {
|
|
35766
35436
|
const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
|
|
35767
|
-
|
|
35768
|
-
this._validLocale = this.locale;
|
|
35769
|
-
} else {
|
|
35770
|
-
this._validLocale = 'en-US';
|
|
35771
|
-
this._warnInvalidLocale(this.locale);
|
|
35772
|
-
}
|
|
35437
|
+
this._validLocale = supported.length > 0 ? this.locale : 'en-US';
|
|
35773
35438
|
} catch {
|
|
35439
|
+
console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
|
|
35774
35440
|
this._validLocale = 'en-US';
|
|
35775
|
-
this._warnInvalidLocale(this.locale);
|
|
35776
35441
|
}
|
|
35777
35442
|
|
|
35778
35443
|
const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
|
|
@@ -35854,6 +35519,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
35854
35519
|
// Skip centralDate update when user clicked a cell in range mode
|
|
35855
35520
|
// to prevent the displayed months from shifting
|
|
35856
35521
|
this.centralDate = this.value;
|
|
35522
|
+
//TODO: TEST THIS CHANGE
|
|
35523
|
+
// this.calendarRenderUtil.updateCentralDate(this, this.value);
|
|
35857
35524
|
}
|
|
35858
35525
|
|
|
35859
35526
|
this.setHasValue();
|
|
@@ -35913,6 +35580,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
35913
35580
|
// Skip centralDate update when user clicked a cell in range mode
|
|
35914
35581
|
// to prevent the displayed months from shifting
|
|
35915
35582
|
this.centralDate = this.valueEnd;
|
|
35583
|
+
// TODO: TEST THIS CHANGE
|
|
35584
|
+
// this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
|
|
35916
35585
|
}
|
|
35917
35586
|
|
|
35918
35587
|
this.validate();
|
|
@@ -36054,7 +35723,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
36054
35723
|
* @returns {void}
|
|
36055
35724
|
*/
|
|
36056
35725
|
configureClickHandler() {
|
|
36057
|
-
this.addEventListener('click', this.handleClick
|
|
35726
|
+
this.addEventListener('click', this.handleClick);
|
|
36058
35727
|
}
|
|
36059
35728
|
|
|
36060
35729
|
firstUpdated() {
|
|
@@ -36062,15 +35731,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
36062
35731
|
// Add the tag name as an attribute if it is different than the component name
|
|
36063
35732
|
this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
|
|
36064
35733
|
|
|
36065
|
-
// If the element was disconnected before this first render finished,
|
|
36066
|
-
// disconnectedCallback's microtask already aborted the controller. The
|
|
36067
|
-
// connectedCallback reinit guard skips that case because `hasUpdated`
|
|
36068
|
-
// is still false. Mint a fresh controller here so configure* registers
|
|
36069
|
-
// listeners against a live signal.
|
|
36070
|
-
if (this._listenerAbortController.signal.aborted) {
|
|
36071
|
-
this._listenerAbortController = new AbortController();
|
|
36072
|
-
}
|
|
36073
|
-
|
|
36074
35734
|
this.configureDropdown();
|
|
36075
35735
|
this.configureInput();
|
|
36076
35736
|
this.configureCalendar();
|
|
@@ -36082,36 +35742,9 @@ class AuroDatePicker extends AuroElement {
|
|
|
36082
35742
|
connectedCallback() {
|
|
36083
35743
|
super.connectedCallback();
|
|
36084
35744
|
|
|
36085
|
-
// True reconnect after `disconnectedCallback` aborted our controller:
|
|
36086
|
-
// the existing signal is dead, so listeners registered against it
|
|
36087
|
-
// would never fire. Create a fresh controller and re-run the
|
|
36088
|
-
// configure* wiring (each method is idempotent — it just re-caches
|
|
36089
|
-
// child refs and re-registers listeners against the new signal).
|
|
36090
|
-
// `hasUpdated` gates this so the *first* connect (which precedes
|
|
36091
|
-
// firstUpdated) still falls through to firstUpdated's initial wiring.
|
|
36092
|
-
if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
|
|
36093
|
-
this._listenerAbortController = new AbortController();
|
|
36094
|
-
this.configureDropdown();
|
|
36095
|
-
this.configureInput();
|
|
36096
|
-
this.configureCalendar();
|
|
36097
|
-
this.configureDatepicker();
|
|
36098
|
-
this.configureClickHandler();
|
|
36099
|
-
}
|
|
36100
|
-
|
|
36101
35745
|
this.locale = this.domHandler.getLocale(this);
|
|
36102
35746
|
}
|
|
36103
35747
|
|
|
36104
|
-
disconnectedCallback() {
|
|
36105
|
-
super.disconnectedCallback();
|
|
36106
|
-
// Defer so that re-parenting (auro-drawer slotting it into a dialog,
|
|
36107
|
-
// for example) does not abort listeners we still need after reconnect.
|
|
36108
|
-
queueMicrotask(() => {
|
|
36109
|
-
if (!this.isConnected) {
|
|
36110
|
-
this._listenerAbortController.abort();
|
|
36111
|
-
}
|
|
36112
|
-
});
|
|
36113
|
-
}
|
|
36114
|
-
|
|
36115
35748
|
// layout render methods
|
|
36116
35749
|
// ------------------------------------
|
|
36117
35750
|
|