@aurodesignsystem-dev/auro-formkit 0.0.0-pr1519.1 → 0.0.0-pr1521.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.
Files changed (49) hide show
  1. package/components/checkbox/demo/customize.min.js +2 -15
  2. package/components/checkbox/demo/getting-started.min.js +2 -15
  3. package/components/checkbox/demo/index.min.js +2 -15
  4. package/components/checkbox/dist/index.js +2 -15
  5. package/components/checkbox/dist/registered.js +2 -15
  6. package/components/combobox/demo/customize.min.js +10 -105
  7. package/components/combobox/demo/getting-started.min.js +10 -105
  8. package/components/combobox/demo/index.min.js +10 -105
  9. package/components/combobox/dist/index.js +10 -105
  10. package/components/combobox/dist/registered.js +10 -105
  11. package/components/counter/demo/customize.min.js +3 -33
  12. package/components/counter/demo/index.min.js +3 -33
  13. package/components/counter/dist/index.js +3 -33
  14. package/components/counter/dist/registered.js +3 -33
  15. package/components/datepicker/demo/customize.min.js +75 -153
  16. package/components/datepicker/demo/index.min.js +75 -153
  17. package/components/datepicker/dist/auro-calendar-cell.d.ts +14 -0
  18. package/components/datepicker/dist/auro-calendar.d.ts +12 -0
  19. package/components/datepicker/dist/index.js +75 -153
  20. package/components/datepicker/dist/registered.js +75 -153
  21. package/components/dropdown/demo/customize.min.js +1 -18
  22. package/components/dropdown/demo/getting-started.min.js +1 -18
  23. package/components/dropdown/demo/index.min.js +1 -18
  24. package/components/dropdown/dist/index.js +1 -18
  25. package/components/dropdown/dist/registered.js +1 -18
  26. package/components/form/demo/customize.min.js +102 -441
  27. package/components/form/demo/getting-started.min.js +102 -441
  28. package/components/form/demo/index.min.js +102 -441
  29. package/components/form/demo/registerDemoDeps.min.js +102 -441
  30. package/components/input/demo/api.md +57 -58
  31. package/components/input/demo/customize.min.js +7 -72
  32. package/components/input/demo/getting-started.min.js +7 -72
  33. package/components/input/demo/index.min.js +7 -72
  34. package/components/input/dist/base-input.d.ts +3 -9
  35. package/components/input/dist/index.js +7 -72
  36. package/components/input/dist/registered.js +7 -72
  37. package/components/input/dist/utilities.d.ts +0 -9
  38. package/components/radio/demo/customize.min.js +2 -15
  39. package/components/radio/demo/getting-started.min.js +2 -15
  40. package/components/radio/demo/index.min.js +2 -15
  41. package/components/radio/dist/index.js +2 -15
  42. package/components/radio/dist/registered.js +2 -15
  43. package/components/select/demo/customize.min.js +3 -48
  44. package/components/select/demo/getting-started.min.js +3 -48
  45. package/components/select/demo/index.min.js +3 -48
  46. package/components/select/dist/index.js +3 -48
  47. package/components/select/dist/registered.js +3 -48
  48. package/custom-elements.json +45 -78
  49. package/package.json +1 -1
@@ -559,21 +559,8 @@ 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.
563
- // For partial date formats, valueObject is never populated; validate them directly.
562
+ // Validate that the date passed was the correct format and is a valid date
564
563
  if (elem.value && !elem.valueObject) {
565
- const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
566
-
567
- if (isPartialDateFormat) {
568
- if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
569
- elem.validity = 'patternMismatch';
570
- elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
571
- }
572
- // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
573
- return;
574
- }
575
-
576
- // Full date format with no valueObject means the value is not a valid calendar date.
577
564
  elem.validity = 'patternMismatch';
578
565
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
579
566
  return;
@@ -10426,11 +10413,10 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10426
10413
  const dateFormat = format || this.overrideFormat || pattern || 'mm/dd/yyyy';
10427
10414
 
10428
10415
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
10429
- const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
10430
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
10416
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
10431
10417
  return {
10432
10418
  mask: IMask$1.MaskedRange,
10433
- from: fromValue,
10419
+ from: 1,
10434
10420
  to: maxValue,
10435
10421
  lazy: true,
10436
10422
  placeholderChar: '',
@@ -10438,8 +10424,7 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10438
10424
  return value.toString().padStart(dateFormat.length, '0');
10439
10425
  },
10440
10426
  parse(str) {
10441
- const num = parseInt(str, 10);
10442
- return isNaN(num) ? null : num;
10427
+ return parseInt(str) || null;
10443
10428
  }
10444
10429
  };
10445
10430
  }
@@ -10503,49 +10488,6 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10503
10488
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
10504
10489
  }
10505
10490
 
10506
- /**
10507
- * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
10508
- * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
10509
- * a date-fns parse + round-trip to confirm both validity and exact formatting.
10510
- * @param {string} value - The user-facing display value.
10511
- * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
10512
- * @returns {boolean}
10513
- */
10514
- isValidPartialDate(value, format) {
10515
- if (!value || !format) {
10516
- return false;
10517
- }
10518
- const normalizedFormat = format.toLowerCase();
10519
-
10520
- if (normalizedFormat === 'dd') {
10521
- const num = Number(value);
10522
- return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
10523
- }
10524
- if (normalizedFormat === 'yy') {
10525
- const num = Number(value);
10526
- return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
10527
- }
10528
- if (normalizedFormat === 'yyyy') {
10529
- const num = Number(value);
10530
- return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
10531
- }
10532
-
10533
- const dateFnsMask = this.toDateFnsMask(normalizedFormat);
10534
- // Use the 1st of the current month as the reference so that formats
10535
- // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
10536
- const referenceDate = new Date();
10537
- referenceDate.setDate(1);
10538
- const parsed = parse$1(value, dateFnsMask, referenceDate);
10539
- if (!isValid$1(parsed) || format$1(parsed, dateFnsMask) !== value) {
10540
- return false;
10541
- }
10542
- if (normalizedFormat.includes('yyyy')) {
10543
- const year = parsed.getFullYear();
10544
- return year >= 1900 && year <= 2100;
10545
- }
10546
- return true;
10547
- }
10548
-
10549
10491
  /**
10550
10492
  * Converts a display string to its model value.
10551
10493
  * For full date formats, converts the display string to an ISO date string.
@@ -12500,6 +12442,33 @@ class AuroCalendarCell extends i$1 {
12500
12442
  btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
12501
12443
  }
12502
12444
 
12445
+ /**
12446
+ * Re-applies the committed-range classes (inRange / rangeDepartDate /
12447
+ * rangeReturnDate) imperatively from the current dateFrom/dateTo. Used
12448
+ * after month navigation flushes: classMap in `renderCellButton` tracks
12449
+ * its own previous state, so a preceding imperative `classList.remove`
12450
+ * (from `clearRangePreviewClasses`) leaves classMap thinking the class
12451
+ * is still applied. On re-render with the same class-value, classMap
12452
+ * emits no delta and the class stays missing in the DOM. Re-toggling
12453
+ * imperatively resyncs the DOM with the committed range.
12454
+ * @param {Number} dateFrom - Depart timestamp (seconds).
12455
+ * @param {Number} dateTo - Return timestamp (seconds).
12456
+ * @returns {void}
12457
+ */
12458
+ applyCommittedRangeClasses(dateFrom, dateTo) {
12459
+ const btn = this._cachedButton;
12460
+ if (!btn || !this.day || !this.day.date) return;
12461
+
12462
+ const dayDate = new Date(this.day.date * 1000).setHours(0, 0, 0, 0) / 1000;
12463
+ const isInRange = dayDate > dateFrom && dayDate < dateTo;
12464
+ const isDepart = dayDate === dateFrom;
12465
+ const isReturn = dayDate === dateTo;
12466
+
12467
+ btn.classList.toggle('inRange', isInRange);
12468
+ btn.classList.toggle('rangeDepartDate', isDepart);
12469
+ btn.classList.toggle('rangeReturnDate', isReturn);
12470
+ }
12471
+
12503
12472
  renderCellButton() {
12504
12473
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12505
12474
  const blackout = this.isBlackout();
@@ -13650,7 +13619,7 @@ class AuroBibtemplate extends i$1 {
13650
13619
  }
13651
13620
  }
13652
13621
 
13653
- var formkitVersion$2 = '202607011914';
13622
+ var formkitVersion$2 = '202607011730';
13654
13623
 
13655
13624
  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}
13656
13625
  `,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}}
@@ -13995,6 +13964,11 @@ class AuroCalendar extends RangeDatepicker {
13995
13964
  if (!opts.skipActiveUpdate) {
13996
13965
  this.updateActiveCellForVisibleMonth();
13997
13966
  }
13967
+ // clearRangePreview above strips classMap-managed range classes from
13968
+ // the DOM; classMap's private state still thinks they're applied, so
13969
+ // it won't re-add them on the post-nav re-render. Re-apply imperatively
13970
+ // after both months and their cell button caches have settled.
13971
+ this._afterMonthRender(() => this.refreshCommittedRangeClasses());
13998
13972
  this.announceMonthChange();
13999
13973
  }
14000
13974
 
@@ -14013,6 +13987,11 @@ class AuroCalendar extends RangeDatepicker {
14013
13987
  if (!opts.skipActiveUpdate) {
14014
13988
  this.updateActiveCellForVisibleMonth();
14015
13989
  }
13990
+ // clearRangePreview above strips classMap-managed range classes from
13991
+ // the DOM; classMap's private state still thinks they're applied, so
13992
+ // it won't re-add them on the post-nav re-render. Re-apply imperatively
13993
+ // after both months and their cell button caches have settled.
13994
+ this._afterMonthRender(() => this.refreshCommittedRangeClasses());
14016
13995
  this.announceMonthChange();
14017
13996
  }
14018
13997
 
@@ -15108,6 +15087,31 @@ class AuroCalendar extends RangeDatepicker {
15108
15087
  });
15109
15088
  }
15110
15089
 
15090
+ /**
15091
+ * Re-applies the committed-range classes across every visible cell after
15092
+ * a month navigation. classMap in the cell tracks its own previous state:
15093
+ * once `clearRangePreview({ force: true })` strips `inRange`/`rangeDepartDate`
15094
+ * imperatively before the re-render, classMap's next diff sees the same
15095
+ * class-value it emitted before and produces no delta, leaving the DOM
15096
+ * without the classes even though a full range is committed. Re-applying
15097
+ * imperatively resyncs the two months' cells with `dateFrom`/`dateTo`.
15098
+ * @private
15099
+ * @returns {void}
15100
+ */
15101
+ refreshCommittedRangeClasses() {
15102
+ if (this.noRange || !this.dateFrom || !this.dateTo) {
15103
+ return;
15104
+ }
15105
+
15106
+ const parsedDateFrom = parseInt(this.dateFrom, 10);
15107
+ const parsedDateTo = parseInt(this.dateTo, 10);
15108
+ const allCells = this.getAllFocusableCells();
15109
+
15110
+ allCells.forEach((cell) => {
15111
+ cell.applyCommittedRangeClasses(parsedDateFrom, parsedDateTo);
15112
+ });
15113
+ }
15114
+
15111
15115
  /**
15112
15116
  * Overrides the base class handler to prevent setting `this.hoveredDate`
15113
15117
  * as a reactive property. Instead, handles the range preview imperatively.
@@ -19426,7 +19430,7 @@ let AuroHelpText$2 = class AuroHelpText extends i$1 {
19426
19430
  }
19427
19431
  };
19428
19432
 
19429
- var formkitVersion$1 = '202607011914';
19433
+ var formkitVersion$1 = '202607011730';
19430
19434
 
19431
19435
  let AuroElement$2 = class AuroElement extends i$1 {
19432
19436
  static get properties() {
@@ -20178,23 +20182,6 @@ class AuroDropdown extends AuroElement$2 {
20178
20182
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
20179
20183
  this.trigger.focus();
20180
20184
  }
20181
-
20182
-
20183
- if (!this.isPopoverVisible) {
20184
- // wait til the bib gets fully closed and rendered
20185
- setTimeout(() => {
20186
- // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
20187
- // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
20188
- if (this.isPopoverVisible ||
20189
- // eslint-disable-next-line no-extra-parens
20190
- (!this.bibContent?.matches(':focus-within') &&
20191
- document.activeElement !== document.body)) {
20192
- return;
20193
- }
20194
- // Restore focus to the trigger.
20195
- this.trigger.focus();
20196
- });
20197
- }
20198
20185
  }
20199
20186
 
20200
20187
  firstUpdated() {
@@ -25127,21 +25114,8 @@ class AuroFormValidation {
25127
25114
  return;
25128
25115
  }
25129
25116
 
25130
- // Validate that the date passed was the correct format and is a valid date.
25131
- // For partial date formats, valueObject is never populated; validate them directly.
25117
+ // Validate that the date passed was the correct format and is a valid date
25132
25118
  if (elem.value && !elem.valueObject) {
25133
- const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
25134
-
25135
- if (isPartialDateFormat) {
25136
- if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
25137
- elem.validity = 'patternMismatch';
25138
- elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
25139
- }
25140
- // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
25141
- return;
25142
- }
25143
-
25144
- // Full date format with no valueObject means the value is not a valid calendar date.
25145
25119
  elem.validity = 'patternMismatch';
25146
25120
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
25147
25121
  return;
@@ -31071,11 +31045,10 @@ class AuroInputUtilities {
31071
31045
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
31072
31046
 
31073
31047
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
31074
- const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
31075
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
31048
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
31076
31049
  return {
31077
31050
  mask: IMask.MaskedRange,
31078
- from: fromValue,
31051
+ from: 1,
31079
31052
  to: maxValue,
31080
31053
  lazy: true,
31081
31054
  placeholderChar: '',
@@ -31083,8 +31056,7 @@ class AuroInputUtilities {
31083
31056
  return value.toString().padStart(dateFormat.length, '0');
31084
31057
  },
31085
31058
  parse(str) {
31086
- const num = parseInt(str, 10);
31087
- return isNaN(num) ? null : num;
31059
+ return parseInt(str) || null;
31088
31060
  }
31089
31061
  };
31090
31062
  }
@@ -31148,49 +31120,6 @@ class AuroInputUtilities {
31148
31120
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
31149
31121
  }
31150
31122
 
31151
- /**
31152
- * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
31153
- * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
31154
- * a date-fns parse + round-trip to confirm both validity and exact formatting.
31155
- * @param {string} value - The user-facing display value.
31156
- * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
31157
- * @returns {boolean}
31158
- */
31159
- isValidPartialDate(value, format$1) {
31160
- if (!value || !format$1) {
31161
- return false;
31162
- }
31163
- const normalizedFormat = format$1.toLowerCase();
31164
-
31165
- if (normalizedFormat === 'dd') {
31166
- const num = Number(value);
31167
- return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
31168
- }
31169
- if (normalizedFormat === 'yy') {
31170
- const num = Number(value);
31171
- return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
31172
- }
31173
- if (normalizedFormat === 'yyyy') {
31174
- const num = Number(value);
31175
- return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
31176
- }
31177
-
31178
- const dateFnsMask = this.toDateFnsMask(normalizedFormat);
31179
- // Use the 1st of the current month as the reference so that formats
31180
- // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
31181
- const referenceDate = new Date();
31182
- referenceDate.setDate(1);
31183
- const parsed = parse(value, dateFnsMask, referenceDate);
31184
- if (!isValid(parsed) || format(parsed, dateFnsMask) !== value) {
31185
- return false;
31186
- }
31187
- if (normalizedFormat.includes('yyyy')) {
31188
- const year = parsed.getFullYear();
31189
- return year >= 1900 && year <= 2100;
31190
- }
31191
- return true;
31192
- }
31193
-
31194
31123
  /**
31195
31124
  * Converts a display string to its model value.
31196
31125
  * For full date formats, converts the display string to an ISO date string.
@@ -31810,13 +31739,6 @@ class BaseInput extends AuroElement$1 {
31810
31739
  type: String
31811
31740
  },
31812
31741
 
31813
- /**
31814
- * Custom help text message to display when validity = `patternMismatch`.
31815
- */
31816
- setCustomValidityPatternMismatch: {
31817
- type: String
31818
- },
31819
-
31820
31742
  /**
31821
31743
  * Custom help text message to display when validity = `rangeOverflow`.
31822
31744
  */
@@ -31887,7 +31809,7 @@ class BaseInput extends AuroElement$1 {
31887
31809
 
31888
31810
  /**
31889
31811
  * Populates the `type` attribute on the input.
31890
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
31812
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
31891
31813
  * @default 'text'
31892
31814
  */
31893
31815
  type: {
@@ -31912,7 +31834,7 @@ class BaseInput extends AuroElement$1 {
31912
31834
 
31913
31835
  /**
31914
31836
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
31915
- * For `date` type inputs using a full date format (year/month/day), the `value` should be ISO (YYYY-MM-DD). Partial date formats use the display format.
31837
+ * The format for this property should be ISO for `date` type inputs.
31916
31838
  */
31917
31839
  value: {
31918
31840
  type: String
@@ -33035,7 +32957,7 @@ let AuroHelpText$1 = class AuroHelpText extends i$1 {
33035
32957
  }
33036
32958
  };
33037
32959
 
33038
- var formkitVersion = '202607011914';
32960
+ var formkitVersion = '202607011730';
33039
32961
 
33040
32962
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
33041
32963
  // See LICENSE in the project root for license information.
@@ -282,6 +282,20 @@ export class AuroCalendarCell extends LitElement {
282
282
  * @returns {void}
283
283
  */
284
284
  clearRangePreviewClasses(): void;
285
+ /**
286
+ * Re-applies the committed-range classes (inRange / rangeDepartDate /
287
+ * rangeReturnDate) imperatively from the current dateFrom/dateTo. Used
288
+ * after month navigation flushes: classMap in `renderCellButton` tracks
289
+ * its own previous state, so a preceding imperative `classList.remove`
290
+ * (from `clearRangePreviewClasses`) leaves classMap thinking the class
291
+ * is still applied. On re-render with the same class-value, classMap
292
+ * emits no delta and the class stays missing in the DOM. Re-toggling
293
+ * imperatively resyncs the DOM with the committed range.
294
+ * @param {Number} dateFrom - Depart timestamp (seconds).
295
+ * @param {Number} dateTo - Return timestamp (seconds).
296
+ * @returns {void}
297
+ */
298
+ applyCommittedRangeClasses(dateFrom: number, dateTo: number): void;
285
299
  renderCellButton(): import("lit-html").TemplateResult;
286
300
  render(): import("lit-html").TemplateResult;
287
301
  }
@@ -462,6 +462,18 @@ export class AuroCalendar extends RangeDatepicker {
462
462
  * @returns {void}
463
463
  */
464
464
  private clearRangePreview;
465
+ /**
466
+ * Re-applies the committed-range classes across every visible cell after
467
+ * a month navigation. classMap in the cell tracks its own previous state:
468
+ * once `clearRangePreview({ force: true })` strips `inRange`/`rangeDepartDate`
469
+ * imperatively before the re-render, classMap's next diff sees the same
470
+ * class-value it emitted before and produces no delta, leaving the DOM
471
+ * without the classes even though a full range is committed. Re-applying
472
+ * imperatively resyncs the two months' cells with `dateFrom`/`dateTo`.
473
+ * @private
474
+ * @returns {void}
475
+ */
476
+ private refreshCommittedRangeClasses;
465
477
  /**
466
478
  * Overrides the base class handler to prevent setting `this.hoveredDate`
467
479
  * as a reactive property. Instead, handles the range preview imperatively.