@aurodesignsystem-dev/auro-formkit 0.0.0-pr1524.0 → 0.0.0-pr1530.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 (51) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/dist/index.js +1 -1
  5. package/components/checkbox/dist/registered.js +1 -1
  6. package/components/combobox/demo/customize.min.js +25 -67
  7. package/components/combobox/demo/getting-started.min.js +25 -67
  8. package/components/combobox/demo/index.min.js +25 -67
  9. package/components/combobox/dist/auro-combobox.d.ts +0 -2
  10. package/components/combobox/dist/index.js +25 -67
  11. package/components/combobox/dist/registered.js +25 -67
  12. package/components/counter/demo/customize.min.js +2 -2
  13. package/components/counter/demo/index.min.js +2 -2
  14. package/components/counter/dist/index.js +2 -2
  15. package/components/counter/dist/registered.js +2 -2
  16. package/components/datepicker/demo/accessibility.md +12 -3
  17. package/components/datepicker/demo/api.md +1 -1
  18. package/components/datepicker/demo/customize.min.js +121 -34
  19. package/components/datepicker/demo/index.min.js +121 -34
  20. package/components/datepicker/demo/voiceover.md +1 -1
  21. package/components/datepicker/dist/auro-calendar-cell.d.ts +2 -0
  22. package/components/datepicker/dist/auro-calendar.d.ts +17 -2
  23. package/components/datepicker/dist/auro-datepicker.d.ts +9 -1
  24. package/components/datepicker/dist/index.js +121 -34
  25. package/components/datepicker/dist/registered.js +121 -34
  26. package/components/dropdown/demo/customize.min.js +1 -1
  27. package/components/dropdown/demo/getting-started.min.js +1 -1
  28. package/components/dropdown/demo/index.min.js +1 -1
  29. package/components/dropdown/dist/index.js +1 -1
  30. package/components/dropdown/dist/registered.js +1 -1
  31. package/components/form/demo/customize.min.js +170 -123
  32. package/components/form/demo/getting-started.min.js +170 -123
  33. package/components/form/demo/index.min.js +170 -123
  34. package/components/form/demo/registerDemoDeps.min.js +170 -123
  35. package/components/input/demo/customize.min.js +19 -17
  36. package/components/input/demo/getting-started.min.js +19 -17
  37. package/components/input/demo/index.min.js +19 -17
  38. package/components/input/dist/index.js +19 -17
  39. package/components/input/dist/registered.js +19 -17
  40. package/components/radio/demo/customize.min.js +1 -1
  41. package/components/radio/demo/getting-started.min.js +1 -1
  42. package/components/radio/demo/index.min.js +1 -1
  43. package/components/radio/dist/index.js +1 -1
  44. package/components/radio/dist/registered.js +1 -1
  45. package/components/select/demo/customize.min.js +2 -2
  46. package/components/select/demo/getting-started.min.js +2 -2
  47. package/components/select/demo/index.min.js +2 -2
  48. package/components/select/dist/index.js +2 -2
  49. package/components/select/dist/registered.js +2 -2
  50. package/custom-elements.json +5 -19
  51. package/package.json +1 -1
@@ -12236,9 +12236,20 @@ class AuroCalendarCell extends LitElement {
12236
12236
  const calendar = this.runtimeUtils.closestElement('auro-formkit-calendar', calendarMonth);
12237
12237
 
12238
12238
  if (!calendar) {
12239
- setTimeout(() => this.firstUpdated(), 0);
12239
+ // Retry on the next event-loop turn to give the ancestor chain a chance
12240
+ // to attach — but cap attempts so a permanently detached cell doesn't
12241
+ // spin forever. 10 turns is far more than any observed race needs.
12242
+ this._firstUpdatedRetries = (this._firstUpdatedRetries || 0) + 1;
12243
+ if (this._firstUpdatedRetries > 10) { // eslint-disable-line no-magic-numbers
12244
+ return;
12245
+ }
12246
+ this._firstUpdatedRetryTimer = setTimeout(() => {
12247
+ this._firstUpdatedRetryTimer = null;
12248
+ this.firstUpdated();
12249
+ }, 0);
12240
12250
  return;
12241
12251
  }
12252
+ this._firstUpdatedRetries = 0;
12242
12253
  this.calendar = calendar;
12243
12254
  this.datepicker = calendar.datepicker;
12244
12255
  this._slotContentHandler = () => {
@@ -12266,6 +12277,10 @@ class AuroCalendarCell extends LitElement {
12266
12277
  if (this.datepicker && this._slotContentHandler) {
12267
12278
  this.datepicker.removeEventListener('auroDatePicker-newSlotContent', this._slotContentHandler);
12268
12279
  }
12280
+ if (this._firstUpdatedRetryTimer) {
12281
+ clearTimeout(this._firstUpdatedRetryTimer);
12282
+ this._firstUpdatedRetryTimer = null;
12283
+ }
12269
12284
  }
12270
12285
 
12271
12286
  /**
@@ -13637,7 +13652,7 @@ class AuroBibtemplate extends LitElement {
13637
13652
  }
13638
13653
  }
13639
13654
 
13640
- var formkitVersion$2 = '202607020031';
13655
+ var formkitVersion$2 = '202607021905';
13641
13656
 
13642
13657
  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}
13643
13658
  `,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}}
@@ -14354,8 +14369,19 @@ class AuroCalendar extends RangeDatepicker {
14354
14369
  /**
14355
14370
  * Returns a memoized Set of blackout timestamps (seconds) drawn from both
14356
14371
  * the legacy `disabledDays` array and the datepicker's ISO `blackoutDates`.
14357
- * The cache invalidates when either source array's reference changes, which
14358
- * matches Lit's own reactive identity semantics for array properties.
14372
+ *
14373
+ * The cache invalidates on **reference identity** only when the
14374
+ * consumer reassigns the array (`el.blackoutDates = [...]`), matching
14375
+ * Lit's own reactivity semantics for array properties. In-place mutations
14376
+ * on the existing array (`push`, `splice`, index assignment) will NOT
14377
+ * invalidate the cache and the new entries will be silently ignored.
14378
+ * Consumers must reassign to update — see the JSDoc on
14379
+ * `auro-datepicker.blackoutDates` for the recommended pattern.
14380
+ *
14381
+ * A shallow-equality tier was considered but rejected: it would run
14382
+ * O(N) work on every cell render (this method is called per-cell via
14383
+ * `isBlackout()`) and still wouldn't catch same-length value swaps,
14384
+ * offering a false sense of safety.
14359
14385
  * @private
14360
14386
  * @returns {Set<Number>}
14361
14387
  */
@@ -14536,7 +14562,21 @@ class AuroCalendar extends RangeDatepicker {
14536
14562
  // rendered month(s) first so a single-month calendar does not pick a date
14537
14563
  // that has no DOM cell. Determine the visible range based on centralDate and
14538
14564
  // the number of rendered months.
14539
- const renderedMonths = Math.max(this.numCalendars, 1);
14565
+ //
14566
+ // numCalendars is assigned during renderAllCalendars(), which runs after
14567
+ // updated() — so the visible-change handler's eager computeActiveDate()
14568
+ // call arrives with numCalendars still undefined. Math.max(undefined, 1)
14569
+ // is NaN, which would silently skip the visible-month scan below. Fall
14570
+ // back to maximumRenderableMonths' desktop default (1 for non-range,
14571
+ // 2 for range) so the scan window is correctly sized on first open.
14572
+ let renderedMonths = null;
14573
+
14574
+ if (Number.isFinite(this.numCalendars) && this.numCalendars > 0) {
14575
+ renderedMonths = this.numCalendars;
14576
+ } else {
14577
+ renderedMonths = this.noRange ? 1 : 2;
14578
+ }
14579
+
14540
14580
  const visibleAnchor = this.centralDateObject ?? new Date(now * 1000);
14541
14581
  const visMonthStart = new Date(visibleAnchor.getFullYear(), visibleAnchor.getMonth(), 1);
14542
14582
  visMonthStart.setHours(0, 0, 0, 0);
@@ -14806,6 +14846,8 @@ class AuroCalendar extends RangeDatepicker {
14806
14846
  let targetIndex = -1;
14807
14847
  if (direction === 'next') {
14808
14848
  targetIndex = currentIndex + 1;
14849
+ } else if (direction === 'prev') {
14850
+ targetIndex = currentIndex - 1;
14809
14851
  }
14810
14852
 
14811
14853
  if (targetIndex >= 0 && targetIndex < allCells.length) {
@@ -15410,6 +15452,10 @@ class AuroCalendar extends RangeDatepicker {
15410
15452
  * originally tried aria-live="polite" here, but VoiceOver treats
15411
15453
  * polite as "wait until idle" — which never happens during active
15412
15454
  * keyboard navigation — so the announcements were silently dropped.
15455
+ *
15456
+ * This is a documented deviation from WCAG 2.1 SC 4.1.3, which
15457
+ * prefers `polite` for status messages. See the "Documented
15458
+ * Deviation" section in components/datepicker/docs/pages/accessibility.md.
15413
15459
  * @private
15414
15460
  * @param {String} dateStr - The localized date string to announce.
15415
15461
  * @returns {void}
@@ -19455,7 +19501,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
19455
19501
  }
19456
19502
  };
19457
19503
 
19458
- var formkitVersion$1 = '202607020031';
19504
+ var formkitVersion$1 = '202607021905';
19459
19505
 
19460
19506
  let AuroElement$2 = class AuroElement extends LitElement {
19461
19507
  static get properties() {
@@ -32337,17 +32383,14 @@ class BaseInput extends AuroElement$1 {
32337
32383
  * @returns {void}
32338
32384
  */
32339
32385
  notifyValueChanged() {
32340
- // This echoes Lit's reactive value update (and handleClickClear's
32341
- // programmatic clear) — it is NOT a fresh user-input event. Mark it
32342
- // `isProgrammatic` so consumers (e.g. auro-combobox) can distinguish
32343
- // it from genuine user typing and skip clobbering their own
32344
- // programmatic state during init-time renders.
32345
- const inputEvent = new Event('input', {
32386
+ let inputEvent = null;
32387
+
32388
+ inputEvent = new Event('input', {
32346
32389
  bubbles: true,
32347
32390
  composed: true,
32348
32391
  });
32349
- inputEvent.isProgrammatic = true;
32350
32392
 
32393
+ // Dispatched event to alert outside shadow DOM context of event firing.
32351
32394
  this.dispatchEvent(inputEvent);
32352
32395
  }
32353
32396
 
@@ -33060,7 +33103,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
33060
33103
  }
33061
33104
  };
33062
33105
 
33063
- var formkitVersion = '202607020031';
33106
+ var formkitVersion = '202607021905';
33064
33107
 
33065
33108
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
33066
33109
  // See LICENSE in the project root for license information.
@@ -33346,15 +33389,20 @@ class AuroInput extends BaseInput {
33346
33389
  * @returns {void}
33347
33390
  */
33348
33391
  checkDisplayValueSlotChange() {
33349
- // flatten:true resolves through auro-combobox's forwarding slot
33350
- // (<slot name="displayValue" slot="displayValue">) so a clone appended
33351
- // directly to auro-input's light DOM alongside the forwarder still
33352
- // counts as content. The prior nodes[0].tagName === 'SLOT' recursion
33353
- // discarded any siblings past the forwarder.
33354
- const slot = this.shadowRoot.querySelector('slot[name="displayValue"]');
33355
- const nodes = slot.assignedNodes({ flatten: true });
33392
+ let nodes = this.shadowRoot.querySelector('slot[name="displayValue"]').assignedNodes();
33393
+
33394
+ // Handle when DisplayValue is multi-level slot content (e.g. combobox passing displayValue to input)
33395
+ if (nodes && nodes[0] && nodes[0].tagName === 'SLOT') {
33396
+ nodes = nodes[0].assignedNodes();
33397
+ }
33398
+
33399
+ let hasContent = false;
33400
+
33401
+ if (nodes.length > 0) {
33402
+ hasContent = true;
33403
+ }
33356
33404
 
33357
- this.hasDisplayValueContent = nodes.length > 0;
33405
+ this.hasDisplayValueContent = hasContent;
33358
33406
  }
33359
33407
 
33360
33408
  firstUpdated() {
@@ -34432,6 +34480,15 @@ const datepickerKeyboardStrategy = {
34432
34480
  evt.stopPropagation();
34433
34481
  evt.preventDefault();
34434
34482
 
34483
+ // Signal to the visibility-change handler in auro-datepicker.js that
34484
+ // focus should be restored to the trigger regardless of hasFocus.
34485
+ // hidePopover() (desktop non-modal path) does not auto-restore focus,
34486
+ // and hiding the grid's popover ancestor drops focus to <body>. That
34487
+ // synchronously fires focusout on the datepicker host — clearing
34488
+ // hasFocus — before updated() runs, which would otherwise skip the
34489
+ // input refocus. Native <dialog>.close() (modal path) restores focus
34490
+ // itself, but the flag is harmless there.
34491
+ component._restoreFocusOnClose = true;
34435
34492
  component.hideBib();
34436
34493
  },
34437
34494
 
@@ -34705,6 +34762,14 @@ class AuroDatePicker extends AuroElement {
34705
34762
 
34706
34763
  /**
34707
34764
  * Array of dates that cannot be selected. Dates should be in ISO format (YYYY-MM-DD).
34765
+ *
34766
+ * **Immutable update required.** The datepicker treats this array as
34767
+ * immutable and memoizes a lookup Set keyed on the array's reference
34768
+ * identity — matching Lit's own reactivity semantics for array
34769
+ * properties. In-place mutations (`blackoutDates.push(...)`,
34770
+ * `blackoutDates[i] = ...`, `blackoutDates.splice(...)`) will not
34771
+ * invalidate the cache and the new entries will be silently ignored.
34772
+ * To update, reassign the property: `el.blackoutDates = [...el.blackoutDates, '2024-12-25']`.
34708
34773
  */
34709
34774
  blackoutDates: {
34710
34775
  type: Array,
@@ -35590,12 +35655,13 @@ class AuroDatePicker extends AuroElement {
35590
35655
  this.calendar.activeCellDate = null;
35591
35656
 
35592
35657
  // Show the month containing the selected date (or today) instead of
35593
- // whichever month the user last navigated to.
35658
+ // whichever month the user last navigated to. Route through
35659
+ // updateCentralDate so centralDate stays first-of-month.
35594
35660
  // Respect consumer-provided centralDate/calendarStartDate if no value is set.
35595
35661
  if (this.valueObject) {
35596
- this.centralDate = this.value;
35662
+ this.calendarRenderUtil.updateCentralDate(this, this.value);
35597
35663
  } else if (!this.centralDate && !this.calendarStartDate && !this.minDate) {
35598
- this.centralDate = dateFormatter$1.toISOFormatString(new Date());
35664
+ this.calendarRenderUtil.updateCentralDate(this, new Date());
35599
35665
  }
35600
35666
  }
35601
35667
 
@@ -35653,8 +35719,15 @@ class AuroDatePicker extends AuroElement {
35653
35719
  // Always clear the inert flag. Only restore focus to the input when the datepicker
35654
35720
  // still has focus (e.g. Escape, date selected) — not when the user tabbed away,
35655
35721
  // which would pull them back and require extra Tab presses to escape.
35722
+ //
35723
+ // `_restoreFocusOnClose` is set by the Escape handler in
35724
+ // datepickerKeyboardStrategy.js to force restore even when hasFocus
35725
+ // has already been cleared — hidePopover() (desktop non-modal path)
35726
+ // can drop focus to <body> before this update fires.
35656
35727
  this.dropdown.trigger.inert = false;
35657
- if (this.hasFocus) {
35728
+ const shouldRestoreFocus = this.hasFocus || this._restoreFocusOnClose;
35729
+ this._restoreFocusOnClose = false;
35730
+ if (shouldRestoreFocus) {
35658
35731
  requestAnimationFrame(() => {
35659
35732
  if (!this.dropdown.isPopoverVisible) {
35660
35733
  this.inputList[0].focus();
@@ -36100,6 +36173,18 @@ class AuroDatePicker extends AuroElement {
36100
36173
  this.calendar.requestUpdate();
36101
36174
  this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
36102
36175
  }
36176
+
36177
+ // Range invariant: if a value change (from click or programmatic) has
36178
+ // moved start past end, clear valueEnd here so both properties land in
36179
+ // the SAME reactive cycle. Doing it in updated() would schedule a
36180
+ // second cycle after cellClickActive/wasCellClick has already been
36181
+ // consumed by the value branch, leaving the valueEnd branch to run
36182
+ // with a stale handshake and racing with any intervening programmatic
36183
+ // value assignments.
36184
+ if ((changedProperties.has('value') || changedProperties.has('valueEnd')) &&
36185
+ this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
36186
+ this.valueEnd = undefined;
36187
+ }
36103
36188
  }
36104
36189
 
36105
36190
  updated(changedProperties) {
@@ -36167,8 +36252,12 @@ class AuroDatePicker extends AuroElement {
36167
36252
 
36168
36253
  if (this.value && this.value.length === this.inputList[0].lengthForType && !(this.wasCellClick && this.range)) {
36169
36254
  // Skip centralDate update when user clicked a cell in range mode
36170
- // to prevent the displayed months from shifting
36171
- this.centralDate = this.value;
36255
+ // to prevent the displayed months from shifting. Route through
36256
+ // updateCentralDate so centralDate stays first-of-month — direct
36257
+ // assignment of the raw value briefly holds a mid-month string
36258
+ // and violates the invariant that observers (e.g. calendar sync)
36259
+ // rely on.
36260
+ this.calendarRenderUtil.updateCentralDate(this, this.value);
36172
36261
  }
36173
36262
 
36174
36263
  this.setHasValue();
@@ -36226,8 +36315,10 @@ class AuroDatePicker extends AuroElement {
36226
36315
 
36227
36316
  if (this.valueEnd && this.valueEnd.length === this.inputList[1].lengthForType && !this.wasCellClick) {
36228
36317
  // Skip centralDate update when user clicked a cell in range mode
36229
- // to prevent the displayed months from shifting
36230
- this.centralDate = this.valueEnd;
36318
+ // to prevent the displayed months from shifting. Route through
36319
+ // updateCentralDate to preserve the first-of-month invariant
36320
+ // (see matching comment in the value branch above).
36321
+ this.calendarRenderUtil.updateCentralDate(this, this.valueEnd);
36231
36322
  }
36232
36323
 
36233
36324
  this.validate();
@@ -36251,10 +36342,6 @@ class AuroDatePicker extends AuroElement {
36251
36342
  this.validation.validate(lastInput, true);
36252
36343
  }
36253
36344
 
36254
- if (this.valueObject && this.valueEndObject && this.valueObject > this.valueEndObject) {
36255
- this.valueEnd = undefined;
36256
- }
36257
-
36258
36345
  // This resets the datepicker when the minDate is set to a new value that is
36259
36346
  // a later date than the current value date
36260
36347
  if (changedProperties.has('minDate') && this.minDate) {