@aurodesignsystem-dev/auro-formkit 0.0.0-pr1475.2 → 0.0.0-pr1475.4

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 +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 +22 -3
  7. package/components/combobox/demo/getting-started.min.js +22 -3
  8. package/components/combobox/demo/index.min.js +22 -3
  9. package/components/combobox/dist/index.js +22 -3
  10. package/components/combobox/dist/registered.js +22 -3
  11. package/components/counter/demo/customize.min.js +21 -2
  12. package/components/counter/demo/index.min.js +21 -2
  13. package/components/counter/dist/index.js +45 -441
  14. package/components/counter/dist/registered.js +1 -1
  15. package/components/datepicker/demo/customize.min.js +126 -49
  16. package/components/datepicker/demo/index.js +4 -1
  17. package/components/datepicker/demo/index.md +2 -2
  18. package/components/datepicker/demo/index.min.js +131 -51
  19. package/components/datepicker/dist/index.js +126 -49
  20. package/components/datepicker/dist/registered.js +126 -49
  21. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +13 -9
  22. package/components/dropdown/demo/customize.min.js +20 -1
  23. package/components/dropdown/demo/getting-started.min.js +20 -1
  24. package/components/dropdown/demo/index.min.js +20 -1
  25. package/components/dropdown/dist/index.js +20 -1
  26. package/components/dropdown/dist/registered.js +20 -1
  27. package/components/form/demo/customize.min.js +1042 -908
  28. package/components/form/demo/getting-started.min.js +1042 -908
  29. package/components/form/demo/index.min.js +1042 -908
  30. package/components/form/demo/registerDemoDeps.min.js +1037 -903
  31. package/components/input/demo/customize.min.js +1 -1
  32. package/components/input/demo/getting-started.min.js +1 -1
  33. package/components/input/demo/index.min.js +1 -1
  34. package/components/input/dist/index.js +1 -1
  35. package/components/input/dist/registered.js +1 -1
  36. package/components/radio/demo/customize.min.js +1 -1
  37. package/components/radio/demo/getting-started.min.js +1 -1
  38. package/components/radio/demo/index.min.js +1 -1
  39. package/components/radio/dist/index.js +1 -1
  40. package/components/radio/dist/registered.js +1 -1
  41. package/components/select/demo/customize.min.js +21 -2
  42. package/components/select/demo/getting-started.min.js +21 -2
  43. package/components/select/demo/index.min.js +21 -2
  44. package/components/select/dist/index.js +21 -2
  45. package/components/select/dist/registered.js +21 -2
  46. package/custom-elements.json +13 -22
  47. package/package.json +1 -1
@@ -8042,19 +8042,6 @@ class AuroCalendarCell extends LitElement {
8042
8042
  }
8043
8043
  }
8044
8044
 
8045
- /**
8046
- * Handles Enter/Space key on the cell button.
8047
- * @private
8048
- * @param {KeyboardEvent} event - The keyboard event.
8049
- * @returns {void}
8050
- */
8051
- handleKeyDown(event) {
8052
- if (event.key === 'Enter' || event.key === ' ') {
8053
- event.preventDefault();
8054
- this.handleTap();
8055
- }
8056
- }
8057
-
8058
8045
  /**
8059
8046
  * Handles user hover events and dispatches a custom event.
8060
8047
  * @private
@@ -8097,6 +8084,13 @@ class AuroCalendarCell extends LitElement {
8097
8084
  return false;
8098
8085
  }
8099
8086
 
8087
+ // Check against disabledDays timestamps (legacy path)
8088
+ if (Array.isArray(this.disabledDays) && this.disabledDays.length > 0) {
8089
+ if (this.disabledDays.findIndex(d => parseInt(d, 10) === this.day.date) !== -1) {
8090
+ return true;
8091
+ }
8092
+ }
8093
+
8100
8094
  // Check against blackoutDates (ISO format YYYY-MM-DD) on the datepicker
8101
8095
  const blackoutDates = this.datepicker?.blackoutDates;
8102
8096
 
@@ -8115,8 +8109,10 @@ class AuroCalendarCell extends LitElement {
8115
8109
  }
8116
8110
 
8117
8111
  /**
8118
- * Checks if the current date is a valid date depending on the min and max values.
8119
- * Sets the disabled attribute for both out-of-range and blackout dates.
8112
+ * Checks if the current date is disabled based on min/max range or the
8113
+ * legacy disabledDays timestamp list. Sets the `disabled` attribute on the
8114
+ * host when the date falls outside the allowed range or appears in
8115
+ * disabledDays. Note: blackout dates are handled separately by `isBlackout()`.
8120
8116
  * @private
8121
8117
  * @param {Object} day - An object containing the dateFrom and day of month values.
8122
8118
  * @param {Number} min - The minimum date value.
@@ -8161,8 +8157,9 @@ class AuroCalendarCell extends LitElement {
8161
8157
 
8162
8158
  const date = new Date(this.day.date * 1000);
8163
8159
 
8164
- // Generate localized full date string
8165
- const dateFormatter = new Intl.DateTimeFormat(undefined, {
8160
+ // Generate localized full date string using the configured locale
8161
+ const localeCode = this.locale?.code || undefined;
8162
+ const dateFormatter = new Intl.DateTimeFormat(localeCode, {
8166
8163
  weekday: 'long',
8167
8164
  year: 'numeric',
8168
8165
  month: 'long',
@@ -8171,7 +8168,7 @@ class AuroCalendarCell extends LitElement {
8171
8168
 
8172
8169
  let label = dateFormatter.format(date);
8173
8170
 
8174
- // appending popover content here so that it get's read in a logical order with the other date content.
8171
+ // appending popover content here so that it gets read in a logical order with the other date content.
8175
8172
  if (this.hasPopoverContent) {
8176
8173
  label += `, ${this.querySelector(`[slot="popover_${this.dateStr}"]`).innerText.trim()}`;
8177
8174
  }
@@ -8403,10 +8400,22 @@ class AuroCalendarCell extends LitElement {
8403
8400
  this.handleSlotContent();
8404
8401
  });
8405
8402
 
8403
+ this.calendarMonth = calendarMonth;
8404
+ this.configurePopover();
8405
+ }
8406
+
8407
+ /**
8408
+ * Configures the popover instance with the calendar month boundary.
8409
+ * Called from firstUpdated and updated because the popover element is only
8410
+ * rendered after hasPopoverContent becomes true (set by handleSlotContent).
8411
+ * @private
8412
+ * @returns {void}
8413
+ */
8414
+ configurePopover() {
8406
8415
  this.auroPopover = this.shadowRoot.querySelector(this.popoverTag._$litStatic$);
8407
8416
 
8408
- if (this.auroPopover) {
8409
- this.auroPopover.boundary = calendarMonth;
8417
+ if (this.auroPopover && this.calendarMonth) {
8418
+ this.auroPopover.boundary = this.calendarMonth;
8410
8419
  }
8411
8420
  }
8412
8421
 
@@ -8419,6 +8428,11 @@ class AuroCalendarCell extends LitElement {
8419
8428
  this.setDateSlotName();
8420
8429
  this.handleSlotContent();
8421
8430
  }
8431
+
8432
+ // Configure popover when it first becomes rendered
8433
+ if (properties.has('hasPopoverContent') && this.hasPopoverContent) {
8434
+ this.updateComplete.then(() => this.configurePopover());
8435
+ }
8422
8436
  }
8423
8437
 
8424
8438
  /**
@@ -8675,8 +8689,12 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8675
8689
  }
8676
8690
  } else if (key === 'ArrowDown' || key === 'ArrowUp') {
8677
8691
  // Find the target day (same day-of-week, +/- 7 days)
8692
+ // Use Date arithmetic instead of fixed seconds to handle DST correctly
8678
8693
  const increment = key === 'ArrowDown' ? 7 : -7;
8679
- const targetDate = activeCell.day.date + (increment * 86400); // 86400 seconds per day
8694
+ const currentDate = new Date(activeCell.day.date * 1000);
8695
+ currentDate.setDate(currentDate.getDate() + increment);
8696
+ currentDate.setHours(0, 0, 0, 0);
8697
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
8680
8698
 
8681
8699
  // Look for the target date in this month's focusable cells
8682
8700
  targetCell = focusableCells.find(cell => cell.day.date === targetDate);
@@ -8740,7 +8758,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8740
8758
  var _a, _b;
8741
8759
 
8742
8760
  return html `
8743
- <div aria-labelledby="${this.getHeadingId()}" @keydown="${this.handleGridKeyDown}">
8761
+ <div aria-labelledby="${this.getHeadingId()}">
8744
8762
  <div class="header">
8745
8763
  ${this.renderPrevButton()}
8746
8764
  <div class="headerTitle heading-xs" id="${this.getHeadingId()}" aria-live="polite" aria-atomic="true">
@@ -8755,7 +8773,7 @@ class AuroCalendarMonth extends RangeDatepickerCalendar {
8755
8773
  ${this.renderNextButton()}
8756
8774
  </div>
8757
8775
 
8758
- <div class="table" role="grid" aria-labelledby="${this.getHeadingId()}">
8776
+ <div class="table" role="grid" aria-labelledby="${this.getHeadingId()}" @keydown="${this.handleGridKeyDown}">
8759
8777
  <div class="thead" role="rowgroup">
8760
8778
  <div class="tr" role="row">
8761
8779
  ${(_a = this.dayNamesOfTheWeek) === null || _a === void 0 ? void 0 : _a.map((dayNameOfWeek, index) => this.renderDayOfWeek(dayNameOfWeek, index))}
@@ -9573,7 +9591,7 @@ class AuroBibtemplate extends LitElement {
9573
9591
  }
9574
9592
  }
9575
9593
 
9576
- var formkitVersion$2 = '202605182240';
9594
+ var formkitVersion$2 = '202605190056';
9577
9595
 
9578
9596
  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}
9579
9597
  `,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}}
@@ -9863,7 +9881,8 @@ class AuroCalendar extends RangeDatepicker {
9863
9881
  */
9864
9882
  announceMonthChange() {
9865
9883
  const date = new Date(this.centralDate);
9866
- const formatter = new Intl.DateTimeFormat(undefined, { month: 'long', year: 'numeric' });
9884
+ const localeCode = this.locale?.code || undefined;
9885
+ const formatter = new Intl.DateTimeFormat(localeCode, { month: 'long', year: 'numeric' });
9867
9886
  this.announceSelection(formatter.format(date));
9868
9887
  }
9869
9888
 
@@ -10043,9 +10062,19 @@ class AuroCalendar extends RangeDatepicker {
10043
10062
  * @returns {Number|undefined} Unix timestamp (seconds) of the date to activate, or undefined.
10044
10063
  */
10045
10064
  computeActiveDate() {
10046
- const ONE_DAY = 86400; // seconds
10047
10065
  const MAX_SCAN_DAYS = 366; // scan at most ~1 year in each direction
10048
10066
 
10067
+ /**
10068
+ * Adds days to a timestamp using Date arithmetic to handle DST correctly.
10069
+ * Returns a local-midnight-aligned timestamp in seconds.
10070
+ */
10071
+ const addDays = (ts, days) => {
10072
+ const d = new Date(ts * 1000);
10073
+ d.setDate(d.getDate() + days);
10074
+ d.setHours(0, 0, 0, 0);
10075
+ return Math.floor(d.getTime() / 1000);
10076
+ };
10077
+
10049
10078
  const rawMin = Number(this.min);
10050
10079
  const rawMax = Number(this.max);
10051
10080
 
@@ -10058,11 +10087,13 @@ class AuroCalendar extends RangeDatepicker {
10058
10087
  (this.disabledDays || []).map(d => parseInt(d, 10))
10059
10088
  );
10060
10089
 
10061
- // Also include ISO-format blackoutDates from the datepicker if available
10090
+ // Also include ISO-format blackoutDates from the datepicker if available.
10091
+ // Parse YYYY-MM-DD as local date to avoid UTC shift issues.
10062
10092
  const isoBlackouts = this.datepicker?.blackoutDates;
10063
10093
  if (Array.isArray(isoBlackouts)) {
10064
10094
  for (const isoStr of isoBlackouts) {
10065
- const ts = Math.floor(new Date(isoStr).setHours(0, 0, 0, 0) / 1000);
10095
+ const parts = isoStr.split('-');
10096
+ const ts = Math.floor(new Date(parseInt(parts[0], 10), parseInt(parts[1], 10) - 1, parseInt(parts[2], 10)).getTime() / 1000);
10066
10097
  if (Number.isFinite(ts)) blackoutSet.add(ts);
10067
10098
  }
10068
10099
  }
@@ -10091,31 +10122,43 @@ class AuroCalendar extends RangeDatepicker {
10091
10122
  if (isEnabled(now)) return now;
10092
10123
 
10093
10124
  // 3. First future enabled date (scan forward from tomorrow, capped by max and MAX_SCAN_DAYS).
10094
- const scanMax = Number.isFinite(maxTs)
10095
- ? Math.min(maxTs, now + (MAX_SCAN_DAYS * ONE_DAY))
10096
- : now + (MAX_SCAN_DAYS * ONE_DAY);
10097
-
10098
- for (let ts = now + ONE_DAY; ts <= scanMax; ts += ONE_DAY) {
10125
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx++) {
10126
+ const ts = addDays(now, idx);
10127
+ if (Number.isFinite(maxTs) && ts > maxTs) break;
10099
10128
  if (isEnabled(ts)) return ts;
10100
10129
  }
10101
10130
 
10102
10131
  // 4. First previous enabled date (scan backward from yesterday, capped by min and MAX_SCAN_DAYS).
10103
- const scanMin = Number.isFinite(minTs)
10104
- ? Math.max(minTs, now - (MAX_SCAN_DAYS * ONE_DAY))
10105
- : now - (MAX_SCAN_DAYS * ONE_DAY);
10106
-
10107
- for (let ts = now - ONE_DAY; ts >= scanMin; ts -= ONE_DAY) {
10132
+ for (let idx = 1; idx <= MAX_SCAN_DAYS; idx++) {
10133
+ const ts = addDays(now, -idx);
10134
+ if (Number.isFinite(minTs) && ts < minTs) break;
10108
10135
  if (isEnabled(ts)) return ts;
10109
10136
  }
10110
10137
 
10111
10138
  // 5. If scans missed (e.g. min/max range is far from today), fall back to
10112
10139
  // the first enabled date in the [min, max] range.
10113
10140
  if (Number.isFinite(minTs) && Number.isFinite(maxTs)) {
10114
- for (let ts = minTs; ts <= maxTs; ts += ONE_DAY) {
10141
+ let ts = minTs;
10142
+ for (let idx = 0; ts <= maxTs; idx++) {
10115
10143
  if (isEnabled(ts)) return ts;
10144
+ ts = addDays(minTs, idx + 1);
10116
10145
  }
10117
10146
  }
10118
10147
 
10148
+ // 5b. Unbounded min with a finite max far in the past (e.g. birth-date picker):
10149
+ // scan backward from max for up to MAX_SCAN_DAYS.
10150
+ if (!Number.isFinite(minTs) && Number.isFinite(maxTs)) {
10151
+ for (let idx = 0; idx <= MAX_SCAN_DAYS; idx++) {
10152
+ const ts = addDays(maxTs, -idx);
10153
+ if (isEnabled(ts)) return ts;
10154
+ }
10155
+ }
10156
+
10157
+ // 6. All dates are blackout — fall back to the first in-range date so focus
10158
+ // still lands on a focusable (but not selectable) cell.
10159
+ if (Number.isFinite(minTs) && isInRange(minTs)) return minTs;
10160
+ if (isInRange(now)) return now;
10161
+
10119
10162
  return undefined;
10120
10163
  }
10121
10164
 
@@ -10174,8 +10217,12 @@ class AuroCalendar extends RangeDatepicker {
10174
10217
  }
10175
10218
  } else if (key === 'ArrowDown' || key === 'ArrowUp') {
10176
10219
  // Vertical navigation: find same day-of-week +/- 7 days
10220
+ // Use Date arithmetic instead of fixed seconds to handle DST correctly
10177
10221
  const increment = key === 'ArrowDown' ? 7 : -7;
10178
- const targetDate = fromDate + (increment * 86400);
10222
+ const currentDate = new Date(fromDate * 1000);
10223
+ currentDate.setDate(currentDate.getDate() + increment);
10224
+ currentDate.setHours(0, 0, 0, 0);
10225
+ const targetDate = Math.floor(currentDate.getTime() / 1000);
10179
10226
 
10180
10227
  const allCells = this.getAllFocusableCells();
10181
10228
  let targetCell = allCells.find(cell => cell.day && cell.day.date === targetDate);
@@ -10270,7 +10317,8 @@ class AuroCalendar extends RangeDatepicker {
10270
10317
  */
10271
10318
  formatAnnouncementDate(timestamp) {
10272
10319
  const date = new Date(parseInt(timestamp, 10) * 1000);
10273
- const formatter = new Intl.DateTimeFormat(undefined, {
10320
+ const localeCode = this.locale?.code || undefined;
10321
+ const formatter = new Intl.DateTimeFormat(localeCode, {
10274
10322
  weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'
10275
10323
  });
10276
10324
  return formatter.format(date);
@@ -14284,7 +14332,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
14284
14332
  }
14285
14333
  };
14286
14334
 
14287
- var formkitVersion$1 = '202605182240';
14335
+ var formkitVersion$1 = '202605190056';
14288
14336
 
14289
14337
  let AuroElement$2 = class AuroElement extends LitElement {
14290
14338
  static get properties() {
@@ -15005,6 +15053,17 @@ class AuroDropdown extends AuroElement$2 {
15005
15053
  this._clearPageInert();
15006
15054
  }
15007
15055
  }
15056
+
15057
+ // Handle desktopModal toggled while the dropdown is already open.
15058
+ // Re-initialize focus trapping and page inert state to match the new mode.
15059
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
15060
+ this.updateFocusTrap();
15061
+ if (this.desktopModal) {
15062
+ this._setPageInert();
15063
+ } else {
15064
+ this._clearPageInert();
15065
+ }
15066
+ }
15008
15067
  }
15009
15068
 
15010
15069
  /**
@@ -15205,6 +15264,14 @@ class AuroDropdown extends AuroElement$2 {
15205
15264
  }
15206
15265
  };
15207
15266
  this.addEventListener('keydown', this._bibTabHandler);
15267
+
15268
+ // Move initial focus into the bib content, matching FocusTrap behavior
15269
+ requestAnimationFrame(() => {
15270
+ const focusables = getFocusableElements(this.bibContent);
15271
+ if (focusables.length) {
15272
+ focusables[0].focus();
15273
+ }
15274
+ });
15208
15275
  } else {
15209
15276
  // Normal desktop: use FocusTrap on the bib element
15210
15277
  this.focusTrap = new FocusTrap(this.bibContent);
@@ -22218,7 +22285,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
22218
22285
  }
22219
22286
  };
22220
22287
 
22221
- var formkitVersion = '202605182240';
22288
+ var formkitVersion = '202605190056';
22222
22289
 
22223
22290
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
22224
22291
  // See LICENSE in the project root for license information.
@@ -23500,8 +23567,11 @@ const datepickerKeyboardStrategy = {
23500
23567
  return;
23501
23568
  }
23502
23569
 
23503
- // Only open from the trigger input, not the clear button or other elements
23504
- if (evt.target?.hasAttribute?.('slot') && evt.target.getAttribute('slot').includes('clear')) {
23570
+ // Only open from the trigger input, not the clear button or other internal elements.
23571
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
23572
+ // to find the real origin. The clear button is rendered with class "clearBtn".
23573
+ const path = evt.composedPath();
23574
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
23505
23575
  return;
23506
23576
  }
23507
23577
 
@@ -23515,8 +23585,11 @@ const datepickerKeyboardStrategy = {
23515
23585
  return;
23516
23586
  }
23517
23587
 
23518
- // Only open from the trigger input, not the clear button or other elements
23519
- if (evt.target?.hasAttribute?.('slot') && evt.target.getAttribute('slot').includes('clear')) {
23588
+ // Only open from the trigger input, not the clear button or other internal elements.
23589
+ // evt.target is retargeted to the host in shadow DOM, so use composedPath()
23590
+ // to find the real origin. The clear button is rendered with class "clearBtn".
23591
+ const path = evt.composedPath();
23592
+ if (path.some(el => el.classList?.contains('clearBtn'))) {
23520
23593
  return;
23521
23594
  }
23522
23595
 
@@ -24580,7 +24653,7 @@ class AuroDatePicker extends AuroElement {
24580
24653
  bibEl.close();
24581
24654
  bibEl.open(true);
24582
24655
  doubleRaf(() => {
24583
- this.calendar.focusCloseButton();
24656
+ this.focusActiveCellWhenReady();
24584
24657
  });
24585
24658
  }
24586
24659
  });
@@ -24956,9 +25029,13 @@ class AuroDatePicker extends AuroElement {
24956
25029
  }
24957
25030
 
24958
25031
  if (changedProperties.has('blackoutDates')) {
24959
- // Force calendar cells to re-render with updated blackout state
25032
+ // Force calendar cells to re-render with updated blackout state.
25033
+ // requestUpdate on the calendar alone is insufficient because cells
25034
+ // don't receive blackoutDates as a bound property. Dispatching the
25035
+ // slot content event triggers handleSlotContent → requestUpdate on each cell.
24960
25036
  if (this.calendar) {
24961
25037
  this.calendar.requestUpdate();
25038
+ this.dispatchEvent(new CustomEvent('auroDatePicker-newSlotContent'));
24962
25039
  }
24963
25040
  }
24964
25041
 
@@ -92,13 +92,6 @@ export class AuroCalendarCell extends LitElement {
92
92
  * @returns {void}
93
93
  */
94
94
  private handleTap;
95
- /**
96
- * Handles Enter/Space key on the cell button.
97
- * @private
98
- * @param {KeyboardEvent} event - The keyboard event.
99
- * @returns {void}
100
- */
101
- private handleKeyDown;
102
95
  /**
103
96
  * Handles user hover events and dispatches a custom event.
104
97
  * @private
@@ -123,8 +116,10 @@ export class AuroCalendarCell extends LitElement {
123
116
  */
124
117
  private isBlackout;
125
118
  /**
126
- * Checks if the current date is a valid date depending on the min and max values.
127
- * Sets the disabled attribute for both out-of-range and blackout dates.
119
+ * Checks if the current date is disabled based on min/max range or the
120
+ * legacy disabledDays timestamp list. Sets the `disabled` attribute on the
121
+ * host when the date falls outside the allowed range or appears in
122
+ * disabledDays. Note: blackout dates are handled separately by `isBlackout()`.
128
123
  * @private
129
124
  * @param {Object} day - An object containing the dateFrom and day of month values.
130
125
  * @param {Number} min - The minimum date value.
@@ -215,6 +210,15 @@ export class AuroCalendarCell extends LitElement {
215
210
  private handleSlotContent;
216
211
  firstUpdated(): void;
217
212
  datepicker: any;
213
+ calendarMonth: any;
214
+ /**
215
+ * Configures the popover instance with the calendar month boundary.
216
+ * Called from firstUpdated and updated because the popover element is only
217
+ * rendered after hasPopoverContent becomes true (set by handleSlotContent).
218
+ * @private
219
+ * @returns {void}
220
+ */
221
+ private configurePopover;
218
222
  auroPopover: any;
219
223
  updated(properties: any): void;
220
224
  /**
@@ -3942,7 +3942,7 @@ class AuroHelpText extends i {
3942
3942
  }
3943
3943
  }
3944
3944
 
3945
- var formkitVersion = '202605182240';
3945
+ var formkitVersion = '202605190056';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4663,6 +4663,17 @@ class AuroDropdown extends AuroElement {
4663
4663
  this._clearPageInert();
4664
4664
  }
4665
4665
  }
4666
+
4667
+ // Handle desktopModal toggled while the dropdown is already open.
4668
+ // Re-initialize focus trapping and page inert state to match the new mode.
4669
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
4670
+ this.updateFocusTrap();
4671
+ if (this.desktopModal) {
4672
+ this._setPageInert();
4673
+ } else {
4674
+ this._clearPageInert();
4675
+ }
4676
+ }
4666
4677
  }
4667
4678
 
4668
4679
  /**
@@ -4863,6 +4874,14 @@ class AuroDropdown extends AuroElement {
4863
4874
  }
4864
4875
  };
4865
4876
  this.addEventListener('keydown', this._bibTabHandler);
4877
+
4878
+ // Move initial focus into the bib content, matching FocusTrap behavior
4879
+ requestAnimationFrame(() => {
4880
+ const focusables = getFocusableElements(this.bibContent);
4881
+ if (focusables.length) {
4882
+ focusables[0].focus();
4883
+ }
4884
+ });
4866
4885
  } else {
4867
4886
  // Normal desktop: use FocusTrap on the bib element
4868
4887
  this.focusTrap = new FocusTrap(this.bibContent);
@@ -3942,7 +3942,7 @@ class AuroHelpText extends i {
3942
3942
  }
3943
3943
  }
3944
3944
 
3945
- var formkitVersion = '202605182240';
3945
+ var formkitVersion = '202605190056';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4663,6 +4663,17 @@ class AuroDropdown extends AuroElement {
4663
4663
  this._clearPageInert();
4664
4664
  }
4665
4665
  }
4666
+
4667
+ // Handle desktopModal toggled while the dropdown is already open.
4668
+ // Re-initialize focus trapping and page inert state to match the new mode.
4669
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
4670
+ this.updateFocusTrap();
4671
+ if (this.desktopModal) {
4672
+ this._setPageInert();
4673
+ } else {
4674
+ this._clearPageInert();
4675
+ }
4676
+ }
4666
4677
  }
4667
4678
 
4668
4679
  /**
@@ -4863,6 +4874,14 @@ class AuroDropdown extends AuroElement {
4863
4874
  }
4864
4875
  };
4865
4876
  this.addEventListener('keydown', this._bibTabHandler);
4877
+
4878
+ // Move initial focus into the bib content, matching FocusTrap behavior
4879
+ requestAnimationFrame(() => {
4880
+ const focusables = getFocusableElements(this.bibContent);
4881
+ if (focusables.length) {
4882
+ focusables[0].focus();
4883
+ }
4884
+ });
4866
4885
  } else {
4867
4886
  // Normal desktop: use FocusTrap on the bib element
4868
4887
  this.focusTrap = new FocusTrap(this.bibContent);
@@ -3969,7 +3969,7 @@ class AuroHelpText extends i {
3969
3969
  }
3970
3970
  }
3971
3971
 
3972
- var formkitVersion = '202605182240';
3972
+ var formkitVersion = '202605190056';
3973
3973
 
3974
3974
  class AuroElement extends i {
3975
3975
  static get properties() {
@@ -4690,6 +4690,17 @@ class AuroDropdown extends AuroElement {
4690
4690
  this._clearPageInert();
4691
4691
  }
4692
4692
  }
4693
+
4694
+ // Handle desktopModal toggled while the dropdown is already open.
4695
+ // Re-initialize focus trapping and page inert state to match the new mode.
4696
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
4697
+ this.updateFocusTrap();
4698
+ if (this.desktopModal) {
4699
+ this._setPageInert();
4700
+ } else {
4701
+ this._clearPageInert();
4702
+ }
4703
+ }
4693
4704
  }
4694
4705
 
4695
4706
  /**
@@ -4890,6 +4901,14 @@ class AuroDropdown extends AuroElement {
4890
4901
  }
4891
4902
  };
4892
4903
  this.addEventListener('keydown', this._bibTabHandler);
4904
+
4905
+ // Move initial focus into the bib content, matching FocusTrap behavior
4906
+ requestAnimationFrame(() => {
4907
+ const focusables = getFocusableElements(this.bibContent);
4908
+ if (focusables.length) {
4909
+ focusables[0].focus();
4910
+ }
4911
+ });
4893
4912
  } else {
4894
4913
  // Normal desktop: use FocusTrap on the bib element
4895
4914
  this.focusTrap = new FocusTrap(this.bibContent);
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202605182240';
3877
+ var formkitVersion = '202605190056';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4595,6 +4595,17 @@ class AuroDropdown extends AuroElement {
4595
4595
  this._clearPageInert();
4596
4596
  }
4597
4597
  }
4598
+
4599
+ // Handle desktopModal toggled while the dropdown is already open.
4600
+ // Re-initialize focus trapping and page inert state to match the new mode.
4601
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
4602
+ this.updateFocusTrap();
4603
+ if (this.desktopModal) {
4604
+ this._setPageInert();
4605
+ } else {
4606
+ this._clearPageInert();
4607
+ }
4608
+ }
4598
4609
  }
4599
4610
 
4600
4611
  /**
@@ -4795,6 +4806,14 @@ class AuroDropdown extends AuroElement {
4795
4806
  }
4796
4807
  };
4797
4808
  this.addEventListener('keydown', this._bibTabHandler);
4809
+
4810
+ // Move initial focus into the bib content, matching FocusTrap behavior
4811
+ requestAnimationFrame(() => {
4812
+ const focusables = getFocusableElements(this.bibContent);
4813
+ if (focusables.length) {
4814
+ focusables[0].focus();
4815
+ }
4816
+ });
4798
4817
  } else {
4799
4818
  // Normal desktop: use FocusTrap on the bib element
4800
4819
  this.focusTrap = new FocusTrap(this.bibContent);
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202605182240';
3877
+ var formkitVersion = '202605190056';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4595,6 +4595,17 @@ class AuroDropdown extends AuroElement {
4595
4595
  this._clearPageInert();
4596
4596
  }
4597
4597
  }
4598
+
4599
+ // Handle desktopModal toggled while the dropdown is already open.
4600
+ // Re-initialize focus trapping and page inert state to match the new mode.
4601
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
4602
+ this.updateFocusTrap();
4603
+ if (this.desktopModal) {
4604
+ this._setPageInert();
4605
+ } else {
4606
+ this._clearPageInert();
4607
+ }
4608
+ }
4598
4609
  }
4599
4610
 
4600
4611
  /**
@@ -4795,6 +4806,14 @@ class AuroDropdown extends AuroElement {
4795
4806
  }
4796
4807
  };
4797
4808
  this.addEventListener('keydown', this._bibTabHandler);
4809
+
4810
+ // Move initial focus into the bib content, matching FocusTrap behavior
4811
+ requestAnimationFrame(() => {
4812
+ const focusables = getFocusableElements(this.bibContent);
4813
+ if (focusables.length) {
4814
+ focusables[0].focus();
4815
+ }
4816
+ });
4798
4817
  } else {
4799
4818
  // Normal desktop: use FocusTrap on the bib element
4800
4819
  this.focusTrap = new FocusTrap(this.bibContent);