@aurodesignsystem/auro-formkit 5.10.0 → 5.11.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 (77) hide show
  1. package/CHANGELOG.md +55 -15
  2. package/components/bibtemplate/dist/auro-bibtemplate.d.ts +6 -0
  3. package/components/bibtemplate/dist/index.js +12 -0
  4. package/components/bibtemplate/dist/registered.js +12 -0
  5. package/components/checkbox/demo/api.min.js +3 -3
  6. package/components/checkbox/demo/index.min.js +3 -3
  7. package/components/checkbox/dist/index.js +3 -3
  8. package/components/checkbox/dist/registered.js +3 -3
  9. package/components/combobox/demo/api.min.js +1140 -305
  10. package/components/combobox/demo/index.min.js +1140 -305
  11. package/components/combobox/dist/auro-combobox.d.ts +24 -1
  12. package/components/combobox/dist/comboboxKeyboardStrategy.d.ts +6 -0
  13. package/components/combobox/dist/index.js +1082 -264
  14. package/components/combobox/dist/registered.js +1082 -264
  15. package/components/counter/demo/api.min.js +583 -172
  16. package/components/counter/demo/index.min.js +583 -172
  17. package/components/counter/dist/auro-counter.d.ts +8 -0
  18. package/components/counter/dist/buttonVersion.d.ts +1 -1
  19. package/components/counter/dist/iconVersion.d.ts +1 -1
  20. package/components/counter/dist/index.js +583 -172
  21. package/components/counter/dist/registered.js +583 -172
  22. package/components/datepicker/demo/api.md +108 -85
  23. package/components/datepicker/demo/api.min.js +872 -257
  24. package/components/datepicker/demo/index.md +18 -12
  25. package/components/datepicker/demo/index.min.js +872 -257
  26. package/components/datepicker/dist/auro-calendar.d.ts +6 -0
  27. package/components/datepicker/dist/auro-datepicker.d.ts +11 -1
  28. package/components/datepicker/dist/index.js +819 -208
  29. package/components/datepicker/dist/registered.js +819 -208
  30. package/components/dropdown/demo/api.md +15 -17
  31. package/components/dropdown/demo/api.min.js +537 -183
  32. package/components/dropdown/demo/index.min.js +537 -183
  33. package/components/dropdown/dist/auro-dropdown.d.ts +27 -1
  34. package/components/dropdown/dist/auro-dropdownBib.d.ts +87 -0
  35. package/components/dropdown/dist/index.js +514 -160
  36. package/components/dropdown/dist/keyboardUtils.d.ts +18 -0
  37. package/components/dropdown/dist/registered.js +514 -160
  38. package/components/form/README.md +47 -2
  39. package/components/form/demo/api.js +2 -0
  40. package/components/form/demo/api.md +303 -30
  41. package/components/form/demo/api.min.js +69256 -62
  42. package/components/form/demo/index.html +0 -1
  43. package/components/form/demo/index.js +1 -0
  44. package/components/form/demo/index.md +1 -275
  45. package/components/form/demo/index.min.js +69255 -62
  46. package/components/form/demo/readme.md +47 -2
  47. package/components/form/demo/working.html +123 -32
  48. package/components/form/dist/auro-form.d.ts +98 -61
  49. package/components/form/dist/index.js +135 -51
  50. package/components/form/dist/registered.js +135 -51
  51. package/components/input/demo/api.md +1 -0
  52. package/components/input/demo/api.min.js +78 -24
  53. package/components/input/demo/index.min.js +78 -24
  54. package/components/input/dist/base-input.d.ts +34 -0
  55. package/components/input/dist/index.js +78 -24
  56. package/components/input/dist/registered.js +78 -24
  57. package/components/menu/demo/api.md +4 -10
  58. package/components/menu/demo/api.min.js +18 -5
  59. package/components/menu/demo/index.min.js +18 -5
  60. package/components/menu/dist/auro-menuoption.d.ts +0 -8
  61. package/components/menu/dist/iconVersion.d.ts +1 -1
  62. package/components/menu/dist/index.js +18 -5
  63. package/components/menu/dist/registered.js +18 -5
  64. package/components/radio/demo/api.min.js +3 -3
  65. package/components/radio/demo/index.min.js +3 -3
  66. package/components/radio/dist/index.js +3 -3
  67. package/components/radio/dist/registered.js +3 -3
  68. package/components/select/demo/api.js +2 -0
  69. package/components/select/demo/api.md +333 -78
  70. package/components/select/demo/api.min.js +945 -282
  71. package/components/select/demo/index.min.js +933 -282
  72. package/components/select/dist/auro-select.d.ts +26 -0
  73. package/components/select/dist/index.js +881 -247
  74. package/components/select/dist/registered.js +881 -247
  75. package/components/select/dist/selectKeyboardStrategy.d.ts +8 -0
  76. package/custom-elements.json +596 -89
  77. package/package.json +7 -5
@@ -5,6 +5,8 @@ import { property } from 'lit/decorators.js';
5
5
  import { ifDefined } from 'lit/directives/if-defined.js';
6
6
  import { createRef, ref } from 'lit/directives/ref.js';
7
7
  import { repeat } from 'lit/directives/repeat.js';
8
+ import 'lit-html';
9
+ import 'lit-html/directives/unsafe-html.js';
8
10
 
9
11
  let DateFormatter$1 = class DateFormatter {
10
12
 
@@ -845,7 +847,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
845
847
  }
846
848
  }
847
849
 
848
- if (!hasValue && elem.required && elem.touched) {
850
+ if (!hasValue && elem.required && (force || elem.touched)) {
849
851
  elem.validity = 'valueMissing';
850
852
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
851
853
  } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
@@ -869,7 +871,7 @@ let AuroFormValidation$1 = class AuroFormValidation {
869
871
  if (!isCombobox || isCombobox && !elem.persistInput) {
870
872
 
871
873
  // run validation on all inputs since we're going to use them to set the validity of this component
872
- this.auroInputElements.forEach(input => input.validate());
874
+ this.auroInputElements.forEach(input => input.validate(force));
873
875
 
874
876
  // Reset element validity to the validity of the input
875
877
  elem.validity = this.auroInputElements[0].validity;
@@ -1367,11 +1369,11 @@ var classicLayoutStyle = css`.util_displayInline{display:inline}.util_displayInl
1367
1369
 
1368
1370
  var classicLayoutColor = css``;
1369
1371
 
1370
- var snowflakeStyle = css`:host([layout*=snowflake]) [auro-input]{flex:1;text-align:center}:host([layout*=snowflake]) [auro-input]::part(label),:host([layout*=snowflake]) [auro-input]::part(accent-left),:host([layout*=snowflake]) [auro-input]::part(accent-right){display:none}:host([layout*=snowflake]) [auro-input]::part(input){padding-bottom:unset;text-align:center;transition:unset}:host([layout*=snowflake]) [auro-input]::part(wrapper){min-height:unset;max-height:unset;box-shadow:unset;border-radius:unset}:host([layout*=snowflake]) [auro-input]::part(wrapper) .mainContent{padding-bottom:unset}:host([layout*=snowflake]) [auro-input]::part(inputHelpText){display:none}:host([layout*=snowflake]) [auro-input]::part(displayValue){justify-content:center}:host([layout*=snowflake])::part(helpText){text-align:center}:host([layout*=snowflake]) .dpTriggerContent{width:100%}:host([layout*=snowflake]) .wrapper{width:calc(100% - var(--ds-size-400, 2rem));display:flex;flex-direction:row;justify-content:space-between;padding-inline:var(--ds-size-200, 1rem)}:host([layout*=snowflake]) .mainLabel{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:flex;align-items:center}:host([layout*=snowflake]) .mainLabel:is(.hasFocus,.hasValue){padding-block-start:var(--ds-size-75, 0.375rem)}:host([layout*=snowflake]) .inputDivider{height:calc(var(--ds-size-200, 1rem) + var(--ds-size-25, 0.125rem));margin:var(--ds-size-50, 0.25rem) var(--ds-size-75, 0.375rem);width:var(--ds-size-25, 0.125rem)}:host([layout*=snowflake]) .inputSection:not(:is(.disabled,.hasFocus,.hasValue)) .inputDivider{display:none}:host([layout*=snowflake][disabled]){pointer-events:none}`;
1372
+ var snowflakeStyle = css`:host([layout*=snowflake]) [auro-input]{flex:1;text-align:center}:host([layout*=snowflake]) [auro-input]::part(accent-left),:host([layout*=snowflake]) [auro-input]::part(accent-right){display:none}:host([layout*=snowflake]) [auro-input]::part(input){padding-bottom:unset;text-align:center;transition:unset}:host([layout*=snowflake]) [auro-input]::part(wrapper){min-height:unset;max-height:unset;box-shadow:unset;border-radius:unset}:host([layout*=snowflake]) [auro-input]::part(wrapper) .mainContent{padding-bottom:unset}:host([layout*=snowflake]) [auro-input]::part(inputHelpText){display:none}:host([layout*=snowflake]) [auro-input]::part(displayValue){justify-content:center}:host([layout*=snowflake])::part(helpText){text-align:center}:host([layout*=snowflake]) .dpTriggerContent{width:100%}:host([layout*=snowflake]) .wrapper{width:calc(100% - var(--ds-size-400, 2rem));display:flex;flex-direction:row;justify-content:space-between;padding-inline:var(--ds-size-200, 1rem)}:host([layout*=snowflake]) .mainLabel{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:flex;align-items:center}:host([layout*=snowflake]) .mainLabel:is(.hasFocus,.hasValue){padding-block-start:var(--ds-size-75, 0.375rem)}:host([layout*=snowflake]) .inputDivider{height:calc(var(--ds-size-200, 1rem) + var(--ds-size-25, 0.125rem));margin:var(--ds-size-50, 0.25rem) var(--ds-size-75, 0.375rem);width:var(--ds-size-25, 0.125rem)}:host([layout*=snowflake]) .inputSection:not(:is(.disabled,.hasFocus,.hasValue)) .inputDivider{display:none}:host([layout*=snowflake][disabled]){pointer-events:none}`;
1371
1373
 
1372
1374
  var snowflakeColors = css`:host([layout=snowflake]) [auro-dropdown]:not(:is([error],.hasFocus)){--ds-auro-dropdown-trigger-border-color: transparent}`;
1373
1375
 
1374
- var styleCss$7 = css`.body-default{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);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.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);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{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);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.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);font-size:var(--wcss-body-xs-font-size, 0.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-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.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);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem))}.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);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem))}.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);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem))}.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);letter-spacing:var(--wcss-display-md-letter-spacing, 0);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem))}.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);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem))}.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);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem))}.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);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem))}.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);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem))}.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);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem))}.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);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem))}.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);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);font-weight:var(--wcss-heading-xs-weight, 450);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem))}.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);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);font-weight:var(--wcss-heading-2xs-weight, 450);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem))}.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);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));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);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));text-transform:uppercase}.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);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));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);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));text-transform:uppercase}.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);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));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);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));text-transform:uppercase}.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);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendarNavButtons{position:absolute;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.headerDateTo{height:calc(var(--mobile-header-height) - var(--ds-size-300, 1.5rem));padding:var(--ds-size-300, 1.5rem) var(--ds-size-100, 0.5rem) 0 var(--ds-size-200, 1rem)}:host(:not([noRange])) .headerDateTo{position:relative;display:flex;flex:1;flex-direction:column;justify-content:center}:host(:not([noRange])) .headerDateTo:after{position:absolute;top:calc(50% + 10px);left:0;display:block;width:1px;height:var(--ds-size-300, 1.5rem);content:"";transform:translateY(-50%)}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}`;
1376
+ var styleCss$7 = css`.body-default{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);font-size:var(--wcss-body-default-font-size, 1rem);line-height:var(--wcss-body-default-line-height, 1.5rem)}.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);font-size:var(--wcss-body-lg-font-size, 1.125rem);line-height:var(--wcss-body-lg-line-height, 1.625rem)}.body-sm{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);font-size:var(--wcss-body-sm-font-size, 0.875rem);line-height:var(--wcss-body-sm-line-height, 1.25rem)}.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);font-size:var(--wcss-body-xs-font-size, 0.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-weight:var(--wcss-body-weight, 450);letter-spacing:var(--wcss-body-letter-spacing, 0);font-size:var(--wcss-body-2xs-font-size, 0.625rem);line-height:var(--wcss-body-2xs-line-height, 0.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);letter-spacing:var(--wcss-display-2xl-letter-spacing, 0);font-weight:var(--wcss-display-2xl-weight, 300);line-height:var(--wcss-display-2xl-line-height, 1.3);font-size:var(--wcss-display-2xl-font-size, clamp(3.5rem, 6vw, 5.375rem))}.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);letter-spacing:var(--wcss-display-xl-letter-spacing, 0);font-weight:var(--wcss-display-xl-weight, 300);line-height:var(--wcss-display-xl-line-height, 1.3);font-size:var(--wcss-display-xl-font-size, clamp(3rem, 5.3333333333vw, 4.5rem))}.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);letter-spacing:var(--wcss-display-lg-letter-spacing, 0);font-weight:var(--wcss-display-lg-weight, 300);line-height:var(--wcss-display-lg-line-height, 1.3);font-size:var(--wcss-display-lg-font-size, clamp(2.75rem, 4.6666666667vw, 4rem))}.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);letter-spacing:var(--wcss-display-md-letter-spacing, 0);font-weight:var(--wcss-display-md-weight, 300);line-height:var(--wcss-display-md-line-height, 1.3);font-size:var(--wcss-display-md-font-size, clamp(2.5rem, 4vw, 3.5rem))}.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);letter-spacing:var(--wcss-display-sm-letter-spacing, 0);font-weight:var(--wcss-display-sm-weight, 300);line-height:var(--wcss-display-sm-line-height, 1.3);font-size:var(--wcss-display-sm-font-size, clamp(2rem, 3.6666666667vw, 3rem))}.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);letter-spacing:var(--wcss-display-xs-letter-spacing, 0);font-weight:var(--wcss-display-xs-weight, 300);line-height:var(--wcss-display-xs-line-height, 1.3);font-size:var(--wcss-display-xs-font-size, clamp(1.75rem, 3vw, 2.375rem))}.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);letter-spacing:var(--wcss-heading-xl-letter-spacing, 0);font-weight:var(--wcss-heading-xl-weight, 300);line-height:var(--wcss-heading-xl-line-height, 1.3);font-size:var(--wcss-heading-xl-font-size, clamp(2rem, 3vw, 2.5rem))}.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);letter-spacing:var(--wcss-heading-lg-letter-spacing, 0);font-weight:var(--wcss-heading-lg-weight, 300);line-height:var(--wcss-heading-lg-line-height, 1.3);font-size:var(--wcss-heading-lg-font-size, clamp(1.75rem, 2.6666666667vw, 2.25rem))}.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);letter-spacing:var(--wcss-heading-md-letter-spacing, 0);font-weight:var(--wcss-heading-md-weight, 300);line-height:var(--wcss-heading-md-line-height, 1.3);font-size:var(--wcss-heading-md-font-size, clamp(1.625rem, 2.3333333333vw, 1.75rem))}.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);letter-spacing:var(--wcss-heading-sm-letter-spacing, 0);font-weight:var(--wcss-heading-sm-weight, 300);line-height:var(--wcss-heading-sm-line-height, 1.3);font-size:var(--wcss-heading-sm-font-size, clamp(1.375rem, 2vw, 1.5rem))}.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);letter-spacing:var(--wcss-heading-xs-letter-spacing, 0);font-weight:var(--wcss-heading-xs-weight, 450);line-height:var(--wcss-heading-xs-line-height, 1.3);font-size:var(--wcss-heading-xs-font-size, clamp(1.25rem, 1.6666666667vw, 1.25rem))}.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);letter-spacing:var(--wcss-heading-2xs-letter-spacing, 0);font-weight:var(--wcss-heading-2xs-weight, 450);line-height:var(--wcss-heading-2xs-line-height, 1.3);font-size:var(--wcss-heading-2xs-font-size, clamp(1.125rem, 1.5vw, 1.125rem))}.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);letter-spacing:var(--wcss-accent-2xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-2xl-weight, 450);line-height:var(--wcss-accent-2xl-line-height, 1);font-size:var(--wcss-accent-2xl-font-size, clamp(2rem, 3.1666666667vw, 2.375rem));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);letter-spacing:var(--wcss-accent-xl-letter-spacing, 0.05em);font-weight:var(--wcss-accent-xl-weight, 450);line-height:var(--wcss-accent-xl-line-height, 1.3);font-size:var(--wcss-accent-xl-font-size, clamp(1.625rem, 2.3333333333vw, 2rem));text-transform:uppercase}.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);letter-spacing:var(--wcss-accent-lg-letter-spacing, 0.05em);font-weight:var(--wcss-accent-lg-weight, 450);line-height:var(--wcss-accent-lg-line-height, 1.3);font-size:var(--wcss-accent-lg-font-size, clamp(1.5rem, 2.1666666667vw, 1.75rem));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);letter-spacing:var(--wcss-accent-md-letter-spacing, 0.05em);font-weight:var(--wcss-accent-md-weight, 500);line-height:var(--wcss-accent-md-line-height, 1.3);font-size:var(--wcss-accent-md-font-size, clamp(1.375rem, 1.8333333333vw, 1.5rem));text-transform:uppercase}.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);letter-spacing:var(--wcss-accent-sm-letter-spacing, 0.05em);font-weight:var(--wcss-accent-sm-weight, 500);line-height:var(--wcss-accent-sm-line-height, 1.3);font-size:var(--wcss-accent-sm-font-size, clamp(1.125rem, 1.5vw, 1.25rem));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);letter-spacing:var(--wcss-accent-xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-xs-weight, 500);line-height:var(--wcss-accent-xs-line-height, 1.3);font-size:var(--wcss-accent-xs-font-size, clamp(1rem, 1.3333333333vw, 1rem));text-transform:uppercase}.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);letter-spacing:var(--wcss-accent-2xs-letter-spacing, 0.1em);font-weight:var(--wcss-accent-2xs-weight, 450);line-height:var(--wcss-accent-2xs-line-height, 1.3);font-size:var(--wcss-accent-2xs-font-size, clamp(0.875rem, 1.1666666667vw, 0.875rem));text-transform:uppercase}:host{--calendar-width: 336px;--mobile-footer-height: 150px;--mobile-header-height: 68px;height:100vh;height:100dvh}.calendars{display:flex;flex-direction:row}.calendarNavButtons{position:absolute;top:var(--ds-size-200, 1rem);right:var(--ds-size-50, 0.25rem);left:var(--ds-size-50, 0.25rem)}.calendarNavBtn{display:flex;width:var(--ds-size-500, 2.5rem);height:var(--ds-size-500, 2.5rem);align-items:center;justify-content:center;border-width:1px;border-style:solid;border-radius:50%;cursor:pointer}.prevMonth,.nextMonth{position:absolute;top:0}.prevMonth{left:0}.nextMonth{right:0}.headerActions{padding:0 var(--ds-size-200, 1rem)}.mobileHeader{width:100%;height:var(--mobile-header-height);z-index:1;align-items:center;flex-direction:row}.headerDateFrom,.headerDateTo{display:flex;height:var(--mobile-header-height);flex:1;flex-direction:column;justify-content:center;padding:0 var(--ds-size-150, 0.75rem) 0 var(--ds-size-200, 1rem)}.mobileDateLabel{padding:var(--ds-size-25, 0.125rem) 0}.mobileFooter{display:none;width:100%;align-items:flex-end;flex-direction:column;justify-content:flex-end}.mobileFooterActions{position:relative;bottom:0;left:50%;display:none;width:calc(100% - var(--ds-size-200, 1rem)*2);align-items:flex-end;flex-direction:column;justify-content:flex-end;padding:var(--ds-size-150) calc(var(--ds-size-200, 1rem));transform:translateX(-50%)}.mobileFooterActions auro-button{width:100%}:host([isfullscreen]){width:100%;max-height:100dvh;overflow:hidden}:host([isfullscreen]) .prevMonth,:host([isfullscreen]) .nextMonth{display:none}:host([isfullscreen]) .mobileHeader,:host([isfullscreen]) .mobileFooter,:host([isfullscreen]) .mobileFooterActions{display:flex}:host([isfullscreen]) .calendarWrapper{display:flex;flex-direction:column}:host([isfullscreen]) .calendars{display:flex;flex-direction:column;flex:1;align-items:center;width:100%;overscroll-behavior:contain}:host([isfullscreen]) .calendars:after{display:block;width:100%;height:var(--mobile-footer-height);content:""}`;
1375
1377
 
1376
1378
  var colorCss$7 = css`.calendarNavBtn{border-color:var(--ds-auro-calendar-nav-btn-border-color);background-color:var(--ds-auro-calendar-nav-btn-container-color);color:var(--ds-auro-calendar-nav-btn-chevron-color)}.calendarNavBtn:hover{--ds-auro-calendar-nav-btn-container-color: var(--ds-advanced-color-state-background-hover, #f2f2f2);--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:focus{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}.calendarNavBtn:active{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a);box-shadow:inset 0 0 0 1px var(--ds-auro-calendar-nav-btn-border-color)}.mobileHeader{background-color:var(--ds-auro-calendar-mobile-header-container-color)}.mobileDateLabel{color:var(--ds-auro-calendar-mobile-header-text-color)}:host(:not([noRange])) .headerDateTo:after{background-color:var(--ds-auro-calendar-mobile-header-divider-color)}::slotted([slot="bib.fullscreen.fromStr"]),::slotted([slot=mobileDateToStr]){color:var(--ds-auro-datepicker-placeholder-color)}@media screen and (max-width: 576px){.calendarNavBtn{--ds-auro-calendar-nav-btn-border-color: var(--ds-basic-color-brand-primary, #01426a)}}`;
1377
1379
 
@@ -9170,6 +9172,18 @@ class AuroBibtemplate extends LitElement {
9170
9172
  this.removeEventListener('touchmove', this.preventBodyScroll, { passive: false });
9171
9173
  }
9172
9174
 
9175
+ /**
9176
+ * Focuses the close button inside the bibtemplate's shadow DOM.
9177
+ * Used by parent components to set initial focus when the fullscreen dialog opens.
9178
+ * @returns {void}
9179
+ */
9180
+ focusCloseButton() {
9181
+ const closeBtn = this.shadowRoot.querySelector('#closeButton');
9182
+ if (closeBtn) {
9183
+ closeBtn.focus();
9184
+ }
9185
+ }
9186
+
9173
9187
  onCloseButtonClick() {
9174
9188
  this.dispatchEvent(new Event("close-click", { bubbles: true,
9175
9189
  composed: true }));
@@ -9228,7 +9242,7 @@ class AuroBibtemplate extends LitElement {
9228
9242
  }
9229
9243
  }
9230
9244
 
9231
- var formkitVersion$2 = '202602140013';
9245
+ var formkitVersion$2 = '202603102257';
9232
9246
 
9233
9247
  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}
9234
9248
  `,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}}
@@ -9588,6 +9602,16 @@ class AuroCalendar extends RangeDatepicker {
9588
9602
  return renderedHtml;
9589
9603
  }
9590
9604
 
9605
+ /**
9606
+ * Focuses the close button inside the calendar's bibtemplate.
9607
+ * Used by datepicker to set initial focus when the fullscreen dialog opens.
9608
+ * @returns {void}
9609
+ */
9610
+ focusCloseButton() {
9611
+ const bibtemplate = this.shadowRoot.querySelector(this.bibtemplateTag._$litStatic$);
9612
+ if (bibtemplate) bibtemplate.focusCloseButton();
9613
+ }
9614
+
9591
9615
  /**
9592
9616
  * Request the calendar be scrolled to a given date.
9593
9617
  * @param {String} date - The date to scroll into view.
@@ -9652,31 +9676,34 @@ class AuroCalendar extends RangeDatepicker {
9652
9676
  @close-click="${this.utilCal.requestDismiss}">
9653
9677
  <span slot="ariaLabel.close">${this.slots["ariaLabel.bib.close"]}</span>
9654
9678
 
9655
- <span slot="header">${this.slots["bib.fullscreen.headline"]}</span>
9679
+ ${this.slots["bib.fullscreen.headline"] ? html$1`<span slot="header">${this.slots["bib.fullscreen.headline"]}</span>` : ''}
9656
9680
 
9657
9681
  <div slot="subheader" class="mobileHeader">
9658
9682
  <div class="headerDateFrom">
9659
- <span class="mobileDateLabel body-xs">${this.slots["bib.fullscreen.dateLabel"]}</span>
9683
+ ${this.slots["bib.fullscreen.dateLabel"] ? html$1`<span class="mobileDateLabel body-xs">${this.slots["bib.fullscreen.dateLabel"]}</span>` : ''}
9684
+ ${this.slots["bib.fullscreen.fromLabel"] ? html$1`<span class="mobileDateLabel body-xs">${this.slots["bib.fullscreen.fromLabel"]}</span>` : ''}
9660
9685
  <slot name="bib.fullscreen.fromStr"></slot>
9661
9686
  </div>
9662
- <div class="headerDateTo"><slot name="mobileDateToStr"></slot></div>
9687
+ <div class="headerDateTo">
9688
+ ${this.slots["bib.fullscreen.toLabel"] ? html$1`<span class="mobileDateLabel body-xs">${this.slots["bib.fullscreen.toLabel"]}</span>` : ''}
9689
+ <slot name="bib.fullscreen.toStr"></slot>
9690
+ </div>
9663
9691
  </div>
9664
9692
 
9665
9693
  <div class="calendarWrapper">
9666
-
9667
9694
  <div class="calendars">
9668
9695
  ${this.renderAllCalendars()}
9669
9696
  </div>
9670
9697
  <div class="calendarNavButtons">
9671
9698
  ${this.showPrevMonthBtn ? html$1`
9672
- <button class="calendarNavBtn prevMonth" @click="${this.handlePrevMonth}">
9673
- ${this.util.generateIconHtml(chevronLeft)}
9674
- </button>
9699
+ <button class="calendarNavBtn prevMonth" @click="${this.handlePrevMonth}">
9700
+ ${this.util.generateIconHtml(chevronLeft)}
9701
+ </button>
9675
9702
  ` : undefined}
9676
9703
  ${this.showNextMonthBtn ? html$1`
9677
- <button class="calendarNavBtn nextMonth" @click="${this.handleNextMonth}">
9678
- ${this.util.generateIconHtml(chevronRight)}
9679
- </button>
9704
+ <button class="calendarNavBtn nextMonth" @click="${this.handleNextMonth}">
9705
+ ${this.util.generateIconHtml(chevronRight)}
9706
+ </button>
9680
9707
  ` : undefined}
9681
9708
  </div>
9682
9709
  </div>
@@ -11418,11 +11445,9 @@ const computePosition = (reference, floating, options) => {
11418
11445
  /* eslint-disable line-comment-position, no-inline-comments */
11419
11446
 
11420
11447
 
11421
-
11422
11448
  const MAX_CONFIGURATION_COUNT = 10;
11423
11449
 
11424
11450
  class AuroFloatingUI {
11425
-
11426
11451
  /**
11427
11452
  * @private
11428
11453
  */
@@ -11437,7 +11462,11 @@ class AuroFloatingUI {
11437
11462
  * @private
11438
11463
  */
11439
11464
  static setupMousePressChecker() {
11440
- if (!AuroFloatingUI.isMousePressHandlerInitialized && window && window.addEventListener) {
11465
+ if (
11466
+ !AuroFloatingUI.isMousePressHandlerInitialized &&
11467
+ window &&
11468
+ window.addEventListener
11469
+ ) {
11441
11470
  AuroFloatingUI.isMousePressHandlerInitialized = true;
11442
11471
 
11443
11472
  // Track timeout for isMousePressed reset to avoid race conditions
@@ -11445,7 +11474,7 @@ class AuroFloatingUI {
11445
11474
  AuroFloatingUI._mousePressedTimeout = null;
11446
11475
  }
11447
11476
  const mouseEventGlobalHandler = (event) => {
11448
- const isPressed = event.type === 'mousedown';
11477
+ const isPressed = event.type === "mousedown";
11449
11478
  if (isPressed) {
11450
11479
  // Clear any pending timeout to prevent race condition
11451
11480
  if (AuroFloatingUI._mousePressedTimeout !== null) {
@@ -11464,8 +11493,8 @@ class AuroFloatingUI {
11464
11493
  }
11465
11494
  };
11466
11495
 
11467
- window.addEventListener('mousedown', mouseEventGlobalHandler);
11468
- window.addEventListener('mouseup', mouseEventGlobalHandler);
11496
+ window.addEventListener("mousedown", mouseEventGlobalHandler);
11497
+ window.addEventListener("mouseup", mouseEventGlobalHandler);
11469
11498
  }
11470
11499
  }
11471
11500
 
@@ -11513,11 +11542,12 @@ class AuroFloatingUI {
11513
11542
  // mirror the boxsize from bibSizer
11514
11543
  if (this.element.bibSizer && this.element.matchWidth) {
11515
11544
  const sizerStyle = window.getComputedStyle(this.element.bibSizer);
11516
- const bibContent = this.element.bib.shadowRoot.querySelector(".container");
11517
- if (sizerStyle.width !== '0px') {
11545
+ const bibContent =
11546
+ this.element.bib.shadowRoot.querySelector(".container");
11547
+ if (sizerStyle.width !== "0px") {
11518
11548
  bibContent.style.width = sizerStyle.width;
11519
11549
  }
11520
- if (sizerStyle.height !== '0px') {
11550
+ if (sizerStyle.height !== "0px") {
11521
11551
  bibContent.style.height = sizerStyle.height;
11522
11552
  }
11523
11553
  bibContent.style.maxWidth = sizerStyle.maxWidth;
@@ -11535,28 +11565,34 @@ class AuroFloatingUI {
11535
11565
  * @returns {String} The positioning strategy, one of 'fullscreen', 'floating', 'cover'.
11536
11566
  */
11537
11567
  getPositioningStrategy() {
11538
- const breakpoint = this.element.bib.mobileFullscreenBreakpoint || this.element.floaterConfig?.fullscreenBreakpoint;
11568
+ const breakpoint =
11569
+ this.element.bib.mobileFullscreenBreakpoint ||
11570
+ this.element.floaterConfig?.fullscreenBreakpoint;
11539
11571
  switch (this.behavior) {
11540
11572
  case "tooltip":
11541
11573
  return "floating";
11542
11574
  case "dialog":
11543
11575
  case "drawer":
11544
11576
  if (breakpoint) {
11545
- const smallerThanBreakpoint = window.matchMedia(`(max-width: ${breakpoint})`).matches;
11577
+ const smallerThanBreakpoint = window.matchMedia(
11578
+ `(max-width: ${breakpoint})`,
11579
+ ).matches;
11546
11580
 
11547
11581
  this.element.expanded = smallerThanBreakpoint;
11548
11582
  }
11549
11583
  if (this.element.nested) {
11550
11584
  return "cover";
11551
11585
  }
11552
- return 'fullscreen';
11586
+ return "fullscreen";
11553
11587
  case "dropdown":
11554
11588
  case undefined:
11555
11589
  case null:
11556
11590
  if (breakpoint) {
11557
- const smallerThanBreakpoint = window.matchMedia(`(max-width: ${breakpoint})`).matches;
11591
+ const smallerThanBreakpoint = window.matchMedia(
11592
+ `(max-width: ${breakpoint})`,
11593
+ ).matches;
11558
11594
  if (smallerThanBreakpoint) {
11559
- return 'fullscreen';
11595
+ return "fullscreen";
11560
11596
  }
11561
11597
  }
11562
11598
  return "floating";
@@ -11577,37 +11613,39 @@ class AuroFloatingUI {
11577
11613
  const strategy = this.getPositioningStrategy();
11578
11614
  this.configureBibStrategy(strategy);
11579
11615
 
11580
- if (strategy === 'floating') {
11616
+ if (strategy === "floating") {
11581
11617
  this.mirrorSize();
11582
11618
  // Define the middlware for the floater configuration
11583
11619
  const middleware = [
11584
11620
  offset(this.element.floaterConfig?.offset || 0),
11585
- ...this.element.floaterConfig?.shift ? [shift()] : [], // Add shift middleware if shift is enabled.
11586
- ...this.element.floaterConfig?.flip ? [flip()] : [], // Add flip middleware if flip is enabled.
11587
- ...this.element.floaterConfig?.autoPlacement ? [autoPlacement()] : [], // Add autoPlacement middleware if autoPlacement is enabled.
11621
+ ...(this.element.floaterConfig?.shift ? [shift()] : []), // Add shift middleware if shift is enabled.
11622
+ ...(this.element.floaterConfig?.flip ? [flip()] : []), // Add flip middleware if flip is enabled.
11623
+ ...(this.element.floaterConfig?.autoPlacement ? [autoPlacement()] : []), // Add autoPlacement middleware if autoPlacement is enabled.
11588
11624
  ];
11589
11625
 
11590
11626
  // Compute the position of the bib
11591
11627
  computePosition(this.element.trigger, this.element.bib, {
11592
- strategy: this.element.floaterConfig?.strategy || 'fixed',
11628
+ strategy: this.element.floaterConfig?.strategy || "fixed",
11593
11629
  placement: this.element.floaterConfig?.placement,
11594
- middleware: middleware || []
11595
- }).then(({ x, y }) => { // eslint-disable-line id-length
11630
+ middleware: middleware || [],
11631
+ }).then(({ x, y }) => {
11632
+ // eslint-disable-line id-length
11596
11633
  Object.assign(this.element.bib.style, {
11597
11634
  left: `${x}px`,
11598
11635
  top: `${y}px`,
11599
11636
  });
11600
11637
  });
11601
- } else if (strategy === 'cover') {
11638
+ } else if (strategy === "cover") {
11602
11639
  // Compute the position of the bib
11603
11640
  computePosition(this.element.parentNode, this.element.bib, {
11604
- placement: 'bottom-start'
11605
- }).then(({ x, y }) => { // eslint-disable-line id-length
11641
+ placement: "bottom-start",
11642
+ }).then(({ x, y }) => {
11643
+ // eslint-disable-line id-length
11606
11644
  Object.assign(this.element.bib.style, {
11607
11645
  left: `${x}px`,
11608
11646
  top: `${y - this.element.parentNode.offsetHeight}px`,
11609
11647
  width: `${this.element.parentNode.offsetWidth}px`,
11610
- height: `${this.element.parentNode.offsetHeight}px`
11648
+ height: `${this.element.parentNode.offsetHeight}px`,
11611
11649
  });
11612
11650
  });
11613
11651
  }
@@ -11620,12 +11658,12 @@ class AuroFloatingUI {
11620
11658
  */
11621
11659
  lockScroll(lock = true) {
11622
11660
  if (lock) {
11623
- document.body.style.overflow = 'hidden'; // hide body's scrollbar
11661
+ document.body.style.overflow = "hidden"; // hide body's scrollbar
11624
11662
 
11625
11663
  // Move `bib` by the amount the viewport is shifted to stay aligned in fullscreen.
11626
11664
  this.element.bib.style.transform = `translateY(${window?.visualViewport?.offsetTop}px)`;
11627
11665
  } else {
11628
- document.body.style.overflow = '';
11666
+ document.body.style.overflow = "";
11629
11667
  }
11630
11668
  }
11631
11669
 
@@ -11639,23 +11677,24 @@ class AuroFloatingUI {
11639
11677
  * @param {string} strategy - The positioning strategy ('fullscreen' or 'floating').
11640
11678
  */
11641
11679
  configureBibStrategy(value) {
11642
- if (value === 'fullscreen') {
11680
+ if (value === "fullscreen") {
11643
11681
  this.element.isBibFullscreen = true;
11644
11682
  // reset the prev position
11645
- this.element.bib.setAttribute('isfullscreen', "");
11646
- this.element.bib.style.position = 'fixed';
11683
+ this.element.bib.setAttribute("isfullscreen", "");
11684
+ this.element.bib.style.position = "fixed";
11647
11685
  this.element.bib.style.top = "0px";
11648
11686
  this.element.bib.style.left = "0px";
11649
- this.element.bib.style.width = '';
11650
- this.element.bib.style.height = '';
11651
- this.element.style.contain = '';
11687
+ this.element.bib.style.width = "";
11688
+ this.element.bib.style.height = "";
11689
+ this.element.style.contain = "";
11652
11690
 
11653
11691
  // reset the size that was mirroring `size` css-part
11654
- const bibContent = this.element.bib.shadowRoot.querySelector(".container");
11692
+ const bibContent =
11693
+ this.element.bib.shadowRoot.querySelector(".container");
11655
11694
  if (bibContent) {
11656
- bibContent.style.width = '';
11657
- bibContent.style.height = '';
11658
- bibContent.style.maxWidth = '';
11695
+ bibContent.style.width = "";
11696
+ bibContent.style.height = "";
11697
+ bibContent.style.maxWidth = "";
11659
11698
  bibContent.style.maxHeight = `${window?.visualViewport?.height}px`;
11660
11699
  this.configureTrial = 0;
11661
11700
  } else if (this.configureTrial < MAX_CONFIGURATION_COUNT) {
@@ -11670,21 +11709,26 @@ class AuroFloatingUI {
11670
11709
  this.lockScroll(true);
11671
11710
  }
11672
11711
  } else {
11673
- this.element.bib.style.position = '';
11674
- this.element.bib.removeAttribute('isfullscreen');
11712
+ this.element.bib.style.position = "";
11713
+ this.element.bib.removeAttribute("isfullscreen");
11675
11714
  this.element.isBibFullscreen = false;
11676
- this.element.style.contain = 'layout';
11715
+ this.element.style.contain = "layout";
11677
11716
  }
11678
11717
 
11679
11718
  const isChanged = this.strategy && this.strategy !== value;
11680
11719
  this.strategy = value;
11681
11720
  if (isChanged) {
11682
- const event = new CustomEvent(this.eventPrefix ? `${this.eventPrefix}-strategy-change` : 'strategy-change', {
11683
- detail: {
11684
- value,
11721
+ const event = new CustomEvent(
11722
+ this.eventPrefix
11723
+ ? `${this.eventPrefix}-strategy-change`
11724
+ : "strategy-change",
11725
+ {
11726
+ detail: {
11727
+ value,
11728
+ },
11729
+ composed: true,
11685
11730
  },
11686
- composed: true
11687
- });
11731
+ );
11688
11732
 
11689
11733
  this.element.dispatchEvent(event);
11690
11734
  }
@@ -11716,19 +11760,24 @@ class AuroFloatingUI {
11716
11760
  return;
11717
11761
  }
11718
11762
 
11719
- if (this.element.noHideOnThisFocusLoss ||
11720
- this.element.hasAttribute('noHideOnThisFocusLoss')) {
11763
+ if (
11764
+ this.element.noHideOnThisFocusLoss ||
11765
+ this.element.hasAttribute("noHideOnThisFocusLoss")
11766
+ ) {
11721
11767
  return;
11722
11768
  }
11723
11769
 
11724
11770
  const { activeElement } = document;
11725
11771
  // if focus is still inside of trigger or bib, do not close
11726
- if (this.element.contains(activeElement) || this.element.bib?.contains(activeElement)) {
11772
+ if (
11773
+ this.element.contains(activeElement) ||
11774
+ this.element.bib?.contains(activeElement)
11775
+ ) {
11727
11776
  return;
11728
11777
  }
11729
11778
 
11730
11779
  // if fullscreen bib is in fullscreen mode, do not close
11731
- if (this.element.bib.hasAttribute('isfullscreen')) {
11780
+ if (this.element.bib.hasAttribute("isfullscreen")) {
11732
11781
  return;
11733
11782
  }
11734
11783
 
@@ -11740,12 +11789,27 @@ class AuroFloatingUI {
11740
11789
  this.focusHandler = () => this.handleFocusLoss();
11741
11790
 
11742
11791
  this.clickHandler = (evt) => {
11743
- if ((!evt.composedPath().includes(this.element.trigger) &&
11744
- !evt.composedPath().includes(this.element.bib)) ||
11745
- (this.element.bib.backdrop && evt.composedPath().includes(this.element.bib.backdrop))) {
11746
- const existedVisibleFloatingUI = document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
11792
+ // When the bib is fullscreen (modal dialog), don't close on outside
11793
+ // clicks. VoiceOver's synthetic click events inside a top-layer modal
11794
+ // <dialog> may not include the bib in composedPath(), causing false
11795
+ // positives. This mirrors the fullscreen guard in handleFocusLoss().
11796
+ if (this.element.bib && this.element.bib.hasAttribute("isfullscreen")) {
11797
+ return;
11798
+ }
11799
+
11800
+ if (
11801
+ (!evt.composedPath().includes(this.element.trigger) &&
11802
+ !evt.composedPath().includes(this.element.bib)) ||
11803
+ (this.element.bib.backdrop &&
11804
+ evt.composedPath().includes(this.element.bib.backdrop))
11805
+ ) {
11806
+ const existedVisibleFloatingUI =
11807
+ document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
11747
11808
 
11748
- if (existedVisibleFloatingUI && existedVisibleFloatingUI.element.isPopoverVisible) {
11809
+ if (
11810
+ existedVisibleFloatingUI &&
11811
+ existedVisibleFloatingUI.element.isPopoverVisible
11812
+ ) {
11749
11813
  // if something else is open, close that
11750
11814
  existedVisibleFloatingUI.hideBib();
11751
11815
  document.expandedAuroFormkitDropdown = null;
@@ -11758,9 +11822,14 @@ class AuroFloatingUI {
11758
11822
 
11759
11823
  // ESC key handler
11760
11824
  this.keyDownHandler = (evt) => {
11761
- if (evt.key === 'Escape' && this.element.isPopoverVisible) {
11762
- const existedVisibleFloatingUI = document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
11763
- if (existedVisibleFloatingUI && existedVisibleFloatingUI !== this && existedVisibleFloatingUI.element.isPopoverVisible) {
11825
+ if (evt.key === "Escape" && this.element.isPopoverVisible) {
11826
+ const existedVisibleFloatingUI =
11827
+ document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
11828
+ if (
11829
+ existedVisibleFloatingUI &&
11830
+ existedVisibleFloatingUI !== this &&
11831
+ existedVisibleFloatingUI.element.isPopoverVisible
11832
+ ) {
11764
11833
  // if something else is open, let it handle itself
11765
11834
  return;
11766
11835
  }
@@ -11768,17 +11837,17 @@ class AuroFloatingUI {
11768
11837
  }
11769
11838
  };
11770
11839
 
11771
- if (this.behavior !== 'drawer' && this.behavior !== 'dialog') {
11840
+ if (this.behavior !== "drawer" && this.behavior !== "dialog") {
11772
11841
  // Add event listeners using the stored references
11773
- document.addEventListener('focusin', this.focusHandler);
11842
+ document.addEventListener("focusin", this.focusHandler);
11774
11843
  }
11775
11844
 
11776
- document.addEventListener('keydown', this.keyDownHandler);
11845
+ document.addEventListener("keydown", this.keyDownHandler);
11777
11846
 
11778
11847
  // send this task to the end of queue to prevent conflicting
11779
11848
  // it conflicts if showBib gets call from a button that's not this.element.trigger
11780
11849
  setTimeout(() => {
11781
- window.addEventListener('click', this.clickHandler);
11850
+ window.addEventListener("click", this.clickHandler);
11782
11851
  }, 0);
11783
11852
  }
11784
11853
 
@@ -11786,34 +11855,38 @@ class AuroFloatingUI {
11786
11855
  // Remove event listeners if they exist
11787
11856
 
11788
11857
  if (this.focusHandler) {
11789
- document.removeEventListener('focusin', this.focusHandler);
11858
+ document.removeEventListener("focusin", this.focusHandler);
11790
11859
  this.focusHandler = null;
11791
11860
  }
11792
11861
 
11793
11862
  if (this.clickHandler) {
11794
- window.removeEventListener('click', this.clickHandler);
11863
+ window.removeEventListener("click", this.clickHandler);
11795
11864
  this.clickHandler = null;
11796
11865
  }
11797
11866
 
11798
11867
  if (this.keyDownHandler) {
11799
- document.removeEventListener('keydown', this.keyDownHandler);
11868
+ document.removeEventListener("keydown", this.keyDownHandler);
11800
11869
  this.keyDownHandler = null;
11801
11870
  }
11802
11871
  }
11803
11872
 
11804
11873
  handleUpdate(changedProperties) {
11805
- if (changedProperties.has('isPopoverVisible')) {
11874
+ if (changedProperties.has("isPopoverVisible")) {
11806
11875
  this.updateState();
11807
11876
  }
11808
11877
  }
11809
11878
 
11810
11879
  updateCurrentExpandedDropdown() {
11811
11880
  // Close any other dropdown that is already open
11812
- const existedVisibleFloatingUI = document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
11813
- if (existedVisibleFloatingUI && existedVisibleFloatingUI !== this &&
11881
+ const existedVisibleFloatingUI =
11882
+ document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
11883
+ if (
11884
+ existedVisibleFloatingUI &&
11885
+ existedVisibleFloatingUI !== this &&
11814
11886
  existedVisibleFloatingUI.element.isPopoverVisible &&
11815
- document.expandedAuroFloater.eventPrefix === this.eventPrefix) {
11816
- document.expandedAuroFloater.hideBib();
11887
+ existedVisibleFloatingUI.eventPrefix === this.eventPrefix
11888
+ ) {
11889
+ existedVisibleFloatingUI.hideBib();
11817
11890
  }
11818
11891
 
11819
11892
  document.expandedAuroFloater = this;
@@ -11822,7 +11895,7 @@ class AuroFloatingUI {
11822
11895
  showBib() {
11823
11896
  if (!this.element.disabled && !this.showing) {
11824
11897
  this.updateCurrentExpandedDropdown();
11825
- this.element.triggerChevron?.setAttribute('data-expanded', true);
11898
+ this.element.triggerChevron?.setAttribute("data-expanded", true);
11826
11899
 
11827
11900
  // prevent double showing: isPopovervisible gets first and showBib gets called later
11828
11901
  if (!this.showing) {
@@ -11836,9 +11909,13 @@ class AuroFloatingUI {
11836
11909
  }
11837
11910
 
11838
11911
  // Setup auto update to handle resize and scroll
11839
- this.element.cleanup = autoUpdate(this.element.trigger || this.element.parentNode, this.element.bib, () => {
11840
- this.position();
11841
- });
11912
+ this.element.cleanup = autoUpdate(
11913
+ this.element.trigger || this.element.parentNode,
11914
+ this.element.bib,
11915
+ () => {
11916
+ this.position();
11917
+ },
11918
+ );
11842
11919
  }
11843
11920
  }
11844
11921
 
@@ -11849,7 +11926,7 @@ class AuroFloatingUI {
11849
11926
  hideBib(eventType = "unknown") {
11850
11927
  if (!this.element.disabled && !this.element.noToggle) {
11851
11928
  this.lockScroll(false);
11852
- this.element.triggerChevron?.removeAttribute('data-expanded');
11929
+ this.element.triggerChevron?.removeAttribute("data-expanded");
11853
11930
 
11854
11931
  if (this.element.isPopoverVisible) {
11855
11932
  this.element.isPopoverVisible = false;
@@ -11869,13 +11946,16 @@ class AuroFloatingUI {
11869
11946
  * @param {String} eventType - The event type that triggered the toggle action.
11870
11947
  */
11871
11948
  dispatchEventDropdownToggle(eventType) {
11872
- const event = new CustomEvent(this.eventPrefix ? `${this.eventPrefix}-toggled` : 'toggled', {
11873
- detail: {
11874
- expanded: this.showing,
11875
- eventType: eventType || "unknown",
11949
+ const event = new CustomEvent(
11950
+ this.eventPrefix ? `${this.eventPrefix}-toggled` : "toggled",
11951
+ {
11952
+ detail: {
11953
+ expanded: this.showing,
11954
+ eventType: eventType || "unknown",
11955
+ },
11956
+ composed: true,
11876
11957
  },
11877
- composed: true
11878
- });
11958
+ );
11879
11959
 
11880
11960
  this.element.dispatchEvent(event);
11881
11961
  }
@@ -11887,12 +11967,15 @@ class AuroFloatingUI {
11887
11967
  this.showBib();
11888
11968
  }
11889
11969
 
11890
- const event = new CustomEvent(this.eventPrefix ? `${this.eventPrefix}-triggerClick` : "triggerClick", {
11891
- composed: true,
11892
- detail: {
11893
- expanded: this.element.isPopoverVisible
11894
- }
11895
- });
11970
+ const event = new CustomEvent(
11971
+ this.eventPrefix ? `${this.eventPrefix}-triggerClick` : "triggerClick",
11972
+ {
11973
+ composed: true,
11974
+ detail: {
11975
+ expanded: this.element.isPopoverVisible,
11976
+ },
11977
+ },
11978
+ );
11896
11979
 
11897
11980
  this.element.dispatchEvent(event);
11898
11981
  }
@@ -11900,30 +11983,32 @@ class AuroFloatingUI {
11900
11983
  handleEvent(event) {
11901
11984
  if (!this.element.disableEventShow) {
11902
11985
  switch (event.type) {
11903
- case 'keydown':
11986
+ case "keydown": {
11904
11987
  // Support both Enter and Space keys for accessibility
11905
11988
  // Space is included as it's expected behavior for interactive elements
11906
11989
 
11907
11990
  const origin = event.composedPath()[0];
11908
- if (event.key === 'Enter' || event.key === ' ' && (!origin || origin.tagName !== "INPUT")) {
11909
-
11991
+ if (
11992
+ event.key === "Enter" ||
11993
+ (event.key === " " && (!origin || origin.tagName !== "INPUT"))
11994
+ ) {
11910
11995
  event.preventDefault();
11911
11996
  this.handleClick();
11912
11997
  }
11913
11998
  break;
11914
- case 'mouseenter':
11999
+ }
12000
+ case "mouseenter":
11915
12001
  if (this.element.hoverToggle) {
11916
12002
  this.showBib();
11917
12003
  }
11918
12004
  break;
11919
- case 'mouseleave':
12005
+ case "mouseleave":
11920
12006
  if (this.element.hoverToggle) {
11921
12007
  this.hideBib("mouseleave");
11922
12008
  }
11923
12009
  break;
11924
- case 'focus':
12010
+ case "focus":
11925
12011
  if (this.element.focusShow) {
11926
-
11927
12012
  /*
11928
12013
  This needs to better handle clicking that gives focus -
11929
12014
  currently it shows and then immediately hides the bib
@@ -11931,12 +12016,12 @@ class AuroFloatingUI {
11931
12016
  this.showBib();
11932
12017
  }
11933
12018
  break;
11934
- case 'blur':
12019
+ case "blur":
11935
12020
  // send this task 100ms later queue to
11936
12021
  // wait a frame in case focus moves within the floating element/bib
11937
12022
  setTimeout(() => this.handleFocusLoss(), 0);
11938
12023
  break;
11939
- case 'click':
12024
+ case "click":
11940
12025
  if (document.activeElement === document.body) {
11941
12026
  event.currentTarget.focus();
11942
12027
  }
@@ -11955,15 +12040,15 @@ class AuroFloatingUI {
11955
12040
  */
11956
12041
  handleTriggerTabIndex() {
11957
12042
  const focusableElementSelectors = [
11958
- 'a',
11959
- 'button',
12043
+ "a",
12044
+ "button",
11960
12045
  'input:not([type="hidden"])',
11961
- 'select',
11962
- 'textarea',
12046
+ "select",
12047
+ "textarea",
11963
12048
  '[tabindex]:not([tabindex="-1"])',
11964
- 'auro-button',
11965
- 'auro-input',
11966
- 'auro-hyperlink'
12049
+ "auro-button",
12050
+ "auro-input",
12051
+ "auro-hyperlink",
11967
12052
  ];
11968
12053
 
11969
12054
  const triggerNode = this.element.querySelectorAll('[slot="trigger"]')[0];
@@ -11991,10 +12076,10 @@ class AuroFloatingUI {
11991
12076
  * @param {*} eventPrefix
11992
12077
  */
11993
12078
  regenerateBibId() {
11994
- this.id = this.element.getAttribute('id');
12079
+ this.id = this.element.getAttribute("id");
11995
12080
  if (!this.id) {
11996
12081
  this.id = window.crypto.randomUUID();
11997
- this.element.setAttribute('id', this.id);
12082
+ this.element.setAttribute("id", this.id);
11998
12083
  }
11999
12084
 
12000
12085
  this.element.bib.setAttribute("id", `${this.id}-floater-bib`);
@@ -12015,11 +12100,15 @@ class AuroFloatingUI {
12015
12100
  if (this.element.trigger) {
12016
12101
  this.disconnect();
12017
12102
  }
12018
- this.element.trigger = this.element.triggerElement || this.element.shadowRoot.querySelector('#trigger') || this.element.trigger;
12019
- this.element.bib = this.element.shadowRoot.querySelector('#bib') || this.element.bib;
12020
- this.element.bibSizer = this.element.shadowRoot.querySelector('#bibSizer');
12021
- this.element.triggerChevron = this.element.shadowRoot.querySelector('#showStateIcon');
12022
-
12103
+ this.element.trigger =
12104
+ this.element.triggerElement ||
12105
+ this.element.shadowRoot.querySelector("#trigger") ||
12106
+ this.element.trigger;
12107
+ this.element.bib =
12108
+ this.element.shadowRoot.querySelector("#bib") || this.element.bib;
12109
+ this.element.bibSizer = this.element.shadowRoot.querySelector("#bibSizer");
12110
+ this.element.triggerChevron =
12111
+ this.element.shadowRoot.querySelector("#showStateIcon");
12023
12112
 
12024
12113
  if (this.element.floaterConfig) {
12025
12114
  this.element.hoverToggle = this.element.floaterConfig.hoverToggle;
@@ -12030,12 +12119,12 @@ class AuroFloatingUI {
12030
12119
 
12031
12120
  this.handleEvent = this.handleEvent.bind(this);
12032
12121
  if (this.element.trigger) {
12033
- this.element.trigger.addEventListener('keydown', this.handleEvent);
12034
- this.element.trigger.addEventListener('click', this.handleEvent);
12035
- this.element.trigger.addEventListener('mouseenter', this.handleEvent);
12036
- this.element.trigger.addEventListener('mouseleave', this.handleEvent);
12037
- this.element.trigger.addEventListener('focus', this.handleEvent);
12038
- this.element.trigger.addEventListener('blur', this.handleEvent);
12122
+ this.element.trigger.addEventListener("keydown", this.handleEvent);
12123
+ this.element.trigger.addEventListener("click", this.handleEvent);
12124
+ this.element.trigger.addEventListener("mouseenter", this.handleEvent);
12125
+ this.element.trigger.addEventListener("mouseleave", this.handleEvent);
12126
+ this.element.trigger.addEventListener("focus", this.handleEvent);
12127
+ this.element.trigger.addEventListener("blur", this.handleEvent);
12039
12128
  }
12040
12129
  }
12041
12130
 
@@ -12050,12 +12139,18 @@ class AuroFloatingUI {
12050
12139
 
12051
12140
  // Remove event & keyboard listeners
12052
12141
  if (this.element?.trigger) {
12053
- this.element.trigger.removeEventListener('keydown', this.handleEvent);
12054
- this.element.trigger.removeEventListener('click', this.handleEvent);
12055
- this.element.trigger.removeEventListener('mouseenter', this.handleEvent);
12056
- this.element.trigger.removeEventListener('mouseleave', this.handleEvent);
12057
- this.element.trigger.removeEventListener('focus', this.handleEvent);
12058
- this.element.trigger.removeEventListener('blur', this.handleEvent);
12142
+ this.element.trigger.removeEventListener("keydown", this.handleEvent);
12143
+ this.element.trigger.removeEventListener("click", this.handleEvent);
12144
+ this.element.trigger.removeEventListener(
12145
+ "mouseenter",
12146
+ this.handleEvent,
12147
+ );
12148
+ this.element.trigger.removeEventListener(
12149
+ "mouseleave",
12150
+ this.handleEvent,
12151
+ );
12152
+ this.element.trigger.removeEventListener("focus", this.handleEvent);
12153
+ this.element.trigger.removeEventListener("blur", this.handleEvent);
12059
12154
  }
12060
12155
  }
12061
12156
  }
@@ -12502,7 +12597,7 @@ let p$3 = class p{registerComponent(t,a){customElements.get(t)||customElements.d
12502
12597
 
12503
12598
  var iconVersion$2 = '9.1.2';
12504
12599
 
12505
- var styleCss$2$1 = css`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}:host(:not([isfullscreen])) .container.shape-box{border-radius:unset}:host(:not([isfullscreen])) .container[class*=shape-pill],:host(:not([isfullscreen])) .container[class*=shape-snowflake]{border-radius:30px}:host(:not([isfullscreen])) .container[class*=shape-rounded]{border-radius:16px}.container{display:inline-block;overflow:auto;box-sizing:border-box;border-radius:var(--ds-border-radius, 0.375rem);margin:var(--ds-size-50, 0.25rem) 0}`;
12600
+ var styleCss$2$1 = css`:host{position:fixed;z-index:var(--depth-tooltip, 400);display:none;isolation:isolate}:host dialog{width:auto;max-width:none;height:auto;max-height:none;padding:0;border:none;margin:0;outline:none;transform:translateZ(0)}:host dialog::backdrop{background:transparent}:host(:not([isfullscreen])) dialog{position:relative;inset:unset}:host(:not([isfullscreen])) .container.shape-box{border-radius:unset}:host(:not([isfullscreen])) .container[class*=shape-pill],:host(:not([isfullscreen])) .container[class*=shape-snowflake]{border-radius:30px}:host(:not([isfullscreen])) .container[class*=shape-rounded]{border-radius:16px}:host(:not([matchWidth])) .container{min-width:fit-content}:host([isfullscreen]){position:fixed;top:0;left:0}:host([isfullscreen]) .container{width:100dvw;max-width:none;height:100dvh;max-height:none;border-radius:unset;margin-top:0;box-shadow:unset;overscroll-behavior:contain}:host([isfullscreen]) .container::backdrop{background:var(--ds-color-background-primary, #fff)}:host([data-show]){display:flex}:host([common]:not([isfullscreen])) .container,:host([rounded]:not([isfullscreen])) .container{border-radius:var(--ds-border-radius, 0.375rem)}:host([common][isfullscreen]) .container,:host([rounded][isfullscreen]) .container{border-radius:unset;box-shadow:unset}.container{display:inline-block;overflow:auto;box-sizing:border-box;border-radius:var(--ds-border-radius, 0.375rem);margin:var(--ds-size-50, 0.25rem) 0}.util_displayHiddenVisually{position:absolute;overflow:hidden;width:1px;height:1px;padding:0;border:0;margin:-1px;clip-path:inset(50%);white-space:nowrap}`;
12506
12601
 
12507
12602
  var colorCss$2 = css`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
12508
12603
 
@@ -12510,6 +12605,8 @@ var tokensCss$1$1 = css`:host(:not([ondark])),:host(:not([appearance=inverse])){
12510
12605
 
12511
12606
  // Copyright (c) 2020 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12512
12607
  // See LICENSE in the project root for license information.
12608
+ /* eslint-disable max-lines */
12609
+ // ---------------------------------------------------------------------
12513
12610
 
12514
12611
 
12515
12612
  const DESIGN_TOKEN_BREAKPOINT_PREFIX = '--ds-grid-breakpoint-';
@@ -12604,6 +12701,28 @@ class AuroDropdownBib extends LitElement {
12604
12701
  shape: {
12605
12702
  type: String,
12606
12703
  reflect: true
12704
+ },
12705
+
12706
+ /**
12707
+ * Accessible label for the dialog element, used when displayed as a modal.
12708
+ * Applied via aria-labelledby on a visually hidden element rather than
12709
+ * aria-label because iOS VoiceOver does not reliably read aria-label
12710
+ * on <dialog> elements.
12711
+ * @private
12712
+ */
12713
+ dialogLabel: {
12714
+ type: String
12715
+ },
12716
+
12717
+ /**
12718
+ * Overrides the native role of the dialog element.
12719
+ * For example, set to `"presentation"` on desktop combobox to prevent
12720
+ * VoiceOver from announcing "listbox inside of a dialog".
12721
+ * When `undefined`, the dialog keeps its native role.
12722
+ * @private
12723
+ */
12724
+ dialogRole: {
12725
+ type: String
12607
12726
  }
12608
12727
  };
12609
12728
  }
@@ -12671,7 +12790,10 @@ class AuroDropdownBib extends LitElement {
12671
12790
  firstUpdated(changedProperties) {
12672
12791
  super.firstUpdated(changedProperties);
12673
12792
 
12674
- // Dispatch a custom event when the component is connected
12793
+ const dialog = this.shadowRoot.querySelector('dialog');
12794
+ this._setupCancelHandler(dialog);
12795
+ this._setupKeyboardBridge(dialog);
12796
+
12675
12797
  this.dispatchEvent(new CustomEvent('auro-dropdownbib-connected', {
12676
12798
  bubbles: true,
12677
12799
  composed: true,
@@ -12681,6 +12803,189 @@ class AuroDropdownBib extends LitElement {
12681
12803
  }));
12682
12804
  }
12683
12805
 
12806
+ /**
12807
+ * Forwards the dialog's native `cancel` event (fired on ESC) as
12808
+ * an `auro-bib-cancel` custom event so parent components can close.
12809
+ * @param {HTMLDialogElement} dialog
12810
+ * @private
12811
+ */
12812
+ _setupCancelHandler(dialog) {
12813
+ dialog.addEventListener('cancel', (event) => {
12814
+ event.preventDefault();
12815
+ this.dispatchEvent(new CustomEvent('auro-bib-cancel', {
12816
+ bubbles: true,
12817
+ composed: true
12818
+ }));
12819
+ });
12820
+ }
12821
+
12822
+ /**
12823
+ * showModal() creates a closed focus scope — keyboard events inside
12824
+ * the dialog's shadow DOM do NOT bubble out to the combobox/select
12825
+ * keydown handlers in the parent shadow DOM. This handler bridges
12826
+ * that gap by re-dispatching navigation keys so they cross the
12827
+ * shadow boundary and reach the menu navigation logic in the parent
12828
+ * component.
12829
+ *
12830
+ * The trade-off: intercepting these keys means native keyboard
12831
+ * behaviors that would normally "just work" must be manually
12832
+ * re-implemented here:
12833
+ *
12834
+ * - Enter on buttons: Custom elements (auro-button) don't get the
12835
+ * native Enter→click that <button> provides, so we call .click()
12836
+ * directly when Enter is pressed on a button-like element.
12837
+ *
12838
+ * - Tab: Intercepted and re-dispatched so parent components
12839
+ * (select/combobox) can select the active option and close the
12840
+ * dialog. The <dialog> provides containment and isolation
12841
+ * (inert background, VoiceOver focus trapping, top layer), while
12842
+ * the content inside is a role="listbox" navigated via
12843
+ * aria-activedescendant (options are not focusable). Tab keyboard
12844
+ * behavior follows listbox conventions (select + close) because
12845
+ * the dialog's native Tab trap only cycles between the close
12846
+ * button and browser chrome.
12847
+ *
12848
+ * - Escape: The native <dialog> fires a `cancel` event on ESC
12849
+ * (handled by _setupCancelHandler), so the re-dispatched Escape
12850
+ * is a secondary path for parent components that also listen for
12851
+ * Escape keydown.
12852
+ *
12853
+ * @param {HTMLDialogElement} dialog
12854
+ * @private
12855
+ */
12856
+ _setupKeyboardBridge(dialog) {
12857
+ const navKeys = new Set([
12858
+ 'ArrowUp',
12859
+ 'ArrowDown',
12860
+ 'Enter',
12861
+ 'Escape',
12862
+ 'Tab'
12863
+ ]);
12864
+
12865
+ dialog.addEventListener('keydown', (event) => {
12866
+ if (!navKeys.has(event.key)) {
12867
+ return;
12868
+ }
12869
+
12870
+ // Custom elements (auro-button) don't get the native Enter→click
12871
+ // behavior that <button> has. Find the button in the composed path
12872
+ // and click it directly.
12873
+ if (event.key === 'Enter') {
12874
+ const buttonSelector = 'button, [role="button"], auro-button, [auro-button]';
12875
+ const btn = event.composedPath().find((el) => el.matches && el.matches(buttonSelector));
12876
+ if (btn) {
12877
+ event.preventDefault();
12878
+ event.stopPropagation();
12879
+ btn.click();
12880
+ return;
12881
+ }
12882
+ }
12883
+
12884
+ event.preventDefault();
12885
+ event.stopPropagation();
12886
+ const newEvent = new KeyboardEvent('keydown', {
12887
+ key: event.key,
12888
+ code: event.code,
12889
+ shiftKey: event.shiftKey,
12890
+ altKey: event.altKey,
12891
+ ctrlKey: event.ctrlKey,
12892
+ metaKey: event.metaKey,
12893
+ bubbles: true,
12894
+ composed: true,
12895
+ cancelable: true
12896
+ });
12897
+ this.dispatchEvent(newEvent);
12898
+ });
12899
+ }
12900
+
12901
+ /**
12902
+ * Blocks touch-driven page scroll while a fullscreen modal dialog is open.
12903
+ *
12904
+ * The showModal() function places the dialog in the browser's **top layer**,
12905
+ * which is a separate rendering layer above the normal DOM. On mobile, the
12906
+ * compositor processes visual-viewport panning before top-layer touch
12907
+ * handling. This means the entire viewport — including the top-layer dialog
12908
+ * — can be panned by a touch gesture, causing the page behind the dialog to
12909
+ * scroll into view. To prevent this, we add a touchmove listener that cancels
12910
+ * the event if the touch started outside the dialog or any scrollable child within it.
12911
+ *
12912
+ * @private
12913
+ */
12914
+ _lockTouchScroll() {
12915
+ const dialog = this.shadowRoot.querySelector('dialog');
12916
+
12917
+ this._touchMoveHandler = (event) => {
12918
+ // Walk the composed path (which crosses shadow DOM boundaries) to
12919
+ // check whether the touch started inside a scrollable element that
12920
+ // lives within the dialog. If so, allow the scroll.
12921
+ for (const el of event.composedPath()) {
12922
+ if (el === dialog) {
12923
+ // Reached the dialog boundary without finding a scrollable child.
12924
+ break;
12925
+ }
12926
+ if (el instanceof HTMLElement && el.scrollHeight > el.clientHeight) {
12927
+ const { overflowY } = getComputedStyle(el);
12928
+ if (overflowY === 'auto' || overflowY === 'scroll') {
12929
+ return;
12930
+ }
12931
+ }
12932
+ }
12933
+
12934
+ event.preventDefault();
12935
+ };
12936
+
12937
+ document.addEventListener('touchmove', this._touchMoveHandler, { passive: false });
12938
+ }
12939
+
12940
+ /**
12941
+ * Removes the touchmove listener added by _lockTouchScroll().
12942
+ * @private
12943
+ */
12944
+ _unlockTouchScroll() {
12945
+ if (this._touchMoveHandler) {
12946
+ document.removeEventListener('touchmove', this._touchMoveHandler);
12947
+ this._touchMoveHandler = undefined;
12948
+ }
12949
+ }
12950
+
12951
+ open(modal = true) {
12952
+ const dialog = this.shadowRoot.querySelector('dialog');
12953
+ if (dialog && !dialog.open) {
12954
+ if (modal) {
12955
+ // Prevent showModal() from scrolling the page to bring the dialog
12956
+ // into view. Locking overflow on <html> blocks the viewport scroll
12957
+ // that browsers perform natively; we release it immediately after
12958
+ // so it doesn't interfere with the modal's focus management.
12959
+ const { documentElement } = document;
12960
+ const prevOverflow = documentElement.style.overflow;
12961
+ documentElement.style.overflow = 'hidden';
12962
+
12963
+ dialog.showModal();
12964
+
12965
+ documentElement.style.overflow = prevOverflow;
12966
+
12967
+ this._lockTouchScroll();
12968
+
12969
+ } else {
12970
+ // Use setAttribute instead of dialog.show() to avoid the dialog
12971
+ // focusing steps which steal focus from the trigger and cause
12972
+ // the floater's handleFocusLoss() to immediately hide the bib.
12973
+ dialog.setAttribute('open', '');
12974
+ }
12975
+ }
12976
+ }
12977
+
12978
+ /**
12979
+ * Closes the dialog.
12980
+ */
12981
+ close() {
12982
+ const dialog = this.shadowRoot.querySelector('dialog');
12983
+ if (dialog && dialog.open) {
12984
+ this._unlockTouchScroll();
12985
+ dialog.close();
12986
+ }
12987
+ }
12988
+
12684
12989
  // function that renders the HTML and CSS into the scope of the component
12685
12990
  render() {
12686
12991
  const classes = {
@@ -12692,9 +12997,10 @@ class AuroDropdownBib extends LitElement {
12692
12997
  classes[`shape-${this.shape}`] = true;
12693
12998
 
12694
12999
  return html$1`
12695
- <div class="${classMap(classes)}" part="bibContainer">
13000
+ <dialog class="${classMap(classes)}" part="bibContainer" role="${ifDefined(this.dialogRole)}" aria-labelledby="${ifDefined(this.dialogLabel ? 'dialogLabel' : undefined)}">
13001
+ ${this.dialogLabel ? html$1`<span id="dialogLabel" class="util_displayHiddenVisually" aria-hidden="true">${this.dialogLabel}</span>` : ''}
12696
13002
  <slot></slot>
12697
- </div>
13003
+ </dialog>
12698
13004
  `;
12699
13005
  }
12700
13006
  }
@@ -12703,7 +13009,7 @@ var shapeSizeCss$1 = css`.shape-classic-xl,.shape-classic-lg,.shape-classic-md,.
12703
13009
 
12704
13010
  var colorCss$1$1 = css`:host(:not([layout*=classic])){--ds-auro-dropdown-trigger-border-color: transparent}:host(:not([disabled],[onDark])) .wrapper:focus-within,:host(:not([disabled],[onDark])) .wrapper:active,:host(:not([disabled],[appearance=inverse])) .wrapper:focus-within,:host(:not([disabled],[appearance=inverse])) .wrapper:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused, #01426a);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused, #01426a)}:host(:not([disabled],[onDark])) .wrapper:hover,:host(:not([disabled],[appearance=inverse])) .wrapper:hover{--ds-auro-dropdown-trigger-background-color: var(--ds-auro-dropdown-trigger-hover-background-color)}:host(:not([ondark])) .wrapper,:host(:not([appearance=inverse])) .wrapper{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-background-color);color:var(--ds-auro-dropdown-trigger-text-color)}:host(:not([onDark])[disabled]),:host(:not([appearance=inverse])[disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-disabled, #d0d0d0);--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-border-subtle, #dddddd)}:host(:not([onDark])[disabled]) #triggerLabel,:host(:not([appearance=inverse])[disabled]) #triggerLabel{cursor:default}:host(:not([ondark])[error]),:host(:not([appearance=inverse])[error]){--ds-auro-dropdown-trigger-border-color: var(--ds-basic-color-status-error, #e31f26)}:host(:not([disabled])[onDark]) .wrapper:focus-within,:host(:not([disabled])[onDark]) .wrapper:active,:host(:not([disabled])[appearance=inverse]) .wrapper:focus-within,:host(:not([disabled])[appearance=inverse]) .wrapper:active{--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-focused-inverse, #ffffff);--ds-auro-dropdown-trigger-outline-color: var(--ds-advanced-color-state-focused-inverse, #ffffff)}:host(:not([disabled])[onDark]) .wrapper:hover,:host(:not([disabled])[appearance=inverse]) .wrapper:hover{--ds-auro-dropdown-trigger-background-color: var(--ds-auro-dropdown-trigger-hover-background-color)}:host([onDark]) .label,:host([onDark]) .helpText,:host([appearance=inverse]) .label,:host([appearance=inverse]) .helpText{color:var(--ds-auro-dropdown-label-text-color)}:host([onDark]) .wrapper,:host([appearance=inverse]) .wrapper{border-color:var(--ds-auro-dropdown-trigger-border-color);background-color:var(--ds-auro-dropdown-trigger-background-color);color:var(--ds-auro-dropdown-trigger-text-color)}:host([onDark][disabled]),:host([appearance=inverse][disabled]){--ds-auro-dropdown-trigger-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-dropdown-label-text-color: var(--ds-basic-color-texticon-inverse-disabled, #7e8894);--ds-auro-dropdown-trigger-container-color: var(--ds-advanced-color-shared-background-inverse-disabled, rgba(255, 255, 255, 0.1))}:host([onDark][disabled]) #triggerLabel,:host([appearance=inverse][disabled]) #triggerLabel{cursor:default}:host([ondark][error]),:host([appearance=inverse][error]){--ds-auro-dropdown-trigger-border-color: var(--ds-advanced-color-state-error-inverse, #f9a4a8)}`;
12705
13011
 
12706
- var styleCss$1$1 = css`:host{position:relative;display:block;text-align:left}[popover=manual]{overflow:visible;padding:0;border:inherit;margin:0;background:inherit;outline:inherit}:host([open]){z-index:var(--depth-tooltip, 400)}.wrapper{display:flex;flex:1;flex-direction:row;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{display:flex;overflow:hidden;width:100%;flex:1;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap}:host([matchwidth]) #bibSizer{width:100%}`;
13012
+ var styleCss$1$1 = css`:host{position:relative;display:block;text-align:left}:host([open]){z-index:var(--depth-tooltip, 400)}.wrapper{display:flex;flex:1;flex-direction:row;align-items:center;justify-content:center;outline:none}.triggerContentWrapper{display:flex;overflow:hidden;width:100%;flex:1;align-items:center;justify-content:center;text-overflow:ellipsis;white-space:nowrap}:host([matchwidth]) #bibSizer{width:100%}`;
12707
13013
 
12708
13014
  var classicColorCss$1 = css``;
12709
13015
 
@@ -12941,7 +13247,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
12941
13247
  }
12942
13248
  };
12943
13249
 
12944
- var formkitVersion$1 = '202602140013';
13250
+ var formkitVersion$1 = '202603102257';
12945
13251
 
12946
13252
  let AuroElement$2 = class AuroElement extends LitElement {
12947
13253
  static get properties() {
@@ -13055,7 +13361,7 @@ let AuroElement$2 = class AuroElement extends LitElement {
13055
13361
  * The `auro-dropdown` element provides a way to place content in a bib that can be toggled.
13056
13362
  * @customElement auro-dropdown
13057
13363
  *
13058
- * @slot - Default slot for the popover content.
13364
+ * @slot - Default slot for the dropdown bib content.
13059
13365
  * @slot helpText - Defines the content of the helpText.
13060
13366
  * @slot trigger - Defines the content of the trigger.
13061
13367
  * @csspart trigger - The trigger content container.
@@ -13067,6 +13373,13 @@ let AuroElement$2 = class AuroElement extends LitElement {
13067
13373
  * @event auroDropdown-idAdded - Notifies consumers that the unique ID for the dropdown bib has been generated.
13068
13374
  */
13069
13375
  class AuroDropdown extends AuroElement$2 {
13376
+ static get shadowRootOptions() {
13377
+ return {
13378
+ ...AuroElement$2.shadowRootOptions,
13379
+ delegatesFocus: true,
13380
+ };
13381
+ }
13382
+
13070
13383
  constructor() {
13071
13384
  super();
13072
13385
 
@@ -13132,15 +13445,6 @@ class AuroDropdown extends AuroElement$2 {
13132
13445
  this.shift = false;
13133
13446
  this.autoPlacement = false;
13134
13447
 
13135
- /**
13136
- * @private
13137
- * @property {boolean} delegatesFocus - Whether the shadow root delegates focus.
13138
- */
13139
- this.constructor.shadowRootOptions = {
13140
- ...LitElement.shadowRootOptions,
13141
- delegatesFocus: true,
13142
- };
13143
-
13144
13448
  /**
13145
13449
  * @private
13146
13450
  */
@@ -13214,6 +13518,18 @@ class AuroDropdown extends AuroElement$2 {
13214
13518
  */
13215
13519
  show() {
13216
13520
  this.floater.showBib();
13521
+
13522
+ // Open dialog synchronously so callers remain in the user gesture
13523
+ // chain. This is critical for mobile browsers (iOS Safari) to keep
13524
+ // the virtual keyboard open when transitioning from the trigger
13525
+ // input to an input inside the fullscreen dialog. Without this,
13526
+ // showModal() fires asynchronously via Lit's update cycle, which
13527
+ // falls outside the user activation window and causes iOS to
13528
+ // dismiss the keyboard.
13529
+ if (this.isBibFullscreen && this.bibElement && this.bibElement.value) {
13530
+ const useModal = !this.disableFocusTrap;
13531
+ this.bibElement.value.open(useModal);
13532
+ }
13217
13533
  }
13218
13534
 
13219
13535
  /**
@@ -13221,13 +13537,37 @@ class AuroDropdown extends AuroElement$2 {
13221
13537
  * If not, trigger element will get focus.
13222
13538
  */
13223
13539
  focus() {
13224
- if (this.isPopoverVisible && this.focusTrap) {
13225
- this.focusTrap.focusFirstElement();
13540
+ if (this.isPopoverVisible && this.bibContent) {
13541
+ const focusables = getFocusableElements(this.bibContent);
13542
+ if (focusables.length > 0) {
13543
+ focusables[0].focus();
13544
+ }
13226
13545
  } else {
13227
13546
  this.trigger.focus();
13228
13547
  }
13229
13548
  }
13230
13549
 
13550
+ /**
13551
+ * Sets the active descendant element for accessibility.
13552
+ * Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
13553
+ * This function is used in components that contain `auro-dropdown` to set the active descendant.
13554
+ * @private
13555
+ * @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
13556
+ * @returns {void}
13557
+ */
13558
+ setActiveDescendant(element) {
13559
+ if (!this.trigger) {
13560
+ return;
13561
+ }
13562
+
13563
+ if (element) {
13564
+ this.trigger.ariaActiveDescendantElement = element;
13565
+ } else {
13566
+ this.trigger.ariaActiveDescendantElement = null;
13567
+ this.trigger.removeAttribute('aria-activedescendant');
13568
+ }
13569
+ }
13570
+
13231
13571
  // function to define props used within the scope of this component
13232
13572
  static get properties() {
13233
13573
  return {
@@ -13485,6 +13825,16 @@ class AuroDropdown extends AuroElement$2 {
13485
13825
  */
13486
13826
  tabIndex: {
13487
13827
  type: Number
13828
+ },
13829
+
13830
+ /**
13831
+ * Accessible label for the dropdown bib dialog element.
13832
+ * @private
13833
+ */
13834
+ bibDialogLabel: {
13835
+ type: String,
13836
+ attribute: false,
13837
+ reflect: false
13488
13838
  }
13489
13839
  };
13490
13840
  }
@@ -13536,7 +13886,10 @@ class AuroDropdown extends AuroElement$2 {
13536
13886
 
13537
13887
  disconnectedCallback() {
13538
13888
  super.disconnectedCallback();
13539
- this.floater.disconnect();
13889
+ if (this.floater) {
13890
+ this.floater.hideBib('disconnect');
13891
+ this.floater.disconnect();
13892
+ }
13540
13893
  this.clearTriggerFocusEventBinding();
13541
13894
  }
13542
13895
 
@@ -13558,11 +13911,22 @@ class AuroDropdown extends AuroElement$2 {
13558
13911
 
13559
13912
  if (changedProperties.has('isPopoverVisible') && this.bibElement.value) {
13560
13913
  if (this.isPopoverVisible) {
13561
- this.bibElement.value.showPopover();
13914
+ // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
13915
+ // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
13916
+ const useModal = this.isBibFullscreen && !this.disableFocusTrap;
13917
+ this.bibElement.value.open(useModal);
13562
13918
  } else {
13563
- this.bibElement.value.hidePopover();
13919
+ this.bibElement.value.close();
13564
13920
  }
13565
13921
  }
13922
+
13923
+ // When fullscreen strategy changes while open, re-open dialog with correct mode
13924
+ // (e.g. resizing from desktop → mobile while dropdown is open)
13925
+ if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
13926
+ const useModal = this.isBibFullscreen && !this.disableFocusTrap;
13927
+ this.bibElement.value.close();
13928
+ this.bibElement.value.open(useModal);
13929
+ }
13566
13930
  }
13567
13931
 
13568
13932
  /**
@@ -13580,11 +13944,28 @@ class AuroDropdown extends AuroElement$2 {
13580
13944
  }
13581
13945
 
13582
13946
  firstUpdated() {
13583
-
13584
13947
  // Configure the floater to, this will generate the ID for the bib
13585
13948
  this.floater.configure(this, 'auroDropdown');
13949
+
13950
+ // Prevent `contain: layout` on the dropdown host. Layout containment
13951
+ // creates a containing block for position:fixed descendants (the bib),
13952
+ // which clips the bib inside ancestor overflow contexts such as a
13953
+ // <dialog> element. Without it, the bib's position:fixed is relative
13954
+ // to the viewport, letting Floating UI's flip middleware detect
13955
+ // viewport boundaries and the bib escape overflow clipping.
13956
+ const origConfigureBibStrategy = this.floater.configureBibStrategy.bind(this.floater);
13957
+ this.floater.configureBibStrategy = (value) => {
13958
+ origConfigureBibStrategy(value);
13959
+ this.style.contain = '';
13960
+ };
13961
+
13586
13962
  this.addEventListener('auroDropdown-toggled', this.handleDropdownToggle);
13587
13963
 
13964
+ // Handle ESC key from dialog's cancel event
13965
+ this.addEventListener('auro-bib-cancel', () => {
13966
+ this.floater.hideBib('keydown');
13967
+ });
13968
+
13588
13969
  /**
13589
13970
  * @description Let subscribers know that the dropdown ID ha been generated and added.
13590
13971
  * @event auroDropdown-idAdded
@@ -13592,9 +13973,9 @@ class AuroDropdown extends AuroElement$2 {
13592
13973
  */
13593
13974
  this.dispatchEvent(new CustomEvent('auroDropdown-idAdded', {detail: {id: this.floater.element.id}}));
13594
13975
 
13595
- // Set the bib ID locally if the user hasn't provided a focusable trigger
13976
+ // Set the bib ID locally for aria-controls (must be in the same shadow root as the trigger)
13596
13977
  if (!this.triggerContentFocusable) {
13597
- this.dropdownId = this.floater.element.id;
13978
+ this.dropdownId = this.floater.element.bib.id;
13598
13979
  }
13599
13980
 
13600
13981
  this.bibContent = this.floater.element.bib;
@@ -13654,21 +14035,20 @@ class AuroDropdown extends AuroElement$2 {
13654
14035
  * @private
13655
14036
  */
13656
14037
  updateFocusTrap() {
13657
- // If the dropdown is open, create a focus trap and focus the first element
13658
14038
  if (this.isPopoverVisible && !this.disableFocusTrap) {
13659
- this.focusTrap = new FocusTrap(this.bibContent);
13660
- this.focusTrap.focusFirstElement();
14039
+ if (!this.isBibFullscreen) {
14040
+ // Desktop: show() doesn't trap focus, so use FocusTrap
14041
+ this.focusTrap = new FocusTrap(this.bibContent);
14042
+ this.focusTrap.focusFirstElement();
14043
+ }
14044
+ // Fullscreen: showModal() provides native focus trapping
13661
14045
  return;
13662
14046
  }
13663
14047
 
13664
- // Guard Clause: Ensure there is a focus trap currently active before continuing
13665
- if (!this.focusTrap) {
13666
- return;
14048
+ if (this.focusTrap) {
14049
+ this.focusTrap.disconnect();
14050
+ this.focusTrap = undefined;
13667
14051
  }
13668
-
13669
- // If the dropdown is not open, disconnect the focus trap if it exists
13670
- this.focusTrap.disconnect();
13671
- this.focusTrap = undefined;
13672
14052
  }
13673
14053
 
13674
14054
  /**
@@ -13884,13 +14264,14 @@ class AuroDropdown extends AuroElement$2 {
13884
14264
  <div
13885
14265
  id="showStateIcon"
13886
14266
  class="chevron"
13887
- part="chevron">
14267
+ part="chevron"
14268
+ aria-hidden="true">
13888
14269
  <${this.iconTag}
13889
14270
  category="interface"
13890
14271
  name="${this.isPopoverVisible ? 'chevron-up' : `chevron-down`}"
13891
14272
  appearance="${this.onDark ? 'inverse' : this.appearance}"
13892
- variant="${this.disabled ? 'disabled' : 'muted'}">
13893
- >
14273
+ variant="${this.disabled ? 'disabled' : 'muted'}"
14274
+ ariaHidden="true">
13894
14275
  </${this.iconTag}>
13895
14276
  </div>
13896
14277
  ` : undefined }
@@ -13904,8 +14285,8 @@ class AuroDropdown extends AuroElement$2 {
13904
14285
  shape="${this.shape}"
13905
14286
  ?data-show="${this.isPopoverVisible}"
13906
14287
  ?isfullscreen="${this.isBibFullscreen}"
14288
+ .dialogLabel="${this.bibDialogLabel}"
13907
14289
  ${ref(this.bibElement)}
13908
- popover="manual"
13909
14290
  >
13910
14291
  <div class="slotContent">
13911
14292
  <slot @slotchange="${this.handleDefaultSlot}"></slot>
@@ -18819,7 +19200,7 @@ class AuroFormValidation {
18819
19200
  }
18820
19201
  }
18821
19202
 
18822
- if (!hasValue && elem.required && elem.touched) {
19203
+ if (!hasValue && elem.required && (force || elem.touched)) {
18823
19204
  elem.validity = 'valueMissing';
18824
19205
  elem.errorMessage = elem.setCustomValidityValueMissing || elem.setCustomValidity || '';
18825
19206
  } else if (hasValue && this.runtimeUtils.elementMatch(elem, 'auro-input')) {
@@ -18843,7 +19224,7 @@ class AuroFormValidation {
18843
19224
  if (!isCombobox || isCombobox && !elem.persistInput) {
18844
19225
 
18845
19226
  // run validation on all inputs since we're going to use them to set the validity of this component
18846
- this.auroInputElements.forEach(input => input.validate());
19227
+ this.auroInputElements.forEach(input => input.validate(force));
18847
19228
 
18848
19229
  // Reset element validity to the validity of the input
18849
19230
  elem.validity = this.auroInputElements[0].validity;
@@ -19049,6 +19430,17 @@ let AuroElement$1 = class AuroElement extends LitElement {
19049
19430
  */
19050
19431
  class BaseInput extends AuroElement$1 {
19051
19432
 
19433
+ // Delegate focus to the native <input> inside the shadow root so that
19434
+ // showModal()'s dialog focusing steps reach the input element.
19435
+ // This keeps the mobile virtual keyboard open when the fullscreen dialog
19436
+ // opens, because the browser sees an input-to-input focus transfer.
19437
+ static get shadowRootOptions() {
19438
+ return {
19439
+ ...AuroElement$1.shadowRootOptions,
19440
+ delegatesFocus: true,
19441
+ };
19442
+ }
19443
+
19052
19444
  constructor() {
19053
19445
  super();
19054
19446
 
@@ -19066,6 +19458,7 @@ class BaseInput extends AuroElement$1 {
19066
19458
  this.icon = false;
19067
19459
  this.disabled = false;
19068
19460
  this.dvInputOnly = false;
19461
+ this.hideLabelVisually = false;
19069
19462
  this.max = undefined;
19070
19463
  this.maxLength = undefined;
19071
19464
  this.min = undefined;
@@ -19173,6 +19566,15 @@ class BaseInput extends AuroElement$1 {
19173
19566
  reflect: true
19174
19567
  },
19175
19568
 
19569
+ /**
19570
+ * The value for the aria-activedescendant attribute.
19571
+ * Points to the ID of the currently active/highlighted option in a listbox.
19572
+ */
19573
+ a11yActivedescendant: {
19574
+ type: String,
19575
+ reflect: true
19576
+ },
19577
+
19176
19578
  /**
19177
19579
  * If set, the label will remain fixed in the active position.
19178
19580
  */
@@ -19279,6 +19681,16 @@ class BaseInput extends AuroElement$1 {
19279
19681
  attribute: false
19280
19682
  },
19281
19683
 
19684
+ /**
19685
+ * If set, the label will be hidden visually but still accessible to assistive technologies.
19686
+ * @private
19687
+ */
19688
+ hideLabelVisually: {
19689
+ type: Boolean,
19690
+ reflect: true
19691
+ },
19692
+
19693
+
19282
19694
  /**
19283
19695
  * If set, will render an icon inside the input to the left of the value. Support is limited to auro-input instances with credit card format.
19284
19696
  */
@@ -19856,31 +20268,34 @@ class BaseInput extends AuroElement$1 {
19856
20268
  // Process credit card type detection and formatting during input
19857
20269
  if (this.type === 'credit-card') {
19858
20270
  this.processCreditCard();
19859
- }
20271
+ this.touched = true;
20272
+ this.validation.validate(this);
20273
+ } else {
19860
20274
 
19861
- // Sets value property to value of element value (el.value).
19862
- this.value = this.inputElement.value;
20275
+ // Sets value property to value of element value (el.value).
20276
+ this.value = this.inputElement.value;
19863
20277
 
19864
- // Determine if the value change was programmatic, including autofill.
19865
- const inputWasProgrammatic = !this.matches(":focus") || event.isProgrammatic;
20278
+ // Determine if the value change was programmatic, including autofill.
20279
+ const inputWasProgrammatic = !this.matches(":focus") || event.isProgrammatic;
19866
20280
 
19867
- // Validation on input or programmatic value change (including autofill).
19868
- if (this.validateOnInput || inputWasProgrammatic) {
19869
- this.touched = true;
19870
- this.validation.validate(this);
19871
- }
20281
+ // Validation on input or programmatic value change (including autofill).
20282
+ if (this.validateOnInput || inputWasProgrammatic) {
20283
+ this.touched = true;
20284
+ this.validation.validate(this);
20285
+ }
19872
20286
 
19873
- // Prevents cursor jumping in Safari.
19874
- const { selectionStart } = this.inputElement;
20287
+ // Prevents cursor jumping in Safari.
20288
+ const { selectionStart } = this.inputElement;
19875
20289
 
19876
- if (this.setSelectionInputTypes.includes(this.type)) {
19877
- this.updateComplete.then(() => {
19878
- try {
19879
- this.inputElement.setSelectionRange(selectionStart, selectionStart);
19880
- } catch (error) { // eslint-disable-line
19881
- // do nothing
19882
- }
19883
- });
20290
+ if (this.setSelectionInputTypes.includes(this.type)) {
20291
+ this.updateComplete.then(() => {
20292
+ try {
20293
+ this.inputElement.setSelectionRange(selectionStart, selectionStart);
20294
+ } catch (error) { // eslint-disable-line
20295
+ // do nothing
20296
+ }
20297
+ });
20298
+ }
19884
20299
  }
19885
20300
  }
19886
20301
 
@@ -19913,6 +20328,11 @@ class BaseInput extends AuroElement$1 {
19913
20328
  this.inputElement.scrollLeft = 100;
19914
20329
 
19915
20330
  if (!this.noValidate) {
20331
+ // For credit card inputs with mask, ensure value is synced from mask instance
20332
+ if (this.type === 'credit-card' && this.maskInstance) {
20333
+ this.value = this.maskInstance.value;
20334
+ }
20335
+
19916
20336
  this.validation.validate(this);
19917
20337
  }
19918
20338
  }
@@ -19937,6 +20357,20 @@ class BaseInput extends AuroElement$1 {
19937
20357
  return activeEl;
19938
20358
  }
19939
20359
 
20360
+ /**
20361
+ * Sets the active descendant element for accessibility.
20362
+ * Uses ariaActiveDescendantElement to cross shadow DOM boundaries.
20363
+ * This function is used in components that contain `auro-input` to set the active descendant.
20364
+ * @private
20365
+ * @param {HTMLElement|null} element - The element to set as the active descendant, or null to clear.
20366
+ * @returns {void}
20367
+ */
20368
+ setActiveDescendant(element) {
20369
+ if (this.inputElement) {
20370
+ this.inputElement.ariaActiveDescendantElement = element;
20371
+ }
20372
+ }
20373
+
19940
20374
  /**
19941
20375
  * Validates value.
19942
20376
  * @param {boolean} [force=false] - Whether to force validation.
@@ -20561,7 +20995,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
20561
20995
  }
20562
20996
  };
20563
20997
 
20564
- var formkitVersion = '202602140013';
20998
+ var formkitVersion = '202603102257';
20565
20999
 
20566
21000
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
20567
21001
  // See LICENSE in the project root for license information.
@@ -20743,7 +21177,7 @@ class AuroInput extends BaseInput {
20743
21177
  return {
20744
21178
  'is-disabled': this.disabled,
20745
21179
  'withValue': this.hasValue,
20746
- 'util_displayHiddenVisually': this.labelHidden,
21180
+ 'util_displayHiddenVisually': this.labelHidden || this.hideLabelVisually,
20747
21181
  [this.labelFontClass]: true,
20748
21182
  };
20749
21183
  }
@@ -20915,6 +21349,7 @@ class AuroInput extends BaseInput {
20915
21349
  ?activeLabel="${this.activeLabel}"
20916
21350
  ?disabled="${this.disabled}"
20917
21351
  ?required="${this.required}"
21352
+ aria-activedescendant=${ifDefined(this.a11yActivedescendant)}
20918
21353
  aria-controls=${ifDefined(this.a11yControls)}
20919
21354
  aria-describedby="${this.uniqueId}"
20920
21355
  aria-expanded=${ifDefined(this.a11yExpanded)}
@@ -21674,6 +22109,89 @@ class p{registerComponent(t,a){customElements.get(t)||customElements.define(t,cl
21674
22109
 
21675
22110
  var iconVersion = '9.1.2';
21676
22111
 
22112
+ /**
22113
+ * Announces text to screen readers via an `aria-live` region inside the given shadow root.
22114
+ *
22115
+ * Expects the shadow root to contain an element with `id="srAnnouncement"`.
22116
+ * The text is cleared and re-set inside a `requestAnimationFrame` so that
22117
+ * repeated identical announcements still fire, and is cleared again after
22118
+ * {@link ANNOUNCEMENT_DURATION_MS} so VoiceOver cannot swipe to stale text.
22119
+ *
22120
+ * @param {ShadowRoot} shadowRoot - The shadow root containing the live region.
22121
+ * @param {string} text - The text to announce.
22122
+ */
22123
+
22124
+
22125
+ /**
22126
+ * Schedules a callback after two animation frames.
22127
+ *
22128
+ * Used when opening a fullscreen dialog to wait for the dialog to render
22129
+ * (first frame) and then for a Lit update cycle to complete (second frame)
22130
+ * before performing an action like focusing the close button.
22131
+ *
22132
+ * @param {Function} fn - The callback to execute after two animation frames.
22133
+ */
22134
+ function doubleRaf(fn) {
22135
+ requestAnimationFrame(() => {
22136
+ requestAnimationFrame(fn);
22137
+ });
22138
+ }
22139
+
22140
+ /**
22141
+ * Prevents touch pass-through when a fullscreen dialog opens on a touch device.
22142
+ *
22143
+ * On coarse-pointer devices (phones / tablets), the tap that opens the
22144
+ * fullscreen dialog can "pass through" to content beneath the finger —
22145
+ * the touchstart opens the dialog, but the finger is still on the screen,
22146
+ * so the subsequent touchend / click lands on whatever element sits at
22147
+ * those coordinates (e.g. a menu option or calendar cell), selecting it
22148
+ * unintentionally. This does NOT happen with mouse clicks because
22149
+ * showModal() promotes the dialog to the top layer synchronously and the
22150
+ * click has already completed.
22151
+ *
22152
+ * Guard: only activates on devices whose primary input is coarse.
22153
+ * Laptops with a touchscreen report `pointer: fine` (trackpad / mouse is
22154
+ * primary) so they are unaffected. Re-enables on the next touchstart,
22155
+ * which is the user's first deliberate gesture inside the dialog.
22156
+ *
22157
+ * @param {HTMLElement} element - The element to disable pointer events on
22158
+ * (e.g. the menu or calendar wrapper).
22159
+ */
22160
+ function guardTouchPassthrough(element) {
22161
+ if (!element || !window.matchMedia('(pointer: coarse)').matches) return;
22162
+
22163
+ element.style.pointerEvents = 'none';
22164
+ document.addEventListener('touchstart', () => {
22165
+ element.style.pointerEvents = '';
22166
+ }, { once: true });
22167
+ }
22168
+
22169
+ /**
22170
+ * Restores the dropdown trigger after a fullscreen dialog closes.
22171
+ *
22172
+ * Removes the `inert` attribute from the trigger so it is accessible again,
22173
+ * and restores focus to the given target after one animation frame. The rAF
22174
+ * delay lets Lit's microtask update cycle call `dialog.close()` first —
22175
+ * without it the browser's native dialog focus restoration can conflict.
22176
+ *
22177
+ * The focus is only applied if the dropdown is still closed at the time the
22178
+ * rAF fires, guarding against a rapid close-then-reopen race.
22179
+ *
22180
+ * @param {HTMLElement} dropdown - The `auro-dropdown` element.
22181
+ * @param {HTMLElement} focusTarget - The element to focus (e.g. trigger or input).
22182
+ */
22183
+ function restoreTriggerAfterClose(dropdown, focusTarget) {
22184
+ dropdown.trigger.inert = false;
22185
+
22186
+ if (dropdown.isBibFullscreen) {
22187
+ requestAnimationFrame(() => {
22188
+ if (!dropdown.isPopoverVisible) {
22189
+ focusTarget.focus();
22190
+ }
22191
+ });
22192
+ }
22193
+ }
22194
+
21677
22195
  // Copyright (c) 2026 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
21678
22196
  // See LICENSE in the project root for license information.
21679
22197
 
@@ -21688,7 +22206,9 @@ var iconVersion = '9.1.2';
21688
22206
  * @slot ariaLabel.bib.close - Sets aria-label on close button in fullscreen bib
21689
22207
  * @slot ariaLabel.input.clear - Sets aria-label on clear button
21690
22208
  * @slot bib.fullscreen.headline - Defines the headline to display above bib.fullscreen.dateLabels in the mobile layout.
21691
- * @slot bib.fullscreen.dateLabel - Defines the content to display above selected dates in the mobile layout.
22209
+ * @slot bib.fullscreen.dateLabel - **DEPRECATED** - Use `bib.fullscreen.fromLabel` instead.
22210
+ * @slot bib.fullscreen.fromLabel - Defines the content to display above the first input in the mobile layout.
22211
+ * @slot bib.fullscreen.toLabel - Defines the content to display above the second input in the mobile layout when `range` is true.
21692
22212
  * @slot label - Defines the label content for the entire datepicker when `layout="snowflake"`.
21693
22213
  * @slot toLabel - Defines the label content for the second input when the `range` attribute is used.
21694
22214
  * @slot fromLabel - Defines the label content for the first input.
@@ -21708,6 +22228,12 @@ var iconVersion = '9.1.2';
21708
22228
  * @event auroDatePicker-newSlotContent - Notifies that new slot content has been added to the datepicker.
21709
22229
  */
21710
22230
  class AuroDatePicker extends AuroElement {
22231
+ static get shadowRootOptions() {
22232
+ return {
22233
+ ...AuroElement.shadowRootOptions,
22234
+ delegatesFocus: true,
22235
+ };
22236
+ }
21711
22237
  constructor() {
21712
22238
  super();
21713
22239
 
@@ -21848,14 +22374,6 @@ class AuroDatePicker extends AuroElement {
21848
22374
  this.shape = 'classic';
21849
22375
  this.size = 'lg';
21850
22376
 
21851
- /**
21852
- * @private
21853
- * @property {boolean} delegatesFocus - Whether the shadow root delegates focus.
21854
- */
21855
- this.constructor.shadowRootOptions = {
21856
- ...LitElement.shadowRootOptions,
21857
- delegatesFocus: true,
21858
- };
21859
22377
  }
21860
22378
 
21861
22379
  // This function is to define props used within the scope of this component
@@ -22469,6 +22987,30 @@ class AuroDatePicker extends AuroElement {
22469
22987
  configureDropdown() {
22470
22988
  this.dropdown = this.shadowRoot.querySelector(this.dropdownTag._$litStatic$);
22471
22989
 
22990
+ // Prevent dropdown from closing on focus loss during fullscreen transitions.
22991
+ // When trigger.inert is set to true (to hide the trigger from assistive
22992
+ // technology behind the fullscreen dialog), focus leaves the trigger, which
22993
+ // fires a focusout event. The floater's handleFocusLoss() would interpret
22994
+ // this as "close the bib" without this flag.
22995
+ this.dropdown.noHideOnThisFocusLoss = true;
22996
+
22997
+ // Pass label text to the dropdown bib for accessible dialog naming.
22998
+ // Without this, the fullscreen <dialog> has no accessible name and
22999
+ // screen readers announce it as just "dialog" with no context.
23000
+ const labelElement = this.querySelector('[slot="fromLabel"]');
23001
+ if (labelElement) {
23002
+ this.dropdown.bibDialogLabel = labelElement.textContent.trim() || undefined;
23003
+ }
23004
+
23005
+ // Tab closes the fullscreen dialog (same pattern as select).
23006
+ // The dialog event bridge intercepts Tab and re-dispatches it as a
23007
+ // composed keydown; this listener catches the re-dispatched event.
23008
+ this.addEventListener('keydown', (evt) => {
23009
+ if (evt.key === 'Tab' && this.dropdown.isPopoverVisible && this.dropdown.isBibFullscreen) {
23010
+ this.dropdown.hide();
23011
+ }
23012
+ });
23013
+
22472
23014
  this.dropdown.addEventListener('auroDropdown-triggerClick', () => {
22473
23015
  if (!this.isPopoverVisible) {
22474
23016
  this.dropdown.show();
@@ -22482,6 +23024,45 @@ class AuroDatePicker extends AuroElement {
22482
23024
  // It is not rendered by default
22483
23025
  this.calendar.visible = this.dropdown.isPopoverVisible;
22484
23026
 
23027
+ if (this.dropdown.isPopoverVisible) {
23028
+ if (this.dropdown.isBibFullscreen) {
23029
+ // Hide the trigger from assistive technology so VoiceOver cannot
23030
+ // reach it behind the fullscreen dialog.
23031
+ // Set this immediately (before updateComplete) so that the trigger
23032
+ // is already inert when the modal opens. noHideOnThisFocusLoss
23033
+ // prevents the floater from closing the bib when focus leaves.
23034
+ this.dropdown.trigger.inert = true;
23035
+
23036
+ // The dropdown sets disableFocusTrap, so its own updated() lifecycle
23037
+ // opens the dialog as non-modal (dialog.setAttribute('open', '')).
23038
+ // Only showModal() promotes the dialog to the top layer and makes
23039
+ // background content inert — which is what prevents VoiceOver from
23040
+ // swiping to content behind the fullscreen calendar.
23041
+ //
23042
+ // We must wait for the dropdown's Lit update cycle to finish before
23043
+ // re-opening as modal. Both isPopoverVisible and isBibFullscreen
23044
+ // change in the same showBib() call; the dropdown's updated() handles
23045
+ // the isBibFullscreen change by closing and re-opening the dialog
23046
+ // as non-modal. Waiting for updateComplete ensures we act after that
23047
+ // cycle, so our close() + open(true) is the final state.
23048
+ this.dropdown.updateComplete.then(() => {
23049
+ const bibEl = this.dropdown.bibElement?.value;
23050
+ if (bibEl && this.dropdown.isPopoverVisible) {
23051
+ bibEl.close();
23052
+ bibEl.open(true);
23053
+
23054
+ doubleRaf(() => {
23055
+ this.calendar.focusCloseButton();
23056
+ });
23057
+ }
23058
+ });
23059
+
23060
+ guardTouchPassthrough(this.shadowRoot.querySelector('.calendarWrapper'));
23061
+ }
23062
+ } else {
23063
+ restoreTriggerAfterClose(this.dropdown, this.dropdown.trigger);
23064
+ }
23065
+
22485
23066
  // If on mobile, and the calendar is opened, scroll the focus date into view if the flag is set
22486
23067
  if (this.dropdown.isPopoverVisible && this.forceScrollOnNextMobileCalendarRender) {
22487
23068
 
@@ -22495,6 +23076,32 @@ class AuroDatePicker extends AuroElement {
22495
23076
  }, 0);
22496
23077
  }
22497
23078
  });
23079
+
23080
+ // Handle responsive strategy changes while the dropdown is open
23081
+ // (e.g. resizing from desktop → mobile or vice versa).
23082
+ // When the strategy changes to fullscreen, the dropdown's own updated()
23083
+ // will close and reopen the dialog as non-modal (because disableFocusTrap
23084
+ // is set). We wait for that cycle to complete via updateComplete, then
23085
+ // re-open as modal so showModal() promotes the dialog to the top layer
23086
+ // and makes background content inert for screen readers.
23087
+ this.dropdown.addEventListener('auroDropdown-strategy-change', () => {
23088
+ if (this.dropdown.isBibFullscreen && this.dropdown.isPopoverVisible) {
23089
+ this.dropdown.trigger.inert = true;
23090
+ this.dropdown.updateComplete.then(() => {
23091
+ const bibEl = this.dropdown.bibElement?.value;
23092
+ if (bibEl && this.dropdown.isPopoverVisible) {
23093
+ bibEl.close();
23094
+ bibEl.open(true);
23095
+ doubleRaf(() => {
23096
+ this.calendar.focusCloseButton();
23097
+ });
23098
+ }
23099
+ });
23100
+ } else if (!this.dropdown.isBibFullscreen) {
23101
+ // Switching from fullscreen to floating — restore trigger accessibility
23102
+ this.dropdown.trigger.inert = false;
23103
+ }
23104
+ });
22498
23105
  }
22499
23106
 
22500
23107
  /**
@@ -23271,6 +23878,7 @@ class AuroDatePicker extends AuroElement {
23271
23878
  appearance="${this.onDark ? 'inverse' : this.appearance}"
23272
23879
  ?disabled="${this.disabled}"
23273
23880
  ?required="${this.required}"
23881
+ ?hideLabelVisually="${this.layout !== 'classic'}"
23274
23882
  .format="${this.format}"
23275
23883
  .max="${this.maxDate}"
23276
23884
  .min="${this.minDate}"
@@ -23314,6 +23922,7 @@ class AuroDatePicker extends AuroElement {
23314
23922
  appearance="${this.onDark ? 'inverse' : this.appearance}"
23315
23923
  ?disabled="${this.disabled}"
23316
23924
  ?required="${this.required}"
23925
+ ?hideLabelVisually="${this.layout !== 'classic'}"
23317
23926
  .format="${this.format}"
23318
23927
  .max="${this.maxDate}"
23319
23928
  .min="${this.minDate}"
@@ -23478,8 +24087,10 @@ class AuroDatePicker extends AuroElement {
23478
24087
  <slot name="ariaLabel.bib.close" slot="ariaLabel.close" @slotchange="${this.handleSlotToSlot}">Close</slot>
23479
24088
  <slot slot="bib.fullscreen.headline" name="bib.fullscreen.headline" @slotchange="${this.handleSlotToSlot}"></slot>
23480
24089
  <slot slot="bib.fullscreen.dateLabel" name="bib.fullscreen.dateLabel" @slotchange="${this.handleSlotToSlot}"></slot>
24090
+ <slot slot="bib.fullscreen.toLabel" name="bib.fullscreen.toLabel" @slotchange="${this.handleSlotToSlot}"></slot>
24091
+ <slot slot="bib.fullscreen.fromLabel" name="bib.fullscreen.fromLabel" @slotchange="${this.handleSlotToSlot}"></slot>
23481
24092
  <span slot="bib.fullscreen.fromStr">${this.value || html$1`<span class="placeholderDate">${this.format.toUpperCase()}</span>`}</span>
23482
- ${this.range ? html$1`<span slot="mobileDateToStr">${this.valueEnd || html$1`<span class="placeholderDate">${this.format.toUpperCase()}</span>`}</span>` : undefined}
24093
+ ${this.range ? html$1`<span slot="bib.fullscreen.toStr">${this.valueEnd || html$1`<span class="placeholderDate">${this.format.toUpperCase()}</span>`}</span>` : undefined}
23483
24094
  </auro-formkit-calendar>
23484
24095
  `;
23485
24096
  }