@aurodesignsystem-dev/auro-formkit 0.0.0-pr1492.4 → 0.0.0-pr1493.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/bibtemplate/dist/auro-bibtemplate.d.ts +7 -0
- package/components/bibtemplate/dist/index.js +9 -1
- package/components/bibtemplate/dist/registered.js +9 -1
- package/components/checkbox/demo/css-only.html +57 -0
- package/components/checkbox/demo/css-only.md +146 -0
- package/components/checkbox/demo/customize.min.js +2 -2
- package/components/checkbox/demo/getting-started.min.js +2 -2
- package/components/checkbox/demo/index.min.js +2 -2
- package/components/checkbox/demo/pages.json +1 -1
- package/components/checkbox/demo/styles.min.css +1 -1
- package/components/checkbox/demo/why-checkbox.html +57 -0
- package/components/checkbox/demo/why-checkbox.md +86 -0
- package/components/checkbox/dist/index.js +2 -2
- package/components/checkbox/dist/registered.js +2 -2
- package/components/combobox/demo/css-only.html +57 -0
- package/components/combobox/demo/css-only.md +209 -0
- package/components/combobox/demo/customize.md +7 -3
- package/components/combobox/demo/customize.min.js +1846 -1804
- package/components/combobox/demo/getting-started.min.js +1846 -1804
- package/components/combobox/demo/index.min.js +1846 -1804
- package/components/combobox/demo/pages.json +1 -1
- package/components/combobox/demo/styles.min.css +1 -1
- package/components/combobox/demo/why-combobox.html +57 -0
- package/components/combobox/demo/why-combobox.md +113 -0
- package/components/combobox/dist/auro-combobox.d.ts +5 -0
- package/components/combobox/dist/index.js +796 -179
- package/components/combobox/dist/registered.js +796 -179
- package/components/counter/demo/css-only.html +57 -0
- package/components/counter/demo/css-only.md +184 -0
- package/components/counter/demo/customize.min.js +276 -16
- package/components/counter/demo/index.min.js +276 -16
- package/components/counter/demo/keyboard-behavior.md +1 -0
- package/components/counter/demo/pages.json +1 -1
- package/components/counter/demo/styles.min.css +1 -1
- package/components/counter/demo/why-counter.html +57 -0
- package/components/counter/demo/why-counter.md +108 -0
- package/components/counter/dist/index.js +5457 -193
- package/components/counter/dist/registered.js +5457 -193
- package/components/datepicker/demo/accessibility.md +54 -3
- package/components/datepicker/demo/api.md +65 -55
- package/components/datepicker/demo/css-only.html +57 -0
- package/components/datepicker/demo/css-only.md +151 -0
- package/components/datepicker/demo/customize.html +2 -0
- package/components/datepicker/demo/customize.js +19 -0
- package/components/datepicker/demo/customize.md +474 -298
- package/components/datepicker/demo/customize.min.js +36243 -0
- package/components/datepicker/demo/design.md +5 -3
- package/components/datepicker/demo/getting-started.md +6 -6
- package/components/datepicker/demo/index.js +5 -1
- package/components/datepicker/demo/index.md +113 -16
- package/components/datepicker/demo/index.min.js +2736 -398
- package/components/datepicker/demo/keyboard-behavior.md +201 -2
- package/components/datepicker/demo/pages.json +1 -1
- package/components/datepicker/demo/styles.min.css +1 -1
- package/components/datepicker/demo/voiceover.md +21 -12
- package/components/datepicker/demo/why-datepicker.html +57 -0
- package/components/datepicker/demo/why-datepicker.md +133 -0
- package/components/datepicker/dist/index.js +2650 -399
- package/components/datepicker/dist/registered.js +2650 -399
- package/components/datepicker/dist/src/auro-calendar-cell.d.ts +116 -14
- package/components/datepicker/dist/src/auro-calendar-month.d.ts +54 -1
- package/components/datepicker/dist/src/auro-calendar.d.ts +264 -0
- package/components/datepicker/dist/src/auro-datepicker.d.ts +189 -53
- package/components/datepicker/dist/src/datepickerKeyboardStrategy.d.ts +5 -3
- package/components/datepicker/dist/src/utilities.d.ts +0 -14
- package/components/dropdown/demo/accessibility.md +11 -0
- package/components/dropdown/demo/api.md +1 -0
- package/components/dropdown/demo/css-only.html +57 -0
- package/components/dropdown/demo/css-only.md +219 -0
- package/components/dropdown/demo/customize.md +3 -0
- package/components/dropdown/demo/customize.min.js +265 -13
- package/components/dropdown/demo/getting-started.min.js +265 -13
- package/components/dropdown/demo/index.min.js +265 -13
- package/components/dropdown/demo/keyboard-behavior.md +1 -0
- package/components/dropdown/demo/pages.json +1 -1
- package/components/dropdown/demo/styles.min.css +1 -1
- package/components/dropdown/demo/why-dropdown.html +57 -0
- package/components/dropdown/demo/why-dropdown.md +97 -0
- package/components/dropdown/dist/auro-dropdown.d.ts +36 -1
- package/components/dropdown/dist/index.js +265 -13
- package/components/dropdown/dist/registered.js +265 -13
- package/components/form/demo/css-only.html +57 -0
- package/components/form/demo/css-only.md +156 -0
- package/components/form/demo/customize.min.js +11085 -8074
- package/components/form/demo/getting-started.min.js +11085 -8074
- package/components/form/demo/index.min.js +11085 -8074
- package/components/form/demo/pages.json +1 -1
- package/components/form/demo/registerDemoDeps.min.js +11084 -8073
- package/components/form/demo/styles.min.css +1 -1
- package/components/form/demo/why-form.html +57 -0
- package/components/form/demo/why-form.md +101 -0
- package/components/input/demo/css-only.html +57 -0
- package/components/input/demo/css-only.md +199 -0
- package/components/input/demo/customize.md +625 -636
- package/components/input/demo/customize.min.js +150 -75
- package/components/input/demo/getting-started.md +16 -6
- package/components/input/demo/getting-started.min.js +150 -75
- package/components/input/demo/index.min.js +150 -75
- package/components/input/demo/pages.json +1 -1
- package/components/input/demo/styles.min.css +1 -1
- package/components/input/demo/why-input.html +57 -0
- package/components/input/demo/why-input.md +121 -0
- package/components/input/dist/auro-input-util.d.ts +1 -1
- package/components/input/dist/base-input.d.ts +16 -0
- package/components/input/dist/index.js +150 -75
- package/components/input/dist/registered.js +150 -75
- package/components/input/dist/utilities.d.ts +1 -2
- package/components/menu/demo/api.md +41 -45
- package/components/menu/demo/css-only.html +57 -0
- package/components/menu/demo/css-only.md +166 -0
- package/components/menu/demo/customize.md +0 -28
- package/components/menu/demo/index.min.js +779 -1354
- package/components/menu/demo/pages.json +1 -1
- package/components/menu/demo/styles.min.css +1 -1
- package/components/menu/demo/why-menu.html +57 -0
- package/components/menu/demo/why-menu.md +104 -0
- package/components/menu/dist/auro-menu.d.ts +95 -110
- package/components/menu/dist/auro-menuoption.d.ts +32 -138
- package/components/menu/dist/index.js +753 -1308
- package/components/menu/dist/registered.js +765 -1308
- package/components/radio/demo/css-only.html +57 -0
- package/components/radio/demo/css-only.md +151 -0
- package/components/radio/demo/customize.min.js +1764 -0
- package/components/radio/demo/demo-support.min.js +55807 -0
- package/components/radio/demo/getting-started.js +1 -1
- package/components/radio/demo/getting-started.md +1 -1
- package/components/radio/demo/getting-started.min.js +1783 -0
- package/components/radio/demo/index.min.js +2 -2
- package/components/radio/demo/pages.json +1 -1
- package/components/radio/demo/styles.min.css +1 -1
- package/components/radio/demo/why-radio.html +57 -0
- package/components/radio/demo/why-radio.md +92 -0
- package/components/radio/dist/index.js +2 -2
- package/components/radio/dist/registered.js +2 -2
- package/components/select/demo/api.md +1 -0
- package/components/select/demo/css-only.html +57 -0
- package/components/select/demo/css-only.md +203 -0
- package/components/select/demo/customize.md +78 -3
- package/components/select/demo/customize.min.js +1341 -1533
- package/components/select/demo/getting-started.min.js +1341 -1533
- package/components/select/demo/index.min.js +1341 -1533
- package/components/select/demo/keyboard-behavior.md +19 -0
- package/components/select/demo/pages.json +1 -1
- package/components/select/demo/styles.min.css +1 -1
- package/components/select/demo/why-select.html +57 -0
- package/components/select/demo/why-select.md +128 -0
- package/components/select/dist/auro-select.d.ts +38 -2
- package/components/select/dist/index.js +435 -52
- package/components/select/dist/registered.js +435 -52
- package/components/select/dist/selectUtils.d.ts +12 -0
- package/custom-elements.json +3051 -2553
- package/package.json +8 -8
- package/components/menu/dist/auro-menu.context.d.ts +0 -238
|
@@ -764,7 +764,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
764
764
|
} else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
|
|
765
765
|
const input = elem.renderRoot.querySelector('input');
|
|
766
766
|
|
|
767
|
-
if (input.validationMessage.length > 0) {
|
|
767
|
+
if (input && input.validationMessage.length > 0) {
|
|
768
768
|
elem.errorMessage = input.validationMessage;
|
|
769
769
|
}
|
|
770
770
|
} else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
|
|
@@ -10359,7 +10359,11 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
10359
10359
|
return part.value;
|
|
10360
10360
|
}
|
|
10361
10361
|
})
|
|
10362
|
-
.join("")
|
|
10362
|
+
.join("")
|
|
10363
|
+
// Remove whitespace and leading/trailing special characters for IMask compatibility
|
|
10364
|
+
// for example, ko-KR's format is `YYYY. MM. DD.` which causes issues with IMask if we don't remove the trailing period.
|
|
10365
|
+
.replace(/\s/gu, '')
|
|
10366
|
+
.replace(/^[^A-Z0-9]+|[^A-Z0-9]+$/gu, '');
|
|
10363
10367
|
}
|
|
10364
10368
|
|
|
10365
10369
|
/**
|
|
@@ -10515,27 +10519,16 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
10515
10519
|
* Converts a model value to a display value for the input element.
|
|
10516
10520
|
* For full date formats, converts an ISO model value to the configured display format.
|
|
10517
10521
|
* @private
|
|
10518
|
-
* @param {string} value - The model value (ISO string for date types).
|
|
10519
10522
|
* @param {Date|undefined} valueObject - Date object representation of value.
|
|
10520
10523
|
* @param {string} format - The date format string.
|
|
10521
|
-
* @returns {string}
|
|
10524
|
+
* @returns {string | undefined}
|
|
10522
10525
|
*/
|
|
10523
|
-
toFormattedValue(
|
|
10524
|
-
if (!this.isFullDateFormat('date', format) || !value) {
|
|
10525
|
-
return value;
|
|
10526
|
-
}
|
|
10527
|
-
|
|
10528
|
-
if (!dateFormatter$1.isValidDate(value)) {
|
|
10529
|
-
// For ISO-pattern strings that fail range validation (e.g. '2024-99-99'),
|
|
10530
|
-
// return '' so inputElement stays empty and format-based validation is not triggered.
|
|
10531
|
-
return (/^\d{4}-\d{2}-\d{2}$/u).test(value) ? '' : value;
|
|
10532
|
-
}
|
|
10533
|
-
|
|
10526
|
+
toFormattedValue(valueObject, format) {
|
|
10534
10527
|
const normalizedFormat = format.toLowerCase();
|
|
10535
10528
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
10536
10529
|
|
|
10537
10530
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
10538
|
-
return
|
|
10531
|
+
return undefined;
|
|
10539
10532
|
}
|
|
10540
10533
|
|
|
10541
10534
|
return maskOptions.format(valueObject);
|
|
@@ -10559,29 +10552,6 @@ function getDateFormatFromLocale$1 (locale) {
|
|
|
10559
10552
|
|
|
10560
10553
|
class AuroDatepickerUtilities {
|
|
10561
10554
|
|
|
10562
|
-
/**
|
|
10563
|
-
* Converts an ISO date string (yyyy-mm-dd) to any display format.
|
|
10564
|
-
* @param {string} isoStr - ISO date string.
|
|
10565
|
-
* @param {string} format - Target display format (e.g. "mm/dd/yyyy", "dd/mm/yyyy").
|
|
10566
|
-
* @returns {string|undefined}
|
|
10567
|
-
*/
|
|
10568
|
-
toCustomFormat(isoStr, format) {
|
|
10569
|
-
if (!isoStr || !format) return undefined;
|
|
10570
|
-
try {
|
|
10571
|
-
const date = dateFormatter$1.stringToDateInstance(isoStr);
|
|
10572
|
-
const year = String(date.getFullYear()).padStart(4, '0');
|
|
10573
|
-
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
10574
|
-
const day = String(date.getDate()).padStart(2, '0');
|
|
10575
|
-
return format.toLowerCase()
|
|
10576
|
-
.replace(/yyyy/iu, year)
|
|
10577
|
-
.replace(/yy/iu, year.slice(-2))
|
|
10578
|
-
.replace(/mm/iu, month)
|
|
10579
|
-
.replace(/dd/iu, day);
|
|
10580
|
-
} catch {
|
|
10581
|
-
return undefined;
|
|
10582
|
-
}
|
|
10583
|
-
}
|
|
10584
|
-
|
|
10585
10555
|
/**
|
|
10586
10556
|
* Converts any date object to a date object representing the first day of the month.
|
|
10587
10557
|
* @param {Object} date - Date to convert to the first day of the month.
|
|
@@ -10607,17 +10577,6 @@ class AuroDatepickerUtilities {
|
|
|
10607
10577
|
return months <= 0 ? 0 : months;
|
|
10608
10578
|
}
|
|
10609
10579
|
|
|
10610
|
-
/**
|
|
10611
|
-
* Function to format a number to two digits.
|
|
10612
|
-
* @private
|
|
10613
|
-
* @param {Number} num - Number to format.
|
|
10614
|
-
* @returns {String}
|
|
10615
|
-
*/
|
|
10616
|
-
formatTwoDigits(num) {
|
|
10617
|
-
const singleDigitThreshold = 10;
|
|
10618
|
-
return num < singleDigitThreshold ? `0${num}` : num;
|
|
10619
|
-
}
|
|
10620
|
-
|
|
10621
10580
|
/**
|
|
10622
10581
|
* Function to generate checkmark svg.
|
|
10623
10582
|
* @private
|
|
@@ -10675,6 +10634,7 @@ class UtilitiesCalendarRender {
|
|
|
10675
10634
|
updateCentralDate(elem, date) {
|
|
10676
10635
|
// if date is already iso formatted string, we can skip the conversion and validation step
|
|
10677
10636
|
if (typeof date === 'string' && dateFormatter$1.isValidDate(date)) {
|
|
10637
|
+
// eslint-disable-next-line
|
|
10678
10638
|
elem.centralDate = date.replace(/(\d{4})-(\d{2})-(\d{2})/, '$1-$2-01'); // Set to first of the month
|
|
10679
10639
|
return;
|
|
10680
10640
|
}
|
|
@@ -10700,6 +10660,7 @@ class UtilitiesCalendarRender {
|
|
|
10700
10660
|
determineDefinedCalendarRange(elem) {
|
|
10701
10661
|
if (elem.getAttribute('calendarStartDate') && elem.getAttribute('calendarEndDate')) {
|
|
10702
10662
|
// if we have a defined range of months, use that
|
|
10663
|
+
// prop is not in sync with attribute yet, use attribute value
|
|
10703
10664
|
elem.calendarRangeMonths = elem.util.monthDiff(dateFormatter$1.stringToDateInstance(elem.getAttribute('calendarStartDate')), dateFormatter$1.stringToDateInstance(elem.getAttribute('calendarEndDate')));
|
|
10704
10665
|
} else {
|
|
10705
10666
|
// if we don't have a defined range of months, use undefined
|
|
@@ -10758,13 +10719,10 @@ class UtilitiesCalendarRender {
|
|
|
10758
10719
|
// 2. Start by assuming we can render the max number of months.
|
|
10759
10720
|
let calendarCount = maxRenderableMonths;
|
|
10760
10721
|
|
|
10761
|
-
// 3. If
|
|
10722
|
+
// 3. If maximumRenderableMonths() returns 0 (e.g. an invalid/empty defined range),
|
|
10723
|
+
// fall back to the min/max date range so something is rendered.
|
|
10762
10724
|
if (!calendarCount && elem.minDate && elem.maxDate) {
|
|
10763
|
-
|
|
10764
|
-
|
|
10765
|
-
if (monthsInRange < maxRenderableMonths) {
|
|
10766
|
-
calendarCount = monthsInRange;
|
|
10767
|
-
}
|
|
10725
|
+
calendarCount = this.util.monthDiff(elem.minDateObject, elem.maxDateObject);
|
|
10768
10726
|
}
|
|
10769
10727
|
|
|
10770
10728
|
if (elem.numCalendars !== calendarCount) {
|
|
@@ -10808,11 +10766,10 @@ class UtilitiesCalendarRender {
|
|
|
10808
10766
|
<auro-formkit-calendar-month
|
|
10809
10767
|
id="${`month-${month}-${year}`}"
|
|
10810
10768
|
.disabledDays="${elem.disabledDays}"
|
|
10811
|
-
.min="${elem.
|
|
10812
|
-
.max="${elem.
|
|
10769
|
+
.min="${elem.minDateObject?.getTime() / 1000}"
|
|
10770
|
+
.max="${elem.maxDateObject?.getTime() / 1000}"
|
|
10813
10771
|
?noRange="${elem.noRange}"
|
|
10814
10772
|
.monthFirst="${elem.monthFirst}"
|
|
10815
|
-
.hoveredDate="${elem.hoveredDate}"
|
|
10816
10773
|
.dateTo="${elem.dateTo}"
|
|
10817
10774
|
.dateFrom="${elem.dateFrom}"
|
|
10818
10775
|
.locale="${elem.locale}"
|
|
@@ -10845,11 +10802,11 @@ var snowflakeStyle = i$3`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
|
|
|
10845
10802
|
|
|
10846
10803
|
var snowflakeColors = i$3`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
|
|
10847
10804
|
|
|
10848
|
-
var styleCss$7 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendarNavButtons{position:absolute;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}`;
|
|
10805
|
+
var styleCss$7 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;--desktop-footer-height: 80px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendars:focus{outline:none}.calendarNavButtons{position:absolute;z-index:1;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}.calendarWrapper.hasFooter{padding-bottom:var(--desktop-footer-height)}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}.sr-only{position:absolute;overflow:hidden;clip:rect(0, 0, 0, 0);width:1px;height:1px;margin:-1px;padding:0;border:0;white-space:nowrap}`;
|
|
10849
10806
|
|
|
10850
10807
|
var colorCss$7 = i$3`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);box-shadow:inset 0 0 0 1px var(--ds-auro-calendar-nav-btn-border-color)}.mobileHeader{background-color:var(--ds-auro-calendar-mobile-header-container-color)}.mobileDateLabel{color:var(--ds-auro-calendar-mobile-header-text-color)}:host(:not([noRange])) .headerDateTo:after{background-color:var(--ds-auro-calendar-mobile-header-divider-color)}::slotted([slot="bib.fullscreen.fromStr"]),::slotted([slot=mobileDateToStr]){color:var(--ds-auro-datepicker-placeholder-color)}@media screen and (max-width: 576px){.calendarNavBtn{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}}`;
|
|
10851
10808
|
|
|
10852
|
-
var styleCss$6 = i$3`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem)}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:384px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%}`;
|
|
10809
|
+
var styleCss$6 = i$3`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem) var(--ds-size-200, 1rem) 0}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:376px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%;border-radius:10px;overflow:hidden}.tr:not(:last-of-type){margin-bottom:var(--ds-size-100, 0.5rem)}`;
|
|
10853
10810
|
|
|
10854
10811
|
var colorCss$6 = i$3`:focus:not(:focus-visible){outline:3px solid transparent}:host{background-color:var(--ds-auro-calendar-month-container-color)}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{background-color:var(--ds-auro-calendar-month-divider-color)}}.header{color:var(--ds-auro-calendar-month-header-color)}`;
|
|
10855
10812
|
|
|
@@ -11610,41 +11567,45 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
|
|
|
11610
11567
|
__decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
|
|
11611
11568
|
AuroLibraryRuntimeUtils$5.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
|
|
11612
11569
|
|
|
11613
|
-
var styleCss$5 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:var(--ds-size-500, 2.5rem);height:calc(var(--ds-size-700, 3.5rem) - 2px);padding:0;border-width:1px;border-style:solid;border-radius:var(--ds-size-300, 1.5rem);cursor:pointer;user-select:none}.day.disabled{cursor:default !important;pointer-events:none}.day.reference{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background, #ffffff)}.day.inRange::before{position:absolute;z-index:-1;top:50%;left:50%;display:block;width:14.2857142857vw;height:var(--ds-size-600, 3rem);content:"";transform:translate(-50%, -50%)}@media screen and (min-width: 576px){.day.inRange::before{width:var(--ds-size-600, 3rem)}}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:50%;left:50%;display:block;width:14.2857142857vw;height:var(--ds-size-600, 3rem);content:"";transform:translate(-50%, -50%);width:7.1428571429vw;transform:translate(0%, -50%)}@media screen and (min-width: 576px){.day.rangeDepartDate::before{width:calc(var(--ds-size-600, 3rem)/2)}}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:50%;left:50%;display:block;width:14.2857142857vw;height:var(--ds-size-600, 3rem);content:"";transform:translate(-50%, -50%);width:7.1428571429vw;transform:translate(-100%, -50%)}@media screen and (min-width: 576px){.day.rangeReturnDate::before,.day.lastHoveredDate::before{width:calc(var(--ds-size-600, 3rem)/2)}}.dateSlot{display:flex;flex-direction:column}::slotted([slot^=date_]){position:absolute;top:80%;left:50%;width:100%;white-space:nowrap;transform:translate(-50%, -50%)}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;top:5px}:host([renderForDateSlot]) .currentDayMarker{position:relative;padding-bottom:5px;top:-8px}@media screen and (min-width: 576px){.day{width:var(--ds-size-600, 3rem);height:var(--ds-size-800, 4rem)}.day:hover{cursor:pointer}}`;
|
|
11570
|
+
var styleCss$5 = i$3`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
|
|
11614
11571
|
|
|
11615
|
-
var colorCss$5 = i$3`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day.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{--ds-
|
|
11572
|
+
var colorCss$5 = i$3`:host ::slotted([slot^=date_]){color:var(--ds-auro-calendar-cell-price-text-color)}:host ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success, #447a1f)}:host .day{border-color:var(--ds-auro-calendar-cell-border-color);background-color:var(--ds-auro-calendar-cell-container-color);color:var(--ds-auro-calendar-cell-text-color)}:host .day.activeCell:not(.selected){--ds-auro-calendar-cell-container-color: var(--ds-auro-calendar-cell-in-range-color);border-color:var(--ds-advanced-color-state-selected);outline-color:var(--ds-auro-calendar-cell-container-color)}:host .day.selected{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected, #01426a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.selected ::slotted([slot^=date_][highlight]){--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-status-success-subtle, #d6eac7)}:host .day.selected:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-selected-hover, #00274a);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host .day.reference:after{border-color:var(--ds-basic-color-border-default, #959595);box-shadow:inset 0 0 0 2px var(--ds-basic-color-surface-default, #ffffff)}:host .day.reference:hover::after{box-shadow:inset 0 0 0 2px var(--ds-advanced-color-shared-background-muted, #f7f7f7)}:host .day:hover{--ds-auro-calendar-cell-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host .day.disabled{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.blackout{--ds-auro-calendar-cell-container-color: transparent;--ds-auro-calendar-cell-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-calendar-cell-price-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0)}:host .day.inRange:before,:host .day.rangeDepartDate:before,:host .day.rangeReturnDate:before,:host .day.lastHoveredDate:before{background-color:var(--ds-auro-calendar-cell-in-range-color)}:host .day.sameDateTrip:before{--ds-auro-calendar-cell-in-range-color: transparent}`;
|
|
11616
11573
|
|
|
11617
|
-
let s$2 = class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,class extends t{});}closestElement(e,t=this,i=(t,s=t&&t.closest(e))=>t&&t!==document&&t!==window?s||i(t.getRootNode().host):null){return i(t)}handleComponentTagRename(e,t){const i=t.toLowerCase();e.tagName.toLowerCase()!==i&&e.setAttribute(i,true);}elementMatch(e,t){const i=t.toLowerCase();return e.tagName.toLowerCase()===i||e.hasAttribute(i)}getSlotText(e,t){const i=e.shadowRoot?.querySelector(`slot[name="${t}"]`);return (i?.assignedNodes({flatten:true})||[]).map(e=>e.textContent?.trim()).join(" ").trim()||null}};var r$3="top",o$3="bottom",n$3="right",a="left",l$3="auto",c$5=[r$3,o$3,n$3,a],p$7="start",d$3="end",f$7="viewport",h$6="popper",m$7=c$5.reduce(function(e,t){return e.concat([t+"-"+p$7,t+"-"+d$3])},[]),u$8=[].concat(c$5,[l$3]).reduce(function(e,t){return e.concat([t,t+"-"+p$7,t+"-"+d$3])},[]),g$6=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function v$4(e){return e?(e.nodeName||"").toLowerCase():null}function y$6(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function w$6(e){return e instanceof y$6(e).Element||e instanceof Element}function b$3(e){return e instanceof y$6(e).HTMLElement||e instanceof HTMLElement}function x$3(e){return "undefined"!=typeof ShadowRoot&&(e instanceof y$6(e).ShadowRoot||e instanceof ShadowRoot)}var S$3={name:"applyStyles",enabled:true,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var i=t.styles[e]||{},s=t.attributes[e]||{},r=t.elements[e];b$3(r)&&v$4(r)&&(Object.assign(r.style,i),Object.keys(s).forEach(function(e){var t=s[e];false===t?r.removeAttribute(e):r.setAttribute(e,true===t?"":t);}));});},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(e){var s=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce(function(e,t){return e[t]="",e},{});b$3(s)&&v$4(s)&&(Object.assign(s.style,o),Object.keys(r).forEach(function(e){s.removeAttribute(e);}));});}},requires:["computeStyles"]};function _$4(e){return e.split("-")[0]}var O=Math.max,k$6=Math.min,A$3=Math.round;function z$6(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function E(){return !/^((?!chrome|android).)*safari/i.test(z$6())}function M$7(e,t,i){ void 0===t&&(t=false),void 0===i&&(i=false);var s=e.getBoundingClientRect(),r=1,o=1;t&&b$3(e)&&(r=e.offsetWidth>0&&A$3(s.width)/e.offsetWidth||1,o=e.offsetHeight>0&&A$3(s.height)/e.offsetHeight||1);var n=(w$6(e)?y$6(e):window).visualViewport,a=!E()&&i,l=(s.left+(a&&n?n.offsetLeft:0))/r,c=(s.top+(a&&n?n.offsetTop:0))/o,p=s.width/r,d=s.height/o;return {width:p,height:d,top:c,right:l+p,bottom:c+d,left:l,x:l,y:c}}function T$3(e){var t=M$7(e),i=e.offsetWidth,s=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-s)<=1&&(s=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:s}}function B$3(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return true;if(i&&x$3(i)){var s=t;do{if(s&&e.isSameNode(s))return true;s=s.parentNode||s.host;}while(s)}return false}function L(e){return y$6(e).getComputedStyle(e)}function H$3(e){return ["table","td","th"].indexOf(v$4(e))>=0}function C$3(e){return ((w$6(e)?e.ownerDocument:e.document)||window.document).documentElement}function R$3(e){return "html"===v$4(e)?e:e.assignedSlot||e.parentNode||(x$3(e)?e.host:null)||C$3(e)}function j(e){return b$3(e)&&"fixed"!==L(e).position?e.offsetParent:null}function N$3(e){for(var t=y$6(e),i=j(e);i&&H$3(i)&&"static"===L(i).position;)i=j(i);return i&&("html"===v$4(i)||"body"===v$4(i)&&"static"===L(i).position)?t:i||function(e){var t=/firefox/i.test(z$6());if(/Trident/i.test(z$6())&&b$3(e)&&"fixed"===L(e).position)return null;var i=R$3(e);for(x$3(i)&&(i=i.host);b$3(i)&&["html","body"].indexOf(v$4(i))<0;){var s=L(i);if("none"!==s.transform||"none"!==s.perspective||"paint"===s.contain||-1!==["transform","perspective"].indexOf(s.willChange)||t&&"filter"===s.willChange||t&&s.filter&&"none"!==s.filter)return i;i=i.parentNode;}return null}(e)||t}function P(e){return ["top","bottom"].indexOf(e)>=0?"x":"y"}function D(e,t,i){return O(e,k$6(t,i))}function I(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function F(e,t){return t.reduce(function(t,i){return t[i]=e,t},{})}var U$3={name:"arrow",enabled:true,phase:"main",fn:function(e){var t,i=e.state,s=e.name,l=e.options,p=i.elements.arrow,d=i.modifiersData.popperOffsets,f=_$4(i.placement),h=P(f),m=[a,n$3].indexOf(f)>=0?"height":"width";if(p&&d){var u=function(e,t){return I("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:F(e,c$5))}(l.padding,i),g=T$3(p),v="y"===h?r$3:a,y="y"===h?o$3:n$3,w=i.rects.reference[m]+i.rects.reference[h]-d[h]-i.rects.popper[m],b=d[h]-i.rects.reference[h],x=N$3(p),S=x?"y"===h?x.clientHeight||0:x.clientWidth||0:0,O=w/2-b/2,k=u[v],A=S-g[m]-u[y],z=S/2-g[m]/2+O,E=D(k,z,A),M=h;i.modifiersData[s]=((t={})[M]=E,t.centerOffset=E-z,t);}},effect:function(e){var t=e.state,i=e.options.element,s=void 0===i?"[data-popper-arrow]":i;null!=s&&("string"!=typeof s||(s=t.elements.popper.querySelector(s)))&&B$3(t.elements.popper,s)&&(t.elements.arrow=s);},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function q$3(e){return e.split("-")[1]}var W={top:"auto",right:"auto",bottom:"auto",left:"auto"};function X(e){var t,i=e.popper,s=e.popperRect,l=e.placement,c=e.variation,p=e.offsets,f=e.position,h=e.gpuAcceleration,m=e.adaptive,u=e.roundOffsets,g=e.isFixed,v=p.x,w=void 0===v?0:v,b=p.y,x=void 0===b?0:b,S="function"==typeof u?u({x:w,y:x}):{x:w,y:x};w=S.x,x=S.y;var _=p.hasOwnProperty("x"),O=p.hasOwnProperty("y"),k=a,z=r$3,E=window;if(m){var M=N$3(i),T="clientHeight",B="clientWidth";if(M===y$6(i)&&"static"!==L(M=C$3(i)).position&&"absolute"===f&&(T="scrollHeight",B="scrollWidth"),l===r$3||(l===a||l===n$3)&&c===d$3)z=o$3,x-=(g&&M===E&&E.visualViewport?E.visualViewport.height:M[T])-s.height,x*=h?1:-1;if(l===a||(l===r$3||l===o$3)&&c===d$3)k=n$3,w-=(g&&M===E&&E.visualViewport?E.visualViewport.width:M[B])-s.width,w*=h?1:-1;}var H,R=Object.assign({position:f},m&&W),j=true===u?function(e,t){var i=e.x,s=e.y,r=t.devicePixelRatio||1;return {x:A$3(i*r)/r||0,y:A$3(s*r)/r||0}}({x:w,y:x},y$6(i)):{x:w,y:x};return w=j.x,x=j.y,h?Object.assign({},R,((H={})[z]=O?"0":"",H[k]=_?"0":"",H.transform=(E.devicePixelRatio||1)<=1?"translate("+w+"px, "+x+"px)":"translate3d("+w+"px, "+x+"px, 0)",H)):Object.assign({},R,((t={})[z]=O?x+"px":"",t[k]=_?w+"px":"",t.transform="",t))}var V={passive:true};var G={left:"right",right:"left",bottom:"top",top:"bottom"};function $(e){return e.replace(/left|right|bottom|top/g,function(e){return G[e]})}var K={start:"end",end:"start"};function Y(e){return e.replace(/start|end/g,function(e){return K[e]})}function J(e){var t=y$6(e);return {scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Q(e){return M$7(C$3(e)).left+J(e).scrollLeft}function Z(e){var t=L(e),i=t.overflow,s=t.overflowX,r=t.overflowY;return /auto|scroll|overlay|hidden/.test(i+r+s)}function ee(e){return ["html","body","#document"].indexOf(v$4(e))>=0?e.ownerDocument.body:b$3(e)&&Z(e)?e:ee(R$3(e))}function te(e,t){var i;void 0===t&&(t=[]);var s=ee(e),r=s===(null==(i=e.ownerDocument)?void 0:i.body),o=y$6(s),n=r?[o].concat(o.visualViewport||[],Z(s)?s:[]):s,a=t.concat(n);return r?a:a.concat(te(R$3(n)))}function ie(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function se(e,t,i){return t===f$7?ie(function(e,t){var i=y$6(e),s=C$3(e),r=i.visualViewport,o=s.clientWidth,n=s.clientHeight,a=0,l=0;if(r){o=r.width,n=r.height;var c=E();(c||!c&&"fixed"===t)&&(a=r.offsetLeft,l=r.offsetTop);}return {width:o,height:n,x:a+Q(e),y:l}}(e,i)):w$6(t)?function(e,t){var i=M$7(e,false,"fixed"===t);return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}(t,i):ie(function(e){var t,i=C$3(e),s=J(e),r=null==(t=e.ownerDocument)?void 0:t.body,o=O(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),n=O(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),a=-s.scrollLeft+Q(e),l=-s.scrollTop;return "rtl"===L(r||i).direction&&(a+=O(i.clientWidth,r?r.clientWidth:0)-o),{width:o,height:n,x:a,y:l}}(C$3(e)))}function re(e,t,i,s){var r="clippingParents"===t?function(e){var t=te(R$3(e)),i=["absolute","fixed"].indexOf(L(e).position)>=0&&b$3(e)?N$3(e):e;return w$6(i)?t.filter(function(e){return w$6(e)&&B$3(e,i)&&"body"!==v$4(e)}):[]}(e):[].concat(t),o=[].concat(r,[i]),n=o[0],a=o.reduce(function(t,i){var r=se(e,i,s);return t.top=O(r.top,t.top),t.right=k$6(r.right,t.right),t.bottom=k$6(r.bottom,t.bottom),t.left=O(r.left,t.left),t},se(e,n,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function oe(e){var t,i=e.reference,s=e.element,l=e.placement,c=l?_$4(l):null,f=l?q$3(l):null,h=i.x+i.width/2-s.width/2,m=i.y+i.height/2-s.height/2;switch(c){case r$3:t={x:h,y:i.y-s.height};break;case o$3:t={x:h,y:i.y+i.height};break;case n$3:t={x:i.x+i.width,y:m};break;case a:t={x:i.x-s.width,y:m};break;default:t={x:i.x,y:i.y};}var u=c?P(c):null;if(null!=u){var g="y"===u?"height":"width";switch(f){case p$7:t[u]=t[u]-(i[g]/2-s[g]/2);break;case d$3:t[u]=t[u]+(i[g]/2-s[g]/2);}}return t}function ne(e,t){ void 0===t&&(t={});var i=t,s=i.placement,a=void 0===s?e.placement:s,l=i.strategy,p=void 0===l?e.strategy:l,d=i.boundary,m=void 0===d?"clippingParents":d,u=i.rootBoundary,g=void 0===u?f$7:u,v=i.elementContext,y=void 0===v?h$6:v,b=i.altBoundary,x=void 0!==b&&b,S=i.padding,_=void 0===S?0:S,O=I("number"!=typeof _?_:F(_,c$5)),k=y===h$6?"reference":h$6,A=e.rects.popper,z=e.elements[x?k:y],E=re(w$6(z)?z:z.contextElement||C$3(e.elements.popper),m,g,p),T=M$7(e.elements.reference),B=oe({reference:T,element:A,placement:a}),L=ie(Object.assign({},A,B)),H=y===h$6?L:T,R={top:E.top-H.top+O.top,bottom:H.bottom-E.bottom+O.bottom,left:E.left-H.left+O.left,right:H.right-E.right+O.right},j=e.modifiersData.offset;if(y===h$6&&j){var N=j[a];Object.keys(R).forEach(function(e){var t=[n$3,o$3].indexOf(e)>=0?1:-1,i=[r$3,o$3].indexOf(e)>=0?"y":"x";R[e]+=N[i]*t;});}return R}function ae(e,t){ void 0===t&&(t={});var i=t,s=i.placement,r=i.boundary,o=i.rootBoundary,n=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,p=void 0===l?u$8:l,d=q$3(s),f=d?a?m$7:m$7.filter(function(e){return q$3(e)===d}):c$5,h=f.filter(function(e){return p.indexOf(e)>=0});0===h.length&&(h=f);var g=h.reduce(function(t,i){return t[i]=ne(e,{placement:i,boundary:r,rootBoundary:o,padding:n})[_$4(i)],t},{});return Object.keys(g).sort(function(e,t){return g[e]-g[t]})}var le={name:"flip",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name;if(!t.modifiersData[s]._skip){for(var c=i.mainAxis,d=void 0===c||c,f=i.altAxis,h=void 0===f||f,m=i.fallbackPlacements,u=i.padding,g=i.boundary,v=i.rootBoundary,y=i.altBoundary,w=i.flipVariations,b=void 0===w||w,x=i.allowedAutoPlacements,S=t.options.placement,O=_$4(S),k=m||(O===S||!b?[$(S)]:function(e){if(_$4(e)===l$3)return [];var t=$(e);return [Y(e),t,Y(t)]}(S)),A=[S].concat(k).reduce(function(e,i){return e.concat(_$4(i)===l$3?ae(t,{placement:i,boundary:g,rootBoundary:v,padding:u,flipVariations:b,allowedAutoPlacements:x}):i)},[]),z=t.rects.reference,E=t.rects.popper,M=new Map,T=true,B=A[0],L=0;L<A.length;L++){var H=A[L],C=_$4(H),R=q$3(H)===p$7,j=[r$3,o$3].indexOf(C)>=0,N=j?"width":"height",P=ne(t,{placement:H,boundary:g,rootBoundary:v,altBoundary:y,padding:u}),D=j?R?n$3:a:R?o$3:r$3;z[N]>E[N]&&(D=$(D));var I=$(D),F=[];if(d&&F.push(P[C]<=0),h&&F.push(P[D]<=0,P[I]<=0),F.every(function(e){return e})){B=H,T=false;break}M.set(H,F);}if(T)for(var U=function(e){var t=A.find(function(t){var i=M.get(t);if(i)return i.slice(0,e).every(function(e){return e})});if(t)return B=t,"break"},W=b?3:1;W>0;W--){if("break"===U(W))break}t.placement!==B&&(t.modifiersData[s]._skip=true,t.placement=B,t.reset=true);}},requiresIfExists:["offset"],data:{_skip:false}};function ce(e,t,i){return void 0===i&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function pe(e){return [r$3,n$3,o$3,a].some(function(t){return e[t]>=0})}var de={name:"offset",enabled:true,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,s=e.name,o=i.offset,l=void 0===o?[0,0]:o,c=u$8.reduce(function(e,i){return e[i]=function(e,t,i){var s=_$4(e),o=[a,r$3].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},t,{placement:e})):i,c=l[0],p=l[1];return c=c||0,p=(p||0)*o,[a,n$3].indexOf(s)>=0?{x:p,y:c}:{x:c,y:p}}(i,t.rects,l),e},{}),p=c[t.placement],d=p.x,f=p.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=f),t.modifiersData[s]=c;}};var fe={name:"preventOverflow",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name,l=i.mainAxis,c=void 0===l||l,d=i.altAxis,f=void 0!==d&&d,h=i.boundary,m=i.rootBoundary,u=i.altBoundary,g=i.padding,v=i.tether,y=void 0===v||v,w=i.tetherOffset,b=void 0===w?0:w,x=ne(t,{boundary:h,rootBoundary:m,padding:g,altBoundary:u}),S=_$4(t.placement),A=q$3(t.placement),z=!A,E=P(S),M="x"===E?"y":"x",B=t.modifiersData.popperOffsets,L=t.rects.reference,H=t.rects.popper,C="function"==typeof b?b(Object.assign({},t.rects,{placement:t.placement})):b,R="number"==typeof C?{mainAxis:C,altAxis:C}:Object.assign({mainAxis:0,altAxis:0},C),j=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,I={x:0,y:0};if(B){if(c){var F,U="y"===E?r$3:a,W="y"===E?o$3:n$3,X="y"===E?"height":"width",V=B[E],G=V+x[U],$=V-x[W],K=y?-H[X]/2:0,Y=A===p$7?L[X]:H[X],J=A===p$7?-H[X]:-L[X],Q=t.elements.arrow,Z=y&&Q?T$3(Q):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[U],ie=ee[W],se=D(0,L[X],Z[X]),re=z?L[X]/2-K-se-te-R.mainAxis:Y-se-te-R.mainAxis,oe=z?-L[X]/2+K+se+ie+R.mainAxis:J+se+ie+R.mainAxis,ae=t.elements.arrow&&N$3(t.elements.arrow),le=ae?"y"===E?ae.clientTop||0:ae.clientLeft||0:0,ce=null!=(F=null==j?void 0:j[E])?F:0,pe=V+oe-ce,de=D(y?k$6(G,V+re-ce-le):G,V,y?O($,pe):$);B[E]=de,I[E]=de-V;}if(f){var fe,he="x"===E?r$3:a,me="x"===E?o$3:n$3,ue=B[M],ge="y"===M?"height":"width",ve=ue+x[he],ye=ue-x[me],we=-1!==[r$3,a].indexOf(S),be=null!=(fe=null==j?void 0:j[M])?fe:0,xe=we?ve:ue-L[ge]-H[ge]-be+R.altAxis,Se=we?ue+L[ge]+H[ge]-be-R.altAxis:ye,_e=y&&we?function(e,t,i){var s=D(e,t,i);return s>i?i:s}(xe,ue,Se):D(y?xe:ve,ue,y?Se:ye);B[M]=_e,I[M]=_e-ue;}t.modifiersData[s]=I;}},requiresIfExists:["offset"]};function he(e,t,i){ void 0===i&&(i=false);var s,r,o=b$3(t),n=b$3(t)&&function(e){var t=e.getBoundingClientRect(),i=A$3(t.width)/e.offsetWidth||1,s=A$3(t.height)/e.offsetHeight||1;return 1!==i||1!==s}(t),a=C$3(t),l=M$7(e,n,i),c={scrollLeft:0,scrollTop:0},p={x:0,y:0};return (o||!o&&!i)&&(("body"!==v$4(t)||Z(a))&&(c=(s=t)!==y$6(s)&&b$3(s)?{scrollLeft:(r=s).scrollLeft,scrollTop:r.scrollTop}:J(s)),b$3(t)?((p=M$7(t,true)).x+=t.clientLeft,p.y+=t.clientTop):a&&(p.x=Q(a))),{x:l.left+c.scrollLeft-p.x,y:l.top+c.scrollTop-p.y,width:l.width,height:l.height}}function me(e){var t=new Map,i=new Set,s=[];function r(e){i.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!i.has(e)){var s=t.get(e);s&&r(s);}}),s.push(e);}return e.forEach(function(e){t.set(e.name,e);}),e.forEach(function(e){i.has(e.name)||r(e);}),s}var ue={placement:"bottom",modifiers:[],strategy:"absolute"};function ge(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return !t.some(function(e){return !(e&&"function"==typeof e.getBoundingClientRect)})}function ve(e){ void 0===e&&(e={});var t=e,i=t.defaultModifiers,s=void 0===i?[]:i,r=t.defaultOptions,o=void 0===r?ue:r;return function(e,t,i){ void 0===i&&(i=o);var r,n,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},ue,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},l=[],c=false,p={state:a,setOptions:function(i){var r="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,r),a.scrollParents={reference:w$6(e)?te(e):e.contextElement?te(e.contextElement):[],popper:te(t)};var n,c,f=function(e){var t=me(e);return g$6.reduce(function(e,i){return e.concat(t.filter(function(e){return e.phase===i}))},[])}((n=[].concat(s,a.options.modifiers),c=n.reduce(function(e,t){var i=e[t.name];return e[t.name]=i?Object.assign({},i,t,{options:Object.assign({},i.options,t.options),data:Object.assign({},i.data,t.data)}):t,e},{}),Object.keys(c).map(function(e){return c[e]})));return a.orderedModifiers=f.filter(function(e){return e.enabled}),a.orderedModifiers.forEach(function(e){var t=e.name,i=e.options,s=void 0===i?{}:i,r=e.effect;if("function"==typeof r){var o=r({state:a,name:t,instance:p,options:s}),n=function(){};l.push(o||n);}}),p.update()},forceUpdate:function(){if(!c){var e=a.elements,t=e.reference,i=e.popper;if(ge(t,i)){a.rects={reference:he(t,N$3(i),"fixed"===a.options.strategy),popper:T$3(i)},a.reset=false,a.placement=a.options.placement,a.orderedModifiers.forEach(function(e){return a.modifiersData[e.name]=Object.assign({},e.data)});for(var s=0;s<a.orderedModifiers.length;s++)if(true!==a.reset){var r=a.orderedModifiers[s],o=r.fn,n=r.options,l=void 0===n?{}:n,d=r.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:p})||a);}else a.reset=false,s=-1;}}},update:(r=function(){return new Promise(function(e){p.forceUpdate(),e(a);})},function(){return n||(n=new Promise(function(e){Promise.resolve().then(function(){n=void 0,e(r());});})),n}),destroy:function(){d(),c=true;}};if(!ge(e,t))return p;function d(){l.forEach(function(e){return e()}),l=[];}return p.setOptions(i).then(function(e){!c&&i.onFirstUpdate&&i.onFirstUpdate(e);}),p}}var ye=ve({defaultModifiers:[{name:"eventListeners",enabled:true,phase:"write",fn:function(){},effect:function(e){var t=e.state,i=e.instance,s=e.options,r=s.scroll,o=void 0===r||r,n=s.resize,a=void 0===n||n,l=y$6(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(e){e.addEventListener("scroll",i.update,V);}),a&&l.addEventListener("resize",i.update,V),function(){o&&c.forEach(function(e){e.removeEventListener("scroll",i.update,V);}),a&&l.removeEventListener("resize",i.update,V);}},data:{}},{name:"popperOffsets",enabled:true,phase:"read",fn:function(e){var t=e.state,i=e.name;t.modifiersData[i]=oe({reference:t.rects.reference,element:t.rects.popper,placement:t.placement});},data:{}},{name:"computeStyles",enabled:true,phase:"beforeWrite",fn:function(e){var t=e.state,i=e.options,s=i.gpuAcceleration,r=void 0===s||s,o=i.adaptive,n=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:_$4(t.placement),variation:q$3(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,X(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:n,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,X(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:false,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement});},data:{}},S$3,de,le,fe,U$3,{name:"hide",enabled:true,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,s=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,n=ne(t,{elementContext:"reference"}),a=ne(t,{altBoundary:true}),l=ce(n,s),c=ce(a,r,o),p=pe(l),d=pe(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":d});}}]});class we{constructor(e,t,i,s){this.anchor=e,this.popover=t,this.boundaryElement=this.setBoundary(s),this.options={placement:i,visibleClass:"data-show"},this.popover.classList.remove(this.options.visibleClass);}setBoundary(e){return "string"==typeof e?document.querySelector(e)||document.body:e||document.body}show(){this.popper&&this.popper.destroy(),this.popper=ye(this.anchor,this.popover,{tooltip:this.anchor,placement:this.options.placement,modifiers:[{name:"offset",options:{offset:[0,18]}},{name:"preventOverflow",options:{mainAxis:true,boundary:this.boundaryElement,rootBoundary:"document",padding:16}}]});}triggerUpdate(){this.popper.update();}hide(){this.popover.classList.remove(this.options.visibleClass);}}var be=i$3`::slotted(*):not([onDark]),::slotted(*):not([appearance=inverse]){color:var(--ds-auro-popover-text-color)}.popover{background-color:var(--ds-auro-popover-container-color);box-shadow:var(--ds-auro-popover-boxshadow-color)}.arrow:before{background-color:var(--ds-auro-popover-container-color);box-shadow:2px 2px 1px 0 var(--ds-auro-popover-boxshadow-color)}
|
|
11574
|
+
let s$2 = class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,class extends t{});}closestElement(e,t=this,i=(t,s=t&&t.closest(e))=>t&&t!==document&&t!==window?s||i(t.getRootNode().host):null){return i(t)}handleComponentTagRename(e,t){const i=t.toLowerCase();e.tagName.toLowerCase()!==i&&e.setAttribute(i,true);}elementMatch(e,t){const i=t.toLowerCase();return e.tagName.toLowerCase()===i||e.hasAttribute(i)}getSlotText(e,t){const i=e.shadowRoot?.querySelector(`slot[name="${t}"]`);return (i?.assignedNodes({flatten:true})||[]).map(e=>e.textContent?.trim()).join(" ").trim()||null}};var r$3="top",o$3="bottom",n$3="right",a="left",l$3="auto",c$5=[r$3,o$3,n$3,a],p$7="start",d$3="end",f$7="viewport",h$6="popper",u$8=c$5.reduce(function(e,t){return e.concat([t+"-"+p$7,t+"-"+d$3])},[]),m$7=[].concat(c$5,[l$3]).reduce(function(e,t){return e.concat([t,t+"-"+p$7,t+"-"+d$3])},[]),g$6=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function v$4(e){return e?(e.nodeName||"").toLowerCase():null}function y$6(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function w$6(e){return e instanceof y$6(e).Element||e instanceof Element}function b$3(e){return e instanceof y$6(e).HTMLElement||e instanceof HTMLElement}function x$3(e){return "undefined"!=typeof ShadowRoot&&(e instanceof y$6(e).ShadowRoot||e instanceof ShadowRoot)}var S$3={name:"applyStyles",enabled:true,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var i=t.styles[e]||{},s=t.attributes[e]||{},r=t.elements[e];b$3(r)&&v$4(r)&&(Object.assign(r.style,i),Object.keys(s).forEach(function(e){var t=s[e];false===t?r.removeAttribute(e):r.setAttribute(e,true===t?"":t);}));});},effect:function(e){var t=e.state,i={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,i.popper),t.styles=i,t.elements.arrow&&Object.assign(t.elements.arrow.style,i.arrow),function(){Object.keys(t.elements).forEach(function(e){var s=t.elements[e],r=t.attributes[e]||{},o=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:i[e]).reduce(function(e,t){return e[t]="",e},{});b$3(s)&&v$4(s)&&(Object.assign(s.style,o),Object.keys(r).forEach(function(e){s.removeAttribute(e);}));});}},requires:["computeStyles"]};function _$4(e){return e.split("-")[0]}var A$3=Math.max,O=Math.min,k$6=Math.round;function T$3(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function z$6(){return !/^((?!chrome|android).)*safari/i.test(T$3())}function E(e,t,i){ void 0===t&&(t=false),void 0===i&&(i=false);var s=e.getBoundingClientRect(),r=1,o=1;t&&b$3(e)&&(r=e.offsetWidth>0&&k$6(s.width)/e.offsetWidth||1,o=e.offsetHeight>0&&k$6(s.height)/e.offsetHeight||1);var n=(w$6(e)?y$6(e):window).visualViewport,a=!z$6()&&i,l=(s.left+(a&&n?n.offsetLeft:0))/r,c=(s.top+(a&&n?n.offsetTop:0))/o,p=s.width/r,d=s.height/o;return {width:p,height:d,top:c,right:l+p,bottom:c+d,left:l,x:l,y:c}}function M$7(e){var t=E(e),i=e.offsetWidth,s=e.offsetHeight;return Math.abs(t.width-i)<=1&&(i=t.width),Math.abs(t.height-s)<=1&&(s=t.height),{x:e.offsetLeft,y:e.offsetTop,width:i,height:s}}function B$3(e,t){var i=t.getRootNode&&t.getRootNode();if(e.contains(t))return true;if(i&&x$3(i)){var s=t;do{if(s&&e.isSameNode(s))return true;s=s.parentNode||s.host;}while(s)}return false}function L(e){return y$6(e).getComputedStyle(e)}function R$3(e){return ["table","td","th"].indexOf(v$4(e))>=0}function H$3(e){return ((w$6(e)?e.ownerDocument:e.document)||window.document).documentElement}function C$3(e){return "html"===v$4(e)?e:e.assignedSlot||e.parentNode||(x$3(e)?e.host:null)||H$3(e)}function D(e){return b$3(e)&&"fixed"!==L(e).position?e.offsetParent:null}function N$3(e){for(var t=y$6(e),i=D(e);i&&R$3(i)&&"static"===L(i).position;)i=D(i);return i&&("html"===v$4(i)||"body"===v$4(i)&&"static"===L(i).position)?t:i||function(e){var t=/firefox/i.test(T$3());if(/Trident/i.test(T$3())&&b$3(e)&&"fixed"===L(e).position)return null;var i=C$3(e);for(x$3(i)&&(i=i.host);b$3(i)&&["html","body"].indexOf(v$4(i))<0;){var s=L(i);if("none"!==s.transform||"none"!==s.perspective||"paint"===s.contain||-1!==["transform","perspective"].indexOf(s.willChange)||t&&"filter"===s.willChange||t&&s.filter&&"none"!==s.filter)return i;i=i.parentNode;}return null}(e)||t}function P(e){return ["top","bottom"].indexOf(e)>=0?"x":"y"}function j(e,t,i){return A$3(e,O(t,i))}function I(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function q$3(e,t){return t.reduce(function(t,i){return t[i]=e,t},{})}var F={name:"arrow",enabled:true,phase:"main",fn:function(e){var t,i=e.state,s=e.name,l=e.options,p=i.elements.arrow,d=i.modifiersData.popperOffsets,f=_$4(i.placement),h=P(f),u=[a,n$3].indexOf(f)>=0?"height":"width";if(p&&d){var m=function(e,t){return I("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:q$3(e,c$5))}(l.padding,i),g=M$7(p),v="y"===h?r$3:a,y="y"===h?o$3:n$3,w=i.rects.reference[u]+i.rects.reference[h]-d[h]-i.rects.popper[u],b=d[h]-i.rects.reference[h],x=N$3(p),S=x?"y"===h?x.clientHeight||0:x.clientWidth||0:0,A=w/2-b/2,O=m[v],k=S-g[u]-m[y],T=S/2-g[u]/2+A,z=j(O,T,k),E=h;i.modifiersData[s]=((t={})[E]=z,t.centerOffset=z-T,t);}},effect:function(e){var t=e.state,i=e.options.element,s=void 0===i?"[data-popper-arrow]":i;null!=s&&("string"!=typeof s||(s=t.elements.popper.querySelector(s)))&&B$3(t.elements.popper,s)&&(t.elements.arrow=s);},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function U$3(e){return e.split("-")[1]}var V={top:"auto",right:"auto",bottom:"auto",left:"auto"};function W(e){var t,i=e.popper,s=e.popperRect,l=e.placement,c=e.variation,p=e.offsets,f=e.position,h=e.gpuAcceleration,u=e.adaptive,m=e.roundOffsets,g=e.isFixed,v=p.x,w=void 0===v?0:v,b=p.y,x=void 0===b?0:b,S="function"==typeof m?m({x:w,y:x}):{x:w,y:x};w=S.x,x=S.y;var _=p.hasOwnProperty("x"),A=p.hasOwnProperty("y"),O=a,T=r$3,z=window;if(u){var E=N$3(i),M="clientHeight",B="clientWidth";if(E===y$6(i)&&"static"!==L(E=H$3(i)).position&&"absolute"===f&&(M="scrollHeight",B="scrollWidth"),l===r$3||(l===a||l===n$3)&&c===d$3)T=o$3,x-=(g&&E===z&&z.visualViewport?z.visualViewport.height:E[M])-s.height,x*=h?1:-1;if(l===a||(l===r$3||l===o$3)&&c===d$3)O=n$3,w-=(g&&E===z&&z.visualViewport?z.visualViewport.width:E[B])-s.width,w*=h?1:-1;}var R,C=Object.assign({position:f},u&&V),D=true===m?function(e,t){var i=e.x,s=e.y,r=t.devicePixelRatio||1;return {x:k$6(i*r)/r||0,y:k$6(s*r)/r||0}}({x:w,y:x},y$6(i)):{x:w,y:x};return w=D.x,x=D.y,h?Object.assign({},C,((R={})[T]=A?"0":"",R[O]=_?"0":"",R.transform=(z.devicePixelRatio||1)<=1?"translate("+w+"px, "+x+"px)":"translate3d("+w+"px, "+x+"px, 0)",R)):Object.assign({},C,((t={})[T]=A?x+"px":"",t[O]=_?w+"px":"",t.transform="",t))}var X={passive:true};var $={left:"right",right:"left",bottom:"top",top:"bottom"};function G(e){return e.replace(/left|right|bottom|top/g,function(e){return $[e]})}var K={start:"end",end:"start"};function Y(e){return e.replace(/start|end/g,function(e){return K[e]})}function J(e){var t=y$6(e);return {scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Q(e){return E(H$3(e)).left+J(e).scrollLeft}function Z(e){var t=L(e),i=t.overflow,s=t.overflowX,r=t.overflowY;return /auto|scroll|overlay|hidden/.test(i+r+s)}function ee(e){return ["html","body","#document"].indexOf(v$4(e))>=0?e.ownerDocument.body:b$3(e)&&Z(e)?e:ee(C$3(e))}function te(e,t){var i;void 0===t&&(t=[]);var s=ee(e),r=s===(null==(i=e.ownerDocument)?void 0:i.body),o=y$6(s),n=r?[o].concat(o.visualViewport||[],Z(s)?s:[]):s,a=t.concat(n);return r?a:a.concat(te(C$3(n)))}function ie(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function se(e,t,i){return t===f$7?ie(function(e,t){var i=y$6(e),s=H$3(e),r=i.visualViewport,o=s.clientWidth,n=s.clientHeight,a=0,l=0;if(r){o=r.width,n=r.height;var c=z$6();(c||!c&&"fixed"===t)&&(a=r.offsetLeft,l=r.offsetTop);}return {width:o,height:n,x:a+Q(e),y:l}}(e,i)):w$6(t)?function(e,t){var i=E(e,false,"fixed"===t);return i.top=i.top+e.clientTop,i.left=i.left+e.clientLeft,i.bottom=i.top+e.clientHeight,i.right=i.left+e.clientWidth,i.width=e.clientWidth,i.height=e.clientHeight,i.x=i.left,i.y=i.top,i}(t,i):ie(function(e){var t,i=H$3(e),s=J(e),r=null==(t=e.ownerDocument)?void 0:t.body,o=A$3(i.scrollWidth,i.clientWidth,r?r.scrollWidth:0,r?r.clientWidth:0),n=A$3(i.scrollHeight,i.clientHeight,r?r.scrollHeight:0,r?r.clientHeight:0),a=-s.scrollLeft+Q(e),l=-s.scrollTop;return "rtl"===L(r||i).direction&&(a+=A$3(i.clientWidth,r?r.clientWidth:0)-o),{width:o,height:n,x:a,y:l}}(H$3(e)))}function re(e,t,i,s){var r="clippingParents"===t?function(e){var t=te(C$3(e)),i=["absolute","fixed"].indexOf(L(e).position)>=0&&b$3(e)?N$3(e):e;return w$6(i)?t.filter(function(e){return w$6(e)&&B$3(e,i)&&"body"!==v$4(e)}):[]}(e):[].concat(t),o=[].concat(r,[i]),n=o[0],a=o.reduce(function(t,i){var r=se(e,i,s);return t.top=A$3(r.top,t.top),t.right=O(r.right,t.right),t.bottom=O(r.bottom,t.bottom),t.left=A$3(r.left,t.left),t},se(e,n,s));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}function oe(e){var t,i=e.reference,s=e.element,l=e.placement,c=l?_$4(l):null,f=l?U$3(l):null,h=i.x+i.width/2-s.width/2,u=i.y+i.height/2-s.height/2;switch(c){case r$3:t={x:h,y:i.y-s.height};break;case o$3:t={x:h,y:i.y+i.height};break;case n$3:t={x:i.x+i.width,y:u};break;case a:t={x:i.x-s.width,y:u};break;default:t={x:i.x,y:i.y};}var m=c?P(c):null;if(null!=m){var g="y"===m?"height":"width";switch(f){case p$7:t[m]=t[m]-(i[g]/2-s[g]/2);break;case d$3:t[m]=t[m]+(i[g]/2-s[g]/2);}}return t}function ne(e,t){ void 0===t&&(t={});var i=t,s=i.placement,a=void 0===s?e.placement:s,l=i.strategy,p=void 0===l?e.strategy:l,d=i.boundary,u=void 0===d?"clippingParents":d,m=i.rootBoundary,g=void 0===m?f$7:m,v=i.elementContext,y=void 0===v?h$6:v,b=i.altBoundary,x=void 0!==b&&b,S=i.padding,_=void 0===S?0:S,A=I("number"!=typeof _?_:q$3(_,c$5)),O=y===h$6?"reference":h$6,k=e.rects.popper,T=e.elements[x?O:y],z=re(w$6(T)?T:T.contextElement||H$3(e.elements.popper),u,g,p),M=E(e.elements.reference),B=oe({reference:M,element:k,placement:a}),L=ie(Object.assign({},k,B)),R=y===h$6?L:M,C={top:z.top-R.top+A.top,bottom:R.bottom-z.bottom+A.bottom,left:z.left-R.left+A.left,right:R.right-z.right+A.right},D=e.modifiersData.offset;if(y===h$6&&D){var N=D[a];Object.keys(C).forEach(function(e){var t=[n$3,o$3].indexOf(e)>=0?1:-1,i=[r$3,o$3].indexOf(e)>=0?"y":"x";C[e]+=N[i]*t;});}return C}function ae(e,t){ void 0===t&&(t={});var i=t,s=i.placement,r=i.boundary,o=i.rootBoundary,n=i.padding,a=i.flipVariations,l=i.allowedAutoPlacements,p=void 0===l?m$7:l,d=U$3(s),f=d?a?u$8:u$8.filter(function(e){return U$3(e)===d}):c$5,h=f.filter(function(e){return p.indexOf(e)>=0});0===h.length&&(h=f);var g=h.reduce(function(t,i){return t[i]=ne(e,{placement:i,boundary:r,rootBoundary:o,padding:n})[_$4(i)],t},{});return Object.keys(g).sort(function(e,t){return g[e]-g[t]})}var le={name:"flip",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name;if(!t.modifiersData[s]._skip){for(var c=i.mainAxis,d=void 0===c||c,f=i.altAxis,h=void 0===f||f,u=i.fallbackPlacements,m=i.padding,g=i.boundary,v=i.rootBoundary,y=i.altBoundary,w=i.flipVariations,b=void 0===w||w,x=i.allowedAutoPlacements,S=t.options.placement,A=_$4(S),O=u||(A===S||!b?[G(S)]:function(e){if(_$4(e)===l$3)return [];var t=G(e);return [Y(e),t,Y(t)]}(S)),k=[S].concat(O).reduce(function(e,i){return e.concat(_$4(i)===l$3?ae(t,{placement:i,boundary:g,rootBoundary:v,padding:m,flipVariations:b,allowedAutoPlacements:x}):i)},[]),T=t.rects.reference,z=t.rects.popper,E=new Map,M=true,B=k[0],L=0;L<k.length;L++){var R=k[L],H=_$4(R),C=U$3(R)===p$7,D=[r$3,o$3].indexOf(H)>=0,N=D?"width":"height",P=ne(t,{placement:R,boundary:g,rootBoundary:v,altBoundary:y,padding:m}),j=D?C?n$3:a:C?o$3:r$3;T[N]>z[N]&&(j=G(j));var I=G(j),q=[];if(d&&q.push(P[H]<=0),h&&q.push(P[j]<=0,P[I]<=0),q.every(function(e){return e})){B=R,M=false;break}E.set(R,q);}if(M)for(var F=function(e){var t=k.find(function(t){var i=E.get(t);if(i)return i.slice(0,e).every(function(e){return e})});if(t)return B=t,"break"},V=b?3:1;V>0;V--){if("break"===F(V))break}t.placement!==B&&(t.modifiersData[s]._skip=true,t.placement=B,t.reset=true);}},requiresIfExists:["offset"],data:{_skip:false}};function ce(e,t,i){return void 0===i&&(i={x:0,y:0}),{top:e.top-t.height-i.y,right:e.right-t.width+i.x,bottom:e.bottom-t.height+i.y,left:e.left-t.width-i.x}}function pe(e){return [r$3,n$3,o$3,a].some(function(t){return e[t]>=0})}var de={name:"offset",enabled:true,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,i=e.options,s=e.name,o=i.offset,l=void 0===o?[0,0]:o,c=m$7.reduce(function(e,i){return e[i]=function(e,t,i){var s=_$4(e),o=[a,r$3].indexOf(s)>=0?-1:1,l="function"==typeof i?i(Object.assign({},t,{placement:e})):i,c=l[0],p=l[1];return c=c||0,p=(p||0)*o,[a,n$3].indexOf(s)>=0?{x:p,y:c}:{x:c,y:p}}(i,t.rects,l),e},{}),p=c[t.placement],d=p.x,f=p.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=f),t.modifiersData[s]=c;}};var fe={name:"preventOverflow",enabled:true,phase:"main",fn:function(e){var t=e.state,i=e.options,s=e.name,l=i.mainAxis,c=void 0===l||l,d=i.altAxis,f=void 0!==d&&d,h=i.boundary,u=i.rootBoundary,m=i.altBoundary,g=i.padding,v=i.tether,y=void 0===v||v,w=i.tetherOffset,b=void 0===w?0:w,x=ne(t,{boundary:h,rootBoundary:u,padding:g,altBoundary:m}),S=_$4(t.placement),k=U$3(t.placement),T=!k,z=P(S),E="x"===z?"y":"x",B=t.modifiersData.popperOffsets,L=t.rects.reference,R=t.rects.popper,H="function"==typeof b?b(Object.assign({},t.rects,{placement:t.placement})):b,C="number"==typeof H?{mainAxis:H,altAxis:H}:Object.assign({mainAxis:0,altAxis:0},H),D=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,I={x:0,y:0};if(B){if(c){var q,F="y"===z?r$3:a,V="y"===z?o$3:n$3,W="y"===z?"height":"width",X=B[z],$=X+x[F],G=X-x[V],K=y?-R[W]/2:0,Y=k===p$7?L[W]:R[W],J=k===p$7?-R[W]:-L[W],Q=t.elements.arrow,Z=y&&Q?M$7(Q):{width:0,height:0},ee=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},te=ee[F],ie=ee[V],se=j(0,L[W],Z[W]),re=T?L[W]/2-K-se-te-C.mainAxis:Y-se-te-C.mainAxis,oe=T?-L[W]/2+K+se+ie+C.mainAxis:J+se+ie+C.mainAxis,ae=t.elements.arrow&&N$3(t.elements.arrow),le=ae?"y"===z?ae.clientTop||0:ae.clientLeft||0:0,ce=null!=(q=null==D?void 0:D[z])?q:0,pe=X+oe-ce,de=j(y?O($,X+re-ce-le):$,X,y?A$3(G,pe):G);B[z]=de,I[z]=de-X;}if(f){var fe,he="x"===z?r$3:a,ue="x"===z?o$3:n$3,me=B[E],ge="y"===E?"height":"width",ve=me+x[he],ye=me-x[ue],we=-1!==[r$3,a].indexOf(S),be=null!=(fe=null==D?void 0:D[E])?fe:0,xe=we?ve:me-L[ge]-R[ge]-be+C.altAxis,Se=we?me+L[ge]+R[ge]-be-C.altAxis:ye,_e=y&&we?function(e,t,i){var s=j(e,t,i);return s>i?i:s}(xe,me,Se):j(y?xe:ve,me,y?Se:ye);B[E]=_e,I[E]=_e-me;}t.modifiersData[s]=I;}},requiresIfExists:["offset"]};function he(e,t,i){ void 0===i&&(i=false);var s,r,o=b$3(t),n=b$3(t)&&function(e){var t=e.getBoundingClientRect(),i=k$6(t.width)/e.offsetWidth||1,s=k$6(t.height)/e.offsetHeight||1;return 1!==i||1!==s}(t),a=H$3(t),l=E(e,n,i),c={scrollLeft:0,scrollTop:0},p={x:0,y:0};return (o||!o&&!i)&&(("body"!==v$4(t)||Z(a))&&(c=(s=t)!==y$6(s)&&b$3(s)?{scrollLeft:(r=s).scrollLeft,scrollTop:r.scrollTop}:J(s)),b$3(t)?((p=E(t,true)).x+=t.clientLeft,p.y+=t.clientTop):a&&(p.x=Q(a))),{x:l.left+c.scrollLeft-p.x,y:l.top+c.scrollTop-p.y,width:l.width,height:l.height}}function ue(e){var t=new Map,i=new Set,s=[];function r(e){i.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!i.has(e)){var s=t.get(e);s&&r(s);}}),s.push(e);}return e.forEach(function(e){t.set(e.name,e);}),e.forEach(function(e){i.has(e.name)||r(e);}),s}var me={placement:"bottom",modifiers:[],strategy:"absolute"};function ge(){for(var e=arguments.length,t=new Array(e),i=0;i<e;i++)t[i]=arguments[i];return !t.some(function(e){return !(e&&"function"==typeof e.getBoundingClientRect)})}function ve(e){ void 0===e&&(e={});var t=e,i=t.defaultModifiers,s=void 0===i?[]:i,r=t.defaultOptions,o=void 0===r?me:r;return function(e,t,i){ void 0===i&&(i=o);var r,n,a={placement:"bottom",orderedModifiers:[],options:Object.assign({},me,o),modifiersData:{},elements:{reference:e,popper:t},attributes:{},styles:{}},l=[],c=false,p={state:a,setOptions:function(i){var r="function"==typeof i?i(a.options):i;d(),a.options=Object.assign({},o,a.options,r),a.scrollParents={reference:w$6(e)?te(e):e.contextElement?te(e.contextElement):[],popper:te(t)};var n,c,f=function(e){var t=ue(e);return g$6.reduce(function(e,i){return e.concat(t.filter(function(e){return e.phase===i}))},[])}((n=[].concat(s,a.options.modifiers),c=n.reduce(function(e,t){var i=e[t.name];return e[t.name]=i?Object.assign({},i,t,{options:Object.assign({},i.options,t.options),data:Object.assign({},i.data,t.data)}):t,e},{}),Object.keys(c).map(function(e){return c[e]})));return a.orderedModifiers=f.filter(function(e){return e.enabled}),a.orderedModifiers.forEach(function(e){var t=e.name,i=e.options,s=void 0===i?{}:i,r=e.effect;if("function"==typeof r){var o=r({state:a,name:t,instance:p,options:s}),n=function(){};l.push(o||n);}}),p.update()},forceUpdate:function(){if(!c){var e=a.elements,t=e.reference,i=e.popper;if(ge(t,i)){a.rects={reference:he(t,N$3(i),"fixed"===a.options.strategy),popper:M$7(i)},a.reset=false,a.placement=a.options.placement,a.orderedModifiers.forEach(function(e){return a.modifiersData[e.name]=Object.assign({},e.data)});for(var s=0;s<a.orderedModifiers.length;s++)if(true!==a.reset){var r=a.orderedModifiers[s],o=r.fn,n=r.options,l=void 0===n?{}:n,d=r.name;"function"==typeof o&&(a=o({state:a,options:l,name:d,instance:p})||a);}else a.reset=false,s=-1;}}},update:(r=function(){return new Promise(function(e){p.forceUpdate(),e(a);})},function(){return n||(n=new Promise(function(e){Promise.resolve().then(function(){n=void 0,e(r());});})),n}),destroy:function(){d(),c=true;}};if(!ge(e,t))return p;function d(){l.forEach(function(e){return e()}),l=[];}return p.setOptions(i).then(function(e){!c&&i.onFirstUpdate&&i.onFirstUpdate(e);}),p}}var ye=ve({defaultModifiers:[{name:"eventListeners",enabled:true,phase:"write",fn:function(){},effect:function(e){var t=e.state,i=e.instance,s=e.options,r=s.scroll,o=void 0===r||r,n=s.resize,a=void 0===n||n,l=y$6(t.elements.popper),c=[].concat(t.scrollParents.reference,t.scrollParents.popper);return o&&c.forEach(function(e){e.addEventListener("scroll",i.update,X);}),a&&l.addEventListener("resize",i.update,X),function(){o&&c.forEach(function(e){e.removeEventListener("scroll",i.update,X);}),a&&l.removeEventListener("resize",i.update,X);}},data:{}},{name:"popperOffsets",enabled:true,phase:"read",fn:function(e){var t=e.state,i=e.name;t.modifiersData[i]=oe({reference:t.rects.reference,element:t.rects.popper,placement:t.placement});},data:{}},{name:"computeStyles",enabled:true,phase:"beforeWrite",fn:function(e){var t=e.state,i=e.options,s=i.gpuAcceleration,r=void 0===s||s,o=i.adaptive,n=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:_$4(t.placement),variation:U$3(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:r,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,W(Object.assign({},c,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:n,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,W(Object.assign({},c,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:false,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement});},data:{}},S$3,de,le,fe,F,{name:"hide",enabled:true,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,i=e.name,s=t.rects.reference,r=t.rects.popper,o=t.modifiersData.preventOverflow,n=ne(t,{elementContext:"reference"}),a=ne(t,{altBoundary:true}),l=ce(n,s),c=ce(a,r,o),p=pe(l),d=pe(c);t.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:p,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":p,"data-popper-escaped":d});}}]});class we{constructor(e,t,i,s){this.anchor=e,this.popover=t,this.boundaryElement=this.setBoundary(s),this.options={placement:i,visibleClass:"data-show"},this.popover.classList.remove(this.options.visibleClass);}setBoundary(e){return "string"==typeof e?document.querySelector(e)||document.body:e||document.body}show(){this.popper&&this.popper.destroy(),this.popper=ye(this.anchor,this.popover,{tooltip:this.anchor,placement:this.options.placement,modifiers:[{name:"offset",options:{offset:[0,18]}},{name:"preventOverflow",options:{mainAxis:true,boundary:this.boundaryElement,rootBoundary:"document",padding:16}}]});}triggerUpdate(){this.popper.update();}hide(){this.popover.classList.remove(this.options.visibleClass);}}var be=i$3`::slotted(*):not([onDark]),::slotted(*):not([appearance=inverse]){color:var(--ds-auro-popover-text-color)}.popover{background-color:var(--ds-auro-popover-container-color);box-shadow:var(--ds-auro-popover-boxshadow-color)}.arrow:before{background-color:var(--ds-auro-popover-container-color);box-shadow:2px 2px 1px 0 var(--ds-auro-popover-boxshadow-color)}
|
|
11618
11575
|
`,xe=i$3`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden,:host(:not([data-show])) .popover,:host([disabled]) .popover,:host([addSpace]) :host(:not([data-show])) .popover{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px,1px,1px,1px);width:1px;height:1px;padding:0;border:0}.util_insetNone{padding:0}.util_insetXxxs{padding:.125rem}.util_insetXxxs--stretch{padding:.25rem .125rem}.util_insetXxxs--squish{padding:0 .125rem}.util_insetXxs{padding:.25rem}.util_insetXxs--stretch{padding:.375rem .25rem}.util_insetXxs--squish{padding:.125rem .25rem}.util_insetXs{padding:.5rem}.util_insetXs--stretch{padding:.75rem .5rem}.util_insetXs--squish{padding:.25rem .5rem}.util_insetSm{padding:.75rem}.util_insetSm--stretch{padding:1.125rem .75rem}.util_insetSm--squish{padding:.375rem .75rem}.util_insetMd{padding:1rem}.util_insetMd--stretch{padding:1.5rem 1rem}.util_insetMd--squish{padding:.5rem 1rem}.util_insetLg{padding:1.5rem}.util_insetLg--stretch{padding:2.25rem 1.5rem}.util_insetLg--squish{padding:.75rem 1.5rem}.util_insetXl{padding:2rem}.util_insetXl--stretch{padding:3rem 2rem}.util_insetXl--squish{padding:1rem 2rem}.util_insetXxl{padding:3rem}.util_insetXxl--stretch{padding:4.5rem 3rem}.util_insetXxl--squish{padding:1.5rem 3rem}.util_insetXxxl{padding:4rem}.util_insetXxxl--stretch{padding:6rem 4rem}.util_insetXxxl--squish{padding:2rem 4rem}::slotted(*){white-space:normal}::slotted(*:hover){cursor:pointer}[data-trigger-placement]::slotted(*:hover){position:relative}[data-trigger-placement]::slotted(*:hover):before{position:absolute;left:0;display:block;width:100%;height:calc(var(--ds-size-200, 1rem) + var(--ds-size-50, .25rem));content:""}[data-trigger-placement^=top]::slotted(*:hover):before{top:calc(-1 * (var(--ds-size-200, 1rem) + var(--ds-size-50, .25rem)))}[data-trigger-placement^=bottom]::slotted(*:hover):before{bottom:calc(-1 * (var(--ds-size-200, 1rem) + var(--ds-size-50, .25rem)))}:host([data-show]) .popover{z-index:var(--ds-depth-tooltip, 400)}:host([removeSpace]) .popover{margin:calc(-1 * (var(--ds-size-50, .25rem) + 1px)) 0!important}:host([addSpace]) .popover{margin:var(--ds-size-200, 1rem) 0!important}:host([addSpace]) [data-trigger-placement]::slotted(*:hover):before{height:var(--ds-size-500, 2.5rem)}:host([addSpace]) [data-trigger-placement^=top]::slotted(*:hover):before{top:calc(-1 * var(--ds-size-500, 2.5rem))}:host([addSpace]) [data-trigger-placement^=bottom]::slotted(*:hover):before{bottom:calc(-1 * var(--ds-size-500, 2.5rem))}.popover{display:inline-block;max-width:calc(100% - var(--ds-size-400, 2rem));border-radius:var(--ds-border-radius, .375rem)}@media screen and (min-width:576px){.popover{max-width:50%}}@media screen and (min-width:768px){.popover{max-width:40%}}@media screen and (min-width:1024px){.popover{max-width:27rem}}[data-popper-placement^=top]>.arrow{bottom:calc(-1 * (var(--ds-size-100, .5rem) + var(--ds-size-25, .125rem)))}[data-popper-placement^=top]>.arrow:before{top:calc(-1 * var(--ds-size-200, 1rem));left:calc(-1 * var(--ds-size-75, .375rem));transform:rotate(45deg)}[data-popper-placement^=bottom]>.arrow{top:calc(-1 * (var(--ds-size-100, .5rem) + var(--ds-size-25, .125rem)))}[data-popper-placement^=bottom]>.arrow:before{top:var(--ds-size-50, .25rem);right:calc(-1 * var(--ds-size-200, 1rem));transform:rotate(-135deg)}.arrow{position:relative;margin-top:-var(--ds-size-100,.5rem)}.arrow:before{position:absolute;width:var(--ds-size-150, .75rem);height:var(--ds-size-150, .75rem);content:""}
|
|
11619
11576
|
`,Se=i$3`:host{--ds-auro-popover-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, .15));--ds-auro-popover-container-color: var(--ds-basic-color-surface-default, #ffffff);--ds-auro-popover-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}
|
|
11620
|
-
`;class _e extends i$1{constructor(){super(),this.placement="top",this._onTouchStart=null,this._onTriggerMouseEnter=null,this._onTriggerMouseLeave=null,this._onTriggerFocus=null,this._onTriggerBlur=null,this._onTriggerKeydown=null,this._onHidePopover=null,this._onBodyMouseover=null,this._onSlotChange=null,this._addedTabIndex=false;}_initializeDefaults(){this.
|
|
11621
|
-
<div
|
|
11577
|
+
`;class _e extends i$1{constructor(){super(),this.placement="top",this.isPopoverVisible=false,this._onTouchStart=null,this._onTriggerMouseEnter=null,this._onTriggerMouseLeave=null,this._onTriggerFocus=null,this._onTriggerBlur=null,this._onTriggerKeydown=null,this._onHidePopover=null,this._onBodyMouseover=null,this._onSlotChange=null,this._addedTabIndex=false;}_initializeDefaults(){this.runtimeUtils=new s$2;}static get properties(){return {addSpace:{type:Boolean,reflect:true},boundary:{type:String},disabled:{type:Boolean,reflect:true},for:{type:String,reflect:true},placement:{type:String},removeSpace:{type:Boolean,reflect:true},isPopoverVisible:{type:Boolean,reflect:true,attribute:"data-show",converter:{fromAttribute:e=>null!==e,toAttribute:e=>e?"true":null}}}}static get styles(){return [i$3`${xe}`,i$3`${be}`,i$3`${Se}`]}static register(e="auro-popover"){s$2.prototype.registerComponent(e,_e);}connectedCallback(){super.connectedCallback(),this.hasAttribute("role")||this.setAttribute("role","none"),this._initializeDefaults(),this._onTouchStart||(this._onTouchStart=()=>{this.toggle();}),this.addEventListener("touchstart",this._onTouchStart);}disconnectedCallback(){if(super.disconnectedCallback(),this.removeEventListener("touchstart",this._onTouchStart),this.trigger){this._onTriggerMouseEnter&&this._eventTarget.removeEventListener("mouseenter",this._onTriggerMouseEnter),this._onTriggerMouseLeave&&this._eventTarget.removeEventListener("mouseleave",this._onTriggerMouseLeave),this._onTriggerFocus&&this.trigger.removeEventListener("focusin",this._onTriggerFocus),this._onTriggerBlur&&this.trigger.removeEventListener("focusout",this._onTriggerBlur),this._onTriggerKeydown&&this.trigger.removeEventListener("keydown",this._onTriggerKeydown),this._onSlotChange&&this.shadowRoot?.querySelector("slot:not([name])")?.removeEventListener("slotchange",this._onSlotChange);for(const e of this._ariaDescriptionTargets||[this.trigger])e.removeAttribute("aria-description");this._addedTabIndex&&"0"===this.trigger.getAttribute("tabindex")&&this.trigger.removeAttribute("tabindex");}this._onHidePopover&&this.removeEventListener("hidePopover",this._onHidePopover),this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper?.popper&&"function"==typeof this.popper.popper.destroy&&(this.popper.popper.destroy(),this.popper.popper=null);}firstUpdated(){this.runtimeUtils.handleComponentTagRename(this,"auro-popover"),this.for&&(this.trigger=document.querySelector(`#${this.for}`)||this.getRootNode().querySelector(`#${this.for}`)),this.trigger||([this.trigger]=this.shadowRoot.querySelector('slot[name="trigger"]').assignedElements()),this.trigger&&(this._setupAccessibility(),this._setupEventListeners(),this.isPopoverVisible&&this.popper&&(this.disabled?this.isPopoverVisible=false:(this.popper.show(),document.body.addEventListener("mouseover",this._onBodyMouseover))));}_setupEventListeners(){this.auroPopover=this.shadowRoot.querySelector("#popover"),this.popper=new we(this.trigger,this.auroPopover,this.placement,this.boundary),this._onBodyMouseover=e=>this.handleMouseoverEvent(e),this._onTriggerMouseEnter=()=>{this.toggleShow();},this._onTriggerMouseLeave=()=>{this.toggleHide();},this._onTriggerFocus=()=>{this.toggleShow();},this._onTriggerBlur=e=>{let t=e.relatedTarget,i=false;for(;t;){if(this.trigger.contains(t)||this.contains(t)){i=true;break}const e=t.getRootNode();t=e instanceof ShadowRoot?e.host:null;}i||this.toggleHide();},this._onTriggerKeydown=e=>{const t=e.key.toLowerCase();if(this.isPopoverVisible&&("tab"!==t&&"escape"!==t||this.toggleHide())," "===t||"enter"===t){if(e.target!==this.trigger&&!this._addedTabIndex)return;" "===t&&this._addedTabIndex&&e.preventDefault(),this.toggle();}},this._onHidePopover=()=>{this.toggleHide();},this._eventTarget=this.trigger.parentElement.localName===this.localName?this:this.trigger,this._eventTarget.addEventListener("mouseenter",this._onTriggerMouseEnter),this._eventTarget.addEventListener("mouseleave",this._onTriggerMouseLeave),this.trigger.addEventListener("keydown",this._onTriggerKeydown),this.trigger.addEventListener("focusin",this._onTriggerFocus),this.trigger.addEventListener("focusout",this._onTriggerBlur),this.addEventListener("hidePopover",this._onHidePopover);}_setupAccessibility(){const e=this.trigger.tabIndex>=0,t='button:not([disabled]), a[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex^="-"]), [contenteditable]:not([contenteditable="false"]), summary, iframe, audio[controls], video[controls]',i=e=>{if(e.tabIndex<0)return false;let t=e;for(;t;){if(t.closest("[hidden], [inert]"))return false;const e=t.getRootNode();t=e instanceof ShadowRoot?e.host:null;}return true};let s=[...this.trigger.querySelectorAll(t)].some(i);if(!s){const e=this.trigger.querySelectorAll("*");for(const r of e)if(r.localName.includes("-")&&(r.tabIndex>=0||r.shadowRoot&&[...r.shadowRoot.querySelectorAll(t)].some(i))){s=true;break}}!s&&this.trigger.localName.includes("-")&&this.trigger.shadowRoot&&(s=[...this.trigger.shadowRoot.querySelectorAll(t)].some(i)),e||s||this.trigger.hasAttribute("tabindex")||(this.trigger.setAttribute("tabindex","0"),this._addedTabIndex=true);const r=this.shadowRoot.querySelector("slot:not([name])"),o=()=>r.assignedNodes({flatten:true}).map(e=>e.textContent??"").join(" ").replace(/\s+/g," ").trim();if(this._ariaDescriptionTargets=[],!e&&s){const e=[...this.trigger.querySelectorAll(t)].filter(i);this._ariaDescriptionTargets.push(...e);const s=this.trigger.querySelectorAll("*");for(const r of s)if(r.localName.includes("-")&&!e.includes(r))if(r.tabIndex>=0)this._ariaDescriptionTargets.push(r);else if(r.shadowRoot){const e=[...r.shadowRoot.querySelectorAll(t)].filter(i);for(const t of e)this._ariaDescriptionTargets.push(t);}if(0===this._ariaDescriptionTargets.length){if(this.trigger.localName.includes("-")&&this.trigger.shadowRoot){const e=[...this.trigger.shadowRoot.querySelectorAll(t)].filter(i);this._ariaDescriptionTargets.push(...e);}0===this._ariaDescriptionTargets.length&&this._ariaDescriptionTargets.push(this.trigger);}}else this._ariaDescriptionTargets.push(this.trigger);const n=o();for(const e of this._ariaDescriptionTargets)e.setAttribute("aria-description",n);this._onSlotChange=()=>{const e=o();for(const t of this._ariaDescriptionTargets)t?.setAttribute("aria-description",e);},r.addEventListener("slotchange",this._onSlotChange);}toggle(){this.popper&&(this.isPopoverVisible?this.toggleHide():this.toggleShow());}toggleHide(){this.isPopoverVisible=false;}toggleShow(){this.popper&&!this.disabled&&(this.isPopoverVisible=true);}handleMouseoverEvent(e){this.isPopoverVisible&&!e.composedPath().includes(this)&&this.toggleHide();}updated(e){if(e.has("boundary")&&this.popper&&(this.popper.boundaryElement=this.popper.setBoundary(this.boundary)),e.has("isPopoverVisible")&&this.popper)if(this.isPopoverVisible){if(this.disabled)return void(this.isPopoverVisible=false);this.popper.show(),document.body.addEventListener("mouseover",this._onBodyMouseover);}else this._onBodyMouseover&&document.body.removeEventListener("mouseover",this._onBodyMouseover),this.popper.hide();e.has("disabled")&&this.disabled&&this.isPopoverVisible&&(this.isPopoverVisible=false);}render(){return b$5`
|
|
11578
|
+
<div
|
|
11579
|
+
id="popover"
|
|
11580
|
+
class="popover util_insetLg body-default"
|
|
11581
|
+
part="popover"
|
|
11582
|
+
role="tooltip"
|
|
11583
|
+
aria-hidden="${this.isPopoverVisible?"false":"true"}">
|
|
11622
11584
|
<div id="arrow" class="arrow" data-popper-arrow></div>
|
|
11623
|
-
<
|
|
11585
|
+
<slot></slot>
|
|
11624
11586
|
</div>
|
|
11625
11587
|
|
|
11626
|
-
<span>
|
|
11588
|
+
<span role="presentation">
|
|
11627
11589
|
<slot name="trigger" data-trigger-placement="${this.placement}"></slot>
|
|
11628
11590
|
</span>
|
|
11629
11591
|
`}}
|
|
11630
11592
|
|
|
11631
11593
|
var popoverVersion = '6.0.1';
|
|
11632
11594
|
|
|
11595
|
+
/* 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 */
|
|
11596
|
+
|
|
11633
11597
|
const startOfDay$1 = (ms) => {
|
|
11634
11598
|
const date = new Date(ms);
|
|
11635
11599
|
date.setHours(0, 0, 0, 0);
|
|
11636
11600
|
return date.getTime();
|
|
11637
11601
|
};
|
|
11638
11602
|
|
|
11639
|
-
/* eslint-disable curly, max-lines, no-underscore-dangle, no-magic-numbers, no-underscore-dangle, max-params, no-void, init-declarations, no-extra-parens, arrow-parens, max-lines, line-comment-position, no-inline-comments, lit/binding-positions, lit/no-invalid-html */
|
|
11640
|
-
|
|
11641
11603
|
class AuroCalendarCell extends i$1 {
|
|
11642
11604
|
constructor() {
|
|
11643
11605
|
super();
|
|
11644
11606
|
|
|
11645
11607
|
this.day = null;
|
|
11646
11608
|
this.selected = false;
|
|
11647
|
-
this.hovered = false;
|
|
11648
11609
|
this.dateTo = null;
|
|
11649
11610
|
this.dateFrom = null;
|
|
11650
11611
|
this.month = null;
|
|
@@ -11652,11 +11613,12 @@ class AuroCalendarCell extends i$1 {
|
|
|
11652
11613
|
this.max = null;
|
|
11653
11614
|
this.disabled = false;
|
|
11654
11615
|
this.disabledDays = [];
|
|
11655
|
-
this.hoveredDate = null;
|
|
11656
11616
|
this.isCurrentDate = false;
|
|
11657
11617
|
this._locale = null;
|
|
11658
11618
|
this.dateStr = null;
|
|
11659
11619
|
this.renderForDateSlot = false; // When false, the numerical date will render vertically centered. When true, the date will render off-center to the top and leave room below for the slot content.
|
|
11620
|
+
this.active = false;
|
|
11621
|
+
this.hasPopoverContent = false;
|
|
11660
11622
|
|
|
11661
11623
|
this.runtimeUtils = new AuroLibraryRuntimeUtils$5();
|
|
11662
11624
|
|
|
@@ -11675,7 +11637,6 @@ class AuroCalendarCell extends i$1 {
|
|
|
11675
11637
|
// ...super.properties,
|
|
11676
11638
|
day: { type: Object },
|
|
11677
11639
|
selected: { type: Boolean },
|
|
11678
|
-
hovered: { type: Boolean },
|
|
11679
11640
|
dateTo: { type: String },
|
|
11680
11641
|
dateFrom: { type: String },
|
|
11681
11642
|
month: { type: String },
|
|
@@ -11686,16 +11647,16 @@ class AuroCalendarCell extends i$1 {
|
|
|
11686
11647
|
reflect: true
|
|
11687
11648
|
},
|
|
11688
11649
|
disabledDays: { type: Array },
|
|
11689
|
-
hoveredDate: { type: String },
|
|
11690
11650
|
isCurrentDate: { type: Boolean },
|
|
11691
11651
|
locale: { type: String },
|
|
11692
11652
|
dateStr: { type: String },
|
|
11693
|
-
renderForDateSlot: { type: Boolean }
|
|
11653
|
+
renderForDateSlot: { type: Boolean },
|
|
11654
|
+
hasPopoverContent: { type: Boolean }
|
|
11694
11655
|
};
|
|
11695
11656
|
}
|
|
11696
11657
|
|
|
11697
11658
|
get locale() {
|
|
11698
|
-
return this._locale;
|
|
11659
|
+
return this._locale || 'en-US';
|
|
11699
11660
|
}
|
|
11700
11661
|
|
|
11701
11662
|
set locale(value) {
|
|
@@ -11714,17 +11675,17 @@ class AuroCalendarCell extends i$1 {
|
|
|
11714
11675
|
}
|
|
11715
11676
|
|
|
11716
11677
|
/**
|
|
11717
|
-
* Handles selected
|
|
11678
|
+
* Handles selected state of the calendar cell when the selection changes.
|
|
11679
|
+
* Also clears any imperative range preview classes so classMap is the
|
|
11680
|
+
* sole source of truth after a selection update.
|
|
11718
11681
|
* @private
|
|
11719
11682
|
* @param {Number} dateFrom - Depart date.
|
|
11720
11683
|
* @param {Number} dateTo - Return date.
|
|
11721
|
-
* @param {Number} hoveredDate - Hovered date.
|
|
11722
11684
|
* @param {Object} day - An object containing the dateFrom and day of month values.
|
|
11723
11685
|
* @returns {void}
|
|
11724
11686
|
*/
|
|
11725
|
-
dateChanged(dateFrom, dateTo,
|
|
11687
|
+
dateChanged(dateFrom, dateTo, day) {
|
|
11726
11688
|
this.selected = false;
|
|
11727
|
-
this.hovered = false;
|
|
11728
11689
|
|
|
11729
11690
|
const parsedDateFrom = parseInt(dateFrom, 10);
|
|
11730
11691
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
@@ -11736,10 +11697,6 @@ class AuroCalendarCell extends i$1 {
|
|
|
11736
11697
|
if (day.date === departTimestamp || day.date === returnTimestamp) {
|
|
11737
11698
|
this.selected = true;
|
|
11738
11699
|
}
|
|
11739
|
-
|
|
11740
|
-
if (((hoveredDate === day.date || day.date < hoveredDate) && day.date > parsedDateFrom && !parsedDateTo && !Number.isNaN(parsedDateFrom) && parsedDateFrom !== undefined && !this.selected) || (day.date > parsedDateFrom && day.date < parsedDateTo)) {
|
|
11741
|
-
this.hovered = true;
|
|
11742
|
-
}
|
|
11743
11700
|
}
|
|
11744
11701
|
}
|
|
11745
11702
|
|
|
@@ -11749,27 +11706,104 @@ class AuroCalendarCell extends i$1 {
|
|
|
11749
11706
|
* @returns {void}
|
|
11750
11707
|
*/
|
|
11751
11708
|
handleTap() {
|
|
11752
|
-
if (!this.disabled) {
|
|
11709
|
+
if (!this.disabled && !this.isBlackout()) {
|
|
11753
11710
|
this.datepicker.handleCellClick(this.day.date);
|
|
11754
11711
|
}
|
|
11712
|
+
|
|
11713
|
+
// Set this cell as the active cell regardless of blackout status
|
|
11714
|
+
if (this.day) {
|
|
11715
|
+
this.dispatchEvent(new CustomEvent('calendar-cell-activate', {
|
|
11716
|
+
bubbles: true,
|
|
11717
|
+
composed: true,
|
|
11718
|
+
detail: { date: this.day.date }
|
|
11719
|
+
}));
|
|
11720
|
+
}
|
|
11755
11721
|
}
|
|
11756
11722
|
|
|
11757
11723
|
/**
|
|
11758
11724
|
* Handles user hover events and dispatches a custom event.
|
|
11725
|
+
* Does NOT set any reactive properties — the range preview is handled
|
|
11726
|
+
* imperatively by the calendar component to avoid O(N) re-renders.
|
|
11759
11727
|
* @private
|
|
11760
11728
|
* @returns {void}
|
|
11761
11729
|
*/
|
|
11762
11730
|
handleHover() {
|
|
11763
|
-
this.hovered = true;
|
|
11764
|
-
|
|
11765
|
-
let _a;
|
|
11766
11731
|
this.dispatchEvent(new CustomEvent('date-is-hovered', {
|
|
11767
|
-
detail: { date:
|
|
11732
|
+
detail: { date: this.day?.date },
|
|
11733
|
+
}));
|
|
11734
|
+
}
|
|
11735
|
+
|
|
11736
|
+
/**
|
|
11737
|
+
* Handles focus events on the cell button.
|
|
11738
|
+
* Dispatches a lightweight event for the calendar to handle SR
|
|
11739
|
+
* announcements and range preview updates without triggering
|
|
11740
|
+
* any Lit lifecycle updates.
|
|
11741
|
+
* @private
|
|
11742
|
+
* @returns {void}
|
|
11743
|
+
*/
|
|
11744
|
+
handleFocus() {
|
|
11745
|
+
this.dispatchEvent(new CustomEvent('calendar-cell-focused', {
|
|
11746
|
+
bubbles: true,
|
|
11747
|
+
composed: true,
|
|
11748
|
+
detail: { date: this.day?.date },
|
|
11768
11749
|
}));
|
|
11769
11750
|
}
|
|
11770
11751
|
|
|
11771
11752
|
/**
|
|
11772
|
-
* Checks if the current date is
|
|
11753
|
+
* Checks if the current date is outside the valid min/max range.
|
|
11754
|
+
* Out-of-range cells are not focusable and are hidden from screen readers.
|
|
11755
|
+
* @private
|
|
11756
|
+
* @param {Object} day - An object containing the dateFrom and day of month values.
|
|
11757
|
+
* @param {Number} min - The minimum date value.
|
|
11758
|
+
* @param {Number} max - The maximum date value.
|
|
11759
|
+
* @returns {Boolean} - True if the date is out of range.
|
|
11760
|
+
*/
|
|
11761
|
+
isOutOfRange(day, min, max) {
|
|
11762
|
+
if (day && day.date !== null && day.date !== undefined) {
|
|
11763
|
+
return day.date < min || day.date > max;
|
|
11764
|
+
}
|
|
11765
|
+
return false;
|
|
11766
|
+
}
|
|
11767
|
+
|
|
11768
|
+
/**
|
|
11769
|
+
* Checks if the current date is a blackout date (in disabledDays but within range).
|
|
11770
|
+
* Blackout cells are focusable but not selectable.
|
|
11771
|
+
* @private
|
|
11772
|
+
* @returns {Boolean} - True if the date is a blackout date.
|
|
11773
|
+
*/
|
|
11774
|
+
isBlackout() {
|
|
11775
|
+
if (!this.day || this.day.date === null || this.day.date === undefined || this.isOutOfRange(this.day, this.min, this.max)) {
|
|
11776
|
+
return false;
|
|
11777
|
+
}
|
|
11778
|
+
|
|
11779
|
+
// Check against disabledDays timestamps (legacy path)
|
|
11780
|
+
if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0 &&
|
|
11781
|
+
(this.disabledDays.findIndex(dd => parseInt(dd, 10) === this.day.date) !== -1)) {
|
|
11782
|
+
return true;
|
|
11783
|
+
}
|
|
11784
|
+
|
|
11785
|
+
// Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
|
|
11786
|
+
const blackoutDates = this.datepicker?.blackoutDates;
|
|
11787
|
+
|
|
11788
|
+
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
11789
|
+
const date = new Date(this.day.date * 1000);
|
|
11790
|
+
const yyyy = date.getFullYear();
|
|
11791
|
+
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
11792
|
+
const dd = String(date.getDate()).padStart(2, '0');
|
|
11793
|
+
const cellDate = `${yyyy}-${mm}-${dd}`;
|
|
11794
|
+
if (blackoutDates.includes(cellDate)) {
|
|
11795
|
+
return true;
|
|
11796
|
+
}
|
|
11797
|
+
}
|
|
11798
|
+
|
|
11799
|
+
return false;
|
|
11800
|
+
}
|
|
11801
|
+
|
|
11802
|
+
/**
|
|
11803
|
+
* Checks if the current date is disabled based on min/max range or the
|
|
11804
|
+
* legacy disabledDays timestamp list. Sets the `disabled` attribute on the
|
|
11805
|
+
* host when the date falls outside the allowed range or appears in
|
|
11806
|
+
* disabledDays. Note: blackout dates are handled separately by `isBlackout()`.
|
|
11773
11807
|
* @private
|
|
11774
11808
|
* @param {Object} day - An object containing the dateFrom and day of month values.
|
|
11775
11809
|
* @param {Number} min - The minimum date value.
|
|
@@ -11780,15 +11814,113 @@ class AuroCalendarCell extends i$1 {
|
|
|
11780
11814
|
isEnabled(day, min, max, disabledDays) {
|
|
11781
11815
|
this.removeAttribute('disabled');
|
|
11782
11816
|
|
|
11783
|
-
if (disabledDays && day && day.date
|
|
11784
|
-
|
|
11785
|
-
|
|
11786
|
-
|
|
11787
|
-
}
|
|
11817
|
+
if (disabledDays && day && day.date &&
|
|
11818
|
+
(day.date < min || day.date > max || disabledDays.findIndex(disabledDay => parseInt(disabledDay, 10) === day.date) !== -1)) {
|
|
11819
|
+
this.setAttribute('disabled', true);
|
|
11820
|
+
return true;
|
|
11788
11821
|
}
|
|
11822
|
+
|
|
11789
11823
|
return false;
|
|
11790
11824
|
}
|
|
11791
11825
|
|
|
11826
|
+
/**
|
|
11827
|
+
* Generates a unique cell ID in the format cell-YYYY-MM-DD.
|
|
11828
|
+
* @private
|
|
11829
|
+
* @returns {String} The unique cell ID.
|
|
11830
|
+
*/
|
|
11831
|
+
getCellId() {
|
|
11832
|
+
if (!this.day || !this.day.date) return '';
|
|
11833
|
+
const date = new Date(this.day.date * 1000);
|
|
11834
|
+
const year = date.getFullYear();
|
|
11835
|
+
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
11836
|
+
const day = String(date.getDate()).padStart(2, '0');
|
|
11837
|
+
return `cell-${year}-${month}-${day}`;
|
|
11838
|
+
}
|
|
11839
|
+
|
|
11840
|
+
/**
|
|
11841
|
+
* Generates a localized aria-label for the cell button using Intl.DateTimeFormat.
|
|
11842
|
+
* Includes range position and blackout status.
|
|
11843
|
+
* @private
|
|
11844
|
+
* @returns {String} The aria-label string.
|
|
11845
|
+
*/
|
|
11846
|
+
getAriaLabel() {
|
|
11847
|
+
if (!this.day || this.day.date === undefined) return '';
|
|
11848
|
+
|
|
11849
|
+
const date = new Date(this.day.date * 1000);
|
|
11850
|
+
|
|
11851
|
+
// Generate localized full date string using the configured locale
|
|
11852
|
+
const dateFormatter = new Intl.DateTimeFormat(this.locale, {
|
|
11853
|
+
weekday: 'long',
|
|
11854
|
+
year: 'numeric',
|
|
11855
|
+
month: 'long',
|
|
11856
|
+
day: 'numeric'
|
|
11857
|
+
});
|
|
11858
|
+
|
|
11859
|
+
let label = dateFormatter.format(date);
|
|
11860
|
+
|
|
11861
|
+
// Append date slot content (e.g. prices) so it is announced with the date.
|
|
11862
|
+
if (this.renderForDateSlot) {
|
|
11863
|
+
const dateSlotEl = this.querySelector(`[slot="date_${this.dateStr}"]`);
|
|
11864
|
+
if (dateSlotEl) {
|
|
11865
|
+
const text = dateSlotEl.innerText?.trim();
|
|
11866
|
+
if (text) {
|
|
11867
|
+
label += `, ${text}`;
|
|
11868
|
+
}
|
|
11869
|
+
}
|
|
11870
|
+
}
|
|
11871
|
+
|
|
11872
|
+
// appending popover content here so that it gets read in a logical order with the other date content.
|
|
11873
|
+
if (this.hasPopoverContent) {
|
|
11874
|
+
const popoverEl = this.querySelector(`[slot="popover_${this.dateStr}"]`);
|
|
11875
|
+
if (popoverEl) {
|
|
11876
|
+
label += `, ${popoverEl.innerText.trim()}`;
|
|
11877
|
+
}
|
|
11878
|
+
}
|
|
11879
|
+
|
|
11880
|
+
// Append range position label for range datepickers
|
|
11881
|
+
const rangePosition = this.getRangePosition();
|
|
11882
|
+
if (rangePosition) {
|
|
11883
|
+
label += `, ${rangePosition}`;
|
|
11884
|
+
}
|
|
11885
|
+
|
|
11886
|
+
// Append blackout label for blackout cells
|
|
11887
|
+
if (this.isBlackout()) {
|
|
11888
|
+
label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
|
|
11889
|
+
}
|
|
11890
|
+
|
|
11891
|
+
return label;
|
|
11892
|
+
}
|
|
11893
|
+
|
|
11894
|
+
/**
|
|
11895
|
+
* Determines the range position of this cell relative to the current selection.
|
|
11896
|
+
* @private
|
|
11897
|
+
* @returns {String|null} Range position label or null if not in range mode.
|
|
11898
|
+
*/
|
|
11899
|
+
getRangePosition() {
|
|
11900
|
+
if (!this.datepicker || !this.datepicker.hasAttribute('range')) return null;
|
|
11901
|
+
|
|
11902
|
+
const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
|
|
11903
|
+
if (!Number.isFinite(parsedDateFrom)) return null;
|
|
11904
|
+
|
|
11905
|
+
const departTimestamp = startOfDay$1(parsedDateFrom * 1000) / 1000;
|
|
11906
|
+
const dayDate = this.day.date;
|
|
11907
|
+
|
|
11908
|
+
const parsedDateTo = Number.parseInt(this.dateTo, 10);
|
|
11909
|
+
const hasDateTo = Number.isFinite(parsedDateTo);
|
|
11910
|
+
const returnTimestamp = hasDateTo ? startOfDay$1(parsedDateTo * 1000) / 1000 : null;
|
|
11911
|
+
|
|
11912
|
+
if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
|
|
11913
|
+
|
|
11914
|
+
if (hasDateTo && dayDate === returnTimestamp) return this.datepicker.rangeLabelEnd || 'range end';
|
|
11915
|
+
|
|
11916
|
+
if (dayDate < departTimestamp) return this.datepicker.rangeLabelBeforeRange || 'before range';
|
|
11917
|
+
|
|
11918
|
+
if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
|
|
11919
|
+
|
|
11920
|
+
// After start date, no end date yet, or after end date
|
|
11921
|
+
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
11922
|
+
}
|
|
11923
|
+
|
|
11792
11924
|
/**
|
|
11793
11925
|
* Checks if the current date is the depart date.
|
|
11794
11926
|
* @private
|
|
@@ -11856,12 +11988,12 @@ class AuroCalendarCell extends i$1 {
|
|
|
11856
11988
|
}
|
|
11857
11989
|
|
|
11858
11990
|
/**
|
|
11859
|
-
* Checks if the current date is a
|
|
11860
|
-
* @param {Object} dateStr - The date string in
|
|
11861
|
-
* @returns Boolean - True if the date is a
|
|
11991
|
+
* Checks if the current date is a referenced date.
|
|
11992
|
+
* @param {Object} dateStr - The date string in YYYY_MM_DD format.
|
|
11993
|
+
* @returns Boolean - True if the date is a referenced date.
|
|
11862
11994
|
*/
|
|
11863
11995
|
isReferenceDate(dateStr) {
|
|
11864
|
-
// If the datepicker has
|
|
11996
|
+
// If the datepicker has referenced dates specified
|
|
11865
11997
|
if (this.datepicker && this.datepicker.hasAttribute('referenceDates')) {
|
|
11866
11998
|
|
|
11867
11999
|
// Get the referenceDates attribute from the datepicker
|
|
@@ -11870,9 +12002,8 @@ class AuroCalendarCell extends i$1 {
|
|
|
11870
12002
|
// Guard clause: no dates in the array
|
|
11871
12003
|
if (!Array.isArray(referenceDates) || referenceDates.length === 0) return false;
|
|
11872
12004
|
|
|
11873
|
-
//
|
|
11874
|
-
const
|
|
11875
|
-
const cellISO = `${year}-${month.padStart(2, '0')}-${day.padStart(2, '0')}`;
|
|
12005
|
+
// eslint-disable-next-line require-unicode-regexp
|
|
12006
|
+
const cellISO = dateStr.replace(/_/g, '-');
|
|
11876
12007
|
|
|
11877
12008
|
return referenceDates.includes(cellISO);
|
|
11878
12009
|
}
|
|
@@ -11889,12 +12020,16 @@ class AuroCalendarCell extends i$1 {
|
|
|
11889
12020
|
if (date === undefined) {
|
|
11890
12021
|
return '';
|
|
11891
12022
|
}
|
|
11892
|
-
|
|
11893
|
-
|
|
11894
|
-
|
|
11895
|
-
|
|
11896
|
-
|
|
11897
|
-
|
|
12023
|
+
if (!this._titleFormatter || this._titleFormatterLocale !== this.locale) {
|
|
12024
|
+
this._titleFormatter = new Intl.DateTimeFormat(this.locale, {
|
|
12025
|
+
weekday: 'long',
|
|
12026
|
+
year: 'numeric',
|
|
12027
|
+
month: 'long',
|
|
12028
|
+
day: 'numeric'
|
|
12029
|
+
});
|
|
12030
|
+
this._titleFormatterLocale = this.locale;
|
|
12031
|
+
}
|
|
12032
|
+
return this._titleFormatter.format(new Date(date * 1000));
|
|
11898
12033
|
}
|
|
11899
12034
|
|
|
11900
12035
|
/**
|
|
@@ -11922,7 +12057,7 @@ class AuroCalendarCell extends i$1 {
|
|
|
11922
12057
|
|
|
11923
12058
|
const year = date.getFullYear();
|
|
11924
12059
|
|
|
11925
|
-
this.dateStr = `${
|
|
12060
|
+
this.dateStr = `${year}_${month}_${day}`;
|
|
11926
12061
|
}
|
|
11927
12062
|
|
|
11928
12063
|
/**
|
|
@@ -11957,9 +12092,9 @@ class AuroCalendarCell extends i$1 {
|
|
|
11957
12092
|
|
|
11958
12093
|
if (popoverSlotContent) {
|
|
11959
12094
|
this.appendChild(popoverSlotContent.cloneNode(true));
|
|
11960
|
-
this.
|
|
12095
|
+
this.hasPopoverContent = true;
|
|
11961
12096
|
} else {
|
|
11962
|
-
this.
|
|
12097
|
+
this.hasPopoverContent = false;
|
|
11963
12098
|
}
|
|
11964
12099
|
} catch (err) { // eslint-disable-line no-unused-vars
|
|
11965
12100
|
// Error handling goes here
|
|
@@ -11975,60 +12110,249 @@ class AuroCalendarCell extends i$1 {
|
|
|
11975
12110
|
return;
|
|
11976
12111
|
}
|
|
11977
12112
|
this.datepicker = calendar.datepicker;
|
|
11978
|
-
this.
|
|
12113
|
+
this._slotContentHandler = () => {
|
|
11979
12114
|
this.handleSlotContent();
|
|
12115
|
+
// Force re-render so isBlackout()/aria-disabled reflect updated blackoutDates.
|
|
12116
|
+
this.requestUpdate();
|
|
12117
|
+
};
|
|
12118
|
+
this.datepicker.addEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
|
|
12119
|
+
|
|
12120
|
+
// Cache button reference for imperative class manipulation.
|
|
12121
|
+
this.updateComplete.then(() => {
|
|
12122
|
+
this._cachedButton = this.shadowRoot.querySelector('button.day');
|
|
11980
12123
|
});
|
|
11981
12124
|
|
|
12125
|
+
// Trigger an initial update now that `this.datepicker` is assigned so
|
|
12126
|
+
// cells reflect blackout/slot state that was configured before first render.
|
|
12127
|
+
this.requestUpdate();
|
|
12128
|
+
|
|
12129
|
+
this.calendarMonth = calendarMonth;
|
|
12130
|
+
this.configurePopover();
|
|
12131
|
+
}
|
|
12132
|
+
|
|
12133
|
+
disconnectedCallback() {
|
|
12134
|
+
super.disconnectedCallback();
|
|
12135
|
+
if (this.datepicker && this._slotContentHandler) {
|
|
12136
|
+
this.datepicker.removeEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
|
|
12137
|
+
}
|
|
12138
|
+
}
|
|
12139
|
+
|
|
12140
|
+
/**
|
|
12141
|
+
* Configures the popover instance with the calendar month boundary.
|
|
12142
|
+
* Called from firstUpdated and updated because the popover element is only
|
|
12143
|
+
* rendered after hasPopoverContent becomes true (set by handleSlotContent).
|
|
12144
|
+
* @private
|
|
12145
|
+
* @returns {void}
|
|
12146
|
+
*/
|
|
12147
|
+
configurePopover() {
|
|
11982
12148
|
this.auroPopover = this.shadowRoot.querySelector(this.popoverTag._$litStatic$);
|
|
11983
12149
|
|
|
11984
|
-
this.auroPopover
|
|
12150
|
+
if (this.auroPopover && this.calendarMonth) {
|
|
12151
|
+
this.auroPopover.boundary = this.calendarMonth;
|
|
12152
|
+
}
|
|
11985
12153
|
}
|
|
11986
12154
|
|
|
11987
12155
|
updated(properties) {
|
|
11988
|
-
if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('
|
|
11989
|
-
this.dateChanged(this.dateFrom, this.dateTo, this.
|
|
12156
|
+
if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('day')) {
|
|
12157
|
+
this.dateChanged(this.dateFrom, this.dateTo, this.day);
|
|
12158
|
+
}
|
|
12159
|
+
|
|
12160
|
+
if (properties.has('day') && this.day) {
|
|
12161
|
+
this.setDateSlotName();
|
|
12162
|
+
this.handleSlotContent();
|
|
12163
|
+
|
|
12164
|
+
// Re-cache button reference when the day changes (cell may have re-rendered).
|
|
12165
|
+
this.updateComplete.then(() => {
|
|
12166
|
+
this._cachedButton = this.shadowRoot.querySelector('button.day');
|
|
12167
|
+
});
|
|
12168
|
+
|
|
12169
|
+
// Update host-level aria attributes for ariaActiveDescendantElement.
|
|
12170
|
+
this.updateHostAria();
|
|
11990
12171
|
}
|
|
11991
12172
|
|
|
11992
|
-
|
|
11993
|
-
|
|
12173
|
+
// Update host aria when selection changes (aria-selected, range labels)
|
|
12174
|
+
if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected')) {
|
|
12175
|
+
this.updateHostAria();
|
|
12176
|
+
}
|
|
12177
|
+
|
|
12178
|
+
// Configure popover when it first becomes rendered
|
|
12179
|
+
if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
|
|
12180
|
+
this.updateComplete.then(() => this.configurePopover());
|
|
12181
|
+
}
|
|
11994
12182
|
}
|
|
11995
12183
|
|
|
11996
|
-
|
|
12184
|
+
/**
|
|
12185
|
+
* Updates ARIA attributes on the host element so that
|
|
12186
|
+
* ariaActiveDescendantElement can expose cell info to the SR.
|
|
12187
|
+
* @private
|
|
12188
|
+
* @returns {void}
|
|
12189
|
+
*/
|
|
12190
|
+
updateHostAria() {
|
|
12191
|
+
if (!this.day || this.day.date === undefined) return;
|
|
12192
|
+
|
|
12193
|
+
const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
|
|
12194
|
+
if (outOfRange) {
|
|
12195
|
+
this.removeAttribute('role');
|
|
12196
|
+
this.removeAttribute('aria-label');
|
|
12197
|
+
return;
|
|
12198
|
+
}
|
|
12199
|
+
|
|
12200
|
+
// The host acts as the gridcell for ariaActiveDescendantElement.
|
|
12201
|
+
this.setAttribute('role', 'gridcell');
|
|
12202
|
+
this.setAttribute('aria-label', this.getAriaLabel());
|
|
12203
|
+
this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
|
|
12204
|
+
|
|
12205
|
+
if (this.isBlackout()) {
|
|
12206
|
+
this.setAttribute('aria-disabled', 'true');
|
|
12207
|
+
} else {
|
|
12208
|
+
this.removeAttribute('aria-disabled');
|
|
12209
|
+
}
|
|
12210
|
+
}
|
|
12211
|
+
|
|
12212
|
+
/**
|
|
12213
|
+
* Programmatically focuses the cell's interactive button element.
|
|
12214
|
+
* Uses focusVisible: true so the :focus-visible ring appears even when
|
|
12215
|
+
* the bib was opened via mouse click (which sets mouse input modality).
|
|
12216
|
+
* @returns {void}
|
|
12217
|
+
*/
|
|
12218
|
+
focusButton() {
|
|
12219
|
+
const button = this._cachedButton || this.shadowRoot.querySelector('button:not([aria-hidden])');
|
|
12220
|
+
if (button) {
|
|
12221
|
+
button.focus({ focusVisible: true });
|
|
12222
|
+
}
|
|
12223
|
+
}
|
|
12224
|
+
|
|
12225
|
+
/**
|
|
12226
|
+
* Imperatively marks this cell as active without triggering a Lit re-render.
|
|
12227
|
+
* Note: buttons stay tabindex="-1" because the grid uses aria-activedescendant.
|
|
12228
|
+
* @returns {void}
|
|
12229
|
+
*/
|
|
12230
|
+
setActive() {
|
|
12231
|
+
this.active = true;
|
|
12232
|
+
|
|
12233
|
+
// Show the popover when this cell becomes active via keyboard navigation.
|
|
12234
|
+
if (this.auroPopover) {
|
|
12235
|
+
this.auroPopover.toggleShow();
|
|
12236
|
+
}
|
|
12237
|
+
}
|
|
12238
|
+
|
|
12239
|
+
/**
|
|
12240
|
+
* Imperatively marks this cell as inactive without triggering a Lit re-render.
|
|
12241
|
+
* @returns {void}
|
|
12242
|
+
*/
|
|
12243
|
+
clearActive() {
|
|
12244
|
+
this.active = false;
|
|
12245
|
+
const btn = this._cachedButton || this.shadowRoot.querySelector('button.day');
|
|
12246
|
+
if (btn) {
|
|
12247
|
+
btn.classList.remove('activeCell');
|
|
12248
|
+
}
|
|
12249
|
+
|
|
12250
|
+
// Hide the popover when this cell loses active state.
|
|
12251
|
+
if (this.auroPopover) {
|
|
12252
|
+
this.auroPopover.toggleHide();
|
|
12253
|
+
}
|
|
12254
|
+
}
|
|
12255
|
+
|
|
12256
|
+
/**
|
|
12257
|
+
* Updates range preview classes imperatively (no Lit re-render).
|
|
12258
|
+
* Called by the calendar component when the hovered date changes
|
|
12259
|
+
* during range selection (dateFrom set, dateTo not yet set).
|
|
12260
|
+
* @param {Number} hoveredDate - Unix timestamp of the currently hovered/focused date.
|
|
12261
|
+
* @param {Number} dateFrom - Unix timestamp of the selected departure date.
|
|
12262
|
+
* @returns {void}
|
|
12263
|
+
*/
|
|
12264
|
+
updateRangePreviewClasses(hoveredDate, dateFrom) {
|
|
12265
|
+
const btn = this._cachedButton;
|
|
12266
|
+
if (!btn || !this.day) return;
|
|
12267
|
+
|
|
12268
|
+
const dayDate = this.day.date;
|
|
12269
|
+
const departTimestamp = startOfDay$1(dateFrom * 1000) / 1000;
|
|
12270
|
+
const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
|
|
12271
|
+
const isLastHovered = dayDate === hoveredDate && hoveredDate > departTimestamp;
|
|
12272
|
+
const isDepartWithPreview = dayDate === departTimestamp && hoveredDate > departTimestamp;
|
|
12273
|
+
|
|
12274
|
+
btn.classList.toggle('inRange', isInRange);
|
|
12275
|
+
btn.classList.toggle('lastHoveredDate', isLastHovered);
|
|
12276
|
+
btn.classList.toggle('rangeDepartDate', isDepartWithPreview);
|
|
12277
|
+
}
|
|
12278
|
+
|
|
12279
|
+
/**
|
|
12280
|
+
* Clears all imperative range preview classes from the cell button.
|
|
12281
|
+
* Called when a selection occurs so classMap becomes the sole source of truth.
|
|
12282
|
+
* @returns {void}
|
|
12283
|
+
*/
|
|
12284
|
+
clearRangePreviewClasses() {
|
|
12285
|
+
const btn = this._cachedButton;
|
|
12286
|
+
if (!btn) return;
|
|
12287
|
+
|
|
12288
|
+
btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
|
|
12289
|
+
}
|
|
12290
|
+
|
|
12291
|
+
renderCellButton() {
|
|
12292
|
+
const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
|
|
12293
|
+
const blackout = this.isBlackout();
|
|
12294
|
+
|
|
12295
|
+
// Static and selection-driven classes only. Hover-driven classes
|
|
12296
|
+
// (inRange, lastHoveredDate, rangeDepartDate during preview) are
|
|
12297
|
+
// managed imperatively via updateRangePreviewClasses() to avoid
|
|
12298
|
+
// O(N) Lit re-renders on every focus/hover event.
|
|
12299
|
+
const isFirstDay = this.day?.title === 1;
|
|
12300
|
+
const isLastDay = this.day?.date && (() => {
|
|
12301
|
+
const dt = new Date(this.day.date * 1000);
|
|
12302
|
+
return dt.getDate() === new Date(dt.getFullYear(), dt.getMonth() + 1, 0).getDate();
|
|
12303
|
+
})();
|
|
12304
|
+
|
|
11997
12305
|
const buttonClasses = {
|
|
11998
12306
|
'day': true,
|
|
11999
|
-
'body-
|
|
12000
|
-
'currentDate': this.
|
|
12307
|
+
'body-default': true,
|
|
12308
|
+
'currentDate': this.isCurrentDate,
|
|
12001
12309
|
'selected': this.selected,
|
|
12002
|
-
'inRange': this.
|
|
12003
|
-
'
|
|
12004
|
-
|
|
12005
|
-
'rangeDepartDate': this.isDepartDate(this.day, this.dateFrom) &&
|
|
12006
|
-
'rangeReturnDate': this.isReturnDate(this.day, this.dateFrom, this.dateTo),
|
|
12310
|
+
'inRange': this.datepicker?.hasAttribute('range') && this.dateTo && this.isInRange(this.day, this.dateFrom, this.dateTo),
|
|
12311
|
+
'disabled': outOfRange,
|
|
12312
|
+
blackout,
|
|
12313
|
+
'rangeDepartDate': this.datepicker?.hasAttribute('range') && this.isDepartDate(this.day, this.dateFrom) && this.dateTo,
|
|
12314
|
+
'rangeReturnDate': this.datepicker?.hasAttribute('range') && this.isReturnDate(this.day, this.dateFrom, this.dateTo),
|
|
12007
12315
|
'reference': this.isReferenceDate(this.dateStr),
|
|
12008
|
-
'sameDateTrip': this.dateFrom === this.dateTo
|
|
12316
|
+
'sameDateTrip': this.datepicker?.hasAttribute('range') && this.dateFrom === this.dateTo,
|
|
12317
|
+
'firstDayOfMonth': isFirstDay,
|
|
12318
|
+
'lastDayOfMonth': isLastDay,
|
|
12009
12319
|
};
|
|
12010
12320
|
|
|
12011
|
-
let _a, _b;
|
|
12012
12321
|
return u$a`
|
|
12013
|
-
|
|
12014
|
-
|
|
12015
|
-
|
|
12016
|
-
|
|
12017
|
-
|
|
12018
|
-
|
|
12019
|
-
|
|
12020
|
-
|
|
12021
|
-
|
|
12022
|
-
|
|
12023
|
-
|
|
12024
|
-
<div class="
|
|
12025
|
-
|
|
12026
|
-
<
|
|
12027
|
-
<slot name="date_${this.dateStr}"></slot>
|
|
12028
|
-
</div>
|
|
12322
|
+
<button
|
|
12323
|
+
slot="trigger"
|
|
12324
|
+
id="${this.getCellId()}"
|
|
12325
|
+
@click="${outOfRange ? undefined : this.handleTap}"
|
|
12326
|
+
@mouseover="${outOfRange ? undefined : this.handleHover}"
|
|
12327
|
+
@focus="${outOfRange ? undefined : this.handleFocus}"
|
|
12328
|
+
class="${e$4(buttonClasses)}"
|
|
12329
|
+
?disabled="${outOfRange}"
|
|
12330
|
+
aria-hidden="${outOfRange ? 'true' : A$4}"
|
|
12331
|
+
tabindex="-1">
|
|
12332
|
+
<div class="buttonWrapper" aria-hidden="true">
|
|
12333
|
+
<div class="currentDayMarker">${this.day?.title || A$4}</div>
|
|
12334
|
+
<div class="dateSlot body-2xs" part="dateSlot" aria-hidden="true" ?hidden="${!this.renderForDateSlot}">
|
|
12335
|
+
<slot name="date_${this.dateStr}"></slot>
|
|
12029
12336
|
</div>
|
|
12030
|
-
</
|
|
12031
|
-
|
|
12337
|
+
</div>
|
|
12338
|
+
</button>
|
|
12339
|
+
`;
|
|
12340
|
+
}
|
|
12341
|
+
|
|
12342
|
+
render() {
|
|
12343
|
+
const { hasPopoverContent } = this;
|
|
12344
|
+
|
|
12345
|
+
if (hasPopoverContent) {
|
|
12346
|
+
return u$a`
|
|
12347
|
+
<${this.popoverTag}>
|
|
12348
|
+
<span aria-hidden="true"><slot name="popover_${this.dateStr}"></slot></span>
|
|
12349
|
+
${this.renderCellButton()}
|
|
12350
|
+
</${this.popoverTag}>
|
|
12351
|
+
`;
|
|
12352
|
+
}
|
|
12353
|
+
|
|
12354
|
+
return u$a`
|
|
12355
|
+
${this.renderCellButton()}
|
|
12032
12356
|
`;
|
|
12033
12357
|
}
|
|
12034
12358
|
}
|
|
@@ -12037,31 +12361,39 @@ if (!customElements.get('auro-formkit-calendar-cell')) {
|
|
|
12037
12361
|
customElements.define('auro-formkit-calendar-cell', AuroCalendarCell);
|
|
12038
12362
|
}
|
|
12039
12363
|
|
|
12364
|
+
/* eslint-disable no-underscore-dangle */
|
|
12365
|
+
|
|
12040
12366
|
// See https://git.io/JJ6SJ for "How to document your components using JSDoc"
|
|
12041
12367
|
|
|
12042
|
-
/* eslint-disable no-magic-numbers
|
|
12368
|
+
/* eslint-disable no-magic-numbers */
|
|
12369
|
+
|
|
12043
12370
|
|
|
12044
12371
|
const getMonthNamesFromLocale = (locale) => {
|
|
12045
|
-
const fmt = new Intl.DateTimeFormat(locale
|
|
12046
|
-
|
|
12372
|
+
const fmt = new Intl.DateTimeFormat(locale, {
|
|
12373
|
+
month: 'long',
|
|
12374
|
+
timeZone: 'UTC'
|
|
12375
|
+
});
|
|
12376
|
+
// eslint-disable-next-line id-length
|
|
12377
|
+
return Array.from({ length: 12 }, (_, i) => fmt.format(Date.UTC(2000, i, 1)));
|
|
12047
12378
|
};
|
|
12048
12379
|
|
|
12049
12380
|
/**
|
|
12050
|
-
* Generates the localized
|
|
12051
|
-
*
|
|
12381
|
+
* Generates the localized narrow names for each day of the week, starting from Sunday.
|
|
12382
|
+
* Uses UTC dates to avoid DST-related day drift across timezones.
|
|
12052
12383
|
* @private
|
|
12053
12384
|
* @param {String} locale - The BCP 47 language tag for localization (e.g. "en-US").
|
|
12054
|
-
* @
|
|
12385
|
+
* @param {String} weekday - The format of the weekday name ('narrow', 'short', 'long').
|
|
12386
|
+
* @returns {Array} An array of seven localized weekday names, starting from Sunday.
|
|
12055
12387
|
*/
|
|
12056
|
-
const getWeekdayNames = (locale) => {
|
|
12057
|
-
const fmt = new Intl.DateTimeFormat(locale
|
|
12058
|
-
|
|
12059
|
-
|
|
12060
|
-
|
|
12388
|
+
const getWeekdayNames = (locale, weekday) => {
|
|
12389
|
+
const fmt = new Intl.DateTimeFormat(locale, {
|
|
12390
|
+
weekday,
|
|
12391
|
+
timeZone: 'UTC'
|
|
12392
|
+
});
|
|
12393
|
+
// Jan 5 2025 is a known Sunday; use Date.UTC to avoid DST-related day drift
|
|
12061
12394
|
const allDays = [];
|
|
12062
12395
|
for (let day = 0; day < 7; day += 1) {
|
|
12063
|
-
|
|
12064
|
-
allDays.push(fmt.format(new Date(sundayMs + offsetMs)));
|
|
12396
|
+
allDays.push(fmt.format(Date.UTC(2025, 0, 5 + day)));
|
|
12065
12397
|
}
|
|
12066
12398
|
return allDays;
|
|
12067
12399
|
};
|
|
@@ -12090,10 +12422,17 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
|
|
|
12090
12422
|
|
|
12091
12423
|
/**
|
|
12092
12424
|
* BCP 47 locale tag (such as `en-US`) for calendar localization.
|
|
12093
|
-
*
|
|
12425
|
+
* As wc-range-datepicker expects a `locale` prop, we use `localeCode` to avoid conflicts.
|
|
12094
12426
|
*/
|
|
12095
12427
|
localeCode: {
|
|
12096
12428
|
type: String
|
|
12429
|
+
},
|
|
12430
|
+
|
|
12431
|
+
/**
|
|
12432
|
+
* Names of all 12 months. When omitted, names are derived from `localeCode`.
|
|
12433
|
+
*/
|
|
12434
|
+
monthNames: {
|
|
12435
|
+
type: Array
|
|
12097
12436
|
}
|
|
12098
12437
|
};
|
|
12099
12438
|
}
|
|
@@ -12127,13 +12466,32 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
|
|
|
12127
12466
|
* @returns {String} The name of the month.
|
|
12128
12467
|
*/
|
|
12129
12468
|
computeCurrentMonthName(month) {
|
|
12130
|
-
|
|
12469
|
+
if (this.monthNames?.[month - 1]) {
|
|
12470
|
+
return this.monthNames[month - 1];
|
|
12471
|
+
}
|
|
12472
|
+
if (!this._cachedMonthNames || this._cachedMonthNamesLocale !== this.localeCode) {
|
|
12473
|
+
this._cachedMonthNames = getMonthNamesFromLocale(this.localeCode);
|
|
12474
|
+
this._cachedMonthNamesLocale = this.localeCode;
|
|
12475
|
+
}
|
|
12476
|
+
return this._cachedMonthNames[month - 1] || '';
|
|
12477
|
+
}
|
|
12478
|
+
|
|
12479
|
+
/**
|
|
12480
|
+
* Returns the unique heading ID for this month, used by aria-labelledby.
|
|
12481
|
+
* @private
|
|
12482
|
+
* @returns {String} The heading ID.
|
|
12483
|
+
*/
|
|
12484
|
+
getHeadingId() {
|
|
12485
|
+
return `month-heading-${this.month}-${this.year}`;
|
|
12131
12486
|
}
|
|
12132
12487
|
|
|
12488
|
+
|
|
12133
12489
|
/**
|
|
12134
12490
|
* Determines the current month name based on locale.
|
|
12491
|
+
* Also builds parallel arrays of full day names for abbr attributes.
|
|
12135
12492
|
* This is a rewrite of the function used in the class RangeDatepickerCalendar and should not be removed from here.
|
|
12136
12493
|
* @private
|
|
12494
|
+
* @param {Object} changedProperties - The properties that have changed since the last update.
|
|
12137
12495
|
* @returns {void}
|
|
12138
12496
|
*/
|
|
12139
12497
|
updated(changedProperties) {
|
|
@@ -12144,13 +12502,67 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
|
|
|
12144
12502
|
}
|
|
12145
12503
|
|
|
12146
12504
|
localeChanged() {
|
|
12147
|
-
|
|
12148
|
-
|
|
12505
|
+
this.dayNamesOfTheWeek = getWeekdayNames(this.localeCode, 'narrow');
|
|
12506
|
+
this.dayFullNames = getWeekdayNames(this.localeCode, 'long');
|
|
12507
|
+
}
|
|
12508
|
+
|
|
12509
|
+
/**
|
|
12510
|
+
* Renders a day-of-week header with abbr attribute for the full day name.
|
|
12511
|
+
* @private
|
|
12512
|
+
* @param {String} dayOfWeek - The short day name.
|
|
12513
|
+
* @param {Number} index - The index in the dayNamesOfTheWeek array.
|
|
12514
|
+
* @returns {Object} The header HTML.
|
|
12515
|
+
*/
|
|
12516
|
+
renderDayOfWeek(dayOfWeek, index) {
|
|
12517
|
+
const fullName = this.dayFullNames ? this.dayFullNames[index] : dayOfWeek;
|
|
12518
|
+
return b$5`<div class="th body-default" aria-label="${fullName}" role="columnheader">${dayOfWeek}</div>`;
|
|
12519
|
+
}
|
|
12520
|
+
|
|
12521
|
+
/**
|
|
12522
|
+
* Returns all focusable cell elements (enabled + blackout, not out-of-range) in this month.
|
|
12523
|
+
* @returns {Array} Array of auro-formkit-calendar-cell elements.
|
|
12524
|
+
*/
|
|
12525
|
+
getFocusableCells() {
|
|
12526
|
+
const cells = Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-cell'));
|
|
12527
|
+
return cells.filter((cell) => {
|
|
12528
|
+
if (!cell.day) {
|
|
12529
|
+
return false;
|
|
12530
|
+
}
|
|
12531
|
+
return !cell.isOutOfRange(cell.day, cell.min, cell.max);
|
|
12532
|
+
});
|
|
12533
|
+
}
|
|
12149
12534
|
|
|
12150
|
-
|
|
12151
|
-
|
|
12152
|
-
|
|
12153
|
-
|
|
12535
|
+
/**
|
|
12536
|
+
* Overrides the base class handler to prevent setting `this.hoveredDate`
|
|
12537
|
+
* as a reactive property. Instead, just dispatches the event upward so
|
|
12538
|
+
* the calendar can handle range preview imperatively.
|
|
12539
|
+
* @private
|
|
12540
|
+
* @param {CustomEvent} event - The date-is-hovered event from a cell.
|
|
12541
|
+
* @returns {void}
|
|
12542
|
+
*/
|
|
12543
|
+
handleDateHovered(event) {
|
|
12544
|
+
this.dispatchEvent(new CustomEvent('hovered-date-changed', {
|
|
12545
|
+
detail: { value: event.detail.date },
|
|
12546
|
+
}));
|
|
12547
|
+
}
|
|
12548
|
+
|
|
12549
|
+
/**
|
|
12550
|
+
* Dispatches a bubbling event when the mouse leaves the date grid body
|
|
12551
|
+
* so the parent calendar can clear the range hover preview.
|
|
12552
|
+
* @private
|
|
12553
|
+
* @returns {void}
|
|
12554
|
+
*/
|
|
12555
|
+
handleTbodyMouseLeave() {
|
|
12556
|
+
this.dispatchEvent(new CustomEvent('calendar-month-mouseleave', {
|
|
12557
|
+
bubbles: true,
|
|
12558
|
+
composed: true,
|
|
12559
|
+
}));
|
|
12560
|
+
}
|
|
12561
|
+
|
|
12562
|
+
renderWeek(week) {
|
|
12563
|
+
return b$5`
|
|
12564
|
+
<div class="tr" role="row">${week.map((day) => this.renderDay(day))}</div>
|
|
12565
|
+
`;
|
|
12154
12566
|
}
|
|
12155
12567
|
|
|
12156
12568
|
renderDay(day) {
|
|
@@ -12163,7 +12575,6 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
|
|
|
12163
12575
|
.min="${this.min}"
|
|
12164
12576
|
.max="${this.max}"
|
|
12165
12577
|
.month="${this.month}"
|
|
12166
|
-
.hoveredDate="${this.hoveredDate}"
|
|
12167
12578
|
.dateTo="${this.dateTo}"
|
|
12168
12579
|
.dateFrom="${this.dateFrom}"
|
|
12169
12580
|
.locale="${this.localeCode}"
|
|
@@ -12174,7 +12585,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
|
|
|
12174
12585
|
>
|
|
12175
12586
|
</auro-formkit-calendar-cell>
|
|
12176
12587
|
`
|
|
12177
|
-
:
|
|
12588
|
+
: b$5`<div aria-hidden="true" inert></div>`}
|
|
12178
12589
|
</div>
|
|
12179
12590
|
`;
|
|
12180
12591
|
}
|
|
@@ -12188,7 +12599,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
|
|
|
12188
12599
|
<div>
|
|
12189
12600
|
<div class="header">
|
|
12190
12601
|
${this.renderPrevButton()}
|
|
12191
|
-
<div class="headerTitle heading-xs">
|
|
12602
|
+
<div class="headerTitle heading-xs" id="${this.getHeadingId()}">
|
|
12192
12603
|
${this.monthFirst ? b$5`
|
|
12193
12604
|
<div>${this.computeCurrentMonthName(this.month)}</div>
|
|
12194
12605
|
<div>${this.renderYear()}</div>
|
|
@@ -12199,14 +12610,13 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
|
|
|
12199
12610
|
</div>
|
|
12200
12611
|
${this.renderNextButton()}
|
|
12201
12612
|
</div>
|
|
12202
|
-
|
|
12203
|
-
<div class="table">
|
|
12613
|
+
<div class="table" role="grid">
|
|
12204
12614
|
<div class="thead">
|
|
12205
12615
|
<div class="tr">
|
|
12206
|
-
${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map(dayNameOfWeek => this.renderDayOfWeek(dayNameOfWeek))}
|
|
12616
|
+
${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map((dayNameOfWeek, index) => this.renderDayOfWeek(dayNameOfWeek, index))}
|
|
12207
12617
|
</div>
|
|
12208
12618
|
</div>
|
|
12209
|
-
<div class="tbody">
|
|
12619
|
+
<div class="tbody" role="rowgroup" @mouseleave="${this.handleTbodyMouseLeave}">
|
|
12210
12620
|
${(_b = this.daysOfMonth) === null || _b === void 0 ? void 0 : _b.map(week => this.renderWeek(week))}
|
|
12211
12621
|
</div>
|
|
12212
12622
|
</div>
|
|
@@ -12910,6 +13320,14 @@ class AuroBibtemplate extends i$1 {
|
|
|
12910
13320
|
large: {
|
|
12911
13321
|
type: Boolean,
|
|
12912
13322
|
reflect: true
|
|
13323
|
+
},
|
|
13324
|
+
|
|
13325
|
+
/**
|
|
13326
|
+
* If declared, the footer slot will be rendered even when not in fullscreen mode.
|
|
13327
|
+
*/
|
|
13328
|
+
showFooter: {
|
|
13329
|
+
type: Boolean,
|
|
13330
|
+
reflect: true
|
|
12913
13331
|
}
|
|
12914
13332
|
};
|
|
12915
13333
|
}
|
|
@@ -13012,7 +13430,7 @@ class AuroBibtemplate extends i$1 {
|
|
|
13012
13430
|
<slot></slot>
|
|
13013
13431
|
</div>
|
|
13014
13432
|
|
|
13015
|
-
${this.isFullscreen ? u$a`
|
|
13433
|
+
${this.isFullscreen || this.showFooter ? u$a`
|
|
13016
13434
|
<div id="footerContainer">
|
|
13017
13435
|
<slot name="footer"></slot>
|
|
13018
13436
|
</div>` : null}
|
|
@@ -13021,7 +13439,7 @@ class AuroBibtemplate extends i$1 {
|
|
|
13021
13439
|
}
|
|
13022
13440
|
}
|
|
13023
13441
|
|
|
13024
|
-
var formkitVersion$2 = '
|
|
13442
|
+
var formkitVersion$2 = '202606181613';
|
|
13025
13443
|
|
|
13026
13444
|
let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$5`${s$5(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$4 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$3=i$3`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
|
|
13027
13445
|
`,u$6=i$3`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
|
|
@@ -13082,7 +13500,7 @@ let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[
|
|
|
13082
13500
|
|
|
13083
13501
|
var buttonVersion$1 = '12.3.2';
|
|
13084
13502
|
|
|
13085
|
-
/* eslint-disable no-magic-numbers, no-undef-init, max-lines, lit/binding-positions, lit/no-invalid-html */
|
|
13503
|
+
/* eslint-disable no-magic-numbers, complexity, line-comment-position, no-undef-init, max-lines, line-comment-position, no-underscore-dangle, lit/binding-positions, lit/no-invalid-html, no-inline-comments */
|
|
13086
13504
|
|
|
13087
13505
|
|
|
13088
13506
|
// See https://git.io/JJ6SJ for "How to document your components using JSDoc"
|
|
@@ -13119,6 +13537,20 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13119
13537
|
this.largeFullscreenHeadline = false;
|
|
13120
13538
|
this.isFullscreen = false;
|
|
13121
13539
|
|
|
13540
|
+
/**
|
|
13541
|
+
* The date of the currently active cell (Unix timestamp).
|
|
13542
|
+
* Only one cell across the entire calendar has tabindex="0" at a time.
|
|
13543
|
+
* @private
|
|
13544
|
+
*/
|
|
13545
|
+
this.activeCellDate = null;
|
|
13546
|
+
|
|
13547
|
+
/**
|
|
13548
|
+
* Whether the #calendarGrid wrapper currently has focus.
|
|
13549
|
+
* Used to determine whether the visualFocus ring should be shown.
|
|
13550
|
+
* @private
|
|
13551
|
+
*/
|
|
13552
|
+
this._gridHasFocus = false;
|
|
13553
|
+
|
|
13122
13554
|
/**
|
|
13123
13555
|
* @private
|
|
13124
13556
|
*/
|
|
@@ -13129,6 +13561,12 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13129
13561
|
*/
|
|
13130
13562
|
this.calendarRangeMonths = null;
|
|
13131
13563
|
|
|
13564
|
+
/**
|
|
13565
|
+
* Legacy array of disabled-date timestamps.
|
|
13566
|
+
* @private
|
|
13567
|
+
*/
|
|
13568
|
+
this.disabledDays = [];
|
|
13569
|
+
|
|
13132
13570
|
/**
|
|
13133
13571
|
* @private
|
|
13134
13572
|
*/
|
|
@@ -13152,6 +13590,12 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13152
13590
|
this.buttonTag = versioning.generateTag('auro-formkit-datepicker-button', buttonVersion$1, T$1);
|
|
13153
13591
|
|
|
13154
13592
|
this.dropdown = undefined;
|
|
13593
|
+
|
|
13594
|
+
/**
|
|
13595
|
+
* Unique instance ID for the live region element.
|
|
13596
|
+
* @private
|
|
13597
|
+
*/
|
|
13598
|
+
this._calendarInstanceId = Date.now().toString(36);
|
|
13155
13599
|
}
|
|
13156
13600
|
|
|
13157
13601
|
static get styles() {
|
|
@@ -13284,14 +13728,17 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13284
13728
|
*/
|
|
13285
13729
|
localeCode: {
|
|
13286
13730
|
type: String
|
|
13731
|
+
},
|
|
13732
|
+
|
|
13733
|
+
/**
|
|
13734
|
+
* Names of all 12 months. When omitted, names are derived from `localeCode`.
|
|
13735
|
+
*/
|
|
13736
|
+
monthNames: {
|
|
13737
|
+
type: Array
|
|
13287
13738
|
}
|
|
13288
13739
|
};
|
|
13289
13740
|
}
|
|
13290
13741
|
|
|
13291
|
-
localeChanged() {
|
|
13292
|
-
// Locale propagation handled via Lit property bindings to child calendar-month elements.
|
|
13293
|
-
}
|
|
13294
|
-
|
|
13295
13742
|
// ─── Read-only *Object properties ─────────────────────────────────────────
|
|
13296
13743
|
|
|
13297
13744
|
/** @returns {Date|undefined} */
|
|
@@ -13312,19 +13759,78 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13312
13759
|
/**
|
|
13313
13760
|
* Updates the month and year when the user navigates to the previous calendar month.
|
|
13314
13761
|
* @private
|
|
13762
|
+
* @param {Object} [options] - Optional settings.
|
|
13763
|
+
* @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
|
|
13764
|
+
* recomputation. Used by arrow key handlers that manage the active cell themselves.
|
|
13315
13765
|
* @returns {void}
|
|
13316
13766
|
*/
|
|
13317
|
-
handlePrevMonth() {
|
|
13767
|
+
handlePrevMonth(options) {
|
|
13768
|
+
const opts = options instanceof Event ? {} : options || {};
|
|
13769
|
+
this.clearRangePreview({ force: true });
|
|
13318
13770
|
this.utilCal.handleMonthChange(this, 'prev');
|
|
13771
|
+
if (!opts.skipActiveUpdate) {
|
|
13772
|
+
this.updateActiveCellForVisibleMonth();
|
|
13773
|
+
}
|
|
13774
|
+
this.announceMonthChange();
|
|
13319
13775
|
}
|
|
13320
13776
|
|
|
13321
13777
|
/**
|
|
13322
13778
|
* Updates the month and year when the user navigates to the next calendar month.
|
|
13323
13779
|
* @private
|
|
13780
|
+
* @param {Object} [options] - Optional settings.
|
|
13781
|
+
* @param {boolean} [options.skipActiveUpdate=false] - When true, skip the active cell
|
|
13782
|
+
* recomputation. Used by arrow key handlers that manage the active cell themselves.
|
|
13324
13783
|
* @returns {void}
|
|
13325
13784
|
*/
|
|
13326
|
-
handleNextMonth() {
|
|
13785
|
+
handleNextMonth(options) {
|
|
13786
|
+
const opts = options instanceof Event ? {} : options || {};
|
|
13787
|
+
this.clearRangePreview({ force: true });
|
|
13327
13788
|
this.utilCal.handleMonthChange(this, 'next');
|
|
13789
|
+
if (!opts.skipActiveUpdate) {
|
|
13790
|
+
this.updateActiveCellForVisibleMonth();
|
|
13791
|
+
}
|
|
13792
|
+
this.announceMonthChange();
|
|
13793
|
+
}
|
|
13794
|
+
|
|
13795
|
+
/**
|
|
13796
|
+
* Announces the current month and year via the live region after navigation.
|
|
13797
|
+
* @private
|
|
13798
|
+
* @returns {void}
|
|
13799
|
+
*/
|
|
13800
|
+
announceMonthChange() {
|
|
13801
|
+
// Cancel any pending debounced cell announcement so it does not
|
|
13802
|
+
// overwrite this month navigation announcement.
|
|
13803
|
+
if (this._focusAnnounceTimer) {
|
|
13804
|
+
clearTimeout(this._focusAnnounceTimer);
|
|
13805
|
+
this._focusAnnounceTimer = null;
|
|
13806
|
+
}
|
|
13807
|
+
|
|
13808
|
+
const date = this.centralDateObject;
|
|
13809
|
+
const formatter = new Intl.DateTimeFormat(this.localeCode, { month: 'long',
|
|
13810
|
+
year: 'numeric' });
|
|
13811
|
+
this.announceSelection(formatter.format(date));
|
|
13812
|
+
}
|
|
13813
|
+
|
|
13814
|
+
/**
|
|
13815
|
+
* Updates the active cell after month navigation (prev/next buttons).
|
|
13816
|
+
* Always moves the active cell to the first enabled date in the newly
|
|
13817
|
+
* visible months so that tabbing back to the grid lands on an enabled cell.
|
|
13818
|
+
* @private
|
|
13819
|
+
* @returns {void}
|
|
13820
|
+
*/
|
|
13821
|
+
updateActiveCellForVisibleMonth() {
|
|
13822
|
+
// Use double-rAF to ensure child month/cell components have fully
|
|
13823
|
+
// rendered and cached their button references before we set tabindex.
|
|
13824
|
+
requestAnimationFrame(() => {
|
|
13825
|
+
requestAnimationFrame(() => {
|
|
13826
|
+
const newDate = this.computeActiveDate({ skipDateFrom: true });
|
|
13827
|
+
|
|
13828
|
+
if (newDate !== null && newDate !== undefined) {
|
|
13829
|
+
this.activeCellDate = newDate;
|
|
13830
|
+
this.setActiveCell(this.activeCellDate);
|
|
13831
|
+
}
|
|
13832
|
+
});
|
|
13833
|
+
});
|
|
13328
13834
|
}
|
|
13329
13835
|
|
|
13330
13836
|
/**
|
|
@@ -13432,7 +13938,1006 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13432
13938
|
this.utilCal.scrollMonthIntoView(this, date, this.format);
|
|
13433
13939
|
}
|
|
13434
13940
|
|
|
13941
|
+
/**
|
|
13942
|
+
* Gets all rendered month components.
|
|
13943
|
+
* @private
|
|
13944
|
+
* @returns {Array} Array of auro-formkit-calendar-month elements.
|
|
13945
|
+
*/
|
|
13946
|
+
getMonthComponents() {
|
|
13947
|
+
return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
|
|
13948
|
+
}
|
|
13949
|
+
|
|
13950
|
+
/**
|
|
13951
|
+
* Gets all focusable cells across all rendered months.
|
|
13952
|
+
* @private
|
|
13953
|
+
* @returns {Array} Array of auro-formkit-calendar-cell elements.
|
|
13954
|
+
*/
|
|
13955
|
+
getAllFocusableCells() {
|
|
13956
|
+
const months = this.getMonthComponents();
|
|
13957
|
+
let cells = [];
|
|
13958
|
+
months.forEach((month) => {
|
|
13959
|
+
cells = cells.concat(month.getFocusableCells());
|
|
13960
|
+
});
|
|
13961
|
+
return cells;
|
|
13962
|
+
}
|
|
13963
|
+
|
|
13964
|
+
/**
|
|
13965
|
+
* Sets the active cell across all months. Only one cell has tabindex="0" at a time.
|
|
13966
|
+
* Uses imperative DOM manipulation — no Lit re-render triggered.
|
|
13967
|
+
* Also updates ariaActiveDescendantElement on the grid wrapper so
|
|
13968
|
+
* screen readers announce the active cell without moving DOM focus.
|
|
13969
|
+
* @param {Number} date - Unix timestamp of the cell to activate.
|
|
13970
|
+
* @returns {void}
|
|
13971
|
+
*/
|
|
13972
|
+
setActiveCell(date) {
|
|
13973
|
+
const allCells = this.getAllFocusableCells();
|
|
13974
|
+
|
|
13975
|
+
let newActiveCell = null;
|
|
13976
|
+
allCells.forEach((cell) => {
|
|
13977
|
+
if (cell.day && cell.day.date === date) {
|
|
13978
|
+
cell.setActive();
|
|
13979
|
+
newActiveCell = cell;
|
|
13980
|
+
} else if (cell.active) {
|
|
13981
|
+
cell.clearActive();
|
|
13982
|
+
}
|
|
13983
|
+
});
|
|
13984
|
+
|
|
13985
|
+
this.activeCellDate = date;
|
|
13986
|
+
|
|
13987
|
+
// Apply activeCell ring only when the grid currently has focus.
|
|
13988
|
+
if (newActiveCell && this._gridHasFocus) {
|
|
13989
|
+
const btn = newActiveCell._cachedButton || newActiveCell.shadowRoot.querySelector('button.day');
|
|
13990
|
+
if (btn) {
|
|
13991
|
+
btn.classList.add('activeCell');
|
|
13992
|
+
}
|
|
13993
|
+
}
|
|
13994
|
+
}
|
|
13995
|
+
|
|
13996
|
+
/**
|
|
13997
|
+
* Focuses the calendar grid wrapper and sets the active cell.
|
|
13998
|
+
* DOM focus stays on the grid wrapper; the aria-live region
|
|
13999
|
+
* tells the screen reader which cell is "active".
|
|
14000
|
+
* @returns {void}
|
|
14001
|
+
*/
|
|
14002
|
+
focusActiveCell() {
|
|
14003
|
+
if (this.activeCellDate !== null && this.activeCellDate !== undefined) {
|
|
14004
|
+
this.setActiveCell(this.activeCellDate);
|
|
14005
|
+
}
|
|
14006
|
+
|
|
14007
|
+
const gridWrapper = this.shadowRoot.querySelector('#calendarGrid');
|
|
14008
|
+
if (gridWrapper) {
|
|
14009
|
+
gridWrapper.focus({ preventScroll: true,
|
|
14010
|
+
focusVisible: true });
|
|
14011
|
+
}
|
|
14012
|
+
}
|
|
14013
|
+
|
|
14014
|
+
/**
|
|
14015
|
+
* Shows the activeCell ring when the grid gains focus.
|
|
14016
|
+
* @private
|
|
14017
|
+
* @returns {void}
|
|
14018
|
+
*/
|
|
14019
|
+
handleGridFocusIn() {
|
|
14020
|
+
this._gridHasFocus = true;
|
|
14021
|
+
const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
|
|
14022
|
+
if (activeCell) {
|
|
14023
|
+
const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
|
|
14024
|
+
if (btn) {
|
|
14025
|
+
btn.classList.add('activeCell');
|
|
14026
|
+
}
|
|
14027
|
+
}
|
|
14028
|
+
}
|
|
14029
|
+
|
|
14030
|
+
/**
|
|
14031
|
+
* Hides the activeCell ring when the grid loses focus.
|
|
14032
|
+
* @private
|
|
14033
|
+
* @returns {void}
|
|
14034
|
+
*/
|
|
14035
|
+
handleGridFocusOut() {
|
|
14036
|
+
this._gridHasFocus = false;
|
|
14037
|
+
// Remove activeCell from ALL cells to prevent stale rings.
|
|
14038
|
+
const allCells = this.getAllFocusableCells();
|
|
14039
|
+
for (const cell of allCells) {
|
|
14040
|
+
const btn = cell._cachedButton || cell.shadowRoot.querySelector('button.day');
|
|
14041
|
+
if (btn) {
|
|
14042
|
+
btn.classList.remove('activeCell');
|
|
14043
|
+
}
|
|
14044
|
+
}
|
|
14045
|
+
// Clear range hover preview so no highlight lingers after focus leaves the grid.
|
|
14046
|
+
this.clearRangePreview();
|
|
14047
|
+
}
|
|
14048
|
+
|
|
14049
|
+
/**
|
|
14050
|
+
* Computes the initial active date from data properties alone — no DOM required.
|
|
14051
|
+
* Priority:
|
|
14052
|
+
* 1. Selected date (dateFrom) if within range
|
|
14053
|
+
* 2. Today's date if not disabled (in-range and not blackout)
|
|
14054
|
+
* 3. First future non-disabled date (scans day-by-day from today up to 1 year)
|
|
14055
|
+
* 4. First previous non-disabled date (scans day-by-day from today up to 1 year)
|
|
14056
|
+
* 5. First enabled date in finite [min, max] range
|
|
14057
|
+
* 5b. First enabled date scanning forward from finite min (unbounded max)
|
|
14058
|
+
* 5c. First enabled date scanning backward from finite max (unbounded min)
|
|
14059
|
+
* 6. First in-range date (even if blackout) so focus can land somewhere
|
|
14060
|
+
* 7. Undefined — no valid target.
|
|
14061
|
+
*
|
|
14062
|
+
* @private
|
|
14063
|
+
* @param {Object} [options] - Optional settings.
|
|
14064
|
+
* @param {boolean} [options.skipDateFrom=false] - When true, skip the selected-date
|
|
14065
|
+
* shortcut (step 1). Used after month navigation so the active cell lands in the
|
|
14066
|
+
* newly visible month instead of jumping back to the selected date's month.
|
|
14067
|
+
* @returns {Number|undefined} Unix timestamp (seconds) of the date to activate, or undefined.
|
|
14068
|
+
*/
|
|
14069
|
+
computeActiveDate(options = {}) {
|
|
14070
|
+
const MAX_SCAN_DAYS = 366; // scan at most ~1 year in each direction
|
|
14071
|
+
|
|
14072
|
+
/**
|
|
14073
|
+
* Adds days to a timestamp using Date arithmetic to handle DST correctly.
|
|
14074
|
+
* Returns a local-midnight-aligned timestamp in seconds.
|
|
14075
|
+
* @param {Number} ts - Unix timestamp in seconds.
|
|
14076
|
+
* @param {Number} days - Number of days to add.
|
|
14077
|
+
* @returns {Number} The adjusted timestamp in seconds.
|
|
14078
|
+
*/
|
|
14079
|
+
const addDays = (ts, days) => {
|
|
14080
|
+
const date = new Date(ts * 1000);
|
|
14081
|
+
date.setDate(date.getDate() + days);
|
|
14082
|
+
date.setHours(0, 0, 0, 0);
|
|
14083
|
+
return Math.floor(date.getTime() / 1000);
|
|
14084
|
+
};
|
|
14085
|
+
|
|
14086
|
+
const rawMin = this.minDateObject?.getTime() / 1000;
|
|
14087
|
+
const rawMax = this.maxDateObject?.getTime() / 1000;
|
|
14088
|
+
|
|
14089
|
+
// When min/max are NaN (no minDate/maxDate configured), treat as unbounded.
|
|
14090
|
+
const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
|
|
14091
|
+
const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
|
|
14092
|
+
|
|
14093
|
+
// Build a Set of blackout timestamps for O(1) lookup.
|
|
14094
|
+
const blackoutSet = new Set(this.disabledDays.map((day) => parseInt(day, 10)));
|
|
14095
|
+
|
|
14096
|
+
// Also include ISO-format blackoutDates from the datepicker if available.
|
|
14097
|
+
// Parse YYYY-MM-DD as local date to avoid UTC shift issues.
|
|
14098
|
+
const isoBlackouts = this.datepicker?.blackoutDates;
|
|
14099
|
+
if (Array.isArray(isoBlackouts)) {
|
|
14100
|
+
for (const isoStr of isoBlackouts) {
|
|
14101
|
+
const parts = isoStr.split('-');
|
|
14102
|
+
const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
|
|
14103
|
+
if (Number.isFinite(ts)) {
|
|
14104
|
+
blackoutSet.add(ts);
|
|
14105
|
+
}
|
|
14106
|
+
}
|
|
14107
|
+
}
|
|
14108
|
+
|
|
14109
|
+
/**
|
|
14110
|
+
* A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
|
|
14111
|
+
* it is within [min, max] AND not a blackout day.
|
|
14112
|
+
* @param {Number} ts - Unix timestamp in seconds.
|
|
14113
|
+
* @returns {boolean} True if the date is enabled.
|
|
14114
|
+
*/
|
|
14115
|
+
const isEnabled = (ts) => ts >= minTs && ts <= maxTs && !blackoutSet.has(ts);
|
|
14116
|
+
|
|
14117
|
+
/**
|
|
14118
|
+
* A date is "in range" (focusable in the grid) when it is within [min, max].
|
|
14119
|
+
* Blackout dates are focusable but not selectable.
|
|
14120
|
+
* @param {Number} ts - Unix timestamp in seconds.
|
|
14121
|
+
* @returns {boolean} True if the date is in range.
|
|
14122
|
+
*/
|
|
14123
|
+
const isInRange = (ts) => ts >= minTs && ts <= maxTs;
|
|
14124
|
+
|
|
14125
|
+
// 1. Selected date — always valid target if within range (user chose it).
|
|
14126
|
+
// Skipped when called from month navigation so the active cell lands in
|
|
14127
|
+
// the newly visible month rather than the (possibly off-screen) selection.
|
|
14128
|
+
if (!options.skipDateFrom && this.dateFrom) {
|
|
14129
|
+
const parsedFrom = parseInt(this.dateFrom, 10);
|
|
14130
|
+
if (Number.isFinite(parsedFrom) && isInRange(parsedFrom)) {
|
|
14131
|
+
return parsedFrom;
|
|
14132
|
+
}
|
|
14133
|
+
}
|
|
14134
|
+
|
|
14135
|
+
// 2. Today's date (midnight-aligned) if enabled.
|
|
14136
|
+
const now = Math.floor(new Date().setHours(0, 0, 0, 0) / 1000);
|
|
14137
|
+
|
|
14138
|
+
// When centralDate is configured, prefer a date within the month(s) that
|
|
14139
|
+
// will actually be rendered. If today falls outside the visible range, an
|
|
14140
|
+
// active cell set to today would have no matching DOM element and keyboard
|
|
14141
|
+
// focus could not enter the calendar.
|
|
14142
|
+
|
|
14143
|
+
if (this.centralDateObject) {
|
|
14144
|
+
const centralMonth = this.centralDateObject.getMonth();
|
|
14145
|
+
const centralYear = this.centralDateObject.getFullYear();
|
|
14146
|
+
const todayDate = new Date(now * 1000);
|
|
14147
|
+
const todayMonth = todayDate.getMonth();
|
|
14148
|
+
const todayYear = todayDate.getFullYear();
|
|
14149
|
+
|
|
14150
|
+
// Today is outside the centralDate's month — scan for an enabled date
|
|
14151
|
+
// within the visible month instead.
|
|
14152
|
+
if (todayMonth !== centralMonth || todayYear !== centralYear) {
|
|
14153
|
+
const visibleStart = new Date(centralYear, centralMonth, 1);
|
|
14154
|
+
visibleStart.setHours(0, 0, 0, 0);
|
|
14155
|
+
const visibleEnd = new Date(centralYear, centralMonth + 1, 0); // last day of month
|
|
14156
|
+
visibleEnd.setHours(0, 0, 0, 0);
|
|
14157
|
+
const startTs = Math.floor(visibleStart.getTime() / 1000);
|
|
14158
|
+
const daysInMonth = visibleEnd.getDate();
|
|
14159
|
+
|
|
14160
|
+
for (let idx = 0; idx < daysInMonth; idx += 1) {
|
|
14161
|
+
const ts = addDays(startTs, idx);
|
|
14162
|
+
if (isEnabled(ts)) {
|
|
14163
|
+
return ts;
|
|
14164
|
+
}
|
|
14165
|
+
}
|
|
14166
|
+
|
|
14167
|
+
// No enabled date in the visible month — fall back to first in-range
|
|
14168
|
+
// date in the month so focus still lands on a focusable cell.
|
|
14169
|
+
for (let idx = 0; idx < daysInMonth; idx += 1) {
|
|
14170
|
+
const ts = addDays(startTs, idx);
|
|
14171
|
+
if (isInRange(ts)) {
|
|
14172
|
+
return ts;
|
|
14173
|
+
}
|
|
14174
|
+
}
|
|
14175
|
+
}
|
|
14176
|
+
}
|
|
14177
|
+
|
|
14178
|
+
if (isEnabled(now)) {
|
|
14179
|
+
return now;
|
|
14180
|
+
}
|
|
14181
|
+
|
|
14182
|
+
// When a centralDate is configured (or inferred), constrain the scan to the
|
|
14183
|
+
// rendered month(s) first so a single-month calendar does not pick a date
|
|
14184
|
+
// that has no DOM cell. Determine the visible range based on centralDate and
|
|
14185
|
+
// the number of rendered months.
|
|
14186
|
+
const renderedMonths = Math.max(this.numCalendars, 1);
|
|
14187
|
+
const visibleAnchor = this.centralDateObject ?? new Date(now * 1000);
|
|
14188
|
+
const visMonthStart = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth(), 1);
|
|
14189
|
+
visMonthStart.setHours(0, 0, 0, 0);
|
|
14190
|
+
const visMonthEnd = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth() + renderedMonths, 0);
|
|
14191
|
+
visMonthEnd.setHours(0, 0, 0, 0);
|
|
14192
|
+
const visStartTs = Math.floor(visMonthStart.getTime() / 1000);
|
|
14193
|
+
const visEndTs = Math.floor(visMonthEnd.getTime() / 1000);
|
|
14194
|
+
const visDays = Math.round((visEndTs - visStartTs) / 86400) + 1;
|
|
14195
|
+
|
|
14196
|
+
// Scan visible months for an enabled date.
|
|
14197
|
+
for (let idx = 0; idx < visDays; idx += 1) {
|
|
14198
|
+
const ts = addDays(visStartTs, idx);
|
|
14199
|
+
if (isEnabled(ts)) {
|
|
14200
|
+
return ts;
|
|
14201
|
+
}
|
|
14202
|
+
}
|
|
14203
|
+
|
|
14204
|
+
// No enabled date in visible months — try an in-range (focusable) date so
|
|
14205
|
+
// keyboard focus still has a tabindex="0" target.
|
|
14206
|
+
for (let idx = 0; idx < visDays; idx += 1) {
|
|
14207
|
+
const ts = addDays(visStartTs, idx);
|
|
14208
|
+
if (isInRange(ts)) {
|
|
14209
|
+
return ts;
|
|
14210
|
+
}
|
|
14211
|
+
}
|
|
14212
|
+
|
|
14213
|
+
// 3. First future enabled date (scan forward from tomorrow, capped by max and MAX_SCAN_DAYS).
|
|
14214
|
+
for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
|
|
14215
|
+
const ts = addDays(now, idx);
|
|
14216
|
+
if (Number.isFinite(maxTs) && ts > maxTs) {
|
|
14217
|
+
break;
|
|
14218
|
+
}
|
|
14219
|
+
if (isEnabled(ts)) {
|
|
14220
|
+
return ts;
|
|
14221
|
+
}
|
|
14222
|
+
}
|
|
14223
|
+
|
|
14224
|
+
// 4. First previous enabled date (scan backward from yesterday, capped by min and MAX_SCAN_DAYS).
|
|
14225
|
+
for (let idx = 1; idx <= MAX_SCAN_DAYS; idx += 1) {
|
|
14226
|
+
const ts = addDays(now, -idx);
|
|
14227
|
+
if (Number.isFinite(minTs) && ts < minTs) {
|
|
14228
|
+
break;
|
|
14229
|
+
}
|
|
14230
|
+
if (isEnabled(ts)) {
|
|
14231
|
+
return ts;
|
|
14232
|
+
}
|
|
14233
|
+
}
|
|
14234
|
+
|
|
14235
|
+
// 5. If scans missed (e.g. min/max range is far from today), fall back to
|
|
14236
|
+
// the first enabled date in the [min, max] range.
|
|
14237
|
+
if (Number.isFinite(minTs) && Number.isFinite(maxTs)) {
|
|
14238
|
+
let ts = minTs;
|
|
14239
|
+
for (let idx = 0; ts <= maxTs; idx += 1) {
|
|
14240
|
+
if (isEnabled(ts)) {
|
|
14241
|
+
return ts;
|
|
14242
|
+
}
|
|
14243
|
+
ts = addDays(minTs, idx + 1);
|
|
14244
|
+
}
|
|
14245
|
+
}
|
|
14246
|
+
|
|
14247
|
+
// 5b. Finite min with unbounded max (e.g. minDate far in the future):
|
|
14248
|
+
// scan forward from min for up to MAX_SCAN_DAYS.
|
|
14249
|
+
if (Number.isFinite(minTs) && !Number.isFinite(maxTs)) {
|
|
14250
|
+
for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
|
|
14251
|
+
const ts = addDays(minTs, idx);
|
|
14252
|
+
if (isEnabled(ts)) {
|
|
14253
|
+
return ts;
|
|
14254
|
+
}
|
|
14255
|
+
}
|
|
14256
|
+
}
|
|
14257
|
+
|
|
14258
|
+
// 5c. Unbounded min with a finite max far in the past (e.g. birth-date picker):
|
|
14259
|
+
// scan backward from max for up to MAX_SCAN_DAYS.
|
|
14260
|
+
if (!Number.isFinite(minTs) && Number.isFinite(maxTs)) {
|
|
14261
|
+
for (let idx = 0; idx <= MAX_SCAN_DAYS; idx += 1) {
|
|
14262
|
+
const ts = addDays(maxTs, -idx);
|
|
14263
|
+
if (isEnabled(ts)) {
|
|
14264
|
+
return ts;
|
|
14265
|
+
}
|
|
14266
|
+
}
|
|
14267
|
+
}
|
|
14268
|
+
|
|
14269
|
+
// 6. All dates are blackout — fall back to the first in-range date so focus
|
|
14270
|
+
// still lands on a focusable (but not selectable) cell.
|
|
14271
|
+
if (Number.isFinite(minTs) && isInRange(minTs)) {
|
|
14272
|
+
return minTs;
|
|
14273
|
+
}
|
|
14274
|
+
if (isInRange(now)) {
|
|
14275
|
+
return now;
|
|
14276
|
+
}
|
|
14277
|
+
|
|
14278
|
+
return undefined;
|
|
14279
|
+
}
|
|
14280
|
+
|
|
14281
|
+
/**
|
|
14282
|
+
* Checks if a target date (unix seconds) is within the configured [min, max] range.
|
|
14283
|
+
* Returns false if the date falls outside the range, preventing navigation
|
|
14284
|
+
* to months where all dates are disabled.
|
|
14285
|
+
* @private
|
|
14286
|
+
* @param {Number} targetTs - Unix timestamp in seconds.
|
|
14287
|
+
* @returns {Boolean} True if the date is within range.
|
|
14288
|
+
*/
|
|
14289
|
+
isDateInRange(targetTs) {
|
|
14290
|
+
const rawMin = this.minDateObject?.getTime() / 1000;
|
|
14291
|
+
const rawMax = this.maxDateObject?.getTime() / 1000;
|
|
14292
|
+
if (Number.isFinite(rawMin) && targetTs < rawMin) {
|
|
14293
|
+
return false;
|
|
14294
|
+
}
|
|
14295
|
+
if (Number.isFinite(rawMax) && targetTs > rawMax) {
|
|
14296
|
+
return false;
|
|
14297
|
+
}
|
|
14298
|
+
return true;
|
|
14299
|
+
}
|
|
14300
|
+
|
|
14301
|
+
/**
|
|
14302
|
+
* Handles arrow key navigation on the calendar grid wrapper.
|
|
14303
|
+
* Focus stays on the grid wrapper; only ariaActiveDescendantElement
|
|
14304
|
+
* and the visual active-cell indicator change.
|
|
14305
|
+
* @private
|
|
14306
|
+
* @param {KeyboardEvent} event - The keyboard event.
|
|
14307
|
+
* @returns {void}
|
|
14308
|
+
*/
|
|
14309
|
+
handleGridKeyDown(event) {
|
|
14310
|
+
const { key } = event;
|
|
14311
|
+
const actionKeys = [
|
|
14312
|
+
'ArrowRight',
|
|
14313
|
+
'ArrowLeft',
|
|
14314
|
+
'ArrowDown',
|
|
14315
|
+
'ArrowUp',
|
|
14316
|
+
'Enter',
|
|
14317
|
+
' '
|
|
14318
|
+
];
|
|
14319
|
+
|
|
14320
|
+
if (!actionKeys.includes(key)) {
|
|
14321
|
+
return;
|
|
14322
|
+
}
|
|
14323
|
+
|
|
14324
|
+
event.preventDefault();
|
|
14325
|
+
|
|
14326
|
+
const allCells = this.getAllFocusableCells();
|
|
14327
|
+
if (allCells.length === 0) {
|
|
14328
|
+
return;
|
|
14329
|
+
}
|
|
14330
|
+
|
|
14331
|
+
const activeCell = allCells.find((cell) => cell.active);
|
|
14332
|
+
if (!activeCell) {
|
|
14333
|
+
return;
|
|
14334
|
+
}
|
|
14335
|
+
|
|
14336
|
+
// Handle Enter/Space to select the active cell
|
|
14337
|
+
if (key === 'Enter' || key === ' ') {
|
|
14338
|
+
activeCell.handleTap();
|
|
14339
|
+
return;
|
|
14340
|
+
}
|
|
14341
|
+
|
|
14342
|
+
const activeIndex = allCells.indexOf(activeCell);
|
|
14343
|
+
|
|
14344
|
+
if (key === 'ArrowRight' || key === 'ArrowLeft') {
|
|
14345
|
+
const direction = key === 'ArrowRight' ? 1 : -1;
|
|
14346
|
+
const targetIndex = activeIndex + direction;
|
|
14347
|
+
|
|
14348
|
+
if (targetIndex >= 0 && targetIndex < allCells.length) {
|
|
14349
|
+
// Target cell exists in rendered months
|
|
14350
|
+
this.setActiveCell(allCells[targetIndex].day.date);
|
|
14351
|
+
this.scrollToActiveCell();
|
|
14352
|
+
// Dispatch focus event for the cell so live region + range preview update
|
|
14353
|
+
this.handleCellFocused({ detail: { date: allCells[targetIndex].day.date } });
|
|
14354
|
+
} else {
|
|
14355
|
+
// At boundary — need to navigate to next/prev month
|
|
14356
|
+
const navDir = direction === 1 ? 'next' : 'prev';
|
|
14357
|
+
const targetDate = new Date(activeCell.day.date * 1000);
|
|
14358
|
+
targetDate.setDate(targetDate.getDate() + direction);
|
|
14359
|
+
targetDate.setHours(0, 0, 0, 0);
|
|
14360
|
+
const targetTs = Math.floor(targetDate.getTime() / 1000);
|
|
14361
|
+
|
|
14362
|
+
if (this.isDateInRange(targetTs) && ((navDir === 'next' && this.showNextMonthBtn) || (navDir === 'prev' && this.showPrevMonthBtn))) { // eslint-disable-line no-extra-parens
|
|
14363
|
+
|
|
14364
|
+
if (navDir === 'next') {
|
|
14365
|
+
this.handleNextMonth({ skipActiveUpdate: true });
|
|
14366
|
+
} else {
|
|
14367
|
+
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14368
|
+
}
|
|
14369
|
+
requestAnimationFrame(() => {
|
|
14370
|
+
requestAnimationFrame(() => {
|
|
14371
|
+
const cells = this.getAllFocusableCells();
|
|
14372
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
|
|
14373
|
+
if (target) {
|
|
14374
|
+
this.setActiveCell(target.day.date);
|
|
14375
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
14376
|
+
} else if (cells.length > 0) {
|
|
14377
|
+
const fallback = navDir === 'next' ? cells[cells.length - 1] : cells[0];
|
|
14378
|
+
this.setActiveCell(fallback.day.date);
|
|
14379
|
+
this.handleCellFocused({ detail: { date: fallback.day.date } });
|
|
14380
|
+
}
|
|
14381
|
+
// Re-focus grid wrapper after month change re-render
|
|
14382
|
+
this.focusActiveCell();
|
|
14383
|
+
});
|
|
14384
|
+
});
|
|
14385
|
+
}
|
|
14386
|
+
}
|
|
14387
|
+
} else if (key === 'ArrowDown' || key === 'ArrowUp') {
|
|
14388
|
+
const increment = key === 'ArrowDown' ? 7 : -7;
|
|
14389
|
+
const currentDate = new Date(activeCell.day.date * 1000);
|
|
14390
|
+
currentDate.setDate(currentDate.getDate() + increment);
|
|
14391
|
+
currentDate.setHours(0, 0, 0, 0);
|
|
14392
|
+
const targetDate = Math.floor(currentDate.getTime() / 1000);
|
|
14393
|
+
|
|
14394
|
+
const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14395
|
+
|
|
14396
|
+
if (targetCell) {
|
|
14397
|
+
this.setActiveCell(targetCell.day.date);
|
|
14398
|
+
this.scrollToActiveCell();
|
|
14399
|
+
this.handleCellFocused({ detail: { date: targetCell.day.date } });
|
|
14400
|
+
} else if (this.isDateInRange(targetDate)) {
|
|
14401
|
+
// Target might be in an unrendered month
|
|
14402
|
+
const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
|
|
14403
|
+
if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
|
|
14404
|
+
if (navDirection === 'next') {
|
|
14405
|
+
this.handleNextMonth({ skipActiveUpdate: true });
|
|
14406
|
+
} else {
|
|
14407
|
+
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14408
|
+
}
|
|
14409
|
+
requestAnimationFrame(() => {
|
|
14410
|
+
requestAnimationFrame(() => {
|
|
14411
|
+
const cells = this.getAllFocusableCells();
|
|
14412
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14413
|
+
if (target) {
|
|
14414
|
+
this.setActiveCell(target.day.date);
|
|
14415
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
14416
|
+
} else if (cells.length > 0) {
|
|
14417
|
+
let nearest = null;
|
|
14418
|
+
|
|
14419
|
+
if (navDirection === 'next') {
|
|
14420
|
+
[nearest] = cells;
|
|
14421
|
+
} else {
|
|
14422
|
+
nearest = cells[cells.length - 1];
|
|
14423
|
+
}
|
|
14424
|
+
this.setActiveCell(nearest.day.date);
|
|
14425
|
+
this.handleCellFocused({ detail: { date: nearest.day.date } });
|
|
14426
|
+
}
|
|
14427
|
+
this.focusActiveCell();
|
|
14428
|
+
});
|
|
14429
|
+
});
|
|
14430
|
+
}
|
|
14431
|
+
}
|
|
14432
|
+
}
|
|
14433
|
+
}
|
|
14434
|
+
|
|
14435
|
+
/**
|
|
14436
|
+
* Handles cross-month boundary navigation events from month components.
|
|
14437
|
+
* @private
|
|
14438
|
+
* @param {CustomEvent} event - The boundary event with direction and source date info.
|
|
14439
|
+
* @returns {void}
|
|
14440
|
+
*/
|
|
14441
|
+
handleMonthBoundary(event) {
|
|
14442
|
+
const { direction, fromDate, key } = event.detail;
|
|
14443
|
+
|
|
14444
|
+
if (key === 'ArrowRight' || key === 'ArrowLeft') {
|
|
14445
|
+
// Linear navigation: find adjacent focusable cell across months
|
|
14446
|
+
const allCells = this.getAllFocusableCells();
|
|
14447
|
+
const currentIndex = allCells.findIndex((cell) => cell.day && cell.day.date === fromDate);
|
|
14448
|
+
|
|
14449
|
+
if (currentIndex === -1) {
|
|
14450
|
+
return;
|
|
14451
|
+
}
|
|
14452
|
+
|
|
14453
|
+
let targetIndex = -1;
|
|
14454
|
+
if (direction === 'next') {
|
|
14455
|
+
targetIndex = currentIndex + 1;
|
|
14456
|
+
}
|
|
14457
|
+
|
|
14458
|
+
if (targetIndex >= 0 && targetIndex < allCells.length) {
|
|
14459
|
+
const targetCell = allCells[targetIndex];
|
|
14460
|
+
this.setActiveCell(targetCell.day.date);
|
|
14461
|
+
this.scrollToActiveCell();
|
|
14462
|
+
this.focusActiveCell();
|
|
14463
|
+
} else if (direction === 'next' && this.showNextMonthBtn) {
|
|
14464
|
+
// Navigate to next month and focus the computed next date.
|
|
14465
|
+
// Using the target date (fromDate + 1 day) instead of cells[0]
|
|
14466
|
+
// avoids jumping backward in range datepickers where cells[0]
|
|
14467
|
+
// belongs to the previous (still-rendered) month.
|
|
14468
|
+
const nextDate = new Date(fromDate * 1000);
|
|
14469
|
+
nextDate.setDate(nextDate.getDate() + 1);
|
|
14470
|
+
nextDate.setHours(0, 0, 0, 0);
|
|
14471
|
+
const nextTs = Math.floor(nextDate.getTime() / 1000);
|
|
14472
|
+
|
|
14473
|
+
if (!this.isDateInRange(nextTs)) {
|
|
14474
|
+
return;
|
|
14475
|
+
}
|
|
14476
|
+
|
|
14477
|
+
this.handleNextMonth({ skipActiveUpdate: true });
|
|
14478
|
+
requestAnimationFrame(() => {
|
|
14479
|
+
requestAnimationFrame(() => {
|
|
14480
|
+
const cells = this.getAllFocusableCells();
|
|
14481
|
+
const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
|
|
14482
|
+
if (target) {
|
|
14483
|
+
this.setActiveCell(target.day.date);
|
|
14484
|
+
this.focusActiveCell();
|
|
14485
|
+
} else if (cells.length > 0) {
|
|
14486
|
+
// Fallback: first cell of the last rendered month
|
|
14487
|
+
this.setActiveCell(cells[cells.length - 1].day.date);
|
|
14488
|
+
this.focusActiveCell();
|
|
14489
|
+
}
|
|
14490
|
+
});
|
|
14491
|
+
});
|
|
14492
|
+
} else if (direction === 'prev' && this.showPrevMonthBtn) {
|
|
14493
|
+
// Navigate to previous month and focus the computed previous date.
|
|
14494
|
+
const prevDate = new Date(fromDate * 1000);
|
|
14495
|
+
prevDate.setDate(prevDate.getDate() - 1);
|
|
14496
|
+
prevDate.setHours(0, 0, 0, 0);
|
|
14497
|
+
const prevTs = Math.floor(prevDate.getTime() / 1000);
|
|
14498
|
+
|
|
14499
|
+
if (!this.isDateInRange(prevTs)) {
|
|
14500
|
+
return;
|
|
14501
|
+
}
|
|
14502
|
+
|
|
14503
|
+
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14504
|
+
requestAnimationFrame(() => {
|
|
14505
|
+
requestAnimationFrame(() => {
|
|
14506
|
+
const cells = this.getAllFocusableCells();
|
|
14507
|
+
const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
|
|
14508
|
+
if (target) {
|
|
14509
|
+
this.setActiveCell(target.day.date);
|
|
14510
|
+
this.focusActiveCell();
|
|
14511
|
+
} else if (cells.length > 0) {
|
|
14512
|
+
// Fallback: last cell of the first rendered month
|
|
14513
|
+
this.setActiveCell(cells[0].day.date);
|
|
14514
|
+
this.focusActiveCell();
|
|
14515
|
+
}
|
|
14516
|
+
});
|
|
14517
|
+
});
|
|
14518
|
+
}
|
|
14519
|
+
} else if (key === 'ArrowDown' || key === 'ArrowUp') {
|
|
14520
|
+
// Vertical navigation: find same day-of-week +/- 7 days
|
|
14521
|
+
// Use Date arithmetic instead of fixed seconds to handle DST correctly
|
|
14522
|
+
const increment = key === 'ArrowDown' ? 7 : -7;
|
|
14523
|
+
const currentDate = new Date(fromDate * 1000);
|
|
14524
|
+
currentDate.setDate(currentDate.getDate() + increment);
|
|
14525
|
+
currentDate.setHours(0, 0, 0, 0);
|
|
14526
|
+
const targetDate = Math.floor(currentDate.getTime() / 1000);
|
|
14527
|
+
|
|
14528
|
+
const allCells = this.getAllFocusableCells();
|
|
14529
|
+
const targetCell = allCells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14530
|
+
|
|
14531
|
+
if (targetCell) {
|
|
14532
|
+
this.setActiveCell(targetCell.day.date);
|
|
14533
|
+
this.scrollToActiveCell();
|
|
14534
|
+
this.focusActiveCell();
|
|
14535
|
+
} else if (this.isDateInRange(targetDate)) {
|
|
14536
|
+
// Target might be in an unrendered month, navigate there
|
|
14537
|
+
const navDirection = key === 'ArrowDown' ? 'next' : 'prev';
|
|
14538
|
+
if ((navDirection === 'next' && this.showNextMonthBtn) || (navDirection === 'prev' && this.showPrevMonthBtn)) { // eslint-disable-line no-extra-parens
|
|
14539
|
+
if (navDirection === 'next') {
|
|
14540
|
+
this.handleNextMonth({ skipActiveUpdate: true });
|
|
14541
|
+
} else {
|
|
14542
|
+
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
14543
|
+
}
|
|
14544
|
+
requestAnimationFrame(() => {
|
|
14545
|
+
requestAnimationFrame(() => {
|
|
14546
|
+
const cells = this.getAllFocusableCells();
|
|
14547
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
14548
|
+
if (target) {
|
|
14549
|
+
this.setActiveCell(target.day.date);
|
|
14550
|
+
this.focusActiveCell();
|
|
14551
|
+
} else if (cells.length > 0) {
|
|
14552
|
+
// Clamp to nearest focusable cell
|
|
14553
|
+
const nearest = navDirection === 'next' ? cells[0] : cells[cells.length - 1];
|
|
14554
|
+
this.setActiveCell(nearest.day.date);
|
|
14555
|
+
this.focusActiveCell();
|
|
14556
|
+
}
|
|
14557
|
+
});
|
|
14558
|
+
});
|
|
14559
|
+
}
|
|
14560
|
+
}
|
|
14561
|
+
}
|
|
14562
|
+
}
|
|
14563
|
+
|
|
14564
|
+
/**
|
|
14565
|
+
* Handles cell activation events from month components.
|
|
14566
|
+
* @private
|
|
14567
|
+
* @param {CustomEvent} event - The activation event with target date.
|
|
14568
|
+
* @returns {void}
|
|
14569
|
+
*/
|
|
14570
|
+
handleCellActivate(event) {
|
|
14571
|
+
const { date } = event.detail;
|
|
14572
|
+
this.setActiveCell(date);
|
|
14573
|
+
|
|
14574
|
+
// Don't call focusActiveCell() here. The tap/click already placed
|
|
14575
|
+
// focus on the cell button, and moving it to #calendarGrid would
|
|
14576
|
+
// trigger focusout on the button, closing any open popover on the
|
|
14577
|
+
// cell. Keyboard events are composed and still bubble through
|
|
14578
|
+
// shadow DOM boundaries to the grid's @keydown handler, so
|
|
14579
|
+
// subsequent keyboard navigation continues to work.
|
|
14580
|
+
}
|
|
14581
|
+
|
|
14582
|
+
/**
|
|
14583
|
+
* Handles focus events from calendar cells.
|
|
14584
|
+
* Updates the live region with an SR announcement and triggers
|
|
14585
|
+
* the imperative range preview if applicable.
|
|
14586
|
+
* @private
|
|
14587
|
+
* @param {CustomEvent} event - The calendar-cell-focused event.
|
|
14588
|
+
* @returns {void}
|
|
14589
|
+
*/
|
|
14590
|
+
handleCellFocused(event) {
|
|
14591
|
+
const { date } = event.detail;
|
|
14592
|
+
if (date === null) {
|
|
14593
|
+
return;
|
|
14594
|
+
}
|
|
14595
|
+
|
|
14596
|
+
// With aria-activedescendant, the button no longer receives native focus,
|
|
14597
|
+
// so we use the debounced live region for the full context announcement.
|
|
14598
|
+
const announcement = this.buildFocusAnnouncement(date);
|
|
14599
|
+
this.announceFocusDebounced(announcement);
|
|
14600
|
+
|
|
14601
|
+
// Update the range preview imperatively if in range-preview mode.
|
|
14602
|
+
this.updateRangePreview(date);
|
|
14603
|
+
}
|
|
14604
|
+
|
|
14605
|
+
/**
|
|
14606
|
+
* Builds a full SR announcement string for a focused cell date.
|
|
14607
|
+
* Includes the localized date, range position, popover content,
|
|
14608
|
+
* and blackout status.
|
|
14609
|
+
* @private
|
|
14610
|
+
* @param {Number} date - Unix timestamp (seconds) of the focused cell.
|
|
14611
|
+
* @returns {String} The announcement string.
|
|
14612
|
+
*/
|
|
14613
|
+
buildFocusAnnouncement(date) {
|
|
14614
|
+
let label = this.formatAnnouncementDate(date);
|
|
14615
|
+
|
|
14616
|
+
// Append date slot content (e.g. prices) if present.
|
|
14617
|
+
const dateObj = new Date(date * 1000);
|
|
14618
|
+
const mm = String(dateObj.getMonth() + 1).padStart(2, '0');
|
|
14619
|
+
const dd = String(dateObj.getDate()).padStart(2, '0');
|
|
14620
|
+
const yyyy = dateObj.getFullYear();
|
|
14621
|
+
const dateStr = `${yyyy}_${mm}_${dd}`;
|
|
14622
|
+
const dateSlotEl = this.datepicker?.querySelector(`[slot="date_${dateStr}"]`);
|
|
14623
|
+
if (dateSlotEl) {
|
|
14624
|
+
const text = dateSlotEl.innerText?.trim();
|
|
14625
|
+
if (text) {
|
|
14626
|
+
label += `, ${text}`;
|
|
14627
|
+
}
|
|
14628
|
+
}
|
|
14629
|
+
|
|
14630
|
+
// Append popover content if present.
|
|
14631
|
+
const popoverEl = this.datepicker?.querySelector(`[slot="popover_${dateStr}"]`);
|
|
14632
|
+
if (popoverEl) {
|
|
14633
|
+
const text = popoverEl.innerText?.trim();
|
|
14634
|
+
if (text) {
|
|
14635
|
+
label += `, ${text}`;
|
|
14636
|
+
}
|
|
14637
|
+
}
|
|
14638
|
+
|
|
14639
|
+
// Append range position context.
|
|
14640
|
+
if (this.datepicker?.hasAttribute('range')) {
|
|
14641
|
+
const rangeLabel = this.getRangePositionLabel(date);
|
|
14642
|
+
if (rangeLabel) {
|
|
14643
|
+
label += `, ${rangeLabel}`;
|
|
14644
|
+
}
|
|
14645
|
+
}
|
|
14646
|
+
|
|
14647
|
+
// Append blackout label.
|
|
14648
|
+
if (this.isDateBlackout(date)) {
|
|
14649
|
+
label += `, ${this.datepicker?.blackoutLabel || 'unavailable'}`;
|
|
14650
|
+
}
|
|
14651
|
+
|
|
14652
|
+
return label;
|
|
14653
|
+
}
|
|
14654
|
+
|
|
14655
|
+
/**
|
|
14656
|
+
* Determines the range position label for a given date.
|
|
14657
|
+
* @private
|
|
14658
|
+
* @param {Number} date - Unix timestamp (seconds).
|
|
14659
|
+
* @returns {String|null} The range position label, or null.
|
|
14660
|
+
*/
|
|
14661
|
+
getRangePositionLabel(date) {
|
|
14662
|
+
const parsedFrom = Number.parseInt(this.dateFrom, 10);
|
|
14663
|
+
if (!Number.isFinite(parsedFrom)) {
|
|
14664
|
+
return null;
|
|
14665
|
+
}
|
|
14666
|
+
|
|
14667
|
+
const departTs = startOfDay$2(parsedFrom * 1000) / 1000;
|
|
14668
|
+
const parsedTo = Number.parseInt(this.dateTo, 10);
|
|
14669
|
+
const hasTo = Number.isFinite(parsedTo);
|
|
14670
|
+
const returnTs = hasTo ? startOfDay$2(parsedTo * 1000) / 1000 : null;
|
|
14671
|
+
|
|
14672
|
+
if (date === departTs) {
|
|
14673
|
+
return this.datepicker.rangeLabelStart || 'range start';
|
|
14674
|
+
}
|
|
14675
|
+
if (hasTo && date === returnTs) {
|
|
14676
|
+
return this.datepicker.rangeLabelEnd || 'range end';
|
|
14677
|
+
}
|
|
14678
|
+
if (date < departTs) {
|
|
14679
|
+
return this.datepicker.rangeLabelBeforeRange || 'before range';
|
|
14680
|
+
}
|
|
14681
|
+
if (hasTo && date > departTs && date < returnTs) {
|
|
14682
|
+
return this.datepicker.rangeLabelInRange || 'in range';
|
|
14683
|
+
}
|
|
14684
|
+
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
14685
|
+
}
|
|
14686
|
+
|
|
14687
|
+
/**
|
|
14688
|
+
* Checks whether a given date is a blackout date.
|
|
14689
|
+
* @private
|
|
14690
|
+
* @param {Number} dateTs - Unix timestamp (seconds).
|
|
14691
|
+
* @returns {Boolean} True if the date is blacked out.
|
|
14692
|
+
*/
|
|
14693
|
+
isDateBlackout(dateTs) {
|
|
14694
|
+
// Check legacy disabledDays.
|
|
14695
|
+
if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
|
|
14696
|
+
if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
|
|
14697
|
+
return true;
|
|
14698
|
+
}
|
|
14699
|
+
}
|
|
14700
|
+
|
|
14701
|
+
// Check ISO blackoutDates.
|
|
14702
|
+
const blackoutDates = this.datepicker?.blackoutDates;
|
|
14703
|
+
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
14704
|
+
const date = new Date(dateTs * 1000);
|
|
14705
|
+
const yyyy = date.getFullYear();
|
|
14706
|
+
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
14707
|
+
const dd = String(date.getDate()).padStart(2, '0');
|
|
14708
|
+
if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
|
|
14709
|
+
return true;
|
|
14710
|
+
}
|
|
14711
|
+
}
|
|
14712
|
+
|
|
14713
|
+
return false;
|
|
14714
|
+
}
|
|
14715
|
+
|
|
14716
|
+
/**
|
|
14717
|
+
* Updates the range preview classes imperatively across all cells.
|
|
14718
|
+
* Only active when in range mode with dateFrom set and dateTo not yet set.
|
|
14719
|
+
* @private
|
|
14720
|
+
* @param {Number} hoveredDate - Unix timestamp of the hovered/focused date.
|
|
14721
|
+
* @returns {void}
|
|
14722
|
+
*/
|
|
14723
|
+
updateRangePreview(hoveredDate) {
|
|
14724
|
+
if (this.noRange || !this.dateFrom || this.dateTo) {
|
|
14725
|
+
return;
|
|
14726
|
+
}
|
|
14727
|
+
|
|
14728
|
+
const parsedDateFrom = parseInt(this.dateFrom, 10);
|
|
14729
|
+
const allCells = this.getAllFocusableCells();
|
|
14730
|
+
|
|
14731
|
+
allCells.forEach((cell) => {
|
|
14732
|
+
cell.updateRangePreviewClasses(hoveredDate, parsedDateFrom);
|
|
14733
|
+
});
|
|
14734
|
+
}
|
|
14735
|
+
|
|
14736
|
+
/**
|
|
14737
|
+
* Clears range preview classes from all cells.
|
|
14738
|
+
* @private
|
|
14739
|
+
* @param {Object} [options] - Optional settings.
|
|
14740
|
+
* @param {boolean} [options.force=false] - When true, clears classes even
|
|
14741
|
+
* when both dateFrom and dateTo are set. Used by month nav handlers
|
|
14742
|
+
* since the subsequent re-render re-applies classMap-managed classes,
|
|
14743
|
+
* while `lastHoveredDate` (not in classMap) would otherwise persist.
|
|
14744
|
+
* @returns {void}
|
|
14745
|
+
*/
|
|
14746
|
+
clearRangePreview(options) {
|
|
14747
|
+
const opts = options instanceof Event ? {} : options || {};
|
|
14748
|
+
if (!opts.force && this.dateFrom && this.dateTo) {
|
|
14749
|
+
return;
|
|
14750
|
+
}
|
|
14751
|
+
|
|
14752
|
+
const allCells = this.getAllFocusableCells();
|
|
14753
|
+
allCells.forEach((cell) => {
|
|
14754
|
+
cell.clearRangePreviewClasses();
|
|
14755
|
+
});
|
|
14756
|
+
}
|
|
14757
|
+
|
|
14758
|
+
/**
|
|
14759
|
+
* Overrides the base class handler to prevent setting `this.hoveredDate`
|
|
14760
|
+
* as a reactive property. Instead, handles the range preview imperatively.
|
|
14761
|
+
* @private
|
|
14762
|
+
* @param {CustomEvent} event - The hovered-date-changed event from a month.
|
|
14763
|
+
* @returns {void}
|
|
14764
|
+
*/
|
|
14765
|
+
hoveredDateChanged(event) {
|
|
14766
|
+
const hoveredDate = event.detail.value;
|
|
14767
|
+
this.updateRangePreview(hoveredDate);
|
|
14768
|
+
}
|
|
14769
|
+
|
|
14770
|
+
/**
|
|
14771
|
+
* Scrolls the calendar to ensure the month containing the active cell is visible.
|
|
14772
|
+
* @private
|
|
14773
|
+
* @returns {void}
|
|
14774
|
+
*/
|
|
14775
|
+
scrollToActiveCell() {
|
|
14776
|
+
if (this.activeCellDate === null || this.activeCellDate === undefined) {
|
|
14777
|
+
return;
|
|
14778
|
+
}
|
|
14779
|
+
|
|
14780
|
+
const date = new Date(this.activeCellDate * 1000);
|
|
14781
|
+
const month = date.getMonth() + 1;
|
|
14782
|
+
const year = date.getFullYear();
|
|
14783
|
+
const selector = `#month-${month}-${year}`;
|
|
14784
|
+
const monthElem = this.shadowRoot.querySelector(selector);
|
|
14785
|
+
|
|
14786
|
+
if (monthElem) {
|
|
14787
|
+
const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;
|
|
14788
|
+
monthElem.scrollIntoView({ block: 'nearest',
|
|
14789
|
+
behavior: prefersReducedMotion ? 'instant' : 'smooth' });
|
|
14790
|
+
}
|
|
14791
|
+
}
|
|
14792
|
+
|
|
14793
|
+
/**
|
|
14794
|
+
* Returns (and lazily creates) an aria-live region inside the dropdown's
|
|
14795
|
+
* <dialog> element. This placement is critical for two reasons:
|
|
14796
|
+
*
|
|
14797
|
+
* 1. Inside the dialog's accessible scope — dialog.showModal() makes
|
|
14798
|
+
* everything outside the top-layer dialog inert, and desktop modal
|
|
14799
|
+
* mode uses _setPageInert() on document.body siblings. A live region
|
|
14800
|
+
* on document.body would be invisible to screen readers in both cases.
|
|
14801
|
+
*
|
|
14802
|
+
* 2. Not nested in shadow DOM — Chrome inconsistently observes aria-live
|
|
14803
|
+
* mutations inside shadow DOM across machines and versions. The dialog
|
|
14804
|
+
* element is only one shadow root deep (the dropdown bib's shadow DOM),
|
|
14805
|
+
* which Chrome handles reliably. The calendar's own shadow DOM (nested
|
|
14806
|
+
* inside the bib via slotting) is two+ levels deep and unreliable.
|
|
14807
|
+
*
|
|
14808
|
+
* @private
|
|
14809
|
+
* @returns {HTMLElement} The live region element.
|
|
14810
|
+
*/
|
|
14811
|
+
getOrCreateLiveRegion() {
|
|
14812
|
+
if (this._liveRegion && this._liveRegion.isConnected) {
|
|
14813
|
+
return this._liveRegion;
|
|
14814
|
+
}
|
|
14815
|
+
|
|
14816
|
+
// Access the dialog element inside the dropdown bib's shadow DOM.
|
|
14817
|
+
const dialog = this.dropdown?.bibContent?.shadowRoot?.querySelector('dialog');
|
|
14818
|
+
if (!dialog) {
|
|
14819
|
+
return null;
|
|
14820
|
+
}
|
|
14821
|
+
|
|
14822
|
+
// Check if we already created one for this calendar instance.
|
|
14823
|
+
const regionId = `auro-calendar-live-${this._calendarInstanceId}`;
|
|
14824
|
+
const existing = dialog.querySelector(`#${regionId}`);
|
|
14825
|
+
if (existing) {
|
|
14826
|
+
this._liveRegion = existing;
|
|
14827
|
+
return existing;
|
|
14828
|
+
}
|
|
14829
|
+
|
|
14830
|
+
const el = document.createElement('div');
|
|
14831
|
+
el.id = regionId;
|
|
14832
|
+
el.setAttribute('aria-live', 'assertive');
|
|
14833
|
+
el.setAttribute('aria-atomic', 'true');
|
|
14834
|
+
el.style.cssText = 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;';
|
|
14835
|
+
dialog.appendChild(el);
|
|
14836
|
+
|
|
14837
|
+
this._liveRegion = el;
|
|
14838
|
+
return el;
|
|
14839
|
+
}
|
|
14840
|
+
|
|
14841
|
+
/**
|
|
14842
|
+
* Removes the live region when this calendar is disconnected.
|
|
14843
|
+
* @private
|
|
14844
|
+
* @returns {void}
|
|
14845
|
+
*/
|
|
14846
|
+
disconnectedCallback() {
|
|
14847
|
+
super.disconnectedCallback();
|
|
14848
|
+
|
|
14849
|
+
// Cancel any pending announcements so they don't fire after teardown.
|
|
14850
|
+
if (this._announceRafId) {
|
|
14851
|
+
cancelAnimationFrame(this._announceRafId);
|
|
14852
|
+
this._announceRafId = null;
|
|
14853
|
+
}
|
|
14854
|
+
if (this._focusAnnounceTimer) {
|
|
14855
|
+
clearTimeout(this._focusAnnounceTimer);
|
|
14856
|
+
this._focusAnnounceTimer = null;
|
|
14857
|
+
}
|
|
14858
|
+
|
|
14859
|
+
if (this._liveRegion && this._liveRegion.isConnected) {
|
|
14860
|
+
this._liveRegion.remove();
|
|
14861
|
+
}
|
|
14862
|
+
this._liveRegion = null;
|
|
14863
|
+
}
|
|
14864
|
+
|
|
14865
|
+
/**
|
|
14866
|
+
* Announces a date selection or focus change via the live region.
|
|
14867
|
+
* Uses requestAnimationFrame to ensure the clear and set happen in
|
|
14868
|
+
* separate rendering frames — Chrome may coalesce synchronous or
|
|
14869
|
+
* microtask-deferred mutations into a single accessibility tree update.
|
|
14870
|
+
* @private
|
|
14871
|
+
* @param {String} dateStr - The localized date string to announce.
|
|
14872
|
+
* @returns {void}
|
|
14873
|
+
*/
|
|
14874
|
+
announceSelection(dateStr) {
|
|
14875
|
+
// Cancel any previously queued rAF announcement so a rapid
|
|
14876
|
+
// sequence of calls (e.g. bib open → month nav) only announces
|
|
14877
|
+
// the last one.
|
|
14878
|
+
if (this._announceRafId) {
|
|
14879
|
+
cancelAnimationFrame(this._announceRafId);
|
|
14880
|
+
}
|
|
14881
|
+
const liveRegion = this.getOrCreateLiveRegion();
|
|
14882
|
+
if (!liveRegion) {
|
|
14883
|
+
return;
|
|
14884
|
+
}
|
|
14885
|
+
|
|
14886
|
+
// Double-rAF: clear in frame N, set in frame N+1. Chrome batches
|
|
14887
|
+
// accessibility tree mutations within a single animation frame, so
|
|
14888
|
+
// a same-frame clear+set can be coalesced into a no-op if the new
|
|
14889
|
+
// value matches a recently announced string. Splitting across two
|
|
14890
|
+
// frames guarantees Chrome sees two distinct tree states and fires
|
|
14891
|
+
// a new accessibility event for the content change.
|
|
14892
|
+
liveRegion.textContent = '';
|
|
14893
|
+
this._announceRafId = requestAnimationFrame(() => {
|
|
14894
|
+
this._announceRafId = requestAnimationFrame(() => {
|
|
14895
|
+
liveRegion.textContent = dateStr;
|
|
14896
|
+
this._announceRafId = null;
|
|
14897
|
+
});
|
|
14898
|
+
});
|
|
14899
|
+
}
|
|
14900
|
+
|
|
14901
|
+
/**
|
|
14902
|
+
* Debounced version of announceSelection for focus navigation.
|
|
14903
|
+
* Uses the assertive live region with a 150ms debounce so only the
|
|
14904
|
+
* final cell after rapid arrow-key traversal is announced. We
|
|
14905
|
+
* originally tried aria-live="polite" here, but VoiceOver treats
|
|
14906
|
+
* polite as "wait until idle" — which never happens during active
|
|
14907
|
+
* keyboard navigation — so the announcements were silently dropped.
|
|
14908
|
+
* @private
|
|
14909
|
+
* @param {String} dateStr - The localized date string to announce.
|
|
14910
|
+
* @returns {void}
|
|
14911
|
+
*/
|
|
14912
|
+
announceFocusDebounced(dateStr) {
|
|
14913
|
+
if (this._focusAnnounceTimer) {
|
|
14914
|
+
clearTimeout(this._focusAnnounceTimer);
|
|
14915
|
+
}
|
|
14916
|
+
this._focusAnnounceTimer = setTimeout(() => {
|
|
14917
|
+
this.announceSelection(dateStr);
|
|
14918
|
+
this._focusAnnounceTimer = null;
|
|
14919
|
+
}, 150);
|
|
14920
|
+
}
|
|
14921
|
+
|
|
14922
|
+
/**
|
|
14923
|
+
* Formats a Unix timestamp (seconds) as a localized date string for SR announcements.
|
|
14924
|
+
* @private
|
|
14925
|
+
* @param {String|Number} timestamp - Unix timestamp in seconds.
|
|
14926
|
+
* @returns {String} Localized date string.
|
|
14927
|
+
*/
|
|
14928
|
+
formatAnnouncementDate(timestamp) {
|
|
14929
|
+
const date = new Date(parseInt(timestamp, 10) * 1000);
|
|
14930
|
+
const formatter = new Intl.DateTimeFormat(this.localeCode, {
|
|
14931
|
+
weekday: 'long',
|
|
14932
|
+
year: 'numeric',
|
|
14933
|
+
month: 'long',
|
|
14934
|
+
day: 'numeric'
|
|
14935
|
+
});
|
|
14936
|
+
return formatter.format(date);
|
|
14937
|
+
}
|
|
14938
|
+
|
|
13435
14939
|
firstUpdated() {
|
|
14940
|
+
|
|
13436
14941
|
this.addEventListener('date-from-changed', () => {
|
|
13437
14942
|
this.dispatchEvent(new CustomEvent('auroCalendar-dateSelected', {
|
|
13438
14943
|
bubbles: true,
|
|
@@ -13451,6 +14956,21 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13451
14956
|
composed: true,
|
|
13452
14957
|
}));
|
|
13453
14958
|
});
|
|
14959
|
+
|
|
14960
|
+
// Listen for cross-month boundary navigation events
|
|
14961
|
+
this.addEventListener('calendar-month-boundary', (event) => {
|
|
14962
|
+
this.handleMonthBoundary(event);
|
|
14963
|
+
});
|
|
14964
|
+
|
|
14965
|
+
// Listen for cell activation events
|
|
14966
|
+
this.addEventListener('calendar-cell-activate', (event) => {
|
|
14967
|
+
this.handleCellActivate(event);
|
|
14968
|
+
});
|
|
14969
|
+
|
|
14970
|
+
// Listen for cell focus events (SR announcements + range preview)
|
|
14971
|
+
this.addEventListener('calendar-cell-focused', (event) => {
|
|
14972
|
+
this.handleCellFocused(event);
|
|
14973
|
+
});
|
|
13454
14974
|
}
|
|
13455
14975
|
|
|
13456
14976
|
injectSlot(slotName, nodes) {
|
|
@@ -13475,7 +14995,37 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13475
14995
|
}
|
|
13476
14996
|
|
|
13477
14997
|
if (changedProperties.has('visible')) {
|
|
13478
|
-
|
|
14998
|
+
if (this.visible) {
|
|
14999
|
+
// Compute the active date eagerly from data — no DOM needed.
|
|
15000
|
+
if (this.activeCellDate == null) { // eslint-disable-line no-eq-null, eqeqeq
|
|
15001
|
+
this.activeCellDate = this.computeActiveDate();
|
|
15002
|
+
}
|
|
15003
|
+
|
|
15004
|
+
this.requestUpdate();
|
|
15005
|
+
} else {
|
|
15006
|
+
this.requestUpdate();
|
|
15007
|
+
}
|
|
15008
|
+
}
|
|
15009
|
+
|
|
15010
|
+
// Announce date selection to screen readers when user clicks/selects a cell
|
|
15011
|
+
const isCellClick = this.datepicker?.wasCellClick || this.datepicker?.cellClickActive;
|
|
15012
|
+
|
|
15013
|
+
if (changedProperties.has('dateFrom') && this.dateFrom && isCellClick) {
|
|
15014
|
+
const dateStr = this.formatAnnouncementDate(this.dateFrom);
|
|
15015
|
+
const isRange = !this.noRange;
|
|
15016
|
+
|
|
15017
|
+
if (isRange) {
|
|
15018
|
+
const rangeLabel = this.datepicker.rangeLabelStart || 'range start';
|
|
15019
|
+
this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
|
|
15020
|
+
} else {
|
|
15021
|
+
this.announceSelection(`${dateStr}, selected`);
|
|
15022
|
+
}
|
|
15023
|
+
}
|
|
15024
|
+
|
|
15025
|
+
if (changedProperties.has('dateTo') && this.dateTo && isCellClick) {
|
|
15026
|
+
const dateStr = this.formatAnnouncementDate(this.dateTo);
|
|
15027
|
+
const rangeLabel = this.datepicker.rangeLabelEnd || 'range end';
|
|
15028
|
+
this.announceSelection(`${dateStr}, selected as ${rangeLabel}`);
|
|
13479
15029
|
}
|
|
13480
15030
|
}
|
|
13481
15031
|
|
|
@@ -13484,6 +15034,7 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13484
15034
|
<${this.bibtemplateTag}
|
|
13485
15035
|
?large="${this.largeFullscreenHeadline}"
|
|
13486
15036
|
?isFullscreen="${this.isFullscreen}"
|
|
15037
|
+
?showFooter="${!this.isFullscreen && this.dropdown?.desktopModal}"
|
|
13487
15038
|
@close-click="${this.utilCal.requestDismiss}">
|
|
13488
15039
|
<span slot="ariaLabel.close">${this.slots["ariaLabel.bib.close"]}</span>
|
|
13489
15040
|
|
|
@@ -13501,24 +15052,26 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
13501
15052
|
</div>
|
|
13502
15053
|
</div>
|
|
13503
15054
|
|
|
13504
|
-
<div class="calendarWrapper">
|
|
13505
|
-
<div class="calendars">
|
|
13506
|
-
${this.renderAllCalendars()}
|
|
13507
|
-
</div>
|
|
15055
|
+
<div class="calendarWrapper ${!this.isFullscreen && this.dropdown?.desktopModal ? 'hasFooter' : ''}">
|
|
13508
15056
|
<div class="calendarNavButtons">
|
|
13509
15057
|
${this.showPrevMonthBtn ? u$a`
|
|
13510
|
-
<button tabIndex="
|
|
15058
|
+
<button tabIndex="0" class="calendarNavBtn prevMonth" aria-label="${this.datepicker?.navLabelPrevMonth || 'Previous month'}" @click="${this.handlePrevMonth}">
|
|
13511
15059
|
${this.util.generateIconHtml(chevronLeft)}
|
|
13512
15060
|
</button>
|
|
13513
15061
|
` : undefined}
|
|
13514
15062
|
${this.showNextMonthBtn ? u$a`
|
|
13515
|
-
<button tabIndex="
|
|
15063
|
+
<button tabIndex="0" class="calendarNavBtn nextMonth" aria-label="${this.datepicker?.navLabelNextMonth || 'Next month'}" @click="${this.handleNextMonth}">
|
|
13516
15064
|
${this.util.generateIconHtml(chevronRight)}
|
|
13517
15065
|
</button>
|
|
13518
15066
|
` : undefined}
|
|
13519
15067
|
</div>
|
|
15068
|
+
<div id="calendarGrid" class="calendars" role="group" tabindex="0" aria-label="${this.datepicker?.calendarGridLabel}" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}" @calendar-month-mouseleave="${this.clearRangePreview}">
|
|
15069
|
+
${this.renderAllCalendars()}
|
|
15070
|
+
</div>
|
|
13520
15071
|
</div>
|
|
13521
15072
|
|
|
15073
|
+
<div id="calendar-live-region" aria-live="assertive" aria-atomic="true" class="sr-only"></div>
|
|
15074
|
+
|
|
13522
15075
|
<${this.buttonTag} slot="footer" fluid @click="${this.utilCal.requestDismiss}">Done</${this.buttonTag}>
|
|
13523
15076
|
</${this.bibtemplateTag}>
|
|
13524
15077
|
`;
|
|
@@ -16790,7 +18343,7 @@ function applyKeyboardStrategy$1(component, strategy, options = {}) {
|
|
|
16790
18343
|
});
|
|
16791
18344
|
}
|
|
16792
18345
|
|
|
16793
|
-
var styleCss$2$1 = i$3`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host dialog{width:auto;max-width:none;height:auto;max-height:none;padding:0;border:none;margin:0;outline:none;transform:translateZ(0)}:host dialog::backdrop{background:transparent}:host(:not([isfullscreen])) dialog{position:relative;inset:unset}:host(:not([isfullscreen])) .container.shape-box{border-radius:unset}:host(:not([isfullscreen])) .container[class*=shape-pill],:host(:not([isfullscreen])) .container[class*=shape-snowflake]{border-radius:30px}:host(:not([isfullscreen])) .container[class*=shape-rounded]{border-radius:16px}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([isfullscreen]) .container::backdrop{background:var(--ds-color-background-primary, #fff)}:host(:popover-open){position:fixed;overflow:visible;padding:0;border:none;margin:0;background:transparent;inset:unset;outline:none}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}.container{display:inline-block;overflow:auto;box-sizing:border-box;border-radius:var(--ds-border-radius, 0.375rem);margin:var(--ds-size-50, 0.25rem) 0}.util_displayHiddenVisually{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip-path:inset(50%);white-space:nowrap}`;
|
|
18346
|
+
var styleCss$2$1 = i$3`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host dialog{width:auto;max-width:none;height:auto;max-height:none;padding:0;border:none;margin:0;outline:none;transform:translateZ(0)}:host dialog::backdrop{background:transparent}:host(:not([isfullscreen])) dialog{position:relative;inset:unset}:host(:not([isfullscreen])) .container.shape-box{border-radius:unset}:host(:not([isfullscreen])) .container[class*=shape-pill],:host(:not([isfullscreen])) .container[class*=shape-snowflake]{border-radius:30px}:host(:not([isfullscreen])) .container[class*=shape-rounded]{border-radius:16px}:host([desktopmodal]:popover-open)::backdrop{background:transparent}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([isfullscreen]) .container::backdrop{background:var(--ds-color-background-primary, #fff)}:host(:popover-open){position:fixed;overflow:visible;padding:0;border:none;margin:0;background:transparent;inset:unset;outline:none}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}.container{display:inline-block;overflow:auto;box-sizing:border-box;border-radius:var(--ds-border-radius, 0.375rem);margin:var(--ds-size-50, 0.25rem) 0}.util_displayHiddenVisually{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip-path:inset(50%);white-space:nowrap}`;
|
|
16794
18347
|
|
|
16795
18348
|
var colorCss$2 = i$3`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
|
|
16796
18349
|
|
|
@@ -17421,7 +18974,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
|
|
|
17421
18974
|
}
|
|
17422
18975
|
};
|
|
17423
18976
|
|
|
17424
|
-
var formkitVersion$1 = '
|
|
18977
|
+
var formkitVersion$1 = '202606181613';
|
|
17425
18978
|
|
|
17426
18979
|
let AuroElement$2 = class AuroElement extends i$1 {
|
|
17427
18980
|
static get properties() {
|
|
@@ -17601,6 +19154,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
17601
19154
|
_intializeDefaults() {
|
|
17602
19155
|
this.appearance = 'default';
|
|
17603
19156
|
this.chevron = false;
|
|
19157
|
+
this.desktopModal = false;
|
|
17604
19158
|
this.disabled = false;
|
|
17605
19159
|
this.disableKeyboardHandling = false;
|
|
17606
19160
|
this.error = false;
|
|
@@ -17781,6 +19335,14 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
17781
19335
|
reflect: true
|
|
17782
19336
|
},
|
|
17783
19337
|
|
|
19338
|
+
/**
|
|
19339
|
+
* If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
|
|
19340
|
+
*/
|
|
19341
|
+
desktopModal: {
|
|
19342
|
+
type: Boolean,
|
|
19343
|
+
reflect: true
|
|
19344
|
+
},
|
|
19345
|
+
|
|
17784
19346
|
/**
|
|
17785
19347
|
* If declared, the dropdown will only show by calling the API .show() public method.
|
|
17786
19348
|
*/
|
|
@@ -18068,6 +19630,15 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
18068
19630
|
|
|
18069
19631
|
disconnectedCallback() {
|
|
18070
19632
|
super.disconnectedCallback();
|
|
19633
|
+
this._clearPageInert();
|
|
19634
|
+
if (this._bibTabHandler) {
|
|
19635
|
+
this.removeEventListener('keydown', this._bibTabHandler);
|
|
19636
|
+
this._bibTabHandler = undefined;
|
|
19637
|
+
}
|
|
19638
|
+
if (this.focusTrap) {
|
|
19639
|
+
this.focusTrap.disconnect();
|
|
19640
|
+
this.focusTrap = undefined;
|
|
19641
|
+
}
|
|
18071
19642
|
if (this.floater) {
|
|
18072
19643
|
this.floater.hideBib('disconnect');
|
|
18073
19644
|
this.floater.disconnect();
|
|
@@ -18095,19 +19666,45 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
18095
19666
|
if (this.isPopoverVisible) {
|
|
18096
19667
|
// Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
|
|
18097
19668
|
// Desktop: use show() for Floating UI positioning + FocusTrap for focus management
|
|
18098
|
-
|
|
18099
|
-
this.
|
|
19669
|
+
this.bibElement.value.open(this.isBibFullscreen);
|
|
19670
|
+
this.updateFocusTrap();
|
|
19671
|
+
|
|
19672
|
+
// Desktop modal: make siblings inert so content outside is not interactive
|
|
19673
|
+
if (this.desktopModal && !this.isBibFullscreen) {
|
|
19674
|
+
this._setPageInert();
|
|
19675
|
+
}
|
|
18100
19676
|
} else {
|
|
18101
19677
|
this.bibElement.value.close();
|
|
19678
|
+
this._clearPageInert();
|
|
18102
19679
|
}
|
|
18103
19680
|
}
|
|
18104
19681
|
|
|
18105
19682
|
// When fullscreen strategy changes while open, re-open dialog with correct mode
|
|
18106
19683
|
// (e.g. resizing from desktop → mobile while dropdown is open)
|
|
18107
19684
|
if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
|
|
18108
|
-
const useModal = this.isBibFullscreen;
|
|
18109
19685
|
this.bibElement.value.close();
|
|
18110
|
-
this.bibElement.value.open(
|
|
19686
|
+
this.bibElement.value.open(this.isBibFullscreen);
|
|
19687
|
+
|
|
19688
|
+
// Re-initialize focus management for the new strategy
|
|
19689
|
+
this.updateFocusTrap();
|
|
19690
|
+
|
|
19691
|
+
// Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
|
|
19692
|
+
if (this.desktopModal && !this.isBibFullscreen) {
|
|
19693
|
+
this._setPageInert();
|
|
19694
|
+
} else {
|
|
19695
|
+
this._clearPageInert();
|
|
19696
|
+
}
|
|
19697
|
+
}
|
|
19698
|
+
|
|
19699
|
+
// Handle desktopModal toggled while the dropdown is already open.
|
|
19700
|
+
// Re-initialize focus trapping and page inert state to match the new mode.
|
|
19701
|
+
if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
|
|
19702
|
+
this.updateFocusTrap();
|
|
19703
|
+
if (this.desktopModal) {
|
|
19704
|
+
this._setPageInert();
|
|
19705
|
+
} else {
|
|
19706
|
+
this._clearPageInert();
|
|
19707
|
+
}
|
|
18111
19708
|
}
|
|
18112
19709
|
}
|
|
18113
19710
|
|
|
@@ -18117,8 +19714,14 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
18117
19714
|
* @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
|
|
18118
19715
|
*/
|
|
18119
19716
|
handleDropdownToggle(event) {
|
|
18120
|
-
this.updateFocusTrap();
|
|
18121
19717
|
this.isPopoverVisible = event.detail.expanded;
|
|
19718
|
+
|
|
19719
|
+
// Tear down FocusTrap when closing. Creation happens in updated()
|
|
19720
|
+
// after the dialog is open so getFocusableElements can find content.
|
|
19721
|
+
if (!this.isPopoverVisible) {
|
|
19722
|
+
this.updateFocusTrap();
|
|
19723
|
+
}
|
|
19724
|
+
|
|
18122
19725
|
const eventType = event.detail.eventType || "unknown";
|
|
18123
19726
|
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
|
|
18124
19727
|
this.trigger.focus();
|
|
@@ -18217,19 +19820,220 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
18217
19820
|
* @private
|
|
18218
19821
|
*/
|
|
18219
19822
|
updateFocusTrap() {
|
|
19823
|
+
// Always clean up existing handlers/traps before setting up new ones
|
|
19824
|
+
// to prevent duplicate listeners on repeated calls.
|
|
19825
|
+
if (this._bibTabHandler) {
|
|
19826
|
+
this.removeEventListener('keydown', this._bibTabHandler);
|
|
19827
|
+
this._bibTabHandler = undefined;
|
|
19828
|
+
}
|
|
19829
|
+
|
|
19830
|
+
if (this.focusTrap) {
|
|
19831
|
+
this.focusTrap.disconnect();
|
|
19832
|
+
this.focusTrap = undefined;
|
|
19833
|
+
}
|
|
19834
|
+
|
|
19835
|
+
// Restore the user-set noHideOnThisFocusLoss value, if we overrode it.
|
|
19836
|
+
if (this._noHideOverridden) {
|
|
19837
|
+
this.noHideOnThisFocusLoss = this._priorNoHide;
|
|
19838
|
+
this._noHideOverridden = false;
|
|
19839
|
+
this._priorNoHide = undefined;
|
|
19840
|
+
}
|
|
19841
|
+
|
|
18220
19842
|
if (this.isPopoverVisible) {
|
|
18221
19843
|
if (!this.isBibFullscreen) {
|
|
18222
|
-
|
|
18223
|
-
|
|
18224
|
-
|
|
19844
|
+
if (this.desktopModal) {
|
|
19845
|
+
// The floater's focus-loss check uses :focus-within, which does not
|
|
19846
|
+
// match the host when focus is on a slotted element projected through
|
|
19847
|
+
// multiple shadow roots. Without this override, focusing a button
|
|
19848
|
+
// inside the bib would be misread as focus leaving the dropdown and
|
|
19849
|
+
// close the bib immediately. desktopModal traps focus inside the
|
|
19850
|
+
// bib and inerts siblings, so suppressing focus-loss dismissal here
|
|
19851
|
+
// is safe — Escape and outside-click still close the bib.
|
|
19852
|
+
this._priorNoHide = this.noHideOnThisFocusLoss;
|
|
19853
|
+
this._noHideOverridden = true;
|
|
19854
|
+
this.noHideOnThisFocusLoss = true;
|
|
19855
|
+
|
|
19856
|
+
// Desktop modal: trap focus only within the bib content.
|
|
19857
|
+
// Can't use FocusTrap on the bib element because keydown events
|
|
19858
|
+
// from slotted content bubble through the dropdown host (light DOM),
|
|
19859
|
+
// not through the bib (shadow projection target). Using FocusTrap
|
|
19860
|
+
// on the dropdown would include the trigger in the tab cycle.
|
|
19861
|
+
// Instead, listen for Tab on the dropdown and manually wrap focus
|
|
19862
|
+
// within the bib's focusable elements.
|
|
19863
|
+
this._bibTabHandler = (event) => {
|
|
19864
|
+
if (event.key !== 'Tab') {
|
|
19865
|
+
return;
|
|
19866
|
+
}
|
|
19867
|
+
|
|
19868
|
+
// Collect focusable elements from the bib content.
|
|
19869
|
+
const focusables = getFocusableElements(this.bibContent);
|
|
19870
|
+
|
|
19871
|
+
// Fallback: try from slotted content directly
|
|
19872
|
+
if (!focusables.length) {
|
|
19873
|
+
const slot = this.shadowRoot.querySelector('.slotContent slot');
|
|
19874
|
+
const assignedNodes = slot.assignedNodes({ flatten: true });
|
|
19875
|
+
|
|
19876
|
+
for (const node of assignedNodes) {
|
|
19877
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
19878
|
+
focusables.push(...getFocusableElements(node));
|
|
19879
|
+
}
|
|
19880
|
+
}
|
|
19881
|
+
}
|
|
19882
|
+
|
|
19883
|
+
if (!focusables.length) {
|
|
19884
|
+
return;
|
|
19885
|
+
}
|
|
19886
|
+
|
|
19887
|
+
event.preventDefault();
|
|
19888
|
+
|
|
19889
|
+
const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
|
|
19890
|
+
|
|
19891
|
+
// Walk the active element chain through shadow roots
|
|
19892
|
+
const actives = this._getActiveElements();
|
|
19893
|
+
|
|
19894
|
+
let idx = focusables.findIndex((el) => actives.includes(el));
|
|
19895
|
+
|
|
19896
|
+
if (idx === -1) { // eslint-disable-line no-magic-numbers
|
|
19897
|
+
// Focus is not on a known element — move to first/last
|
|
19898
|
+
idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
|
|
19899
|
+
}
|
|
19900
|
+
|
|
19901
|
+
// Try each element in order, skipping any that can't receive focus
|
|
19902
|
+
// (e.g. hidden elements, elements in collapsed sections)
|
|
19903
|
+
for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
|
|
19904
|
+
let nextIdx = idx + direction;
|
|
19905
|
+
|
|
19906
|
+
// Wrap around
|
|
19907
|
+
if (nextIdx < 0) {
|
|
19908
|
+
nextIdx = focusables.length - 1;
|
|
19909
|
+
} else if (nextIdx >= focusables.length) {
|
|
19910
|
+
nextIdx = 0;
|
|
19911
|
+
}
|
|
19912
|
+
|
|
19913
|
+
focusables[nextIdx].focus();
|
|
19914
|
+
|
|
19915
|
+
// Verify focus actually moved to the target
|
|
19916
|
+
const newActives = this._getActiveElements();
|
|
19917
|
+
|
|
19918
|
+
if (newActives.includes(focusables[nextIdx])) {
|
|
19919
|
+
return;
|
|
19920
|
+
}
|
|
19921
|
+
|
|
19922
|
+
// Focus didn't stick — skip this element and try the next
|
|
19923
|
+
idx = nextIdx;
|
|
19924
|
+
}
|
|
19925
|
+
};
|
|
19926
|
+
this.addEventListener('keydown', this._bibTabHandler);
|
|
19927
|
+
|
|
19928
|
+
// Move initial focus into the bib content, matching FocusTrap behavior
|
|
19929
|
+
requestAnimationFrame(() => {
|
|
19930
|
+
const focusables = getFocusableElements(this.bibContent);
|
|
19931
|
+
if (focusables.length) {
|
|
19932
|
+
focusables[0].focus();
|
|
19933
|
+
}
|
|
19934
|
+
});
|
|
19935
|
+
} else {
|
|
19936
|
+
// Normal desktop: use FocusTrap on the bib element.
|
|
19937
|
+
// Defer focusFirstElement to the next frame because the popover
|
|
19938
|
+
// is positioned asynchronously by Floating UI — calling focus()
|
|
19939
|
+
// synchronously here would target elements with zero dimensions
|
|
19940
|
+
// and the focus call would be silently ignored.
|
|
19941
|
+
this.focusTrap = new FocusTrap(this.bibContent);
|
|
19942
|
+
requestAnimationFrame(() => {
|
|
19943
|
+
if (this.focusTrap) {
|
|
19944
|
+
this.focusTrap.focusFirstElement();
|
|
19945
|
+
}
|
|
19946
|
+
});
|
|
19947
|
+
}
|
|
18225
19948
|
}
|
|
18226
19949
|
// Fullscreen: showModal() provides native focus trapping
|
|
19950
|
+
}
|
|
19951
|
+
}
|
|
19952
|
+
|
|
19953
|
+
/**
|
|
19954
|
+
* Returns the chain of active (focused) elements through shadow roots.
|
|
19955
|
+
* @private
|
|
19956
|
+
* @returns {Array<HTMLElement>}
|
|
19957
|
+
*/
|
|
19958
|
+
_getActiveElements() {
|
|
19959
|
+
let { activeElement } = document;
|
|
19960
|
+
const actives = [activeElement];
|
|
19961
|
+
|
|
19962
|
+
while (activeElement?.shadowRoot?.activeElement) {
|
|
19963
|
+
activeElement = activeElement.shadowRoot.activeElement;
|
|
19964
|
+
actives.push(activeElement);
|
|
19965
|
+
}
|
|
19966
|
+
|
|
19967
|
+
return actives;
|
|
19968
|
+
}
|
|
19969
|
+
|
|
19970
|
+
/**
|
|
19971
|
+
* Sets `inert` on sibling elements of the dropdown's top-level host
|
|
19972
|
+
* so that content outside the dropdown is not interactive while the modal is open.
|
|
19973
|
+
* Walks up through shadow DOM boundaries to find the outermost host element
|
|
19974
|
+
* in the light DOM, then sets `inert` on siblings at each ancestor level
|
|
19975
|
+
* to ensure all page content outside the host subtree is inert.
|
|
19976
|
+
* @private
|
|
19977
|
+
*/
|
|
19978
|
+
_setPageInert() {
|
|
19979
|
+
if (this._inertSiblings) {
|
|
18227
19980
|
return;
|
|
18228
19981
|
}
|
|
18229
19982
|
|
|
18230
|
-
|
|
18231
|
-
|
|
18232
|
-
|
|
19983
|
+
this._inertSiblings = [];
|
|
19984
|
+
|
|
19985
|
+
// Walk up through shadow DOM boundaries to find the topmost host
|
|
19986
|
+
// element in the light DOM. For example, if this dropdown is inside
|
|
19987
|
+
// auro-datepicker's shadow DOM, we walk up to the datepicker element
|
|
19988
|
+
// so we set inert on its siblings — not on the datepicker itself.
|
|
19989
|
+
let host = this;
|
|
19990
|
+
while (host.getRootNode() instanceof ShadowRoot) {
|
|
19991
|
+
host = host.getRootNode().host;
|
|
19992
|
+
}
|
|
19993
|
+
|
|
19994
|
+
// Walk up the ancestor chain, inerting siblings at each level
|
|
19995
|
+
// to ensure the entire page outside the host subtree is inert.
|
|
19996
|
+
// Uses a reference counter (data-auro-inert-count) so multiple
|
|
19997
|
+
// simultaneous modal dropdowns share inert state safely.
|
|
19998
|
+
let current = host;
|
|
19999
|
+
while (current.parentElement) {
|
|
20000
|
+
const parent = current.parentElement;
|
|
20001
|
+
for (const sibling of parent.children) {
|
|
20002
|
+
if (sibling !== current) {
|
|
20003
|
+
const count = parseInt(sibling.dataset.auroInertCount || '0', 10);
|
|
20004
|
+
if (count === 0) {
|
|
20005
|
+
sibling.dataset.auroInertWas = sibling.inert ? 'true' : 'false';
|
|
20006
|
+
}
|
|
20007
|
+
sibling.dataset.auroInertCount = String(count + 1);
|
|
20008
|
+
sibling.inert = true;
|
|
20009
|
+
this._inertSiblings.push(sibling);
|
|
20010
|
+
}
|
|
20011
|
+
}
|
|
20012
|
+
current = parent;
|
|
20013
|
+
}
|
|
20014
|
+
}
|
|
20015
|
+
|
|
20016
|
+
/**
|
|
20017
|
+
* Restores `inert` state on siblings that were tracked by `_setPageInert`.
|
|
20018
|
+
* Uses reference counting so inert is only cleared when the last modal
|
|
20019
|
+
* dropdown releases a given element. Preserves the original inert state
|
|
20020
|
+
* so externally-inerted elements are not inadvertently re-enabled.
|
|
20021
|
+
* @private
|
|
20022
|
+
*/
|
|
20023
|
+
_clearPageInert() {
|
|
20024
|
+
if (this._inertSiblings) {
|
|
20025
|
+
for (const sibling of this._inertSiblings) {
|
|
20026
|
+
const count = parseInt(sibling.dataset.auroInertCount || '1', 10) - 1;
|
|
20027
|
+
if (count <= 0) {
|
|
20028
|
+
const wasInert = sibling.dataset.auroInertWas === 'true';
|
|
20029
|
+
delete sibling.dataset.auroInertCount;
|
|
20030
|
+
delete sibling.dataset.auroInertWas;
|
|
20031
|
+
sibling.inert = wasInert;
|
|
20032
|
+
} else {
|
|
20033
|
+
sibling.dataset.auroInertCount = String(count);
|
|
20034
|
+
}
|
|
20035
|
+
}
|
|
20036
|
+
this._inertSiblings = undefined;
|
|
18233
20037
|
}
|
|
18234
20038
|
}
|
|
18235
20039
|
|
|
@@ -18468,6 +20272,7 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
18468
20272
|
shape="${this.shape}"
|
|
18469
20273
|
?data-show="${this.isPopoverVisible}"
|
|
18470
20274
|
?isfullscreen="${this.isBibFullscreen}"
|
|
20275
|
+
?desktopmodal="${this.desktopModal}"
|
|
18471
20276
|
.dialogLabel="${this.bibDialogLabel}"
|
|
18472
20277
|
${n(this.bibElement)}
|
|
18473
20278
|
>
|
|
@@ -23049,7 +24854,7 @@ class AuroFormValidation {
|
|
|
23049
24854
|
} else if (this.runtimeUtils.elementMatch(elem, 'auro-input') && elem.errorMessage === '') {
|
|
23050
24855
|
const input = elem.renderRoot.querySelector('input');
|
|
23051
24856
|
|
|
23052
|
-
if (input.validationMessage.length > 0) {
|
|
24857
|
+
if (input && input.validationMessage.length > 0) {
|
|
23053
24858
|
elem.errorMessage = input.validationMessage;
|
|
23054
24859
|
}
|
|
23055
24860
|
} else if (this.runtimeUtils.elementMatch(elem, 'auro-combobox') && elem.errorMessage === '') {
|
|
@@ -28721,7 +30526,11 @@ class AuroInputUtilities {
|
|
|
28721
30526
|
return part.value;
|
|
28722
30527
|
}
|
|
28723
30528
|
})
|
|
28724
|
-
.join("")
|
|
30529
|
+
.join("")
|
|
30530
|
+
// Remove whitespace and leading/trailing special characters for IMask compatibility
|
|
30531
|
+
// for example, ko-KR's format is `YYYY. MM. DD.` which causes issues with IMask if we don't remove the trailing period.
|
|
30532
|
+
.replace(/\s/gu, '')
|
|
30533
|
+
.replace(/^[^A-Z0-9]+|[^A-Z0-9]+$/gu, '');
|
|
28725
30534
|
}
|
|
28726
30535
|
|
|
28727
30536
|
/**
|
|
@@ -28877,27 +30686,16 @@ class AuroInputUtilities {
|
|
|
28877
30686
|
* Converts a model value to a display value for the input element.
|
|
28878
30687
|
* For full date formats, converts an ISO model value to the configured display format.
|
|
28879
30688
|
* @private
|
|
28880
|
-
* @param {string} value - The model value (ISO string for date types).
|
|
28881
30689
|
* @param {Date|undefined} valueObject - Date object representation of value.
|
|
28882
30690
|
* @param {string} format - The date format string.
|
|
28883
|
-
* @returns {string}
|
|
30691
|
+
* @returns {string | undefined}
|
|
28884
30692
|
*/
|
|
28885
|
-
toFormattedValue(
|
|
28886
|
-
if (!this.isFullDateFormat('date', format) || !value) {
|
|
28887
|
-
return value;
|
|
28888
|
-
}
|
|
28889
|
-
|
|
28890
|
-
if (!dateFormatter.isValidDate(value)) {
|
|
28891
|
-
// For ISO-pattern strings that fail range validation (e.g. '2024-99-99'),
|
|
28892
|
-
// return '' so inputElement stays empty and format-based validation is not triggered.
|
|
28893
|
-
return (/^\d{4}-\d{2}-\d{2}$/u).test(value) ? '' : value;
|
|
28894
|
-
}
|
|
28895
|
-
|
|
30693
|
+
toFormattedValue(valueObject, format) {
|
|
28896
30694
|
const normalizedFormat = format.toLowerCase();
|
|
28897
30695
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
28898
30696
|
|
|
28899
30697
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
28900
|
-
return
|
|
30698
|
+
return undefined;
|
|
28901
30699
|
}
|
|
28902
30700
|
|
|
28903
30701
|
return maskOptions.format(valueObject);
|
|
@@ -29599,7 +31397,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
29599
31397
|
* @returns {Date|undefined}
|
|
29600
31398
|
*/
|
|
29601
31399
|
get valueObject() {
|
|
29602
|
-
return this._valueObject;
|
|
31400
|
+
return this._valueObject || this._computeDateObjectFallback(this.value);
|
|
29603
31401
|
}
|
|
29604
31402
|
|
|
29605
31403
|
/**
|
|
@@ -29607,7 +31405,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
29607
31405
|
* @returns {Date|undefined}
|
|
29608
31406
|
*/
|
|
29609
31407
|
get minObject() {
|
|
29610
|
-
return this._minObject;
|
|
31408
|
+
return this._minObject || this._computeDateObjectFallback(this.min);
|
|
29611
31409
|
}
|
|
29612
31410
|
|
|
29613
31411
|
/**
|
|
@@ -29615,7 +31413,31 @@ class BaseInput extends AuroElement$1 {
|
|
|
29615
31413
|
* @returns {Date|undefined}
|
|
29616
31414
|
*/
|
|
29617
31415
|
get maxObject() {
|
|
29618
|
-
return this._maxObject;
|
|
31416
|
+
return this._maxObject || this._computeDateObjectFallback(this.max);
|
|
31417
|
+
}
|
|
31418
|
+
|
|
31419
|
+
/**
|
|
31420
|
+
* Parses a date string into a Date object when the corresponding `_*Object`
|
|
31421
|
+
* field hasn't been synced yet by `updated()`. Returns undefined when the
|
|
31422
|
+
* input type/format isn't a full date or the string is not a valid date.
|
|
31423
|
+
*
|
|
31424
|
+
* Why this exists: a parent (datepicker) can call `inputN.validate()` from
|
|
31425
|
+
* inside its own `updated()` before this input's `updated()` has run
|
|
31426
|
+
* `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
|
|
31427
|
+
* and range checks would otherwise silently no-op (flipping the result to
|
|
31428
|
+
* `valid` or `patternMismatch`).
|
|
31429
|
+
* @private
|
|
31430
|
+
* @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
|
|
31431
|
+
* @returns {Date|undefined}
|
|
31432
|
+
*/
|
|
31433
|
+
_computeDateObjectFallback(dateStr) {
|
|
31434
|
+
if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
|
|
31435
|
+
return undefined;
|
|
31436
|
+
}
|
|
31437
|
+
if (!dateFormatter.isValidDate(dateStr)) {
|
|
31438
|
+
return undefined;
|
|
31439
|
+
}
|
|
31440
|
+
return dateFormatter.stringToDateInstance(dateStr);
|
|
29619
31441
|
}
|
|
29620
31442
|
|
|
29621
31443
|
/**
|
|
@@ -29640,8 +31462,30 @@ class BaseInput extends AuroElement$1 {
|
|
|
29640
31462
|
connectedCallback() {
|
|
29641
31463
|
super.connectedCallback();
|
|
29642
31464
|
|
|
31465
|
+
// Mark for query selectors when registered under a versioned tag (e.g. inside
|
|
31466
|
+
// a datepicker/combobox). Must run before parent components call validate() on
|
|
31467
|
+
// their inner inputs — the validation framework matches via tag-or-attribute,
|
|
31468
|
+
// and parents trigger validation during their own updated() cycle, which can
|
|
31469
|
+
// precede this input's firstUpdated().
|
|
31470
|
+
if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
|
|
31471
|
+
this.setAttribute('auro-input', '');
|
|
31472
|
+
}
|
|
31473
|
+
|
|
29643
31474
|
this.locale = this.domHandler.getLocale(this);
|
|
29644
31475
|
notifyOnLangChange(this);
|
|
31476
|
+
|
|
31477
|
+
// Pre-compute lengthForType and date-object fields so a parent (e.g. datepicker)
|
|
31478
|
+
// calling our validate() synchronously during its own updated() cycle sees
|
|
31479
|
+
// populated values. Without this, range validation silently no-ops because
|
|
31480
|
+
// `max.length === lengthForType` fails when lengthForType is still undefined.
|
|
31481
|
+
// Rebuild util here (constructor seeded with en-US default) so configureDataForType's
|
|
31482
|
+
// locale-derived format lookup uses the actual locale just resolved above.
|
|
31483
|
+
this.util = new AuroInputUtilities({
|
|
31484
|
+
locale: this.locale,
|
|
31485
|
+
format: this.format
|
|
31486
|
+
});
|
|
31487
|
+
this.configureDataForType();
|
|
31488
|
+
this.syncDateValues();
|
|
29645
31489
|
}
|
|
29646
31490
|
|
|
29647
31491
|
disconnectedCallback() {
|
|
@@ -29662,8 +31506,8 @@ class BaseInput extends AuroElement$1 {
|
|
|
29662
31506
|
}
|
|
29663
31507
|
|
|
29664
31508
|
// add attribute for query selectors when auro-input is registered under a custom name
|
|
29665
|
-
if (this.tagName.toLowerCase() !== 'auro-input') {
|
|
29666
|
-
this.setAttribute('auro-input',
|
|
31509
|
+
if (this.tagName.toLowerCase() !== 'auro-input' && !this.hasAttribute('auro-input')) {
|
|
31510
|
+
this.setAttribute('auro-input', '');
|
|
29667
31511
|
}
|
|
29668
31512
|
this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
|
|
29669
31513
|
|
|
@@ -29711,6 +31555,12 @@ class BaseInput extends AuroElement$1 {
|
|
|
29711
31555
|
return;
|
|
29712
31556
|
}
|
|
29713
31557
|
|
|
31558
|
+
// While configureAutoFormatting is running, imask's internal updateControl
|
|
31559
|
+
// writes el.value to align display with the masked value. A synthetic input
|
|
31560
|
+
// event from that write would re-enter handleInput → processCreditCard mid-setup
|
|
31561
|
+
// and clobber a Lit value that was just pushed by the parent combobox.
|
|
31562
|
+
if (component._configuringMask) return;
|
|
31563
|
+
|
|
29714
31564
|
// If all guard clauses are passed, dispatch the event
|
|
29715
31565
|
const inputEvent = new InputEvent('input', {
|
|
29716
31566
|
bubbles: true,
|
|
@@ -29815,11 +31665,30 @@ class BaseInput extends AuroElement$1 {
|
|
|
29815
31665
|
this.hasValue = false;
|
|
29816
31666
|
}
|
|
29817
31667
|
|
|
29818
|
-
|
|
31668
|
+
let formattedValue = this.value;
|
|
31669
|
+
if (this.type === 'date') {
|
|
31670
|
+
const formattedDate = this.util.toFormattedValue(this.valueObject, this.format);
|
|
31671
|
+
if (!formattedDate) {
|
|
31672
|
+
// if user entered unrecognized date format that cannot be parsed into a Date object,
|
|
31673
|
+
// keep the raw value in the input so they can edit it instead of overwriting with an empty string
|
|
31674
|
+
formattedValue = this.value;
|
|
31675
|
+
} else {
|
|
31676
|
+
formattedValue = formattedDate;
|
|
31677
|
+
}
|
|
31678
|
+
}
|
|
29819
31679
|
|
|
29820
31680
|
if (formattedValue !== this.inputElement.value) {
|
|
29821
31681
|
this.skipNextProgrammaticInputEvent = true;
|
|
29822
|
-
if (
|
|
31682
|
+
if (this.maskInstance && this.type === 'credit-card') {
|
|
31683
|
+
// Route through the mask so its _value and el.value stay in lock-step
|
|
31684
|
+
// (set value calls updateControl which writes el.value = displayValue).
|
|
31685
|
+
// Writing el.value directly leaves the mask thinking displayValue is
|
|
31686
|
+
// stale; _saveSelection on the next focus/click then warns. Scoped to
|
|
31687
|
+
// credit-card so date's own formattedValue (raw ISO when calendar-invalid)
|
|
31688
|
+
// isn't re-masked through the mm/dd/yyyy mask, which would truncate it
|
|
31689
|
+
// and flip validity from patternMismatch to tooShort.
|
|
31690
|
+
this.maskInstance.value = formattedValue || '';
|
|
31691
|
+
} else if (formattedValue) {
|
|
29823
31692
|
this.inputElement.value = formattedValue;
|
|
29824
31693
|
} else {
|
|
29825
31694
|
this.inputElement.value = '';
|
|
@@ -29928,58 +31797,73 @@ class BaseInput extends AuroElement$1 {
|
|
|
29928
31797
|
* @returns {void}
|
|
29929
31798
|
*/
|
|
29930
31799
|
configureAutoFormatting() {
|
|
29931
|
-
|
|
29932
|
-
|
|
29933
|
-
|
|
31800
|
+
// Re-entrancy guard. The patched-setter's synthetic input event (suppressed
|
|
31801
|
+
// by _configuringMask above) could otherwise trigger handleInput →
|
|
31802
|
+
// processCreditCard → configureAutoFormatting before the outer call's
|
|
31803
|
+
// set value has finished its alignCursor pass.
|
|
31804
|
+
if (this._configuringMask) return;
|
|
31805
|
+
this._configuringMask = true;
|
|
31806
|
+
try {
|
|
31807
|
+
if (this.maskInstance) {
|
|
31808
|
+
this.maskInstance.destroy();
|
|
31809
|
+
}
|
|
29934
31810
|
|
|
29935
|
-
|
|
29936
|
-
|
|
31811
|
+
// Pass new format to util
|
|
31812
|
+
this.util.updateFormat(this.format);
|
|
29937
31813
|
|
|
29938
|
-
|
|
31814
|
+
const maskOptions = this.util.getMaskOptions(this.type, this.format);
|
|
29939
31815
|
|
|
29940
|
-
|
|
31816
|
+
if (this.inputElement && maskOptions.mask) {
|
|
29941
31817
|
|
|
29942
|
-
|
|
29943
|
-
|
|
29944
|
-
|
|
29945
|
-
|
|
29946
|
-
|
|
29947
|
-
|
|
29948
|
-
|
|
29949
|
-
|
|
29950
|
-
|
|
29951
|
-
|
|
29952
|
-
|
|
29953
|
-
|
|
29954
|
-
|
|
29955
|
-
|
|
29956
|
-
|
|
29957
|
-
|
|
29958
|
-
|
|
29959
|
-
|
|
29960
|
-
this.skipNextProgrammaticInputEvent = true;
|
|
29961
|
-
this.inputElement.value = '';
|
|
31818
|
+
// Stash and clear any existing value before IMask init.
|
|
31819
|
+
// IMask's constructor processes the current input value which requires
|
|
31820
|
+
// selection state — clearing first avoids that scenario entirely.
|
|
31821
|
+
// When the format changes (e.g. locale switch) and we have a valid ISO
|
|
31822
|
+
// model value, compute the display string for the NEW format instead of
|
|
31823
|
+
// re-using the old display string, which may be invalid in the new mask.
|
|
31824
|
+
let existingValue = this.inputElement.value;
|
|
31825
|
+
if (
|
|
31826
|
+
this.util.isFullDateFormat(this.type, this.format) &&
|
|
31827
|
+
this.value &&
|
|
31828
|
+
dateFormatter.isValidDate(this.value) &&
|
|
31829
|
+
this.valueObject instanceof Date &&
|
|
31830
|
+
!Number.isNaN(this.valueObject.getTime()) &&
|
|
31831
|
+
typeof maskOptions.format === 'function'
|
|
31832
|
+
) {
|
|
31833
|
+
existingValue = maskOptions.format(this.valueObject);
|
|
31834
|
+
}
|
|
29962
31835
|
|
|
29963
|
-
|
|
31836
|
+
this.skipNextProgrammaticInputEvent = true;
|
|
31837
|
+
this.inputElement.value = '';
|
|
31838
|
+
|
|
31839
|
+
this.maskInstance = IMask(this.inputElement, maskOptions);
|
|
31840
|
+
|
|
31841
|
+
this.maskInstance.on('accept', () => {
|
|
31842
|
+
// Suppress propagation during configureAutoFormatting's own value-restoration
|
|
31843
|
+
// (line below) — the mask emits 'accept' on every value-set, including ours,
|
|
31844
|
+
// and we don't want to overwrite a value the parent just pushed.
|
|
31845
|
+
if (this._configuringMask) return;
|
|
31846
|
+
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
31847
|
+
if (this.type === "date") {
|
|
31848
|
+
this._rawMaskValue = this.maskInstance.value;
|
|
31849
|
+
}
|
|
31850
|
+
});
|
|
29964
31851
|
|
|
29965
|
-
|
|
29966
|
-
|
|
29967
|
-
|
|
29968
|
-
this.
|
|
29969
|
-
|
|
29970
|
-
|
|
31852
|
+
this.maskInstance.on('complete', () => {
|
|
31853
|
+
if (this._configuringMask) return;
|
|
31854
|
+
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
31855
|
+
if (this.type === "date") {
|
|
31856
|
+
this._rawMaskValue = this.maskInstance.value;
|
|
31857
|
+
}
|
|
31858
|
+
});
|
|
29971
31859
|
|
|
29972
|
-
|
|
29973
|
-
|
|
29974
|
-
|
|
29975
|
-
this._rawMaskValue = this.maskInstance.value;
|
|
31860
|
+
// Restore the stashed value through IMask so it's properly masked
|
|
31861
|
+
if (existingValue) {
|
|
31862
|
+
this.maskInstance.value = existingValue;
|
|
29976
31863
|
}
|
|
29977
|
-
});
|
|
29978
|
-
|
|
29979
|
-
// Restore the stashed value through IMask so it's properly masked
|
|
29980
|
-
if (existingValue) {
|
|
29981
|
-
this.maskInstance.value = existingValue;
|
|
29982
31864
|
}
|
|
31865
|
+
} finally {
|
|
31866
|
+
this._configuringMask = false;
|
|
29983
31867
|
}
|
|
29984
31868
|
}
|
|
29985
31869
|
|
|
@@ -30266,10 +32150,10 @@ class BaseInput extends AuroElement$1 {
|
|
|
30266
32150
|
},
|
|
30267
32151
|
{
|
|
30268
32152
|
name: 'Diners club',
|
|
30269
|
-
regex: /^(?<num>36|38)\d{0}/u,
|
|
32153
|
+
regex: /^(?<num>30[0-5]|36|38)\d{0}/u,
|
|
30270
32154
|
formatLength: 16,
|
|
30271
32155
|
errorMessage: CreditCardValidationMessage,
|
|
30272
|
-
cardIcon: '
|
|
32156
|
+
cardIcon: 'cc-dinersclub',
|
|
30273
32157
|
maskFormat: "0000 000000 0000"
|
|
30274
32158
|
},
|
|
30275
32159
|
{
|
|
@@ -30679,7 +32563,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
|
|
|
30679
32563
|
}
|
|
30680
32564
|
};
|
|
30681
32565
|
|
|
30682
|
-
var formkitVersion = '
|
|
32566
|
+
var formkitVersion = '202606181613';
|
|
30683
32567
|
|
|
30684
32568
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
30685
32569
|
// See LICENSE in the project root for license information.
|
|
@@ -31017,10 +32901,6 @@ class AuroInput extends BaseInput {
|
|
|
31017
32901
|
return i18n$1(this.lang, this.type);
|
|
31018
32902
|
}
|
|
31019
32903
|
|
|
31020
|
-
if (this.type === 'date') {
|
|
31021
|
-
return i18n$1(this.lang, this.dateFormatMap[this.format] || 'dateMMDDYYYY');
|
|
31022
|
-
}
|
|
31023
|
-
|
|
31024
32904
|
return '';
|
|
31025
32905
|
}
|
|
31026
32906
|
|
|
@@ -32024,26 +33904,62 @@ function applyKeyboardStrategy(component, strategy, options = {}) {
|
|
|
32024
33904
|
// components/datepicker/docs/partials/keyboardBehavior.md
|
|
32025
33905
|
//
|
|
32026
33906
|
// Current behavior (transitional — full bib keyboard navigation is planned for a future iteration):
|
|
32027
|
-
// - The bib opens and closes via pointer/touch interaction only.
|
|
32028
33907
|
// - Escape closes the bib and prevents the event from reaching parent containers.
|
|
33908
|
+
// - Enter opens the bib when it is closed (trigger input only, not clear button).
|
|
33909
|
+
// - Space opens the bib when it is closed (trigger input only, not clear button).
|
|
32029
33910
|
// - Tab uses the browser's default tabindex sequence across trigger controls.
|
|
32030
|
-
// - Enter and Space do not open or close the bib.
|
|
32031
33911
|
//
|
|
32032
33912
|
// This file is an intentional placeholder for most keys. When datepicker bib keyboard navigation is
|
|
32033
33913
|
// added, handlers should go here following the same strategy pattern used by
|
|
32034
33914
|
// auro-select (selectKeyboardStrategy.js) and auro-combobox (comboboxKeyboardStrategy.js).
|
|
32035
33915
|
const datepickerKeyboardStrategy = {
|
|
32036
|
-
Escape(component, evt) {
|
|
32037
|
-
if (!
|
|
33916
|
+
Escape(component, evt, ctx) {
|
|
33917
|
+
if (!ctx.isExpanded) {
|
|
32038
33918
|
return;
|
|
32039
33919
|
}
|
|
32040
33920
|
|
|
32041
|
-
//
|
|
32042
|
-
//
|
|
32043
|
-
// seeing this event, we must also close the dropdown explicitly.
|
|
33921
|
+
// Stop propagation so parent containers (auro-dialog, auro-drawer)
|
|
33922
|
+
// don't also react to Escape.
|
|
32044
33923
|
evt.stopPropagation();
|
|
33924
|
+
evt.preventDefault();
|
|
33925
|
+
|
|
33926
|
+
component.hideBib();
|
|
33927
|
+
},
|
|
33928
|
+
|
|
33929
|
+
Enter(component, evt, ctx) {
|
|
33930
|
+
if (ctx.isExpanded) {
|
|
33931
|
+
return;
|
|
33932
|
+
}
|
|
32045
33933
|
|
|
32046
|
-
|
|
33934
|
+
// Only open from the trigger input, not the clear button or other internal elements.
|
|
33935
|
+
// evt.target is retargeted to the host in shadow DOM, so use composedPath()
|
|
33936
|
+
// to find the real origin. The clear button is rendered with class "clearBtn".
|
|
33937
|
+
const path = evt.composedPath();
|
|
33938
|
+
if (path.some(el => el.classList?.contains('clearBtn'))) {
|
|
33939
|
+
return;
|
|
33940
|
+
}
|
|
33941
|
+
|
|
33942
|
+
evt.preventDefault();
|
|
33943
|
+
|
|
33944
|
+
component.dropdown.show();
|
|
33945
|
+
},
|
|
33946
|
+
|
|
33947
|
+
' '(component, evt, ctx) {
|
|
33948
|
+
if (ctx.isExpanded) {
|
|
33949
|
+
return;
|
|
33950
|
+
}
|
|
33951
|
+
|
|
33952
|
+
// Only open from the trigger input, not the clear button or other internal elements.
|
|
33953
|
+
// evt.target is retargeted to the host in shadow DOM, so use composedPath()
|
|
33954
|
+
// to find the real origin. The clear button is rendered with class "clearBtn".
|
|
33955
|
+
const path = evt.composedPath();
|
|
33956
|
+
if (path.some(el => el.classList?.contains('clearBtn'))) {
|
|
33957
|
+
return;
|
|
33958
|
+
}
|
|
33959
|
+
|
|
33960
|
+
evt.preventDefault();
|
|
33961
|
+
|
|
33962
|
+
component.dropdown.show();
|
|
32047
33963
|
},
|
|
32048
33964
|
};
|
|
32049
33965
|
|
|
@@ -32067,8 +33983,8 @@ const datepickerKeyboardStrategy = {
|
|
|
32067
33983
|
* @slot label - Defines the label content for the entire datepicker when `layout="snowflake"`.
|
|
32068
33984
|
* @slot toLabel - Defines the label content for the second input when the `range` attribute is used.
|
|
32069
33985
|
* @slot fromLabel - Defines the label content for the first input.
|
|
32070
|
-
* @slot
|
|
32071
|
-
* @slot
|
|
33986
|
+
* @slot date_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell for the specified date. The content text is colored using the success state token when the `highlight` attribute is applied to the slot.
|
|
33987
|
+
* @slot popover_YYYY_MM_DD - Defines the content to display in the auro-calendar-cell popover for the specified date.
|
|
32072
33988
|
* @csspart dropdown - Use for customizing the style of the dropdown.
|
|
32073
33989
|
* @csspart trigger - Use for customizing the style of the datepicker trigger.
|
|
32074
33990
|
* @csspart input - Use for customizing the style of the datepicker inputs.
|
|
@@ -32117,6 +34033,16 @@ class AuroDatePicker extends AuroElement {
|
|
|
32117
34033
|
this.required = false;
|
|
32118
34034
|
this.onDark = false;
|
|
32119
34035
|
this.range = false;
|
|
34036
|
+
this.rangeLabelStart = 'range start';
|
|
34037
|
+
this.rangeLabelEnd = 'range end';
|
|
34038
|
+
this.rangeLabelBeforeRange = 'before range';
|
|
34039
|
+
this.rangeLabelInRange = 'in range';
|
|
34040
|
+
this.rangeLabelAfterRange = 'after range';
|
|
34041
|
+
this.blackoutDates = [];
|
|
34042
|
+
this.blackoutLabel = 'unavailable';
|
|
34043
|
+
this.navLabelPrevMonth = 'Previous month';
|
|
34044
|
+
this.navLabelNextMonth = 'Next month';
|
|
34045
|
+
this.calendarGridLabel = 'Calendar days of the month';
|
|
32120
34046
|
this.stacked = false;
|
|
32121
34047
|
this.noValidate = false;
|
|
32122
34048
|
this.validity = undefined;
|
|
@@ -32126,6 +34052,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
32126
34052
|
this.calendarEndDate = undefined;
|
|
32127
34053
|
this.calendarFocusDate = this.value;
|
|
32128
34054
|
this.fullscreenBreakpoint = 'sm';
|
|
34055
|
+
this._validLocale = 'en-US';
|
|
32129
34056
|
// floaterConfig
|
|
32130
34057
|
this.placement = 'bottom-start';
|
|
32131
34058
|
this.offset = 0;
|
|
@@ -32231,7 +34158,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
32231
34158
|
|
|
32232
34159
|
/**
|
|
32233
34160
|
* Defines whether the component will be on lighter or darker backgrounds.
|
|
32234
|
-
* @
|
|
34161
|
+
* @type {'default' | 'inverse'}
|
|
32235
34162
|
* @default 'default'
|
|
32236
34163
|
*/
|
|
32237
34164
|
appearance: {
|
|
@@ -32248,6 +34175,22 @@ class AuroDatePicker extends AuroElement {
|
|
|
32248
34175
|
reflect: true
|
|
32249
34176
|
},
|
|
32250
34177
|
|
|
34178
|
+
/**
|
|
34179
|
+
* Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
|
|
34180
|
+
*/
|
|
34181
|
+
blackoutDates: {
|
|
34182
|
+
type: Array,
|
|
34183
|
+
reflect: true
|
|
34184
|
+
},
|
|
34185
|
+
|
|
34186
|
+
/**
|
|
34187
|
+
* Label announced for blackout (disabled but in-range) date cells.
|
|
34188
|
+
*/
|
|
34189
|
+
blackoutLabel: {
|
|
34190
|
+
type: String,
|
|
34191
|
+
reflect: true
|
|
34192
|
+
},
|
|
34193
|
+
|
|
32251
34194
|
/**
|
|
32252
34195
|
* The last date that may be displayed in the calendar.
|
|
32253
34196
|
*/
|
|
@@ -32256,6 +34199,14 @@ class AuroDatePicker extends AuroElement {
|
|
|
32256
34199
|
reflect: true
|
|
32257
34200
|
},
|
|
32258
34201
|
|
|
34202
|
+
/**
|
|
34203
|
+
* Accessible label for the calendar grid containing the days of the month.
|
|
34204
|
+
*/
|
|
34205
|
+
calendarGridLabel: {
|
|
34206
|
+
type: String,
|
|
34207
|
+
reflect: true
|
|
34208
|
+
},
|
|
34209
|
+
|
|
32259
34210
|
/**
|
|
32260
34211
|
* The date that will first be visually rendered to the user in the calendar.
|
|
32261
34212
|
*/
|
|
@@ -32303,27 +34254,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
32303
34254
|
reflect: true
|
|
32304
34255
|
},
|
|
32305
34256
|
|
|
32306
|
-
hasFocus: {
|
|
32307
|
-
type: Boolean,
|
|
32308
|
-
reflect: false,
|
|
32309
|
-
},
|
|
32310
|
-
|
|
32311
|
-
/**
|
|
32312
|
-
* @private
|
|
32313
|
-
*/
|
|
32314
|
-
hasValue: {
|
|
32315
|
-
type: Boolean,
|
|
32316
|
-
reflect: false,
|
|
32317
|
-
},
|
|
32318
|
-
|
|
32319
|
-
/**
|
|
32320
|
-
* @private
|
|
32321
|
-
*/
|
|
32322
|
-
hasAllValues: {
|
|
32323
|
-
type: Boolean,
|
|
32324
|
-
reflect: false
|
|
32325
|
-
},
|
|
32326
|
-
|
|
32327
34257
|
/**
|
|
32328
34258
|
* Specifies the date format. The default is `mm/dd/yyyy`.
|
|
32329
34259
|
*/
|
|
@@ -32353,6 +34283,27 @@ class AuroDatePicker extends AuroElement {
|
|
|
32353
34283
|
reflect: true
|
|
32354
34284
|
},
|
|
32355
34285
|
|
|
34286
|
+
/**
|
|
34287
|
+
* @private
|
|
34288
|
+
*/
|
|
34289
|
+
hasAllValues: {
|
|
34290
|
+
type: Boolean,
|
|
34291
|
+
reflect: false
|
|
34292
|
+
},
|
|
34293
|
+
|
|
34294
|
+
hasFocus: {
|
|
34295
|
+
type: Boolean,
|
|
34296
|
+
reflect: false,
|
|
34297
|
+
},
|
|
34298
|
+
|
|
34299
|
+
/**
|
|
34300
|
+
* @private
|
|
34301
|
+
*/
|
|
34302
|
+
hasValue: {
|
|
34303
|
+
type: Boolean,
|
|
34304
|
+
reflect: false,
|
|
34305
|
+
},
|
|
34306
|
+
|
|
32356
34307
|
/** Exposes inputmode attribute for input. */
|
|
32357
34308
|
inputmode: {
|
|
32358
34309
|
type: String,
|
|
@@ -32395,6 +34346,13 @@ class AuroDatePicker extends AuroElement {
|
|
|
32395
34346
|
reflect: true
|
|
32396
34347
|
},
|
|
32397
34348
|
|
|
34349
|
+
/**
|
|
34350
|
+
* @private
|
|
34351
|
+
*/
|
|
34352
|
+
monthFirst: {
|
|
34353
|
+
type: Boolean
|
|
34354
|
+
},
|
|
34355
|
+
|
|
32398
34356
|
/**
|
|
32399
34357
|
* Names of all 12 months to render in the calendar.
|
|
32400
34358
|
* When omitted, month names will be automatically populated from the active `locale` (falling back to `en-US`).
|
|
@@ -32404,18 +34362,26 @@ class AuroDatePicker extends AuroElement {
|
|
|
32404
34362
|
},
|
|
32405
34363
|
|
|
32406
34364
|
/**
|
|
32407
|
-
*
|
|
32408
|
-
* when there isn't enough space in the specified `placement`.
|
|
34365
|
+
* Accessible label for the next month navigation button.
|
|
32409
34366
|
*/
|
|
32410
|
-
|
|
32411
|
-
type:
|
|
34367
|
+
navLabelNextMonth: {
|
|
34368
|
+
type: String,
|
|
32412
34369
|
reflect: true
|
|
32413
34370
|
},
|
|
32414
34371
|
|
|
32415
34372
|
/**
|
|
32416
|
-
*
|
|
34373
|
+
* Accessible label for the previous month navigation button.
|
|
32417
34374
|
*/
|
|
32418
|
-
|
|
34375
|
+
navLabelPrevMonth: {
|
|
34376
|
+
type: String,
|
|
34377
|
+
reflect: true
|
|
34378
|
+
},
|
|
34379
|
+
|
|
34380
|
+
/**
|
|
34381
|
+
* If declared, the bib will NOT flip to an alternate position
|
|
34382
|
+
* when there isn't enough space in the specified `placement`.
|
|
34383
|
+
*/
|
|
34384
|
+
noFlip: {
|
|
32419
34385
|
type: Boolean,
|
|
32420
34386
|
reflect: true
|
|
32421
34387
|
},
|
|
@@ -32481,6 +34447,46 @@ class AuroDatePicker extends AuroElement {
|
|
|
32481
34447
|
reflect: true
|
|
32482
34448
|
},
|
|
32483
34449
|
|
|
34450
|
+
/**
|
|
34451
|
+
* Label announced for cells after the range (or after start when no end is selected).
|
|
34452
|
+
*/
|
|
34453
|
+
rangeLabelAfterRange: {
|
|
34454
|
+
type: String,
|
|
34455
|
+
reflect: true
|
|
34456
|
+
},
|
|
34457
|
+
|
|
34458
|
+
/**
|
|
34459
|
+
* Label announced for cells before the range start.
|
|
34460
|
+
*/
|
|
34461
|
+
rangeLabelBeforeRange: {
|
|
34462
|
+
type: String,
|
|
34463
|
+
reflect: true
|
|
34464
|
+
},
|
|
34465
|
+
|
|
34466
|
+
/**
|
|
34467
|
+
* Label announced for the range end date cell.
|
|
34468
|
+
*/
|
|
34469
|
+
rangeLabelEnd: {
|
|
34470
|
+
type: String,
|
|
34471
|
+
reflect: true
|
|
34472
|
+
},
|
|
34473
|
+
|
|
34474
|
+
/**
|
|
34475
|
+
* Label announced for cells within the selected range.
|
|
34476
|
+
*/
|
|
34477
|
+
rangeLabelInRange: {
|
|
34478
|
+
type: String,
|
|
34479
|
+
reflect: true
|
|
34480
|
+
},
|
|
34481
|
+
|
|
34482
|
+
/**
|
|
34483
|
+
* Label announced for the range start date cell.
|
|
34484
|
+
*/
|
|
34485
|
+
rangeLabelStart: {
|
|
34486
|
+
type: String,
|
|
34487
|
+
reflect: true
|
|
34488
|
+
},
|
|
34489
|
+
|
|
32484
34490
|
/**
|
|
32485
34491
|
* Dates that the user should have for reference as part of their decision making when selecting a date.
|
|
32486
34492
|
* This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
|
|
@@ -32507,6 +34513,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
32507
34513
|
|
|
32508
34514
|
/**
|
|
32509
34515
|
* Custom help text message to display when validity = `customError`.
|
|
34516
|
+
* Also used as the validation message when a blackout date is typed into the input.
|
|
32510
34517
|
*/
|
|
32511
34518
|
setCustomValidityCustomError: {
|
|
32512
34519
|
type: String
|
|
@@ -32533,6 +34540,14 @@ class AuroDatePicker extends AuroElement {
|
|
|
32533
34540
|
type: String
|
|
32534
34541
|
},
|
|
32535
34542
|
|
|
34543
|
+
/**
|
|
34544
|
+
* If declared, the dropdown will shift its position to avoid being cut off by the viewport.
|
|
34545
|
+
*/
|
|
34546
|
+
shift: {
|
|
34547
|
+
type: Boolean,
|
|
34548
|
+
reflect: true
|
|
34549
|
+
},
|
|
34550
|
+
|
|
32536
34551
|
/**
|
|
32537
34552
|
* Set true to make datepicker stacked style.
|
|
32538
34553
|
*/
|
|
@@ -32541,6 +34556,16 @@ class AuroDatePicker extends AuroElement {
|
|
|
32541
34556
|
reflect: true
|
|
32542
34557
|
},
|
|
32543
34558
|
|
|
34559
|
+
/**
|
|
34560
|
+
* Indicates whether the datepicker is in a dirty state (has been interacted with).
|
|
34561
|
+
* @private
|
|
34562
|
+
*/
|
|
34563
|
+
touched: {
|
|
34564
|
+
type: Boolean,
|
|
34565
|
+
reflect: true,
|
|
34566
|
+
attribute: false
|
|
34567
|
+
},
|
|
34568
|
+
|
|
32544
34569
|
/**
|
|
32545
34570
|
* Specifies the `validityState` this element is in.
|
|
32546
34571
|
*/
|
|
@@ -32561,16 +34586,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
32561
34586
|
*/
|
|
32562
34587
|
valueEnd: {
|
|
32563
34588
|
type: String
|
|
32564
|
-
},
|
|
32565
|
-
|
|
32566
|
-
/**
|
|
32567
|
-
* Indicates whether the datepicker is in a dirty state (has been interacted with).
|
|
32568
|
-
* @private
|
|
32569
|
-
*/
|
|
32570
|
-
touched: {
|
|
32571
|
-
type: Boolean,
|
|
32572
|
-
reflect: true,
|
|
32573
|
-
attribute: false
|
|
32574
34589
|
}
|
|
32575
34590
|
};
|
|
32576
34591
|
}
|
|
@@ -32681,7 +34696,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
32681
34696
|
/**
|
|
32682
34697
|
* Common display value wrapper classes.
|
|
32683
34698
|
* @private
|
|
32684
|
-
* @
|
|
34699
|
+
* @returns {Object} Class map for Lit's classMap directive.
|
|
32685
34700
|
*/
|
|
32686
34701
|
get commonDisplayValueWrapperClasses() {
|
|
32687
34702
|
return {
|
|
@@ -32752,7 +34767,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
32752
34767
|
* @returns {Number} Simplified number.
|
|
32753
34768
|
*/
|
|
32754
34769
|
convertToWcValidTime(date) {
|
|
32755
|
-
return
|
|
34770
|
+
return date?.getTime() / 1000;
|
|
32756
34771
|
}
|
|
32757
34772
|
|
|
32758
34773
|
/**
|
|
@@ -32763,42 +34778,66 @@ class AuroDatePicker extends AuroElement {
|
|
|
32763
34778
|
*/
|
|
32764
34779
|
// ─── Read-only *Object properties ─────────────────────────────────────────
|
|
32765
34780
|
|
|
32766
|
-
/**
|
|
34781
|
+
/**
|
|
34782
|
+
* Read-only `Date` object derived from `value`. Returns `undefined` when `value` is empty or not a valid date.
|
|
34783
|
+
* @returns {Date|undefined}
|
|
34784
|
+
*/
|
|
32767
34785
|
get valueObject() {
|
|
32768
34786
|
return this.value && dateFormatter$1.isValidDate(this.value) ? dateFormatter$1.stringToDateInstance(this.value) : undefined;
|
|
32769
34787
|
}
|
|
32770
34788
|
|
|
32771
|
-
/**
|
|
34789
|
+
/**
|
|
34790
|
+
* Read-only `Date` object derived from `valueEnd`. Returns `undefined` when `valueEnd` is empty or not a valid date.
|
|
34791
|
+
* @returns {Date|undefined}
|
|
34792
|
+
*/
|
|
32772
34793
|
get valueEndObject() {
|
|
32773
34794
|
return this.valueEnd && dateFormatter$1.isValidDate(this.valueEnd) ? dateFormatter$1.stringToDateInstance(this.valueEnd) : undefined;
|
|
32774
34795
|
}
|
|
32775
34796
|
|
|
32776
|
-
/**
|
|
34797
|
+
/**
|
|
34798
|
+
* Read-only `Date` object derived from `minDate`. Returns `undefined` when `minDate` is empty or not a valid date.
|
|
34799
|
+
* @returns {Date|undefined}
|
|
34800
|
+
*/
|
|
32777
34801
|
get minDateObject() {
|
|
32778
34802
|
return this.minDate && dateFormatter$1.isValidDate(this.minDate) ? dateFormatter$1.stringToDateInstance(this.minDate) : undefined;
|
|
32779
34803
|
}
|
|
32780
34804
|
|
|
32781
|
-
/**
|
|
34805
|
+
/**
|
|
34806
|
+
* Read-only `Date` object derived from `maxDate`. Returns `undefined` when `maxDate` is empty or not a valid date.
|
|
34807
|
+
* @returns {Date|undefined}
|
|
34808
|
+
*/
|
|
32782
34809
|
get maxDateObject() {
|
|
32783
34810
|
return this.maxDate && dateFormatter$1.isValidDate(this.maxDate) ? dateFormatter$1.stringToDateInstance(this.maxDate) : undefined;
|
|
32784
34811
|
}
|
|
32785
34812
|
|
|
32786
|
-
/**
|
|
34813
|
+
/**
|
|
34814
|
+
* Read-only `Date` object derived from `calendarStartDate`. Returns `undefined` when `calendarStartDate` is empty or not a valid date.
|
|
34815
|
+
* @returns {Date|undefined}
|
|
34816
|
+
*/
|
|
32787
34817
|
get calendarStartDateObject() {
|
|
32788
34818
|
return this.calendarStartDate && dateFormatter$1.isValidDate(this.calendarStartDate) ? dateFormatter$1.stringToDateInstance(this.calendarStartDate) : undefined;
|
|
32789
34819
|
}
|
|
32790
34820
|
|
|
32791
|
-
/**
|
|
34821
|
+
/**
|
|
34822
|
+
* Read-only `Date` object derived from `calendarEndDate`. Returns `undefined` when `calendarEndDate` is empty or not a valid date.
|
|
34823
|
+
* @returns {Date|undefined}
|
|
34824
|
+
*/
|
|
32792
34825
|
get calendarEndDateObject() {
|
|
32793
34826
|
return this.calendarEndDate && dateFormatter$1.isValidDate(this.calendarEndDate) ? dateFormatter$1.stringToDateInstance(this.calendarEndDate) : undefined;
|
|
32794
34827
|
}
|
|
32795
34828
|
|
|
32796
|
-
/**
|
|
34829
|
+
/**
|
|
34830
|
+
* Read-only `Date` object derived from `centralDate`. Returns `undefined` when `centralDate` is empty or not a valid date.
|
|
34831
|
+
* @returns {Date|undefined}
|
|
34832
|
+
*/
|
|
32797
34833
|
get centralDateObject() {
|
|
32798
34834
|
return this.centralDate && dateFormatter$1.isValidDate(this.centralDate) ? dateFormatter$1.stringToDateInstance(this.centralDate) : undefined;
|
|
32799
34835
|
}
|
|
32800
34836
|
|
|
32801
|
-
/**
|
|
34837
|
+
/**
|
|
34838
|
+
* Read-only `Date` object derived from `calendarFocusDate`. Returns `undefined` when `calendarFocusDate` is empty or not a valid date.
|
|
34839
|
+
* @returns {Date|undefined}
|
|
34840
|
+
*/
|
|
32802
34841
|
get calendarFocusDateObject() {
|
|
32803
34842
|
return this.calendarFocusDate && dateFormatter$1.isValidDate(this.calendarFocusDate) ? dateFormatter$1.stringToDateInstance(this.calendarFocusDate) : undefined;
|
|
32804
34843
|
}
|
|
@@ -32872,6 +34911,74 @@ class AuroDatePicker extends AuroElement {
|
|
|
32872
34911
|
}));
|
|
32873
34912
|
}
|
|
32874
34913
|
|
|
34914
|
+
/**
|
|
34915
|
+
* Attempts to focus the active calendar cell using a rAF retry loop.
|
|
34916
|
+
* Shared by both fullscreen and desktop open paths.
|
|
34917
|
+
* @private
|
|
34918
|
+
* @returns {void}
|
|
34919
|
+
*/
|
|
34920
|
+
focusActiveCellWhenReady() {
|
|
34921
|
+
const MAX_ATTEMPTS = 20;
|
|
34922
|
+
let attempts = 0;
|
|
34923
|
+
|
|
34924
|
+
const tryFocus = () => {
|
|
34925
|
+
attempts += 1;
|
|
34926
|
+
const allCells = this.calendar.getAllFocusableCells();
|
|
34927
|
+
|
|
34928
|
+
if (!allCells.length && attempts < MAX_ATTEMPTS) {
|
|
34929
|
+
requestAnimationFrame(tryFocus);
|
|
34930
|
+
return;
|
|
34931
|
+
}
|
|
34932
|
+
|
|
34933
|
+
// Compute and mark the active cell
|
|
34934
|
+
if (this.calendar.activeCellDate === null || this.calendar.activeCellDate === undefined) {
|
|
34935
|
+
this.calendar.activeCellDate = this.calendar.computeActiveDate();
|
|
34936
|
+
}
|
|
34937
|
+
if (this.calendar.activeCellDate !== undefined) {
|
|
34938
|
+
this.calendar.setActiveCell(this.calendar.activeCellDate);
|
|
34939
|
+
}
|
|
34940
|
+
|
|
34941
|
+
// If no cell matched (e.g. centralDate month differs from the rendered
|
|
34942
|
+
// range on mobile), fall back to the first rendered enabled cell.
|
|
34943
|
+
let activeCell = allCells.find((cell) => cell.active);
|
|
34944
|
+
if (!activeCell && allCells.length) {
|
|
34945
|
+
const [fallback] = allCells;
|
|
34946
|
+
if (fallback.day) {
|
|
34947
|
+
this.calendar.activeCellDate = fallback.day.date;
|
|
34948
|
+
this.calendar.setActiveCell(this.calendar.activeCellDate);
|
|
34949
|
+
activeCell = allCells.find((cell) => cell.active);
|
|
34950
|
+
}
|
|
34951
|
+
}
|
|
34952
|
+
|
|
34953
|
+
// Focus the calendar grid wrapper (aria-activedescendant handles
|
|
34954
|
+
// the SR announcement for the active cell).
|
|
34955
|
+
if (activeCell) {
|
|
34956
|
+
this.calendar.focusActiveCell();
|
|
34957
|
+
|
|
34958
|
+
// Announce the initial active cell via the live region.
|
|
34959
|
+
// Delay the announcement so it arrives after VoiceOver finishes
|
|
34960
|
+
// speaking the focus-change announcement for the grid wrapper.
|
|
34961
|
+
// Without this delay, VoiceOver drops the live region update
|
|
34962
|
+
// because it's already mid-announcement from the focus move.
|
|
34963
|
+
const announcement = this.calendar.buildFocusAnnouncement(activeCell.day.date);
|
|
34964
|
+
setTimeout(() => {
|
|
34965
|
+
this.calendar.announceSelection(announcement);
|
|
34966
|
+
}, 500);
|
|
34967
|
+
|
|
34968
|
+
// On mobile fullscreen, scroll the month list so the active cell's
|
|
34969
|
+
// month is visible. Without this, the list stays scrolled to the
|
|
34970
|
+
// calendarStartDate month which may be far from the active cell.
|
|
34971
|
+
if (this.dropdown.isBibFullscreen) {
|
|
34972
|
+
this.calendar.scrollToActiveCell();
|
|
34973
|
+
}
|
|
34974
|
+
} else if (attempts < MAX_ATTEMPTS) {
|
|
34975
|
+
requestAnimationFrame(tryFocus);
|
|
34976
|
+
}
|
|
34977
|
+
};
|
|
34978
|
+
|
|
34979
|
+
requestAnimationFrame(tryFocus);
|
|
34980
|
+
}
|
|
34981
|
+
|
|
32875
34982
|
/**
|
|
32876
34983
|
* Binds all behavior needed to the dropdown after rendering.
|
|
32877
34984
|
* @private
|
|
@@ -32880,6 +34987,12 @@ class AuroDatePicker extends AuroElement {
|
|
|
32880
34987
|
configureDropdown() {
|
|
32881
34988
|
this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
|
|
32882
34989
|
|
|
34990
|
+
// The datepicker manages its own open/close lifecycle (Space/Escape/date-select/done).
|
|
34991
|
+
// Prevent the floater's document-level focusin handler from closing the bib
|
|
34992
|
+
// when focus moves from the trigger into the calendar cells (which live inside
|
|
34993
|
+
// a top-layer popover where :focus-within on the dropdown host returns false).
|
|
34994
|
+
this.dropdown.noHideOnThisFocusLoss = true;
|
|
34995
|
+
|
|
32883
34996
|
// Pass label text to the dropdown bib for accessible dialog naming.
|
|
32884
34997
|
// Without this, the fullscreen <dialog> has no accessible name and
|
|
32885
34998
|
// screen readers announce it as just "dialog" with no context.
|
|
@@ -32897,6 +35010,23 @@ class AuroDatePicker extends AuroElement {
|
|
|
32897
35010
|
this.dropdown.addEventListener('auroDropdown-toggled', () => {
|
|
32898
35011
|
this.notifyDatepickerToggled();
|
|
32899
35012
|
|
|
35013
|
+
if (this.dropdown.isPopoverVisible) {
|
|
35014
|
+
// Reset calendar focus state so it recomputes from the current selection.
|
|
35015
|
+
// Without this, reopening after navigating to a month without a selected
|
|
35016
|
+
// date leaves activeCellDate pointing at a cell in a different month than
|
|
35017
|
+
// what centralDate renders, causing all cells to have tabindex="-1".
|
|
35018
|
+
this.calendar.activeCellDate = null;
|
|
35019
|
+
|
|
35020
|
+
// Show the month containing the selected date (or today) instead of
|
|
35021
|
+
// whichever month the user last navigated to.
|
|
35022
|
+
// Respect consumer-provided centralDate/calendarStartDate if no value is set.
|
|
35023
|
+
if (this.valueObject) {
|
|
35024
|
+
this.centralDate = this.value;
|
|
35025
|
+
} else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
|
|
35026
|
+
this.centralDate = new Date();
|
|
35027
|
+
}
|
|
35028
|
+
}
|
|
35029
|
+
|
|
32900
35030
|
// This forces the calendar to render when the dropdown is opened.
|
|
32901
35031
|
// It is not rendered by default
|
|
32902
35032
|
this.calendar.visible = this.dropdown.isPopoverVisible;
|
|
@@ -32929,12 +35059,23 @@ class AuroDatePicker extends AuroElement {
|
|
|
32929
35059
|
bibEl.open(true);
|
|
32930
35060
|
|
|
32931
35061
|
doubleRaf(() => {
|
|
32932
|
-
this.
|
|
35062
|
+
this.focusActiveCellWhenReady();
|
|
32933
35063
|
});
|
|
32934
35064
|
}
|
|
32935
35065
|
});
|
|
32936
35066
|
|
|
32937
35067
|
guardTouchPassthrough(this.shadowRoot.querySelector('.calendarWrapper'));
|
|
35068
|
+
} else {
|
|
35069
|
+
// Desktop (non-fullscreen) modal: make the trigger inert so users
|
|
35070
|
+
// cannot interact with the input while the modal bib is open.
|
|
35071
|
+
if (this.dropdown.desktopModal) {
|
|
35072
|
+
this.dropdown.trigger.inert = true;
|
|
35073
|
+
}
|
|
35074
|
+
|
|
35075
|
+
// Desktop (non-fullscreen): focus the active calendar cell.
|
|
35076
|
+
this.dropdown.updateComplete.then(() => {
|
|
35077
|
+
this.focusActiveCellWhenReady();
|
|
35078
|
+
});
|
|
32938
35079
|
}
|
|
32939
35080
|
} else {
|
|
32940
35081
|
// Always clear the inert flag. Only restore focus to the input when the datepicker
|
|
@@ -32979,14 +35120,35 @@ class AuroDatePicker extends AuroElement {
|
|
|
32979
35120
|
if (bibEl && this.dropdown.isPopoverVisible) {
|
|
32980
35121
|
bibEl.close();
|
|
32981
35122
|
bibEl.open(true);
|
|
35123
|
+
}
|
|
35124
|
+
|
|
35125
|
+
// Re-render the calendar with the new fullscreen layout,
|
|
35126
|
+
// then restore focus after the re-render completes.
|
|
35127
|
+
this.calendar.isFullscreen = true;
|
|
35128
|
+
this.calendar.updateComplete.then(() => {
|
|
32982
35129
|
doubleRaf(() => {
|
|
32983
|
-
this.
|
|
35130
|
+
this.focusActiveCellWhenReady();
|
|
32984
35131
|
});
|
|
32985
|
-
}
|
|
35132
|
+
});
|
|
32986
35133
|
});
|
|
32987
35134
|
} else if (!this.dropdown.isBibFullscreen) {
|
|
32988
|
-
// Switching from fullscreen to floating — restore trigger accessibility
|
|
32989
|
-
|
|
35135
|
+
// Switching from fullscreen to floating — only restore trigger accessibility
|
|
35136
|
+
// when the bib is closed or the desktop layout is not a modal. A desktopModal
|
|
35137
|
+
// dropdown keeps the trigger inert while open, matching the desktop-open path.
|
|
35138
|
+
if (!this.dropdown.isPopoverVisible || !this.dropdown.desktopModal) {
|
|
35139
|
+
this.dropdown.trigger.inert = false;
|
|
35140
|
+
}
|
|
35141
|
+
|
|
35142
|
+
// Re-render the calendar with the desktop layout,
|
|
35143
|
+
// then restore focus after the re-render completes.
|
|
35144
|
+
this.dropdown.updateComplete.then(() => {
|
|
35145
|
+
this.calendar.isFullscreen = false;
|
|
35146
|
+
this.calendar.updateComplete.then(() => {
|
|
35147
|
+
doubleRaf(() => {
|
|
35148
|
+
this.focusActiveCellWhenReady();
|
|
35149
|
+
});
|
|
35150
|
+
});
|
|
35151
|
+
});
|
|
32990
35152
|
}
|
|
32991
35153
|
});
|
|
32992
35154
|
}
|
|
@@ -33174,14 +35336,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
33174
35336
|
|
|
33175
35337
|
if (onEndValue) {
|
|
33176
35338
|
this.valueEnd = newDate;
|
|
33177
|
-
if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
|
|
33178
|
-
this.focus('startDate');
|
|
33179
|
-
}
|
|
33180
35339
|
} else {
|
|
33181
35340
|
this.value = newDate;
|
|
33182
|
-
if (this.dropdown.isPopoverVisible && !this.dropdown.isBibFullscreen) {
|
|
33183
|
-
this.focus('endDate');
|
|
33184
|
-
}
|
|
33185
35341
|
}
|
|
33186
35342
|
}
|
|
33187
35343
|
}
|
|
@@ -33221,6 +35377,23 @@ class AuroDatePicker extends AuroElement {
|
|
|
33221
35377
|
this.resetInputs();
|
|
33222
35378
|
}
|
|
33223
35379
|
|
|
35380
|
+
/**
|
|
35381
|
+
* Checks whether a formatted date string matches a blackout date.
|
|
35382
|
+
* @private
|
|
35383
|
+
* @param {string} dateStr - A date string in the component's configured format.
|
|
35384
|
+
* @returns {boolean} True if the date is in the blackoutDates list.
|
|
35385
|
+
*/
|
|
35386
|
+
isBlackoutDate(dateStr) {
|
|
35387
|
+
if (!Array.isArray(this.blackoutDates) ||
|
|
35388
|
+
this.blackoutDates.length === 0 ||
|
|
35389
|
+
!dateStr ||
|
|
35390
|
+
!dateFormatter$1.isValidDate(dateStr)) {
|
|
35391
|
+
return false;
|
|
35392
|
+
}
|
|
35393
|
+
|
|
35394
|
+
return this.blackoutDates.includes(dateStr);
|
|
35395
|
+
}
|
|
35396
|
+
|
|
33224
35397
|
/**
|
|
33225
35398
|
* Validates value.
|
|
33226
35399
|
* @param {boolean} [force=false] - Whether to force validation.
|
|
@@ -33232,6 +35405,23 @@ class AuroDatePicker extends AuroElement {
|
|
|
33232
35405
|
}
|
|
33233
35406
|
|
|
33234
35407
|
this.validation.validate(this, force);
|
|
35408
|
+
|
|
35409
|
+
// After standard validation, check blackout dates for typed input
|
|
35410
|
+
if (this.validity !== 'customError' &&
|
|
35411
|
+
(this.isBlackoutDate(this.value) || (this.range && this.isBlackoutDate(this.valueEnd)))) { // eslint-disable-line no-extra-parens
|
|
35412
|
+
const msg = this.setCustomValidityCustomError || 'Selected date is unavailable';
|
|
35413
|
+
this.validity = 'customError';
|
|
35414
|
+
this.errorMessage = msg;
|
|
35415
|
+
|
|
35416
|
+
this.dispatchEvent(new CustomEvent('auroFormElement-validated', {
|
|
35417
|
+
bubbles: true,
|
|
35418
|
+
composed: true,
|
|
35419
|
+
detail: {
|
|
35420
|
+
validity: this.validity,
|
|
35421
|
+
message: this.errorMessage
|
|
35422
|
+
}
|
|
35423
|
+
}));
|
|
35424
|
+
}
|
|
33235
35425
|
}
|
|
33236
35426
|
|
|
33237
35427
|
/**
|
|
@@ -33250,20 +35440,43 @@ class AuroDatePicker extends AuroElement {
|
|
|
33250
35440
|
this.hasAllValues = (this.value && this.value.length > 0) && (this.valueEnd && this.valueEnd.length > 0); // eslint-disable-line no-extra-parens
|
|
33251
35441
|
}
|
|
33252
35442
|
|
|
35443
|
+
/**
|
|
35444
|
+
* Returns `true` when the datepicker has an active validation error.
|
|
35445
|
+
* @returns {boolean}
|
|
35446
|
+
*/
|
|
33253
35447
|
get hasError() {
|
|
33254
35448
|
return this.validity !== undefined && this.validity !== 'valid';
|
|
33255
35449
|
}
|
|
33256
35450
|
|
|
33257
|
-
|
|
35451
|
+
/**
|
|
35452
|
+
* Lifecycle method to check if the locale is valid.
|
|
35453
|
+
* @ignore
|
|
35454
|
+
* @param {Map} changedProperties - The map of properties that have changed since the last update.
|
|
35455
|
+
* @returns {void}
|
|
35456
|
+
*/
|
|
35457
|
+
willUpdate(changedProperties) {
|
|
33258
35458
|
if (changedProperties.has('locale')) {
|
|
33259
|
-
|
|
33260
|
-
const
|
|
33261
|
-
|
|
33262
|
-
|
|
33263
|
-
}
|
|
35459
|
+
try {
|
|
35460
|
+
const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
|
|
35461
|
+
this._validLocale = supported.length > 0 ? this.locale : 'en-US';
|
|
35462
|
+
} catch {
|
|
35463
|
+
console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
|
|
35464
|
+
this._validLocale = 'en-US';
|
|
33264
35465
|
}
|
|
35466
|
+
|
|
35467
|
+
const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
|
|
35468
|
+
if (!changedProperties.has('format') && (!this.format || this.format.toLowerCase() === previousLocaleFormat)) {
|
|
35469
|
+
this.format = getDateFormatFromLocale$1(this._validLocale);
|
|
35470
|
+
}
|
|
35471
|
+
}
|
|
35472
|
+
|
|
35473
|
+
if (changedProperties.has('referenceDates') && this.calendar) {
|
|
35474
|
+
this.calendar.requestUpdate();
|
|
35475
|
+
this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
|
|
33265
35476
|
}
|
|
35477
|
+
}
|
|
33266
35478
|
|
|
35479
|
+
updated(changedProperties) {
|
|
33267
35480
|
if (changedProperties.has('disabled')) {
|
|
33268
35481
|
if (this.disabled) {
|
|
33269
35482
|
this.previousTabIndex = this.getAttribute('tabindex');
|
|
@@ -33290,17 +35503,18 @@ class AuroDatePicker extends AuroElement {
|
|
|
33290
35503
|
if (changedProperties.has('value')) {
|
|
33291
35504
|
|
|
33292
35505
|
// Change the calendar focus to the first valid date value only the first time the value is set
|
|
33293
|
-
if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value)) {
|
|
33294
|
-
|
|
33295
|
-
this.calendarFocusDate = this.value;
|
|
35506
|
+
if (!this.calendarFocusDate && dateFormatter$1.isValidDate(this.value) && !this.dropdown.isPopoverVisible) {
|
|
35507
|
+
this.calendarFocusDate = this.value;
|
|
33296
35508
|
|
|
33297
|
-
|
|
33298
|
-
|
|
33299
|
-
}
|
|
35509
|
+
// Let the calendar know to scroll to the focus date when it is next rendered on mobile
|
|
35510
|
+
this.forceScrollOnNextMobileCalendarRender = true;
|
|
33300
35511
|
}
|
|
33301
35512
|
|
|
33302
35513
|
if (this.cellClickActive) {
|
|
33303
35514
|
this.cellClickActive = false;
|
|
35515
|
+
this.wasCellClick = true;
|
|
35516
|
+
} else {
|
|
35517
|
+
this.wasCellClick = false;
|
|
33304
35518
|
}
|
|
33305
35519
|
|
|
33306
35520
|
if (this.value && dateFormatter$1.isValidDate(this.value)) {
|
|
@@ -33318,13 +35532,48 @@ class AuroDatePicker extends AuroElement {
|
|
|
33318
35532
|
|
|
33319
35533
|
// update the inputs — auro-input accepts ISO directly
|
|
33320
35534
|
if (this.inputList[0].value !== this.value) {
|
|
33321
|
-
|
|
35535
|
+
if (this.value) {
|
|
35536
|
+
this.inputList[0].value = this.value;
|
|
35537
|
+
} else {
|
|
35538
|
+
this.inputList[0].value = '';
|
|
35539
|
+
}
|
|
35540
|
+
}
|
|
35541
|
+
|
|
35542
|
+
if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
|
|
35543
|
+
// Skip centralDate update when user clicked a cell in range mode
|
|
35544
|
+
// to prevent the displayed months from shifting
|
|
35545
|
+
this.centralDate = this.value;
|
|
35546
|
+
//TODO: TEST THIS CHANGE
|
|
35547
|
+
// this.calendarRenderUtil.updateCentralDate(this, this.value);
|
|
33322
35548
|
}
|
|
33323
35549
|
|
|
33324
35550
|
this.setHasValue();
|
|
33325
35551
|
}
|
|
33326
35552
|
|
|
35553
|
+
if (changedProperties.has('blackoutDates')) {
|
|
35554
|
+
// Force calendar cells to re-render with updated blackout state.
|
|
35555
|
+
// requestUpdate on the calendar alone is insufficient because cells
|
|
35556
|
+
// don't receive blackoutDates as a bound property. Dispatching the
|
|
35557
|
+
// slot content event triggers handleSlotContent → requestUpdate on each cell.
|
|
35558
|
+
if (this.calendar) {
|
|
35559
|
+
this.calendar.requestUpdate();
|
|
35560
|
+
this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
|
|
35561
|
+
}
|
|
35562
|
+
|
|
35563
|
+
// Re-run validation so that a previously valid value that now falls on
|
|
35564
|
+
// a blackout date is flagged, and vice versa.
|
|
35565
|
+
if (this.value || this.valueEnd) {
|
|
35566
|
+
this.validate();
|
|
35567
|
+
}
|
|
35568
|
+
}
|
|
35569
|
+
|
|
33327
35570
|
if (changedProperties.has('valueEnd') && this.inputList[1]) {
|
|
35571
|
+
if (this.cellClickActive) {
|
|
35572
|
+
this.cellClickActive = false;
|
|
35573
|
+
this.wasCellClick = true;
|
|
35574
|
+
} else {
|
|
35575
|
+
this.wasCellClick = false;
|
|
35576
|
+
}
|
|
33328
35577
|
|
|
33329
35578
|
// update the calendar
|
|
33330
35579
|
if (this.valueEndObject) {
|
|
@@ -33342,7 +35591,19 @@ class AuroDatePicker extends AuroElement {
|
|
|
33342
35591
|
|
|
33343
35592
|
// update the inputs — auro-input accepts ISO directly
|
|
33344
35593
|
if (this.inputList[1].value !== this.valueEnd) {
|
|
33345
|
-
|
|
35594
|
+
if (this.valueEnd) {
|
|
35595
|
+
this.inputList[1].value = this.valueEnd;
|
|
35596
|
+
} else {
|
|
35597
|
+
this.inputList[1].value = '';
|
|
35598
|
+
}
|
|
35599
|
+
}
|
|
35600
|
+
|
|
35601
|
+
if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
|
|
35602
|
+
// Skip centralDate update when user clicked a cell in range mode
|
|
35603
|
+
// to prevent the displayed months from shifting
|
|
35604
|
+
this.centralDate = this.valueEnd;
|
|
35605
|
+
// TODO: TEST THIS CHANGE
|
|
35606
|
+
// this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
|
|
33346
35607
|
}
|
|
33347
35608
|
|
|
33348
35609
|
this.validate();
|
|
@@ -33385,16 +35646,14 @@ class AuroDatePicker extends AuroElement {
|
|
|
33385
35646
|
this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
|
|
33386
35647
|
}
|
|
33387
35648
|
|
|
33388
|
-
if (!changedProperties.has('value') && this.valueObject) {
|
|
33389
|
-
|
|
33390
|
-
this.value = undefined;
|
|
33391
|
-
|
|
33392
|
-
if (this.range && this.valueEnd) {
|
|
33393
|
-
this.valueEnd = undefined;
|
|
33394
|
-
}
|
|
35649
|
+
if (!changedProperties.has('value') && this.valueObject && this.minDateObject > this.valueObject) {
|
|
35650
|
+
this.value = undefined;
|
|
33395
35651
|
|
|
33396
|
-
|
|
35652
|
+
if (this.range && this.valueEnd) {
|
|
35653
|
+
this.valueEnd = undefined;
|
|
33397
35654
|
}
|
|
35655
|
+
|
|
35656
|
+
this.calendarRenderUtil.updateCentralDate(this, this.minDateObject);
|
|
33398
35657
|
}
|
|
33399
35658
|
|
|
33400
35659
|
// When there is no focusDate and no value, set the focusDate to the minDate
|
|
@@ -33425,16 +35684,14 @@ class AuroDatePicker extends AuroElement {
|
|
|
33425
35684
|
}
|
|
33426
35685
|
}
|
|
33427
35686
|
|
|
33428
|
-
if (this.maxDate && !changedProperties.has('value') && this.valueObject) {
|
|
33429
|
-
|
|
33430
|
-
this.value = undefined;
|
|
33431
|
-
|
|
33432
|
-
if (this.range && this.valueEnd) {
|
|
33433
|
-
this.valueEnd = undefined;
|
|
33434
|
-
}
|
|
35687
|
+
if (this.maxDate && !changedProperties.has('value') && this.valueObject && this.maxDateObject < this.valueObject) {
|
|
35688
|
+
this.value = undefined;
|
|
33435
35689
|
|
|
33436
|
-
|
|
35690
|
+
if (this.range && this.valueEnd) {
|
|
35691
|
+
this.valueEnd = undefined;
|
|
33437
35692
|
}
|
|
35693
|
+
|
|
35694
|
+
this.calendarRenderUtil.updateCentralDate(this, this.maxDateObject);
|
|
33438
35695
|
}
|
|
33439
35696
|
|
|
33440
35697
|
this.calendar.requestUpdate();
|
|
@@ -33492,6 +35749,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33492
35749
|
}
|
|
33493
35750
|
|
|
33494
35751
|
firstUpdated() {
|
|
35752
|
+
|
|
33495
35753
|
// Add the tag name as an attribute if it is different than the component name
|
|
33496
35754
|
this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
|
|
33497
35755
|
|
|
@@ -33507,14 +35765,6 @@ class AuroDatePicker extends AuroElement {
|
|
|
33507
35765
|
super.connectedCallback();
|
|
33508
35766
|
|
|
33509
35767
|
this.locale = this.domHandler.getLocale(this);
|
|
33510
|
-
|
|
33511
|
-
// Derive format eagerly so the first render has a valid format.
|
|
33512
|
-
// updated() handles locale changes after the initial render, but runs
|
|
33513
|
-
// after render(), so without this a preset value would briefly display
|
|
33514
|
-
// as a raw ISO string in the fullscreen bib.
|
|
33515
|
-
if (!this.format) {
|
|
33516
|
-
this.format = getDateFormatFromLocale$1(this.locale);
|
|
33517
|
-
}
|
|
33518
35768
|
}
|
|
33519
35769
|
|
|
33520
35770
|
// layout render methods
|
|
@@ -33564,7 +35814,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33564
35814
|
<div class="${e$4(this.commonDisplayValueWrapperClasses)}">
|
|
33565
35815
|
<slot name="displayValue" @slotchange=${this.checkDisplayValueSlotChange}>
|
|
33566
35816
|
<span>
|
|
33567
|
-
${this.formatShortDate(this.
|
|
35817
|
+
${this.formatShortDate(this.valueObject)}${this.range ? u$a`–${this.formatShortDate(this.valueEndObject)}` : undefined}
|
|
33568
35818
|
</span>
|
|
33569
35819
|
</slot>
|
|
33570
35820
|
</div>
|
|
@@ -33638,7 +35888,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33638
35888
|
* Simple formatter that ONLY WORKS FOR US DATES.
|
|
33639
35889
|
* Returns formatted date like Apr 21 or Dec 25.
|
|
33640
35890
|
* @private
|
|
33641
|
-
* @param {
|
|
35891
|
+
* @param {Date} date - Date format should be in a format Date constructor accepts, like '2023-04-21' or '2023/04/21'.
|
|
33642
35892
|
* @returns {string}
|
|
33643
35893
|
*/
|
|
33644
35894
|
formatShortDate(date) {
|
|
@@ -33648,16 +35898,16 @@ class AuroDatePicker extends AuroElement {
|
|
|
33648
35898
|
day: '2-digit'
|
|
33649
35899
|
};
|
|
33650
35900
|
|
|
33651
|
-
return
|
|
35901
|
+
return date?.toLocaleDateString(this.locale, options).replace(',', '');
|
|
33652
35902
|
}
|
|
33653
35903
|
|
|
33654
35904
|
/**
|
|
33655
35905
|
* Format and render the provided date value.
|
|
33656
35906
|
* @private
|
|
33657
|
-
* @param {
|
|
35907
|
+
* @param {Date} date - The date value to format and render.
|
|
33658
35908
|
* @returns {import('lit').TemplateResult}
|
|
33659
35909
|
*/
|
|
33660
|
-
renderDisplayTextDate(
|
|
35910
|
+
renderDisplayTextDate(date) {
|
|
33661
35911
|
const displayTextClasses = {
|
|
33662
35912
|
'displayValueText': true,
|
|
33663
35913
|
'body-lg': true
|
|
@@ -33666,8 +35916,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
33666
35916
|
return u$a`
|
|
33667
35917
|
<div>
|
|
33668
35918
|
<div class="${e$4(displayTextClasses)}">
|
|
33669
|
-
${
|
|
33670
|
-
? this.formatShortDate(
|
|
35919
|
+
${date
|
|
35920
|
+
? this.formatShortDate(date)
|
|
33671
35921
|
: undefined
|
|
33672
35922
|
}
|
|
33673
35923
|
</div>
|
|
@@ -33694,7 +35944,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33694
35944
|
?required="${this.required}"
|
|
33695
35945
|
?hideLabelVisually="${this.layout !== 'classic'}"
|
|
33696
35946
|
format="${this.format}"
|
|
33697
|
-
locale="${this.
|
|
35947
|
+
locale="${this._validLocale}"
|
|
33698
35948
|
.max="${this.maxDate}"
|
|
33699
35949
|
.min="${this.minDate}"
|
|
33700
35950
|
.placeholder="${this.placeholder}"
|
|
@@ -33716,7 +35966,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33716
35966
|
${this.layout !== "classic"
|
|
33717
35967
|
? u$a`
|
|
33718
35968
|
<span slot="displayValue">
|
|
33719
|
-
${this.renderDisplayTextDate(this.
|
|
35969
|
+
${this.renderDisplayTextDate(this.valueObject)}
|
|
33720
35970
|
</span>
|
|
33721
35971
|
`
|
|
33722
35972
|
: undefined
|
|
@@ -33739,7 +35989,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33739
35989
|
?required="${this.required}"
|
|
33740
35990
|
?hideLabelVisually="${this.layout !== 'classic'}"
|
|
33741
35991
|
.format="${this.format}"
|
|
33742
|
-
locale="${this.
|
|
35992
|
+
locale="${this._validLocale}"
|
|
33743
35993
|
.max="${this.maxDate}"
|
|
33744
35994
|
.min="${this.minDate}"
|
|
33745
35995
|
.placeholder="${this.placeholderEndDate || this.placeholder}"
|
|
@@ -33760,7 +36010,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33760
36010
|
${this.layout !== "classic"
|
|
33761
36011
|
? u$a`
|
|
33762
36012
|
<span slot="displayValue">
|
|
33763
|
-
${this.renderDisplayTextDate(this.
|
|
36013
|
+
${this.renderDisplayTextDate(this.valueEndObject)}
|
|
33764
36014
|
</span>
|
|
33765
36015
|
`
|
|
33766
36016
|
: undefined
|
|
@@ -33782,7 +36032,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33782
36032
|
/**
|
|
33783
36033
|
* Handles click on the clear button.
|
|
33784
36034
|
* @private
|
|
33785
|
-
* @param {MouseEvent} event - The
|
|
36035
|
+
* @param {MouseEvent} event - The mouse event from the clear button click.
|
|
33786
36036
|
* @returns {void}
|
|
33787
36037
|
*/
|
|
33788
36038
|
handleClearClick(event) {
|
|
@@ -33906,7 +36156,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33906
36156
|
.maxDate="${this.maxDate}"
|
|
33907
36157
|
.minDate="${this.minDate}"
|
|
33908
36158
|
.monthNames="${this.monthNames}"
|
|
33909
|
-
.localeCode="${this.
|
|
36159
|
+
.localeCode="${this._validLocale}"
|
|
33910
36160
|
.mobileBreakpoint="${this.mobileBreakpoint}"
|
|
33911
36161
|
part="calendar"
|
|
33912
36162
|
>
|
|
@@ -33915,8 +36165,8 @@ class AuroDatePicker extends AuroElement {
|
|
|
33915
36165
|
<slot slot="bib.fullscreen.dateLabel" name="bib.fullscreen.dateLabel" @slotchange="${this.handleSlotToSlot}"></slot>
|
|
33916
36166
|
<slot slot="bib.fullscreen.toLabel" name="bib.fullscreen.toLabel" @slotchange="${this.handleSlotToSlot}"></slot>
|
|
33917
36167
|
<slot slot="bib.fullscreen.fromLabel" name="bib.fullscreen.fromLabel" @slotchange="${this.handleSlotToSlot}"></slot>
|
|
33918
|
-
<span slot="bib.fullscreen.fromStr">${AuroInputUtil.toFormattedValue(this.
|
|
33919
|
-
${this.range ? u$a`<span slot="bib.fullscreen.toStr">${AuroInputUtil.toFormattedValue(this.
|
|
36168
|
+
<span slot="bib.fullscreen.fromStr">${AuroInputUtil.toFormattedValue(this.valueObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>
|
|
36169
|
+
${this.range ? u$a`<span slot="bib.fullscreen.toStr">${AuroInputUtil.toFormattedValue(this.valueEndObject, this.format) || u$a`<span class="placeholderDate">${(this.format || 'mm/dd/yyyy').toUpperCase()}</span>`}</span>` : undefined}
|
|
33920
36170
|
</auro-formkit-calendar>
|
|
33921
36171
|
`;
|
|
33922
36172
|
}
|
|
@@ -33930,7 +36180,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33930
36180
|
// Base HTML render() handles dropdown and calendar bib
|
|
33931
36181
|
return u$a`
|
|
33932
36182
|
<!-- Hidden slot for clear button aria-label -->
|
|
33933
|
-
<slot name="ariaLabel.input.clear" hidden @slotchange=${this.requestUpdate}></slot>
|
|
36183
|
+
<slot name="ariaLabel.input.clear" hidden @slotchange=${() => this.requestUpdate()}></slot>
|
|
33934
36184
|
|
|
33935
36185
|
<${this.dropdownTag}
|
|
33936
36186
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
@@ -33947,6 +36197,7 @@ class AuroDatePicker extends AuroElement {
|
|
|
33947
36197
|
.shape="${this.shape}"
|
|
33948
36198
|
.size="${this.size}"
|
|
33949
36199
|
class="${e$4(dropdownElementClassMap)}"
|
|
36200
|
+
desktopModal
|
|
33950
36201
|
disableEventShow
|
|
33951
36202
|
for="dropdownMenu"
|
|
33952
36203
|
part="dropdown"
|
|
@@ -33966,10 +36217,97 @@ class AuroDatePicker extends AuroElement {
|
|
|
33966
36217
|
}
|
|
33967
36218
|
}
|
|
33968
36219
|
|
|
36220
|
+
function blackoutLabelExample() {
|
|
36221
|
+
const blackoutDP = document.querySelector('#blackoutLabelExample');
|
|
36222
|
+
|
|
36223
|
+
function formatISO(date) {
|
|
36224
|
+
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
36225
|
+
const dd = String(date.getDate()).padStart(2, '0');
|
|
36226
|
+
return `${date.getFullYear()}-${mm}-${dd}`;
|
|
36227
|
+
}
|
|
36228
|
+
|
|
36229
|
+
function setup() {
|
|
36230
|
+
const today = new Date();
|
|
36231
|
+
today.setHours(0, 0, 0, 0);
|
|
36232
|
+
|
|
36233
|
+
// Calendar starts 6 months in the future
|
|
36234
|
+
const startDate = new Date(today);
|
|
36235
|
+
startDate.setMonth(today.getMonth() + 6);
|
|
36236
|
+
|
|
36237
|
+
// Calendar ends 12 months in the future
|
|
36238
|
+
const endDate = new Date(today);
|
|
36239
|
+
endDate.setMonth(today.getMonth() + 12);
|
|
36240
|
+
|
|
36241
|
+
// Min date is 2 months after the start date
|
|
36242
|
+
const minDate = new Date(startDate);
|
|
36243
|
+
minDate.setMonth(startDate.getMonth() + 2);
|
|
36244
|
+
|
|
36245
|
+
// Max date is 75 days after min date
|
|
36246
|
+
const maxDate = new Date(minDate);
|
|
36247
|
+
maxDate.setDate(minDate.getDate() + 75);
|
|
36248
|
+
|
|
36249
|
+
blackoutDP.setAttribute('calendarStartDate', formatISO(startDate));
|
|
36250
|
+
blackoutDP.setAttribute('calendarEndDate', formatISO(endDate));
|
|
36251
|
+
blackoutDP.setAttribute('minDate', formatISO(minDate));
|
|
36252
|
+
blackoutDP.setAttribute('maxDate', formatISO(maxDate));
|
|
36253
|
+
|
|
36254
|
+
// Generate all dates within the min/max range
|
|
36255
|
+
const blackoutDates = [];
|
|
36256
|
+
|
|
36257
|
+
for (let d = new Date(minDate); d <= maxDate; d.setDate(d.getDate() + 1)) {
|
|
36258
|
+
const current = new Date(d);
|
|
36259
|
+
const mm = String(current.getMonth() + 1).padStart(2, '0');
|
|
36260
|
+
const dd = String(current.getDate()).padStart(2, '0');
|
|
36261
|
+
const yyyy = current.getFullYear();
|
|
36262
|
+
const slotDateStr = `${yyyy}_${mm}_${dd}`;
|
|
36263
|
+
|
|
36264
|
+
// Mark every 3rd date as blackout (deterministic pattern)
|
|
36265
|
+
const dayOfMonth = current.getDate();
|
|
36266
|
+
const isSoldOut = dayOfMonth % 3 === 0;
|
|
36267
|
+
|
|
36268
|
+
if (isSoldOut) {
|
|
36269
|
+
blackoutDates.push(`${yyyy}-${mm}-${dd}`);
|
|
36270
|
+
|
|
36271
|
+
const popover = document.createElement('span');
|
|
36272
|
+
popover.setAttribute('slot', `popover_${slotDateStr}`);
|
|
36273
|
+
popover.textContent = 'There are no tickets available for this date.';
|
|
36274
|
+
blackoutDP.appendChild(popover);
|
|
36275
|
+
} else {
|
|
36276
|
+
// Use a fixed price based on day of month for deterministic output
|
|
36277
|
+
const price = 150 + (dayOfMonth * 17) % 400;
|
|
36278
|
+
|
|
36279
|
+
const dateSlot = document.createElement('span');
|
|
36280
|
+
dateSlot.setAttribute('slot', `date_${slotDateStr}`);
|
|
36281
|
+
dateSlot.textContent = `$${price}`;
|
|
36282
|
+
blackoutDP.appendChild(dateSlot);
|
|
36283
|
+
}
|
|
36284
|
+
}
|
|
36285
|
+
|
|
36286
|
+
blackoutDP.blackoutDates = blackoutDates;
|
|
36287
|
+
}
|
|
36288
|
+
|
|
36289
|
+
setup();
|
|
36290
|
+
}
|
|
36291
|
+
|
|
33969
36292
|
AuroDatePicker.register(); // registering to auro-datepicker
|
|
33970
36293
|
AuroDatePicker.register('custom-datepicker');
|
|
33971
36294
|
|
|
33972
36295
|
function initExamples(initCount) {
|
|
36296
|
+
initCount = initCount || 0;
|
|
36297
|
+
|
|
36298
|
+
try {
|
|
36299
|
+
// Only run when the demo element exists on the current page
|
|
36300
|
+
if (document.querySelector('#blackoutLabelExample')) {
|
|
36301
|
+
blackoutLabelExample();
|
|
36302
|
+
}
|
|
36303
|
+
} catch {
|
|
36304
|
+
if (initCount <= 20) {
|
|
36305
|
+
// setTimeout handles issue where content is sometimes loaded after the functions get called
|
|
36306
|
+
setTimeout(() => {
|
|
36307
|
+
initExamples(initCount + 1);
|
|
36308
|
+
}, 100);
|
|
36309
|
+
}
|
|
36310
|
+
}
|
|
33973
36311
|
}
|
|
33974
36312
|
|
|
33975
36313
|
export { initExamples };
|