@aurodesignsystem-dev/auro-formkit 0.0.0-pr1516.0 → 0.0.0-pr1519.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/checkbox/demo/customize.min.js +18 -10
- package/components/checkbox/demo/getting-started.min.js +18 -10
- package/components/checkbox/demo/index.min.js +18 -10
- package/components/checkbox/dist/index.js +18 -10
- package/components/checkbox/dist/registered.js +18 -10
- package/components/combobox/README.md +1 -1
- package/components/combobox/demo/customize.md +2 -10
- package/components/combobox/demo/customize.min.js +454 -467
- package/components/combobox/demo/getting-started.min.js +454 -463
- package/components/combobox/demo/index.md +1 -1
- package/components/combobox/demo/index.min.js +454 -463
- 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 +30 -14
- package/components/combobox/dist/index.js +454 -463
- package/components/combobox/dist/registered.js +454 -463
- package/components/counter/demo/customize.min.js +32 -12
- package/components/counter/demo/index.min.js +32 -12
- package/components/counter/dist/index.js +32 -12
- package/components/counter/dist/registered.js +32 -12
- package/components/datepicker/demo/customize.min.js +183 -167
- package/components/datepicker/demo/index.min.js +183 -167
- package/components/datepicker/dist/index.js +183 -167
- package/components/datepicker/dist/registered.js +183 -167
- package/components/dropdown/demo/customize.min.js +14 -2
- package/components/dropdown/demo/getting-started.min.js +14 -2
- package/components/dropdown/demo/index.min.js +14 -2
- package/components/dropdown/dist/index.js +14 -2
- package/components/dropdown/dist/registered.js +14 -2
- package/components/form/demo/customize.min.js +851 -829
- package/components/form/demo/getting-started.min.js +851 -829
- package/components/form/demo/index.min.js +851 -829
- package/components/form/demo/registerDemoDeps.min.js +851 -829
- package/components/input/demo/api.md +58 -57
- package/components/input/demo/customize.min.js +114 -155
- package/components/input/demo/getting-started.min.js +114 -155
- package/components/input/demo/index.min.js +114 -155
- package/components/input/dist/base-input.d.ts +9 -51
- package/components/input/dist/index.js +114 -155
- package/components/input/dist/registered.js +114 -155
- package/components/input/dist/utilities.d.ts +9 -0
- package/components/radio/demo/customize.min.js +18 -10
- package/components/radio/demo/getting-started.min.js +18 -10
- package/components/radio/demo/index.min.js +18 -10
- package/components/radio/dist/index.js +18 -10
- package/components/radio/dist/registered.js +18 -10
- package/components/select/demo/customize.min.js +32 -12
- package/components/select/demo/getting-started.min.js +32 -12
- package/components/select/demo/index.min.js +32 -12
- package/components/select/dist/index.js +32 -12
- package/components/select/dist/registered.js +32 -12
- package/custom-elements.json +142 -278
- package/package.json +1 -1
|
@@ -542,11 +542,17 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
542
542
|
return;
|
|
543
543
|
}
|
|
544
544
|
|
|
545
|
-
// Validate that the date passed was the correct format and is a valid date
|
|
545
|
+
// Validate that the date passed was the correct format and is a valid date.
|
|
546
|
+
// For partial date formats, valueObject is never populated; validate them directly.
|
|
546
547
|
if (elem.value && !elem.valueObject) {
|
|
547
|
-
elem.
|
|
548
|
-
|
|
549
|
-
|
|
548
|
+
const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
|
|
549
|
+
const isValidPartial = isPartialDateFormat && elem.util.isValidPartialDate(elem.value, elem.format);
|
|
550
|
+
|
|
551
|
+
if (!isValidPartial) {
|
|
552
|
+
elem.validity = 'patternMismatch';
|
|
553
|
+
elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
|
|
554
|
+
return;
|
|
555
|
+
}
|
|
550
556
|
}
|
|
551
557
|
|
|
552
558
|
// Perform the rest of the validation
|
|
@@ -640,15 +646,17 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
640
646
|
);
|
|
641
647
|
}
|
|
642
648
|
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
649
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
650
|
+
|
|
651
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
652
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
653
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
654
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
655
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
646
656
|
hasValue = false;
|
|
647
657
|
}
|
|
648
658
|
}
|
|
649
659
|
|
|
650
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
651
|
-
|
|
652
660
|
if (isCombobox) {
|
|
653
661
|
|
|
654
662
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -10471,6 +10479,42 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
10471
10479
|
return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
|
|
10472
10480
|
}
|
|
10473
10481
|
|
|
10482
|
+
/**
|
|
10483
|
+
* Validates a value against a partial date format (one that lacks yy/mm/dd all three).
|
|
10484
|
+
* Single-component formats are checked as integer ranges; multi-component formats use
|
|
10485
|
+
* a date-fns parse + round-trip to confirm both validity and exact formatting.
|
|
10486
|
+
* @param {string} value - The user-facing display value.
|
|
10487
|
+
* @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
|
|
10488
|
+
* @returns {boolean}
|
|
10489
|
+
*/
|
|
10490
|
+
isValidPartialDate(value, format) {
|
|
10491
|
+
if (!value || !format) {
|
|
10492
|
+
return false;
|
|
10493
|
+
}
|
|
10494
|
+
const normalizedFormat = format.toLowerCase();
|
|
10495
|
+
|
|
10496
|
+
if (normalizedFormat === 'dd') {
|
|
10497
|
+
const num = Number(value);
|
|
10498
|
+
return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
|
|
10499
|
+
}
|
|
10500
|
+
if (normalizedFormat === 'yy') {
|
|
10501
|
+
const num = Number(value);
|
|
10502
|
+
return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
|
|
10503
|
+
}
|
|
10504
|
+
if (normalizedFormat === 'yyyy') {
|
|
10505
|
+
const num = Number(value);
|
|
10506
|
+
return (/^\d{4}$/u).test(value) && num >= 1 && num <= 9999;
|
|
10507
|
+
}
|
|
10508
|
+
|
|
10509
|
+
const dateFnsMask = this.toDateFnsMask(normalizedFormat);
|
|
10510
|
+
// Use the 1st of the current month as the reference so that formats
|
|
10511
|
+
// omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
|
|
10512
|
+
const referenceDate = new Date();
|
|
10513
|
+
referenceDate.setDate(1);
|
|
10514
|
+
const parsed = parse$1(value, dateFnsMask, referenceDate);
|
|
10515
|
+
return isValid$1(parsed) && format$1(parsed, dateFnsMask) === value;
|
|
10516
|
+
}
|
|
10517
|
+
|
|
10474
10518
|
/**
|
|
10475
10519
|
* Converts a display string to its model value.
|
|
10476
10520
|
* For full date formats, converts the display string to an ISO date string.
|
|
@@ -10518,6 +10562,7 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
10518
10562
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
10519
10563
|
|
|
10520
10564
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
10565
|
+
console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
|
|
10521
10566
|
return undefined;
|
|
10522
10567
|
}
|
|
10523
10568
|
|
|
@@ -13543,7 +13588,7 @@ class AuroBibtemplate extends LitElement {
|
|
|
13543
13588
|
}
|
|
13544
13589
|
}
|
|
13545
13590
|
|
|
13546
|
-
var formkitVersion$2 = '
|
|
13591
|
+
var formkitVersion$2 = '202607011722';
|
|
13547
13592
|
|
|
13548
13593
|
let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=literal`${unsafeStatic(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$1 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$1=css`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
|
|
13549
13594
|
`,u$4=css`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
|
|
@@ -19295,7 +19340,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
|
|
|
19295
19340
|
}
|
|
19296
19341
|
};
|
|
19297
19342
|
|
|
19298
|
-
var formkitVersion$1 = '
|
|
19343
|
+
var formkitVersion$1 = '202607011722';
|
|
19299
19344
|
|
|
19300
19345
|
let AuroElement$2 = class AuroElement extends LitElement {
|
|
19301
19346
|
static get properties() {
|
|
@@ -20047,7 +20092,19 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
20047
20092
|
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
|
|
20048
20093
|
this.trigger.focus();
|
|
20049
20094
|
}
|
|
20050
|
-
|
|
20095
|
+
|
|
20096
|
+
|
|
20097
|
+
if (!this.isPopoverVisible) {
|
|
20098
|
+
// wait til the bib gets fully closed and rendered
|
|
20099
|
+
setTimeout(() => {
|
|
20100
|
+
// check if it's still closed and the focus is still within the dropdown, but not in the bib. If so, move focus to the trigger.
|
|
20101
|
+
if (!this.isPopoverVisible || !this.bib.matches(':focus-within')) {
|
|
20102
|
+
return;
|
|
20103
|
+
}
|
|
20104
|
+
// Move focus out of bib into trigger.
|
|
20105
|
+
this.trigger.focus();
|
|
20106
|
+
});
|
|
20107
|
+
} }
|
|
20051
20108
|
|
|
20052
20109
|
firstUpdated() {
|
|
20053
20110
|
// Configure the floater to, this will generate the ID for the bib
|
|
@@ -24972,11 +25029,17 @@ class AuroFormValidation {
|
|
|
24972
25029
|
return;
|
|
24973
25030
|
}
|
|
24974
25031
|
|
|
24975
|
-
// Validate that the date passed was the correct format and is a valid date
|
|
25032
|
+
// Validate that the date passed was the correct format and is a valid date.
|
|
25033
|
+
// For partial date formats, valueObject is never populated; validate them directly.
|
|
24976
25034
|
if (elem.value && !elem.valueObject) {
|
|
24977
|
-
elem.
|
|
24978
|
-
|
|
24979
|
-
|
|
25035
|
+
const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
|
|
25036
|
+
const isValidPartial = isPartialDateFormat && elem.util.isValidPartialDate(elem.value, elem.format);
|
|
25037
|
+
|
|
25038
|
+
if (!isValidPartial) {
|
|
25039
|
+
elem.validity = 'patternMismatch';
|
|
25040
|
+
elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
|
|
25041
|
+
return;
|
|
25042
|
+
}
|
|
24980
25043
|
}
|
|
24981
25044
|
|
|
24982
25045
|
// Perform the rest of the validation
|
|
@@ -25070,15 +25133,17 @@ class AuroFormValidation {
|
|
|
25070
25133
|
);
|
|
25071
25134
|
}
|
|
25072
25135
|
|
|
25073
|
-
|
|
25074
|
-
|
|
25075
|
-
|
|
25136
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
25137
|
+
|
|
25138
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
25139
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
25140
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
25141
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
25142
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
25076
25143
|
hasValue = false;
|
|
25077
25144
|
}
|
|
25078
25145
|
}
|
|
25079
25146
|
|
|
25080
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
25081
|
-
|
|
25082
25147
|
if (isCombobox) {
|
|
25083
25148
|
|
|
25084
25149
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -30978,6 +31043,42 @@ class AuroInputUtilities {
|
|
|
30978
31043
|
return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
|
|
30979
31044
|
}
|
|
30980
31045
|
|
|
31046
|
+
/**
|
|
31047
|
+
* Validates a value against a partial date format (one that lacks yy/mm/dd all three).
|
|
31048
|
+
* Single-component formats are checked as integer ranges; multi-component formats use
|
|
31049
|
+
* a date-fns parse + round-trip to confirm both validity and exact formatting.
|
|
31050
|
+
* @param {string} value - The user-facing display value.
|
|
31051
|
+
* @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
|
|
31052
|
+
* @returns {boolean}
|
|
31053
|
+
*/
|
|
31054
|
+
isValidPartialDate(value, format$1) {
|
|
31055
|
+
if (!value || !format$1) {
|
|
31056
|
+
return false;
|
|
31057
|
+
}
|
|
31058
|
+
const normalizedFormat = format$1.toLowerCase();
|
|
31059
|
+
|
|
31060
|
+
if (normalizedFormat === 'dd') {
|
|
31061
|
+
const num = Number(value);
|
|
31062
|
+
return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
|
|
31063
|
+
}
|
|
31064
|
+
if (normalizedFormat === 'yy') {
|
|
31065
|
+
const num = Number(value);
|
|
31066
|
+
return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
|
|
31067
|
+
}
|
|
31068
|
+
if (normalizedFormat === 'yyyy') {
|
|
31069
|
+
const num = Number(value);
|
|
31070
|
+
return (/^\d{4}$/u).test(value) && num >= 1 && num <= 9999;
|
|
31071
|
+
}
|
|
31072
|
+
|
|
31073
|
+
const dateFnsMask = this.toDateFnsMask(normalizedFormat);
|
|
31074
|
+
// Use the 1st of the current month as the reference so that formats
|
|
31075
|
+
// omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
|
|
31076
|
+
const referenceDate = new Date();
|
|
31077
|
+
referenceDate.setDate(1);
|
|
31078
|
+
const parsed = parse(value, dateFnsMask, referenceDate);
|
|
31079
|
+
return isValid(parsed) && format(parsed, dateFnsMask) === value;
|
|
31080
|
+
}
|
|
31081
|
+
|
|
30981
31082
|
/**
|
|
30982
31083
|
* Converts a display string to its model value.
|
|
30983
31084
|
* For full date formats, converts the display string to an ISO date string.
|
|
@@ -31025,6 +31126,7 @@ class AuroInputUtilities {
|
|
|
31025
31126
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
31026
31127
|
|
|
31027
31128
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
31129
|
+
console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
|
|
31028
31130
|
return undefined;
|
|
31029
31131
|
}
|
|
31030
31132
|
|
|
@@ -31182,6 +31284,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31182
31284
|
// so a parent (datepicker/combobox) calling `validate()` synchronously
|
|
31183
31285
|
// during its own update cycle sees a populated util instance.
|
|
31184
31286
|
this.activeLabel = false;
|
|
31287
|
+
|
|
31185
31288
|
/** @private */
|
|
31186
31289
|
this.allowedInputTypes = [
|
|
31187
31290
|
"text",
|
|
@@ -31192,6 +31295,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31192
31295
|
"tel"
|
|
31193
31296
|
];
|
|
31194
31297
|
this.appearance = "default";
|
|
31298
|
+
|
|
31195
31299
|
/** @private */
|
|
31196
31300
|
this.dateFormatMap = {
|
|
31197
31301
|
'mm/dd/yyyy': 'dateMMDDYYYY',
|
|
@@ -31210,23 +31314,24 @@ class BaseInput extends AuroElement$1 {
|
|
|
31210
31314
|
'mm/dd': 'dateMMDD'
|
|
31211
31315
|
};
|
|
31212
31316
|
this.disabled = false;
|
|
31317
|
+
|
|
31213
31318
|
/** @private */
|
|
31214
31319
|
this.domHandler = new DomHandler();
|
|
31215
31320
|
this.dvInputOnly = false;
|
|
31216
31321
|
this.hasValue = false;
|
|
31217
31322
|
this.hideLabelVisually = false;
|
|
31218
31323
|
this.icon = false;
|
|
31324
|
+
|
|
31219
31325
|
/** @private */
|
|
31220
31326
|
this.inputIconName = undefined;
|
|
31327
|
+
|
|
31221
31328
|
/** @private */
|
|
31222
31329
|
this.label = 'Input label is undefined';
|
|
31223
31330
|
this.layout = 'classic';
|
|
31224
31331
|
this.locale = 'en-US';
|
|
31225
31332
|
this.max = undefined;
|
|
31226
|
-
this._maxObject = undefined;
|
|
31227
31333
|
this.maxLength = undefined;
|
|
31228
31334
|
this.min = undefined;
|
|
31229
|
-
this._minObject = undefined;
|
|
31230
31335
|
this.minLength = undefined;
|
|
31231
31336
|
this.noValidate = false;
|
|
31232
31337
|
this.onDark = false;
|
|
@@ -31243,23 +31348,27 @@ class BaseInput extends AuroElement$1 {
|
|
|
31243
31348
|
"email"
|
|
31244
31349
|
];
|
|
31245
31350
|
this.shape = 'classic';
|
|
31351
|
+
|
|
31246
31352
|
/** @private */
|
|
31247
31353
|
this.showPassword = false;
|
|
31248
31354
|
this.size = 'lg';
|
|
31249
31355
|
this.touched = false;
|
|
31356
|
+
|
|
31250
31357
|
/** @private */
|
|
31251
31358
|
this.uniqueId = new UniqueId().create();
|
|
31359
|
+
|
|
31252
31360
|
/** @private */
|
|
31253
31361
|
this.util = new AuroInputUtilities({
|
|
31254
31362
|
locale: this.locale,
|
|
31255
31363
|
format: this.format
|
|
31256
31364
|
});
|
|
31365
|
+
|
|
31257
31366
|
/** @private */
|
|
31258
31367
|
this.validation = new AuroFormValidation();
|
|
31368
|
+
|
|
31259
31369
|
/** @private */
|
|
31260
31370
|
this.validationCCLength = undefined;
|
|
31261
31371
|
this.value = undefined;
|
|
31262
|
-
this._valueObject = undefined;
|
|
31263
31372
|
}
|
|
31264
31373
|
|
|
31265
31374
|
// function to define props used within the scope of this component
|
|
@@ -31589,6 +31698,13 @@ class BaseInput extends AuroElement$1 {
|
|
|
31589
31698
|
type: String
|
|
31590
31699
|
},
|
|
31591
31700
|
|
|
31701
|
+
/**
|
|
31702
|
+
* Custom help text message to display when validity = `patternMismatch`.
|
|
31703
|
+
*/
|
|
31704
|
+
setCustomValidityPatternMismatch: {
|
|
31705
|
+
type: String
|
|
31706
|
+
},
|
|
31707
|
+
|
|
31592
31708
|
/**
|
|
31593
31709
|
* Custom help text message to display when validity = `rangeOverflow`.
|
|
31594
31710
|
*/
|
|
@@ -31659,7 +31775,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31659
31775
|
|
|
31660
31776
|
/**
|
|
31661
31777
|
* Populates the `type` attribute on the input.
|
|
31662
|
-
* @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
|
|
31778
|
+
* @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
|
|
31663
31779
|
* @default 'text'
|
|
31664
31780
|
*/
|
|
31665
31781
|
type: {
|
|
@@ -31697,7 +31813,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31697
31813
|
* @returns {Date|undefined}
|
|
31698
31814
|
*/
|
|
31699
31815
|
get valueObject() {
|
|
31700
|
-
return this.
|
|
31816
|
+
return this.value && dateFormatter.isValidDate(this.value) ? dateFormatter.stringToDateInstance(this.value) : undefined;
|
|
31701
31817
|
}
|
|
31702
31818
|
|
|
31703
31819
|
/**
|
|
@@ -31705,7 +31821,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31705
31821
|
* @returns {Date|undefined}
|
|
31706
31822
|
*/
|
|
31707
31823
|
get minObject() {
|
|
31708
|
-
return this.
|
|
31824
|
+
return this.min && dateFormatter.isValidDate(this.min) ? dateFormatter.stringToDateInstance(this.min) : undefined;
|
|
31709
31825
|
}
|
|
31710
31826
|
|
|
31711
31827
|
/**
|
|
@@ -31713,50 +31829,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31713
31829
|
* @returns {Date|undefined}
|
|
31714
31830
|
*/
|
|
31715
31831
|
get maxObject() {
|
|
31716
|
-
return this.
|
|
31717
|
-
}
|
|
31718
|
-
|
|
31719
|
-
/**
|
|
31720
|
-
* Parses a date string into a Date object when the corresponding `_*Object`
|
|
31721
|
-
* field hasn't been synced yet by `updated()`. Returns undefined when the
|
|
31722
|
-
* input type/format isn't a full date or the string is not a valid date.
|
|
31723
|
-
*
|
|
31724
|
-
* Why this exists: a parent (datepicker) can call `inputN.validate()` from
|
|
31725
|
-
* inside its own `updated()` before this input's `updated()` has run
|
|
31726
|
-
* `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
|
|
31727
|
-
* and range checks would otherwise silently no-op (flipping the result to
|
|
31728
|
-
* `valid` or `patternMismatch`).
|
|
31729
|
-
* @private
|
|
31730
|
-
* @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
|
|
31731
|
-
* @returns {Date|undefined}
|
|
31732
|
-
*/
|
|
31733
|
-
_computeDateObjectFallback(dateStr) {
|
|
31734
|
-
if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
|
|
31735
|
-
return undefined;
|
|
31736
|
-
}
|
|
31737
|
-
if (!dateFormatter.isValidDate(dateStr)) {
|
|
31738
|
-
return undefined;
|
|
31739
|
-
}
|
|
31740
|
-
return dateFormatter.stringToDateInstance(dateStr);
|
|
31741
|
-
}
|
|
31742
|
-
|
|
31743
|
-
/**
|
|
31744
|
-
* Internal setter for readonly date object properties.
|
|
31745
|
-
* @private
|
|
31746
|
-
* @param {'valueObject'|'minObject'|'maxObject'} propertyName - Public object property name.
|
|
31747
|
-
* @param {Date|undefined} propertyValue - Value to assign.
|
|
31748
|
-
* @returns {void}
|
|
31749
|
-
*/
|
|
31750
|
-
setDateObjectProperty(propertyName, propertyValue) {
|
|
31751
|
-
const internalPropertyName = `_${propertyName}`;
|
|
31752
|
-
const previousValue = this[internalPropertyName];
|
|
31753
|
-
|
|
31754
|
-
if (previousValue === propertyValue) {
|
|
31755
|
-
return;
|
|
31756
|
-
}
|
|
31757
|
-
|
|
31758
|
-
this[internalPropertyName] = propertyValue;
|
|
31759
|
-
this.requestUpdate(propertyName, previousValue);
|
|
31832
|
+
return this.max && dateFormatter.isValidDate(this.max) ? dateFormatter.stringToDateInstance(this.max) : undefined;
|
|
31760
31833
|
}
|
|
31761
31834
|
|
|
31762
31835
|
connectedCallback() {
|
|
@@ -31785,7 +31858,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31785
31858
|
format: this.format
|
|
31786
31859
|
});
|
|
31787
31860
|
this.configureDataForType();
|
|
31788
|
-
this.syncDateValues();
|
|
31789
31861
|
}
|
|
31790
31862
|
|
|
31791
31863
|
disconnectedCallback() {
|
|
@@ -31824,7 +31896,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31824
31896
|
this.setCustomHelpTextMessage();
|
|
31825
31897
|
this.configureAutoFormatting();
|
|
31826
31898
|
this.configureDataForType();
|
|
31827
|
-
this.syncDateValues();
|
|
31828
31899
|
}
|
|
31829
31900
|
|
|
31830
31901
|
/**
|
|
@@ -31968,8 +32039,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31968
32039
|
this.configureDataForType();
|
|
31969
32040
|
}
|
|
31970
32041
|
|
|
31971
|
-
this.syncDateValues(changedProperties);
|
|
31972
|
-
|
|
31973
32042
|
if (changedProperties.has('value')) {
|
|
31974
32043
|
if (this.value && this.value.length > 0) {
|
|
31975
32044
|
this.hasValue = true;
|
|
@@ -31991,14 +32060,14 @@ class BaseInput extends AuroElement$1 {
|
|
|
31991
32060
|
|
|
31992
32061
|
if (formattedValue !== this.inputElement.value) {
|
|
31993
32062
|
this.skipNextProgrammaticInputEvent = true;
|
|
31994
|
-
if (this.maskInstance && this.type
|
|
32063
|
+
if (this.maskInstance && this.type !== 'date') {
|
|
31995
32064
|
// Route through the mask so its _value and el.value stay in lock-step
|
|
31996
32065
|
// (set value calls updateControl which writes el.value = displayValue).
|
|
31997
32066
|
// Writing el.value directly leaves the mask thinking displayValue is
|
|
31998
|
-
// stale; _saveSelection on the next focus/click then warns.
|
|
31999
|
-
//
|
|
32000
|
-
//
|
|
32001
|
-
//
|
|
32067
|
+
// stale; _saveSelection on the next focus/click then warns. Date is
|
|
32068
|
+
// excluded because its formattedValue can be raw ISO when the calendar
|
|
32069
|
+
// is invalid, and re-masking through mm/dd/yyyy would truncate it and
|
|
32070
|
+
// flip validity from patternMismatch to tooShort.
|
|
32002
32071
|
this.maskInstance.value = formattedValue || '';
|
|
32003
32072
|
} else if (formattedValue) {
|
|
32004
32073
|
this.inputElement.value = formattedValue;
|
|
@@ -32040,120 +32109,65 @@ class BaseInput extends AuroElement$1 {
|
|
|
32040
32109
|
}));
|
|
32041
32110
|
}
|
|
32042
32111
|
|
|
32043
|
-
|
|
32044
|
-
/**
|
|
32045
|
-
* Synchronizes the ISO string values and Date object representations for date-related properties.
|
|
32046
|
-
* This keeps the model and display values aligned when either side changes.
|
|
32047
|
-
*
|
|
32048
|
-
* When a full date format is in use, this method updates `value`, `min`, and `max` from their corresponding
|
|
32049
|
-
* Date objects or vice versa, based on which properties have changed. It only runs when the current configuration
|
|
32050
|
-
* represents a full year/month/day date format.
|
|
32051
|
-
*
|
|
32052
|
-
* @param {Map<string, unknown>|undefined} [changedProperties=undefined] - Optional map of changed properties used to limit which values are synchronized.
|
|
32053
|
-
* @returns {void}
|
|
32054
|
-
* @private
|
|
32055
|
-
*/
|
|
32056
|
-
syncDateValues(changedProperties = undefined) {
|
|
32057
|
-
if (!this.util.isFullDateFormat(this.type, this.format)) {
|
|
32058
|
-
return;
|
|
32059
|
-
}
|
|
32060
|
-
|
|
32061
|
-
this.syncSingleDateValue(changedProperties, 'valueObject', 'value');
|
|
32062
|
-
this.syncSingleDateValue(changedProperties, 'minObject', 'min');
|
|
32063
|
-
this.syncSingleDateValue(changedProperties, 'maxObject', 'max');
|
|
32064
|
-
}
|
|
32065
|
-
|
|
32066
|
-
/**
|
|
32067
|
-
* Synchronizes one date object/string property pair.
|
|
32068
|
-
* @private
|
|
32069
|
-
* @param {Map<string, unknown>|undefined} changedProperties - Map of changed properties from Lit.
|
|
32070
|
-
* @param {string} objectProperty - Date object property name.
|
|
32071
|
-
* @param {string} valueProperty - ISO string property name.
|
|
32072
|
-
* @returns {void}
|
|
32073
|
-
*/
|
|
32074
|
-
syncSingleDateValue(changedProperties, objectProperty, valueProperty) {
|
|
32075
|
-
const objectPropertyChanged = !changedProperties || changedProperties.has(objectProperty);
|
|
32076
|
-
|
|
32077
|
-
// objectProperty wins over valueProperty when both changed
|
|
32078
|
-
if (objectPropertyChanged && this[objectProperty]) {
|
|
32079
|
-
this[valueProperty] = dateFormatter.toISOFormatString(this[objectProperty]);
|
|
32080
|
-
return;
|
|
32081
|
-
}
|
|
32082
|
-
|
|
32083
|
-
const valuePropertyChanged = !changedProperties || changedProperties.has(valueProperty);
|
|
32084
|
-
if (!valuePropertyChanged) {
|
|
32085
|
-
return;
|
|
32086
|
-
}
|
|
32087
|
-
|
|
32088
|
-
// when value is newly set to the same ISO string that corresponds to the existing Date object, do not clear the Date object (avoid unnecessary updates)
|
|
32089
|
-
if (
|
|
32090
|
-
changedProperties &&
|
|
32091
|
-
valueProperty === 'value' &&
|
|
32092
|
-
changedProperties.get('value') === undefined &&
|
|
32093
|
-
this[objectProperty] instanceof Date &&
|
|
32094
|
-
this[valueProperty] === dateFormatter.toISOFormatString(this[objectProperty])
|
|
32095
|
-
) {
|
|
32096
|
-
return;
|
|
32097
|
-
}
|
|
32098
|
-
|
|
32099
|
-
if (dateFormatter.isValidDate(this[valueProperty])) {
|
|
32100
|
-
this.setDateObjectProperty(objectProperty, dateFormatter.stringToDateInstance(this[valueProperty]));
|
|
32101
|
-
} else {
|
|
32102
|
-
this.setDateObjectProperty(objectProperty, undefined);
|
|
32103
|
-
}
|
|
32104
|
-
}
|
|
32105
|
-
|
|
32106
32112
|
/**
|
|
32107
32113
|
* Sets up IMasks and logic based on auto-formatting requirements.
|
|
32108
32114
|
* @private
|
|
32109
32115
|
* @returns {void}
|
|
32110
32116
|
*/
|
|
32111
32117
|
configureAutoFormatting() {
|
|
32112
|
-
//
|
|
32113
|
-
//
|
|
32114
|
-
//
|
|
32115
|
-
//
|
|
32118
|
+
// _configuringMask gates two things: external re-entry into this method
|
|
32119
|
+
// while setup is mid-flight (from property changes that call back here),
|
|
32120
|
+
// and the accept/complete listeners below — both need to ignore the mask
|
|
32121
|
+
// events fired by our own value-restore step.
|
|
32116
32122
|
if (this._configuringMask) return;
|
|
32117
32123
|
this._configuringMask = true;
|
|
32118
32124
|
try {
|
|
32125
|
+
// Destroy any prior mask so IMask can attach fresh under the new format.
|
|
32126
|
+
// Null the reference too — if the new maskOptions.mask is falsy (e.g.
|
|
32127
|
+
// type switched from credit-card to text) the IMask() reassignment
|
|
32128
|
+
// below is skipped, and downstream writes at line ~823 would otherwise
|
|
32129
|
+
// route through the destroyed instance.
|
|
32119
32130
|
if (this.maskInstance) {
|
|
32120
32131
|
this.maskInstance.destroy();
|
|
32132
|
+
this.maskInstance = null;
|
|
32121
32133
|
}
|
|
32122
32134
|
|
|
32123
|
-
// Pass new format to util
|
|
32124
32135
|
this.util.updateFormat(this.format);
|
|
32125
32136
|
|
|
32126
32137
|
const maskOptions = this.util.getMaskOptions(this.type, this.format);
|
|
32127
32138
|
|
|
32128
32139
|
if (this.inputElement && maskOptions.mask) {
|
|
32129
|
-
|
|
32130
|
-
//
|
|
32131
|
-
//
|
|
32132
|
-
//
|
|
32133
|
-
// When the format changes (e.g. locale switch) and we have a valid ISO
|
|
32134
|
-
// model value, compute the display string for the NEW format instead of
|
|
32135
|
-
// re-using the old display string, which may be invalid in the new mask.
|
|
32140
|
+
// Capture the current display so it can be re-applied after IMask
|
|
32141
|
+
// attaches. The restore at the bottom goes through maskInstance.value
|
|
32142
|
+
// (not inputElement.value directly) so the mask's internal state and
|
|
32143
|
+
// the input's displayed text stay in lock-step.
|
|
32136
32144
|
let existingValue = this.inputElement.value;
|
|
32145
|
+
|
|
32146
|
+
// Format-change case (e.g. locale switch): existingValue is the OLD
|
|
32147
|
+
// mask's display string and may not parse under the new mask. When
|
|
32148
|
+
// we have a valid date model, rebuild the display from valueObject
|
|
32149
|
+
// (the canonical source) using the new mask's format function.
|
|
32137
32150
|
if (
|
|
32138
32151
|
this.util.isFullDateFormat(this.type, this.format) &&
|
|
32139
32152
|
this.value &&
|
|
32140
|
-
|
|
32141
|
-
this.valueObject instanceof Date &&
|
|
32142
|
-
!Number.isNaN(this.valueObject.getTime()) &&
|
|
32153
|
+
this.valueObject &&
|
|
32143
32154
|
typeof maskOptions.format === 'function'
|
|
32144
32155
|
) {
|
|
32145
32156
|
existingValue = maskOptions.format(this.valueObject);
|
|
32146
32157
|
}
|
|
32147
32158
|
|
|
32159
|
+
// Clear before IMask attaches so the constructor seeds an empty
|
|
32160
|
+
// internal value. Otherwise IMask reads the stale unmasked string
|
|
32161
|
+
// and emits a spurious 'accept' before the restore below runs.
|
|
32148
32162
|
this.skipNextProgrammaticInputEvent = true;
|
|
32149
32163
|
this.inputElement.value = '';
|
|
32150
32164
|
|
|
32151
32165
|
this.maskInstance = IMask(this.inputElement, maskOptions);
|
|
32152
32166
|
|
|
32167
|
+
// Mask fires 'accept' on every value change, including the restore
|
|
32168
|
+
// step below. Skip events fired during configureAutoFormatting so
|
|
32169
|
+
// we don't overwrite a value the parent just pushed.
|
|
32153
32170
|
this.maskInstance.on('accept', () => {
|
|
32154
|
-
// Suppress propagation during configureAutoFormatting's own value-restoration
|
|
32155
|
-
// (line below) — the mask emits 'accept' on every value-set, including ours,
|
|
32156
|
-
// and we don't want to overwrite a value the parent just pushed.
|
|
32157
32171
|
if (this._configuringMask) return;
|
|
32158
32172
|
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
32159
32173
|
if (this.type === "date") {
|
|
@@ -32161,6 +32175,8 @@ class BaseInput extends AuroElement$1 {
|
|
|
32161
32175
|
}
|
|
32162
32176
|
});
|
|
32163
32177
|
|
|
32178
|
+
// Mask fires 'complete' on the restore step below for any value that
|
|
32179
|
+
// happens to be a complete match. Same setup-suppression as 'accept'.
|
|
32164
32180
|
this.maskInstance.on('complete', () => {
|
|
32165
32181
|
if (this._configuringMask) return;
|
|
32166
32182
|
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
@@ -32169,7 +32185,9 @@ class BaseInput extends AuroElement$1 {
|
|
|
32169
32185
|
}
|
|
32170
32186
|
});
|
|
32171
32187
|
|
|
32172
|
-
//
|
|
32188
|
+
// Write existingValue through the mask (not the input directly) so
|
|
32189
|
+
// the mask reformats it under the new rules and keeps its internal
|
|
32190
|
+
// _value aligned with the input's displayed text.
|
|
32173
32191
|
if (existingValue) {
|
|
32174
32192
|
this.maskInstance.value = existingValue;
|
|
32175
32193
|
}
|
|
@@ -32263,9 +32281,9 @@ class BaseInput extends AuroElement$1 {
|
|
|
32263
32281
|
// the gated types currently support it, since the list is a public
|
|
32264
32282
|
// property a consumer could mutate.
|
|
32265
32283
|
if (this.setSelectionInputTypes.includes(this.type)) {
|
|
32266
|
-
let selectionStart;
|
|
32284
|
+
let selectionStart = null;
|
|
32267
32285
|
try {
|
|
32268
|
-
selectionStart = this.inputElement
|
|
32286
|
+
({ selectionStart } = this.inputElement);
|
|
32269
32287
|
} catch (error) { // eslint-disable-line no-unused-vars
|
|
32270
32288
|
return;
|
|
32271
32289
|
}
|
|
@@ -32369,7 +32387,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
32369
32387
|
*/
|
|
32370
32388
|
reset() {
|
|
32371
32389
|
this.value = undefined;
|
|
32372
|
-
this.setDateObjectProperty('valueObject', undefined);
|
|
32373
32390
|
this.validation.reset(this);
|
|
32374
32391
|
}
|
|
32375
32392
|
|
|
@@ -32378,7 +32395,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
32378
32395
|
*/
|
|
32379
32396
|
clear() {
|
|
32380
32397
|
this.value = undefined;
|
|
32381
|
-
this.setDateObjectProperty('valueObject', undefined);
|
|
32382
32398
|
}
|
|
32383
32399
|
|
|
32384
32400
|
/**
|
|
@@ -32907,7 +32923,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
|
|
|
32907
32923
|
}
|
|
32908
32924
|
};
|
|
32909
32925
|
|
|
32910
|
-
var formkitVersion = '
|
|
32926
|
+
var formkitVersion = '202607011722';
|
|
32911
32927
|
|
|
32912
32928
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
32913
32929
|
// See LICENSE in the project root for license information.
|