@aurodesignsystem-dev/auro-formkit 0.0.0-pr1508.0 → 0.0.0-pr1508.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/bibtemplate/dist/index.js +1 -1
- package/components/bibtemplate/dist/registered.js +1 -1
- package/components/checkbox/demo/customize.min.js +8 -6
- package/components/checkbox/demo/getting-started.min.js +8 -6
- package/components/checkbox/demo/index.min.js +8 -6
- package/components/checkbox/dist/index.js +8 -6
- package/components/checkbox/dist/registered.js +8 -6
- package/components/combobox/README.md +1 -1
- package/components/combobox/demo/customize.md +2 -10
- package/components/combobox/demo/customize.min.js +386 -305
- package/components/combobox/demo/getting-started.min.js +386 -301
- package/components/combobox/demo/index.md +1 -1
- package/components/combobox/demo/index.min.js +386 -301
- package/components/combobox/demo/keyboard-behavior.md +2 -142
- package/components/combobox/demo/readme.md +1 -1
- package/components/combobox/demo/why-combobox.md +2 -2
- package/components/combobox/dist/auro-combobox.d.ts +23 -16
- package/components/combobox/dist/index.js +385 -300
- package/components/combobox/dist/registered.js +385 -300
- package/components/counter/demo/customize.min.js +18 -8
- package/components/counter/demo/index.min.js +18 -8
- package/components/counter/dist/index.js +18 -8
- package/components/counter/dist/registered.js +18 -8
- package/components/datepicker/demo/accessibility.md +2 -1
- package/components/datepicker/demo/api.md +63 -62
- package/components/datepicker/demo/customize.md +12 -1
- package/components/datepicker/demo/customize.min.js +932 -335
- package/components/datepicker/demo/index.min.js +932 -335
- package/components/datepicker/dist/{src/auro-calendar-cell.d.ts → auro-calendar-cell.d.ts} +20 -3
- package/components/datepicker/dist/{src/auro-calendar.d.ts → auro-calendar.d.ts} +121 -7
- package/components/datepicker/dist/{src/auro-datepicker.d.ts → auro-datepicker.d.ts} +78 -5
- package/components/datepicker/dist/blackoutUtils.d.ts +43 -0
- package/components/datepicker/dist/index.js +932 -335
- package/components/datepicker/dist/registered.js +932 -335
- package/components/dropdown/demo/customize.min.js +2 -1
- package/components/dropdown/demo/getting-started.min.js +2 -1
- package/components/dropdown/demo/index.min.js +2 -1
- package/components/dropdown/dist/index.js +2 -1
- package/components/dropdown/dist/registered.js +2 -1
- package/components/form/demo/customize.min.js +1690 -826
- package/components/form/demo/getting-started.min.js +1690 -826
- package/components/form/demo/index.min.js +1690 -826
- package/components/form/demo/registerDemoDeps.min.js +1690 -826
- package/components/input/demo/api.md +5 -5
- package/components/input/demo/customize.md +8 -8
- package/components/input/demo/customize.min.js +137 -95
- package/components/input/demo/getting-started.min.js +137 -95
- package/components/input/demo/index.min.js +137 -95
- package/components/input/dist/base-input.d.ts +33 -44
- package/components/input/dist/index.js +150 -96
- package/components/input/dist/registered.js +137 -95
- package/components/radio/demo/customize.min.js +8 -6
- package/components/radio/demo/getting-started.min.js +8 -6
- package/components/radio/demo/index.min.js +8 -6
- package/components/radio/dist/index.js +8 -6
- package/components/radio/dist/registered.js +8 -6
- package/components/select/demo/customize.md +86 -0
- package/components/select/demo/customize.min.js +194 -68
- package/components/select/demo/getting-started.min.js +196 -115
- package/components/select/demo/index.min.js +194 -68
- package/components/select/demo/keyboard-behavior.md +18 -4
- package/components/select/dist/auro-select.d.ts +20 -8
- package/components/select/dist/index.js +194 -68
- package/components/select/dist/registered.js +194 -68
- package/custom-elements.json +2365 -1819
- package/package.json +6 -2
- package/components/checkbox/demo/customize.js +0 -22
- package/components/checkbox/demo/demo-support.js +0 -1
- package/components/checkbox/demo/getting-started.js +0 -22
- package/components/checkbox/demo/index.js +0 -8
- package/components/checkbox/demo/styles.scss +0 -1
- package/components/combobox/demo/customize.js +0 -24
- package/components/combobox/demo/demo-support.js +0 -1
- package/components/combobox/demo/getting-started.js +0 -21
- package/components/combobox/demo/index.js +0 -23
- package/components/combobox/demo/styles.scss +0 -1
- package/components/counter/demo/customize.js +0 -21
- package/components/counter/demo/demo-support.js +0 -1
- package/components/counter/demo/index.js +0 -21
- package/components/counter/demo/styles.scss +0 -1
- package/components/datepicker/demo/customize.js +0 -17
- package/components/datepicker/demo/demo-support.js +0 -1
- package/components/datepicker/demo/index.js +0 -23
- package/components/datepicker/demo/styles.scss +0 -1
- package/components/dropdown/demo/customize.js +0 -9
- package/components/dropdown/demo/demo-support.js +0 -1
- package/components/dropdown/demo/getting-started.js +0 -9
- package/components/dropdown/demo/index.js +0 -16
- package/components/dropdown/demo/styles.scss +0 -1
- package/components/form/demo/customize.js +0 -28
- package/components/form/demo/demo-support.js +0 -1
- package/components/form/demo/getting-started.js +0 -9
- package/components/form/demo/index.js +0 -5
- package/components/form/demo/registerDemoDeps.js +0 -23
- package/components/form/demo/styles.scss +0 -1
- package/components/input/demo/customize.js +0 -25
- package/components/input/demo/demo-support.js +0 -1
- package/components/input/demo/getting-started.js +0 -8
- package/components/input/demo/index.js +0 -8
- package/components/input/demo/styles.css +0 -974
- package/components/input/demo/styles.scss +0 -1
- package/components/menu/demo/demo-support.js +0 -1
- package/components/menu/demo/index.js +0 -25
- package/components/menu/demo/styles.scss +0 -1
- package/components/radio/demo/customize.js +0 -22
- package/components/radio/demo/demo-support.js +0 -1
- package/components/radio/demo/getting-started.js +0 -24
- package/components/radio/demo/index.js +0 -8
- package/components/radio/demo/styles.scss +0 -1
- package/components/select/demo/customize.js +0 -11
- package/components/select/demo/demo-support.js +0 -1
- package/components/select/demo/getting-started.js +0 -26
- package/components/select/demo/index.js +0 -11
- package/components/select/demo/styles.scss +0 -1
- /package/components/datepicker/dist/{src/auro-calendar-month.d.ts → auro-calendar-month.d.ts} +0 -0
- /package/components/datepicker/dist/{src/buttonVersion.d.ts → buttonVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{src/datepickerKeyboardStrategy.d.ts → datepickerKeyboardStrategy.d.ts} +0 -0
- /package/components/datepicker/dist/{src/iconVersion.d.ts → iconVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{src/index.d.ts → index.d.ts} +0 -0
- /package/components/datepicker/dist/{src/popoverVersion.d.ts → popoverVersion.d.ts} +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/classic/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/classic/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-calendar-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-cell-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/color-month-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/shapeSize-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/snowflake/color-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/snowflake/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-cell-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-auro-calendar-month-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/style-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/styles → styles}/tokens-css.d.ts +0 -0
- /package/components/datepicker/dist/{src/utilities.d.ts → utilities.d.ts} +0 -0
- /package/components/datepicker/dist/{src/utilitiesCalendar.d.ts → utilitiesCalendar.d.ts} +0 -0
- /package/components/datepicker/dist/{src/utilitiesCalendarRender.d.ts → utilitiesCalendarRender.d.ts} +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/day.d.ts +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-calendar.d.ts +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker-cell.d.ts +0 -0
- /package/components/datepicker/dist/{src/vendor → vendor}/wc-range-datepicker/range-datepicker.d.ts +0 -0
|
@@ -4512,15 +4512,17 @@ let AuroFormValidation$7 = class AuroFormValidation {
|
|
|
4512
4512
|
);
|
|
4513
4513
|
}
|
|
4514
4514
|
|
|
4515
|
-
|
|
4516
|
-
|
|
4517
|
-
|
|
4515
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
4516
|
+
|
|
4517
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
4518
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
4519
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
4520
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
4521
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
4518
4522
|
hasValue = false;
|
|
4519
4523
|
}
|
|
4520
4524
|
}
|
|
4521
4525
|
|
|
4522
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
4523
|
-
|
|
4524
4526
|
if (isCombobox) {
|
|
4525
4527
|
|
|
4526
4528
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -5135,7 +5137,7 @@ function normalizeDates$3(context, ...dates) {
|
|
|
5135
5137
|
* const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
|
|
5136
5138
|
* //=> Tue Sep 02 2014 00:00:00
|
|
5137
5139
|
*/
|
|
5138
|
-
function startOfDay$
|
|
5140
|
+
function startOfDay$3(date, options) {
|
|
5139
5141
|
const _date = toDate$3(date, options?.in);
|
|
5140
5142
|
_date.setHours(0, 0, 0, 0);
|
|
5141
5143
|
return _date;
|
|
@@ -5183,8 +5185,8 @@ function differenceInCalendarDays$3(laterDate, earlierDate, options) {
|
|
|
5183
5185
|
earlierDate,
|
|
5184
5186
|
);
|
|
5185
5187
|
|
|
5186
|
-
const laterStartOfDay = startOfDay$
|
|
5187
|
-
const earlierStartOfDay = startOfDay$
|
|
5188
|
+
const laterStartOfDay = startOfDay$3(laterDate_);
|
|
5189
|
+
const earlierStartOfDay = startOfDay$3(earlierDate_);
|
|
5188
5190
|
|
|
5189
5191
|
const laterTimestamp =
|
|
5190
5192
|
+laterStartOfDay - getTimezoneOffsetInMilliseconds$3(laterStartOfDay);
|
|
@@ -10456,6 +10458,13 @@ let AuroInputUtilities$3 = class AuroInputUtilities {
|
|
|
10456
10458
|
* @returns {string | undefined}
|
|
10457
10459
|
*/
|
|
10458
10460
|
toFormattedValue(valueObject, format) {
|
|
10461
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
10462
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
10463
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
10464
|
+
// as "no format → no display value".
|
|
10465
|
+
if (!format) {
|
|
10466
|
+
return undefined;
|
|
10467
|
+
}
|
|
10459
10468
|
const normalizedFormat = format.toLowerCase();
|
|
10460
10469
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
10461
10470
|
|
|
@@ -10607,76 +10616,19 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
|
|
|
10607
10616
|
constructor() {
|
|
10608
10617
|
super();
|
|
10609
10618
|
|
|
10610
|
-
|
|
10611
|
-
|
|
10612
|
-
|
|
10613
|
-
|
|
10614
|
-
|
|
10615
|
-
|
|
10616
|
-
|
|
10617
|
-
|
|
10618
|
-
|
|
10619
|
-
|
|
10620
|
-
this.setCustomValidityForType = undefined;
|
|
10621
|
-
this.size = 'lg';
|
|
10622
|
-
this.shape = 'classic';
|
|
10623
|
-
this.value = undefined;
|
|
10624
|
-
|
|
10625
|
-
this._initializePrivateDefaults();
|
|
10626
|
-
}
|
|
10627
|
-
|
|
10628
|
-
/**
|
|
10629
|
-
* Internal Defaults.
|
|
10630
|
-
* @private
|
|
10631
|
-
* @returns {void}
|
|
10632
|
-
*/
|
|
10633
|
-
_initializePrivateDefaults() {
|
|
10619
|
+
// Single-source initialization. Alphabetized so duplicate or stale
|
|
10620
|
+
// defaults are immediately obvious on a diff. Every field is assigned
|
|
10621
|
+
// exactly once here (previously the constructor + the old
|
|
10622
|
+
// `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
|
|
10623
|
+
// fields and double-allocated `util` and `validation`, discarding the
|
|
10624
|
+
// first instance). `validation` is now allocated exactly once; `util`
|
|
10625
|
+
// is seeded here with an en-US default and then rebuilt in
|
|
10626
|
+
// `connectedCallback` once the consumer-resolved locale is available,
|
|
10627
|
+
// so a parent (datepicker/combobox) calling `validate()` synchronously
|
|
10628
|
+
// during its own update cycle sees a populated util instance.
|
|
10634
10629
|
this.activeLabel = false;
|
|
10635
|
-
this.appearance = "default";
|
|
10636
|
-
this.icon = false;
|
|
10637
|
-
this.disabled = false;
|
|
10638
|
-
this.dvInputOnly = false;
|
|
10639
|
-
this.hideLabelVisually = false;
|
|
10640
|
-
this.max = undefined;
|
|
10641
|
-
this.maxLength = undefined;
|
|
10642
|
-
this.min = undefined;
|
|
10643
|
-
this.minLength = undefined;
|
|
10644
|
-
this.noValidate = false;
|
|
10645
|
-
this.onDark = false;
|
|
10646
|
-
this.required = false;
|
|
10647
|
-
this.setCustomValidityForType = undefined;
|
|
10648
|
-
|
|
10649
|
-
// Used for storing raw values returned from input mask.
|
|
10650
|
-
this._rawMaskValue = undefined;
|
|
10651
|
-
|
|
10652
|
-
/**
|
|
10653
|
-
* @private
|
|
10654
|
-
*/
|
|
10655
|
-
this.layout = 'classic';
|
|
10656
|
-
|
|
10657
|
-
/**
|
|
10658
|
-
* @private
|
|
10659
|
-
*/
|
|
10660
|
-
this.shape = 'classic';
|
|
10661
|
-
|
|
10662
|
-
/**
|
|
10663
|
-
* @private
|
|
10664
|
-
*/
|
|
10665
|
-
this.size = 'lg';
|
|
10666
|
-
|
|
10667
|
-
this.touched = false;
|
|
10668
|
-
this.util = new AuroInputUtilities$3({
|
|
10669
|
-
locale: "en-US",
|
|
10670
|
-
format: this.format
|
|
10671
|
-
});
|
|
10672
|
-
this.validation = new AuroFormValidation$7();
|
|
10673
|
-
this.inputIconName = undefined;
|
|
10674
|
-
this.showPassword = false;
|
|
10675
|
-
this.validationCCLength = undefined;
|
|
10676
|
-
this.hasValue = false;
|
|
10677
|
-
this.label = 'Input label is undefined';
|
|
10678
|
-
|
|
10679
10630
|
|
|
10631
|
+
/** @private */
|
|
10680
10632
|
this.allowedInputTypes = [
|
|
10681
10633
|
"text",
|
|
10682
10634
|
"number",
|
|
@@ -10685,7 +10637,9 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
|
|
|
10685
10637
|
"credit-card",
|
|
10686
10638
|
"tel"
|
|
10687
10639
|
];
|
|
10688
|
-
this.
|
|
10640
|
+
this.appearance = "default";
|
|
10641
|
+
|
|
10642
|
+
/** @private */
|
|
10689
10643
|
this.dateFormatMap = {
|
|
10690
10644
|
'mm/dd/yyyy': 'dateMMDDYYYY',
|
|
10691
10645
|
'dd/mm/yyyy': 'dateDDMMYYYY',
|
|
@@ -10702,27 +10656,62 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
|
|
|
10702
10656
|
'dd/mm': 'dateDDMM',
|
|
10703
10657
|
'mm/dd': 'dateMMDD'
|
|
10704
10658
|
};
|
|
10659
|
+
this.disabled = false;
|
|
10660
|
+
|
|
10661
|
+
/** @private */
|
|
10705
10662
|
this.domHandler = new DomHandler$3();
|
|
10706
10663
|
this.dvInputOnly = false;
|
|
10707
10664
|
this.hasValue = false;
|
|
10665
|
+
this.hideLabelVisually = false;
|
|
10666
|
+
this.icon = false;
|
|
10667
|
+
|
|
10668
|
+
/** @private */
|
|
10708
10669
|
this.inputIconName = undefined;
|
|
10670
|
+
|
|
10671
|
+
/** @private */
|
|
10709
10672
|
this.label = 'Input label is undefined';
|
|
10673
|
+
this.layout = 'classic';
|
|
10674
|
+
this.locale = 'en-US';
|
|
10675
|
+
this.max = undefined;
|
|
10676
|
+
this.maxLength = undefined;
|
|
10677
|
+
this.min = undefined;
|
|
10678
|
+
this.minLength = undefined;
|
|
10710
10679
|
this.noValidate = false;
|
|
10711
|
-
this.
|
|
10680
|
+
this.onDark = false;
|
|
10681
|
+
// Raw values returned from the input mask before model normalization.
|
|
10682
|
+
this._rawMaskValue = undefined;
|
|
10683
|
+
this.required = false;
|
|
10684
|
+
this.setCustomValidityForType = undefined;
|
|
10685
|
+
// Credit Card is intentionally excluded — its mask manages the cursor
|
|
10686
|
+
// itself, and listing it here caused cursor placement issues in Safari.
|
|
10687
|
+
/** @private */
|
|
10712
10688
|
this.setSelectionInputTypes = [
|
|
10713
10689
|
"text",
|
|
10714
10690
|
"password",
|
|
10715
10691
|
"email"
|
|
10716
|
-
];
|
|
10692
|
+
];
|
|
10693
|
+
this.shape = 'classic';
|
|
10694
|
+
|
|
10695
|
+
/** @private */
|
|
10717
10696
|
this.showPassword = false;
|
|
10697
|
+
this.size = 'lg';
|
|
10718
10698
|
this.touched = false;
|
|
10699
|
+
|
|
10700
|
+
/** @private */
|
|
10719
10701
|
this.uniqueId = new UniqueId$2().create();
|
|
10702
|
+
|
|
10703
|
+
/** @private */
|
|
10720
10704
|
this.util = new AuroInputUtilities$3({
|
|
10721
10705
|
locale: this.locale,
|
|
10722
10706
|
format: this.format
|
|
10723
10707
|
});
|
|
10708
|
+
|
|
10709
|
+
/** @private */
|
|
10724
10710
|
this.validation = new AuroFormValidation$7();
|
|
10711
|
+
|
|
10712
|
+
/** @private */
|
|
10725
10713
|
this.validationCCLength = undefined;
|
|
10714
|
+
this.value = undefined;
|
|
10726
10715
|
}
|
|
10727
10716
|
|
|
10728
10717
|
// function to define props used within the scope of this component
|
|
@@ -11226,6 +11215,15 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
|
|
|
11226
11215
|
|
|
11227
11216
|
this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
|
|
11228
11217
|
|
|
11218
|
+
// Normalize the format token to lowercase so case-mixed values supplied
|
|
11219
|
+
// via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
|
|
11220
|
+
// lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
|
|
11221
|
+
// format silently misses the map and leaves `setCustomValidityForType`
|
|
11222
|
+
// unset.
|
|
11223
|
+
if (this.format) {
|
|
11224
|
+
this.format = this.format.toLowerCase();
|
|
11225
|
+
}
|
|
11226
|
+
|
|
11229
11227
|
// use validity message override if declared when initializing the component
|
|
11230
11228
|
if (this.hasAttribute('setCustomValidity')) {
|
|
11231
11229
|
this.ValidityMessageOverride = this.setCustomValidity;
|
|
@@ -11309,6 +11307,13 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
|
|
|
11309
11307
|
|
|
11310
11308
|
if (typeToI18n.includes(this.type)) {
|
|
11311
11309
|
this.setCustomValidityForType = i18n$3(this.lang, this.type);
|
|
11310
|
+
// COVERAGE: this `else if` branch is unreachable in WTR. connectedCallback
|
|
11311
|
+
// (L682) calls configureDataForType, which at L1266-1268 assigns
|
|
11312
|
+
// `this.format = this.util.getDateMaskFromLocale().toLowerCase()` for any
|
|
11313
|
+
// type=date input whose `format` attribute is unset. That runs before
|
|
11314
|
+
// firstUpdated invokes setCustomHelpTextMessage, so `!this.format` is
|
|
11315
|
+
// always false here. Retained as a defensive fallback; the whole function
|
|
11316
|
+
// is @deprecated per AB#1557296 and slated for removal.
|
|
11312
11317
|
} else if (!this.format && this.type === 'date') {
|
|
11313
11318
|
this.setCustomValidityForType = i18n$3(this.lang, 'dateMMDDYYYY');
|
|
11314
11319
|
} else if (this.dateFormatMap[this.format]) {
|
|
@@ -11598,6 +11603,38 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
|
|
|
11598
11603
|
this.touched = true;
|
|
11599
11604
|
this.validation.validate(this);
|
|
11600
11605
|
}
|
|
11606
|
+
|
|
11607
|
+
// Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
|
|
11608
|
+
// update that can re-render the input and reset the native cursor; we
|
|
11609
|
+
// capture the caret position before that update commits and restore it
|
|
11610
|
+
// via `setSelectionRange` once the update has flushed. Gated on
|
|
11611
|
+
// `setSelectionInputTypes` so credit-card (and other masked types whose
|
|
11612
|
+
// formatter manages the cursor itself) doesn't get a competing write.
|
|
11613
|
+
// Capture the caret position INSIDE the gate — reading `selectionStart`
|
|
11614
|
+
// on input types that don't support text selection (number, email in
|
|
11615
|
+
// some browsers) throws InvalidStateError, which would crash all input
|
|
11616
|
+
// handling. Wrap the read in try/catch belt-and-suspenders even though
|
|
11617
|
+
// the gated types currently support it, since the list is a public
|
|
11618
|
+
// property a consumer could mutate.
|
|
11619
|
+
if (this.setSelectionInputTypes.includes(this.type)) {
|
|
11620
|
+
let selectionStart = null;
|
|
11621
|
+
try {
|
|
11622
|
+
({ selectionStart } = this.inputElement);
|
|
11623
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
11624
|
+
return;
|
|
11625
|
+
}
|
|
11626
|
+
if (typeof selectionStart !== 'number') {
|
|
11627
|
+
return;
|
|
11628
|
+
}
|
|
11629
|
+
this.updateComplete.then(() => {
|
|
11630
|
+
try {
|
|
11631
|
+
this.inputElement.setSelectionRange(selectionStart, selectionStart);
|
|
11632
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
11633
|
+
// Some input types (number/email in certain UAs) throw on
|
|
11634
|
+
// setSelectionRange; swallow and let the native cursor stand.
|
|
11635
|
+
}
|
|
11636
|
+
});
|
|
11637
|
+
}
|
|
11601
11638
|
}
|
|
11602
11639
|
|
|
11603
11640
|
/**
|
|
@@ -11731,7 +11768,7 @@ let BaseInput$2 = class BaseInput extends AuroElement$6 {
|
|
|
11731
11768
|
*/
|
|
11732
11769
|
get placeholderStr() {
|
|
11733
11770
|
if (!this.placeholder && this.type === 'date') {
|
|
11734
|
-
return this.format
|
|
11771
|
+
return this.format.toUpperCase();
|
|
11735
11772
|
}
|
|
11736
11773
|
return this.placeholder || "";
|
|
11737
11774
|
}
|
|
@@ -12222,7 +12259,7 @@ let AuroHelpText$8 = class AuroHelpText extends i$2 {
|
|
|
12222
12259
|
}
|
|
12223
12260
|
};
|
|
12224
12261
|
|
|
12225
|
-
var formkitVersion$8 = '
|
|
12262
|
+
var formkitVersion$8 = '202607010104';
|
|
12226
12263
|
|
|
12227
12264
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
12228
12265
|
// See LICENSE in the project root for license information.
|
|
@@ -12725,6 +12762,7 @@ let AuroInput$2 = class AuroInput extends BaseInput$2 {
|
|
|
12725
12762
|
<${this.buttonTag}
|
|
12726
12763
|
@click="${this.handleClickShowPassword}"
|
|
12727
12764
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
12765
|
+
aria-pressed="${this.showPassword ? 'true' : 'false'}"
|
|
12728
12766
|
class="notificationBtn passwordBtn"
|
|
12729
12767
|
shape="circle"
|
|
12730
12768
|
size="sm"
|
|
@@ -12798,25 +12836,29 @@ let AuroInput$2 = class AuroInput extends BaseInput$2 {
|
|
|
12798
12836
|
* @returns {html} - Returns HTML for the help text and error message.
|
|
12799
12837
|
*/
|
|
12800
12838
|
renderHtmlHelpText() {
|
|
12839
|
+
// Single `<p>` with stable identity across validity transitions —
|
|
12840
|
+
// previously two distinct templates (valid vs invalid) caused Lit to
|
|
12841
|
+
// replace the node entirely on a flip, and VoiceOver wouldn't
|
|
12842
|
+
// re-announce because the live-region element it was watching had been
|
|
12843
|
+
// removed and a new one inserted. Keeping one node means the `role`,
|
|
12844
|
+
// `aria-live`, and text content all change in-place, which AT does
|
|
12845
|
+
// observe and announce.
|
|
12846
|
+
const isError = this.validity && this.validity !== 'valid';
|
|
12801
12847
|
return u$d`
|
|
12802
|
-
|
|
12803
|
-
?
|
|
12804
|
-
|
|
12805
|
-
|
|
12806
|
-
|
|
12807
|
-
|
|
12808
|
-
|
|
12809
|
-
|
|
12810
|
-
|
|
12811
|
-
|
|
12812
|
-
|
|
12813
|
-
|
|
12814
|
-
|
|
12815
|
-
|
|
12816
|
-
</p>
|
|
12817
|
-
</${this.helpTextTag}>
|
|
12818
|
-
`
|
|
12819
|
-
}
|
|
12848
|
+
<${this.helpTextTag}
|
|
12849
|
+
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
12850
|
+
?error=${isError}>
|
|
12851
|
+
<p
|
|
12852
|
+
id="${this.uniqueId}"
|
|
12853
|
+
part="helpText"
|
|
12854
|
+
role="${o$4(isError ? 'alert' : undefined)}"
|
|
12855
|
+
aria-live="${o$4(isError ? 'assertive' : undefined)}">
|
|
12856
|
+
${isError
|
|
12857
|
+
? this.errorMessage
|
|
12858
|
+
: u$d`<slot name="helpText">${this.getHelpText()}</slot>`
|
|
12859
|
+
}
|
|
12860
|
+
</p>
|
|
12861
|
+
</${this.helpTextTag}>
|
|
12820
12862
|
`;
|
|
12821
12863
|
}
|
|
12822
12864
|
|
|
@@ -13590,15 +13632,17 @@ let AuroFormValidation$1$1 = class AuroFormValidation {
|
|
|
13590
13632
|
);
|
|
13591
13633
|
}
|
|
13592
13634
|
|
|
13593
|
-
|
|
13594
|
-
|
|
13595
|
-
|
|
13635
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
13636
|
+
|
|
13637
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
13638
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
13639
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
13640
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
13641
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
13596
13642
|
hasValue = false;
|
|
13597
13643
|
}
|
|
13598
13644
|
}
|
|
13599
13645
|
|
|
13600
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
13601
|
-
|
|
13602
13646
|
if (isCombobox) {
|
|
13603
13647
|
|
|
13604
13648
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -14306,7 +14350,7 @@ function normalizeDates$1(context, ...dates) {
|
|
|
14306
14350
|
* const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
|
|
14307
14351
|
* //=> Tue Sep 02 2014 00:00:00
|
|
14308
14352
|
*/
|
|
14309
|
-
function startOfDay$
|
|
14353
|
+
function startOfDay$1(date, options) {
|
|
14310
14354
|
const _date = toDate$1(date, options?.in);
|
|
14311
14355
|
_date.setHours(0, 0, 0, 0);
|
|
14312
14356
|
return _date;
|
|
@@ -14354,8 +14398,8 @@ function differenceInCalendarDays$1(laterDate, earlierDate, options) {
|
|
|
14354
14398
|
earlierDate,
|
|
14355
14399
|
);
|
|
14356
14400
|
|
|
14357
|
-
const laterStartOfDay = startOfDay$
|
|
14358
|
-
const earlierStartOfDay = startOfDay$
|
|
14401
|
+
const laterStartOfDay = startOfDay$1(laterDate_);
|
|
14402
|
+
const earlierStartOfDay = startOfDay$1(earlierDate_);
|
|
14359
14403
|
|
|
14360
14404
|
const laterTimestamp =
|
|
14361
14405
|
+laterStartOfDay - getTimezoneOffsetInMilliseconds$1(laterStartOfDay);
|
|
@@ -23457,6 +23501,13 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
23457
23501
|
* @returns {string | undefined}
|
|
23458
23502
|
*/
|
|
23459
23503
|
toFormattedValue(valueObject, format) {
|
|
23504
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
23505
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
23506
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
23507
|
+
// as "no format → no display value".
|
|
23508
|
+
if (!format) {
|
|
23509
|
+
return undefined;
|
|
23510
|
+
}
|
|
23460
23511
|
const normalizedFormat = format.toLowerCase();
|
|
23461
23512
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
23462
23513
|
|
|
@@ -23717,11 +23768,11 @@ var snowflakeStyle = i$4`:host([layout*=snowflake]) [auro-input]{flex:1;text-ali
|
|
|
23717
23768
|
|
|
23718
23769
|
var snowflakeColors = i$4`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
|
|
23719
23770
|
|
|
23720
|
-
var styleCss$7$1 = i$4`.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}`;
|
|
23771
|
+
var styleCss$7$1 = i$4`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;--desktop-footer-height: 80px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendars:focus{outline:none}.calendarNavButtons{position:absolute;z-index:1;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}.sr-only{position:absolute;overflow:hidden;clip:rect(0, 0, 0, 0);width:1px;height:1px;margin:-1px;padding:0;border:0;white-space:nowrap}`;
|
|
23721
23772
|
|
|
23722
|
-
var colorCss$7$1 = i$4`.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)}}`;
|
|
23773
|
+
var colorCss$7$1 = i$4`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus-visible{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);outline:2px solid var(--ds-basic-color-brand-primary, #01426a);outline-offset:-2px}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);outline:2px solid var(--ds-basic-color-brand-primary, #01426a);outline-offset:-2px;box-shadow:inset 0 0 0 1px var(--ds-auro-calendar-nav-btn-border-color)}.mobileHeader{background-color:var(--ds-auro-calendar-mobile-header-container-color)}.mobileDateLabel{color:var(--ds-auro-calendar-mobile-header-text-color)}:host(:not([noRange])) .headerDateTo:after{background-color:var(--ds-auro-calendar-mobile-header-divider-color)}::slotted([slot="bib.fullscreen.fromStr"]),::slotted([slot=mobileDateToStr]){color:var(--ds-auro-datepicker-placeholder-color)}@media screen and (max-width: 576px){.calendarNavBtn{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}}`;
|
|
23723
23774
|
|
|
23724
|
-
var styleCss$6$1 = i$4`: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)}`;
|
|
23775
|
+
var styleCss$6$1 = i$4`:focus:not(:focus-visible){outline:3px solid transparent}.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}:host{position:relative;display:block;width:336px;margin:0 var(--ds-size-200, 1rem)}@media screen and (min-width: 576px){:host{width:336px;padding:var(--ds-size-200, 1rem) var(--ds-size-200, 1rem) 0}}@media screen and (min-width: 576px){:host(:not(:last-of-type)):after{position:absolute;top:var(--ds-size-200, 1rem);right:calc(-1*var(--ds-size-200, 1rem));height:calc(100% - var(--ds-size-200, 1rem) - var(--ds-size-200, 1rem));display:block;width:1px;content:""}}.header{display:flex;height:var(--ds-size-500, 2.5rem);margin-bottom:var(--ds-size-150, 0.75rem);align-items:center;flex-direction:row;text-align:center}.headerTitle{display:flex;align-items:center;flex:1;flex-direction:row;justify-content:center}.headerTitle div:first-child{margin-right:var(--ds-size-100, 0.5rem)}.calendarNavBtn{position:relative;display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.table{width:100%;border-collapse:collapse}.thead{margin-bottom:var(--ds-size-100, 0.5rem)}.th{display:flex;flex:1;align-items:center;justify-content:center}.th abbr{text-decoration:none}.tbody{width:100%;transition:all 0ms;transform:translateX(0)}@media screen and (min-width: 576px){.tbody{height:376px}}.td{flex:1;margin:0;padding:0}.tr{display:flex;flex-direction:row;width:100%;border-radius:10px;overflow:hidden}.tr:not(:last-of-type){margin-bottom:var(--ds-size-100, 0.5rem)}`;
|
|
23725
23776
|
|
|
23726
23777
|
var colorCss$6$1 = i$4`: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)}`;
|
|
23727
23778
|
|
|
@@ -23813,8 +23864,8 @@ class RangeDatepickerCell extends i$2 {
|
|
|
23813
23864
|
const parsedDateFrom = parseInt(dateFrom, 10);
|
|
23814
23865
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
23815
23866
|
if (day) {
|
|
23816
|
-
if (getTime(startOfDay$
|
|
23817
|
-
getTime(startOfDay$
|
|
23867
|
+
if (getTime(startOfDay$1(parsedDateTo * 1000)) / 1000 === day.date ||
|
|
23868
|
+
getTime(startOfDay$1(parsedDateFrom * 1000)) / 1000 === day.date) {
|
|
23818
23869
|
this.selected = true;
|
|
23819
23870
|
}
|
|
23820
23871
|
if (((hoveredDate === day.date || day.date < hoveredDate) &&
|
|
@@ -24002,7 +24053,7 @@ class RangeDatepickerCalendar extends i$2 {
|
|
|
24002
24053
|
this.dayNamesOfTheWeek = [];
|
|
24003
24054
|
this.daysOfMonth = [];
|
|
24004
24055
|
this._locale = null;
|
|
24005
|
-
this.currentDate = parseInt(format$1(startOfDay$
|
|
24056
|
+
this.currentDate = parseInt(format$1(startOfDay$1(Date.now()), 't'), 10);
|
|
24006
24057
|
this.localeChanged();
|
|
24007
24058
|
this.yearAndMonthChanged(this.year, this.month);
|
|
24008
24059
|
}
|
|
@@ -24476,7 +24527,7 @@ __decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "dayNamesO
|
|
|
24476
24527
|
__decorate([n$4({ type: Array })], RangeDatepickerCalendar.prototype, "daysOfMonth", void 0);
|
|
24477
24528
|
AuroLibraryRuntimeUtils$5$1.prototype.registerComponent('wc-range-datepicker-calendar', RangeDatepickerCalendar);
|
|
24478
24529
|
|
|
24479
|
-
var styleCss$5$2 = i$4`.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}`;
|
|
24530
|
+
var styleCss$5$2 = i$4`.body-default{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-default-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-default-emphasized-font-size, 1rem);line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-lg-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-sm-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-font-size, 0.75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-2xs-emphasized-weight, );letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);line-height:var(--wcss-body-2xs-emphasized-line-height, 0.875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));letter-spacing:var(--wcss-display-2xl-letter-spacing, 0)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));letter-spacing:var(--wcss-display-xl-letter-spacing, 0)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));letter-spacing:var(--wcss-display-lg-letter-spacing, 0)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));letter-spacing:var(--wcss-display-md-letter-spacing, 0)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));letter-spacing:var(--wcss-display-sm-letter-spacing, 0)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));letter-spacing:var(--wcss-display-xs-letter-spacing, 0)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));letter-spacing:var(--wcss-heading-xl-letter-spacing, 0)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));letter-spacing:var(--wcss-heading-lg-letter-spacing, 0)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));letter-spacing:var(--wcss-heading-md-letter-spacing, 0)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));letter-spacing:var(--wcss-heading-sm-letter-spacing, 0)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-xs-weight, 300);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));letter-spacing:var(--wcss-heading-xs-letter-spacing, 0)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-heading-2xs-weight, 300);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);text-transform:uppercase}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);text-transform:uppercase}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);text-transform:uppercase}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);text-transform:uppercase}@media screen and (max-width: 576px){:host{display:flex;justify-content:center}}.day{position:relative;width:48px;height:56px;padding:0;border-width:2px;border-style:solid;border-radius:10px;cursor:pointer;user-select:none}.day:focus-visible{outline:none;background-color:unset}.day.activeCell{outline-width:2px;outline-style:solid;outline-offset:-4px}.day.disabled{cursor:default !important;pointer-events:none}.day.blackout{cursor:pointer}.day.reference:after{position:absolute;top:-2px;left:-2px;display:block;width:calc(100% + 2px);height:calc(100% + 2px);box-sizing:content-box;border-radius:10px;border-style:solid;border-width:1px;content:""}.day.inRange::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:""}.day.rangeDepartDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:10px 0 0 10px;overflow:hidden}.day.rangeReturnDate::before,.day.lastHoveredDate::before{position:absolute;z-index:-1;top:-2px;left:-2px;display:block;width:calc(100% + 4px);height:calc(100% + 4px);box-sizing:content-box;content:"";border-radius:0 10px 10px 0;overflow:hidden}.day.rangeDepartDate.lastHoveredDate::before{border-radius:10px}.day.firstDayOfMonth::before{border-radius:10px 0 0 10px;overflow:hidden}.day.lastDayOfMonth::before{border-radius:0 10px 10px 0;overflow:hidden}.buttonWrapper{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%}.dateSlot{display:block}::slotted([slot^=date_]){width:100%;white-space:nowrap}::slotted(auro-icon){max-height:24px;max-width:24px}:host([renderForDateSlot]) .buttonWrapper{position:relative;width:100%;height:100%}:host([renderForDateSlot]) .currentDayMarker{position:relative}`;
|
|
24480
24531
|
|
|
24481
24532
|
var colorCss$5$2 = i$4`: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}`;
|
|
24482
24533
|
|
|
@@ -24501,13 +24552,103 @@ class s{registerComponent(e,t){customElements.get(e)||customElements.define(e,cl
|
|
|
24501
24552
|
|
|
24502
24553
|
var popoverVersion = '6.0.1';
|
|
24503
24554
|
|
|
24504
|
-
|
|
24555
|
+
/**
|
|
24556
|
+
* Single source of truth for parsing and matching blackout dates across the
|
|
24557
|
+
* datepicker. Both `auro-calendar` (memoized Set + `isDateBlackout`) and the
|
|
24558
|
+
* pre-`firstUpdated` fallback inside `auro-calendar-cell` route through these
|
|
24559
|
+
* helpers so the YYYY-MM-DD → seconds conversion and the merge-with-legacy
|
|
24560
|
+
* `disabledDays` rules are defined exactly once.
|
|
24561
|
+
*/
|
|
24505
24562
|
|
|
24506
|
-
|
|
24507
|
-
|
|
24508
|
-
|
|
24509
|
-
|
|
24510
|
-
|
|
24563
|
+
/**
|
|
24564
|
+
* Converts a `YYYY-MM-DD` ISO date string to a Unix timestamp (seconds)
|
|
24565
|
+
* representing local midnight on that calendar day. Returns `null` for
|
|
24566
|
+
* inputs that don't parse to a finite timestamp.
|
|
24567
|
+
*
|
|
24568
|
+
* Uses the `new Date(year, monthIndex, day)` constructor (NOT
|
|
24569
|
+
* `new Date(isoStr)`) so the result is local-midnight rather than UTC
|
|
24570
|
+
* midnight — required to keep the calendar grid aligned with the user's
|
|
24571
|
+
* local calendar day in negative-offset timezones.
|
|
24572
|
+
*
|
|
24573
|
+
* @param {string} isoStr - Date string in `YYYY-MM-DD` format.
|
|
24574
|
+
* @returns {number|null} Local-midnight Unix timestamp (seconds), or null.
|
|
24575
|
+
*/
|
|
24576
|
+
function parseIsoToTimestamp(isoStr) {
|
|
24577
|
+
if (typeof isoStr !== 'string') {
|
|
24578
|
+
return null;
|
|
24579
|
+
}
|
|
24580
|
+
const parts = isoStr.split('-');
|
|
24581
|
+
if (parts.length !== 3) {
|
|
24582
|
+
return null;
|
|
24583
|
+
}
|
|
24584
|
+
const year = parseInt(parts[0], 10);
|
|
24585
|
+
const month = parseInt(parts[1], 10);
|
|
24586
|
+
const day = parseInt(parts[2], 10);
|
|
24587
|
+
if (!Number.isFinite(year) || !Number.isFinite(month) || !Number.isFinite(day)) {
|
|
24588
|
+
return null;
|
|
24589
|
+
}
|
|
24590
|
+
// Reject overflow values like "2024-13-40" — JS `new Date(year, month, day)`
|
|
24591
|
+
// silently normalizes those to a different calendar day, which would
|
|
24592
|
+
// disable the wrong date if we let the result through.
|
|
24593
|
+
if (month < 1 || month > 12 || day < 1 || day > 31) {
|
|
24594
|
+
return null;
|
|
24595
|
+
}
|
|
24596
|
+
const date = new Date(year, month - 1, day);
|
|
24597
|
+
// Guard the residual case where JS still rolls a value (e.g. Feb 30 → Mar 2).
|
|
24598
|
+
// After construction, getFullYear/getMonth/getDate should match the inputs.
|
|
24599
|
+
if (date.getFullYear() !== year || date.getMonth() !== month - 1 || date.getDate() !== day) {
|
|
24600
|
+
return null;
|
|
24601
|
+
}
|
|
24602
|
+
const ts = Math.floor(date.getTime() / 1000);
|
|
24603
|
+
return Number.isFinite(ts) ? ts : null;
|
|
24604
|
+
}
|
|
24605
|
+
|
|
24606
|
+
/**
|
|
24607
|
+
* Builds a `Set<number>` of seconds-since-epoch timestamps covering both the
|
|
24608
|
+
* legacy `disabledDays` (already-numeric) array and the ISO `blackoutDates`
|
|
24609
|
+
* array. Use this for O(1) membership checks in hot paths.
|
|
24610
|
+
*
|
|
24611
|
+
* @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
|
|
24612
|
+
* @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
|
|
24613
|
+
* @returns {Set<number>}
|
|
24614
|
+
*/
|
|
24615
|
+
function buildBlackoutSet(disabledDays, blackoutDates) {
|
|
24616
|
+
const set = new Set();
|
|
24617
|
+
if (Array.isArray(disabledDays)) {
|
|
24618
|
+
for (const day of disabledDays) {
|
|
24619
|
+
const ts = parseInt(day, 10);
|
|
24620
|
+
if (Number.isFinite(ts)) {
|
|
24621
|
+
set.add(ts);
|
|
24622
|
+
}
|
|
24623
|
+
}
|
|
24624
|
+
}
|
|
24625
|
+
if (Array.isArray(blackoutDates)) {
|
|
24626
|
+
for (const isoStr of blackoutDates) {
|
|
24627
|
+
const ts = parseIsoToTimestamp(isoStr);
|
|
24628
|
+
if (ts !== null) {
|
|
24629
|
+
set.add(ts);
|
|
24630
|
+
}
|
|
24631
|
+
}
|
|
24632
|
+
}
|
|
24633
|
+
return set;
|
|
24634
|
+
}
|
|
24635
|
+
|
|
24636
|
+
/**
|
|
24637
|
+
* One-shot membership test for a single timestamp against both blackout
|
|
24638
|
+
* sources. Allocates a Set on each call; only use this in cold paths
|
|
24639
|
+
* (e.g. the pre-`firstUpdated` cell fallback). Hot paths should hold the
|
|
24640
|
+
* Set returned from `buildBlackoutSet` and `.has(ts)` directly.
|
|
24641
|
+
*
|
|
24642
|
+
* @param {number} dateTs - Unix timestamp (seconds) to test.
|
|
24643
|
+
* @param {Array<string|number>|undefined} disabledDays - Legacy timestamp array.
|
|
24644
|
+
* @param {Array<string>|undefined} blackoutDates - ISO `YYYY-MM-DD` array.
|
|
24645
|
+
* @returns {boolean}
|
|
24646
|
+
*/
|
|
24647
|
+
function isBlackoutTimestamp(dateTs, disabledDays, blackoutDates) {
|
|
24648
|
+
return buildBlackoutSet(disabledDays, blackoutDates).has(dateTs);
|
|
24649
|
+
}
|
|
24650
|
+
|
|
24651
|
+
/* 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 */
|
|
24511
24652
|
|
|
24512
24653
|
class AuroCalendarCell extends i$2 {
|
|
24513
24654
|
constructor() {
|
|
@@ -24555,6 +24696,14 @@ class AuroCalendarCell extends i$2 {
|
|
|
24555
24696
|
type: Boolean,
|
|
24556
24697
|
reflect: true
|
|
24557
24698
|
},
|
|
24699
|
+
/**
|
|
24700
|
+
* @deprecated Propagated from the legacy `auro-calendar.disabledDays`
|
|
24701
|
+
* Unix-timestamp array. The cell honors it for backward compatibility
|
|
24702
|
+
* (see the divergence-check fallback inside `isBlackout`), but
|
|
24703
|
+
* consumers should migrate to `auro-datepicker.blackoutDates`
|
|
24704
|
+
* (YYYY-MM-DD ISO strings). The calendar emits a one-time
|
|
24705
|
+
* deprecation warning the first time a non-empty value is observed.
|
|
24706
|
+
*/
|
|
24558
24707
|
disabledDays: { type: Array },
|
|
24559
24708
|
isCurrentDate: { type: Boolean },
|
|
24560
24709
|
locale: { type: String },
|
|
@@ -24600,8 +24749,8 @@ class AuroCalendarCell extends i$2 {
|
|
|
24600
24749
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
24601
24750
|
|
|
24602
24751
|
if (day) {
|
|
24603
|
-
const departTimestamp =
|
|
24604
|
-
const returnTimestamp =
|
|
24752
|
+
const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
24753
|
+
const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
24605
24754
|
|
|
24606
24755
|
if (day.date === departTimestamp || day.date === returnTimestamp) {
|
|
24607
24756
|
this.selected = true;
|
|
@@ -24685,27 +24834,33 @@ class AuroCalendarCell extends i$2 {
|
|
|
24685
24834
|
return false;
|
|
24686
24835
|
}
|
|
24687
24836
|
|
|
24688
|
-
//
|
|
24689
|
-
|
|
24690
|
-
|
|
24691
|
-
|
|
24692
|
-
|
|
24693
|
-
|
|
24694
|
-
// Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
|
|
24695
|
-
const blackoutDates = this.datepicker?.blackoutDates;
|
|
24696
|
-
|
|
24697
|
-
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
24698
|
-
const date = new Date(this.day.date * 1000);
|
|
24699
|
-
const yyyy = date.getFullYear();
|
|
24700
|
-
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
24701
|
-
const dd = String(date.getDate()).padStart(2, '0');
|
|
24702
|
-
const cellDate = `${yyyy}-${mm}-${dd}`;
|
|
24703
|
-
if (blackoutDates.includes(cellDate)) {
|
|
24837
|
+
// Delegate to the calendar's memoized blackout Set for O(1) lookup
|
|
24838
|
+
// (instead of rescanning disabledDays + blackoutDates per render). The
|
|
24839
|
+
// Set is rebuilt only when either source array reference changes — see
|
|
24840
|
+
// auro-calendar.js#_getBlackoutSet.
|
|
24841
|
+
if (this.calendar && typeof this.calendar._getBlackoutSet === 'function') {
|
|
24842
|
+
if (this.calendar._getBlackoutSet().has(this.day.date)) {
|
|
24704
24843
|
return true;
|
|
24705
24844
|
}
|
|
24845
|
+
// If the cell's local disabledDays diverged from the calendar's (a
|
|
24846
|
+
// consumer or test mutated cell.disabledDays directly), the Set does
|
|
24847
|
+
// not reflect that addition — fall through to the per-cell scan only
|
|
24848
|
+
// when the reference no longer matches. Production data flow keeps
|
|
24849
|
+
// these identical, so this branch stays cold. Guarded with
|
|
24850
|
+
// Array.isArray to match `_getBlackoutSet`'s contract: non-array
|
|
24851
|
+
// values are treated as empty rather than crashing on `.findIndex`.
|
|
24852
|
+
if (Array.isArray(this.disabledDays) && this.disabledDays !== this.calendar.disabledDays && this.disabledDays.length > 0) {
|
|
24853
|
+
if (this.disabledDays.findIndex((dd) => parseInt(dd, 10) === this.day.date) !== -1) {
|
|
24854
|
+
return true;
|
|
24855
|
+
}
|
|
24856
|
+
}
|
|
24857
|
+
return false;
|
|
24706
24858
|
}
|
|
24707
24859
|
|
|
24708
|
-
|
|
24860
|
+
// Pre-firstUpdated fallback — the cell may render once before the
|
|
24861
|
+
// ancestor calendar is wired up. Routes through the shared
|
|
24862
|
+
// blackoutUtils helper so the parsing rules stay in one place.
|
|
24863
|
+
return isBlackoutTimestamp(this.day.date, this.disabledDays, this.datepicker?.blackoutDates);
|
|
24709
24864
|
}
|
|
24710
24865
|
|
|
24711
24866
|
/**
|
|
@@ -24811,12 +24966,12 @@ class AuroCalendarCell extends i$2 {
|
|
|
24811
24966
|
const parsedDateFrom = Number.parseInt(this.dateFrom, 10);
|
|
24812
24967
|
if (!Number.isFinite(parsedDateFrom)) return null;
|
|
24813
24968
|
|
|
24814
|
-
const departTimestamp =
|
|
24969
|
+
const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
24815
24970
|
const dayDate = this.day.date;
|
|
24816
24971
|
|
|
24817
24972
|
const parsedDateTo = Number.parseInt(this.dateTo, 10);
|
|
24818
24973
|
const hasDateTo = Number.isFinite(parsedDateTo);
|
|
24819
|
-
const returnTimestamp = hasDateTo ?
|
|
24974
|
+
const returnTimestamp = hasDateTo ? new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
|
|
24820
24975
|
|
|
24821
24976
|
if (dayDate === departTimestamp) return this.datepicker.rangeLabelStart || 'range start';
|
|
24822
24977
|
|
|
@@ -24826,7 +24981,9 @@ class AuroCalendarCell extends i$2 {
|
|
|
24826
24981
|
|
|
24827
24982
|
if (hasDateTo && dayDate > departTimestamp && dayDate < returnTimestamp) return this.datepicker.rangeLabelInRange || 'in range';
|
|
24828
24983
|
|
|
24829
|
-
|
|
24984
|
+
if (!hasDateTo && dayDate > departTimestamp) return this.datepicker.rangeLabelEndPreview || 'previewing range end';
|
|
24985
|
+
|
|
24986
|
+
// After end date when both dateFrom and dateTo are set.
|
|
24830
24987
|
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
24831
24988
|
}
|
|
24832
24989
|
|
|
@@ -24839,7 +24996,7 @@ class AuroCalendarCell extends i$2 {
|
|
|
24839
24996
|
*/
|
|
24840
24997
|
isDepartDate(day, dateFrom) {
|
|
24841
24998
|
const parsedDateFrom = parseInt(dateFrom, 10);
|
|
24842
|
-
const departTimestamp =
|
|
24999
|
+
const departTimestamp = new Date(parsedDateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
24843
25000
|
|
|
24844
25001
|
return this.selected && day.date === departTimestamp;
|
|
24845
25002
|
}
|
|
@@ -24854,7 +25011,7 @@ class AuroCalendarCell extends i$2 {
|
|
|
24854
25011
|
*/
|
|
24855
25012
|
isReturnDate(day, dateFrom, dateTo) {
|
|
24856
25013
|
const parsedDateTo = parseInt(dateTo, 10);
|
|
24857
|
-
const returnTimestamp =
|
|
25014
|
+
const returnTimestamp = new Date(parsedDateTo * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
24858
25015
|
|
|
24859
25016
|
return this.selected && day.date === returnTimestamp && dateFrom;
|
|
24860
25017
|
}
|
|
@@ -25018,6 +25175,7 @@ class AuroCalendarCell extends i$2 {
|
|
|
25018
25175
|
setTimeout(() => this.firstUpdated(), 0);
|
|
25019
25176
|
return;
|
|
25020
25177
|
}
|
|
25178
|
+
this.calendar = calendar;
|
|
25021
25179
|
this.datepicker = calendar.datepicker;
|
|
25022
25180
|
this._slotContentHandler = () => {
|
|
25023
25181
|
this.handleSlotContent();
|
|
@@ -25075,15 +25233,28 @@ class AuroCalendarCell extends i$2 {
|
|
|
25075
25233
|
this._cachedButton = this.shadowRoot.querySelector('button.day');
|
|
25076
25234
|
});
|
|
25077
25235
|
|
|
25078
|
-
//
|
|
25236
|
+
// Keep the host's gridcell aria attributes in sync with the day data.
|
|
25079
25237
|
this.updateHostAria();
|
|
25080
25238
|
}
|
|
25081
25239
|
|
|
25082
25240
|
// Update host aria when selection changes (aria-selected, range labels)
|
|
25083
|
-
|
|
25241
|
+
// or when isCurrentDate flips (aria-current).
|
|
25242
|
+
if (properties.has('dateFrom') || properties.has('dateTo') || properties.has('selected') || properties.has('isCurrentDate')) {
|
|
25084
25243
|
this.updateHostAria();
|
|
25085
25244
|
}
|
|
25086
25245
|
|
|
25246
|
+
// When the rendered range shifts (month nav, min/max change), a cell
|
|
25247
|
+
// host may be re-rendered for a new date that is now out-of-range —
|
|
25248
|
+
// but its imperatively-set `active` flag and `activeCell` ring class
|
|
25249
|
+
// from the previous date persist because setActiveCell only iterates
|
|
25250
|
+
// focusable (in-range) cells when clearing the prior active state.
|
|
25251
|
+
// Drop the active state here so the disabled cell isn't left visually
|
|
25252
|
+
// ringed.
|
|
25253
|
+
if ((properties.has('day') || properties.has('min') || properties.has('max')) &&
|
|
25254
|
+
this.active && this.isOutOfRange(this.day, this.min, this.max)) {
|
|
25255
|
+
this.clearActive();
|
|
25256
|
+
}
|
|
25257
|
+
|
|
25087
25258
|
// Configure popover when it first becomes rendered
|
|
25088
25259
|
if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
|
|
25089
25260
|
this.updateComplete.then(() => this.configurePopover());
|
|
@@ -25091,8 +25262,8 @@ class AuroCalendarCell extends i$2 {
|
|
|
25091
25262
|
}
|
|
25092
25263
|
|
|
25093
25264
|
/**
|
|
25094
|
-
*
|
|
25095
|
-
*
|
|
25265
|
+
* Sets host-level ARIA so each cell exposes its date, selection state,
|
|
25266
|
+
* and blackout status to assistive tech browsing the month grid.
|
|
25096
25267
|
* @private
|
|
25097
25268
|
* @returns {void}
|
|
25098
25269
|
*/
|
|
@@ -25101,16 +25272,27 @@ class AuroCalendarCell extends i$2 {
|
|
|
25101
25272
|
|
|
25102
25273
|
const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
|
|
25103
25274
|
if (outOfRange) {
|
|
25275
|
+
// Strip every aria attribute the in-range branch may have set on a
|
|
25276
|
+
// previous render — if a cell flips from in-range to out-of-range
|
|
25277
|
+
// (calendar shifts months, minDate/maxDate change, etc.).
|
|
25104
25278
|
this.removeAttribute('role');
|
|
25105
25279
|
this.removeAttribute('aria-label');
|
|
25280
|
+
this.removeAttribute('aria-current');
|
|
25281
|
+
this.removeAttribute('aria-selected');
|
|
25282
|
+
this.removeAttribute('aria-disabled');
|
|
25106
25283
|
return;
|
|
25107
25284
|
}
|
|
25108
25285
|
|
|
25109
|
-
// The host acts as the gridcell for ariaActiveDescendantElement.
|
|
25110
25286
|
this.setAttribute('role', 'gridcell');
|
|
25111
25287
|
this.setAttribute('aria-label', this.getAriaLabel());
|
|
25112
25288
|
this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
|
|
25113
25289
|
|
|
25290
|
+
if (this.isCurrentDate) {
|
|
25291
|
+
this.setAttribute('aria-current', 'date');
|
|
25292
|
+
} else {
|
|
25293
|
+
this.removeAttribute('aria-current');
|
|
25294
|
+
}
|
|
25295
|
+
|
|
25114
25296
|
if (this.isBlackout()) {
|
|
25115
25297
|
this.setAttribute('aria-disabled', 'true');
|
|
25116
25298
|
} else {
|
|
@@ -25125,7 +25307,7 @@ class AuroCalendarCell extends i$2 {
|
|
|
25125
25307
|
* @returns {void}
|
|
25126
25308
|
*/
|
|
25127
25309
|
focusButton() {
|
|
25128
|
-
const button = this._cachedButton || this.shadowRoot.querySelector('button:not([
|
|
25310
|
+
const button = this._cachedButton || this.shadowRoot.querySelector('button:not([disabled])');
|
|
25129
25311
|
if (button) {
|
|
25130
25312
|
button.focus({ focusVisible: true });
|
|
25131
25313
|
}
|
|
@@ -25133,10 +25315,22 @@ class AuroCalendarCell extends i$2 {
|
|
|
25133
25315
|
|
|
25134
25316
|
/**
|
|
25135
25317
|
* Imperatively marks this cell as active without triggering a Lit re-render.
|
|
25136
|
-
*
|
|
25318
|
+
* Buttons stay tabindex="-1" because DOM focus stays on the grid wrapper —
|
|
25319
|
+
* arrow keys move the active cell imperatively and the live region carries
|
|
25320
|
+
* the SR announcement.
|
|
25321
|
+
*
|
|
25322
|
+
* Refuses to activate out-of-range cells: those are aria-hidden, have no
|
|
25323
|
+
* click/focus handlers, and are filtered out of `getFocusableCells`. The
|
|
25324
|
+
* active class showing on a disabled cell would be visually misleading,
|
|
25325
|
+
* so this guard is the single source of truth across every code path
|
|
25326
|
+
* that might call setActive (keyboard nav, focus restore, cell click).
|
|
25137
25327
|
* @returns {void}
|
|
25138
25328
|
*/
|
|
25139
25329
|
setActive() {
|
|
25330
|
+
if (this.isOutOfRange(this.day, this.min, this.max)) {
|
|
25331
|
+
return;
|
|
25332
|
+
}
|
|
25333
|
+
|
|
25140
25334
|
this.active = true;
|
|
25141
25335
|
|
|
25142
25336
|
// Show the popover when this cell becomes active via keyboard navigation.
|
|
@@ -25175,10 +25369,13 @@ class AuroCalendarCell extends i$2 {
|
|
|
25175
25369
|
if (!btn || !this.day) return;
|
|
25176
25370
|
|
|
25177
25371
|
const dayDate = this.day.date;
|
|
25178
|
-
const departTimestamp =
|
|
25372
|
+
const departTimestamp = new Date(dateFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
25179
25373
|
const isInRange = dayDate > departTimestamp && dayDate < hoveredDate;
|
|
25180
|
-
|
|
25181
|
-
|
|
25374
|
+
// `>=` so hovering the depart cell itself (a same-day round-trip
|
|
25375
|
+
// preview) still surfaces a visual cue: the depart cell receives both
|
|
25376
|
+
// rangeDepartDate and lastHoveredDate.
|
|
25377
|
+
const isLastHovered = dayDate === hoveredDate && hoveredDate >= departTimestamp;
|
|
25378
|
+
const isDepartWithPreview = dayDate === departTimestamp && hoveredDate >= departTimestamp;
|
|
25182
25379
|
|
|
25183
25380
|
btn.classList.toggle('inRange', isInRange);
|
|
25184
25381
|
btn.classList.toggle('lastHoveredDate', isLastHovered);
|
|
@@ -25236,7 +25433,6 @@ class AuroCalendarCell extends i$2 {
|
|
|
25236
25433
|
@focus="${outOfRange ? undefined : this.handleFocus}"
|
|
25237
25434
|
class="${e$2(buttonClasses)}"
|
|
25238
25435
|
?disabled="${outOfRange}"
|
|
25239
|
-
aria-hidden="${outOfRange ? 'true' : A$7}"
|
|
25240
25436
|
tabindex="-1">
|
|
25241
25437
|
<div class="buttonWrapper" aria-hidden="true">
|
|
25242
25438
|
<div class="currentDayMarker">${this.day?.title || A$7}</div>
|
|
@@ -25947,7 +26143,7 @@ class CalendarUtilities {
|
|
|
25947
26143
|
|
|
25948
26144
|
var colorCss$4$2 = i$4`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
|
|
25949
26145
|
|
|
25950
|
-
var styleCss$4$3 = i$4`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1
|
|
26146
|
+
var styleCss$4$3 = i$4`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{padding:var(--ds-size-200, 1rem)}`;
|
|
25951
26147
|
|
|
25952
26148
|
var tokenCss$4 = i$4`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
|
|
25953
26149
|
|
|
@@ -26342,7 +26538,7 @@ let AuroBibtemplate$3 = class AuroBibtemplate extends i$2 {
|
|
|
26342
26538
|
}
|
|
26343
26539
|
};
|
|
26344
26540
|
|
|
26345
|
-
var formkitVersion$2$1 = '
|
|
26541
|
+
var formkitVersion$2$1 = '202607010104';
|
|
26346
26542
|
|
|
26347
26543
|
let l$1$2 = 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$2 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1$2 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1$3=i$4`: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}
|
|
26348
26544
|
`,u$4$2=i$4`.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}}
|
|
@@ -26447,6 +26643,15 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
26447
26643
|
*/
|
|
26448
26644
|
this.activeCellDate = null;
|
|
26449
26645
|
|
|
26646
|
+
/**
|
|
26647
|
+
* Cached reference to the active cell host. Set by setActiveCell and
|
|
26648
|
+
* refreshed by scrollToActiveCell when its cache check misses (stale
|
|
26649
|
+
* or missing). Lets scrollToActiveCell skip a full cell scan on each
|
|
26650
|
+
* arrow key.
|
|
26651
|
+
* @private
|
|
26652
|
+
*/
|
|
26653
|
+
this._activeCell = null;
|
|
26654
|
+
|
|
26450
26655
|
/**
|
|
26451
26656
|
* Whether the #calendarGrid wrapper currently has focus.
|
|
26452
26657
|
* Used to determine whether the visualFocus ring should be shown.
|
|
@@ -26465,7 +26670,11 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
26465
26670
|
this.calendarRangeMonths = null;
|
|
26466
26671
|
|
|
26467
26672
|
/**
|
|
26468
|
-
*
|
|
26673
|
+
* @deprecated Use `auro-datepicker.blackoutDates` (an array of
|
|
26674
|
+
* `YYYY-MM-DD` ISO strings) instead. This legacy array of Unix
|
|
26675
|
+
* timestamps is still honored for backward compatibility but emits a
|
|
26676
|
+
* one-time `console.debug` the first time a non-empty value is observed.
|
|
26677
|
+
* Support will be removed in a future major release.
|
|
26469
26678
|
* @private
|
|
26470
26679
|
*/
|
|
26471
26680
|
this.disabledDays = [];
|
|
@@ -26722,17 +26931,44 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
26722
26931
|
* @returns {void}
|
|
26723
26932
|
*/
|
|
26724
26933
|
updateActiveCellForVisibleMonth() {
|
|
26725
|
-
|
|
26726
|
-
|
|
26727
|
-
requestAnimationFrame(() => {
|
|
26728
|
-
requestAnimationFrame(() => {
|
|
26729
|
-
const newDate = this.computeActiveDate({ skipDateFrom: true });
|
|
26934
|
+
this._afterMonthRender(() => {
|
|
26935
|
+
const newDate = this.computeActiveDate({ skipDateFrom: true });
|
|
26730
26936
|
|
|
26731
|
-
|
|
26732
|
-
|
|
26733
|
-
|
|
26734
|
-
|
|
26735
|
-
|
|
26937
|
+
if (newDate !== null && newDate !== undefined) {
|
|
26938
|
+
this.activeCellDate = newDate;
|
|
26939
|
+
this.setActiveCell(this.activeCellDate);
|
|
26940
|
+
}
|
|
26941
|
+
});
|
|
26942
|
+
}
|
|
26943
|
+
|
|
26944
|
+
/**
|
|
26945
|
+
* Schedules `callback` two animation frames out, giving the child
|
|
26946
|
+
* `auro-formkit-calendar-month` and `auro-formkit-calendar-cell` elements
|
|
26947
|
+
* a full render-and-paint cycle to settle before the callback reads or
|
|
26948
|
+
* mutates DOM.
|
|
26949
|
+
*
|
|
26950
|
+
* Why two frames, not one:
|
|
26951
|
+
* 1. Lit batches property updates and renders in a microtask, so frame N
|
|
26952
|
+
* schedules the render but the new DOM may not be painted yet.
|
|
26953
|
+
* 2. Cells re-cache `_cachedButton` inside their own `updateComplete.then`,
|
|
26954
|
+
* which also lands a tick later. Reading buttons from frame N+1
|
|
26955
|
+
* (after both renders + cache refresh have flushed) reliably hits the
|
|
26956
|
+
* new month's cells.
|
|
26957
|
+
*
|
|
26958
|
+
* Used by every code path that calls `handleNextMonth`/`handlePrevMonth`
|
|
26959
|
+
* and then needs to inspect the freshly-rendered cells (cross-month
|
|
26960
|
+
* keyboard nav, boundary events, `updateActiveCellForVisibleMonth`).
|
|
26961
|
+
* Do NOT collapse to a single rAF — it intermittently lands before
|
|
26962
|
+
* `_cachedButton` is refreshed, which silently breaks focus restoration
|
|
26963
|
+
* and `setActiveCell` lookups.
|
|
26964
|
+
* @private
|
|
26965
|
+
* @param {() => void} callback - Runs once after the month re-render and
|
|
26966
|
+
* the cells' button caches have refreshed.
|
|
26967
|
+
* @returns {void}
|
|
26968
|
+
*/
|
|
26969
|
+
_afterMonthRender(callback) {
|
|
26970
|
+
requestAnimationFrame(() => {
|
|
26971
|
+
requestAnimationFrame(callback);
|
|
26736
26972
|
});
|
|
26737
26973
|
}
|
|
26738
26974
|
|
|
@@ -26850,6 +27086,47 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
26850
27086
|
return Array.from(this.shadowRoot.querySelectorAll('auro-formkit-calendar-month'));
|
|
26851
27087
|
}
|
|
26852
27088
|
|
|
27089
|
+
/**
|
|
27090
|
+
* Picks the focusable cell whose date is closest to targetTs. Used as a
|
|
27091
|
+
* fallback after a month-boundary nav when the exact target date isn't
|
|
27092
|
+
* focusable — typically because the month re-render lagged or the date
|
|
27093
|
+
* was filtered out by isOutOfRange. When two cells are equidistant, the
|
|
27094
|
+
* navigation direction breaks the tie so the user moves the way they
|
|
27095
|
+
* pressed (forward → later cell, backward → earlier cell).
|
|
27096
|
+
* @private
|
|
27097
|
+
* @param {Array} cells - Focusable cells from getAllFocusableCells.
|
|
27098
|
+
* @param {Number} targetTs - Desired Unix timestamp (seconds).
|
|
27099
|
+
* @param {'next'|'prev'} direction - Navigation direction.
|
|
27100
|
+
* @returns {Object|null} The nearest cell, or null when cells is empty.
|
|
27101
|
+
*/
|
|
27102
|
+
pickNearestCell(cells, targetTs, direction) {
|
|
27103
|
+
if (!cells.length) {
|
|
27104
|
+
return null;
|
|
27105
|
+
}
|
|
27106
|
+
const forward = direction === 'next';
|
|
27107
|
+
let best = null;
|
|
27108
|
+
let bestDelta = Infinity;
|
|
27109
|
+
cells.forEach((cell) => {
|
|
27110
|
+
if (!cell.day) {
|
|
27111
|
+
return;
|
|
27112
|
+
}
|
|
27113
|
+
const distance = Math.abs(cell.day.date - targetTs);
|
|
27114
|
+
if (distance < bestDelta) {
|
|
27115
|
+
best = cell;
|
|
27116
|
+
bestDelta = distance;
|
|
27117
|
+
return;
|
|
27118
|
+
}
|
|
27119
|
+
if (distance === bestDelta && best) {
|
|
27120
|
+
if (forward && cell.day.date > best.day.date) {
|
|
27121
|
+
best = cell;
|
|
27122
|
+
} else if (!forward && cell.day.date < best.day.date) {
|
|
27123
|
+
best = cell;
|
|
27124
|
+
}
|
|
27125
|
+
}
|
|
27126
|
+
});
|
|
27127
|
+
return best;
|
|
27128
|
+
}
|
|
27129
|
+
|
|
26853
27130
|
/**
|
|
26854
27131
|
* Gets all focusable cells across all rendered months.
|
|
26855
27132
|
* @private
|
|
@@ -26866,9 +27143,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
26866
27143
|
|
|
26867
27144
|
/**
|
|
26868
27145
|
* Sets the active cell across all months. Only one cell has tabindex="0" at a time.
|
|
26869
|
-
* Uses imperative DOM manipulation — no Lit re-render triggered.
|
|
26870
|
-
*
|
|
26871
|
-
*
|
|
27146
|
+
* Uses imperative DOM manipulation — no Lit re-render triggered. DOM focus
|
|
27147
|
+
* stays on the grid wrapper; the live region (see getOrCreateLiveRegion)
|
|
27148
|
+
* is what announces the active cell to assistive tech.
|
|
26872
27149
|
* @param {Number} date - Unix timestamp of the cell to activate.
|
|
26873
27150
|
* @returns {void}
|
|
26874
27151
|
*/
|
|
@@ -26886,6 +27163,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
26886
27163
|
});
|
|
26887
27164
|
|
|
26888
27165
|
this.activeCellDate = date;
|
|
27166
|
+
// Cache so scrollToActiveCell can scroll without re-querying all cells
|
|
27167
|
+
// on every arrow keypress.
|
|
27168
|
+
this._activeCell = newActiveCell;
|
|
26889
27169
|
|
|
26890
27170
|
// Apply activeCell ring only when the grid currently has focus.
|
|
26891
27171
|
if (newActiveCell && this._gridHasFocus) {
|
|
@@ -26917,10 +27197,23 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
26917
27197
|
/**
|
|
26918
27198
|
* Shows the activeCell ring when the grid gains focus.
|
|
26919
27199
|
* @private
|
|
27200
|
+
* @param {FocusEvent} [event] - The focusin event.
|
|
26920
27201
|
* @returns {void}
|
|
26921
27202
|
*/
|
|
26922
|
-
handleGridFocusIn() {
|
|
27203
|
+
handleGridFocusIn(event) {
|
|
26923
27204
|
this._gridHasFocus = true;
|
|
27205
|
+
|
|
27206
|
+
// Only apply the activeCell ring when the grid wrapper itself receives focus
|
|
27207
|
+
// (Tab/programmatic). When focus moves into a cell button via mousedown,
|
|
27208
|
+
// event.target is the cell descendant — skip the ring here. The subsequent
|
|
27209
|
+
// click handler calls setActiveCell on the clicked cell, which applies the
|
|
27210
|
+
// ring there. Without this guard, mousedown briefly flashes the ring on the
|
|
27211
|
+
// previously-active cell (e.g. the 1st-of-month set by month navigation
|
|
27212
|
+
// when the grid was not focused).
|
|
27213
|
+
if (event && event.target !== event.currentTarget) {
|
|
27214
|
+
return;
|
|
27215
|
+
}
|
|
27216
|
+
|
|
26924
27217
|
const activeCell = this.getAllFocusableCells().find((cell) => cell.active);
|
|
26925
27218
|
if (activeCell) {
|
|
26926
27219
|
const btn = activeCell._cachedButton || activeCell.shadowRoot.querySelector('button.day');
|
|
@@ -26949,6 +27242,65 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
26949
27242
|
this.clearRangePreview();
|
|
26950
27243
|
}
|
|
26951
27244
|
|
|
27245
|
+
/**
|
|
27246
|
+
* Returns a memoized Set of blackout timestamps (seconds) drawn from both
|
|
27247
|
+
* the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
|
|
27248
|
+
* The cache invalidates when either source array's reference changes, which
|
|
27249
|
+
* matches Lit's own reactive identity semantics for array properties.
|
|
27250
|
+
* @private
|
|
27251
|
+
* @returns {Set<Number>}
|
|
27252
|
+
*/
|
|
27253
|
+
_getBlackoutSet() {
|
|
27254
|
+
// Normalize non-array values to a stable `null` sentinel rather than a
|
|
27255
|
+
// fresh `[]` per call — otherwise the reference-identity cache key
|
|
27256
|
+
// (`_cachedBlackoutDisabledDays === disabledDays`) never matches on
|
|
27257
|
+
// subsequent calls and the Set rebuilds every time. `buildBlackoutSet`
|
|
27258
|
+
// already treats null/non-array as "no legacy disabledDays" via its
|
|
27259
|
+
// own Array.isArray gate.
|
|
27260
|
+
const disabledDays = Array.isArray(this.disabledDays) ? this.disabledDays : null;
|
|
27261
|
+
const blackoutDates = this.datepicker?.blackoutDates;
|
|
27262
|
+
if (this._blackoutSet &&
|
|
27263
|
+
this._cachedBlackoutDisabledDays === disabledDays &&
|
|
27264
|
+
this._cachedBlackoutDates === blackoutDates) {
|
|
27265
|
+
return this._blackoutSet;
|
|
27266
|
+
}
|
|
27267
|
+
|
|
27268
|
+
if (disabledDays && disabledDays.length > 0) {
|
|
27269
|
+
this._warnDisabledDaysDeprecated();
|
|
27270
|
+
}
|
|
27271
|
+
|
|
27272
|
+
this._blackoutSet = buildBlackoutSet(disabledDays, blackoutDates);
|
|
27273
|
+
this._cachedBlackoutDisabledDays = disabledDays;
|
|
27274
|
+
this._cachedBlackoutDates = blackoutDates;
|
|
27275
|
+
return this._blackoutSet;
|
|
27276
|
+
}
|
|
27277
|
+
|
|
27278
|
+
/**
|
|
27279
|
+
* Per-class flag that gates the `disabledDays` deprecation warning so it
|
|
27280
|
+
* fires exactly once per page no matter how many calendars or rebuild
|
|
27281
|
+
* cycles encounter the legacy array.
|
|
27282
|
+
* @private
|
|
27283
|
+
*/
|
|
27284
|
+
static _warnedDisabledDaysDeprecation = false;
|
|
27285
|
+
|
|
27286
|
+
/**
|
|
27287
|
+
* One-time `console.debug` directing consumers from the legacy
|
|
27288
|
+
* `disabledDays` Unix-timestamp API to the ISO `blackoutDates` API. Fires
|
|
27289
|
+
* the first time `_getBlackoutSet` rebuilds from a non-empty
|
|
27290
|
+
* `disabledDays`; subsequent calls (on this or any other AuroCalendar
|
|
27291
|
+
* instance on the page) are silent.
|
|
27292
|
+
* @private
|
|
27293
|
+
* @returns {void}
|
|
27294
|
+
*/
|
|
27295
|
+
_warnDisabledDaysDeprecated() {
|
|
27296
|
+
if (AuroCalendar._warnedDisabledDaysDeprecation) {
|
|
27297
|
+
return;
|
|
27298
|
+
}
|
|
27299
|
+
AuroCalendar._warnedDisabledDaysDeprecation = true;
|
|
27300
|
+
// eslint-disable-next-line no-console
|
|
27301
|
+
console.debug('[auro-datepicker] The `disabledDays` property (Unix timestamps) is deprecated. Migrate to the `blackoutDates` property on auro-datepicker (an array of `YYYY-MM-DD` ISO strings). `disabledDays` will be removed in a future major release.');
|
|
27302
|
+
}
|
|
27303
|
+
|
|
26952
27304
|
/**
|
|
26953
27305
|
* Computes the initial active date from data properties alone — no DOM required.
|
|
26954
27306
|
* Priority:
|
|
@@ -26993,21 +27345,10 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
26993
27345
|
const minTs = Number.isFinite(rawMin) ? rawMin : -Infinity;
|
|
26994
27346
|
const maxTs = Number.isFinite(rawMax) ? rawMax : Infinity;
|
|
26995
27347
|
|
|
26996
|
-
// Build a Set of blackout timestamps for O(1) lookup.
|
|
26997
|
-
|
|
26998
|
-
|
|
26999
|
-
|
|
27000
|
-
// Parse YYYY-MM-DD as local date to avoid UTC shift issues.
|
|
27001
|
-
const isoBlackouts = this.datepicker?.blackoutDates;
|
|
27002
|
-
if (Array.isArray(isoBlackouts)) {
|
|
27003
|
-
for (const isoStr of isoBlackouts) {
|
|
27004
|
-
const parts = isoStr.split('-');
|
|
27005
|
-
const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
|
|
27006
|
-
if (Number.isFinite(ts)) {
|
|
27007
|
-
blackoutSet.add(ts);
|
|
27008
|
-
}
|
|
27009
|
-
}
|
|
27010
|
-
}
|
|
27348
|
+
// Build a Set of blackout timestamps for O(1) lookup. Memoized by the
|
|
27349
|
+
// identity of the source arrays so rapid month nav doesn't rebuild the
|
|
27350
|
+
// Set (and re-parse every ISO string) on every keypress.
|
|
27351
|
+
const blackoutSet = this._getBlackoutSet();
|
|
27011
27352
|
|
|
27012
27353
|
/**
|
|
27013
27354
|
* A date (unix timestamp in seconds, midnight-aligned) is "enabled" when
|
|
@@ -27203,8 +27544,8 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27203
27544
|
|
|
27204
27545
|
/**
|
|
27205
27546
|
* Handles arrow key navigation on the calendar grid wrapper.
|
|
27206
|
-
* Focus stays on the grid wrapper; only
|
|
27207
|
-
*
|
|
27547
|
+
* Focus stays on the grid wrapper; only the visual active-cell indicator
|
|
27548
|
+
* changes. The live region announces the new active cell.
|
|
27208
27549
|
* @private
|
|
27209
27550
|
* @param {KeyboardEvent} event - The keyboard event.
|
|
27210
27551
|
* @returns {void}
|
|
@@ -27269,21 +27610,24 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27269
27610
|
} else {
|
|
27270
27611
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
27271
27612
|
}
|
|
27272
|
-
|
|
27273
|
-
|
|
27274
|
-
|
|
27275
|
-
|
|
27276
|
-
|
|
27277
|
-
|
|
27278
|
-
|
|
27279
|
-
|
|
27280
|
-
|
|
27613
|
+
this._afterMonthRender(() => {
|
|
27614
|
+
const cells = this.getAllFocusableCells();
|
|
27615
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetTs);
|
|
27616
|
+
if (target) {
|
|
27617
|
+
this.setActiveCell(target.day.date);
|
|
27618
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
27619
|
+
} else {
|
|
27620
|
+
const fallback = this.pickNearestCell(cells, targetTs, navDir);
|
|
27621
|
+
if (fallback) {
|
|
27281
27622
|
this.setActiveCell(fallback.day.date);
|
|
27282
27623
|
this.handleCellFocused({ detail: { date: fallback.day.date } });
|
|
27283
27624
|
}
|
|
27284
|
-
|
|
27285
|
-
|
|
27286
|
-
|
|
27625
|
+
}
|
|
27626
|
+
// Scroll AFTER the cross-month setActiveCell so the freshly
|
|
27627
|
+
// activated cell is what gets scrolled into view.
|
|
27628
|
+
this.scrollToActiveCell();
|
|
27629
|
+
// Re-focus grid wrapper after month change re-render
|
|
27630
|
+
this.focusActiveCell();
|
|
27287
27631
|
});
|
|
27288
27632
|
}
|
|
27289
27633
|
}
|
|
@@ -27309,26 +27653,23 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27309
27653
|
} else {
|
|
27310
27654
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
27311
27655
|
}
|
|
27312
|
-
|
|
27313
|
-
|
|
27314
|
-
|
|
27315
|
-
|
|
27316
|
-
|
|
27317
|
-
|
|
27318
|
-
|
|
27319
|
-
|
|
27320
|
-
|
|
27321
|
-
|
|
27322
|
-
if (navDirection === 'next') {
|
|
27323
|
-
[nearest] = cells;
|
|
27324
|
-
} else {
|
|
27325
|
-
nearest = cells[cells.length - 1];
|
|
27326
|
-
}
|
|
27656
|
+
this._afterMonthRender(() => {
|
|
27657
|
+
const cells = this.getAllFocusableCells();
|
|
27658
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
27659
|
+
if (target) {
|
|
27660
|
+
this.setActiveCell(target.day.date);
|
|
27661
|
+
this.handleCellFocused({ detail: { date: target.day.date } });
|
|
27662
|
+
} else {
|
|
27663
|
+
const nearest = this.pickNearestCell(cells, targetDate, navDirection);
|
|
27664
|
+
if (nearest) {
|
|
27327
27665
|
this.setActiveCell(nearest.day.date);
|
|
27328
27666
|
this.handleCellFocused({ detail: { date: nearest.day.date } });
|
|
27329
27667
|
}
|
|
27330
|
-
|
|
27331
|
-
|
|
27668
|
+
}
|
|
27669
|
+
// Scroll AFTER the cross-month setActiveCell so the freshly
|
|
27670
|
+
// activated cell is what gets scrolled into view.
|
|
27671
|
+
this.scrollToActiveCell();
|
|
27672
|
+
this.focusActiveCell();
|
|
27332
27673
|
});
|
|
27333
27674
|
}
|
|
27334
27675
|
}
|
|
@@ -27362,6 +27703,8 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27362
27703
|
const targetCell = allCells[targetIndex];
|
|
27363
27704
|
this.setActiveCell(targetCell.day.date);
|
|
27364
27705
|
this.scrollToActiveCell();
|
|
27706
|
+
// Match the cross-month branches: keep DOM focus on the grid wrapper
|
|
27707
|
+
// so subsequent arrow keys continue to land on this handler.
|
|
27365
27708
|
this.focusActiveCell();
|
|
27366
27709
|
} else if (direction === 'next' && this.showNextMonthBtn) {
|
|
27367
27710
|
// Navigate to next month and focus the computed next date.
|
|
@@ -27378,19 +27721,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27378
27721
|
}
|
|
27379
27722
|
|
|
27380
27723
|
this.handleNextMonth({ skipActiveUpdate: true });
|
|
27381
|
-
|
|
27382
|
-
|
|
27383
|
-
|
|
27384
|
-
|
|
27385
|
-
|
|
27386
|
-
|
|
27387
|
-
|
|
27388
|
-
|
|
27389
|
-
|
|
27390
|
-
|
|
27391
|
-
|
|
27724
|
+
this._afterMonthRender(() => {
|
|
27725
|
+
const cells = this.getAllFocusableCells();
|
|
27726
|
+
const target = cells.find((cell) => cell.day && cell.day.date === nextTs);
|
|
27727
|
+
if (target) {
|
|
27728
|
+
this.setActiveCell(target.day.date);
|
|
27729
|
+
} else {
|
|
27730
|
+
// Same nearest-by-date fallback handleGridKeyDown uses — direct
|
|
27731
|
+
// `cells[length - 1]` would land on the end of the new month,
|
|
27732
|
+
// far from the user's intended `nextTs`.
|
|
27733
|
+
const fallback = this.pickNearestCell(cells, nextTs, 'next');
|
|
27734
|
+
if (fallback) {
|
|
27735
|
+
this.setActiveCell(fallback.day.date);
|
|
27392
27736
|
}
|
|
27393
|
-
}
|
|
27737
|
+
}
|
|
27738
|
+
this.scrollToActiveCell();
|
|
27739
|
+
this.focusActiveCell();
|
|
27394
27740
|
});
|
|
27395
27741
|
} else if (direction === 'prev' && this.showPrevMonthBtn) {
|
|
27396
27742
|
// Navigate to previous month and focus the computed previous date.
|
|
@@ -27404,19 +27750,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27404
27750
|
}
|
|
27405
27751
|
|
|
27406
27752
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
27407
|
-
|
|
27408
|
-
|
|
27409
|
-
|
|
27410
|
-
|
|
27411
|
-
|
|
27412
|
-
|
|
27413
|
-
|
|
27414
|
-
|
|
27415
|
-
|
|
27416
|
-
|
|
27417
|
-
|
|
27753
|
+
this._afterMonthRender(() => {
|
|
27754
|
+
const cells = this.getAllFocusableCells();
|
|
27755
|
+
const target = cells.find((cell) => cell.day && cell.day.date === prevTs);
|
|
27756
|
+
if (target) {
|
|
27757
|
+
this.setActiveCell(target.day.date);
|
|
27758
|
+
} else {
|
|
27759
|
+
// Same nearest-by-date fallback handleGridKeyDown uses — direct
|
|
27760
|
+
// `cells[0]` would land on the start of the previous month, far
|
|
27761
|
+
// from the user's intended `prevTs`.
|
|
27762
|
+
const fallback = this.pickNearestCell(cells, prevTs, 'prev');
|
|
27763
|
+
if (fallback) {
|
|
27764
|
+
this.setActiveCell(fallback.day.date);
|
|
27418
27765
|
}
|
|
27419
|
-
}
|
|
27766
|
+
}
|
|
27767
|
+
this.scrollToActiveCell();
|
|
27768
|
+
this.focusActiveCell();
|
|
27420
27769
|
});
|
|
27421
27770
|
}
|
|
27422
27771
|
} else if (key === 'ArrowDown' || key === 'ArrowUp') {
|
|
@@ -27444,20 +27793,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27444
27793
|
} else {
|
|
27445
27794
|
this.handlePrevMonth({ skipActiveUpdate: true });
|
|
27446
27795
|
}
|
|
27447
|
-
|
|
27448
|
-
|
|
27449
|
-
|
|
27450
|
-
|
|
27451
|
-
|
|
27452
|
-
|
|
27453
|
-
|
|
27454
|
-
|
|
27455
|
-
|
|
27456
|
-
|
|
27796
|
+
this._afterMonthRender(() => {
|
|
27797
|
+
const cells = this.getAllFocusableCells();
|
|
27798
|
+
const target = cells.find((cell) => cell.day && cell.day.date === targetDate);
|
|
27799
|
+
if (target) {
|
|
27800
|
+
this.setActiveCell(target.day.date);
|
|
27801
|
+
} else {
|
|
27802
|
+
// Same nearest-by-date fallback handleGridKeyDown uses — the
|
|
27803
|
+
// old direction-based `cells[0]`/`cells[length-1]` clamp
|
|
27804
|
+
// could land 25+ days from the intended target.
|
|
27805
|
+
const nearest = this.pickNearestCell(cells, targetDate, navDirection);
|
|
27806
|
+
if (nearest) {
|
|
27457
27807
|
this.setActiveCell(nearest.day.date);
|
|
27458
|
-
this.focusActiveCell();
|
|
27459
27808
|
}
|
|
27460
|
-
}
|
|
27809
|
+
}
|
|
27810
|
+
this.scrollToActiveCell();
|
|
27811
|
+
this.focusActiveCell();
|
|
27461
27812
|
});
|
|
27462
27813
|
}
|
|
27463
27814
|
}
|
|
@@ -27496,8 +27847,9 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27496
27847
|
return;
|
|
27497
27848
|
}
|
|
27498
27849
|
|
|
27499
|
-
//
|
|
27500
|
-
// so
|
|
27850
|
+
// DOM focus stays on the grid wrapper while arrow keys move the active
|
|
27851
|
+
// cell, so cell buttons never receive native focus. The debounced live
|
|
27852
|
+
// region carries the full-context announcement instead.
|
|
27501
27853
|
const announcement = this.buildFocusAnnouncement(date);
|
|
27502
27854
|
this.announceFocusDebounced(announcement);
|
|
27503
27855
|
|
|
@@ -27567,10 +27919,10 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27567
27919
|
return null;
|
|
27568
27920
|
}
|
|
27569
27921
|
|
|
27570
|
-
const departTs =
|
|
27922
|
+
const departTs = new Date(parsedFrom * 1000).setHours(0, 0, 0, 0) / 1000;
|
|
27571
27923
|
const parsedTo = Number.parseInt(this.dateTo, 10);
|
|
27572
27924
|
const hasTo = Number.isFinite(parsedTo);
|
|
27573
|
-
const returnTs = hasTo ?
|
|
27925
|
+
const returnTs = hasTo ? new Date(parsedTo * 1000).setHours(0, 0, 0, 0) / 1000 : null;
|
|
27574
27926
|
|
|
27575
27927
|
if (date === departTs) {
|
|
27576
27928
|
return this.datepicker.rangeLabelStart || 'range start';
|
|
@@ -27584,36 +27936,22 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27584
27936
|
if (hasTo && date > departTs && date < returnTs) {
|
|
27585
27937
|
return this.datepicker.rangeLabelInRange || 'in range';
|
|
27586
27938
|
}
|
|
27939
|
+
if (!hasTo && date > departTs) {
|
|
27940
|
+
return this.datepicker.rangeLabelEndPreview || 'previewing range end';
|
|
27941
|
+
}
|
|
27587
27942
|
return this.datepicker.rangeLabelAfterRange || 'after range';
|
|
27588
27943
|
}
|
|
27589
27944
|
|
|
27590
27945
|
/**
|
|
27591
|
-
* Checks whether a given date is a blackout date.
|
|
27946
|
+
* Checks whether a given date is a blackout date. Delegates to the
|
|
27947
|
+
* memoized `_getBlackoutSet` so the YYYY-MM-DD parsing and the
|
|
27948
|
+
* legacy/ISO merge rules live in exactly one place (see `blackoutUtils.js`).
|
|
27592
27949
|
* @private
|
|
27593
27950
|
* @param {Number} dateTs - Unix timestamp (seconds).
|
|
27594
27951
|
* @returns {Boolean} True if the date is blacked out.
|
|
27595
27952
|
*/
|
|
27596
27953
|
isDateBlackout(dateTs) {
|
|
27597
|
-
|
|
27598
|
-
if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
|
|
27599
|
-
if (this.disabledDays.findIndex((day) => parseInt(day, 10) === dateTs) !== -1) {
|
|
27600
|
-
return true;
|
|
27601
|
-
}
|
|
27602
|
-
}
|
|
27603
|
-
|
|
27604
|
-
// Check ISO blackoutDates.
|
|
27605
|
-
const blackoutDates = this.datepicker?.blackoutDates;
|
|
27606
|
-
if (Array.isArray(blackoutDates) && blackoutDates.length > 0) {
|
|
27607
|
-
const date = new Date(dateTs * 1000);
|
|
27608
|
-
const yyyy = date.getFullYear();
|
|
27609
|
-
const mm = String(date.getMonth() + 1).padStart(2, '0');
|
|
27610
|
-
const dd = String(date.getDate()).padStart(2, '0');
|
|
27611
|
-
if (blackoutDates.includes(`${yyyy}-${mm}-${dd}`)) {
|
|
27612
|
-
return true;
|
|
27613
|
-
}
|
|
27614
|
-
}
|
|
27615
|
-
|
|
27616
|
-
return false;
|
|
27954
|
+
return this._getBlackoutSet().has(dateTs);
|
|
27617
27955
|
}
|
|
27618
27956
|
|
|
27619
27957
|
/**
|
|
@@ -27671,7 +28009,28 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27671
28009
|
}
|
|
27672
28010
|
|
|
27673
28011
|
/**
|
|
27674
|
-
* Scrolls the calendar
|
|
28012
|
+
* Scrolls the calendar so the active cell is visible.
|
|
28013
|
+
*
|
|
28014
|
+
* Walks the flat tree (rendered, slot-aware) outward from the active
|
|
28015
|
+
* cell's button and calls `scrollBy` on every vertically-scrollable
|
|
28016
|
+
* ancestor by whatever delta still separates the cell from that
|
|
28017
|
+
* ancestor's viewport. Native `scrollIntoView` is not used because the
|
|
28018
|
+
* cell sits inside multiple nested scroll containers (the dropdown bib's
|
|
28019
|
+
* `<dialog>`, the bibtemplate's `#bodyContainer`) and the algorithm only
|
|
28020
|
+
* scrolls one of them on its own, leaving the cell short of the
|
|
28021
|
+
* viewport in mobile fullscreen.
|
|
28022
|
+
*
|
|
28023
|
+
* Uses `behavior: 'auto'` (the spec's universally-supported non-animated
|
|
28024
|
+
* value) so each `scrollBy` resolves synchronously and the next
|
|
28025
|
+
* iteration's `getBoundingClientRect` reads post-scroll positions
|
|
28026
|
+
* accurately. This also satisfies `prefers-reduced-motion` users — the
|
|
28027
|
+
* scroll containers do not set CSS `scroll-behavior: smooth`, so `auto`
|
|
28028
|
+
* is effectively instant.
|
|
28029
|
+
*
|
|
28030
|
+
* The active cell is looked up from the cache populated by
|
|
28031
|
+
* `setActiveCell`. On a cache miss (stale or absent) the cache is
|
|
28032
|
+
* refreshed from a single full scan so subsequent calls stay on the
|
|
28033
|
+
* fast path.
|
|
27675
28034
|
* @private
|
|
27676
28035
|
* @returns {void}
|
|
27677
28036
|
*/
|
|
@@ -27680,16 +28039,69 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27680
28039
|
return;
|
|
27681
28040
|
}
|
|
27682
28041
|
|
|
27683
|
-
|
|
27684
|
-
|
|
27685
|
-
|
|
27686
|
-
|
|
27687
|
-
|
|
28042
|
+
// Prefer the cell cached by setActiveCell so arrow-key navigation does
|
|
28043
|
+
// not rebuild the full cell list on every keypress. Fall back to a
|
|
28044
|
+
// lookup when the cache is stale (e.g. detached after month re-render)
|
|
28045
|
+
// or absent (scrollToActiveCell called without a prior setActiveCell);
|
|
28046
|
+
// refresh the cache on the fallback path so a subsequent call reuses it.
|
|
28047
|
+
const activeDate = this.activeCellDate;
|
|
28048
|
+
const cached = this._activeCell;
|
|
28049
|
+
const cacheFresh = cached && cached.isConnected && cached.day && cached.day.date === activeDate;
|
|
28050
|
+
let activeCell = null;
|
|
28051
|
+
if (cacheFresh) {
|
|
28052
|
+
activeCell = cached;
|
|
28053
|
+
} else {
|
|
28054
|
+
activeCell = this.getAllFocusableCells().find((cell) => cell.day && cell.day.date === activeDate);
|
|
28055
|
+
this._activeCell = activeCell || null;
|
|
28056
|
+
}
|
|
28057
|
+
if (!activeCell) {
|
|
28058
|
+
return;
|
|
28059
|
+
}
|
|
27688
28060
|
|
|
27689
|
-
|
|
27690
|
-
|
|
27691
|
-
|
|
27692
|
-
|
|
28061
|
+
// Scroll the button inside the cell — it has concrete dimensions,
|
|
28062
|
+
// which avoids quirks when the cell host has display: inline / contents
|
|
28063
|
+
// / flex-without-explicit-size.
|
|
28064
|
+
const target = activeCell._cachedButton ||
|
|
28065
|
+
activeCell.shadowRoot?.querySelector('button.day') ||
|
|
28066
|
+
activeCell;
|
|
28067
|
+
|
|
28068
|
+
// parentNode follows the authored DOM tree and steps over shadow roots
|
|
28069
|
+
// via slot projection. A slotted element's visual parent is its
|
|
28070
|
+
// assignedSlot's parent (inside the host's shadow tree), not the host
|
|
28071
|
+
// itself. Without this hop, the walk skips right past #bodyContainer
|
|
28072
|
+
// and <dialog> and finds no scrollable ancestor at all.
|
|
28073
|
+
const flatParent = (current) => {
|
|
28074
|
+
if (current.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
|
|
28075
|
+
return current.host || null;
|
|
28076
|
+
}
|
|
28077
|
+
if (current.assignedSlot) {
|
|
28078
|
+
return current.assignedSlot.parentNode;
|
|
28079
|
+
}
|
|
28080
|
+
return current.parentNode;
|
|
28081
|
+
};
|
|
28082
|
+
|
|
28083
|
+
let node = flatParent(target);
|
|
28084
|
+
while (node && node !== document && node !== window) {
|
|
28085
|
+
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
28086
|
+
const { overflowY } = window.getComputedStyle(node);
|
|
28087
|
+
if (overflowY === 'auto' || overflowY === 'scroll') {
|
|
28088
|
+
const targetRect = target.getBoundingClientRect();
|
|
28089
|
+
const scrollerRect = node.getBoundingClientRect();
|
|
28090
|
+
let delta = 0;
|
|
28091
|
+
if (targetRect.top < scrollerRect.top) {
|
|
28092
|
+
delta = targetRect.top - scrollerRect.top;
|
|
28093
|
+
} else if (targetRect.bottom > scrollerRect.bottom) {
|
|
28094
|
+
delta = targetRect.bottom - scrollerRect.bottom;
|
|
28095
|
+
}
|
|
28096
|
+
if (delta !== 0) {
|
|
28097
|
+
node.scrollBy({
|
|
28098
|
+
top: delta,
|
|
28099
|
+
behavior: 'auto'
|
|
28100
|
+
});
|
|
28101
|
+
}
|
|
28102
|
+
}
|
|
28103
|
+
}
|
|
28104
|
+
node = flatParent(node);
|
|
27693
28105
|
}
|
|
27694
28106
|
}
|
|
27695
28107
|
|
|
@@ -27780,9 +28192,34 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27780
28192
|
// the last one.
|
|
27781
28193
|
if (this._announceRafId) {
|
|
27782
28194
|
cancelAnimationFrame(this._announceRafId);
|
|
28195
|
+
this._announceRafId = null;
|
|
27783
28196
|
}
|
|
28197
|
+
this._deliverAnnouncement(dateStr, 0);
|
|
28198
|
+
}
|
|
28199
|
+
|
|
28200
|
+
/**
|
|
28201
|
+
* Writes `dateStr` to the live region. If the dropdown's dialog hasn't
|
|
28202
|
+
* mounted yet (so getOrCreateLiveRegion can't attach), retries on the
|
|
28203
|
+
* next animation frame up to MAX_LIVE_REGION_RETRIES instead of silently
|
|
28204
|
+
* dropping the announcement. The retry uses the same `_announceRafId`
|
|
28205
|
+
* the double-rAF below uses, so a newer announceSelection call (or
|
|
28206
|
+
* disconnectedCallback) cancels any in-flight retry.
|
|
28207
|
+
* @private
|
|
28208
|
+
* @param {String} dateStr - The localized date string to announce.
|
|
28209
|
+
* @param {Number} attempts - Number of prior retry attempts.
|
|
28210
|
+
* @returns {void}
|
|
28211
|
+
*/
|
|
28212
|
+
_deliverAnnouncement(dateStr, attempts) {
|
|
27784
28213
|
const liveRegion = this.getOrCreateLiveRegion();
|
|
27785
28214
|
if (!liveRegion) {
|
|
28215
|
+
const MAX_LIVE_REGION_RETRIES = 10;
|
|
28216
|
+
if (attempts < MAX_LIVE_REGION_RETRIES) {
|
|
28217
|
+
this._announceRafId = requestAnimationFrame(() => {
|
|
28218
|
+
this._deliverAnnouncement(dateStr, attempts + 1);
|
|
28219
|
+
});
|
|
28220
|
+
} else {
|
|
28221
|
+
this._announceRafId = null;
|
|
28222
|
+
}
|
|
27786
28223
|
return;
|
|
27787
28224
|
}
|
|
27788
28225
|
|
|
@@ -27955,7 +28392,7 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27955
28392
|
</div>
|
|
27956
28393
|
</div>
|
|
27957
28394
|
|
|
27958
|
-
<div class="calendarWrapper
|
|
28395
|
+
<div class="calendarWrapper">
|
|
27959
28396
|
<div class="calendarNavButtons">
|
|
27960
28397
|
${this.showPrevMonthBtn ? u$d`
|
|
27961
28398
|
<button tabIndex="0" class="calendarNavBtn prevMonth" aria-label="${this.datepicker?.navLabelPrevMonth || 'Previous month'}" @click="${this.handlePrevMonth}">
|
|
@@ -27968,7 +28405,7 @@ class AuroCalendar extends RangeDatepicker {
|
|
|
27968
28405
|
</button>
|
|
27969
28406
|
` : undefined}
|
|
27970
28407
|
</div>
|
|
27971
|
-
<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}">
|
|
28408
|
+
<div id="calendarGrid" class="calendars" role="group" aria-roledescription="calendar" tabindex="0" aria-label="${this.datepicker?.calendarGridLabel}" @keydown="${this.handleGridKeyDown}" @focusin="${this.handleGridFocusIn}" @focusout="${this.handleGridFocusOut}" @calendar-month-mouseleave="${this.clearRangePreview}">
|
|
27972
28409
|
${this.renderAllCalendars()}
|
|
27973
28410
|
</div>
|
|
27974
28411
|
</div>
|
|
@@ -31853,7 +32290,7 @@ let AuroHelpText$2$1 = class AuroHelpText extends i$2 {
|
|
|
31853
32290
|
}
|
|
31854
32291
|
};
|
|
31855
32292
|
|
|
31856
|
-
var formkitVersion$1$3 = '
|
|
32293
|
+
var formkitVersion$1$3 = '202607010104';
|
|
31857
32294
|
|
|
31858
32295
|
let AuroElement$2$2 = class AuroElement extends i$2 {
|
|
31859
32296
|
static get properties() {
|
|
@@ -33125,6 +33562,7 @@ let AuroDropdown$3 = class AuroDropdown extends AuroElement$2$2 {
|
|
|
33125
33562
|
role="${o$4(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
33126
33563
|
aria-expanded="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
33127
33564
|
aria-controls="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
33565
|
+
aria-haspopup="${o$4(this.a11yRole === 'combobox' && !this.triggerContentFocusable ? 'listbox' : undefined)}"
|
|
33128
33566
|
aria-labelledby="${o$4(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
33129
33567
|
aria-disabled="${o$4(this.disabled ? 'true' : undefined)}"
|
|
33130
33568
|
@focusin="${this.handleFocusin}"
|
|
@@ -37627,15 +38065,17 @@ let AuroFormValidation$6 = class AuroFormValidation {
|
|
|
37627
38065
|
);
|
|
37628
38066
|
}
|
|
37629
38067
|
|
|
37630
|
-
|
|
37631
|
-
|
|
37632
|
-
|
|
38068
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
38069
|
+
|
|
38070
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
38071
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
38072
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
38073
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
38074
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
37633
38075
|
hasValue = false;
|
|
37634
38076
|
}
|
|
37635
38077
|
}
|
|
37636
38078
|
|
|
37637
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
37638
|
-
|
|
37639
38079
|
if (isCombobox) {
|
|
37640
38080
|
|
|
37641
38081
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -38250,7 +38690,7 @@ function normalizeDates$2(context, ...dates) {
|
|
|
38250
38690
|
* const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))
|
|
38251
38691
|
* //=> Tue Sep 02 2014 00:00:00
|
|
38252
38692
|
*/
|
|
38253
|
-
function startOfDay$
|
|
38693
|
+
function startOfDay$2(date, options) {
|
|
38254
38694
|
const _date = toDate$2(date, options?.in);
|
|
38255
38695
|
_date.setHours(0, 0, 0, 0);
|
|
38256
38696
|
return _date;
|
|
@@ -38298,8 +38738,8 @@ function differenceInCalendarDays$2(laterDate, earlierDate, options) {
|
|
|
38298
38738
|
earlierDate,
|
|
38299
38739
|
);
|
|
38300
38740
|
|
|
38301
|
-
const laterStartOfDay = startOfDay$
|
|
38302
|
-
const earlierStartOfDay = startOfDay$
|
|
38741
|
+
const laterStartOfDay = startOfDay$2(laterDate_);
|
|
38742
|
+
const earlierStartOfDay = startOfDay$2(earlierDate_);
|
|
38303
38743
|
|
|
38304
38744
|
const laterTimestamp =
|
|
38305
38745
|
+laterStartOfDay - getTimezoneOffsetInMilliseconds$2(laterStartOfDay);
|
|
@@ -43571,6 +44011,13 @@ let AuroInputUtilities$2 = class AuroInputUtilities {
|
|
|
43571
44011
|
* @returns {string | undefined}
|
|
43572
44012
|
*/
|
|
43573
44013
|
toFormattedValue(valueObject, format) {
|
|
44014
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
44015
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
44016
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
44017
|
+
// as "no format → no display value".
|
|
44018
|
+
if (!format) {
|
|
44019
|
+
return undefined;
|
|
44020
|
+
}
|
|
43574
44021
|
const normalizedFormat = format.toLowerCase();
|
|
43575
44022
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
43576
44023
|
|
|
@@ -43722,76 +44169,19 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
|
|
|
43722
44169
|
constructor() {
|
|
43723
44170
|
super();
|
|
43724
44171
|
|
|
43725
|
-
|
|
43726
|
-
|
|
43727
|
-
|
|
43728
|
-
|
|
43729
|
-
|
|
43730
|
-
|
|
43731
|
-
|
|
43732
|
-
|
|
43733
|
-
|
|
43734
|
-
|
|
43735
|
-
this.setCustomValidityForType = undefined;
|
|
43736
|
-
this.size = 'lg';
|
|
43737
|
-
this.shape = 'classic';
|
|
43738
|
-
this.value = undefined;
|
|
43739
|
-
|
|
43740
|
-
this._initializePrivateDefaults();
|
|
43741
|
-
}
|
|
43742
|
-
|
|
43743
|
-
/**
|
|
43744
|
-
* Internal Defaults.
|
|
43745
|
-
* @private
|
|
43746
|
-
* @returns {void}
|
|
43747
|
-
*/
|
|
43748
|
-
_initializePrivateDefaults() {
|
|
44172
|
+
// Single-source initialization. Alphabetized so duplicate or stale
|
|
44173
|
+
// defaults are immediately obvious on a diff. Every field is assigned
|
|
44174
|
+
// exactly once here (previously the constructor + the old
|
|
44175
|
+
// `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
|
|
44176
|
+
// fields and double-allocated `util` and `validation`, discarding the
|
|
44177
|
+
// first instance). `validation` is now allocated exactly once; `util`
|
|
44178
|
+
// is seeded here with an en-US default and then rebuilt in
|
|
44179
|
+
// `connectedCallback` once the consumer-resolved locale is available,
|
|
44180
|
+
// so a parent (datepicker/combobox) calling `validate()` synchronously
|
|
44181
|
+
// during its own update cycle sees a populated util instance.
|
|
43749
44182
|
this.activeLabel = false;
|
|
43750
|
-
this.appearance = "default";
|
|
43751
|
-
this.icon = false;
|
|
43752
|
-
this.disabled = false;
|
|
43753
|
-
this.dvInputOnly = false;
|
|
43754
|
-
this.hideLabelVisually = false;
|
|
43755
|
-
this.max = undefined;
|
|
43756
|
-
this.maxLength = undefined;
|
|
43757
|
-
this.min = undefined;
|
|
43758
|
-
this.minLength = undefined;
|
|
43759
|
-
this.noValidate = false;
|
|
43760
|
-
this.onDark = false;
|
|
43761
|
-
this.required = false;
|
|
43762
|
-
this.setCustomValidityForType = undefined;
|
|
43763
|
-
|
|
43764
|
-
// Used for storing raw values returned from input mask.
|
|
43765
|
-
this._rawMaskValue = undefined;
|
|
43766
|
-
|
|
43767
|
-
/**
|
|
43768
|
-
* @private
|
|
43769
|
-
*/
|
|
43770
|
-
this.layout = 'classic';
|
|
43771
|
-
|
|
43772
|
-
/**
|
|
43773
|
-
* @private
|
|
43774
|
-
*/
|
|
43775
|
-
this.shape = 'classic';
|
|
43776
|
-
|
|
43777
|
-
/**
|
|
43778
|
-
* @private
|
|
43779
|
-
*/
|
|
43780
|
-
this.size = 'lg';
|
|
43781
|
-
|
|
43782
|
-
this.touched = false;
|
|
43783
|
-
this.util = new AuroInputUtilities$2({
|
|
43784
|
-
locale: "en-US",
|
|
43785
|
-
format: this.format
|
|
43786
|
-
});
|
|
43787
|
-
this.validation = new AuroFormValidation$6();
|
|
43788
|
-
this.inputIconName = undefined;
|
|
43789
|
-
this.showPassword = false;
|
|
43790
|
-
this.validationCCLength = undefined;
|
|
43791
|
-
this.hasValue = false;
|
|
43792
|
-
this.label = 'Input label is undefined';
|
|
43793
|
-
|
|
43794
44183
|
|
|
44184
|
+
/** @private */
|
|
43795
44185
|
this.allowedInputTypes = [
|
|
43796
44186
|
"text",
|
|
43797
44187
|
"number",
|
|
@@ -43800,7 +44190,9 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
|
|
|
43800
44190
|
"credit-card",
|
|
43801
44191
|
"tel"
|
|
43802
44192
|
];
|
|
43803
|
-
this.
|
|
44193
|
+
this.appearance = "default";
|
|
44194
|
+
|
|
44195
|
+
/** @private */
|
|
43804
44196
|
this.dateFormatMap = {
|
|
43805
44197
|
'mm/dd/yyyy': 'dateMMDDYYYY',
|
|
43806
44198
|
'dd/mm/yyyy': 'dateDDMMYYYY',
|
|
@@ -43817,27 +44209,62 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
|
|
|
43817
44209
|
'dd/mm': 'dateDDMM',
|
|
43818
44210
|
'mm/dd': 'dateMMDD'
|
|
43819
44211
|
};
|
|
44212
|
+
this.disabled = false;
|
|
44213
|
+
|
|
44214
|
+
/** @private */
|
|
43820
44215
|
this.domHandler = new DomHandler$2();
|
|
43821
44216
|
this.dvInputOnly = false;
|
|
43822
44217
|
this.hasValue = false;
|
|
44218
|
+
this.hideLabelVisually = false;
|
|
44219
|
+
this.icon = false;
|
|
44220
|
+
|
|
44221
|
+
/** @private */
|
|
43823
44222
|
this.inputIconName = undefined;
|
|
44223
|
+
|
|
44224
|
+
/** @private */
|
|
43824
44225
|
this.label = 'Input label is undefined';
|
|
44226
|
+
this.layout = 'classic';
|
|
44227
|
+
this.locale = 'en-US';
|
|
44228
|
+
this.max = undefined;
|
|
44229
|
+
this.maxLength = undefined;
|
|
44230
|
+
this.min = undefined;
|
|
44231
|
+
this.minLength = undefined;
|
|
43825
44232
|
this.noValidate = false;
|
|
43826
|
-
this.
|
|
44233
|
+
this.onDark = false;
|
|
44234
|
+
// Raw values returned from the input mask before model normalization.
|
|
44235
|
+
this._rawMaskValue = undefined;
|
|
44236
|
+
this.required = false;
|
|
44237
|
+
this.setCustomValidityForType = undefined;
|
|
44238
|
+
// Credit Card is intentionally excluded — its mask manages the cursor
|
|
44239
|
+
// itself, and listing it here caused cursor placement issues in Safari.
|
|
44240
|
+
/** @private */
|
|
43827
44241
|
this.setSelectionInputTypes = [
|
|
43828
44242
|
"text",
|
|
43829
44243
|
"password",
|
|
43830
44244
|
"email"
|
|
43831
|
-
];
|
|
44245
|
+
];
|
|
44246
|
+
this.shape = 'classic';
|
|
44247
|
+
|
|
44248
|
+
/** @private */
|
|
43832
44249
|
this.showPassword = false;
|
|
44250
|
+
this.size = 'lg';
|
|
43833
44251
|
this.touched = false;
|
|
44252
|
+
|
|
44253
|
+
/** @private */
|
|
43834
44254
|
this.uniqueId = new UniqueId$1().create();
|
|
44255
|
+
|
|
44256
|
+
/** @private */
|
|
43835
44257
|
this.util = new AuroInputUtilities$2({
|
|
43836
44258
|
locale: this.locale,
|
|
43837
44259
|
format: this.format
|
|
43838
44260
|
});
|
|
44261
|
+
|
|
44262
|
+
/** @private */
|
|
43839
44263
|
this.validation = new AuroFormValidation$6();
|
|
44264
|
+
|
|
44265
|
+
/** @private */
|
|
43840
44266
|
this.validationCCLength = undefined;
|
|
44267
|
+
this.value = undefined;
|
|
43841
44268
|
}
|
|
43842
44269
|
|
|
43843
44270
|
// function to define props used within the scope of this component
|
|
@@ -44341,6 +44768,15 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
|
|
|
44341
44768
|
|
|
44342
44769
|
this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
|
|
44343
44770
|
|
|
44771
|
+
// Normalize the format token to lowercase so case-mixed values supplied
|
|
44772
|
+
// via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
|
|
44773
|
+
// lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
|
|
44774
|
+
// format silently misses the map and leaves `setCustomValidityForType`
|
|
44775
|
+
// unset.
|
|
44776
|
+
if (this.format) {
|
|
44777
|
+
this.format = this.format.toLowerCase();
|
|
44778
|
+
}
|
|
44779
|
+
|
|
44344
44780
|
// use validity message override if declared when initializing the component
|
|
44345
44781
|
if (this.hasAttribute('setCustomValidity')) {
|
|
44346
44782
|
this.ValidityMessageOverride = this.setCustomValidity;
|
|
@@ -44424,6 +44860,13 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
|
|
|
44424
44860
|
|
|
44425
44861
|
if (typeToI18n.includes(this.type)) {
|
|
44426
44862
|
this.setCustomValidityForType = i18n$1(this.lang, this.type);
|
|
44863
|
+
// COVERAGE: this `else if` branch is unreachable in WTR. connectedCallback
|
|
44864
|
+
// (L682) calls configureDataForType, which at L1266-1268 assigns
|
|
44865
|
+
// `this.format = this.util.getDateMaskFromLocale().toLowerCase()` for any
|
|
44866
|
+
// type=date input whose `format` attribute is unset. That runs before
|
|
44867
|
+
// firstUpdated invokes setCustomHelpTextMessage, so `!this.format` is
|
|
44868
|
+
// always false here. Retained as a defensive fallback; the whole function
|
|
44869
|
+
// is @deprecated per AB#1557296 and slated for removal.
|
|
44427
44870
|
} else if (!this.format && this.type === 'date') {
|
|
44428
44871
|
this.setCustomValidityForType = i18n$1(this.lang, 'dateMMDDYYYY');
|
|
44429
44872
|
} else if (this.dateFormatMap[this.format]) {
|
|
@@ -44713,6 +45156,38 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
|
|
|
44713
45156
|
this.touched = true;
|
|
44714
45157
|
this.validation.validate(this);
|
|
44715
45158
|
}
|
|
45159
|
+
|
|
45160
|
+
// Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
|
|
45161
|
+
// update that can re-render the input and reset the native cursor; we
|
|
45162
|
+
// capture the caret position before that update commits and restore it
|
|
45163
|
+
// via `setSelectionRange` once the update has flushed. Gated on
|
|
45164
|
+
// `setSelectionInputTypes` so credit-card (and other masked types whose
|
|
45165
|
+
// formatter manages the cursor itself) doesn't get a competing write.
|
|
45166
|
+
// Capture the caret position INSIDE the gate — reading `selectionStart`
|
|
45167
|
+
// on input types that don't support text selection (number, email in
|
|
45168
|
+
// some browsers) throws InvalidStateError, which would crash all input
|
|
45169
|
+
// handling. Wrap the read in try/catch belt-and-suspenders even though
|
|
45170
|
+
// the gated types currently support it, since the list is a public
|
|
45171
|
+
// property a consumer could mutate.
|
|
45172
|
+
if (this.setSelectionInputTypes.includes(this.type)) {
|
|
45173
|
+
let selectionStart = null;
|
|
45174
|
+
try {
|
|
45175
|
+
({ selectionStart } = this.inputElement);
|
|
45176
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
45177
|
+
return;
|
|
45178
|
+
}
|
|
45179
|
+
if (typeof selectionStart !== 'number') {
|
|
45180
|
+
return;
|
|
45181
|
+
}
|
|
45182
|
+
this.updateComplete.then(() => {
|
|
45183
|
+
try {
|
|
45184
|
+
this.inputElement.setSelectionRange(selectionStart, selectionStart);
|
|
45185
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
45186
|
+
// Some input types (number/email in certain UAs) throw on
|
|
45187
|
+
// setSelectionRange; swallow and let the native cursor stand.
|
|
45188
|
+
}
|
|
45189
|
+
});
|
|
45190
|
+
}
|
|
44716
45191
|
}
|
|
44717
45192
|
|
|
44718
45193
|
/**
|
|
@@ -44846,7 +45321,7 @@ let BaseInput$1 = class BaseInput extends AuroElement$1$3 {
|
|
|
44846
45321
|
*/
|
|
44847
45322
|
get placeholderStr() {
|
|
44848
45323
|
if (!this.placeholder && this.type === 'date') {
|
|
44849
|
-
return this.format
|
|
45324
|
+
return this.format.toUpperCase();
|
|
44850
45325
|
}
|
|
44851
45326
|
return this.placeholder || "";
|
|
44852
45327
|
}
|
|
@@ -45337,7 +45812,7 @@ let AuroHelpText$1$3 = class AuroHelpText extends i$2 {
|
|
|
45337
45812
|
}
|
|
45338
45813
|
};
|
|
45339
45814
|
|
|
45340
|
-
var formkitVersion$7 = '
|
|
45815
|
+
var formkitVersion$7 = '202607010104';
|
|
45341
45816
|
|
|
45342
45817
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
45343
45818
|
// See LICENSE in the project root for license information.
|
|
@@ -45840,6 +46315,7 @@ let AuroInput$1 = class AuroInput extends BaseInput$1 {
|
|
|
45840
46315
|
<${this.buttonTag}
|
|
45841
46316
|
@click="${this.handleClickShowPassword}"
|
|
45842
46317
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
46318
|
+
aria-pressed="${this.showPassword ? 'true' : 'false'}"
|
|
45843
46319
|
class="notificationBtn passwordBtn"
|
|
45844
46320
|
shape="circle"
|
|
45845
46321
|
size="sm"
|
|
@@ -45913,25 +46389,29 @@ let AuroInput$1 = class AuroInput extends BaseInput$1 {
|
|
|
45913
46389
|
* @returns {html} - Returns HTML for the help text and error message.
|
|
45914
46390
|
*/
|
|
45915
46391
|
renderHtmlHelpText() {
|
|
46392
|
+
// Single `<p>` with stable identity across validity transitions —
|
|
46393
|
+
// previously two distinct templates (valid vs invalid) caused Lit to
|
|
46394
|
+
// replace the node entirely on a flip, and VoiceOver wouldn't
|
|
46395
|
+
// re-announce because the live-region element it was watching had been
|
|
46396
|
+
// removed and a new one inserted. Keeping one node means the `role`,
|
|
46397
|
+
// `aria-live`, and text content all change in-place, which AT does
|
|
46398
|
+
// observe and announce.
|
|
46399
|
+
const isError = this.validity && this.validity !== 'valid';
|
|
45916
46400
|
return u$d`
|
|
45917
|
-
|
|
45918
|
-
?
|
|
45919
|
-
|
|
45920
|
-
|
|
45921
|
-
|
|
45922
|
-
|
|
45923
|
-
|
|
45924
|
-
|
|
45925
|
-
|
|
45926
|
-
|
|
45927
|
-
|
|
45928
|
-
|
|
45929
|
-
|
|
45930
|
-
|
|
45931
|
-
</p>
|
|
45932
|
-
</${this.helpTextTag}>
|
|
45933
|
-
`
|
|
45934
|
-
}
|
|
46401
|
+
<${this.helpTextTag}
|
|
46402
|
+
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
46403
|
+
?error=${isError}>
|
|
46404
|
+
<p
|
|
46405
|
+
id="${this.uniqueId}"
|
|
46406
|
+
part="helpText"
|
|
46407
|
+
role="${o$4(isError ? 'alert' : undefined)}"
|
|
46408
|
+
aria-live="${o$4(isError ? 'assertive' : undefined)}">
|
|
46409
|
+
${isError
|
|
46410
|
+
? this.errorMessage
|
|
46411
|
+
: u$d`<slot name="helpText">${this.getHelpText()}</slot>`
|
|
46412
|
+
}
|
|
46413
|
+
</p>
|
|
46414
|
+
</${this.helpTextTag}>
|
|
45935
46415
|
`;
|
|
45936
46416
|
}
|
|
45937
46417
|
|
|
@@ -46078,6 +46558,15 @@ function formatISODate(isoStr, format) {
|
|
|
46078
46558
|
try {
|
|
46079
46559
|
const date = dateFormatter$2.stringToDateInstance(isoStr);
|
|
46080
46560
|
|
|
46561
|
+
// `stringToDateInstance` returns an `Invalid Date` for malformed strings
|
|
46562
|
+
// and `null` for non-string input — it does NOT throw. Without this
|
|
46563
|
+
// guard, `getFullYear()`/`getMonth()`/`getDate()` on an Invalid Date
|
|
46564
|
+
// yield `NaN`, and `String(NaN).padStart(4, '0')` produces literals
|
|
46565
|
+
// like "0NaN/0NaN/0NaN" instead of `undefined`.
|
|
46566
|
+
if (!(date instanceof Date) || Number.isNaN(date.getTime())) {
|
|
46567
|
+
return undefined;
|
|
46568
|
+
}
|
|
46569
|
+
|
|
46081
46570
|
const year = String(date.getFullYear()).padStart(4, '0');
|
|
46082
46571
|
const month = String(date.getMonth() + 1).padStart(2, '0');
|
|
46083
46572
|
const day = String(date.getDate()).padStart(2, '0');
|
|
@@ -46088,7 +46577,10 @@ function formatISODate(isoStr, format) {
|
|
|
46088
46577
|
replace(/mm/iu, month).
|
|
46089
46578
|
replace(/dd/iu, day);
|
|
46090
46579
|
} catch (err) {
|
|
46091
|
-
//
|
|
46580
|
+
// Defensive: the Date-returning path is guarded above, but `parseDate`
|
|
46581
|
+
// (inside `stringToDateInstance`) could throw on pathological input
|
|
46582
|
+
// future-library-versions might introduce. Treat any thrown error as
|
|
46583
|
+
// "not a valid date" and return undefined.
|
|
46092
46584
|
return undefined;
|
|
46093
46585
|
}
|
|
46094
46586
|
}
|
|
@@ -46814,6 +47306,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
46814
47306
|
this.rangeLabelBeforeRange = 'before range';
|
|
46815
47307
|
this.rangeLabelInRange = 'in range';
|
|
46816
47308
|
this.rangeLabelAfterRange = 'after range';
|
|
47309
|
+
this.rangeLabelEndPreview = 'previewing range end';
|
|
46817
47310
|
this.blackoutDates = [];
|
|
46818
47311
|
this.blackoutLabel = 'unavailable';
|
|
46819
47312
|
this.navLabelPrevMonth = 'Previous month';
|
|
@@ -46913,6 +47406,22 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
46913
47406
|
*/
|
|
46914
47407
|
this.handleClick = this.handleClick.bind(this);
|
|
46915
47408
|
|
|
47409
|
+
/**
|
|
47410
|
+
* Single AbortController shared by every listener registered in the
|
|
47411
|
+
* configure* methods. Lets disconnectedCallback tear all of them down
|
|
47412
|
+
* with one abort() call.
|
|
47413
|
+
*
|
|
47414
|
+
* The genuine leak risk is the listeners attached to children that can
|
|
47415
|
+
* outlive the host if they get reparented — `this.dropdown`,
|
|
47416
|
+
* `this.calendar`, and the inputs inside the dropdown's slot.
|
|
47417
|
+
* Listeners attached to `this` (e.g. focusin/focusout on the host)
|
|
47418
|
+
* form a self-contained reference graph that the GC can collect with
|
|
47419
|
+
* the host anyway, but they share the same signal so the cleanup
|
|
47420
|
+
* pattern stays uniform across all configure* sites.
|
|
47421
|
+
* @private
|
|
47422
|
+
*/
|
|
47423
|
+
this._listenerAbortController = new AbortController();
|
|
47424
|
+
|
|
46916
47425
|
/**
|
|
46917
47426
|
* @private
|
|
46918
47427
|
*/
|
|
@@ -46961,6 +47470,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
46961
47470
|
|
|
46962
47471
|
/**
|
|
46963
47472
|
* Label announced for blackout (disabled but in-range) date cells.
|
|
47473
|
+
* @default 'unavailable'
|
|
46964
47474
|
*/
|
|
46965
47475
|
blackoutLabel: {
|
|
46966
47476
|
type: String,
|
|
@@ -46977,6 +47487,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
46977
47487
|
|
|
46978
47488
|
/**
|
|
46979
47489
|
* Accessible label for the calendar grid containing the days of the month.
|
|
47490
|
+
* @default 'Calendar days of the month'
|
|
46980
47491
|
*/
|
|
46981
47492
|
calendarGridLabel: {
|
|
46982
47493
|
type: String,
|
|
@@ -47139,6 +47650,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47139
47650
|
|
|
47140
47651
|
/**
|
|
47141
47652
|
* Accessible label for the next month navigation button.
|
|
47653
|
+
* @default 'Next month'
|
|
47142
47654
|
*/
|
|
47143
47655
|
navLabelNextMonth: {
|
|
47144
47656
|
type: String,
|
|
@@ -47147,6 +47659,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47147
47659
|
|
|
47148
47660
|
/**
|
|
47149
47661
|
* Accessible label for the previous month navigation button.
|
|
47662
|
+
* @default 'Previous month'
|
|
47150
47663
|
*/
|
|
47151
47664
|
navLabelPrevMonth: {
|
|
47152
47665
|
type: String,
|
|
@@ -47224,7 +47737,11 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47224
47737
|
},
|
|
47225
47738
|
|
|
47226
47739
|
/**
|
|
47227
|
-
* Label announced for cells after
|
|
47740
|
+
* Label announced for cells after a fully selected range (both
|
|
47741
|
+
* `dateFrom` and `dateTo` are set). While a range is still being
|
|
47742
|
+
* picked (`dateFrom` set, `dateTo` unset), focused cells past the
|
|
47743
|
+
* start use `rangeLabelEndPreview` instead.
|
|
47744
|
+
* @default 'after range'
|
|
47228
47745
|
*/
|
|
47229
47746
|
rangeLabelAfterRange: {
|
|
47230
47747
|
type: String,
|
|
@@ -47233,6 +47750,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47233
47750
|
|
|
47234
47751
|
/**
|
|
47235
47752
|
* Label announced for cells before the range start.
|
|
47753
|
+
* @default 'before range'
|
|
47236
47754
|
*/
|
|
47237
47755
|
rangeLabelBeforeRange: {
|
|
47238
47756
|
type: String,
|
|
@@ -47241,14 +47759,27 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47241
47759
|
|
|
47242
47760
|
/**
|
|
47243
47761
|
* Label announced for the range end date cell.
|
|
47762
|
+
* @default 'range end'
|
|
47244
47763
|
*/
|
|
47245
47764
|
rangeLabelEnd: {
|
|
47246
47765
|
type: String,
|
|
47247
47766
|
reflect: true
|
|
47248
47767
|
},
|
|
47249
47768
|
|
|
47769
|
+
/**
|
|
47770
|
+
* Label announced for the focused cell while previewing a range end
|
|
47771
|
+
* (dateFrom set, dateTo not yet selected). Tells AT users that
|
|
47772
|
+
* pressing Enter would commit this cell as the range end.
|
|
47773
|
+
* @default 'previewing range end'
|
|
47774
|
+
*/
|
|
47775
|
+
rangeLabelEndPreview: {
|
|
47776
|
+
type: String,
|
|
47777
|
+
reflect: true
|
|
47778
|
+
},
|
|
47779
|
+
|
|
47250
47780
|
/**
|
|
47251
47781
|
* Label announced for cells within the selected range.
|
|
47782
|
+
* @default 'in range'
|
|
47252
47783
|
*/
|
|
47253
47784
|
rangeLabelInRange: {
|
|
47254
47785
|
type: String,
|
|
@@ -47257,6 +47788,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47257
47788
|
|
|
47258
47789
|
/**
|
|
47259
47790
|
* Label announced for the range start date cell.
|
|
47791
|
+
* @default 'range start'
|
|
47260
47792
|
*/
|
|
47261
47793
|
rangeLabelStart: {
|
|
47262
47794
|
type: String,
|
|
@@ -47264,7 +47796,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47264
47796
|
},
|
|
47265
47797
|
|
|
47266
47798
|
/**
|
|
47267
|
-
* Dates that the user should have for reference as part of their decision
|
|
47799
|
+
* Dates that the user should have for reference as part of their decision-making when selecting a date.
|
|
47268
47800
|
* This should be a JSON string array of ISO date strings (`YYYY-MM-DD`).
|
|
47269
47801
|
*/
|
|
47270
47802
|
referenceDates: {
|
|
@@ -47621,10 +48153,26 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47621
48153
|
// ─── Vendor calendar time conversions ─────────────────────────────────────
|
|
47622
48154
|
|
|
47623
48155
|
/**
|
|
47624
|
-
* Converts a Unix timestamp (seconds) from the
|
|
48156
|
+
* Converts a Unix timestamp (seconds) from the vendored range-datepicker
|
|
48157
|
+
* (`src/vendor/wc-range-datepicker/day.js`) to an ISO date string.
|
|
48158
|
+
*
|
|
48159
|
+
* Timezone contract:
|
|
48160
|
+
* - INPUT: `time` is assumed to be the seconds-since-epoch of **local
|
|
48161
|
+
* midnight** for the intended calendar day. The vendor's Day constructor
|
|
48162
|
+
* builds it via `date-fns format(date, 't')` from a locally-constructed
|
|
48163
|
+
* Date, so this assumption currently holds end-to-end.
|
|
48164
|
+
* - OUTPUT: `dateFormatter.toISOFormatString` reads the Date's local
|
|
48165
|
+
* getFullYear/getMonth/getDate components, so the returned YYYY-MM-DD
|
|
48166
|
+
* string matches the local calendar day.
|
|
48167
|
+
*
|
|
48168
|
+
* If the vendor ever switches to emitting UTC-midnight timestamps, this
|
|
48169
|
+
* conversion will silently shift the returned date by one day in zones
|
|
48170
|
+
* west of UTC. Any vendor swap should re-verify this contract; the TZ
|
|
48171
|
+
* regression suite (`npm run test:hst`, UTC-10) will catch the symptom.
|
|
48172
|
+
*
|
|
47625
48173
|
* @private
|
|
47626
|
-
* @param {number} time - Unix timestamp
|
|
47627
|
-
* @returns {string} ISO date string (yyyy-mm-dd).
|
|
48174
|
+
* @param {number} time - Unix timestamp (seconds), local midnight of the day.
|
|
48175
|
+
* @returns {string} ISO date string (yyyy-mm-dd) reflecting the local calendar day.
|
|
47628
48176
|
*/
|
|
47629
48177
|
convertWcTimeToDate(time) {
|
|
47630
48178
|
return dateFormatter$1.toISOFormatString(new Date(time * 1000));
|
|
@@ -47726,8 +48274,8 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47726
48274
|
}
|
|
47727
48275
|
}
|
|
47728
48276
|
|
|
47729
|
-
// Focus the calendar grid wrapper (
|
|
47730
|
-
// the SR announcement for the active cell
|
|
48277
|
+
// Focus the calendar grid wrapper. The live region (announced just
|
|
48278
|
+
// below) handles the SR announcement for the active cell.
|
|
47731
48279
|
if (activeCell) {
|
|
47732
48280
|
this.calendar.focusActiveCell();
|
|
47733
48281
|
|
|
@@ -47741,11 +48289,14 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47741
48289
|
this.calendar.announceSelection(announcement);
|
|
47742
48290
|
}, 500);
|
|
47743
48291
|
|
|
47744
|
-
// On mobile fullscreen
|
|
47745
|
-
//
|
|
47746
|
-
//
|
|
47747
|
-
|
|
48292
|
+
// On mobile fullscreen — or when an explicit focusDate change has
|
|
48293
|
+
// requested a forced scroll on the next render — scroll the active
|
|
48294
|
+
// cell into view. Doing this here (after activeCellDate has been
|
|
48295
|
+
// resolved by the rAF loop above) prevents a no-op scroll that
|
|
48296
|
+
// would happen if we tried to scroll before the cell was set.
|
|
48297
|
+
if (this.dropdown.isBibFullscreen || this.forceScrollOnNextMobileCalendarRender) {
|
|
47748
48298
|
this.calendar.scrollToActiveCell();
|
|
48299
|
+
this.forceScrollOnNextMobileCalendarRender = false;
|
|
47749
48300
|
}
|
|
47750
48301
|
} else if (attempts < MAX_ATTEMPTS) {
|
|
47751
48302
|
requestAnimationFrame(tryFocus);
|
|
@@ -47777,11 +48328,13 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47777
48328
|
this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
|
|
47778
48329
|
}
|
|
47779
48330
|
|
|
48331
|
+
const { signal } = this._listenerAbortController;
|
|
48332
|
+
|
|
47780
48333
|
this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
|
|
47781
48334
|
if (!this.isPopoverVisible) {
|
|
47782
48335
|
this.dropdown.show();
|
|
47783
48336
|
}
|
|
47784
|
-
});
|
|
48337
|
+
}, { signal });
|
|
47785
48338
|
|
|
47786
48339
|
this.dropdown.addEventListener('auroDropdown-toggled', () => {
|
|
47787
48340
|
this.notifyDatepickerToggled();
|
|
@@ -47799,7 +48352,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47799
48352
|
if (this.valueObject) {
|
|
47800
48353
|
this.centralDate = this.value;
|
|
47801
48354
|
} else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
|
|
47802
|
-
this.centralDate = new Date();
|
|
48355
|
+
this.centralDate = dateFormatter$1.toISOFormatString(new Date());
|
|
47803
48356
|
}
|
|
47804
48357
|
}
|
|
47805
48358
|
|
|
@@ -47867,19 +48420,11 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47867
48420
|
}
|
|
47868
48421
|
}
|
|
47869
48422
|
|
|
47870
|
-
//
|
|
47871
|
-
|
|
47872
|
-
|
|
47873
|
-
|
|
47874
|
-
|
|
47875
|
-
// we need to wait until the next frame to ensure the calendar is fully rendered
|
|
47876
|
-
// and the area we're trying to scroll to is present in the DOM.
|
|
47877
|
-
setTimeout(() => {
|
|
47878
|
-
this.calendar.scrollMonthIntoView(this.calendarFocusDate);
|
|
47879
|
-
this.forceScrollOnNextMobileCalendarRender = false;
|
|
47880
|
-
}, 0);
|
|
47881
|
-
}
|
|
47882
|
-
});
|
|
48423
|
+
// Note: the forceScrollOnNextMobileCalendarRender scroll-into-view
|
|
48424
|
+
// happens inside focusActiveCellWhenReady() once activeCellDate has
|
|
48425
|
+
// been resolved by its rAF wait — not here in a setTimeout(0), which
|
|
48426
|
+
// fired before the active date was set and silently no-op'd.
|
|
48427
|
+
}, { signal });
|
|
47883
48428
|
|
|
47884
48429
|
// Handle responsive strategy changes while the dropdown is open
|
|
47885
48430
|
// (e.g. resizing from desktop → mobile or vice versa).
|
|
@@ -47926,7 +48471,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47926
48471
|
});
|
|
47927
48472
|
});
|
|
47928
48473
|
}
|
|
47929
|
-
});
|
|
48474
|
+
}, { signal });
|
|
47930
48475
|
}
|
|
47931
48476
|
|
|
47932
48477
|
/**
|
|
@@ -47939,6 +48484,8 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47939
48484
|
|
|
47940
48485
|
this.inputList = [...this.dropdown.querySelectorAll(this.inputTag._$litStatic$)];
|
|
47941
48486
|
|
|
48487
|
+
const { signal } = this._listenerAbortController;
|
|
48488
|
+
|
|
47942
48489
|
this.inputList.forEach((input, index) => {
|
|
47943
48490
|
input.addEventListener('input', (event) => {
|
|
47944
48491
|
event.stopPropagation();
|
|
@@ -47950,7 +48497,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47950
48497
|
}
|
|
47951
48498
|
|
|
47952
48499
|
this.notifyValueChanged();
|
|
47953
|
-
});
|
|
48500
|
+
}, { signal });
|
|
47954
48501
|
|
|
47955
48502
|
input.addEventListener('auroFormElement-validated', (evt) => {
|
|
47956
48503
|
// not to bubble up input's validated event.
|
|
@@ -47966,7 +48513,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47966
48513
|
this.validity = evt.detail.validity;
|
|
47967
48514
|
this.errorMessage = evt.detail.message;
|
|
47968
48515
|
}
|
|
47969
|
-
});
|
|
48516
|
+
}, { signal });
|
|
47970
48517
|
});
|
|
47971
48518
|
}
|
|
47972
48519
|
|
|
@@ -47980,19 +48527,32 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
47980
48527
|
this.calendar.datepicker = this;
|
|
47981
48528
|
this.calendar.dropdown = this.dropdown;
|
|
47982
48529
|
|
|
48530
|
+
const { signal } = this._listenerAbortController;
|
|
48531
|
+
|
|
47983
48532
|
this.calendar.addEventListener('auroCalendar-dateSelected', () => {
|
|
47984
|
-
|
|
47985
|
-
|
|
48533
|
+
// Compare the input's ISO value against the *converted* calendar
|
|
48534
|
+
// timestamp (the vendor's `dateFrom`/`dateTo` are Unix-seconds
|
|
48535
|
+
// strings — comparing the input ISO directly against them would
|
|
48536
|
+
// never match, so the write would fire on every event and emit
|
|
48537
|
+
// redundant input/change activity).
|
|
48538
|
+
if (this.calendar.dateFrom !== undefined) {
|
|
48539
|
+
const fromIso = this.convertWcTimeToDate(this.calendar.dateFrom);
|
|
48540
|
+
if (this.inputList[0].value !== fromIso) {
|
|
48541
|
+
this.inputList[0].value = fromIso;
|
|
48542
|
+
}
|
|
47986
48543
|
}
|
|
47987
48544
|
|
|
47988
|
-
if (this.inputList[1] && this.calendar.dateTo
|
|
47989
|
-
|
|
48545
|
+
if (this.inputList[1] && this.calendar.dateTo) {
|
|
48546
|
+
const toIso = this.convertWcTimeToDate(this.calendar.dateTo);
|
|
48547
|
+
if (this.inputList[1].value !== toIso) {
|
|
48548
|
+
this.inputList[1].value = toIso;
|
|
48549
|
+
}
|
|
47990
48550
|
}
|
|
47991
|
-
});
|
|
48551
|
+
}, { signal });
|
|
47992
48552
|
|
|
47993
48553
|
this.calendar.addEventListener('auroCalendar-dismissRequest', () => {
|
|
47994
48554
|
this.dropdown.hide();
|
|
47995
|
-
});
|
|
48555
|
+
}, { signal });
|
|
47996
48556
|
|
|
47997
48557
|
this.calendar.addEventListener('auroCalendar-centralDateChanged', (event) => {
|
|
47998
48558
|
const match = this.centralDateObject && this.util.datesMatch(event.detail.date, this.centralDateObject);
|
|
@@ -48002,7 +48562,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48002
48562
|
}
|
|
48003
48563
|
|
|
48004
48564
|
this.notifyMonthChanged(event);
|
|
48005
|
-
});
|
|
48565
|
+
}, { signal });
|
|
48006
48566
|
}
|
|
48007
48567
|
|
|
48008
48568
|
/**
|
|
@@ -48011,10 +48571,17 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48011
48571
|
* @returns {void}
|
|
48012
48572
|
*/
|
|
48013
48573
|
configureDatepicker() {
|
|
48574
|
+
// These listeners are on `this` (the host), so they would GC with the
|
|
48575
|
+
// host even without the abort signal — see the leak rationale on
|
|
48576
|
+
// `_listenerAbortController`. The signal is still passed for uniform
|
|
48577
|
+
// cleanup semantics with the child-element listeners in the other
|
|
48578
|
+
// configure* methods.
|
|
48579
|
+
const { signal } = this._listenerAbortController;
|
|
48580
|
+
|
|
48014
48581
|
this.addEventListener('focusin', () => {
|
|
48015
48582
|
this.touched = true;
|
|
48016
48583
|
this.hasFocus = true;
|
|
48017
|
-
});
|
|
48584
|
+
}, { signal });
|
|
48018
48585
|
|
|
48019
48586
|
this.addEventListener('focusout', () => {
|
|
48020
48587
|
this.hasFocus = false;
|
|
@@ -48026,7 +48593,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48026
48593
|
if (!this.matches(':focus-within')) {
|
|
48027
48594
|
this.validate();
|
|
48028
48595
|
}
|
|
48029
|
-
});
|
|
48596
|
+
}, { signal });
|
|
48030
48597
|
|
|
48031
48598
|
if (this.valueObject) {
|
|
48032
48599
|
this.calendar.dateFrom = this.convertToWcValidTime(this.valueObject);
|
|
@@ -48224,6 +48791,41 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48224
48791
|
return this.validity !== undefined && this.validity !== 'valid';
|
|
48225
48792
|
}
|
|
48226
48793
|
|
|
48794
|
+
/**
|
|
48795
|
+
* Per-class dedup set used by `_warnInvalidLocale`. Static so the dedup
|
|
48796
|
+
* spans every datepicker instance on the page; lives on the class (not
|
|
48797
|
+
* at module scope) so it stays an encapsulated implementation detail of
|
|
48798
|
+
* this component and does not interfere with WCA's class-JSDoc
|
|
48799
|
+
* attachment.
|
|
48800
|
+
* @private
|
|
48801
|
+
*/
|
|
48802
|
+
static _warnedInvalidLocales = new Set();
|
|
48803
|
+
|
|
48804
|
+
/**
|
|
48805
|
+
* Logs a one-time `console.debug` when an unsupported locale falls back to
|
|
48806
|
+
* en-US. Deduped by the offending tag so noisy re-renders that resurface
|
|
48807
|
+
* the same bad value stay quiet, but each new bad value still signals so
|
|
48808
|
+
* consumers can spot the typo or missing tag.
|
|
48809
|
+
* @private
|
|
48810
|
+
* @param {string|undefined} badLocale - The locale value that failed.
|
|
48811
|
+
* @returns {void}
|
|
48812
|
+
*/
|
|
48813
|
+
_warnInvalidLocale(badLocale) {
|
|
48814
|
+
// Stringify without coalescing — `String(undefined)` / `String(null)`
|
|
48815
|
+
// surface the actual offending value in the log, instead of the
|
|
48816
|
+
// ambiguous `Locale ""` that `String(badLocale ?? '')` would produce.
|
|
48817
|
+
// Dedup still works correctly because each unique stringification
|
|
48818
|
+
// becomes its own Set entry.
|
|
48819
|
+
const key = String(badLocale);
|
|
48820
|
+
const seen = AuroDatePicker._warnedInvalidLocales;
|
|
48821
|
+
if (seen.has(key)) {
|
|
48822
|
+
return;
|
|
48823
|
+
}
|
|
48824
|
+
seen.add(key);
|
|
48825
|
+
// eslint-disable-next-line no-console
|
|
48826
|
+
console.debug(`[auro-datepicker] Locale "${key}" is not supported by Intl.DateTimeFormat. Falling back to "en-US". Pass a BCP 47 tag such as "en-US", "fr-FR", or "ja-JP".`);
|
|
48827
|
+
}
|
|
48828
|
+
|
|
48227
48829
|
/**
|
|
48228
48830
|
* Lifecycle method to check if the locale is valid.
|
|
48229
48831
|
* @ignore
|
|
@@ -48234,10 +48836,15 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48234
48836
|
if (changedProperties.has('locale')) {
|
|
48235
48837
|
try {
|
|
48236
48838
|
const supported = Intl.DateTimeFormat.supportedLocalesOf([this.locale], { localeMatcher: 'lookup' });
|
|
48237
|
-
|
|
48839
|
+
if (supported.length > 0) {
|
|
48840
|
+
this._validLocale = this.locale;
|
|
48841
|
+
} else {
|
|
48842
|
+
this._validLocale = 'en-US';
|
|
48843
|
+
this._warnInvalidLocale(this.locale);
|
|
48844
|
+
}
|
|
48238
48845
|
} catch {
|
|
48239
|
-
console.debug(`[AuroDatePicker] The locale "${this.locale}" is not valid. Falling back to "en-US".`); // eslint-disable-line no-console
|
|
48240
48846
|
this._validLocale = 'en-US';
|
|
48847
|
+
this._warnInvalidLocale(this.locale);
|
|
48241
48848
|
}
|
|
48242
48849
|
|
|
48243
48850
|
const previousLocaleFormat = getDateFormatFromLocale$1(changedProperties.get('locale'));
|
|
@@ -48319,8 +48926,6 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48319
48926
|
// Skip centralDate update when user clicked a cell in range mode
|
|
48320
48927
|
// to prevent the displayed months from shifting
|
|
48321
48928
|
this.centralDate = this.value;
|
|
48322
|
-
//TODO: TEST THIS CHANGE
|
|
48323
|
-
// this.calendarRenderUtil.updateCentralDate(this, this.value);
|
|
48324
48929
|
}
|
|
48325
48930
|
|
|
48326
48931
|
this.setHasValue();
|
|
@@ -48380,8 +48985,6 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48380
48985
|
// Skip centralDate update when user clicked a cell in range mode
|
|
48381
48986
|
// to prevent the displayed months from shifting
|
|
48382
48987
|
this.centralDate = this.valueEnd;
|
|
48383
|
-
// TODO: TEST THIS CHANGE
|
|
48384
|
-
// this.calendarRenderUtil.updateCentralDate(this, this.formattedValueEnd);
|
|
48385
48988
|
}
|
|
48386
48989
|
|
|
48387
48990
|
this.validate();
|
|
@@ -48523,7 +49126,7 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48523
49126
|
* @returns {void}
|
|
48524
49127
|
*/
|
|
48525
49128
|
configureClickHandler() {
|
|
48526
|
-
this.addEventListener('click', this.handleClick);
|
|
49129
|
+
this.addEventListener('click', this.handleClick, { signal: this._listenerAbortController.signal });
|
|
48527
49130
|
}
|
|
48528
49131
|
|
|
48529
49132
|
firstUpdated() {
|
|
@@ -48531,6 +49134,15 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48531
49134
|
// Add the tag name as an attribute if it is different than the component name
|
|
48532
49135
|
this.runtimeUtils.handleComponentTagRename(this, 'auro-datepicker');
|
|
48533
49136
|
|
|
49137
|
+
// If the element was disconnected before this first render finished,
|
|
49138
|
+
// disconnectedCallback's microtask already aborted the controller. The
|
|
49139
|
+
// connectedCallback reinit guard skips that case because `hasUpdated`
|
|
49140
|
+
// is still false. Mint a fresh controller here so configure* registers
|
|
49141
|
+
// listeners against a live signal.
|
|
49142
|
+
if (this._listenerAbortController.signal.aborted) {
|
|
49143
|
+
this._listenerAbortController = new AbortController();
|
|
49144
|
+
}
|
|
49145
|
+
|
|
48534
49146
|
this.configureDropdown();
|
|
48535
49147
|
this.configureInput();
|
|
48536
49148
|
this.configureCalendar();
|
|
@@ -48542,9 +49154,36 @@ class AuroDatePicker extends AuroElement$5 {
|
|
|
48542
49154
|
connectedCallback() {
|
|
48543
49155
|
super.connectedCallback();
|
|
48544
49156
|
|
|
49157
|
+
// True reconnect after `disconnectedCallback` aborted our controller:
|
|
49158
|
+
// the existing signal is dead, so listeners registered against it
|
|
49159
|
+
// would never fire. Create a fresh controller and re-run the
|
|
49160
|
+
// configure* wiring (each method is idempotent — it just re-caches
|
|
49161
|
+
// child refs and re-registers listeners against the new signal).
|
|
49162
|
+
// `hasUpdated` gates this so the *first* connect (which precedes
|
|
49163
|
+
// firstUpdated) still falls through to firstUpdated's initial wiring.
|
|
49164
|
+
if (this.hasUpdated && this._listenerAbortController.signal.aborted) {
|
|
49165
|
+
this._listenerAbortController = new AbortController();
|
|
49166
|
+
this.configureDropdown();
|
|
49167
|
+
this.configureInput();
|
|
49168
|
+
this.configureCalendar();
|
|
49169
|
+
this.configureDatepicker();
|
|
49170
|
+
this.configureClickHandler();
|
|
49171
|
+
}
|
|
49172
|
+
|
|
48545
49173
|
this.locale = this.domHandler.getLocale(this);
|
|
48546
49174
|
}
|
|
48547
49175
|
|
|
49176
|
+
disconnectedCallback() {
|
|
49177
|
+
super.disconnectedCallback();
|
|
49178
|
+
// Defer so that re-parenting (auro-drawer slotting it into a dialog,
|
|
49179
|
+
// for example) does not abort listeners we still need after reconnect.
|
|
49180
|
+
queueMicrotask(() => {
|
|
49181
|
+
if (!this.isConnected) {
|
|
49182
|
+
this._listenerAbortController.abort();
|
|
49183
|
+
}
|
|
49184
|
+
});
|
|
49185
|
+
}
|
|
49186
|
+
|
|
48548
49187
|
// layout render methods
|
|
48549
49188
|
// ------------------------------------
|
|
48550
49189
|
|
|
@@ -49567,15 +50206,17 @@ let AuroFormValidation$5 = class AuroFormValidation {
|
|
|
49567
50206
|
);
|
|
49568
50207
|
}
|
|
49569
50208
|
|
|
49570
|
-
|
|
49571
|
-
|
|
49572
|
-
|
|
50209
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
50210
|
+
|
|
50211
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
50212
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
50213
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
50214
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
50215
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
49573
50216
|
hasValue = false;
|
|
49574
50217
|
}
|
|
49575
50218
|
}
|
|
49576
50219
|
|
|
49577
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
49578
|
-
|
|
49579
50220
|
if (isCombobox) {
|
|
49580
50221
|
|
|
49581
50222
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -50040,7 +50681,7 @@ let AuroHelpText$1$2 = class AuroHelpText extends i$2 {
|
|
|
50040
50681
|
}
|
|
50041
50682
|
};
|
|
50042
50683
|
|
|
50043
|
-
var formkitVersion$1$2 = '
|
|
50684
|
+
var formkitVersion$1$2 = '202607010104';
|
|
50044
50685
|
|
|
50045
50686
|
// Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
|
|
50046
50687
|
// See LICENSE in the project root for license information.
|
|
@@ -54368,7 +55009,7 @@ let AuroHelpText$6 = class AuroHelpText extends i$2 {
|
|
|
54368
55009
|
}
|
|
54369
55010
|
};
|
|
54370
55011
|
|
|
54371
|
-
var formkitVersion$6 = '
|
|
55012
|
+
var formkitVersion$6 = '202607010104';
|
|
54372
55013
|
|
|
54373
55014
|
let AuroElement$1$2 = class AuroElement extends i$2 {
|
|
54374
55015
|
static get properties() {
|
|
@@ -55640,6 +56281,7 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$1$2 {
|
|
|
55640
56281
|
role="${o$4(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
55641
56282
|
aria-expanded="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
55642
56283
|
aria-controls="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
56284
|
+
aria-haspopup="${o$4(this.a11yRole === 'combobox' && !this.triggerContentFocusable ? 'listbox' : undefined)}"
|
|
55643
56285
|
aria-labelledby="${o$4(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
55644
56286
|
aria-disabled="${o$4(this.disabled ? 'true' : undefined)}"
|
|
55645
56287
|
@focusin="${this.handleFocusin}"
|
|
@@ -55766,7 +56408,7 @@ let AuroDropdown$2 = class AuroDropdown extends AuroElement$1$2 {
|
|
|
55766
56408
|
|
|
55767
56409
|
var colorCss$1$6 = i$4`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
|
|
55768
56410
|
|
|
55769
|
-
var styleCss$1$6 = i$4`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1
|
|
56411
|
+
var styleCss$1$6 = i$4`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{padding:var(--ds-size-200, 1rem)}`;
|
|
55770
56412
|
|
|
55771
56413
|
var tokenCss$3 = i$4`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
|
|
55772
56414
|
|
|
@@ -56772,6 +57414,13 @@ class AuroCounterGroup extends AuroElement$4 {
|
|
|
56772
57414
|
*/
|
|
56773
57415
|
configureDropdownCounters() {
|
|
56774
57416
|
this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
|
|
57417
|
+
|
|
57418
|
+
// Counter rows are slotted into the bib through multiple shadow roots
|
|
57419
|
+
// (dropdown → bib → bibtemplate → counter-group → counter), so the floater's
|
|
57420
|
+
// `:focus-within` focus-loss check fails to match the dropdown host in Chromium
|
|
57421
|
+
// and the bib auto-closes immediately after opening. Mirrors auro-select.
|
|
57422
|
+
this.dropdown.noHideOnThisFocusLoss = true;
|
|
57423
|
+
|
|
56775
57424
|
this.dropdown.requestUpdate();
|
|
56776
57425
|
|
|
56777
57426
|
const counterWrapper = this.shadowRoot.querySelector('auro-counter-wrapper');
|
|
@@ -57909,15 +58558,17 @@ let AuroFormValidation$4 = class AuroFormValidation {
|
|
|
57909
58558
|
);
|
|
57910
58559
|
}
|
|
57911
58560
|
|
|
57912
|
-
|
|
57913
|
-
|
|
57914
|
-
|
|
58561
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
58562
|
+
|
|
58563
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
58564
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
58565
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
58566
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
58567
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
57915
58568
|
hasValue = false;
|
|
57916
58569
|
}
|
|
57917
58570
|
}
|
|
57918
58571
|
|
|
57919
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
57920
|
-
|
|
57921
58572
|
if (isCombobox) {
|
|
57922
58573
|
|
|
57923
58574
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -58308,7 +58959,7 @@ let AuroHelpText$5 = class AuroHelpText extends i$2 {
|
|
|
58308
58959
|
}
|
|
58309
58960
|
};
|
|
58310
58961
|
|
|
58311
|
-
var formkitVersion$5 = '
|
|
58962
|
+
var formkitVersion$5 = '202607010104';
|
|
58312
58963
|
|
|
58313
58964
|
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
58314
58965
|
// See LICENSE in the project root for license information.
|
|
@@ -59655,15 +60306,17 @@ let AuroFormValidation$3 = class AuroFormValidation {
|
|
|
59655
60306
|
);
|
|
59656
60307
|
}
|
|
59657
60308
|
|
|
59658
|
-
|
|
59659
|
-
|
|
59660
|
-
|
|
60309
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
60310
|
+
|
|
60311
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
60312
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
60313
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
60314
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
60315
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
59661
60316
|
hasValue = false;
|
|
59662
60317
|
}
|
|
59663
60318
|
}
|
|
59664
60319
|
|
|
59665
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
59666
|
-
|
|
59667
60320
|
if (isCombobox) {
|
|
59668
60321
|
|
|
59669
60322
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -60058,7 +60711,7 @@ let AuroHelpText$4 = class AuroHelpText extends i$2 {
|
|
|
60058
60711
|
}
|
|
60059
60712
|
};
|
|
60060
60713
|
|
|
60061
|
-
var formkitVersion$4 = '
|
|
60714
|
+
var formkitVersion$4 = '202607010104';
|
|
60062
60715
|
|
|
60063
60716
|
// Copyright (c) 2026 Alaska Airlines. All rights reserved. Licensed under the Apache-2.0 license
|
|
60064
60717
|
// See LICENSE in the project root for license information.
|
|
@@ -60915,15 +61568,17 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
60915
61568
|
);
|
|
60916
61569
|
}
|
|
60917
61570
|
|
|
60918
|
-
|
|
60919
|
-
|
|
60920
|
-
|
|
61571
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
61572
|
+
|
|
61573
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
61574
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
61575
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
61576
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
61577
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
60921
61578
|
hasValue = false;
|
|
60922
61579
|
}
|
|
60923
61580
|
}
|
|
60924
61581
|
|
|
60925
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
60926
|
-
|
|
60927
61582
|
if (isCombobox) {
|
|
60928
61583
|
|
|
60929
61584
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -61292,11 +61947,7 @@ const comboboxKeyboardStrategy = {
|
|
|
61292
61947
|
|
|
61293
61948
|
// navigate if bib is open otherwise open it
|
|
61294
61949
|
if (component.dropdown.isPopoverVisible) {
|
|
61295
|
-
|
|
61296
|
-
component.activateLastEnabledAvailableOption();
|
|
61297
|
-
} else {
|
|
61298
|
-
navigateArrow$1(component, 'down');
|
|
61299
|
-
}
|
|
61950
|
+
navigateArrow$1(component, 'down');
|
|
61300
61951
|
} else {
|
|
61301
61952
|
component.showBib();
|
|
61302
61953
|
}
|
|
@@ -61315,11 +61966,7 @@ const comboboxKeyboardStrategy = {
|
|
|
61315
61966
|
|
|
61316
61967
|
// navigate if bib is open otherwise open it
|
|
61317
61968
|
if (component.dropdown.isPopoverVisible) {
|
|
61318
|
-
|
|
61319
|
-
component.activateFirstEnabledAvailableOption();
|
|
61320
|
-
} else {
|
|
61321
|
-
navigateArrow$1(component, 'up');
|
|
61322
|
-
}
|
|
61969
|
+
navigateArrow$1(component, 'up');
|
|
61323
61970
|
} else {
|
|
61324
61971
|
component.showBib();
|
|
61325
61972
|
}
|
|
@@ -61335,13 +61982,18 @@ const comboboxKeyboardStrategy = {
|
|
|
61335
61982
|
},
|
|
61336
61983
|
|
|
61337
61984
|
Enter(component, evt, ctx) {
|
|
61985
|
+
// Forms should not submit on Enter from a combobox, regardless of which
|
|
61986
|
+
// child element (input, clear button, menu) is focused.
|
|
61987
|
+
evt.stopPropagation();
|
|
61988
|
+
|
|
61338
61989
|
if (isClearBtnFocused(ctx)) {
|
|
61339
|
-
//
|
|
61340
|
-
//
|
|
61341
|
-
//
|
|
61342
|
-
|
|
61343
|
-
|
|
61344
|
-
|
|
61990
|
+
// Let the browser dispatch Enter to the focused clear button so its
|
|
61991
|
+
// built-in activation fires and clears the selection. Do NOT call
|
|
61992
|
+
// preventDefault — that would block the activation.
|
|
61993
|
+
return;
|
|
61994
|
+
}
|
|
61995
|
+
|
|
61996
|
+
if (ctx.isExpanded && component.menu.optionActive) {
|
|
61345
61997
|
reconcileMenuIndex(component.menu);
|
|
61346
61998
|
component.menu.makeSelection();
|
|
61347
61999
|
|
|
@@ -61350,14 +62002,8 @@ const comboboxKeyboardStrategy = {
|
|
|
61350
62002
|
}
|
|
61351
62003
|
|
|
61352
62004
|
evt.preventDefault();
|
|
61353
|
-
evt.stopPropagation();
|
|
61354
62005
|
} else {
|
|
61355
|
-
// Prevent the keypress from bubbling to parent containers (e.g., forms)
|
|
61356
|
-
// which could interpret Enter as a submit or trigger other unintended behavior.
|
|
61357
|
-
// This is safe because showBib() opens the dialog programmatically,
|
|
61358
|
-
// not via event propagation.
|
|
61359
62006
|
evt.preventDefault();
|
|
61360
|
-
evt.stopPropagation();
|
|
61361
62007
|
component.showBib();
|
|
61362
62008
|
}
|
|
61363
62009
|
},
|
|
@@ -61402,7 +62048,7 @@ const comboboxKeyboardStrategy = {
|
|
|
61402
62048
|
component.setClearBtnFocus();
|
|
61403
62049
|
}
|
|
61404
62050
|
}
|
|
61405
|
-
}
|
|
62051
|
+
}
|
|
61406
62052
|
};
|
|
61407
62053
|
|
|
61408
62054
|
// Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
|
|
@@ -65273,7 +65919,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$2 {
|
|
|
65273
65919
|
}
|
|
65274
65920
|
};
|
|
65275
65921
|
|
|
65276
|
-
var formkitVersion$2 = '
|
|
65922
|
+
var formkitVersion$2 = '202607010104';
|
|
65277
65923
|
|
|
65278
65924
|
let AuroElement$2$1 = class AuroElement extends i$2 {
|
|
65279
65925
|
static get properties() {
|
|
@@ -66545,6 +67191,7 @@ let AuroDropdown$1 = class AuroDropdown extends AuroElement$2$1 {
|
|
|
66545
67191
|
role="${o$4(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
66546
67192
|
aria-expanded="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
66547
67193
|
aria-controls="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
67194
|
+
aria-haspopup="${o$4(this.a11yRole === 'combobox' && !this.triggerContentFocusable ? 'listbox' : undefined)}"
|
|
66548
67195
|
aria-labelledby="${o$4(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
66549
67196
|
aria-disabled="${o$4(this.disabled ? 'true' : undefined)}"
|
|
66550
67197
|
@focusin="${this.handleFocusin}"
|
|
@@ -71047,15 +71694,17 @@ let AuroFormValidation$2 = class AuroFormValidation {
|
|
|
71047
71694
|
);
|
|
71048
71695
|
}
|
|
71049
71696
|
|
|
71050
|
-
|
|
71051
|
-
|
|
71052
|
-
|
|
71697
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
71698
|
+
|
|
71699
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
71700
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
71701
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
71702
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
71703
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
71053
71704
|
hasValue = false;
|
|
71054
71705
|
}
|
|
71055
71706
|
}
|
|
71056
71707
|
|
|
71057
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
71058
|
-
|
|
71059
71708
|
if (isCombobox) {
|
|
71060
71709
|
|
|
71061
71710
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -76991,6 +77640,13 @@ class AuroInputUtilities {
|
|
|
76991
77640
|
* @returns {string | undefined}
|
|
76992
77641
|
*/
|
|
76993
77642
|
toFormattedValue(valueObject, format) {
|
|
77643
|
+
// Exposed publicly via `AuroInputUtil.toFormattedValue`, so a missing
|
|
77644
|
+
// `format` argument has to fail gracefully rather than throw on
|
|
77645
|
+
// `format.toLowerCase()`. Treat any falsy value (undefined, null, '')
|
|
77646
|
+
// as "no format → no display value".
|
|
77647
|
+
if (!format) {
|
|
77648
|
+
return undefined;
|
|
77649
|
+
}
|
|
76994
77650
|
const normalizedFormat = format.toLowerCase();
|
|
76995
77651
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
76996
77652
|
|
|
@@ -77142,76 +77798,19 @@ class BaseInput extends AuroElement$1$1 {
|
|
|
77142
77798
|
constructor() {
|
|
77143
77799
|
super();
|
|
77144
77800
|
|
|
77145
|
-
|
|
77146
|
-
|
|
77147
|
-
|
|
77148
|
-
|
|
77149
|
-
|
|
77150
|
-
|
|
77151
|
-
|
|
77152
|
-
|
|
77153
|
-
|
|
77154
|
-
|
|
77155
|
-
this.setCustomValidityForType = undefined;
|
|
77156
|
-
this.size = 'lg';
|
|
77157
|
-
this.shape = 'classic';
|
|
77158
|
-
this.value = undefined;
|
|
77159
|
-
|
|
77160
|
-
this._initializePrivateDefaults();
|
|
77161
|
-
}
|
|
77162
|
-
|
|
77163
|
-
/**
|
|
77164
|
-
* Internal Defaults.
|
|
77165
|
-
* @private
|
|
77166
|
-
* @returns {void}
|
|
77167
|
-
*/
|
|
77168
|
-
_initializePrivateDefaults() {
|
|
77801
|
+
// Single-source initialization. Alphabetized so duplicate or stale
|
|
77802
|
+
// defaults are immediately obvious on a diff. Every field is assigned
|
|
77803
|
+
// exactly once here (previously the constructor + the old
|
|
77804
|
+
// `_initializePrivateDefaults` overlapped — both wrote ~14 of the same
|
|
77805
|
+
// fields and double-allocated `util` and `validation`, discarding the
|
|
77806
|
+
// first instance). `validation` is now allocated exactly once; `util`
|
|
77807
|
+
// is seeded here with an en-US default and then rebuilt in
|
|
77808
|
+
// `connectedCallback` once the consumer-resolved locale is available,
|
|
77809
|
+
// so a parent (datepicker/combobox) calling `validate()` synchronously
|
|
77810
|
+
// during its own update cycle sees a populated util instance.
|
|
77169
77811
|
this.activeLabel = false;
|
|
77170
|
-
this.appearance = "default";
|
|
77171
|
-
this.icon = false;
|
|
77172
|
-
this.disabled = false;
|
|
77173
|
-
this.dvInputOnly = false;
|
|
77174
|
-
this.hideLabelVisually = false;
|
|
77175
|
-
this.max = undefined;
|
|
77176
|
-
this.maxLength = undefined;
|
|
77177
|
-
this.min = undefined;
|
|
77178
|
-
this.minLength = undefined;
|
|
77179
|
-
this.noValidate = false;
|
|
77180
|
-
this.onDark = false;
|
|
77181
|
-
this.required = false;
|
|
77182
|
-
this.setCustomValidityForType = undefined;
|
|
77183
|
-
|
|
77184
|
-
// Used for storing raw values returned from input mask.
|
|
77185
|
-
this._rawMaskValue = undefined;
|
|
77186
|
-
|
|
77187
|
-
/**
|
|
77188
|
-
* @private
|
|
77189
|
-
*/
|
|
77190
|
-
this.layout = 'classic';
|
|
77191
|
-
|
|
77192
|
-
/**
|
|
77193
|
-
* @private
|
|
77194
|
-
*/
|
|
77195
|
-
this.shape = 'classic';
|
|
77196
|
-
|
|
77197
|
-
/**
|
|
77198
|
-
* @private
|
|
77199
|
-
*/
|
|
77200
|
-
this.size = 'lg';
|
|
77201
|
-
|
|
77202
|
-
this.touched = false;
|
|
77203
|
-
this.util = new AuroInputUtilities({
|
|
77204
|
-
locale: "en-US",
|
|
77205
|
-
format: this.format
|
|
77206
|
-
});
|
|
77207
|
-
this.validation = new AuroFormValidation$2();
|
|
77208
|
-
this.inputIconName = undefined;
|
|
77209
|
-
this.showPassword = false;
|
|
77210
|
-
this.validationCCLength = undefined;
|
|
77211
|
-
this.hasValue = false;
|
|
77212
|
-
this.label = 'Input label is undefined';
|
|
77213
|
-
|
|
77214
77812
|
|
|
77813
|
+
/** @private */
|
|
77215
77814
|
this.allowedInputTypes = [
|
|
77216
77815
|
"text",
|
|
77217
77816
|
"number",
|
|
@@ -77220,7 +77819,9 @@ class BaseInput extends AuroElement$1$1 {
|
|
|
77220
77819
|
"credit-card",
|
|
77221
77820
|
"tel"
|
|
77222
77821
|
];
|
|
77223
|
-
this.
|
|
77822
|
+
this.appearance = "default";
|
|
77823
|
+
|
|
77824
|
+
/** @private */
|
|
77224
77825
|
this.dateFormatMap = {
|
|
77225
77826
|
'mm/dd/yyyy': 'dateMMDDYYYY',
|
|
77226
77827
|
'dd/mm/yyyy': 'dateDDMMYYYY',
|
|
@@ -77237,27 +77838,62 @@ class BaseInput extends AuroElement$1$1 {
|
|
|
77237
77838
|
'dd/mm': 'dateDDMM',
|
|
77238
77839
|
'mm/dd': 'dateMMDD'
|
|
77239
77840
|
};
|
|
77841
|
+
this.disabled = false;
|
|
77842
|
+
|
|
77843
|
+
/** @private */
|
|
77240
77844
|
this.domHandler = new DomHandler();
|
|
77241
77845
|
this.dvInputOnly = false;
|
|
77242
77846
|
this.hasValue = false;
|
|
77847
|
+
this.hideLabelVisually = false;
|
|
77848
|
+
this.icon = false;
|
|
77849
|
+
|
|
77850
|
+
/** @private */
|
|
77243
77851
|
this.inputIconName = undefined;
|
|
77852
|
+
|
|
77853
|
+
/** @private */
|
|
77244
77854
|
this.label = 'Input label is undefined';
|
|
77855
|
+
this.layout = 'classic';
|
|
77856
|
+
this.locale = 'en-US';
|
|
77857
|
+
this.max = undefined;
|
|
77858
|
+
this.maxLength = undefined;
|
|
77859
|
+
this.min = undefined;
|
|
77860
|
+
this.minLength = undefined;
|
|
77245
77861
|
this.noValidate = false;
|
|
77246
|
-
this.
|
|
77862
|
+
this.onDark = false;
|
|
77863
|
+
// Raw values returned from the input mask before model normalization.
|
|
77864
|
+
this._rawMaskValue = undefined;
|
|
77865
|
+
this.required = false;
|
|
77866
|
+
this.setCustomValidityForType = undefined;
|
|
77867
|
+
// Credit Card is intentionally excluded — its mask manages the cursor
|
|
77868
|
+
// itself, and listing it here caused cursor placement issues in Safari.
|
|
77869
|
+
/** @private */
|
|
77247
77870
|
this.setSelectionInputTypes = [
|
|
77248
77871
|
"text",
|
|
77249
77872
|
"password",
|
|
77250
77873
|
"email"
|
|
77251
|
-
];
|
|
77874
|
+
];
|
|
77875
|
+
this.shape = 'classic';
|
|
77876
|
+
|
|
77877
|
+
/** @private */
|
|
77252
77878
|
this.showPassword = false;
|
|
77879
|
+
this.size = 'lg';
|
|
77253
77880
|
this.touched = false;
|
|
77881
|
+
|
|
77882
|
+
/** @private */
|
|
77254
77883
|
this.uniqueId = new UniqueId().create();
|
|
77884
|
+
|
|
77885
|
+
/** @private */
|
|
77255
77886
|
this.util = new AuroInputUtilities({
|
|
77256
77887
|
locale: this.locale,
|
|
77257
77888
|
format: this.format
|
|
77258
77889
|
});
|
|
77890
|
+
|
|
77891
|
+
/** @private */
|
|
77259
77892
|
this.validation = new AuroFormValidation$2();
|
|
77893
|
+
|
|
77894
|
+
/** @private */
|
|
77260
77895
|
this.validationCCLength = undefined;
|
|
77896
|
+
this.value = undefined;
|
|
77261
77897
|
}
|
|
77262
77898
|
|
|
77263
77899
|
// function to define props used within the scope of this component
|
|
@@ -77761,6 +78397,15 @@ class BaseInput extends AuroElement$1$1 {
|
|
|
77761
78397
|
|
|
77762
78398
|
this.inputId = this.id ? `${this.id}-input` : window.crypto.randomUUID();
|
|
77763
78399
|
|
|
78400
|
+
// Normalize the format token to lowercase so case-mixed values supplied
|
|
78401
|
+
// via attribute (e.g. `format="MM/DD/YYYY"`) hit the `dateFormatMap`
|
|
78402
|
+
// lookup inside `setCustomHelpTextMessage`. Without this, an uppercase
|
|
78403
|
+
// format silently misses the map and leaves `setCustomValidityForType`
|
|
78404
|
+
// unset.
|
|
78405
|
+
if (this.format) {
|
|
78406
|
+
this.format = this.format.toLowerCase();
|
|
78407
|
+
}
|
|
78408
|
+
|
|
77764
78409
|
// use validity message override if declared when initializing the component
|
|
77765
78410
|
if (this.hasAttribute('setCustomValidity')) {
|
|
77766
78411
|
this.ValidityMessageOverride = this.setCustomValidity;
|
|
@@ -77844,6 +78489,13 @@ class BaseInput extends AuroElement$1$1 {
|
|
|
77844
78489
|
|
|
77845
78490
|
if (typeToI18n.includes(this.type)) {
|
|
77846
78491
|
this.setCustomValidityForType = i18n(this.lang, this.type);
|
|
78492
|
+
// COVERAGE: this `else if` branch is unreachable in WTR. connectedCallback
|
|
78493
|
+
// (L682) calls configureDataForType, which at L1266-1268 assigns
|
|
78494
|
+
// `this.format = this.util.getDateMaskFromLocale().toLowerCase()` for any
|
|
78495
|
+
// type=date input whose `format` attribute is unset. That runs before
|
|
78496
|
+
// firstUpdated invokes setCustomHelpTextMessage, so `!this.format` is
|
|
78497
|
+
// always false here. Retained as a defensive fallback; the whole function
|
|
78498
|
+
// is @deprecated per AB#1557296 and slated for removal.
|
|
77847
78499
|
} else if (!this.format && this.type === 'date') {
|
|
77848
78500
|
this.setCustomValidityForType = i18n(this.lang, 'dateMMDDYYYY');
|
|
77849
78501
|
} else if (this.dateFormatMap[this.format]) {
|
|
@@ -78133,6 +78785,38 @@ class BaseInput extends AuroElement$1$1 {
|
|
|
78133
78785
|
this.touched = true;
|
|
78134
78786
|
this.validation.validate(this);
|
|
78135
78787
|
}
|
|
78788
|
+
|
|
78789
|
+
// Prevents cursor jumping in Safari. Setting `this.value` triggers a Lit
|
|
78790
|
+
// update that can re-render the input and reset the native cursor; we
|
|
78791
|
+
// capture the caret position before that update commits and restore it
|
|
78792
|
+
// via `setSelectionRange` once the update has flushed. Gated on
|
|
78793
|
+
// `setSelectionInputTypes` so credit-card (and other masked types whose
|
|
78794
|
+
// formatter manages the cursor itself) doesn't get a competing write.
|
|
78795
|
+
// Capture the caret position INSIDE the gate — reading `selectionStart`
|
|
78796
|
+
// on input types that don't support text selection (number, email in
|
|
78797
|
+
// some browsers) throws InvalidStateError, which would crash all input
|
|
78798
|
+
// handling. Wrap the read in try/catch belt-and-suspenders even though
|
|
78799
|
+
// the gated types currently support it, since the list is a public
|
|
78800
|
+
// property a consumer could mutate.
|
|
78801
|
+
if (this.setSelectionInputTypes.includes(this.type)) {
|
|
78802
|
+
let selectionStart = null;
|
|
78803
|
+
try {
|
|
78804
|
+
({ selectionStart } = this.inputElement);
|
|
78805
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
78806
|
+
return;
|
|
78807
|
+
}
|
|
78808
|
+
if (typeof selectionStart !== 'number') {
|
|
78809
|
+
return;
|
|
78810
|
+
}
|
|
78811
|
+
this.updateComplete.then(() => {
|
|
78812
|
+
try {
|
|
78813
|
+
this.inputElement.setSelectionRange(selectionStart, selectionStart);
|
|
78814
|
+
} catch (error) { // eslint-disable-line no-unused-vars
|
|
78815
|
+
// Some input types (number/email in certain UAs) throw on
|
|
78816
|
+
// setSelectionRange; swallow and let the native cursor stand.
|
|
78817
|
+
}
|
|
78818
|
+
});
|
|
78819
|
+
}
|
|
78136
78820
|
}
|
|
78137
78821
|
|
|
78138
78822
|
/**
|
|
@@ -78266,7 +78950,7 @@ class BaseInput extends AuroElement$1$1 {
|
|
|
78266
78950
|
*/
|
|
78267
78951
|
get placeholderStr() {
|
|
78268
78952
|
if (!this.placeholder && this.type === 'date') {
|
|
78269
|
-
return this.format
|
|
78953
|
+
return this.format.toUpperCase();
|
|
78270
78954
|
}
|
|
78271
78955
|
return this.placeholder || "";
|
|
78272
78956
|
}
|
|
@@ -78757,7 +79441,7 @@ let AuroHelpText$1$1 = class AuroHelpText extends i$2 {
|
|
|
78757
79441
|
}
|
|
78758
79442
|
};
|
|
78759
79443
|
|
|
78760
|
-
var formkitVersion$1$1 = '
|
|
79444
|
+
var formkitVersion$1$1 = '202607010104';
|
|
78761
79445
|
|
|
78762
79446
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
78763
79447
|
// See LICENSE in the project root for license information.
|
|
@@ -79260,6 +79944,7 @@ class AuroInput extends BaseInput {
|
|
|
79260
79944
|
<${this.buttonTag}
|
|
79261
79945
|
@click="${this.handleClickShowPassword}"
|
|
79262
79946
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
79947
|
+
aria-pressed="${this.showPassword ? 'true' : 'false'}"
|
|
79263
79948
|
class="notificationBtn passwordBtn"
|
|
79264
79949
|
shape="circle"
|
|
79265
79950
|
size="sm"
|
|
@@ -79333,25 +80018,29 @@ class AuroInput extends BaseInput {
|
|
|
79333
80018
|
* @returns {html} - Returns HTML for the help text and error message.
|
|
79334
80019
|
*/
|
|
79335
80020
|
renderHtmlHelpText() {
|
|
80021
|
+
// Single `<p>` with stable identity across validity transitions —
|
|
80022
|
+
// previously two distinct templates (valid vs invalid) caused Lit to
|
|
80023
|
+
// replace the node entirely on a flip, and VoiceOver wouldn't
|
|
80024
|
+
// re-announce because the live-region element it was watching had been
|
|
80025
|
+
// removed and a new one inserted. Keeping one node means the `role`,
|
|
80026
|
+
// `aria-live`, and text content all change in-place, which AT does
|
|
80027
|
+
// observe and announce.
|
|
80028
|
+
const isError = this.validity && this.validity !== 'valid';
|
|
79336
80029
|
return u$d`
|
|
79337
|
-
|
|
79338
|
-
?
|
|
79339
|
-
|
|
79340
|
-
|
|
79341
|
-
|
|
79342
|
-
|
|
79343
|
-
|
|
79344
|
-
|
|
79345
|
-
|
|
79346
|
-
|
|
79347
|
-
|
|
79348
|
-
|
|
79349
|
-
|
|
79350
|
-
|
|
79351
|
-
</p>
|
|
79352
|
-
</${this.helpTextTag}>
|
|
79353
|
-
`
|
|
79354
|
-
}
|
|
80030
|
+
<${this.helpTextTag}
|
|
80031
|
+
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
80032
|
+
?error=${isError}>
|
|
80033
|
+
<p
|
|
80034
|
+
id="${this.uniqueId}"
|
|
80035
|
+
part="helpText"
|
|
80036
|
+
role="${o$4(isError ? 'alert' : undefined)}"
|
|
80037
|
+
aria-live="${o$4(isError ? 'assertive' : undefined)}">
|
|
80038
|
+
${isError
|
|
80039
|
+
? this.errorMessage
|
|
80040
|
+
: u$d`<slot name="helpText">${this.getHelpText()}</slot>`
|
|
80041
|
+
}
|
|
80042
|
+
</p>
|
|
80043
|
+
</${this.helpTextTag}>
|
|
79355
80044
|
`;
|
|
79356
80045
|
}
|
|
79357
80046
|
|
|
@@ -79483,7 +80172,7 @@ class AuroInput extends BaseInput {
|
|
|
79483
80172
|
|
|
79484
80173
|
var colorCss$1$3 = i$4`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
|
|
79485
80174
|
|
|
79486
|
-
var styleCss$2$2 = i$4`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1
|
|
80175
|
+
var styleCss$2$2 = i$4`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{padding:var(--ds-size-200, 1rem)}`;
|
|
79487
80176
|
|
|
79488
80177
|
var tokenCss$1 = i$4`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
|
|
79489
80178
|
|
|
@@ -79878,7 +80567,7 @@ let AuroBibtemplate$1 = class AuroBibtemplate extends i$2 {
|
|
|
79878
80567
|
}
|
|
79879
80568
|
};
|
|
79880
80569
|
|
|
79881
|
-
var formkitVersion$3 = '
|
|
80570
|
+
var formkitVersion$3 = '202607010104';
|
|
79882
80571
|
|
|
79883
80572
|
var styleCss$1$3 = i$4`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
|
|
79884
80573
|
|
|
@@ -80246,12 +80935,23 @@ function getOptionLabel(option) {
|
|
|
80246
80935
|
if (!option) {
|
|
80247
80936
|
return '';
|
|
80248
80937
|
}
|
|
80249
|
-
|
|
80250
|
-
|
|
80251
|
-
if (
|
|
80252
|
-
|
|
80938
|
+
|
|
80939
|
+
// Consumer-provided override: short-circuit the DOM walk entirely.
|
|
80940
|
+
if (option.dataset && option.dataset.label) {
|
|
80941
|
+
return option.dataset.label;
|
|
80942
|
+
}
|
|
80943
|
+
|
|
80944
|
+
// Walk direct children — the `slot` attribute only applies to direct children
|
|
80945
|
+
// of the slot host, so a shallow filter is sufficient. Avoids the cloneNode +
|
|
80946
|
+
// querySelector allocation that ran on every keystroke via syncValuesAndStates.
|
|
80947
|
+
let text = '';
|
|
80948
|
+
for (const node of option.childNodes) {
|
|
80949
|
+
const isDisplayValueSlot = node.nodeType === Node.ELEMENT_NODE && node.getAttribute('slot') === 'displayValue';
|
|
80950
|
+
if (!isDisplayValueSlot) {
|
|
80951
|
+
text += node.textContent || '';
|
|
80952
|
+
}
|
|
80253
80953
|
}
|
|
80254
|
-
return
|
|
80954
|
+
return text.replace(/\s+/gu, ' ').trim();
|
|
80255
80955
|
}
|
|
80256
80956
|
|
|
80257
80957
|
// See https://git.io/JJ6SJ for "How to document your components using JSDoc"
|
|
@@ -80326,8 +81026,6 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
80326
81026
|
this.availableOptions = [];
|
|
80327
81027
|
this.dropdownId = undefined;
|
|
80328
81028
|
this.dropdownOpen = false;
|
|
80329
|
-
this.triggerExpandedState = false;
|
|
80330
|
-
this._expandedTimeout = null;
|
|
80331
81029
|
this._inFullscreenTransition = false;
|
|
80332
81030
|
this.errorMessage = null;
|
|
80333
81031
|
this.isHiddenWhileLoading = false;
|
|
@@ -80338,6 +81036,30 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
80338
81036
|
this.touched = false;
|
|
80339
81037
|
this.validation = new AuroFormValidation$1();
|
|
80340
81038
|
this.validity = undefined;
|
|
81039
|
+
this._userTyped = false;
|
|
81040
|
+
// Tracks every setTimeout scheduled via _scheduleTimer so
|
|
81041
|
+
// disconnectedCallback can cancel them. Without this, a detached
|
|
81042
|
+
// combobox's pending timers still fire — most are no-ops, but
|
|
81043
|
+
// configureMenu's racing-condition retry would otherwise loop.
|
|
81044
|
+
this._pendingTimers = new Set();
|
|
81045
|
+
}
|
|
81046
|
+
|
|
81047
|
+
/**
|
|
81048
|
+
* setTimeout wrapper that records the timer id so disconnectedCallback
|
|
81049
|
+
* can cancel any outstanding callbacks. The id is removed from the set
|
|
81050
|
+
* once the callback fires so the set doesn't grow unbounded.
|
|
81051
|
+
* @param {Function} fn - Callback to run.
|
|
81052
|
+
* @param {number} ms - Delay in milliseconds.
|
|
81053
|
+
* @returns {number} The timer id.
|
|
81054
|
+
* @private
|
|
81055
|
+
*/
|
|
81056
|
+
_scheduleTimer(fn, ms) {
|
|
81057
|
+
const id = setTimeout(() => {
|
|
81058
|
+
this._pendingTimers.delete(id);
|
|
81059
|
+
fn();
|
|
81060
|
+
}, ms);
|
|
81061
|
+
this._pendingTimers.add(id);
|
|
81062
|
+
return id;
|
|
80341
81063
|
}
|
|
80342
81064
|
|
|
80343
81065
|
// This function is to define props used within the scope of this component
|
|
@@ -80699,17 +81421,6 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
80699
81421
|
attribute: false
|
|
80700
81422
|
},
|
|
80701
81423
|
|
|
80702
|
-
/**
|
|
80703
|
-
* Deferred aria-expanded state for the trigger input.
|
|
80704
|
-
* Delays the "true" transition so VoiceOver finishes its character echo
|
|
80705
|
-
* before announcing "expanded".
|
|
80706
|
-
* @private
|
|
80707
|
-
*/
|
|
80708
|
-
triggerExpandedState: {
|
|
80709
|
-
type: Boolean,
|
|
80710
|
-
reflect: false,
|
|
80711
|
-
attribute: false
|
|
80712
|
-
},
|
|
80713
81424
|
};
|
|
80714
81425
|
}
|
|
80715
81426
|
|
|
@@ -80732,13 +81443,6 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
80732
81443
|
return this.input.value;
|
|
80733
81444
|
}
|
|
80734
81445
|
|
|
80735
|
-
// /**
|
|
80736
|
-
// * Sets the value of the input element within the combobox.
|
|
80737
|
-
// */
|
|
80738
|
-
// set inputValue(value) {
|
|
80739
|
-
// this.input.value = value;
|
|
80740
|
-
// }
|
|
80741
|
-
|
|
80742
81446
|
/**
|
|
80743
81447
|
* Checks if the element is valid.
|
|
80744
81448
|
* @returns {boolean} - Returns true if the element is valid, false otherwise.
|
|
@@ -80884,8 +81588,11 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
80884
81588
|
this.syncInputValuesAcrossTriggerAndBib(label || this.value);
|
|
80885
81589
|
}
|
|
80886
81590
|
|
|
80887
|
-
//
|
|
80888
|
-
|
|
81591
|
+
// Replace any previously appended displayValue clone in the trigger.
|
|
81592
|
+
// :not(slot) excludes the template's <slot name="displayValue"
|
|
81593
|
+
// slot="displayValue"> forwarder, which also has slot="displayValue"
|
|
81594
|
+
// and would otherwise be matched first and removed.
|
|
81595
|
+
const displayValueInTrigger = this.input.querySelector('[slot="displayValue"]:not(slot)');
|
|
80889
81596
|
|
|
80890
81597
|
if (displayValueInTrigger) {
|
|
80891
81598
|
displayValueInTrigger.remove();
|
|
@@ -80913,19 +81620,19 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
80913
81620
|
* Writes nextValue to the trigger input and the bib input when their current
|
|
80914
81621
|
* value differs, then re-asserts imask after Lit's update flushes.
|
|
80915
81622
|
* @param {string} nextValue - The value to write to both inputs.
|
|
80916
|
-
* @returns {Promise<void>
|
|
80917
|
-
*
|
|
81623
|
+
* @returns {Promise<void>} Resolves after both inputs flush and imask
|
|
81624
|
+
* re-asserts; resolves immediately when no sync is needed.
|
|
80918
81625
|
* @private
|
|
80919
81626
|
*/
|
|
80920
|
-
syncInputValuesAcrossTriggerAndBib(nextValue) {
|
|
81627
|
+
async syncInputValuesAcrossTriggerAndBib(nextValue) {
|
|
80921
81628
|
// Only set the flag when there's an actual write to suppress —
|
|
80922
81629
|
// syncValuesAndStates re-enters here during typing when both inputs
|
|
80923
81630
|
// already match, and a no-op flag flip would make the bib branch's
|
|
80924
81631
|
// bail eat legitimate user-input events.
|
|
80925
81632
|
const triggerNeedsSync = this.input.value !== nextValue;
|
|
80926
|
-
const bibNeedsSync = this.inputInBib.value !== nextValue;
|
|
81633
|
+
const bibNeedsSync = Boolean(this.inputInBib) && this.inputInBib.value !== nextValue;
|
|
80927
81634
|
if (!triggerNeedsSync && !bibNeedsSync) {
|
|
80928
|
-
return
|
|
81635
|
+
return;
|
|
80929
81636
|
}
|
|
80930
81637
|
|
|
80931
81638
|
this._syncingDisplayValue = true;
|
|
@@ -80939,16 +81646,21 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
80939
81646
|
this.inputInBib.value = nextValue;
|
|
80940
81647
|
pending.push(this.inputInBib.updateComplete);
|
|
80941
81648
|
}
|
|
80942
|
-
|
|
81649
|
+
// finally — not a bare .then — so that an imask throw (see commit
|
|
81650
|
+
// d1857401c: imask can throw on credit-card format change) doesn't strand
|
|
81651
|
+
// _syncingDisplayValue=true and silently swallow every subsequent input.
|
|
81652
|
+
try {
|
|
81653
|
+
await Promise.all(pending);
|
|
80943
81654
|
// imask reasserts otherwise, and handleBlur reverts to its stale value.
|
|
80944
81655
|
if (triggerNeedsSync && this.input.maskInstance && typeof this.input.maskInstance.updateValue === 'function') {
|
|
80945
81656
|
this.input.maskInstance.updateValue();
|
|
80946
81657
|
}
|
|
80947
|
-
if (bibNeedsSync && this.inputInBib
|
|
81658
|
+
if (bibNeedsSync && this.inputInBib.maskInstance && typeof this.inputInBib.maskInstance.updateValue === 'function') {
|
|
80948
81659
|
this.inputInBib.maskInstance.updateValue();
|
|
80949
81660
|
}
|
|
81661
|
+
} finally {
|
|
80950
81662
|
this._syncingDisplayValue = false;
|
|
80951
|
-
}
|
|
81663
|
+
}
|
|
80952
81664
|
}
|
|
80953
81665
|
|
|
80954
81666
|
/**
|
|
@@ -80959,6 +81671,13 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
80959
81671
|
handleMenuOptions() {
|
|
80960
81672
|
this.generateOptionsArray();
|
|
80961
81673
|
this.availableOptions = [];
|
|
81674
|
+
// Single source of truth for the menu's filter/highlight token per call.
|
|
81675
|
+
// syncValuesAndStates re-writes the same value on exact-match keystrokes —
|
|
81676
|
+
// Lit's hasChanged makes that a no-op — and the prior duplicate set inside
|
|
81677
|
+
// handleTriggerInputValueChange is gone.
|
|
81678
|
+
if (this.menu) {
|
|
81679
|
+
this.menu.matchWord = normalizeFilterValue(this.input.value);
|
|
81680
|
+
}
|
|
80962
81681
|
this.updateFilter();
|
|
80963
81682
|
|
|
80964
81683
|
// Set aria-setsize/aria-posinset on each visible option so screen readers
|
|
@@ -80970,11 +81689,8 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
80970
81689
|
option.setAttribute('aria-posinset', index + 1);
|
|
80971
81690
|
});
|
|
80972
81691
|
|
|
80973
|
-
if (this.value && this.
|
|
80974
|
-
|
|
80975
|
-
this.setMenuValue(this.value);
|
|
80976
|
-
}
|
|
80977
|
-
|
|
81692
|
+
if (this.input.value && this.menu.options && this.menu.options.some((opt) => opt.value === this.input.value)) {
|
|
81693
|
+
this.setMenuValue(this.input.value);
|
|
80978
81694
|
this.syncValuesAndStates();
|
|
80979
81695
|
}
|
|
80980
81696
|
|
|
@@ -81053,18 +81769,6 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81053
81769
|
this.dropdownOpen = ev.detail.expanded;
|
|
81054
81770
|
this.updateMenuShapeSize();
|
|
81055
81771
|
|
|
81056
|
-
// Defer aria-expanded "true" so VoiceOver finishes character echo
|
|
81057
|
-
// before announcing "expanded". Set "false" immediately on close.
|
|
81058
|
-
clearTimeout(this._expandedTimeout);
|
|
81059
|
-
if (this.dropdownOpen) {
|
|
81060
|
-
const expandedDelay = 150;
|
|
81061
|
-
this._expandedTimeout = setTimeout(() => {
|
|
81062
|
-
this.triggerExpandedState = true;
|
|
81063
|
-
}, expandedDelay);
|
|
81064
|
-
} else {
|
|
81065
|
-
this.triggerExpandedState = false;
|
|
81066
|
-
}
|
|
81067
|
-
|
|
81068
81772
|
// Clear aria-activedescendant when dropdown closes
|
|
81069
81773
|
if (!this.dropdownOpen && this.input) {
|
|
81070
81774
|
this.input.setActiveDescendant(null);
|
|
@@ -81169,7 +81873,7 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81169
81873
|
this.dropdown.trigger.inert = false;
|
|
81170
81874
|
}
|
|
81171
81875
|
|
|
81172
|
-
|
|
81876
|
+
this._scheduleTimer(() => {
|
|
81173
81877
|
this.setInputFocus();
|
|
81174
81878
|
}, 0);
|
|
81175
81879
|
});
|
|
@@ -81313,7 +82017,7 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81313
82017
|
|
|
81314
82018
|
// racing condition on custom-combobox with custom-menu
|
|
81315
82019
|
if (!this.menu) {
|
|
81316
|
-
|
|
82020
|
+
this._scheduleTimer(() => {
|
|
81317
82021
|
this.configureMenu();
|
|
81318
82022
|
}, 0);
|
|
81319
82023
|
return;
|
|
@@ -81368,9 +82072,7 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81368
82072
|
// Hide dropdown on selection (except during slot changes)
|
|
81369
82073
|
if (evt.detail && evt.detail.source !== 'slotchange') {
|
|
81370
82074
|
// do not close while typing in suggestion mode with no value selected, to allow freeform input
|
|
81371
|
-
|
|
81372
|
-
this.hideBib();
|
|
81373
|
-
}
|
|
82075
|
+
this.hideBib();
|
|
81374
82076
|
|
|
81375
82077
|
// Move focus to the clear button when the user makes a selection.
|
|
81376
82078
|
if (!isEcho && this.menu.value !== undefined) {
|
|
@@ -81384,7 +82086,7 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81384
82086
|
const selectedValue = this.menu.value;
|
|
81385
82087
|
if (selectedValue) {
|
|
81386
82088
|
const announcementDelay = 300;
|
|
81387
|
-
|
|
82089
|
+
this._scheduleTimer(() => {
|
|
81388
82090
|
announceToScreenReader$1(this._getAnnouncementRoot(), `${selectedValue}, selected`);
|
|
81389
82091
|
}, announcementDelay);
|
|
81390
82092
|
}
|
|
@@ -81396,10 +82098,6 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81396
82098
|
// only — fresh user selections take the existing hideBib path.
|
|
81397
82099
|
if (isEcho && this.menu.optionSelected) {
|
|
81398
82100
|
this._programmaticFilterRefresh = true;
|
|
81399
|
-
this.handleMenuOptions();
|
|
81400
|
-
setTimeout(() => {
|
|
81401
|
-
this._programmaticFilterRefresh = false;
|
|
81402
|
-
}, 0);
|
|
81403
82101
|
}
|
|
81404
82102
|
});
|
|
81405
82103
|
|
|
@@ -81412,6 +82110,14 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81412
82110
|
// stale option. Safe from re-entrancy because any resulting
|
|
81413
82111
|
// input.value changes dispatch isProgrammatic events.
|
|
81414
82112
|
this.menu.addEventListener('auroMenu-selectValueFailure', () => {
|
|
82113
|
+
// Announce the rejection BEFORE we clear `this.value` so the live
|
|
82114
|
+
// region carries the attempted value — without this the bib closes
|
|
82115
|
+
// silently and screen-reader users get no signal that their request
|
|
82116
|
+
// (e.g. a direct setMenuValue() call) was dropped.
|
|
82117
|
+
const attemptedValue = this.value;
|
|
82118
|
+
if (attemptedValue) {
|
|
82119
|
+
announceToScreenReader$1(this._getAnnouncementRoot(), `No matching option for ${attemptedValue}`);
|
|
82120
|
+
}
|
|
81415
82121
|
this.value = undefined;
|
|
81416
82122
|
this.optionSelected = undefined;
|
|
81417
82123
|
});
|
|
@@ -81423,10 +82129,13 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81423
82129
|
this.input.setActiveDescendant(this.optionActive);
|
|
81424
82130
|
}
|
|
81425
82131
|
|
|
81426
|
-
//
|
|
81427
|
-
//
|
|
81428
|
-
//
|
|
81429
|
-
|
|
82132
|
+
// In fullscreen mode the menu sits inside a nested <dialog> shadow root,
|
|
82133
|
+
// and aria-activedescendant references across that boundary are lost —
|
|
82134
|
+
// VoiceOver/NVDA don't read the active option natively, so we mirror it
|
|
82135
|
+
// into the polite live region. In popover mode aria-activedescendant on
|
|
82136
|
+
// the trigger input is read natively; double-announcing would flood the
|
|
82137
|
+
// queue on arrow-key repeat.
|
|
82138
|
+
if (this.optionActive && this.dropdown.isBibFullscreen) {
|
|
81430
82139
|
const optionText = this.optionActive.textContent.trim();
|
|
81431
82140
|
const selectedState = this.optionActive.hasAttribute('selected') ? ', selected' : ', not selected';
|
|
81432
82141
|
const optionIndex = this.availableOptions.indexOf(this.optionActive) + 1;
|
|
@@ -81459,7 +82168,12 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81459
82168
|
* Validate every time we remove focus from the combo box.
|
|
81460
82169
|
*/
|
|
81461
82170
|
this.addEventListener('focusout', () => {
|
|
81462
|
-
|
|
82171
|
+
// Skip while the dropdown is open — focus transits out briefly on
|
|
82172
|
+
// mousedown of a menu option (popover top-layer breaks :focus-within),
|
|
82173
|
+
// and validating against the pre-selection value flashes a stale error
|
|
82174
|
+
// between mousedown and mouseup. The next focusout fires after the
|
|
82175
|
+
// dropdown closes and validates against the post-selection value.
|
|
82176
|
+
if (!this.componentHasFocus && !this._inFullscreenTransition && !this.dropdownOpen) {
|
|
81463
82177
|
this.validate();
|
|
81464
82178
|
}
|
|
81465
82179
|
});
|
|
@@ -81522,49 +82236,40 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81522
82236
|
if (this._syncingDisplayValue) {
|
|
81523
82237
|
return;
|
|
81524
82238
|
}
|
|
81525
|
-
this._syncingBibValue = true;
|
|
81526
|
-
this.input.value = this.inputInBib.value;
|
|
81527
|
-
this.input.updateComplete.then(() => {
|
|
81528
|
-
this._syncingBibValue = false;
|
|
81529
|
-
});
|
|
81530
|
-
|
|
81531
|
-
// Run filtering inline — the re-entrant event won't reach this code.
|
|
81532
|
-
this.menu.matchWord = normalizeFilterValue(this.inputInBib.value);
|
|
81533
|
-
this.optionActive = null;
|
|
81534
82239
|
|
|
81535
|
-
//
|
|
81536
|
-
//
|
|
81537
|
-
//
|
|
81538
|
-
if (this.
|
|
81539
|
-
this.
|
|
82240
|
+
// Filtering runs via re-entrance: writing this.input.value below
|
|
82241
|
+
// dispatches an 'input' event that the trigger's listener routes to
|
|
82242
|
+
// handleTriggerInputValueChange, which refreshes the menu filter.
|
|
82243
|
+
if (this.input.value !== this.inputInBib.value) {
|
|
82244
|
+
this._syncingBibValue = true;
|
|
82245
|
+
this.input.value = this.inputInBib.value;
|
|
82246
|
+
this.input.updateComplete.then(() => {
|
|
82247
|
+
this._syncingBibValue = false;
|
|
82248
|
+
});
|
|
81540
82249
|
}
|
|
81541
82250
|
|
|
81542
|
-
this.handleMenuOptions();
|
|
81543
82251
|
this.dispatchEvent(new CustomEvent('inputValue', { detail: { value: this.inputValue } }));
|
|
81544
|
-
|
|
82252
|
+
} else if (event.target === this.input) {
|
|
82253
|
+
|
|
82254
|
+
// Also sync the native input immediately so keystrokes arriving
|
|
82255
|
+
// before Lit's async update cycle (e.g. rapid Backspaces during a
|
|
82256
|
+
// fullscreen transition) operate on the correct content.
|
|
82257
|
+
// Skip the next programmatic input event to prevent the patched setter
|
|
82258
|
+
// from re-entering handleInputValueChange via the bib path.
|
|
82259
|
+
const bibNativeInput = this.inputInBib.inputElement;
|
|
82260
|
+
if (bibNativeInput && bibNativeInput.value !== this.input.value) {
|
|
82261
|
+
this.inputInBib.skipNextProgrammaticInputEvent = true;
|
|
82262
|
+
bibNativeInput.value = this.input.value || '';
|
|
82263
|
+
}
|
|
81545
82264
|
}
|
|
81546
82265
|
|
|
82266
|
+
this.value = this.input.value;
|
|
82267
|
+
|
|
81547
82268
|
// Ignore re-entrant input events caused by programmatic value sets.
|
|
81548
82269
|
if (this._syncingBibValue || this._syncingDisplayValue) {
|
|
81549
82270
|
return;
|
|
81550
82271
|
}
|
|
81551
82272
|
|
|
81552
|
-
this.inputInBib.value = this.input.value;
|
|
81553
|
-
|
|
81554
|
-
// Also sync the native input immediately so keystrokes arriving
|
|
81555
|
-
// before Lit's async update cycle (e.g. rapid Backspaces during a
|
|
81556
|
-
// fullscreen transition) operate on the correct content.
|
|
81557
|
-
// Skip the next programmatic input event to prevent the patched setter
|
|
81558
|
-
// from re-entering handleInputValueChange via the bib path.
|
|
81559
|
-
const bibNativeInput = this.inputInBib.inputElement;
|
|
81560
|
-
if (bibNativeInput && bibNativeInput.value !== this.input.value) {
|
|
81561
|
-
this.inputInBib.skipNextProgrammaticInputEvent = true;
|
|
81562
|
-
bibNativeInput.value = this.input.value || '';
|
|
81563
|
-
}
|
|
81564
|
-
|
|
81565
|
-
this.menu.matchWord = normalizeFilterValue(this.input.value);
|
|
81566
|
-
this.optionActive = null;
|
|
81567
|
-
|
|
81568
82273
|
if (this.behavior === 'suggestion') {
|
|
81569
82274
|
this.value = this.input.value;
|
|
81570
82275
|
}
|
|
@@ -81572,7 +82277,6 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81572
82277
|
if (!this.input.value && !this._clearing) {
|
|
81573
82278
|
this.clear();
|
|
81574
82279
|
}
|
|
81575
|
-
this.handleMenuOptions();
|
|
81576
82280
|
|
|
81577
82281
|
// Validate only if the value was set programmatically (not during user
|
|
81578
82282
|
// interaction). In fullscreen dialog mode, componentHasFocus returns false
|
|
@@ -81582,34 +82286,44 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81582
82286
|
this.validate();
|
|
81583
82287
|
}
|
|
81584
82288
|
|
|
81585
|
-
|
|
81586
|
-
|
|
81587
|
-
|
|
81588
|
-
|
|
81589
|
-
|
|
81590
|
-
|
|
81591
|
-
|
|
81592
|
-
|
|
81593
|
-
|
|
82289
|
+
this.dispatchEvent(new CustomEvent('inputValue', { detail: { value: this.inputValue } }));
|
|
82290
|
+
}
|
|
82291
|
+
|
|
82292
|
+
/**
|
|
82293
|
+
* Handles input value changes originating from the trigger input.
|
|
82294
|
+
* Refreshes menu options and filtering, delegates to handleInputValueChange
|
|
82295
|
+
* for value synchronization, and manages fullscreen bib focus.
|
|
82296
|
+
* @private
|
|
82297
|
+
* @param {Event} event - The input event from the trigger input element.
|
|
82298
|
+
* @returns {void}
|
|
82299
|
+
*/
|
|
82300
|
+
handleTriggerInputValueChange(event) {
|
|
82301
|
+
// 'input' fires for every user-initiated value change — typing, paste,
|
|
82302
|
+
// IME composition end, dead-key composition, drag-drop. Flip _userTyped
|
|
82303
|
+
// here so updated('availableOptions') auto-opens the bib for sources
|
|
82304
|
+
// that keydown alone misses: paste fires no keydown, IME uses
|
|
82305
|
+
// key='Process', and dead keys produce multi-char keys (all bypass the
|
|
82306
|
+
// prior keydown.key.length===1 gate). Skip programmatic syncs.
|
|
82307
|
+
if (!this._syncingDisplayValue && !this._syncingBibValue && !this._programmaticFilterRefresh) {
|
|
82308
|
+
this._userTyped = true;
|
|
81594
82309
|
}
|
|
81595
82310
|
|
|
81596
|
-
|
|
81597
|
-
|
|
81598
|
-
|
|
81599
|
-
|
|
81600
|
-
|
|
81601
|
-
// dialog opens — the user then has to tap the input again to resume
|
|
81602
|
-
// typing.
|
|
81603
|
-
if (this.dropdown.isBibFullscreen && this.input.value && this.input.value.length > 0) {
|
|
81604
|
-
if (!this.dropdown.isPopoverVisible) {
|
|
81605
|
-
this.showBib();
|
|
81606
|
-
}
|
|
81607
|
-
if (this.dropdown.isPopoverVisible) {
|
|
81608
|
-
this.setInputFocus();
|
|
81609
|
-
}
|
|
82311
|
+
this.handleMenuOptions();
|
|
82312
|
+
this.optionActive = null;
|
|
82313
|
+
|
|
82314
|
+
if (this.value === this.input.value) {
|
|
82315
|
+
return;
|
|
81610
82316
|
}
|
|
81611
82317
|
|
|
81612
|
-
this.
|
|
82318
|
+
this.handleInputValueChange(event);
|
|
82319
|
+
|
|
82320
|
+
if (this.dropdown.isBibFullscreen && this.input.value && this.input.value.length > 0 && this.dropdown.isPopoverVisible) {
|
|
82321
|
+
this.setInputFocus();
|
|
82322
|
+
}
|
|
82323
|
+
|
|
82324
|
+
if (this._programmaticFilterRefresh) {
|
|
82325
|
+
this._programmaticFilterRefresh = false;
|
|
82326
|
+
}
|
|
81613
82327
|
}
|
|
81614
82328
|
|
|
81615
82329
|
/**
|
|
@@ -81677,6 +82391,11 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81677
82391
|
disconnectedCallback() {
|
|
81678
82392
|
super.disconnectedCallback();
|
|
81679
82393
|
this._inFullscreenTransition = false;
|
|
82394
|
+
// Cancel any outstanding timers so detached callbacks don't fire on
|
|
82395
|
+
// disposed DOM — most are no-ops, but configureMenu's racing-condition
|
|
82396
|
+
// retry would otherwise keep rescheduling itself indefinitely.
|
|
82397
|
+
this._pendingTimers.forEach((id) => clearTimeout(id));
|
|
82398
|
+
this._pendingTimers.clear();
|
|
81680
82399
|
}
|
|
81681
82400
|
|
|
81682
82401
|
firstUpdated() {
|
|
@@ -81718,7 +82437,7 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81718
82437
|
this.menu.value = value;
|
|
81719
82438
|
// Backup clear: if menu.value === menu.optionSelected.value already, the
|
|
81720
82439
|
// listener won't fire and the flag would swallow the next user click.
|
|
81721
|
-
|
|
82440
|
+
this._scheduleTimer(() => {
|
|
81722
82441
|
this._pendingMenuValueSync = false;
|
|
81723
82442
|
}, 0);
|
|
81724
82443
|
}
|
|
@@ -81753,6 +82472,17 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81753
82472
|
this.optionSelected = undefined;
|
|
81754
82473
|
this.value = undefined;
|
|
81755
82474
|
|
|
82475
|
+
// Clear the appended displayValue clone in the trigger if present.
|
|
82476
|
+
// :not(slot) excludes the template's <slot name="displayValue"
|
|
82477
|
+
// slot="displayValue"> forwarder (line 1816), which also has
|
|
82478
|
+
// slot="displayValue" and would otherwise be matched first and removed,
|
|
82479
|
+
// permanently breaking the consumer-provided displayValue slot.
|
|
82480
|
+
const displayValueInTrigger = this.input.querySelector('[slot="displayValue"]:not(slot)');
|
|
82481
|
+
|
|
82482
|
+
if (displayValueInTrigger) {
|
|
82483
|
+
displayValueInTrigger.remove();
|
|
82484
|
+
}
|
|
82485
|
+
|
|
81756
82486
|
if (this.input.value) {
|
|
81757
82487
|
this.input.clear();
|
|
81758
82488
|
}
|
|
@@ -81776,56 +82506,50 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81776
82506
|
}
|
|
81777
82507
|
|
|
81778
82508
|
updated(changedProperties) {
|
|
81779
|
-
// After the component is ready,
|
|
82509
|
+
// After the component is ready, propagate direct changes down to child components.
|
|
81780
82510
|
if (changedProperties.has('value')) {
|
|
81781
|
-
|
|
81782
|
-
|
|
81783
|
-
|
|
81784
|
-
|
|
82511
|
+
// Only flag programmatic refreshes — user-typed value changes must not
|
|
82512
|
+
// suppress the availableOptions branch's showBib(). Firefox batches
|
|
82513
|
+
// 'value' and 'availableOptions' into the same updated() call, so
|
|
82514
|
+
// setting the flag unconditionally here masks the user-typed open path.
|
|
82515
|
+
if (!this._userTyped) {
|
|
82516
|
+
this._programmaticFilterRefresh = true;
|
|
81785
82517
|
}
|
|
81786
82518
|
|
|
81787
|
-
if (this.
|
|
81788
|
-
|
|
81789
|
-
|
|
82519
|
+
if (this.input.value !== this.value) {
|
|
82520
|
+
// Clear menu.value AND menu.optionSelected together. Clearing only
|
|
82521
|
+
// menu.value leaves the previously-selected option element pinned
|
|
82522
|
+
// as menu.optionSelected; a later auroMenu-selectedOption event
|
|
82523
|
+
// would then write its stale .value back into combobox.value
|
|
82524
|
+
// (e.g. Tab-after-Backspace re-selecting the prior option).
|
|
82525
|
+
if (this.menu.value || this.menu.optionSelected) {
|
|
82526
|
+
this.menu.clearSelection();
|
|
82527
|
+
}
|
|
81790
82528
|
|
|
81791
|
-
|
|
81792
|
-
|
|
81793
|
-
|
|
81794
|
-
|
|
81795
|
-
|
|
81796
|
-
|
|
81797
|
-
|
|
81798
|
-
|
|
81799
|
-
|
|
81800
|
-
|
|
81801
|
-
|
|
81802
|
-
|
|
81803
|
-
|
|
81804
|
-
|
|
81805
|
-
|
|
81806
|
-
|
|
81807
|
-
|
|
81808
|
-
|
|
81809
|
-
const syncPromise = this.syncInputValuesAcrossTriggerAndBib(this.value || '');
|
|
81810
|
-
if (syncPromise) {
|
|
81811
|
-
syncPromise.then(() => {
|
|
81812
|
-
this._programmaticFilterRefresh = true;
|
|
81813
|
-
this.handleMenuOptions();
|
|
81814
|
-
setTimeout(() => {
|
|
81815
|
-
this._programmaticFilterRefresh = false;
|
|
81816
|
-
}, 0);
|
|
81817
|
-
});
|
|
81818
|
-
}
|
|
82529
|
+
if (!this.persistInput) {
|
|
82530
|
+
this.syncInputValuesAcrossTriggerAndBib(this.value || '');
|
|
82531
|
+
}
|
|
82532
|
+
|
|
82533
|
+
// Programmatic value with no matching option: updateFilter will close
|
|
82534
|
+
// the bib silently (see line 648 — no noMatchOption + 0 results
|
|
82535
|
+
// hides). Announce so screen-reader users hear the request was
|
|
82536
|
+
// dropped. Gated on `input.value !== this.value` so this never fires
|
|
82537
|
+
// for user typing — that path always reconciles input.value to
|
|
82538
|
+
// this.value before updated() runs.
|
|
82539
|
+
if (
|
|
82540
|
+
this.value &&
|
|
82541
|
+
this.menu &&
|
|
82542
|
+
this.menu.options &&
|
|
82543
|
+
this.menu.options.length > 0 &&
|
|
82544
|
+
!this.menu.options.some((opt) => opt.value === this.value)
|
|
82545
|
+
) {
|
|
82546
|
+
announceToScreenReader$1(this._getAnnouncementRoot(), `No matching option for ${this.value}`);
|
|
81819
82547
|
}
|
|
81820
82548
|
}
|
|
82549
|
+
|
|
81821
82550
|
if (!this.value) {
|
|
81822
82551
|
this.clear();
|
|
81823
82552
|
}
|
|
81824
|
-
if (this.value && !this.componentHasFocus) {
|
|
81825
|
-
// If the value got set programmatically make sure we hide the bib
|
|
81826
|
-
// when input is not taking the focus (input can be in dropdown.trigger or in bibtemplate)
|
|
81827
|
-
this.hideBib();
|
|
81828
|
-
}
|
|
81829
82553
|
|
|
81830
82554
|
// Sync the input and match word, but don't directly set menu.value again
|
|
81831
82555
|
if (this.menu) {
|
|
@@ -81838,7 +82562,7 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81838
82562
|
composed: true,
|
|
81839
82563
|
detail: {
|
|
81840
82564
|
optionSelected: this.menu.optionSelected,
|
|
81841
|
-
value: this.
|
|
82565
|
+
value: this.value
|
|
81842
82566
|
}
|
|
81843
82567
|
}));
|
|
81844
82568
|
|
|
@@ -81861,16 +82585,30 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
81861
82585
|
// from a programmatic filter refresh after a value swap — the user
|
|
81862
82586
|
// didn't interact, so we shouldn't auto-open the bib (especially for
|
|
81863
82587
|
// the no-match path where the existing condition unconditionally fires).
|
|
81864
|
-
if (this._programmaticFilterRefresh) {
|
|
81865
|
-
|
|
81866
|
-
|
|
81867
|
-
|
|
82588
|
+
if ((this.menu && !this._programmaticFilterRefresh)) {
|
|
82589
|
+
if (
|
|
82590
|
+
this.availableOptions.length > 0 ||
|
|
82591
|
+
this.menu.loading ||
|
|
82592
|
+
this.noMatchOption
|
|
82593
|
+
) {
|
|
82594
|
+
if (this._userTyped) {
|
|
82595
|
+
if (!this.dropdownOpen) {
|
|
82596
|
+
this.showBib();
|
|
82597
|
+
}
|
|
82598
|
+
this._userTyped = false;
|
|
82599
|
+
}
|
|
82600
|
+
}
|
|
82601
|
+
|
|
81868
82602
|
if (!this.availableOptions.includes(this.menu.optionActive)) {
|
|
81869
82603
|
this.activateFirstEnabledAvailableOption();
|
|
81870
82604
|
}
|
|
81871
|
-
} else if (this.dropdown
|
|
82605
|
+
} else if (!this.dropdown.isBibFullscreen) {
|
|
81872
82606
|
this.hideBib();
|
|
81873
82607
|
}
|
|
82608
|
+
|
|
82609
|
+
if (this._programmaticFilterRefresh) {
|
|
82610
|
+
this._programmaticFilterRefresh = false;
|
|
82611
|
+
}
|
|
81874
82612
|
}
|
|
81875
82613
|
|
|
81876
82614
|
if (changedProperties.has('error')) {
|
|
@@ -82012,10 +82750,10 @@ class AuroCombobox extends AuroElement$3 {
|
|
|
82012
82750
|
shape="${this.shape}"
|
|
82013
82751
|
size="${this.size}">
|
|
82014
82752
|
<${this.inputTag}
|
|
82015
|
-
@input="${this.
|
|
82753
|
+
@input="${this.handleTriggerInputValueChange}"
|
|
82016
82754
|
appearance="${this.onDark ? 'inverse' : this.appearance}"
|
|
82017
82755
|
.a11yActivedescendant="${this.dropdownOpen && this.optionActive ? this.optionActive.id : undefined}"
|
|
82018
|
-
.a11yExpanded="${this.
|
|
82756
|
+
.a11yExpanded="${this.dropdownOpen}"
|
|
82019
82757
|
.a11yControls="${this.dropdownId}"
|
|
82020
82758
|
.autocomplete="${this.autocomplete}"
|
|
82021
82759
|
.inputmode="${this.inputmode}"
|
|
@@ -84263,15 +85001,17 @@ class AuroFormValidation {
|
|
|
84263
85001
|
);
|
|
84264
85002
|
}
|
|
84265
85003
|
|
|
84266
|
-
|
|
84267
|
-
|
|
84268
|
-
|
|
85004
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
85005
|
+
|
|
85006
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
85007
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
85008
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
85009
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
85010
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
84269
85011
|
hasValue = false;
|
|
84270
85012
|
}
|
|
84271
85013
|
}
|
|
84272
85014
|
|
|
84273
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
84274
|
-
|
|
84275
85015
|
if (isCombobox) {
|
|
84276
85016
|
|
|
84277
85017
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -84663,19 +85403,28 @@ const selectKeyboardStrategy = {
|
|
|
84663
85403
|
},
|
|
84664
85404
|
|
|
84665
85405
|
End(component, evt, ctx) {
|
|
84666
|
-
if (!ctx.isExpanded) {
|
|
84667
|
-
return;
|
|
84668
|
-
}
|
|
84669
85406
|
evt.preventDefault();
|
|
84670
85407
|
evt.stopPropagation();
|
|
84671
85408
|
// `pop()` is safe here: getEnabledOptions returns a fresh filtered array.
|
|
84672
85409
|
const lastOption = getEnabledOptions(component.menu).pop();
|
|
84673
|
-
if (lastOption) {
|
|
84674
|
-
|
|
85410
|
+
if (!lastOption) {
|
|
85411
|
+
return;
|
|
85412
|
+
}
|
|
85413
|
+
// Pre-stash before show() so the auroDropdown-toggled handler's
|
|
85414
|
+
// `!optionActive` guard short-circuits the firstActive/selected fallback —
|
|
85415
|
+
// otherwise show() synchronously fires the handler and writes
|
|
85416
|
+
// aria-activedescendant once before we overwrite it.
|
|
85417
|
+
component.menu.updateActiveOption(lastOption);
|
|
85418
|
+
if (!ctx.isExpanded) {
|
|
85419
|
+
component.dropdown.show();
|
|
84675
85420
|
}
|
|
84676
85421
|
},
|
|
84677
85422
|
|
|
84678
85423
|
Enter(component, evt, ctx) {
|
|
85424
|
+
// Prevent the keypress from bubbling to parent containers (e.g., forms)
|
|
85425
|
+
// which could interpret Enter as a submit. Matches APG select-only combobox
|
|
85426
|
+
// and native <select> behavior: Enter opens the listbox when closed, selects
|
|
85427
|
+
// the active option when open — it does not submit a parent form.
|
|
84679
85428
|
evt.preventDefault();
|
|
84680
85429
|
evt.stopPropagation();
|
|
84681
85430
|
if (!ctx.isExpanded) {
|
|
@@ -84686,14 +85435,16 @@ const selectKeyboardStrategy = {
|
|
|
84686
85435
|
},
|
|
84687
85436
|
|
|
84688
85437
|
Home(component, evt, ctx) {
|
|
84689
|
-
if (!ctx.isExpanded) {
|
|
84690
|
-
return;
|
|
84691
|
-
}
|
|
84692
85438
|
evt.preventDefault();
|
|
84693
85439
|
evt.stopPropagation();
|
|
84694
85440
|
const [firstOption] = getEnabledOptions(component.menu);
|
|
84695
|
-
if (firstOption) {
|
|
84696
|
-
|
|
85441
|
+
if (!firstOption) {
|
|
85442
|
+
return;
|
|
85443
|
+
}
|
|
85444
|
+
// See End() for why this must run before show().
|
|
85445
|
+
component.menu.updateActiveOption(firstOption);
|
|
85446
|
+
if (!ctx.isExpanded) {
|
|
85447
|
+
component.dropdown.show();
|
|
84697
85448
|
}
|
|
84698
85449
|
},
|
|
84699
85450
|
|
|
@@ -88641,7 +89392,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$2 {
|
|
|
88641
89392
|
}
|
|
88642
89393
|
};
|
|
88643
89394
|
|
|
88644
|
-
var formkitVersion$1 = '
|
|
89395
|
+
var formkitVersion$1 = '202607010104';
|
|
88645
89396
|
|
|
88646
89397
|
class AuroElement extends i$2 {
|
|
88647
89398
|
static get properties() {
|
|
@@ -89913,6 +90664,7 @@ class AuroDropdown extends AuroElement {
|
|
|
89913
90664
|
role="${o$4(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
89914
90665
|
aria-expanded="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
89915
90666
|
aria-controls="${o$4(this.a11yRole === 'button' || this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
90667
|
+
aria-haspopup="${o$4(this.a11yRole === 'combobox' && !this.triggerContentFocusable ? 'listbox' : undefined)}"
|
|
89916
90668
|
aria-labelledby="${o$4(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
89917
90669
|
aria-disabled="${o$4(this.disabled ? 'true' : undefined)}"
|
|
89918
90670
|
@focusin="${this.handleFocusin}"
|
|
@@ -90039,7 +90791,7 @@ class AuroDropdown extends AuroElement {
|
|
|
90039
90791
|
|
|
90040
90792
|
var colorCss$1 = i$4`#headerContainer{box-shadow:var(--ds-auro-dropdownbib-header-boxshadow-color)}#footerContainer{background-color:var(--ds-auro-dropdownbib-footer-container-color)}`;
|
|
90041
90793
|
|
|
90042
|
-
var styleCss$2 = i$4`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1
|
|
90794
|
+
var styleCss$2 = i$4`#bibTemplate{display:flex;overflow:hidden;height:100%;max-height:100%;flex-direction:column}#headerContainer{display:flex;flex-direction:column;padding:var(--ds-size-200, 1rem);padding-top:var(--ds-size-400, 2rem);padding-bottom:0}#headerContainer .titleRow{display:flex;flex-direction:row;justify-content:space-between;gap:var(--ds-size-100, 0.5rem)}#headerContainer .header{max-width:calc(100vw - var(--ds-size-900, 4.5rem));padding-top:var(--ds-size-200, 1rem)}#headerContainer .subheader{width:100%}#closeButton [auro-icon]{--ds-auro-icon-size: var(--ds-size-500, 2.5rem)}#bodyContainer{position:relative;overflow:auto;flex:1}:host([isfullscreen]) #bibTemplate{max-height:100dvh}:host([isfullscreen]) #bodyContainer{margin-top:var(--ds-size-100, 0.5rem)}#footerContainer{padding:var(--ds-size-200, 1rem)}`;
|
|
90043
90795
|
|
|
90044
90796
|
var tokenCss = i$4`:host{--ds-auro-dropdownbib-header-boxshadow-color: var(--ds-elevation-200, 0px 0px 10px rgba(0, 0, 0, 0.15));--ds-auro-dropdownbib-footer-container-color: var(--ds-basic-color-surface-default, #ffffff)}`;
|
|
90045
90797
|
|
|
@@ -90662,7 +91414,7 @@ class AuroHelpText extends i$2 {
|
|
|
90662
91414
|
}
|
|
90663
91415
|
}
|
|
90664
91416
|
|
|
90665
|
-
var formkitVersion = '
|
|
91417
|
+
var formkitVersion = '202607010104';
|
|
90666
91418
|
|
|
90667
91419
|
var styleCss = i$4`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}.body-default{font-size:var(--wcss-body-default-font-size, 1rem);font-weight:var(--wcss-body-default-weight, );line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-default-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-default-emphasized{font-size:var(--wcss-body-default-emphasized-font-size, 1rem);font-weight:var(--wcss-body-default-emphasized-weight, );line-height:var(--wcss-body-default-emphasized-line-height, 1.5rem)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);font-weight:var(--wcss-body-lg-weight, );line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-lg,.body-lg-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg-emphasized{font-size:var(--wcss-body-lg-emphasized-font-size, 1.125rem);font-weight:var(--wcss-body-lg-emphasized-weight, );line-height:var(--wcss-body-lg-emphasized-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, 0.875rem);font-weight:var(--wcss-body-sm-weight, );line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-sm-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-sm-emphasized{font-size:var(--wcss-body-sm-emphasized-font-size, 0.875rem);font-weight:var(--wcss-body-sm-emphasized-weight, );line-height:var(--wcss-body-sm-emphasized-line-height, 1.25rem)}.body-xs{font-size:var(--wcss-body-xs-font-size, 0.75rem);font-weight:var(--wcss-body-xs-weight, );line-height:var(--wcss-body-xs-line-height, 1rem)}.body-xs,.body-xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs-emphasized{font-size:var(--wcss-body-xs-emphasized-font-size, 0.75rem);font-weight:var(--wcss-body-xs-emphasized-weight, );line-height:var(--wcss-body-xs-emphasized-line-height, 1rem)}.body-2xs{font-size:var(--wcss-body-2xs-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-weight, );line-height:var(--wcss-body-2xs-line-height, 0.875rem)}.body-2xs,.body-2xs-emphasized{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-2xs-emphasized{font-size:var(--wcss-body-2xs-emphasized-font-size, 0.625rem);font-weight:var(--wcss-body-2xs-emphasized-weight, );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-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, 300);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, 300);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, 0.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, 0.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, 0.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, 0.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, 0.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, 0.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(0.875rem, 1.1666666667vw, 0.875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}[auro-dropdown]{--ds-auro-dropdown-trigger-border-color: var(--ds-auro-select-border-color);--ds-auro-dropdown-trigger-background-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-container-color: var(--ds-auro-select-background-color);--ds-auro-dropdown-trigger-outline-color: var(--ds-auro-select-outline-color)}:host{display:inline-block;text-align:left;vertical-align:top}:host([layout*=emphasized]) [auro-dropdown],:host([layout*=snowflake]) [auro-dropdown]{--ds-auro-select-border-color: transparent}:host([layout*=emphasized]) .mainContent,:host([layout*=snowflake]) .mainContent{text-align:center}.mainContent{position:relative;display:flex;overflow:hidden;flex:1;flex-direction:column;align-items:center;justify-content:center}.valueContainer [slot=displayValue]{display:none}.accents{display:flex;flex-direction:row;align-items:center;justify-content:center}::slotted([slot=typeIcon]){margin-right:var(--ds-size-100, 0.5rem)}.displayValue{display:block}.displayValue:not(.force){display:none}.displayValue:not(.force).hasContent:is(.withValue):not(.hasFocus){display:block}.triggerContent{display:flex;width:100%;align-items:center;justify-content:center}:host([layout*=emphasized]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-300, 1.5rem)}:host([layout*=snowflake]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host([layout*=snowflake]) label{padding-block:var(--ds-size-25, 0.125rem)}:host([layout*=classic]) .triggerContent{padding:0 var(--ds-size-100, 0.5rem)}:host([layout*=classic]) .mainContent{align-items:start}:host([layout*=classic]) label{overflow:hidden;cursor:text;text-overflow:ellipsis;white-space:nowrap}:host([layout*=classic]) .value{height:auto}label{color:var(--ds-auro-select-label-text-color)}:host(:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-select-outline-color: var(--ds-basic-color-status-error, #e31f26);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-default, #2a2a2a)}:host([ondark]:is([validity]:not([validity=valid]))) [auro-dropdown],:host([appearance=inverse]:is([validity]:not([validity=valid]))) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-select-outline-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8);--ds-auro-dropdown-helptext-text-color: var(--ds-basic-color-texticon-inverse, #ffffff)}#slotHolder{display:none}:host([fluid]){width:100%}:host([disabled]){pointer-events:none;user-select:none}:host([disabled]:not([ondark])) [auro-dropdown],:host([disabled]:not([appearance=inverse])) [auro-dropdown]{--ds-auro-select-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([layout*=classic])[disabled][ondark]) [auro-dropdown],:host(:not([layout*=classic])[disabled][appearance=inverse]) [auro-dropdown]{--ds-auro-select-border-color: transparent}`;
|
|
90668
91420
|
|
|
@@ -90994,14 +91746,6 @@ class AuroSelect extends AuroElement$1 {
|
|
|
90994
91746
|
reflect: true
|
|
90995
91747
|
},
|
|
90996
91748
|
|
|
90997
|
-
/**
|
|
90998
|
-
* @private
|
|
90999
|
-
*/
|
|
91000
|
-
options: {
|
|
91001
|
-
type: Array,
|
|
91002
|
-
state: true
|
|
91003
|
-
},
|
|
91004
|
-
|
|
91005
91749
|
/**
|
|
91006
91750
|
* Specifies the current selected menuOption. Default type is `HTMLElement`, changing to `Array<HTMLElement>` when `multiSelect` is true.
|
|
91007
91751
|
* @type {HTMLElement|Array<HTMLElement>}
|
|
@@ -91289,16 +92033,68 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91289
92033
|
this.dropdown.dropdownWidth = this.customBibWidth;
|
|
91290
92034
|
}
|
|
91291
92035
|
|
|
91292
|
-
|
|
91293
|
-
const labelElement = this.querySelector('span[slot="label"]');
|
|
91294
|
-
if (labelElement) {
|
|
91295
|
-
this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
|
|
91296
|
-
}
|
|
92036
|
+
this._syncLabelText();
|
|
91297
92037
|
|
|
91298
92038
|
// Exposes the CSS parts from the dropdown for styling
|
|
91299
92039
|
this.dropdown.exposeCssParts();
|
|
91300
92040
|
}
|
|
91301
92041
|
|
|
92042
|
+
/**
|
|
92043
|
+
* Reads the current label slot text and pushes it to the dropdown bib
|
|
92044
|
+
* (for dialog naming) and the menu (for listbox aria-label). Safe to call
|
|
92045
|
+
* before either child has been wired up — each branch self-guards.
|
|
92046
|
+
* @private
|
|
92047
|
+
*/
|
|
92048
|
+
_syncLabelText() {
|
|
92049
|
+
const labelElement = this.querySelector('[slot="label"]');
|
|
92050
|
+
const text = labelElement ? labelElement.textContent.trim() : '';
|
|
92051
|
+
if (this.dropdown) {
|
|
92052
|
+
this.dropdown.bibDialogLabel = text || undefined;
|
|
92053
|
+
}
|
|
92054
|
+
if (this.menu) {
|
|
92055
|
+
if (text) {
|
|
92056
|
+
this.menu.setAttribute('aria-label', text);
|
|
92057
|
+
} else {
|
|
92058
|
+
this.menu.removeAttribute('aria-label');
|
|
92059
|
+
}
|
|
92060
|
+
}
|
|
92061
|
+
}
|
|
92062
|
+
|
|
92063
|
+
/**
|
|
92064
|
+
* Keeps the dialog/menu accessible names in sync when consumers mutate the
|
|
92065
|
+
* label slot at runtime (e.g., i18n locale swap). `slotchange` alone is
|
|
92066
|
+
* insufficient — it doesn't fire when textContent of an already-assigned
|
|
92067
|
+
* slotted node changes, which is the common case. We scope the observer to
|
|
92068
|
+
* the label node itself (not the whole host subtree) so option-content
|
|
92069
|
+
* mutations don't trigger label re-syncs, and re-target on `slotchange`
|
|
92070
|
+
* when consumers add or replace the label element.
|
|
92071
|
+
* @private
|
|
92072
|
+
*/
|
|
92073
|
+
_observeLabelChanges() {
|
|
92074
|
+
if (this._labelObserver) return;
|
|
92075
|
+
this._labelObserver = new MutationObserver(() => this._syncLabelText());
|
|
92076
|
+
|
|
92077
|
+
const retarget = () => {
|
|
92078
|
+
this._labelObserver.disconnect();
|
|
92079
|
+
const labelElement = this.querySelector('[slot="label"]');
|
|
92080
|
+
if (labelElement) {
|
|
92081
|
+
this._labelObserver.observe(labelElement, {
|
|
92082
|
+
childList: true,
|
|
92083
|
+
subtree: true,
|
|
92084
|
+
characterData: true
|
|
92085
|
+
});
|
|
92086
|
+
}
|
|
92087
|
+
this._syncLabelText();
|
|
92088
|
+
};
|
|
92089
|
+
|
|
92090
|
+
retarget();
|
|
92091
|
+
|
|
92092
|
+
this._retargetLabelObserver = retarget;
|
|
92093
|
+
this.shadowRoot.querySelectorAll('slot[name="label"]').forEach((slot) => {
|
|
92094
|
+
slot.addEventListener('slotchange', retarget);
|
|
92095
|
+
});
|
|
92096
|
+
}
|
|
92097
|
+
|
|
91302
92098
|
/**
|
|
91303
92099
|
* This will register this element with the browser.
|
|
91304
92100
|
* @param {string} [name="auro-select"] - The name of element that you want to register to.
|
|
@@ -91449,11 +92245,7 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91449
92245
|
this.updateMenuShapeSize();
|
|
91450
92246
|
this.setMenuValue(this.value);
|
|
91451
92247
|
|
|
91452
|
-
|
|
91453
|
-
const labelElement = this.querySelector('[slot="label"]');
|
|
91454
|
-
if (labelElement) {
|
|
91455
|
-
this.menu.setAttribute('aria-label', labelElement.textContent.trim());
|
|
91456
|
-
}
|
|
92248
|
+
this._syncLabelText();
|
|
91457
92249
|
|
|
91458
92250
|
if (this.multiSelect) {
|
|
91459
92251
|
this.menu.multiSelect = this.multiSelect;
|
|
@@ -91465,8 +92257,21 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91465
92257
|
if (typeof this.menu.initItems === 'function') {
|
|
91466
92258
|
this.menu.initItems();
|
|
91467
92259
|
}
|
|
91468
|
-
this.options = this.menu.options;
|
|
91469
92260
|
this.updateOptionPositions();
|
|
92261
|
+
// renderNativeSelect reads this.menu.options, which the parent doesn't
|
|
92262
|
+
// observe — request an update so the hidden native <option> list reflects
|
|
92263
|
+
// the menu's options after initItems populates them.
|
|
92264
|
+
this.requestUpdate();
|
|
92265
|
+
|
|
92266
|
+
// Keep aria-setsize/aria-posinset (and the native <option> list) in sync
|
|
92267
|
+
// when the menu re-initializes its items — e.g., slotchange, async/lazy
|
|
92268
|
+
// loads, value-triggered re-init. Without this, stale set-size is
|
|
92269
|
+
// announced and the native select goes stale after dynamic mutations.
|
|
92270
|
+
this.menu.addEventListener('auroMenu-optionsChange', () => {
|
|
92271
|
+
this.updateOptionPositions();
|
|
92272
|
+
this.requestUpdate();
|
|
92273
|
+
});
|
|
92274
|
+
|
|
91470
92275
|
this.menu.addEventListener("auroMenu-loadingChange", (event) => this.handleMenuLoadingChange(event));
|
|
91471
92276
|
|
|
91472
92277
|
this.menu.addEventListener("auroMenu-selectValueFailure", () => {
|
|
@@ -91485,11 +92290,26 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91485
92290
|
this.dropdown.setActiveDescendant(this.optionActive);
|
|
91486
92291
|
}
|
|
91487
92292
|
|
|
91488
|
-
//
|
|
91489
|
-
|
|
92293
|
+
// Live-region announce only for [not selected] options. For activations
|
|
92294
|
+
// on an already-selected option — auto-activation on bib open, arrow
|
|
92295
|
+
// navigation back to the selection, or click in multiSelect — rely on
|
|
92296
|
+
// aria-activedescendant + aria-selected="true" to convey state per the
|
|
92297
|
+
// WAI-ARIA listbox pattern. This is intentional, not limited to the
|
|
92298
|
+
// initial activation on open: it also prevents a duplicate "X, selected"
|
|
92299
|
+
// when Enter on the active+selected option re-fires
|
|
92300
|
+
// auroMenu-selectedOption (see 03b289e39).
|
|
92301
|
+
if (this.optionActive && !this.optionActive.hasAttribute('selected')) {
|
|
91490
92302
|
const optionText = this.optionActive.textContent.trim();
|
|
91491
|
-
const
|
|
91492
|
-
|
|
92303
|
+
const message = `${optionText}, not selected`;
|
|
92304
|
+
if (this.dropdown.isPopoverVisible) {
|
|
92305
|
+
announceToScreenReader(this._getAnnouncementRoot(), message);
|
|
92306
|
+
} else {
|
|
92307
|
+
// Typeahead-on-closed fires this event before `show()` flips
|
|
92308
|
+
// isPopoverVisible. Defer so the announcement targets the bib's
|
|
92309
|
+
// live region once the fullscreen <dialog> opens — otherwise it
|
|
92310
|
+
// lands in the host root, which is inert under the active modal.
|
|
92311
|
+
queueMicrotask(() => announceToScreenReader(this._getAnnouncementRoot(), message));
|
|
92312
|
+
}
|
|
91493
92313
|
}
|
|
91494
92314
|
|
|
91495
92315
|
if (this.dropdown.isPopoverVisible) {
|
|
@@ -91498,6 +92318,7 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91498
92318
|
});
|
|
91499
92319
|
|
|
91500
92320
|
this.menu.addEventListener('auroMenu-selectedOption', () => {
|
|
92321
|
+
const previousSelected = this.optionSelected;
|
|
91501
92322
|
|
|
91502
92323
|
// Update the displayed value
|
|
91503
92324
|
this.updateDisplayedValue();
|
|
@@ -91517,13 +92338,32 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91517
92338
|
this.dropdown.trigger.focus();
|
|
91518
92339
|
}
|
|
91519
92340
|
|
|
91520
|
-
//
|
|
91521
|
-
//
|
|
91522
|
-
|
|
91523
|
-
|
|
91524
|
-
|
|
91525
|
-
|
|
91526
|
-
|
|
92341
|
+
// Describe the actual change. In multiSelect, currentLabel is the
|
|
92342
|
+
// concatenated remaining list — announcing "{list}, selected" after a
|
|
92343
|
+
// deselect would falsely claim every remaining label was just added.
|
|
92344
|
+
// Diff previous vs next to recover the toggled option.
|
|
92345
|
+
let announcement = '';
|
|
92346
|
+
if (this.multiSelect) {
|
|
92347
|
+
const prev = Array.isArray(previousSelected) ? previousSelected : [];
|
|
92348
|
+
const removed = prev.find((opt) => !nextSelected.includes(opt));
|
|
92349
|
+
const added = nextSelected.find((opt) => !prev.includes(opt));
|
|
92350
|
+
if (removed) {
|
|
92351
|
+
announcement = `${removed.textContent.trim()}, not selected`;
|
|
92352
|
+
} else if (added) {
|
|
92353
|
+
announcement = `${added.textContent.trim()}, selected`;
|
|
92354
|
+
}
|
|
92355
|
+
} else {
|
|
92356
|
+
announcement = `${this.menu.currentLabel}, selected`;
|
|
92357
|
+
}
|
|
92358
|
+
|
|
92359
|
+
// Delay so the utterance isn't overridden by VoiceOver's "collapsed"
|
|
92360
|
+
// announcement from aria-expanded when the dropdown closes.
|
|
92361
|
+
if (announcement) {
|
|
92362
|
+
const announcementDelay = 300;
|
|
92363
|
+
setTimeout(() => {
|
|
92364
|
+
announceToScreenReader(this._getAnnouncementRoot(), announcement);
|
|
92365
|
+
}, announcementDelay);
|
|
92366
|
+
}
|
|
91527
92367
|
});
|
|
91528
92368
|
}
|
|
91529
92369
|
|
|
@@ -91621,24 +92461,32 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91621
92461
|
|
|
91622
92462
|
this.typeaheadBuffer += key;
|
|
91623
92463
|
|
|
91624
|
-
|
|
92464
|
+
// Prefer the literal buffer as a prefix per WAI-ARIA APG ("focus moves to the
|
|
92465
|
+
// next item with a name that starts with the string of characters typed").
|
|
92466
|
+
// Only fall back to single-char cycling when the repeated buffer has no
|
|
92467
|
+
// longer prefix match — e.g. "aa" cycles through ["Apple", "Apricot"] only
|
|
92468
|
+
// because no option starts with "aa".
|
|
92469
|
+
let match = options.find((option) => this._getOptionDisplayText(option).startsWith(this.typeaheadBuffer));
|
|
91625
92470
|
|
|
91626
|
-
|
|
92471
|
+
const isRepeatedChar = !match && this.typeaheadBuffer.length > 1 && new Set(this.typeaheadBuffer).size === 1;
|
|
91627
92472
|
if (isRepeatedChar) {
|
|
91628
92473
|
const matches = options.filter((option) => this._getOptionDisplayText(option).startsWith(key));
|
|
91629
92474
|
if (matches.length) {
|
|
91630
92475
|
const cycleIndex = (this.typeaheadBuffer.length - 1) % matches.length;
|
|
91631
92476
|
match = matches[cycleIndex];
|
|
91632
92477
|
}
|
|
91633
|
-
} else {
|
|
91634
|
-
match = options.find((option) => this._getOptionDisplayText(option).startsWith(this.typeaheadBuffer));
|
|
91635
92478
|
}
|
|
91636
92479
|
|
|
92480
|
+
// Intentional: no-match leaves the bib closed (deviates from APG / some native <select>).
|
|
91637
92481
|
if (match) {
|
|
92482
|
+
// Pre-stash the match so the auroDropdown-toggled handler's `!optionActive`
|
|
92483
|
+
// guard short-circuits and skips the firstActive/selected fallback —
|
|
92484
|
+
// otherwise show() synchronously fires the handler, which writes
|
|
92485
|
+
// aria-activedescendant once before we overwrite it.
|
|
92486
|
+
this.menu.updateActiveOption(match);
|
|
91638
92487
|
if (!this.dropdown.isPopoverVisible) {
|
|
91639
92488
|
this.dropdown.show();
|
|
91640
92489
|
}
|
|
91641
|
-
this.menu.updateActiveOption(match);
|
|
91642
92490
|
}
|
|
91643
92491
|
}
|
|
91644
92492
|
|
|
@@ -91755,6 +92603,28 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91755
92603
|
disconnectedCallback() {
|
|
91756
92604
|
super.disconnectedCallback();
|
|
91757
92605
|
this._clearTypeaheadBuffer();
|
|
92606
|
+
if (this._labelObserver) {
|
|
92607
|
+
this._labelObserver.disconnect();
|
|
92608
|
+
this._labelObserver = null;
|
|
92609
|
+
}
|
|
92610
|
+
if (this._retargetLabelObserver && this.shadowRoot) {
|
|
92611
|
+
this.shadowRoot.querySelectorAll('slot[name="label"]').forEach((slot) => {
|
|
92612
|
+
slot.removeEventListener('slotchange', this._retargetLabelObserver);
|
|
92613
|
+
});
|
|
92614
|
+
this._retargetLabelObserver = null;
|
|
92615
|
+
}
|
|
92616
|
+
}
|
|
92617
|
+
|
|
92618
|
+
connectedCallback() {
|
|
92619
|
+
super.connectedCallback();
|
|
92620
|
+
// Regression guard: firstUpdated() fires once per instance, so the label
|
|
92621
|
+
// observer setup it triggers does NOT re-run on reconnect. After a
|
|
92622
|
+
// disconnect+reconnect (reparent, SPA route swap), runtime label mutations
|
|
92623
|
+
// would silently stop syncing menu aria-label / dropdown.bibDialogLabel
|
|
92624
|
+
// unless we re-wire the observer here.
|
|
92625
|
+
if (this.hasUpdated) {
|
|
92626
|
+
this._observeLabelChanges();
|
|
92627
|
+
}
|
|
91758
92628
|
}
|
|
91759
92629
|
|
|
91760
92630
|
// lifecycle runs only after the element's DOM has been updated the first time
|
|
@@ -91765,6 +92635,7 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91765
92635
|
this.configureDropdown();
|
|
91766
92636
|
this.configureMenu();
|
|
91767
92637
|
this.configureSelect();
|
|
92638
|
+
this._observeLabelChanges();
|
|
91768
92639
|
}
|
|
91769
92640
|
|
|
91770
92641
|
setMenuValue(value) {
|
|
@@ -91897,25 +92768,18 @@ class AuroSelect extends AuroElement$1 {
|
|
|
91897
92768
|
* @private
|
|
91898
92769
|
*/
|
|
91899
92770
|
_handleNativeSelectChange(event) {
|
|
92771
|
+
// Hidden native <select> has no `multiple` attribute, so any change it fires
|
|
92772
|
+
// is a single raw value — applying it in multiSelect mode would collapse the
|
|
92773
|
+
// JSON-array `value` shape. Bfcache/autofill can reach this on a name-bearing
|
|
92774
|
+
// form control even with aria-hidden/tabindex=-1.
|
|
92775
|
+
if (this.multiSelect) return;
|
|
92776
|
+
|
|
91900
92777
|
const selectedOption = event.target.options[event.target.selectedIndex];
|
|
91901
92778
|
if (!selectedOption) return;
|
|
91902
92779
|
const selectedValue = selectedOption.value;
|
|
91903
92780
|
|
|
91904
|
-
if (this.
|
|
91905
|
-
|
|
91906
|
-
|
|
91907
|
-
if (!currentArray.includes(selectedValue)) {
|
|
91908
|
-
this.value = JSON.stringify([
|
|
91909
|
-
...currentArray,
|
|
91910
|
-
selectedValue
|
|
91911
|
-
]);
|
|
91912
|
-
}
|
|
91913
|
-
} else {
|
|
91914
|
-
const currentValue = this.value;
|
|
91915
|
-
|
|
91916
|
-
if (currentValue !== selectedValue) {
|
|
91917
|
-
this.value = selectedValue;
|
|
91918
|
-
}
|
|
92781
|
+
if (this.value !== selectedValue) {
|
|
92782
|
+
this.value = selectedValue;
|
|
91919
92783
|
}
|
|
91920
92784
|
}
|
|
91921
92785
|
|