@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
@@ -542,21 +542,8 @@ 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.
546
- // For partial date formats, valueObject is never populated; validate them directly.
545
+ // Validate that the date passed was the correct format and is a valid date
547
546
  if (elem.value && !elem.valueObject) {
548
- const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
549
-
550
- if (isPartialDateFormat) {
551
- if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
552
- elem.validity = 'patternMismatch';
553
- elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
554
- }
555
- // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
556
- return;
557
- }
558
-
559
- // Full date format with no valueObject means the value is not a valid calendar date.
560
547
  elem.validity = 'patternMismatch';
561
548
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
562
549
  return;
@@ -10409,11 +10396,10 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10409
10396
  const dateFormat = format || this.overrideFormat || pattern || 'mm/dd/yyyy';
10410
10397
 
10411
10398
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
10412
- const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
10413
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
10399
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
10414
10400
  return {
10415
10401
  mask: IMask$1.MaskedRange,
10416
- from: fromValue,
10402
+ from: 1,
10417
10403
  to: maxValue,
10418
10404
  lazy: true,
10419
10405
  placeholderChar: '',
@@ -10421,8 +10407,7 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10421
10407
  return value.toString().padStart(dateFormat.length, '0');
10422
10408
  },
10423
10409
  parse(str) {
10424
- const num = parseInt(str, 10);
10425
- return isNaN(num) ? null : num;
10410
+ return parseInt(str) || null;
10426
10411
  }
10427
10412
  };
10428
10413
  }
@@ -10486,49 +10471,6 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10486
10471
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
10487
10472
  }
10488
10473
 
10489
- /**
10490
- * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
10491
- * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
10492
- * a date-fns parse + round-trip to confirm both validity and exact formatting.
10493
- * @param {string} value - The user-facing display value.
10494
- * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
10495
- * @returns {boolean}
10496
- */
10497
- isValidPartialDate(value, format) {
10498
- if (!value || !format) {
10499
- return false;
10500
- }
10501
- const normalizedFormat = format.toLowerCase();
10502
-
10503
- if (normalizedFormat === 'dd') {
10504
- const num = Number(value);
10505
- return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
10506
- }
10507
- if (normalizedFormat === 'yy') {
10508
- const num = Number(value);
10509
- return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
10510
- }
10511
- if (normalizedFormat === 'yyyy') {
10512
- const num = Number(value);
10513
- return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
10514
- }
10515
-
10516
- const dateFnsMask = this.toDateFnsMask(normalizedFormat);
10517
- // Use the 1st of the current month as the reference so that formats
10518
- // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
10519
- const referenceDate = new Date();
10520
- referenceDate.setDate(1);
10521
- const parsed = parse$1(value, dateFnsMask, referenceDate);
10522
- if (!isValid$1(parsed) || format$1(parsed, dateFnsMask) !== value) {
10523
- return false;
10524
- }
10525
- if (normalizedFormat.includes('yyyy')) {
10526
- const year = parsed.getFullYear();
10527
- return year >= 1900 && year <= 2100;
10528
- }
10529
- return true;
10530
- }
10531
-
10532
10474
  /**
10533
10475
  * Converts a display string to its model value.
10534
10476
  * For full date formats, converts the display string to an ISO date string.
@@ -12458,6 +12400,33 @@ class AuroCalendarCell extends LitElement {
12458
12400
  btn.classList.remove('inRange', 'lastHoveredDate', 'rangeDepartDate');
12459
12401
  }
12460
12402
 
12403
+ /**
12404
+ * Re-applies the committed-range classes (inRange / rangeDepartDate /
12405
+ * rangeReturnDate) imperatively from the current dateFrom/dateTo. Used
12406
+ * after month navigation flushes: classMap in `renderCellButton` tracks
12407
+ * its own previous state, so a preceding imperative `classList.remove`
12408
+ * (from `clearRangePreviewClasses`) leaves classMap thinking the class
12409
+ * is still applied. On re-render with the same class-value, classMap
12410
+ * emits no delta and the class stays missing in the DOM. Re-toggling
12411
+ * imperatively resyncs the DOM with the committed range.
12412
+ * @param {Number} dateFrom - Depart timestamp (seconds).
12413
+ * @param {Number} dateTo - Return timestamp (seconds).
12414
+ * @returns {void}
12415
+ */
12416
+ applyCommittedRangeClasses(dateFrom, dateTo) {
12417
+ const btn = this._cachedButton;
12418
+ if (!btn || !this.day || !this.day.date) return;
12419
+
12420
+ const dayDate = new Date(this.day.date * 1000).setHours(0, 0, 0, 0) / 1000;
12421
+ const isInRange = dayDate > dateFrom && dayDate < dateTo;
12422
+ const isDepart = dayDate === dateFrom;
12423
+ const isReturn = dayDate === dateTo;
12424
+
12425
+ btn.classList.toggle('inRange', isInRange);
12426
+ btn.classList.toggle('rangeDepartDate', isDepart);
12427
+ btn.classList.toggle('rangeReturnDate', isReturn);
12428
+ }
12429
+
12461
12430
  renderCellButton() {
12462
12431
  const outOfRange = this.isOutOfRange(this.day, this.min, this.max);
12463
12432
  const blackout = this.isBlackout();
@@ -13602,7 +13571,7 @@ class AuroBibtemplate extends LitElement {
13602
13571
  }
13603
13572
  }
13604
13573
 
13605
- var formkitVersion$2 = '202607011914';
13574
+ var formkitVersion$2 = '202607011730';
13606
13575
 
13607
13576
  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}
13608
13577
  `,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}}
@@ -13947,6 +13916,11 @@ class AuroCalendar extends RangeDatepicker {
13947
13916
  if (!opts.skipActiveUpdate) {
13948
13917
  this.updateActiveCellForVisibleMonth();
13949
13918
  }
13919
+ // clearRangePreview above strips classMap-managed range classes from
13920
+ // the DOM; classMap's private state still thinks they're applied, so
13921
+ // it won't re-add them on the post-nav re-render. Re-apply imperatively
13922
+ // after both months and their cell button caches have settled.
13923
+ this._afterMonthRender(() => this.refreshCommittedRangeClasses());
13950
13924
  this.announceMonthChange();
13951
13925
  }
13952
13926
 
@@ -13965,6 +13939,11 @@ class AuroCalendar extends RangeDatepicker {
13965
13939
  if (!opts.skipActiveUpdate) {
13966
13940
  this.updateActiveCellForVisibleMonth();
13967
13941
  }
13942
+ // clearRangePreview above strips classMap-managed range classes from
13943
+ // the DOM; classMap's private state still thinks they're applied, so
13944
+ // it won't re-add them on the post-nav re-render. Re-apply imperatively
13945
+ // after both months and their cell button caches have settled.
13946
+ this._afterMonthRender(() => this.refreshCommittedRangeClasses());
13968
13947
  this.announceMonthChange();
13969
13948
  }
13970
13949
 
@@ -15060,6 +15039,31 @@ class AuroCalendar extends RangeDatepicker {
15060
15039
  });
15061
15040
  }
15062
15041
 
15042
+ /**
15043
+ * Re-applies the committed-range classes across every visible cell after
15044
+ * a month navigation. classMap in the cell tracks its own previous state:
15045
+ * once `clearRangePreview({ force: true })` strips `inRange`/`rangeDepartDate`
15046
+ * imperatively before the re-render, classMap's next diff sees the same
15047
+ * class-value it emitted before and produces no delta, leaving the DOM
15048
+ * without the classes even though a full range is committed. Re-applying
15049
+ * imperatively resyncs the two months' cells with `dateFrom`/`dateTo`.
15050
+ * @private
15051
+ * @returns {void}
15052
+ */
15053
+ refreshCommittedRangeClasses() {
15054
+ if (this.noRange || !this.dateFrom || !this.dateTo) {
15055
+ return;
15056
+ }
15057
+
15058
+ const parsedDateFrom = parseInt(this.dateFrom, 10);
15059
+ const parsedDateTo = parseInt(this.dateTo, 10);
15060
+ const allCells = this.getAllFocusableCells();
15061
+
15062
+ allCells.forEach((cell) => {
15063
+ cell.applyCommittedRangeClasses(parsedDateFrom, parsedDateTo);
15064
+ });
15065
+ }
15066
+
15063
15067
  /**
15064
15068
  * Overrides the base class handler to prevent setting `this.hoveredDate`
15065
15069
  * as a reactive property. Instead, handles the range preview imperatively.
@@ -19354,7 +19358,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
19354
19358
  }
19355
19359
  };
19356
19360
 
19357
- var formkitVersion$1 = '202607011914';
19361
+ var formkitVersion$1 = '202607011730';
19358
19362
 
19359
19363
  let AuroElement$2 = class AuroElement extends LitElement {
19360
19364
  static get properties() {
@@ -20106,23 +20110,6 @@ class AuroDropdown extends AuroElement$2 {
20106
20110
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
20107
20111
  this.trigger.focus();
20108
20112
  }
20109
-
20110
-
20111
- if (!this.isPopoverVisible) {
20112
- // wait til the bib gets fully closed and rendered
20113
- setTimeout(() => {
20114
- // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
20115
- // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
20116
- if (this.isPopoverVisible ||
20117
- // eslint-disable-next-line no-extra-parens
20118
- (!this.bibContent?.matches(':focus-within') &&
20119
- document.activeElement !== document.body)) {
20120
- return;
20121
- }
20122
- // Restore focus to the trigger.
20123
- this.trigger.focus();
20124
- });
20125
- }
20126
20113
  }
20127
20114
 
20128
20115
  firstUpdated() {
@@ -25048,21 +25035,8 @@ class AuroFormValidation {
25048
25035
  return;
25049
25036
  }
25050
25037
 
25051
- // Validate that the date passed was the correct format and is a valid date.
25052
- // For partial date formats, valueObject is never populated; validate them directly.
25038
+ // Validate that the date passed was the correct format and is a valid date
25053
25039
  if (elem.value && !elem.valueObject) {
25054
- const isPartialDateFormat = elem.util && !elem.util.isFullDateFormat(elem.type, elem.format);
25055
-
25056
- if (isPartialDateFormat) {
25057
- if (!elem.util.isValidPartialDate(elem.value, elem.format)) {
25058
- elem.validity = 'patternMismatch';
25059
- elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
25060
- }
25061
- // Partial date format — validate directly and skip max/min checks since valueObject is undefined.
25062
- return;
25063
- }
25064
-
25065
- // Full date format with no valueObject means the value is not a valid calendar date.
25066
25040
  elem.validity = 'patternMismatch';
25067
25041
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
25068
25042
  return;
@@ -30992,11 +30966,10 @@ class AuroInputUtilities {
30992
30966
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
30993
30967
 
30994
30968
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
30995
- const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
30996
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
30969
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
30997
30970
  return {
30998
30971
  mask: IMask.MaskedRange,
30999
- from: fromValue,
30972
+ from: 1,
31000
30973
  to: maxValue,
31001
30974
  lazy: true,
31002
30975
  placeholderChar: '',
@@ -31004,8 +30977,7 @@ class AuroInputUtilities {
31004
30977
  return value.toString().padStart(dateFormat.length, '0');
31005
30978
  },
31006
30979
  parse(str) {
31007
- const num = parseInt(str, 10);
31008
- return isNaN(num) ? null : num;
30980
+ return parseInt(str) || null;
31009
30981
  }
31010
30982
  };
31011
30983
  }
@@ -31069,49 +31041,6 @@ class AuroInputUtilities {
31069
31041
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
31070
31042
  }
31071
31043
 
31072
- /**
31073
- * Validates a value against a partial date format (one that lacks yy/mm/dd all three).
31074
- * Day- and year-only formats (dd/yy/yyyy) are checked as integer ranges; other partial formats use
31075
- * a date-fns parse + round-trip to confirm both validity and exact formatting.
31076
- * @param {string} value - The user-facing display value.
31077
- * @param {string} format - The partial date format string (e.g. "mm/yyyy", "yyyy", "dd").
31078
- * @returns {boolean}
31079
- */
31080
- isValidPartialDate(value, format$1) {
31081
- if (!value || !format$1) {
31082
- return false;
31083
- }
31084
- const normalizedFormat = format$1.toLowerCase();
31085
-
31086
- if (normalizedFormat === 'dd') {
31087
- const num = Number(value);
31088
- return (/^\d{2}$/u).test(value) && num >= 1 && num <= 31;
31089
- }
31090
- if (normalizedFormat === 'yy') {
31091
- const num = Number(value);
31092
- return (/^\d{2}$/u).test(value) && num >= 0 && num <= 99;
31093
- }
31094
- if (normalizedFormat === 'yyyy') {
31095
- const num = Number(value);
31096
- return (/^\d{4}$/u).test(value) && num >= 1900 && num <= 2100;
31097
- }
31098
-
31099
- const dateFnsMask = this.toDateFnsMask(normalizedFormat);
31100
- // Use the 1st of the current month as the reference so that formats
31101
- // omitting a day (e.g. MM/yyyy) never roll over on days 29–31.
31102
- const referenceDate = new Date();
31103
- referenceDate.setDate(1);
31104
- const parsed = parse(value, dateFnsMask, referenceDate);
31105
- if (!isValid(parsed) || format(parsed, dateFnsMask) !== value) {
31106
- return false;
31107
- }
31108
- if (normalizedFormat.includes('yyyy')) {
31109
- const year = parsed.getFullYear();
31110
- return year >= 1900 && year <= 2100;
31111
- }
31112
- return true;
31113
- }
31114
-
31115
31044
  /**
31116
31045
  * Converts a display string to its model value.
31117
31046
  * For full date formats, converts the display string to an ISO date string.
@@ -31731,13 +31660,6 @@ class BaseInput extends AuroElement$1 {
31731
31660
  type: String
31732
31661
  },
31733
31662
 
31734
- /**
31735
- * Custom help text message to display when validity = `patternMismatch`.
31736
- */
31737
- setCustomValidityPatternMismatch: {
31738
- type: String
31739
- },
31740
-
31741
31663
  /**
31742
31664
  * Custom help text message to display when validity = `rangeOverflow`.
31743
31665
  */
@@ -31808,7 +31730,7 @@ class BaseInput extends AuroElement$1 {
31808
31730
 
31809
31731
  /**
31810
31732
  * Populates the `type` attribute on the input.
31811
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
31733
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
31812
31734
  * @default 'text'
31813
31735
  */
31814
31736
  type: {
@@ -31833,7 +31755,7 @@ class BaseInput extends AuroElement$1 {
31833
31755
 
31834
31756
  /**
31835
31757
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
31836
- * 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.
31758
+ * The format for this property should be ISO for `date` type inputs.
31837
31759
  */
31838
31760
  value: {
31839
31761
  type: String
@@ -32956,7 +32878,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
32956
32878
  }
32957
32879
  };
32958
32880
 
32959
- var formkitVersion = '202607011914';
32881
+ var formkitVersion = '202607011730';
32960
32882
 
32961
32883
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
32962
32884
  // See LICENSE in the project root for license information.
@@ -3942,7 +3942,7 @@ class AuroHelpText extends i {
3942
3942
  }
3943
3943
  }
3944
3944
 
3945
- var formkitVersion = '202607011914';
3945
+ var formkitVersion = '202607011730';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4694,23 +4694,6 @@ class AuroDropdown extends AuroElement {
4694
4694
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
4695
4695
  this.trigger.focus();
4696
4696
  }
4697
-
4698
-
4699
- if (!this.isPopoverVisible) {
4700
- // wait til the bib gets fully closed and rendered
4701
- setTimeout(() => {
4702
- // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
4703
- // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
4704
- if (this.isPopoverVisible ||
4705
- // eslint-disable-next-line no-extra-parens
4706
- (!this.bibContent?.matches(':focus-within') &&
4707
- document.activeElement !== document.body)) {
4708
- return;
4709
- }
4710
- // Restore focus to the trigger.
4711
- this.trigger.focus();
4712
- });
4713
- }
4714
4697
  }
4715
4698
 
4716
4699
  firstUpdated() {
@@ -3942,7 +3942,7 @@ class AuroHelpText extends i {
3942
3942
  }
3943
3943
  }
3944
3944
 
3945
- var formkitVersion = '202607011914';
3945
+ var formkitVersion = '202607011730';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4694,23 +4694,6 @@ class AuroDropdown extends AuroElement {
4694
4694
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
4695
4695
  this.trigger.focus();
4696
4696
  }
4697
-
4698
-
4699
- if (!this.isPopoverVisible) {
4700
- // wait til the bib gets fully closed and rendered
4701
- setTimeout(() => {
4702
- // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
4703
- // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
4704
- if (this.isPopoverVisible ||
4705
- // eslint-disable-next-line no-extra-parens
4706
- (!this.bibContent?.matches(':focus-within') &&
4707
- document.activeElement !== document.body)) {
4708
- return;
4709
- }
4710
- // Restore focus to the trigger.
4711
- this.trigger.focus();
4712
- });
4713
- }
4714
4697
  }
4715
4698
 
4716
4699
  firstUpdated() {
@@ -3969,7 +3969,7 @@ class AuroHelpText extends i {
3969
3969
  }
3970
3970
  }
3971
3971
 
3972
- var formkitVersion = '202607011914';
3972
+ var formkitVersion = '202607011730';
3973
3973
 
3974
3974
  class AuroElement extends i {
3975
3975
  static get properties() {
@@ -4721,23 +4721,6 @@ class AuroDropdown extends AuroElement {
4721
4721
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
4722
4722
  this.trigger.focus();
4723
4723
  }
4724
-
4725
-
4726
- if (!this.isPopoverVisible) {
4727
- // wait til the bib gets fully closed and rendered
4728
- setTimeout(() => {
4729
- // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
4730
- // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
4731
- if (this.isPopoverVisible ||
4732
- // eslint-disable-next-line no-extra-parens
4733
- (!this.bibContent?.matches(':focus-within') &&
4734
- document.activeElement !== document.body)) {
4735
- return;
4736
- }
4737
- // Restore focus to the trigger.
4738
- this.trigger.focus();
4739
- });
4740
- }
4741
4724
  }
4742
4725
 
4743
4726
  firstUpdated() {
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202607011914';
3877
+ var formkitVersion = '202607011730';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4626,23 +4626,6 @@ class AuroDropdown extends AuroElement {
4626
4626
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
4627
4627
  this.trigger.focus();
4628
4628
  }
4629
-
4630
-
4631
- if (!this.isPopoverVisible) {
4632
- // wait til the bib gets fully closed and rendered
4633
- setTimeout(() => {
4634
- // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
4635
- // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
4636
- if (this.isPopoverVisible ||
4637
- // eslint-disable-next-line no-extra-parens
4638
- (!this.bibContent?.matches(':focus-within') &&
4639
- document.activeElement !== document.body)) {
4640
- return;
4641
- }
4642
- // Restore focus to the trigger.
4643
- this.trigger.focus();
4644
- });
4645
- }
4646
4629
  }
4647
4630
 
4648
4631
  firstUpdated() {
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202607011914';
3877
+ var formkitVersion = '202607011730';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4626,23 +4626,6 @@ class AuroDropdown extends AuroElement {
4626
4626
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
4627
4627
  this.trigger.focus();
4628
4628
  }
4629
-
4630
-
4631
- if (!this.isPopoverVisible) {
4632
- // wait til the bib gets fully closed and rendered
4633
- setTimeout(() => {
4634
- // Skip if the bib re-opened, or if focus moved intentionally outside the dropdown (not to body).
4635
- // Restore focus to trigger when focus is still inside the bib (:focus-within) or fell to body.
4636
- if (this.isPopoverVisible ||
4637
- // eslint-disable-next-line no-extra-parens
4638
- (!this.bibContent?.matches(':focus-within') &&
4639
- document.activeElement !== document.body)) {
4640
- return;
4641
- }
4642
- // Restore focus to the trigger.
4643
- this.trigger.focus();
4644
- });
4645
- }
4646
4629
  }
4647
4630
 
4648
4631
  firstUpdated() {