@aurodesignsystem-dev/auro-formkit 0.0.0-pr1475.5 → 0.0.0-pr1475.7

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 (81) hide show
  1. package/components/checkbox/demo/customize.min.js +1 -1
  2. package/components/checkbox/demo/getting-started.min.js +1 -1
  3. package/components/checkbox/demo/index.min.js +1 -1
  4. package/components/checkbox/demo/pages.json +1 -1
  5. package/components/checkbox/demo/why-checkbox.html +57 -0
  6. package/components/checkbox/demo/why-checkbox.md +86 -0
  7. package/components/checkbox/dist/index.js +1 -1
  8. package/components/checkbox/dist/registered.js +1 -1
  9. package/components/combobox/demo/customize.min.js +10 -8
  10. package/components/combobox/demo/getting-started.min.js +10 -8
  11. package/components/combobox/demo/index.min.js +10 -8
  12. package/components/combobox/demo/pages.json +1 -1
  13. package/components/combobox/demo/why-combobox.html +57 -0
  14. package/components/combobox/demo/why-combobox.md +113 -0
  15. package/components/combobox/dist/index.js +10 -8
  16. package/components/combobox/dist/registered.js +10 -8
  17. package/components/counter/demo/customize.min.js +9 -7
  18. package/components/counter/demo/index.min.js +9 -7
  19. package/components/counter/demo/pages.json +1 -1
  20. package/components/counter/demo/why-counter.html +57 -0
  21. package/components/counter/demo/why-counter.md +108 -0
  22. package/components/counter/dist/index.js +1 -1
  23. package/components/counter/dist/registered.js +1 -1
  24. package/components/datepicker/demo/api.md +2 -2
  25. package/components/datepicker/demo/customize.min.js +260 -36
  26. package/components/datepicker/demo/index.md +2 -1
  27. package/components/datepicker/demo/index.min.js +260 -36
  28. package/components/datepicker/demo/pages.json +1 -1
  29. package/components/datepicker/demo/voiceover.md +3 -3
  30. package/components/datepicker/demo/why-datepicker.html +57 -0
  31. package/components/datepicker/demo/why-datepicker.md +133 -0
  32. package/components/datepicker/dist/index.js +260 -36
  33. package/components/datepicker/dist/registered.js +260 -36
  34. package/components/datepicker/dist/src/auro-calendar-cell.d.ts +2 -0
  35. package/components/datepicker/dist/src/auro-calendar.d.ts +17 -1
  36. package/components/datepicker/dist/src/auro-datepicker.d.ts +8 -0
  37. package/components/dropdown/demo/customize.min.js +8 -6
  38. package/components/dropdown/demo/getting-started.min.js +8 -6
  39. package/components/dropdown/demo/index.min.js +8 -6
  40. package/components/dropdown/demo/pages.json +1 -1
  41. package/components/dropdown/demo/why-dropdown.html +57 -0
  42. package/components/dropdown/demo/why-dropdown.md +97 -0
  43. package/components/dropdown/dist/auro-dropdown.d.ts +3 -1
  44. package/components/dropdown/dist/index.js +8 -6
  45. package/components/dropdown/dist/registered.js +8 -6
  46. package/components/form/demo/customize.min.js +291 -61
  47. package/components/form/demo/getting-started.min.js +291 -61
  48. package/components/form/demo/index.min.js +291 -61
  49. package/components/form/demo/pages.json +1 -1
  50. package/components/form/demo/registerDemoDeps.min.js +291 -61
  51. package/components/form/demo/why-form.html +57 -0
  52. package/components/form/demo/why-form.md +101 -0
  53. package/components/input/demo/customize.min.js +1 -1
  54. package/components/input/demo/getting-started.min.js +1 -1
  55. package/components/input/demo/index.min.js +1 -1
  56. package/components/input/demo/pages.json +1 -1
  57. package/components/input/demo/why-input.html +57 -0
  58. package/components/input/demo/why-input.md +121 -0
  59. package/components/input/dist/index.js +1 -1
  60. package/components/input/dist/registered.js +1 -1
  61. package/components/menu/demo/pages.json +1 -1
  62. package/components/menu/demo/why-menu.html +57 -0
  63. package/components/menu/demo/why-menu.md +104 -0
  64. package/components/radio/demo/customize.min.js +1 -1
  65. package/components/radio/demo/getting-started.min.js +1 -1
  66. package/components/radio/demo/index.min.js +1 -1
  67. package/components/radio/demo/pages.json +1 -1
  68. package/components/radio/demo/why-radio.html +57 -0
  69. package/components/radio/demo/why-radio.md +92 -0
  70. package/components/radio/dist/index.js +1 -1
  71. package/components/radio/dist/registered.js +1 -1
  72. package/components/select/demo/customize.min.js +9 -7
  73. package/components/select/demo/getting-started.min.js +9 -7
  74. package/components/select/demo/index.min.js +9 -7
  75. package/components/select/demo/pages.json +1 -1
  76. package/components/select/demo/why-select.html +57 -0
  77. package/components/select/demo/why-select.md +128 -0
  78. package/components/select/dist/index.js +9 -7
  79. package/components/select/dist/registered.js +9 -7
  80. package/custom-elements.json +1486 -1441
  81. package/package.json +2 -2
@@ -94,6 +94,7 @@ export class AuroCalendarCell extends LitElement {
94
94
  private handleTap;
95
95
  /**
96
96
  * Handles user hover events and dispatches a custom event.
97
+ * Always dispatches for range pickers so the preview updates correctly.
97
98
  * @private
98
99
  * @returns {void}
99
100
  */
@@ -210,6 +211,7 @@ export class AuroCalendarCell extends LitElement {
210
211
  private handleSlotContent;
211
212
  firstUpdated(): void;
212
213
  datepicker: any;
214
+ _slotContentHandler: (() => void) | undefined;
213
215
  calendarMonth: any;
214
216
  /**
215
217
  * Configures the popover instance with the calendar month boundary.
@@ -160,6 +160,14 @@ export class AuroCalendar extends RangeDatepicker {
160
160
  * @returns {void}
161
161
  */
162
162
  private announceMonthChange;
163
+ /**
164
+ * Recomputes and sets the active cell for the newly visible month after
165
+ * month navigation. Without this, activeCellDate can point at a date in
166
+ * the old month, leaving no tabindex="0" cell in the grid.
167
+ * @private
168
+ * @returns {void}
169
+ */
170
+ private updateActiveCellForVisibleMonth;
163
171
  /**
164
172
  * Renders all of the auro-calendar-months HTML.
165
173
  * @private
@@ -211,9 +219,17 @@ export class AuroCalendar extends RangeDatepicker {
211
219
  * 2. Today's date if not disabled (in-range and not blackout)
212
220
  * 3. First future non-disabled date (scans day-by-day from today up to 1 year)
213
221
  * 4. First previous non-disabled date (scans day-by-day from today up to 1 year)
214
- * 5. undefined no valid target
222
+ * 5. First enabled date in finite [min, max] range
223
+ * 5b. First enabled date scanning forward from finite min (unbounded max)
224
+ * 5c. First enabled date scanning backward from finite max (unbounded min)
225
+ * 6. First in-range date (even if blackout) so focus can land somewhere
226
+ * 7. undefined — no valid target
215
227
  *
216
228
  * @private
229
+ * @param {Object} [options] - Optional settings.
230
+ * @param {boolean} [options.skipDateFrom=false] - When true, skip the selected-date
231
+ * shortcut (step 1). Used after month navigation so the active cell lands in the
232
+ * newly visible month instead of jumping back to the selected date's month.
217
233
  * @returns {Number|undefined} Unix timestamp (seconds) of the date to activate, or undefined.
218
234
  */
219
235
  private computeActiveDate;
@@ -334,6 +334,7 @@ export class AuroDatePicker extends AuroElement {
334
334
  };
335
335
  /**
336
336
  * Custom help text message to display when validity = `customError`.
337
+ * Also used as the validation message when a blackout date is typed into the input.
337
338
  */
338
339
  setCustomValidityCustomError: {
339
340
  type: StringConstructor;
@@ -685,6 +686,13 @@ export class AuroDatePicker extends AuroElement {
685
686
  * @returns {void}
686
687
  */
687
688
  clear(): void;
689
+ /**
690
+ * Checks whether a formatted date string matches a blackout date.
691
+ * @private
692
+ * @param {string} dateStr - A date string in the component's configured format.
693
+ * @returns {boolean} True if the date is in the blackoutDates list.
694
+ */
695
+ private isBlackoutDate;
688
696
  /**
689
697
  * Validates value.
690
698
  * @param {boolean} [force=false] - Whether to force validation.
@@ -3942,7 +3942,7 @@ class AuroHelpText extends i {
3942
3942
  }
3943
3943
  }
3944
3944
 
3945
- var formkitVersion = '202605190111';
3945
+ var formkitVersion = '202605202151';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4939,9 +4939,9 @@ class AuroDropdown extends AuroElement {
4939
4939
  while (current.parentElement) {
4940
4940
  const parent = current.parentElement;
4941
4941
  for (const sibling of parent.children) {
4942
- if (sibling !== current && !sibling.inert) {
4942
+ if (sibling !== current) {
4943
+ this._inertSiblings.push({ element: sibling, wasInert: sibling.inert });
4943
4944
  sibling.inert = true;
4944
- this._inertSiblings.push(sibling);
4945
4945
  }
4946
4946
  }
4947
4947
  current = parent;
@@ -4949,13 +4949,15 @@ class AuroDropdown extends AuroElement {
4949
4949
  }
4950
4950
 
4951
4951
  /**
4952
- * Restores `inert` state on siblings that were made inert by `_setPageInert`.
4952
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
4953
+ * Preserves the previous inert state so externally-inerted elements are
4954
+ * not inadvertently re-enabled.
4953
4955
  * @private
4954
4956
  */
4955
4957
  _clearPageInert() {
4956
4958
  if (this._inertSiblings) {
4957
- for (const sibling of this._inertSiblings) {
4958
- sibling.inert = false;
4959
+ for (const entry of this._inertSiblings) {
4960
+ entry.element.inert = entry.wasInert;
4959
4961
  }
4960
4962
  this._inertSiblings = undefined;
4961
4963
  }
@@ -3942,7 +3942,7 @@ class AuroHelpText extends i {
3942
3942
  }
3943
3943
  }
3944
3944
 
3945
- var formkitVersion = '202605190111';
3945
+ var formkitVersion = '202605202151';
3946
3946
 
3947
3947
  class AuroElement extends i {
3948
3948
  static get properties() {
@@ -4939,9 +4939,9 @@ class AuroDropdown extends AuroElement {
4939
4939
  while (current.parentElement) {
4940
4940
  const parent = current.parentElement;
4941
4941
  for (const sibling of parent.children) {
4942
- if (sibling !== current && !sibling.inert) {
4942
+ if (sibling !== current) {
4943
+ this._inertSiblings.push({ element: sibling, wasInert: sibling.inert });
4943
4944
  sibling.inert = true;
4944
- this._inertSiblings.push(sibling);
4945
4945
  }
4946
4946
  }
4947
4947
  current = parent;
@@ -4949,13 +4949,15 @@ class AuroDropdown extends AuroElement {
4949
4949
  }
4950
4950
 
4951
4951
  /**
4952
- * Restores `inert` state on siblings that were made inert by `_setPageInert`.
4952
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
4953
+ * Preserves the previous inert state so externally-inerted elements are
4954
+ * not inadvertently re-enabled.
4953
4955
  * @private
4954
4956
  */
4955
4957
  _clearPageInert() {
4956
4958
  if (this._inertSiblings) {
4957
- for (const sibling of this._inertSiblings) {
4958
- sibling.inert = false;
4959
+ for (const entry of this._inertSiblings) {
4960
+ entry.element.inert = entry.wasInert;
4959
4961
  }
4960
4962
  this._inertSiblings = undefined;
4961
4963
  }
@@ -3969,7 +3969,7 @@ class AuroHelpText extends i {
3969
3969
  }
3970
3970
  }
3971
3971
 
3972
- var formkitVersion = '202605190111';
3972
+ var formkitVersion = '202605202151';
3973
3973
 
3974
3974
  class AuroElement extends i {
3975
3975
  static get properties() {
@@ -4966,9 +4966,9 @@ class AuroDropdown extends AuroElement {
4966
4966
  while (current.parentElement) {
4967
4967
  const parent = current.parentElement;
4968
4968
  for (const sibling of parent.children) {
4969
- if (sibling !== current && !sibling.inert) {
4969
+ if (sibling !== current) {
4970
+ this._inertSiblings.push({ element: sibling, wasInert: sibling.inert });
4970
4971
  sibling.inert = true;
4971
- this._inertSiblings.push(sibling);
4972
4972
  }
4973
4973
  }
4974
4974
  current = parent;
@@ -4976,13 +4976,15 @@ class AuroDropdown extends AuroElement {
4976
4976
  }
4977
4977
 
4978
4978
  /**
4979
- * Restores `inert` state on siblings that were made inert by `_setPageInert`.
4979
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
4980
+ * Preserves the previous inert state so externally-inerted elements are
4981
+ * not inadvertently re-enabled.
4980
4982
  * @private
4981
4983
  */
4982
4984
  _clearPageInert() {
4983
4985
  if (this._inertSiblings) {
4984
- for (const sibling of this._inertSiblings) {
4985
- sibling.inert = false;
4986
+ for (const entry of this._inertSiblings) {
4987
+ entry.element.inert = entry.wasInert;
4986
4988
  }
4987
4989
  this._inertSiblings = undefined;
4988
4990
  }
@@ -1 +1 @@
1
- ["accessibility.md","api.md","customize.md","design.md","getting-started.md","index.md","keyboard-behavior.md","voiceover.md","readme.md"]
1
+ ["accessibility.md","api.md","customize.md","design.md","getting-started.md","index.md","keyboard-behavior.md","voiceover.md","why-dropdown.md","readme.md"]
@@ -0,0 +1,57 @@
1
+ <!--
2
+ Copyright (c) Alaska Air. All right reserved. Licensed under the Apache-2.0 license
3
+ See LICENSE in the project root for license information.
4
+
5
+ HTML in this document is standardized and NOT to be edited.
6
+ All demo code should be added/edited in ./demo/why-dropdown.md
7
+
8
+ With the exception of adding custom elements if needed for the demo.
9
+
10
+ ----------------------- DO NOT EDIT -----------------------------
11
+
12
+ -->
13
+
14
+ <!DOCTYPE html>
15
+ <html lang="en">
16
+ <head>
17
+ <meta charset="UTF-8" />
18
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
19
+ <title>Auro Web Component Demo | auro-dropdown | Why auro-dropdown</title>
20
+
21
+ <!-- highlight.js Stylesheet -->
22
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/github.min.css"/>
23
+
24
+ <!-- Legacy reference is still needed to support auro-dropdown's use of legacy token values at this time -->
25
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/legacy/auro-classic/CSSCustomProperties.css"/>
26
+
27
+ <!-- Design Token Alaska Theme -->
28
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/design-tokens@latest/dist/themes/alaska/CSSCustomProperties--alaska.min.css"/>
29
+
30
+ <!-- Webcore Stylesheet Alaska Theme -->
31
+ <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/@aurodesignsystem/webcorestylesheets@latest/dist/bundled/themes/alaska.global.min.css" />
32
+
33
+ <!-- Demo Specific Styles -->
34
+ <link rel="stylesheet" type="text/css" href="./styles.min.css" />
35
+ <style>
36
+ table {
37
+ --ds-color-container-secondary-default: transparent;
38
+ }
39
+
40
+ tr:not(:last-of-type) {
41
+ border-bottom: 1px solid var(--ds-color-border-tertiary-default);
42
+ }
43
+ </style>
44
+ </head>
45
+ <body class="auro-markdown">
46
+ <main></main>
47
+
48
+ <script type="module">
49
+ import { renderPage } from './demo-support.min.js';
50
+ await renderPage('./why-dropdown.md');
51
+ </script>
52
+
53
+ <!-- If additional elements are needed for the demo, add them here. -->
54
+ <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-header@latest/+esm" type="module"></script>
55
+ <script src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-hyperlink@latest/+esm" type="module"></script>
56
+ </body>
57
+ </html>
@@ -0,0 +1,97 @@
1
+ <auro-header level="1" id="overview">Why auro-dropdown?</auro-header>
2
+ <p>Native HTML has no dedicated dropdown/popover primitive that combines trigger management, content positioning, focus trapping, and responsive behavior. Building a dropdown from <code>&lt;details&gt;</code>/<code>&lt;summary&gt;</code> or custom <code>&lt;div&gt;</code> toggles requires significant work for accessibility and positioning. <code>auro-dropdown</code> provides a production-ready solution.</p>
3
+ <auro-header level="2" id="accessibility">Accessibility</auro-header>
4
+ <p>Custom dropdown implementations often break keyboard navigation, fail to trap focus, or leave background content interactive when the dropdown is open.</p>
5
+ <p><code>auro-dropdown</code> provides:</p>
6
+ <ul>
7
+ <li><strong>Focus trapping</strong> — In desktop modal mode, Tab and Shift+Tab cycle within the dropdown content. Background content is made inert. The implementation handles focus across shadow DOM boundaries.</li>
8
+ <li><strong>Native dialog semantics</strong> — On mobile, the dropdown opens via <code>showModal()</code>, which provides browser-native focus trapping and background inert behavior.</li>
9
+ <li><strong>ARIA attributes</strong> — The trigger carries <code>aria-expanded</code>, <code>aria-controls</code>, and a configurable <code>role</code> (default: <code>button</code>). The dropdown bib has an accessible dialog label.</li>
10
+ <li><strong>Focus delegation</strong> — <code>delegatesFocus: true</code> ensures clicks on the trigger container route focus to the correct interactive element.</li>
11
+ <li><strong>Escape to close</strong> — The dialog's cancel event is handled to close the dropdown on Escape.</li>
12
+ </ul>
13
+ <auro-header level="2" id="positioning">Positioning</auro-header>
14
+ <p>Positioning a dropdown relative to its trigger — accounting for viewport edges, scroll containers, and dynamic content — is a complex problem that native HTML does not solve.</p>
15
+ <p><code>auro-dropdown</code> integrates Floating UI with:</p>
16
+ <ul>
17
+ <li>Configurable <code>placement</code> (12 positions: top/bottom/left/right with start/center/end)</li>
18
+ <li><code>offset</code> control for gap between trigger and content</li>
19
+ <li><code>noFlip</code> to prevent automatic repositioning</li>
20
+ <li><code>shift</code> to slide the dropdown along the edge to avoid clipping</li>
21
+ <li><code>autoPlacement</code> to let the library choose the best position</li>
22
+ <li><code>matchWidth</code> to size the dropdown to the trigger width</li>
23
+ <li>Layout containment escape so the dropdown is not clipped by ancestor <code>overflow</code> or <code>&lt;dialog&gt;</code> elements</li>
24
+ </ul>
25
+ <auro-header level="2" id="responsiveBehavior">Responsive behavior</auro-header>
26
+ <p>Native disclosure elements have no concept of viewport-aware presentation.</p>
27
+ <p><code>auro-dropdown</code> adapts to the viewport:</p>
28
+ <ul>
29
+ <li><strong>Desktop</strong> — Content appears as a positioned panel with optional modal behavior</li>
30
+ <li><strong>Mobile</strong> — Content opens as a fullscreen dialog below a configurable breakpoint (<code>fullscreenBreakpoint</code>: xs, sm, md, lg, xl, or disabled)</li>
31
+ <li><strong>Desktop modal</strong> — <code>desktopModal</code> makes background siblings inert, traps focus within the dropdown, and prevents interaction with page content — all without going fullscreen</li>
32
+ </ul>
33
+ <auro-header level="2" id="contentagnostic">Content-agnostic</auro-header>
34
+ <p>Unlike <code>&lt;select&gt;</code>, which only accepts <code>&lt;option&gt;</code> elements, <code>auro-dropdown</code> accepts any HTML content in its default slot. This makes it the foundation for composed components like <code>auro-select</code>, <code>auro-combobox</code>, and <code>auro-counter-group</code>.</p>
35
+ <auro-header level="2" id="triggerFlexibility">Trigger flexibility</auro-header>
36
+ <p>The <code>trigger</code> slot accepts any content — plain text, buttons, inputs, or complex custom elements. The component detects whether the trigger content is focusable and adjusts tabindex and ARIA attributes accordingly.</p>
37
+ <auro-header level="2" id="designSystemIntegration">Design system integration</auro-header>
38
+ <p><code>auro-dropdown</code> is built with the Auro Design System:</p>
39
+ <ul>
40
+ <li>Three layout options: classic, emphasized, snowflake</li>
41
+ <li>Light and dark theme support (<code>appearance</code>)</li>
42
+ <li>Chevron indicator for expand/collapse state</li>
43
+ <li>CSS <code>::part()</code> selectors (<code>trigger</code>, <code>chevron</code>, <code>size</code>, <code>helpText</code>)</li>
44
+ <li>Help text slot with error message support</li>
45
+ </ul>
46
+ <auro-header level="2" id="summary">Summary</auro-header>
47
+ <table>
48
+ <thead>
49
+ <tr>
50
+ <th>Capability</th>
51
+ <th><code>&lt;details&gt;</code> / custom div</th>
52
+ <th><code>auro-dropdown</code></th>
53
+ </tr>
54
+ </thead>
55
+ <tbody>
56
+ <tr>
57
+ <td>Viewport-aware positioning</td>
58
+ <td>No</td>
59
+ <td>Floating UI with flip/shift/auto</td>
60
+ </tr>
61
+ <tr>
62
+ <td>Focus trapping</td>
63
+ <td>No</td>
64
+ <td>Desktop modal + fullscreen dialog</td>
65
+ </tr>
66
+ <tr>
67
+ <td>Background inert</td>
68
+ <td>No</td>
69
+ <td>Automatic in modal modes</td>
70
+ </tr>
71
+ <tr>
72
+ <td>Keyboard close (Escape)</td>
73
+ <td>No</td>
74
+ <td>Built-in</td>
75
+ </tr>
76
+ <tr>
77
+ <td>Mobile fullscreen</td>
78
+ <td>No</td>
79
+ <td>Automatic at breakpoint</td>
80
+ </tr>
81
+ <tr>
82
+ <td>Any HTML content</td>
83
+ <td>Yes</td>
84
+ <td>Yes</td>
85
+ </tr>
86
+ <tr>
87
+ <td>Trigger detection</td>
88
+ <td>No</td>
89
+ <td>Auto-detects focusable content</td>
90
+ </tr>
91
+ <tr>
92
+ <td>Theming</td>
93
+ <td>No</td>
94
+ <td>Three layouts + appearance modes</td>
95
+ </tr>
96
+ </tbody>
97
+ </table>
@@ -427,7 +427,9 @@ export class AuroDropdown extends AuroElement {
427
427
  private _setPageInert;
428
428
  _inertSiblings: any[] | undefined;
429
429
  /**
430
- * Restores `inert` state on siblings that were made inert by `_setPageInert`.
430
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
431
+ * Preserves the previous inert state so externally-inerted elements are
432
+ * not inadvertently re-enabled.
431
433
  * @private
432
434
  */
433
435
  private _clearPageInert;
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202605190111';
3877
+ var formkitVersion = '202605202151';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4871,9 +4871,9 @@ class AuroDropdown extends AuroElement {
4871
4871
  while (current.parentElement) {
4872
4872
  const parent = current.parentElement;
4873
4873
  for (const sibling of parent.children) {
4874
- if (sibling !== current && !sibling.inert) {
4874
+ if (sibling !== current) {
4875
+ this._inertSiblings.push({ element: sibling, wasInert: sibling.inert });
4875
4876
  sibling.inert = true;
4876
- this._inertSiblings.push(sibling);
4877
4877
  }
4878
4878
  }
4879
4879
  current = parent;
@@ -4881,13 +4881,15 @@ class AuroDropdown extends AuroElement {
4881
4881
  }
4882
4882
 
4883
4883
  /**
4884
- * Restores `inert` state on siblings that were made inert by `_setPageInert`.
4884
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
4885
+ * Preserves the previous inert state so externally-inerted elements are
4886
+ * not inadvertently re-enabled.
4885
4887
  * @private
4886
4888
  */
4887
4889
  _clearPageInert() {
4888
4890
  if (this._inertSiblings) {
4889
- for (const sibling of this._inertSiblings) {
4890
- sibling.inert = false;
4891
+ for (const entry of this._inertSiblings) {
4892
+ entry.element.inert = entry.wasInert;
4891
4893
  }
4892
4894
  this._inertSiblings = undefined;
4893
4895
  }
@@ -3874,7 +3874,7 @@ class AuroHelpText extends LitElement {
3874
3874
  }
3875
3875
  }
3876
3876
 
3877
- var formkitVersion = '202605190111';
3877
+ var formkitVersion = '202605202151';
3878
3878
 
3879
3879
  class AuroElement extends LitElement {
3880
3880
  static get properties() {
@@ -4871,9 +4871,9 @@ class AuroDropdown extends AuroElement {
4871
4871
  while (current.parentElement) {
4872
4872
  const parent = current.parentElement;
4873
4873
  for (const sibling of parent.children) {
4874
- if (sibling !== current && !sibling.inert) {
4874
+ if (sibling !== current) {
4875
+ this._inertSiblings.push({ element: sibling, wasInert: sibling.inert });
4875
4876
  sibling.inert = true;
4876
- this._inertSiblings.push(sibling);
4877
4877
  }
4878
4878
  }
4879
4879
  current = parent;
@@ -4881,13 +4881,15 @@ class AuroDropdown extends AuroElement {
4881
4881
  }
4882
4882
 
4883
4883
  /**
4884
- * Restores `inert` state on siblings that were made inert by `_setPageInert`.
4884
+ * Restores `inert` state on siblings that were tracked by `_setPageInert`.
4885
+ * Preserves the previous inert state so externally-inerted elements are
4886
+ * not inadvertently re-enabled.
4885
4887
  * @private
4886
4888
  */
4887
4889
  _clearPageInert() {
4888
4890
  if (this._inertSiblings) {
4889
- for (const sibling of this._inertSiblings) {
4890
- sibling.inert = false;
4891
+ for (const entry of this._inertSiblings) {
4892
+ entry.element.inert = entry.wasInert;
4891
4893
  }
4892
4894
  this._inertSiblings = undefined;
4893
4895
  }