@aurodesignsystem-dev/auro-formkit 0.0.0-pr1518.0 → 0.0.0-pr1519.1

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 (47) hide show
  1. package/components/checkbox/demo/customize.min.js +15 -2
  2. package/components/checkbox/demo/getting-started.min.js +15 -2
  3. package/components/checkbox/demo/index.min.js +15 -2
  4. package/components/checkbox/dist/index.js +15 -2
  5. package/components/checkbox/dist/registered.js +15 -2
  6. package/components/combobox/demo/customize.min.js +105 -10
  7. package/components/combobox/demo/getting-started.min.js +105 -10
  8. package/components/combobox/demo/index.min.js +105 -10
  9. package/components/combobox/dist/index.js +105 -10
  10. package/components/combobox/dist/registered.js +105 -10
  11. package/components/counter/demo/customize.min.js +33 -3
  12. package/components/counter/demo/index.min.js +33 -3
  13. package/components/counter/dist/index.js +33 -3
  14. package/components/counter/dist/registered.js +33 -3
  15. package/components/datepicker/demo/customize.min.js +153 -13
  16. package/components/datepicker/demo/index.min.js +153 -13
  17. package/components/datepicker/dist/index.js +153 -13
  18. package/components/datepicker/dist/registered.js +153 -13
  19. package/components/dropdown/demo/customize.min.js +18 -1
  20. package/components/dropdown/demo/getting-started.min.js +18 -1
  21. package/components/dropdown/demo/index.min.js +18 -1
  22. package/components/dropdown/dist/index.js +18 -1
  23. package/components/dropdown/dist/registered.js +18 -1
  24. package/components/form/demo/customize.min.js +441 -40
  25. package/components/form/demo/getting-started.min.js +441 -40
  26. package/components/form/demo/index.min.js +441 -40
  27. package/components/form/demo/registerDemoDeps.min.js +441 -40
  28. package/components/input/demo/api.md +58 -57
  29. package/components/input/demo/customize.min.js +72 -7
  30. package/components/input/demo/getting-started.min.js +72 -7
  31. package/components/input/demo/index.min.js +72 -7
  32. package/components/input/dist/base-input.d.ts +9 -3
  33. package/components/input/dist/index.js +72 -7
  34. package/components/input/dist/registered.js +72 -7
  35. package/components/input/dist/utilities.d.ts +9 -0
  36. package/components/radio/demo/customize.min.js +15 -2
  37. package/components/radio/demo/getting-started.min.js +15 -2
  38. package/components/radio/demo/index.min.js +15 -2
  39. package/components/radio/dist/index.js +15 -2
  40. package/components/radio/dist/registered.js +15 -2
  41. package/components/select/demo/customize.min.js +48 -3
  42. package/components/select/demo/getting-started.min.js +48 -3
  43. package/components/select/demo/index.min.js +48 -3
  44. package/components/select/dist/index.js +48 -3
  45. package/components/select/dist/registered.js +48 -3
  46. package/custom-elements.json +78 -8
  47. package/package.json +1 -1
@@ -542,8 +542,21 @@ let AuroFormValidation$1 = class AuroFormValidation {
542
542
  return;
543
543
  }
544
544
 
545
- // Validate that the date passed was the correct format and is a valid date
545
+ // Validate that the date passed was the correct format and is a valid date.
546
+ // For partial date formats, valueObject is never populated; validate them directly.
546
547
  if (elem.value && !elem.valueObject) {
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.
547
560
  elem.validity = 'patternMismatch';
548
561
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
549
562
  return;
@@ -10396,10 +10409,11 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10396
10409
  const dateFormat = format || this.overrideFormat || pattern || 'mm/dd/yyyy';
10397
10410
 
10398
10411
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
10399
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
10412
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
10413
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
10400
10414
  return {
10401
10415
  mask: IMask$1.MaskedRange,
10402
- from: 1,
10416
+ from: fromValue,
10403
10417
  to: maxValue,
10404
10418
  lazy: true,
10405
10419
  placeholderChar: '',
@@ -10407,7 +10421,8 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10407
10421
  return value.toString().padStart(dateFormat.length, '0');
10408
10422
  },
10409
10423
  parse(str) {
10410
- return parseInt(str) || null;
10424
+ const num = parseInt(str, 10);
10425
+ return isNaN(num) ? null : num;
10411
10426
  }
10412
10427
  };
10413
10428
  }
@@ -10471,6 +10486,49 @@ let AuroInputUtilities$1 = class AuroInputUtilities {
10471
10486
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
10472
10487
  }
10473
10488
 
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
+
10474
10532
  /**
10475
10533
  * Converts a display string to its model value.
10476
10534
  * For full date formats, converts the display string to an ISO date string.
@@ -13544,7 +13602,7 @@ class AuroBibtemplate extends LitElement {
13544
13602
  }
13545
13603
  }
13546
13604
 
13547
- var formkitVersion$2 = '202607011652';
13605
+ var formkitVersion$2 = '202607011914';
13548
13606
 
13549
13607
  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}
13550
13608
  `,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}}
@@ -19296,7 +19354,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
19296
19354
  }
19297
19355
  };
19298
19356
 
19299
- var formkitVersion$1 = '202607011652';
19357
+ var formkitVersion$1 = '202607011914';
19300
19358
 
19301
19359
  let AuroElement$2 = class AuroElement extends LitElement {
19302
19360
  static get properties() {
@@ -20048,6 +20106,23 @@ class AuroDropdown extends AuroElement$2 {
20048
20106
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
20049
20107
  this.trigger.focus();
20050
20108
  }
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
+ }
20051
20126
  }
20052
20127
 
20053
20128
  firstUpdated() {
@@ -24973,8 +25048,21 @@ class AuroFormValidation {
24973
25048
  return;
24974
25049
  }
24975
25050
 
24976
- // Validate that the date passed was the correct format and is a valid date
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.
24977
25053
  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.
24978
25066
  elem.validity = 'patternMismatch';
24979
25067
  elem.errorMessage = elem.setCustomValidityPatternMismatch || elem.setCustomValidity || 'Invalid Date Format Entered';
24980
25068
  return;
@@ -30904,10 +30992,11 @@ class AuroInputUtilities {
30904
30992
  const dateFormat = format$1 || this.overrideFormat || pattern || 'mm/dd/yyyy';
30905
30993
 
30906
30994
  if (dateFormat === 'dd' || dateFormat === 'yy' || dateFormat === 'yyyy') {
30907
- const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 9999);
30995
+ const fromValue = dateFormat === 'yyyy' ? 1900 : (dateFormat === 'yy' ? 0 : 1);
30996
+ const maxValue = dateFormat === 'dd' ? 31 : (dateFormat === 'yy' ? 99 : 2100);
30908
30997
  return {
30909
30998
  mask: IMask.MaskedRange,
30910
- from: 1,
30999
+ from: fromValue,
30911
31000
  to: maxValue,
30912
31001
  lazy: true,
30913
31002
  placeholderChar: '',
@@ -30915,7 +31004,8 @@ class AuroInputUtilities {
30915
31004
  return value.toString().padStart(dateFormat.length, '0');
30916
31005
  },
30917
31006
  parse(str) {
30918
- return parseInt(str) || null;
31007
+ const num = parseInt(str, 10);
31008
+ return isNaN(num) ? null : num;
30919
31009
  }
30920
31010
  };
30921
31011
  }
@@ -30979,6 +31069,49 @@ class AuroInputUtilities {
30979
31069
  return type === 'date' && normalizedFormat.includes('yy') && normalizedFormat.includes('mm') && normalizedFormat.includes('dd');
30980
31070
  }
30981
31071
 
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
+
30982
31115
  /**
30983
31116
  * Converts a display string to its model value.
30984
31117
  * For full date formats, converts the display string to an ISO date string.
@@ -31598,6 +31731,13 @@ class BaseInput extends AuroElement$1 {
31598
31731
  type: String
31599
31732
  },
31600
31733
 
31734
+ /**
31735
+ * Custom help text message to display when validity = `patternMismatch`.
31736
+ */
31737
+ setCustomValidityPatternMismatch: {
31738
+ type: String
31739
+ },
31740
+
31601
31741
  /**
31602
31742
  * Custom help text message to display when validity = `rangeOverflow`.
31603
31743
  */
@@ -31668,7 +31808,7 @@ class BaseInput extends AuroElement$1 {
31668
31808
 
31669
31809
  /**
31670
31810
  * Populates the `type` attribute on the input.
31671
- * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number'}
31811
+ * @type {'text' | 'password' | 'email' | 'credit-card' | 'tel' | 'number' | 'date'}
31672
31812
  * @default 'text'
31673
31813
  */
31674
31814
  type: {
@@ -31693,7 +31833,7 @@ class BaseInput extends AuroElement$1 {
31693
31833
 
31694
31834
  /**
31695
31835
  * Populates the `value` attribute on the input. Can also be read to retrieve the current value of the input.
31696
- * The format for this property should be ISO for `date` type inputs.
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.
31697
31837
  */
31698
31838
  value: {
31699
31839
  type: String
@@ -32816,7 +32956,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
32816
32956
  }
32817
32957
  };
32818
32958
 
32819
- var formkitVersion = '202607011652';
32959
+ var formkitVersion = '202607011914';
32820
32960
 
32821
32961
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
32822
32962
  // 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 = '202607011652';
3945
+ var formkitVersion = '202607011914';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4694,6 +4694,23 @@ 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
+ }
4697
4714
  }
4698
4715
 
4699
4716
  firstUpdated() {
@@ -3942,7 +3942,7 @@ class AuroHelpText extends i {
3942
3942
  }
3943
3943
  }
3944
3944
 
3945
- var formkitVersion = '202607011652';
3945
+ var formkitVersion = '202607011914';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4694,6 +4694,23 @@ 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
+ }
4697
4714
  }
4698
4715
 
4699
4716
  firstUpdated() {
@@ -3969,7 +3969,7 @@ class AuroHelpText extends i {
3969
3969
  }
3970
3970
  }
3971
3971
 
3972
- var formkitVersion = '202607011652';
3972
+ var formkitVersion = '202607011914';
3973
3973
 
3974
3974
  class AuroElement extends i {
3975
3975
  static get properties() {
@@ -4721,6 +4721,23 @@ 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
+ }
4724
4741
  }
4725
4742
 
4726
4743
  firstUpdated() {
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202607011652';
3877
+ var formkitVersion = '202607011914';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4626,6 +4626,23 @@ 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
+ }
4629
4646
  }
4630
4647
 
4631
4648
  firstUpdated() {
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202607011652';
3877
+ var formkitVersion = '202607011914';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4626,6 +4626,23 @@ 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
+ }
4629
4646
  }
4630
4647
 
4631
4648
  firstUpdated() {