@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
|
@@ -559,11 +559,17 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
559
559
|
return;
|
|
560
560
|
}
|
|
561
561
|
|
|
562
|
-
// Validate that the date passed was the correct format and is a valid date
|
|
562
|
+
// Validate that the date passed was the correct format and is a valid date.
|
|
563
|
+
// For partial date formats, valueObject is never populated; validate them directly.
|
|
563
564
|
if (elem.value && !elem.valueObject) {
|
|
564
|
-
elem.
|
|
565
|
-
|
|
566
|
-
|
|
565
|
+
const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
|
|
566
|
+
const isValidPartial = isPartialDateFormat && elem.util.isValidPartialDate(elem.value, elem.format);
|
|
567
|
+
|
|
568
|
+
if (!isValidPartial) {
|
|
569
|
+
elem.validity = 'patternMismatch';
|
|
570
|
+
elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
567
573
|
}
|
|
568
574
|
|
|
569
575
|
// Perform the rest of the validation
|
|
@@ -657,15 +663,17 @@ let AuroFormValidation$1 = class AuroFormValidation {
|
|
|
657
663
|
);
|
|
658
664
|
}
|
|
659
665
|
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
666
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
667
|
+
|
|
668
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
669
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
670
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
671
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
672
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
663
673
|
hasValue = false;
|
|
664
674
|
}
|
|
665
675
|
}
|
|
666
676
|
|
|
667
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
668
|
-
|
|
669
677
|
if (isCombobox) {
|
|
670
678
|
|
|
671
679
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -10488,6 +10496,42 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
10488
10496
|
return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
|
|
10489
10497
|
}
|
|
10490
10498
|
|
|
10499
|
+
/**
|
|
10500
|
+
* Validates a value against a partial date format (one that lacks yy/mm/dd all three).
|
|
10501
|
+
* Single-component formats are checked as integer ranges; multi-component formats use
|
|
10502
|
+
* a date-fns parse + round-trip to confirm both validity and exact formatting.
|
|
10503
|
+
* @param {string} value - The user-facing display value.
|
|
10504
|
+
* @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
|
|
10505
|
+
* @returns {boolean}
|
|
10506
|
+
*/
|
|
10507
|
+
isValidPartialDate(value, format) {
|
|
10508
|
+
if (!value || !format) {
|
|
10509
|
+
return false;
|
|
10510
|
+
}
|
|
10511
|
+
const normalizedFormat = format.toLowerCase();
|
|
10512
|
+
|
|
10513
|
+
if (normalizedFormat === 'dd') {
|
|
10514
|
+
const num = Number(value);
|
|
10515
|
+
return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
|
|
10516
|
+
}
|
|
10517
|
+
if (normalizedFormat === 'yy') {
|
|
10518
|
+
const num = Number(value);
|
|
10519
|
+
return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
|
|
10520
|
+
}
|
|
10521
|
+
if (normalizedFormat === 'yyyy') {
|
|
10522
|
+
const num = Number(value);
|
|
10523
|
+
return (/^\d{4}$/u).test(value) && num >= 1 && num <= 9999;
|
|
10524
|
+
}
|
|
10525
|
+
|
|
10526
|
+
const dateFnsMask = this.toDateFnsMask(normalizedFormat);
|
|
10527
|
+
// Use the 1st of the current month as the reference so that formats
|
|
10528
|
+
// omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
|
|
10529
|
+
const referenceDate = new Date();
|
|
10530
|
+
referenceDate.setDate(1);
|
|
10531
|
+
const parsed = parse$1(value, dateFnsMask, referenceDate);
|
|
10532
|
+
return isValid$1(parsed) && format$1(parsed, dateFnsMask) === value;
|
|
10533
|
+
}
|
|
10534
|
+
|
|
10491
10535
|
/**
|
|
10492
10536
|
* Converts a display string to its model value.
|
|
10493
10537
|
* For full date formats, converts the display string to an ISO date string.
|
|
@@ -10535,6 +10579,7 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
|
|
|
10535
10579
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
10536
10580
|
|
|
10537
10581
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
10582
|
+
console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
|
|
10538
10583
|
return undefined;
|
|
10539
10584
|
}
|
|
10540
10585
|
|
|
@@ -13591,7 +13636,7 @@ class AuroBibtemplate extends i$1 {
|
|
|
13591
13636
|
}
|
|
13592
13637
|
}
|
|
13593
13638
|
|
|
13594
|
-
var formkitVersion$2 = '
|
|
13639
|
+
var formkitVersion$2 = '202607011722';
|
|
13595
13640
|
|
|
13596
13641
|
let l$1 = class l{generateElementName(t,e){let o=t;return o+="-",o+=e.replace(/[.]/g,"_"),o}generateTag(o,s,a){const r=this.generateElementName(o,s),i=i$5`${s$5(r)}`;return customElements.get(r)||customElements.define(r,class extends a{}),i}};let d$1 = class d{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}getSlotText(t,e){const o=t.shadowRoot?.querySelector(`slot[name="${e}"]`),s=(o?.assignedNodes({flatten:true})||[]).map(t=>t.textContent?.trim()).join(" ").trim();return s||null}};let h$4 = class h{registerComponent(t,e){customElements.get(t)||customElements.define(t,class extends e{});}closestElement(t,e=this,o=(e,s=e&&e.closest(t))=>e&&e!==document&&e!==window?s||o(e.getRootNode().host):null){return o(e)}handleComponentTagRename(t,e){const o=e.toLowerCase();t.tagName.toLowerCase()!==o&&t.setAttribute(o,true);}elementMatch(t,e){const o=e.toLowerCase();return t.tagName.toLowerCase()===o||t.hasAttribute(o)}};var c$3=i$3`:host{color:var(--ds-auro-loader-color)}:host>span{background-color:var(--ds-auro-loader-background-color);border-color:var(--ds-auro-loader-border-color)}:host([onlight]),:host([appearance=brand]){--ds-auro-loader-color: var(--ds-basic-color-brand-primary, #01426a)}:host([ondark]),:host([appearance=inverse]){--ds-auro-loader-color: var(--ds-basic-color-texticon-inverse, #ffffff)}:host([orbit])>span{--ds-auro-loader-background-color: transparent}:host([orbit])>span:nth-child(1){--ds-auro-loader-border-color: currentcolor;opacity:.25}:host([orbit])>span:nth-child(2){--ds-auro-loader-border-color: currentcolor;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}
|
|
13597
13642
|
`,u$6=i$3`.body-default{font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.body-default,.body-lg{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-lg{font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{font-size:var(--wcss-body-sm-font-size, .875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.body-sm,.body-xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0)}.body-xs{font-size:var(--wcss-body-xs-font-size, .75rem);line-height:var(--wcss-body-xs-line-height, 1rem)}.body-2xs{font-family:var(--wcss-body-family, "AS Circular"),system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:var(--wcss-body-2xs-font-size, .625rem);font-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);line-height:var(--wcss-body-2xs-line-height, .875rem)}.display-2xl{font-family:var(--wcss-display-2xl-family, "AS Circular"),var(--wcss-display-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem));font-weight:var(--wcss-display-2xl-weight, 300);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);line-height:var(--wcss-display-2xl-line-height, 1.3)}.display-xl{font-family:var(--wcss-display-xl-family, "AS Circular"),var(--wcss-display-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem));font-weight:var(--wcss-display-xl-weight, 300);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);line-height:var(--wcss-display-xl-line-height, 1.3)}.display-lg{font-family:var(--wcss-display-lg-family, "AS Circular"),var(--wcss-display-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem));font-weight:var(--wcss-display-lg-weight, 300);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);line-height:var(--wcss-display-lg-line-height, 1.3)}.display-md{font-family:var(--wcss-display-md-family, "AS Circular"),var(--wcss-display-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem));font-weight:var(--wcss-display-md-weight, 300);letter-spacing:var(--wcss-display-md-letter-spacing, 0);line-height:var(--wcss-display-md-line-height, 1.3)}.display-sm{font-family:var(--wcss-display-sm-family, "AS Circular"),var(--wcss-display-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem));font-weight:var(--wcss-display-sm-weight, 300);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);line-height:var(--wcss-display-sm-line-height, 1.3)}.display-xs{font-family:var(--wcss-display-xs-family, "AS Circular"),var(--wcss-display-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem));font-weight:var(--wcss-display-xs-weight, 300);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);line-height:var(--wcss-display-xs-line-height, 1.3)}.heading-xl{font-family:var(--wcss-heading-xl-family, "AS Circular"),var(--wcss-heading-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem));font-weight:var(--wcss-heading-xl-weight, 300);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);line-height:var(--wcss-heading-xl-line-height, 1.3)}.heading-lg{font-family:var(--wcss-heading-lg-family, "AS Circular"),var(--wcss-heading-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem));font-weight:var(--wcss-heading-lg-weight, 300);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);line-height:var(--wcss-heading-lg-line-height, 1.3)}.heading-md{font-family:var(--wcss-heading-md-family, "AS Circular"),var(--wcss-heading-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem));font-weight:var(--wcss-heading-md-weight, 300);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);line-height:var(--wcss-heading-md-line-height, 1.3)}.heading-sm{font-family:var(--wcss-heading-sm-family, "AS Circular"),var(--wcss-heading-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem));font-weight:var(--wcss-heading-sm-weight, 300);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);line-height:var(--wcss-heading-sm-line-height, 1.3)}.heading-xs{font-family:var(--wcss-heading-xs-family, "AS Circular"),var(--wcss-heading-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem));font-weight:var(--wcss-heading-xs-weight, 450);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);line-height:var(--wcss-heading-xs-line-height, 1.3)}.heading-2xs{font-family:var(--wcss-heading-2xs-family, "AS Circular"),var(--wcss-heading-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem));font-weight:var(--wcss-heading-2xs-weight, 450);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);line-height:var(--wcss-heading-2xs-line-height, 1.3)}.accent-2xl{font-family:var(--wcss-accent-2xl-family, "Good OT"),var(--wcss-accent-2xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));font-weight:var(--wcss-accent-2xl-weight, 450);letter-spacing:var(--wcss-accent-2xl-letter-spacing, .05em);line-height:var(--wcss-accent-2xl-line-height, 1)}.accent-2xl,.accent-xl{text-transform:uppercase}.accent-xl{font-family:var(--wcss-accent-xl-family, "Good OT"),var(--wcss-accent-xl-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));font-weight:var(--wcss-accent-xl-weight, 450);letter-spacing:var(--wcss-accent-xl-letter-spacing, .05em);line-height:var(--wcss-accent-xl-line-height, 1.3)}.accent-lg{font-family:var(--wcss-accent-lg-family, "Good OT"),var(--wcss-accent-lg-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));font-weight:var(--wcss-accent-lg-weight, 450);letter-spacing:var(--wcss-accent-lg-letter-spacing, .05em);line-height:var(--wcss-accent-lg-line-height, 1.3)}.accent-lg,.accent-md{text-transform:uppercase}.accent-md{font-family:var(--wcss-accent-md-family, "Good OT"),var(--wcss-accent-md-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));font-weight:var(--wcss-accent-md-weight, 500);letter-spacing:var(--wcss-accent-md-letter-spacing, .05em);line-height:var(--wcss-accent-md-line-height, 1.3)}.accent-sm{font-family:var(--wcss-accent-sm-family, "Good OT"),var(--wcss-accent-sm-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));font-weight:var(--wcss-accent-sm-weight, 500);letter-spacing:var(--wcss-accent-sm-letter-spacing, .05em);line-height:var(--wcss-accent-sm-line-height, 1.3)}.accent-sm,.accent-xs{text-transform:uppercase}.accent-xs{font-family:var(--wcss-accent-xs-family, "Good OT"),var(--wcss-accent-xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));font-weight:var(--wcss-accent-xs-weight, 500);letter-spacing:var(--wcss-accent-xs-letter-spacing, .1em);line-height:var(--wcss-accent-xs-line-height, 1.3)}.accent-2xs{font-family:var(--wcss-accent-2xs-family, "Good OT"),var(--wcss-accent-2xs-family-fallback, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif);font-size:var(--wcss-accent-2xs-font-size, clamp(.875rem, 1.1666666667vw, .875rem));font-weight:var(--wcss-accent-2xs-weight, 450);letter-spacing:var(--wcss-accent-2xs-letter-spacing, .1em);line-height:var(--wcss-accent-2xs-line-height, 1.3);text-transform:uppercase}:focus:not(:focus-visible){outline:3px solid transparent}:host,:host>span{position:relative}:host{width:2rem;height:2rem;display:inline-block;font-size:0}:host>span{position:absolute;display:inline-block;float:none;top:0;left:0;width:2rem;height:2rem;border-radius:100%;border-style:solid;border-width:0;box-sizing:border-box}:host([xs]),:host([xs])>span{width:1.2rem;height:1.2rem}:host([sm]),:host([sm])>span{width:3rem;height:3rem}:host([md]),:host([md])>span{width:5rem;height:5rem}:host([lg]),:host([lg])>span{width:8rem;height:8rem}:host{--margin: .375rem;--margin-xs: .2rem;--margin-sm: .5rem;--margin-md: .75rem;--margin-lg: 1rem}:host([pulse]),:host([pulse])>span{position:relative}:host([pulse]){width:calc(3rem + var(--margin) * 6);height:calc(1rem + var(--margin) * 2)}:host([pulse])>span{width:1rem;height:1rem;margin:var(--margin);animation:pulse 1.5s ease infinite}:host([pulse][xs]){width:calc(1.95rem + var(--margin-xs) * 6);height:calc(.65rem + var(--margin-xs) * 2)}:host([pulse][xs])>span{margin:var(--margin-xs);width:.65rem;height:.65rem}:host([pulse][sm]){width:calc(6rem + var(--margin-sm) * 6);height:calc(2rem + var(--margin-sm) * 2)}:host([pulse][sm])>span{margin:var(--margin-sm);width:2rem;height:2rem}:host([pulse][md]){width:calc(9rem + var(--margin-md) * 6);height:calc(3rem + var(--margin-md) * 2)}:host([pulse][md])>span{margin:var(--margin-md);width:3rem;height:3rem}:host([pulse][lg]){width:calc(15rem + var(--margin-lg) * 6);height:calc(5rem + var(--margin-lg) * 2)}:host([pulse][lg])>span{margin:var(--margin-lg);width:5rem;height:5rem}:host([pulse])>span:nth-child(1){animation-delay:-.4s}:host([pulse])>span:nth-child(2){animation-delay:-.2s}:host([pulse])>span:nth-child(3){animation-delay:0ms}@keyframes pulse{0%,to{opacity:.1;transform:scale(.9)}50%{opacity:1;transform:scale(1.1)}}:host([orbit]),:host([orbit])>span{opacity:1}:host([orbit])>span{border-width:5px}:host([orbit])>span:nth-child(2){animation:orbit 2s linear infinite}:host([orbit][sm])>span{border-width:8px}:host([orbit][md])>span{border-width:13px}:host([orbit][lg])>span{border-width:21px}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}:host([ringworm])>svg{animation:rotate 2s linear infinite;height:100%;width:100%;stroke:currentcolor;stroke-width:8}:host([ringworm]) .path{stroke-dashoffset:0;animation:ringworm 1.5s ease-in-out infinite;stroke-linecap:round}@keyframes rotate{to{transform:rotate(360deg)}}@keyframes ringworm{0%{stroke-dasharray:1,200;stroke-dashoffset:0}50%{stroke-dasharray:89,200;stroke-dashoffset:-35px}to{stroke-dasharray:89,200;stroke-dashoffset:-124px}}:host([laser]){position:static;width:100%;display:block;height:0;overflow:hidden;font-size:unset}:host([laser])>span{position:fixed;width:100%;height:.25rem;border-radius:0;z-index:100}:host([laser])>span:nth-child(1){border-color:currentcolor;opacity:.25}:host([laser])>span:nth-child(2){border-color:currentcolor;animation:laser 2s linear infinite;opacity:1;width:50%}:host([laser][sm])>span:nth-child(2){width:20%}:host([laser][md])>span:nth-child(2){width:30%}:host([laser][lg])>span:nth-child(2){width:50%;animation-duration:1.5s}:host([laser][xl])>span:nth-child(2){width:80%;animation-duration:1.5s}@keyframes laser{0%{left:-100%}to{left:110%}}:host>.no-animation{display:none}@media (prefers-reduced-motion: reduce){:host{display:flex;align-items:center;justify-content:center}:host>span{opacity:1}:host>.loader{display:none}:host>svg{display:none}:host>.no-animation{display:block}}
|
|
@@ -19367,7 +19412,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
|
|
|
19367
19412
|
}
|
|
19368
19413
|
};
|
|
19369
19414
|
|
|
19370
|
-
var formkitVersion$1 = '
|
|
19415
|
+
var formkitVersion$1 = '202607011722';
|
|
19371
19416
|
|
|
19372
19417
|
let AuroElement$2 = class AuroElement extends i$1 {
|
|
19373
19418
|
static get properties() {
|
|
@@ -20119,7 +20164,19 @@ class AuroDropdown extends AuroElement$2 {
|
|
|
20119
20164
|
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
|
|
20120
20165
|
this.trigger.focus();
|
|
20121
20166
|
}
|
|
20122
|
-
|
|
20167
|
+
|
|
20168
|
+
|
|
20169
|
+
if (!this.isPopoverVisible) {
|
|
20170
|
+
// wait til the bib gets fully closed and rendered
|
|
20171
|
+
setTimeout(() => {
|
|
20172
|
+
// 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.
|
|
20173
|
+
if (!this.isPopoverVisible || !this.bib.matches(':focus-within')) {
|
|
20174
|
+
return;
|
|
20175
|
+
}
|
|
20176
|
+
// Move focus out of bib into trigger.
|
|
20177
|
+
this.trigger.focus();
|
|
20178
|
+
});
|
|
20179
|
+
} }
|
|
20123
20180
|
|
|
20124
20181
|
firstUpdated() {
|
|
20125
20182
|
// Configure the floater to, this will generate the ID for the bib
|
|
@@ -25051,11 +25108,17 @@ class AuroFormValidation {
|
|
|
25051
25108
|
return;
|
|
25052
25109
|
}
|
|
25053
25110
|
|
|
25054
|
-
// Validate that the date passed was the correct format and is a valid date
|
|
25111
|
+
// Validate that the date passed was the correct format and is a valid date.
|
|
25112
|
+
// For partial date formats, valueObject is never populated; validate them directly.
|
|
25055
25113
|
if (elem.value && !elem.valueObject) {
|
|
25056
|
-
elem.
|
|
25057
|
-
|
|
25058
|
-
|
|
25114
|
+
const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
|
|
25115
|
+
const isValidPartial = isPartialDateFormat && elem.util.isValidPartialDate(elem.value, elem.format);
|
|
25116
|
+
|
|
25117
|
+
if (!isValidPartial) {
|
|
25118
|
+
elem.validity = 'patternMismatch';
|
|
25119
|
+
elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
|
|
25120
|
+
return;
|
|
25121
|
+
}
|
|
25059
25122
|
}
|
|
25060
25123
|
|
|
25061
25124
|
// Perform the rest of the validation
|
|
@@ -25149,15 +25212,17 @@ class AuroFormValidation {
|
|
|
25149
25212
|
);
|
|
25150
25213
|
}
|
|
25151
25214
|
|
|
25152
|
-
|
|
25153
|
-
|
|
25154
|
-
|
|
25215
|
+
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
25216
|
+
|
|
25217
|
+
// If there is a second input in the elem and that value is undefined or an empty string set hasValue to false.
|
|
25218
|
+
// Skip for combobox: its second auro-input is the fullscreen-bib mirror of the same value, not an independent
|
|
25219
|
+
// field (datepicker is the intended consumer — start/end are independently required).
|
|
25220
|
+
if (this.auroInputElements?.length === 2 && !isCombobox) {
|
|
25221
|
+
if (!this.auroInputElements[1].value || this.auroInputElements[1].value.length === 0) {
|
|
25155
25222
|
hasValue = false;
|
|
25156
25223
|
}
|
|
25157
25224
|
}
|
|
25158
25225
|
|
|
25159
|
-
const isCombobox = this.runtimeUtils.elementMatch(elem, 'auro-combobox');
|
|
25160
|
-
|
|
25161
25226
|
if (isCombobox) {
|
|
25162
25227
|
|
|
25163
25228
|
if (!elem.persistInput || elem.behavior === "filter") {
|
|
@@ -31057,6 +31122,42 @@ class AuroInputUtilities {
|
|
|
31057
31122
|
return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
|
|
31058
31123
|
}
|
|
31059
31124
|
|
|
31125
|
+
/**
|
|
31126
|
+
* Validates a value against a partial date format (one that lacks yy/mm/dd all three).
|
|
31127
|
+
* Single-component formats are checked as integer ranges; multi-component formats use
|
|
31128
|
+
* a date-fns parse + round-trip to confirm both validity and exact formatting.
|
|
31129
|
+
* @param {string} value - The user-facing display value.
|
|
31130
|
+
* @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
|
|
31131
|
+
* @returns {boolean}
|
|
31132
|
+
*/
|
|
31133
|
+
isValidPartialDate(value, format$1) {
|
|
31134
|
+
if (!value || !format$1) {
|
|
31135
|
+
return false;
|
|
31136
|
+
}
|
|
31137
|
+
const normalizedFormat = format$1.toLowerCase();
|
|
31138
|
+
|
|
31139
|
+
if (normalizedFormat === 'dd') {
|
|
31140
|
+
const num = Number(value);
|
|
31141
|
+
return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
|
|
31142
|
+
}
|
|
31143
|
+
if (normalizedFormat === 'yy') {
|
|
31144
|
+
const num = Number(value);
|
|
31145
|
+
return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
|
|
31146
|
+
}
|
|
31147
|
+
if (normalizedFormat === 'yyyy') {
|
|
31148
|
+
const num = Number(value);
|
|
31149
|
+
return (/^\d{4}$/u).test(value) && num >= 1 && num <= 9999;
|
|
31150
|
+
}
|
|
31151
|
+
|
|
31152
|
+
const dateFnsMask = this.toDateFnsMask(normalizedFormat);
|
|
31153
|
+
// Use the 1st of the current month as the reference so that formats
|
|
31154
|
+
// omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
|
|
31155
|
+
const referenceDate = new Date();
|
|
31156
|
+
referenceDate.setDate(1);
|
|
31157
|
+
const parsed = parse(value, dateFnsMask, referenceDate);
|
|
31158
|
+
return isValid(parsed) && format(parsed, dateFnsMask) === value;
|
|
31159
|
+
}
|
|
31160
|
+
|
|
31060
31161
|
/**
|
|
31061
31162
|
* Converts a display string to its model value.
|
|
31062
31163
|
* For full date formats, converts the display string to an ISO date string.
|
|
@@ -31104,6 +31205,7 @@ class AuroInputUtilities {
|
|
|
31104
31205
|
const maskOptions = this.getMaskOptions('date', normalizedFormat);
|
|
31105
31206
|
|
|
31106
31207
|
if (!(valueObject instanceof Date) || Number.isNaN(valueObject.getTime()) || !maskOptions || typeof maskOptions.format !== 'function') {
|
|
31208
|
+
console.debug('Invalid date object or mask options for formatting', { valueObject, maskOptions }); // eslint-disable-line no-console
|
|
31107
31209
|
return undefined;
|
|
31108
31210
|
}
|
|
31109
31211
|
|
|
@@ -31261,6 +31363,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31261
31363
|
// so a parent (datepicker/combobox) calling `validate()` synchronously
|
|
31262
31364
|
// during its own update cycle sees a populated util instance.
|
|
31263
31365
|
this.activeLabel = false;
|
|
31366
|
+
|
|
31264
31367
|
/** @private */
|
|
31265
31368
|
this.allowedInputTypes = [
|
|
31266
31369
|
"text",
|
|
@@ -31271,6 +31374,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31271
31374
|
"tel"
|
|
31272
31375
|
];
|
|
31273
31376
|
this.appearance = "default";
|
|
31377
|
+
|
|
31274
31378
|
/** @private */
|
|
31275
31379
|
this.dateFormatMap = {
|
|
31276
31380
|
'mm/dd/yyyy': 'dateMMDDYYYY',
|
|
@@ -31289,23 +31393,24 @@ class BaseInput extends AuroElement$1 {
|
|
|
31289
31393
|
'mm/dd': 'dateMMDD'
|
|
31290
31394
|
};
|
|
31291
31395
|
this.disabled = false;
|
|
31396
|
+
|
|
31292
31397
|
/** @private */
|
|
31293
31398
|
this.domHandler = new DomHandler();
|
|
31294
31399
|
this.dvInputOnly = false;
|
|
31295
31400
|
this.hasValue = false;
|
|
31296
31401
|
this.hideLabelVisually = false;
|
|
31297
31402
|
this.icon = false;
|
|
31403
|
+
|
|
31298
31404
|
/** @private */
|
|
31299
31405
|
this.inputIconName = undefined;
|
|
31406
|
+
|
|
31300
31407
|
/** @private */
|
|
31301
31408
|
this.label = 'Input label is undefined';
|
|
31302
31409
|
this.layout = 'classic';
|
|
31303
31410
|
this.locale = 'en-US';
|
|
31304
31411
|
this.max = undefined;
|
|
31305
|
-
this._maxObject = undefined;
|
|
31306
31412
|
this.maxLength = undefined;
|
|
31307
31413
|
this.min = undefined;
|
|
31308
|
-
this._minObject = undefined;
|
|
31309
31414
|
this.minLength = undefined;
|
|
31310
31415
|
this.noValidate = false;
|
|
31311
31416
|
this.onDark = false;
|
|
@@ -31322,23 +31427,27 @@ class BaseInput extends AuroElement$1 {
|
|
|
31322
31427
|
"email"
|
|
31323
31428
|
];
|
|
31324
31429
|
this.shape = 'classic';
|
|
31430
|
+
|
|
31325
31431
|
/** @private */
|
|
31326
31432
|
this.showPassword = false;
|
|
31327
31433
|
this.size = 'lg';
|
|
31328
31434
|
this.touched = false;
|
|
31435
|
+
|
|
31329
31436
|
/** @private */
|
|
31330
31437
|
this.uniqueId = new UniqueId().create();
|
|
31438
|
+
|
|
31331
31439
|
/** @private */
|
|
31332
31440
|
this.util = new AuroInputUtilities({
|
|
31333
31441
|
locale: this.locale,
|
|
31334
31442
|
format: this.format
|
|
31335
31443
|
});
|
|
31444
|
+
|
|
31336
31445
|
/** @private */
|
|
31337
31446
|
this.validation = new AuroFormValidation();
|
|
31447
|
+
|
|
31338
31448
|
/** @private */
|
|
31339
31449
|
this.validationCCLength = undefined;
|
|
31340
31450
|
this.value = undefined;
|
|
31341
|
-
this._valueObject = undefined;
|
|
31342
31451
|
}
|
|
31343
31452
|
|
|
31344
31453
|
// function to define props used within the scope of this component
|
|
@@ -31668,6 +31777,13 @@ class BaseInput extends AuroElement$1 {
|
|
|
31668
31777
|
type: String
|
|
31669
31778
|
},
|
|
31670
31779
|
|
|
31780
|
+
/**
|
|
31781
|
+
* Custom help text message to display when validity = `patternMismatch`.
|
|
31782
|
+
*/
|
|
31783
|
+
setCustomValidityPatternMismatch: {
|
|
31784
|
+
type: String
|
|
31785
|
+
},
|
|
31786
|
+
|
|
31671
31787
|
/**
|
|
31672
31788
|
* Custom help text message to display when validity = `rangeOverflow`.
|
|
31673
31789
|
*/
|
|
@@ -31738,7 +31854,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31738
31854
|
|
|
31739
31855
|
/**
|
|
31740
31856
|
* Populates the `type` attribute on the input.
|
|
31741
|
-
* @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
|
|
31857
|
+
* @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
|
|
31742
31858
|
* @default 'text'
|
|
31743
31859
|
*/
|
|
31744
31860
|
type: {
|
|
@@ -31776,7 +31892,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31776
31892
|
* @returns {Date|undefined}
|
|
31777
31893
|
*/
|
|
31778
31894
|
get valueObject() {
|
|
31779
|
-
return this.
|
|
31895
|
+
return this.value && dateFormatter.isValidDate(this.value) ? dateFormatter.stringToDateInstance(this.value) : undefined;
|
|
31780
31896
|
}
|
|
31781
31897
|
|
|
31782
31898
|
/**
|
|
@@ -31784,7 +31900,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31784
31900
|
* @returns {Date|undefined}
|
|
31785
31901
|
*/
|
|
31786
31902
|
get minObject() {
|
|
31787
|
-
return this.
|
|
31903
|
+
return this.min && dateFormatter.isValidDate(this.min) ? dateFormatter.stringToDateInstance(this.min) : undefined;
|
|
31788
31904
|
}
|
|
31789
31905
|
|
|
31790
31906
|
/**
|
|
@@ -31792,50 +31908,7 @@ class BaseInput extends AuroElement$1 {
|
|
|
31792
31908
|
* @returns {Date|undefined}
|
|
31793
31909
|
*/
|
|
31794
31910
|
get maxObject() {
|
|
31795
|
-
return this.
|
|
31796
|
-
}
|
|
31797
|
-
|
|
31798
|
-
/**
|
|
31799
|
-
* Parses a date string into a Date object when the corresponding `_*Object`
|
|
31800
|
-
* field hasn't been synced yet by `updated()`. Returns undefined when the
|
|
31801
|
-
* input type/format isn't a full date or the string is not a valid date.
|
|
31802
|
-
*
|
|
31803
|
-
* Why this exists: a parent (datepicker) can call `inputN.validate()` from
|
|
31804
|
-
* inside its own `updated()` before this input's `updated()` has run
|
|
31805
|
-
* `syncDateValues()` — so `_valueObject`/`_maxObject` are still `undefined`
|
|
31806
|
-
* and range checks would otherwise silently no-op (flipping the result to
|
|
31807
|
-
* `valid` or `patternMismatch`).
|
|
31808
|
-
* @private
|
|
31809
|
-
* @param {string|undefined} dateStr - ISO date string from `value`/`min`/`max`.
|
|
31810
|
-
* @returns {Date|undefined}
|
|
31811
|
-
*/
|
|
31812
|
-
_computeDateObjectFallback(dateStr) {
|
|
31813
|
-
if (!dateStr || !this.util || !this.util.isFullDateFormat(this.type, this.format)) {
|
|
31814
|
-
return undefined;
|
|
31815
|
-
}
|
|
31816
|
-
if (!dateFormatter.isValidDate(dateStr)) {
|
|
31817
|
-
return undefined;
|
|
31818
|
-
}
|
|
31819
|
-
return dateFormatter.stringToDateInstance(dateStr);
|
|
31820
|
-
}
|
|
31821
|
-
|
|
31822
|
-
/**
|
|
31823
|
-
* Internal setter for readonly date object properties.
|
|
31824
|
-
* @private
|
|
31825
|
-
* @param {'valueObject'|'minObject'|'maxObject'} propertyName - Public object property name.
|
|
31826
|
-
* @param {Date|undefined} propertyValue - Value to assign.
|
|
31827
|
-
* @returns {void}
|
|
31828
|
-
*/
|
|
31829
|
-
setDateObjectProperty(propertyName, propertyValue) {
|
|
31830
|
-
const internalPropertyName = `_${propertyName}`;
|
|
31831
|
-
const previousValue = this[internalPropertyName];
|
|
31832
|
-
|
|
31833
|
-
if (previousValue === propertyValue) {
|
|
31834
|
-
return;
|
|
31835
|
-
}
|
|
31836
|
-
|
|
31837
|
-
this[internalPropertyName] = propertyValue;
|
|
31838
|
-
this.requestUpdate(propertyName, previousValue);
|
|
31911
|
+
return this.max && dateFormatter.isValidDate(this.max) ? dateFormatter.stringToDateInstance(this.max) : undefined;
|
|
31839
31912
|
}
|
|
31840
31913
|
|
|
31841
31914
|
connectedCallback() {
|
|
@@ -31864,7 +31937,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31864
31937
|
format: this.format
|
|
31865
31938
|
});
|
|
31866
31939
|
this.configureDataForType();
|
|
31867
|
-
this.syncDateValues();
|
|
31868
31940
|
}
|
|
31869
31941
|
|
|
31870
31942
|
disconnectedCallback() {
|
|
@@ -31903,7 +31975,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
31903
31975
|
this.setCustomHelpTextMessage();
|
|
31904
31976
|
this.configureAutoFormatting();
|
|
31905
31977
|
this.configureDataForType();
|
|
31906
|
-
this.syncDateValues();
|
|
31907
31978
|
}
|
|
31908
31979
|
|
|
31909
31980
|
/**
|
|
@@ -32047,8 +32118,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
32047
32118
|
this.configureDataForType();
|
|
32048
32119
|
}
|
|
32049
32120
|
|
|
32050
|
-
this.syncDateValues(changedProperties);
|
|
32051
|
-
|
|
32052
32121
|
if (changedProperties.has('value')) {
|
|
32053
32122
|
if (this.value && this.value.length > 0) {
|
|
32054
32123
|
this.hasValue = true;
|
|
@@ -32070,14 +32139,14 @@ class BaseInput extends AuroElement$1 {
|
|
|
32070
32139
|
|
|
32071
32140
|
if (formattedValue !== this.inputElement.value) {
|
|
32072
32141
|
this.skipNextProgrammaticInputEvent = true;
|
|
32073
|
-
if (this.maskInstance && this.type
|
|
32142
|
+
if (this.maskInstance && this.type !== 'date') {
|
|
32074
32143
|
// Route through the mask so its _value and el.value stay in lock-step
|
|
32075
32144
|
// (set value calls updateControl which writes el.value = displayValue).
|
|
32076
32145
|
// Writing el.value directly leaves the mask thinking displayValue is
|
|
32077
|
-
// stale; _saveSelection on the next focus/click then warns.
|
|
32078
|
-
//
|
|
32079
|
-
//
|
|
32080
|
-
//
|
|
32146
|
+
// stale; _saveSelection on the next focus/click then warns. Date is
|
|
32147
|
+
// excluded because its formattedValue can be raw ISO when the calendar
|
|
32148
|
+
// is invalid, and re-masking through mm/dd/yyyy would truncate it and
|
|
32149
|
+
// flip validity from patternMismatch to tooShort.
|
|
32081
32150
|
this.maskInstance.value = formattedValue || '';
|
|
32082
32151
|
} else if (formattedValue) {
|
|
32083
32152
|
this.inputElement.value = formattedValue;
|
|
@@ -32119,120 +32188,65 @@ class BaseInput extends AuroElement$1 {
|
|
|
32119
32188
|
}));
|
|
32120
32189
|
}
|
|
32121
32190
|
|
|
32122
|
-
|
|
32123
|
-
/**
|
|
32124
|
-
* Synchronizes the ISO string values and Date object representations for date-related properties.
|
|
32125
|
-
* This keeps the model and display values aligned when either side changes.
|
|
32126
|
-
*
|
|
32127
|
-
* When a full date format is in use, this method updates `value`, `min`, and `max` from their corresponding
|
|
32128
|
-
* Date objects or vice versa, based on which properties have changed. It only runs when the current configuration
|
|
32129
|
-
* represents a full year/month/day date format.
|
|
32130
|
-
*
|
|
32131
|
-
* @param {Map<string, unknown>|undefined} [changedProperties=undefined] - Optional map of changed properties used to limit which values are synchronized.
|
|
32132
|
-
* @returns {void}
|
|
32133
|
-
* @private
|
|
32134
|
-
*/
|
|
32135
|
-
syncDateValues(changedProperties = undefined) {
|
|
32136
|
-
if (!this.util.isFullDateFormat(this.type, this.format)) {
|
|
32137
|
-
return;
|
|
32138
|
-
}
|
|
32139
|
-
|
|
32140
|
-
this.syncSingleDateValue(changedProperties, 'valueObject', 'value');
|
|
32141
|
-
this.syncSingleDateValue(changedProperties, 'minObject', 'min');
|
|
32142
|
-
this.syncSingleDateValue(changedProperties, 'maxObject', 'max');
|
|
32143
|
-
}
|
|
32144
|
-
|
|
32145
|
-
/**
|
|
32146
|
-
* Synchronizes one date object/string property pair.
|
|
32147
|
-
* @private
|
|
32148
|
-
* @param {Map<string, unknown>|undefined} changedProperties - Map of changed properties from Lit.
|
|
32149
|
-
* @param {string} objectProperty - Date object property name.
|
|
32150
|
-
* @param {string} valueProperty - ISO string property name.
|
|
32151
|
-
* @returns {void}
|
|
32152
|
-
*/
|
|
32153
|
-
syncSingleDateValue(changedProperties, objectProperty, valueProperty) {
|
|
32154
|
-
const objectPropertyChanged = !changedProperties || changedProperties.has(objectProperty);
|
|
32155
|
-
|
|
32156
|
-
// objectProperty wins over valueProperty when both changed
|
|
32157
|
-
if (objectPropertyChanged && this[objectProperty]) {
|
|
32158
|
-
this[valueProperty] = dateFormatter.toISOFormatString(this[objectProperty]);
|
|
32159
|
-
return;
|
|
32160
|
-
}
|
|
32161
|
-
|
|
32162
|
-
const valuePropertyChanged = !changedProperties || changedProperties.has(valueProperty);
|
|
32163
|
-
if (!valuePropertyChanged) {
|
|
32164
|
-
return;
|
|
32165
|
-
}
|
|
32166
|
-
|
|
32167
|
-
// 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)
|
|
32168
|
-
if (
|
|
32169
|
-
changedProperties &&
|
|
32170
|
-
valueProperty === 'value' &&
|
|
32171
|
-
changedProperties.get('value') === undefined &&
|
|
32172
|
-
this[objectProperty] instanceof Date &&
|
|
32173
|
-
this[valueProperty] === dateFormatter.toISOFormatString(this[objectProperty])
|
|
32174
|
-
) {
|
|
32175
|
-
return;
|
|
32176
|
-
}
|
|
32177
|
-
|
|
32178
|
-
if (dateFormatter.isValidDate(this[valueProperty])) {
|
|
32179
|
-
this.setDateObjectProperty(objectProperty, dateFormatter.stringToDateInstance(this[valueProperty]));
|
|
32180
|
-
} else {
|
|
32181
|
-
this.setDateObjectProperty(objectProperty, undefined);
|
|
32182
|
-
}
|
|
32183
|
-
}
|
|
32184
|
-
|
|
32185
32191
|
/**
|
|
32186
32192
|
* Sets up IMasks and logic based on auto-formatting requirements.
|
|
32187
32193
|
* @private
|
|
32188
32194
|
* @returns {void}
|
|
32189
32195
|
*/
|
|
32190
32196
|
configureAutoFormatting() {
|
|
32191
|
-
//
|
|
32192
|
-
//
|
|
32193
|
-
//
|
|
32194
|
-
//
|
|
32197
|
+
// _configuringMask gates two things: external re-entry into this method
|
|
32198
|
+
// while setup is mid-flight (from property changes that call back here),
|
|
32199
|
+
// and the accept/complete listeners below — both need to ignore the mask
|
|
32200
|
+
// events fired by our own value-restore step.
|
|
32195
32201
|
if (this._configuringMask) return;
|
|
32196
32202
|
this._configuringMask = true;
|
|
32197
32203
|
try {
|
|
32204
|
+
// Destroy any prior mask so IMask can attach fresh under the new format.
|
|
32205
|
+
// Null the reference too — if the new maskOptions.mask is falsy (e.g.
|
|
32206
|
+
// type switched from credit-card to text) the IMask() reassignment
|
|
32207
|
+
// below is skipped, and downstream writes at line ~823 would otherwise
|
|
32208
|
+
// route through the destroyed instance.
|
|
32198
32209
|
if (this.maskInstance) {
|
|
32199
32210
|
this.maskInstance.destroy();
|
|
32211
|
+
this.maskInstance = null;
|
|
32200
32212
|
}
|
|
32201
32213
|
|
|
32202
|
-
// Pass new format to util
|
|
32203
32214
|
this.util.updateFormat(this.format);
|
|
32204
32215
|
|
|
32205
32216
|
const maskOptions = this.util.getMaskOptions(this.type, this.format);
|
|
32206
32217
|
|
|
32207
32218
|
if (this.inputElement && maskOptions.mask) {
|
|
32208
|
-
|
|
32209
|
-
//
|
|
32210
|
-
//
|
|
32211
|
-
//
|
|
32212
|
-
// When the format changes (e.g. locale switch) and we have a valid ISO
|
|
32213
|
-
// model value, compute the display string for the NEW format instead of
|
|
32214
|
-
// re-using the old display string, which may be invalid in the new mask.
|
|
32219
|
+
// Capture the current display so it can be re-applied after IMask
|
|
32220
|
+
// attaches. The restore at the bottom goes through maskInstance.value
|
|
32221
|
+
// (not inputElement.value directly) so the mask's internal state and
|
|
32222
|
+
// the input's displayed text stay in lock-step.
|
|
32215
32223
|
let existingValue = this.inputElement.value;
|
|
32224
|
+
|
|
32225
|
+
// Format-change case (e.g. locale switch): existingValue is the OLD
|
|
32226
|
+
// mask's display string and may not parse under the new mask. When
|
|
32227
|
+
// we have a valid date model, rebuild the display from valueObject
|
|
32228
|
+
// (the canonical source) using the new mask's format function.
|
|
32216
32229
|
if (
|
|
32217
32230
|
this.util.isFullDateFormat(this.type, this.format) &&
|
|
32218
32231
|
this.value &&
|
|
32219
|
-
|
|
32220
|
-
this.valueObject instanceof Date &&
|
|
32221
|
-
!Number.isNaN(this.valueObject.getTime()) &&
|
|
32232
|
+
this.valueObject &&
|
|
32222
32233
|
typeof maskOptions.format === 'function'
|
|
32223
32234
|
) {
|
|
32224
32235
|
existingValue = maskOptions.format(this.valueObject);
|
|
32225
32236
|
}
|
|
32226
32237
|
|
|
32238
|
+
// Clear before IMask attaches so the constructor seeds an empty
|
|
32239
|
+
// internal value. Otherwise IMask reads the stale unmasked string
|
|
32240
|
+
// and emits a spurious 'accept' before the restore below runs.
|
|
32227
32241
|
this.skipNextProgrammaticInputEvent = true;
|
|
32228
32242
|
this.inputElement.value = '';
|
|
32229
32243
|
|
|
32230
32244
|
this.maskInstance = IMask(this.inputElement, maskOptions);
|
|
32231
32245
|
|
|
32246
|
+
// Mask fires 'accept' on every value change, including the restore
|
|
32247
|
+
// step below. Skip events fired during configureAutoFormatting so
|
|
32248
|
+
// we don't overwrite a value the parent just pushed.
|
|
32232
32249
|
this.maskInstance.on('accept', () => {
|
|
32233
|
-
// Suppress propagation during configureAutoFormatting's own value-restoration
|
|
32234
|
-
// (line below) — the mask emits 'accept' on every value-set, including ours,
|
|
32235
|
-
// and we don't want to overwrite a value the parent just pushed.
|
|
32236
32250
|
if (this._configuringMask) return;
|
|
32237
32251
|
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
32238
32252
|
if (this.type === "date") {
|
|
@@ -32240,6 +32254,8 @@ class BaseInput extends AuroElement$1 {
|
|
|
32240
32254
|
}
|
|
32241
32255
|
});
|
|
32242
32256
|
|
|
32257
|
+
// Mask fires 'complete' on the restore step below for any value that
|
|
32258
|
+
// happens to be a complete match. Same setup-suppression as 'accept'.
|
|
32243
32259
|
this.maskInstance.on('complete', () => {
|
|
32244
32260
|
if (this._configuringMask) return;
|
|
32245
32261
|
this.value = this.util.toModelValue(this.maskInstance.value, this.format);
|
|
@@ -32248,7 +32264,9 @@ class BaseInput extends AuroElement$1 {
|
|
|
32248
32264
|
}
|
|
32249
32265
|
});
|
|
32250
32266
|
|
|
32251
|
-
//
|
|
32267
|
+
// Write existingValue through the mask (not the input directly) so
|
|
32268
|
+
// the mask reformats it under the new rules and keeps its internal
|
|
32269
|
+
// _value aligned with the input's displayed text.
|
|
32252
32270
|
if (existingValue) {
|
|
32253
32271
|
this.maskInstance.value = existingValue;
|
|
32254
32272
|
}
|
|
@@ -32342,9 +32360,9 @@ class BaseInput extends AuroElement$1 {
|
|
|
32342
32360
|
// the gated types currently support it, since the list is a public
|
|
32343
32361
|
// property a consumer could mutate.
|
|
32344
32362
|
if (this.setSelectionInputTypes.includes(this.type)) {
|
|
32345
|
-
let selectionStart;
|
|
32363
|
+
let selectionStart = null;
|
|
32346
32364
|
try {
|
|
32347
|
-
selectionStart = this.inputElement
|
|
32365
|
+
({ selectionStart } = this.inputElement);
|
|
32348
32366
|
} catch (error) { // eslint-disable-line no-unused-vars
|
|
32349
32367
|
return;
|
|
32350
32368
|
}
|
|
@@ -32448,7 +32466,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
32448
32466
|
*/
|
|
32449
32467
|
reset() {
|
|
32450
32468
|
this.value = undefined;
|
|
32451
|
-
this.setDateObjectProperty('valueObject', undefined);
|
|
32452
32469
|
this.validation.reset(this);
|
|
32453
32470
|
}
|
|
32454
32471
|
|
|
@@ -32457,7 +32474,6 @@ class BaseInput extends AuroElement$1 {
|
|
|
32457
32474
|
*/
|
|
32458
32475
|
clear() {
|
|
32459
32476
|
this.value = undefined;
|
|
32460
|
-
this.setDateObjectProperty('valueObject', undefined);
|
|
32461
32477
|
}
|
|
32462
32478
|
|
|
32463
32479
|
/**
|
|
@@ -32986,7 +33002,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
|
|
|
32986
33002
|
}
|
|
32987
33003
|
};
|
|
32988
33004
|
|
|
32989
|
-
var formkitVersion = '
|
|
33005
|
+
var formkitVersion = '202607011722';
|
|
32990
33006
|
|
|
32991
33007
|
// Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
|
|
32992
33008
|
// See LICENSE in the project root for license information.
|