@aurodesignsystem-dev/auro-formkit 0.0.0-pr1488.2 → 0.0.0-pr1489.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 (102) hide show
  1. package/components/bibtemplate/dist/auro-bibtemplate.d.ts +7 -0
  2. package/components/bibtemplate/dist/index.js +9 -1
  3. package/components/bibtemplate/dist/registered.js +9 -1
  4. package/components/checkbox/demo/customize.min.js +1 -1
  5. package/components/checkbox/demo/getting-started.min.js +1 -1
  6. package/components/checkbox/demo/index.min.js +1 -1
  7. package/components/checkbox/demo/pages.json +1 -1
  8. package/components/checkbox/demo/why-checkbox.html +57 -0
  9. package/components/checkbox/demo/why-checkbox.md +86 -0
  10. package/components/checkbox/dist/index.js +1 -1
  11. package/components/checkbox/dist/registered.js +1 -1
  12. package/components/combobox/demo/customize.min.js +234 -16
  13. package/components/combobox/demo/getting-started.min.js +234 -16
  14. package/components/combobox/demo/index.min.js +234 -16
  15. package/components/combobox/demo/pages.json +1 -1
  16. package/components/combobox/demo/why-combobox.html +57 -0
  17. package/components/combobox/demo/why-combobox.md +113 -0
  18. package/components/combobox/dist/index.js +234 -16
  19. package/components/combobox/dist/registered.js +234 -16
  20. package/components/counter/demo/customize.min.js +233 -15
  21. package/components/counter/demo/index.min.js +233 -15
  22. package/components/counter/demo/keyboard-behavior.md +1 -0
  23. package/components/counter/demo/pages.json +1 -1
  24. package/components/counter/demo/why-counter.html +57 -0
  25. package/components/counter/demo/why-counter.md +108 -0
  26. package/components/counter/dist/index.js +10 -2
  27. package/components/counter/dist/registered.js +10 -2
  28. package/components/datepicker/demo/accessibility.md +51 -3
  29. package/components/datepicker/demo/api.md +11 -2
  30. package/components/datepicker/demo/customize.html +2 -0
  31. package/components/datepicker/demo/customize.js +19 -0
  32. package/components/datepicker/demo/customize.md +72 -8
  33. package/components/datepicker/demo/customize.min.js +26029 -0
  34. package/components/datepicker/demo/design.md +3 -1
  35. package/components/datepicker/demo/index.js +5 -1
  36. package/components/datepicker/demo/index.md +83 -2
  37. package/components/datepicker/demo/index.min.js +1564 -96
  38. package/components/datepicker/demo/keyboard-behavior.md +201 -2
  39. package/components/datepicker/demo/pages.json +1 -1
  40. package/components/datepicker/demo/voiceover.md +19 -12
  41. package/components/datepicker/demo/why-datepicker.html +57 -0
  42. package/components/datepicker/demo/why-datepicker.md +133 -0
  43. package/components/datepicker/dist/index.js +1489 -97
  44. package/components/datepicker/dist/registered.js +1489 -97
  45. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +66 -1
  46. package/components/datepicker/dist/src/auro-calendar-month.d.ts +28 -0
  47. package/components/datepicker/dist/src/auro-calendar.d.ts +100 -0
  48. package/components/datepicker/dist/src/auro-datepicker.d.ts +88 -0
  49. package/components/datepicker/dist/src/datepickerKeyboardStrategy.d.ts +5 -3
  50. package/components/dropdown/demo/accessibility.md +11 -0
  51. package/components/dropdown/demo/api.md +1 -0
  52. package/components/dropdown/demo/customize.md +3 -0
  53. package/components/dropdown/demo/customize.min.js +223 -13
  54. package/components/dropdown/demo/getting-started.min.js +223 -13
  55. package/components/dropdown/demo/index.min.js +223 -13
  56. package/components/dropdown/demo/keyboard-behavior.md +1 -0
  57. package/components/dropdown/demo/pages.json +1 -1
  58. package/components/dropdown/demo/why-dropdown.html +57 -0
  59. package/components/dropdown/demo/why-dropdown.md +97 -0
  60. package/components/dropdown/dist/auro-dropdown.d.ts +33 -1
  61. package/components/dropdown/dist/index.js +223 -13
  62. package/components/dropdown/dist/registered.js +223 -13
  63. package/components/form/demo/customize.min.js +2191 -145
  64. package/components/form/demo/getting-started.min.js +2191 -145
  65. package/components/form/demo/index.min.js +2191 -145
  66. package/components/form/demo/pages.json +1 -1
  67. package/components/form/demo/registerDemoDeps.min.js +2191 -145
  68. package/components/form/demo/why-form.html +57 -0
  69. package/components/form/demo/why-form.md +101 -0
  70. package/components/input/demo/customize.min.js +1 -1
  71. package/components/input/demo/getting-started.min.js +1 -1
  72. package/components/input/demo/index.min.js +1 -1
  73. package/components/input/demo/pages.json +1 -1
  74. package/components/input/demo/why-input.html +57 -0
  75. package/components/input/demo/why-input.md +121 -0
  76. package/components/input/dist/index.js +1 -1
  77. package/components/input/dist/registered.js +1 -1
  78. package/components/menu/demo/pages.json +1 -1
  79. package/components/menu/demo/why-menu.html +57 -0
  80. package/components/menu/demo/why-menu.md +104 -0
  81. package/components/radio/demo/customize.min.js +2186 -0
  82. package/components/radio/demo/demo-support.min.js +55807 -0
  83. package/components/radio/demo/getting-started.js +1 -1
  84. package/components/radio/demo/getting-started.md +1 -1
  85. package/components/radio/demo/getting-started.min.js +2205 -0
  86. package/components/radio/demo/index.min.js +1 -1
  87. package/components/radio/demo/pages.json +1 -1
  88. package/components/radio/demo/why-radio.html +57 -0
  89. package/components/radio/demo/why-radio.md +92 -0
  90. package/components/radio/dist/index.js +1 -1
  91. package/components/radio/dist/registered.js +1 -1
  92. package/components/select/demo/customize.min.js +233 -15
  93. package/components/select/demo/getting-started.min.js +233 -15
  94. package/components/select/demo/index.min.js +233 -15
  95. package/components/select/demo/keyboard-behavior.md +1 -0
  96. package/components/select/demo/pages.json +1 -1
  97. package/components/select/demo/why-select.html +57 -0
  98. package/components/select/demo/why-select.md +128 -0
  99. package/components/select/dist/index.js +233 -15
  100. package/components/select/dist/registered.js +233 -15
  101. package/custom-elements.json +745 -28
  102. package/package.json +2 -2
@@ -4580,7 +4580,7 @@ function applyKeyboardStrategy(component, strategy, options = {}) {
4580
4580
  });
4581
4581
  }
4582
4582
 
4583
- 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(:popover-open){position:fixed;overflow:visible;padding:0;border:none;margin:0;background:transparent;inset:unset;outline:none}: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}`;
4583
+ 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([desktopmodal]:popover-open)::backdrop{background:transparent}: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(:popover-open){position:fixed;overflow:visible;padding:0;border:none;margin:0;background:transparent;inset:unset;outline:none}: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}`;
4584
4584
 
4585
4585
  var colorCss$2$1 = 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)}`;
4586
4586
 
@@ -5211,7 +5211,7 @@ let AuroHelpText$2 = class AuroHelpText extends LitElement {
5211
5211
  }
5212
5212
  };
5213
5213
 
5214
- var formkitVersion$2 = '202606011708';
5214
+ var formkitVersion$2 = '202606011856';
5215
5215
 
5216
5216
  let AuroElement$2 = class AuroElement extends LitElement {
5217
5217
  static get properties() {
@@ -5391,6 +5391,7 @@ class AuroDropdown extends AuroElement$2 {
5391
5391
  _intializeDefaults() {
5392
5392
  this.appearance = 'default';
5393
5393
  this.chevron = false;
5394
+ this.desktopModal = false;
5394
5395
  this.disabled = false;
5395
5396
  this.disableKeyboardHandling = false;
5396
5397
  this.error = false;
@@ -5571,6 +5572,14 @@ class AuroDropdown extends AuroElement$2 {
5571
5572
  reflect: true
5572
5573
  },
5573
5574
 
5575
+ /**
5576
+ * If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
5577
+ */
5578
+ desktopModal: {
5579
+ type: Boolean,
5580
+ reflect: true
5581
+ },
5582
+
5574
5583
  /**
5575
5584
  * If declared, the dropdown will only show by calling the API .show() public method.
5576
5585
  */
@@ -5858,6 +5867,15 @@ class AuroDropdown extends AuroElement$2 {
5858
5867
 
5859
5868
  disconnectedCallback() {
5860
5869
  super.disconnectedCallback();
5870
+ this._clearPageInert();
5871
+ if (this._bibTabHandler) {
5872
+ this.removeEventListener('keydown', this._bibTabHandler);
5873
+ this._bibTabHandler = undefined;
5874
+ }
5875
+ if (this.focusTrap) {
5876
+ this.focusTrap.disconnect();
5877
+ this.focusTrap = undefined;
5878
+ }
5861
5879
  if (this.floater) {
5862
5880
  this.floater.hideBib('disconnect');
5863
5881
  this.floater.disconnect();
@@ -5885,19 +5903,45 @@ class AuroDropdown extends AuroElement$2 {
5885
5903
  if (this.isPopoverVisible) {
5886
5904
  // Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
5887
5905
  // Desktop: use show() for Floating UI positioning + FocusTrap for focus management
5888
- const useModal = this.isBibFullscreen;
5889
- this.bibElement.value.open(useModal);
5906
+ this.bibElement.value.open(this.isBibFullscreen);
5907
+ this.updateFocusTrap();
5908
+
5909
+ // Desktop modal: make siblings inert so content outside is not interactive
5910
+ if (this.desktopModal && !this.isBibFullscreen) {
5911
+ this._setPageInert();
5912
+ }
5890
5913
  } else {
5891
5914
  this.bibElement.value.close();
5915
+ this._clearPageInert();
5892
5916
  }
5893
5917
  }
5894
5918
 
5895
5919
  // When fullscreen strategy changes while open, re-open dialog with correct mode
5896
5920
  // (e.g. resizing from desktop → mobile while dropdown is open)
5897
5921
  if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
5898
- const useModal = this.isBibFullscreen;
5899
5922
  this.bibElement.value.close();
5900
- this.bibElement.value.open(useModal);
5923
+ this.bibElement.value.open(this.isBibFullscreen);
5924
+
5925
+ // Re-initialize focus management for the new strategy
5926
+ this.updateFocusTrap();
5927
+
5928
+ // Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
5929
+ if (this.desktopModal && !this.isBibFullscreen) {
5930
+ this._setPageInert();
5931
+ } else {
5932
+ this._clearPageInert();
5933
+ }
5934
+ }
5935
+
5936
+ // Handle desktopModal toggled while the dropdown is already open.
5937
+ // Re-initialize focus trapping and page inert state to match the new mode.
5938
+ if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
5939
+ this.updateFocusTrap();
5940
+ if (this.desktopModal) {
5941
+ this._setPageInert();
5942
+ } else {
5943
+ this._clearPageInert();
5944
+ }
5901
5945
  }
5902
5946
  }
5903
5947
 
@@ -5907,8 +5951,14 @@ class AuroDropdown extends AuroElement$2 {
5907
5951
  * @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
5908
5952
  */
5909
5953
  handleDropdownToggle(event) {
5910
- this.updateFocusTrap();
5911
5954
  this.isPopoverVisible = event.detail.expanded;
5955
+
5956
+ // Tear down FocusTrap when closing. Creation happens in updated()
5957
+ // after the dialog is open so getFocusableElements can find content.
5958
+ if (!this.isPopoverVisible) {
5959
+ this.updateFocusTrap();
5960
+ }
5961
+
5912
5962
  const eventType = event.detail.eventType || "unknown";
5913
5963
  if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
5914
5964
  this.trigger.focus();
@@ -6007,19 +6057,178 @@ class AuroDropdown extends AuroElement$2 {
6007
6057
  * @private
6008
6058
  */
6009
6059
  updateFocusTrap() {
6060
+ // Always clean up existing handlers/traps before setting up new ones
6061
+ // to prevent duplicate listeners on repeated calls.
6062
+ if (this._bibTabHandler) {
6063
+ this.removeEventListener('keydown', this._bibTabHandler);
6064
+ this._bibTabHandler = undefined;
6065
+ }
6066
+
6067
+ if (this.focusTrap) {
6068
+ this.focusTrap.disconnect();
6069
+ this.focusTrap = undefined;
6070
+ }
6071
+
6010
6072
  if (this.isPopoverVisible) {
6011
6073
  if (!this.isBibFullscreen) {
6012
- // Desktop: show() doesn't trap focus, so use FocusTrap
6013
- this.focusTrap = new FocusTrap(this.bibContent);
6014
- this.focusTrap.focusFirstElement();
6074
+ if (this.desktopModal) {
6075
+ // Desktop modal: trap focus only within the bib content.
6076
+ // Can't use FocusTrap on the bib element because keydown events
6077
+ // from slotted content bubble through the dropdown host (light DOM),
6078
+ // not through the bib (shadow projection target). Using FocusTrap
6079
+ // on the dropdown would include the trigger in the tab cycle.
6080
+ // Instead, listen for Tab on the dropdown and manually wrap focus
6081
+ // within the bib's focusable elements.
6082
+ this._bibTabHandler = (event) => {
6083
+ if (event.key !== 'Tab') {
6084
+ return;
6085
+ }
6086
+
6087
+ // Collect focusable elements from the bib content.
6088
+ const focusables = getFocusableElements(this.bibContent);
6089
+
6090
+ // Fallback: try from slotted content directly
6091
+ if (!focusables.length) {
6092
+ const slot = this.shadowRoot.querySelector('.slotContent slot');
6093
+ const assignedNodes = slot ? slot.assignedNodes({ flatten: true }) : [];
6094
+
6095
+ for (const node of assignedNodes) {
6096
+ if (node.nodeType === Node.ELEMENT_NODE) {
6097
+ focusables.push(...getFocusableElements(node));
6098
+ }
6099
+ }
6100
+ }
6101
+
6102
+ if (!focusables.length) {
6103
+ return;
6104
+ }
6105
+
6106
+ event.preventDefault();
6107
+
6108
+ const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
6109
+
6110
+ // Walk the active element chain through shadow roots
6111
+ const actives = this._getActiveElements();
6112
+
6113
+ let idx = focusables.findIndex((el) => actives.includes(el));
6114
+
6115
+ if (idx === -1) { // eslint-disable-line no-magic-numbers
6116
+ // Focus is not on a known element — move to first/last
6117
+ idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
6118
+ }
6119
+
6120
+ // Try each element in order, skipping any that can't receive focus
6121
+ // (e.g. hidden elements, elements in collapsed sections)
6122
+ for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
6123
+ let nextIdx = idx + direction;
6124
+
6125
+ // Wrap around
6126
+ if (nextIdx < 0) {
6127
+ nextIdx = focusables.length - 1;
6128
+ } else if (nextIdx >= focusables.length) {
6129
+ nextIdx = 0;
6130
+ }
6131
+
6132
+ focusables[nextIdx].focus();
6133
+
6134
+ // Verify focus actually moved to the target
6135
+ const newActives = this._getActiveElements();
6136
+
6137
+ if (newActives.includes(focusables[nextIdx])) {
6138
+ return;
6139
+ }
6140
+
6141
+ // Focus didn't stick — skip this element and try the next
6142
+ idx = nextIdx;
6143
+ }
6144
+ };
6145
+ this.addEventListener('keydown', this._bibTabHandler);
6146
+
6147
+ // Move initial focus into the bib content, matching FocusTrap behavior
6148
+ requestAnimationFrame(() => {
6149
+ const focusables = getFocusableElements(this.bibContent);
6150
+ if (focusables.length) {
6151
+ focusables[0].focus();
6152
+ }
6153
+ });
6154
+ } else {
6155
+ // Normal desktop: use FocusTrap on the bib element
6156
+ this.focusTrap = new FocusTrap(this.bibContent);
6157
+ this.focusTrap.focusFirstElement();
6158
+ }
6015
6159
  }
6016
6160
  // Fullscreen: showModal() provides native focus trapping
6161
+ }
6162
+ }
6163
+
6164
+ /**
6165
+ * Returns the chain of active (focused) elements through shadow roots.
6166
+ * @private
6167
+ * @returns {Array<HTMLElement>}
6168
+ */
6169
+ _getActiveElements() {
6170
+ let { activeElement } = document;
6171
+ const actives = [activeElement];
6172
+
6173
+ while (activeElement?.shadowRoot?.activeElement) {
6174
+ activeElement = activeElement.shadowRoot.activeElement;
6175
+ actives.push(activeElement);
6176
+ }
6177
+
6178
+ return actives;
6179
+ }
6180
+
6181
+ /**
6182
+ * Sets `inert` on sibling elements of the dropdown's top-level host
6183
+ * so that content outside the dropdown is not interactive while the modal is open.
6184
+ * Walks up through shadow DOM boundaries to find the outermost host element
6185
+ * in the light DOM, then sets `inert` on siblings at each ancestor level
6186
+ * to ensure all page content outside the host subtree is inert.
6187
+ * @private
6188
+ */
6189
+ _setPageInert() {
6190
+ if (this._inertSiblings) {
6017
6191
  return;
6018
6192
  }
6019
6193
 
6020
- if (this.focusTrap) {
6021
- this.focusTrap.disconnect();
6022
- this.focusTrap = undefined;
6194
+ this._inertSiblings = [];
6195
+
6196
+ // Walk up through shadow DOM boundaries to find the topmost host
6197
+ // element in the light DOM. For example, if this dropdown is inside
6198
+ // auro-datepicker's shadow DOM, we walk up to the datepicker element
6199
+ // so we set inert on its siblings — not on the datepicker itself.
6200
+ let host = this;
6201
+ while (host.getRootNode() instanceof ShadowRoot) {
6202
+ host = host.getRootNode().host;
6203
+ }
6204
+
6205
+ // Walk up the ancestor chain, inerting siblings at each level
6206
+ // to ensure the entire page outside the host subtree is inert.
6207
+ let current = host;
6208
+ while (current.parentElement) {
6209
+ const parent = current.parentElement;
6210
+ for (const sibling of parent.children) {
6211
+ if (sibling !== current) {
6212
+ this._inertSiblings.push({ element: sibling, wasInert: sibling.inert });
6213
+ sibling.inert = true;
6214
+ }
6215
+ }
6216
+ current = parent;
6217
+ }
6218
+ }
6219
+
6220
+ /**
6221
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
6222
+ * Preserves the previous inert state so externally-inerted elements are
6223
+ * not inadvertently re-enabled.
6224
+ * @private
6225
+ */
6226
+ _clearPageInert() {
6227
+ if (this._inertSiblings) {
6228
+ for (const entry of this._inertSiblings) {
6229
+ entry.element.inert = entry.wasInert;
6230
+ }
6231
+ this._inertSiblings = undefined;
6023
6232
  }
6024
6233
  }
6025
6234
 
@@ -6258,6 +6467,7 @@ class AuroDropdown extends AuroElement$2 {
6258
6467
  shape="${this.shape}"
6259
6468
  ?data-show="${this.isPopoverVisible}"
6260
6469
  ?isfullscreen="${this.isBibFullscreen}"
6470
+ ?desktopmodal="${this.desktopModal}"
6261
6471
  .dialogLabel="${this.bibDialogLabel}"
6262
6472
  ${ref(this.bibElement)}
6263
6473
  >
@@ -12956,7 +13166,7 @@ let AuroHelpText$1 = class AuroHelpText extends LitElement {
12956
13166
  }
12957
13167
  };
12958
13168
 
12959
- var formkitVersion$1 = '202606011708';
13169
+ var formkitVersion$1 = '202606011856';
12960
13170
 
12961
13171
  // Copyright (c) 2025 Alaska Airlines. All right reserved. Licensed under the Apache-2.0 license
12962
13172
  // See LICENSE in the project root for license information.
@@ -13910,6 +14120,14 @@ class AuroBibtemplate extends LitElement {
13910
14120
  large: {
13911
14121
  type: Boolean,
13912
14122
  reflect: true
14123
+ },
14124
+
14125
+ /**
14126
+ * If declared, the footer slot will be rendered even when not in fullscreen mode.
14127
+ */
14128
+ showFooter: {
14129
+ type: Boolean,
14130
+ reflect: true
13913
14131
  }
13914
14132
  };
13915
14133
  }
@@ -14012,7 +14230,7 @@ class AuroBibtemplate extends LitElement {
14012
14230
  <slot></slot>
14013
14231
  </div>
14014
14232
 
14015
- ${this.isFullscreen ? html`
14233
+ ${this.isFullscreen || this.showFooter ? html`
14016
14234
  <div id="footerContainer">
14017
14235
  <slot name="footer"></slot>
14018
14236
  </div>` : null}
@@ -14021,7 +14239,7 @@ class AuroBibtemplate extends LitElement {
14021
14239
  }
14022
14240
  }
14023
14241
 
14024
- var formkitVersion = '202606011708';
14242
+ var formkitVersion = '202606011856';
14025
14243
 
14026
14244
  var styleCss$1 = css`.util_displayInline{display:inline}.util_displayInlineBlock{display:inline-block}.util_displayBlock{display:block}.util_displayFlex{display:flex}.util_displayHidden{display:none}.util_displayHiddenVisually{position:absolute;overflow:hidden;clip:rect(1px, 1px, 1px, 1px);width:1px;height:1px;padding:0;border:0}:host{display:block;text-align:left}:host [auro-dropdown]{--ds-auro-dropdown-trigger-background-color: transparent}:host #inputInBib::part(wrapper){box-shadow:none}:host #inputInBib::part(accent-left){display:none}:host([layout*=classic]) [auro-input]{width:100%}:host([layout*=classic]) [auro-input]::part(helpText){display:none}:host([layout*=classic]) #slotHolder{display:none}`;
14027
14245