@aurodesignsystem-dev/auro-formkit 0.0.0-pr1475.4 → 0.0.0-pr1475.6
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.
- package/components/checkbox/demo/customize.min.js +1 -1
- package/components/checkbox/demo/getting-started.min.js +1 -1
- package/components/checkbox/demo/index.min.js +1 -1
- package/components/checkbox/demo/pages.json +1 -1
- package/components/checkbox/demo/why-checkbox.html +57 -0
- package/components/checkbox/demo/why-checkbox.md +86 -0
- package/components/checkbox/dist/index.js +1 -1
- package/components/checkbox/dist/registered.js +1 -1
- package/components/combobox/demo/customize.min.js +10 -8
- package/components/combobox/demo/getting-started.min.js +10 -8
- package/components/combobox/demo/index.min.js +10 -8
- package/components/combobox/demo/pages.json +1 -1
- package/components/combobox/demo/why-combobox.html +57 -0
- package/components/combobox/demo/why-combobox.md +113 -0
- package/components/combobox/dist/index.js +10 -8
- package/components/combobox/dist/registered.js +10 -8
- package/components/counter/demo/customize.min.js +9 -7
- package/components/counter/demo/index.min.js +9 -7
- package/components/counter/demo/pages.json +1 -1
- package/components/counter/demo/why-counter.html +57 -0
- package/components/counter/demo/why-counter.md +108 -0
- package/components/counter/dist/index.js +441 -45
- package/components/counter/dist/registered.js +1 -1
- package/components/datepicker/demo/api.md +2 -2
- package/components/datepicker/demo/customize.min.js +259 -41
- package/components/datepicker/demo/index.md +2 -1
- package/components/datepicker/demo/index.min.js +259 -41
- package/components/datepicker/demo/pages.json +1 -1
- package/components/datepicker/demo/voiceover.md +5 -5
- package/components/datepicker/demo/why-datepicker.html +57 -0
- package/components/datepicker/demo/why-datepicker.md +133 -0
- package/components/datepicker/dist/index.js +259 -41
- package/components/datepicker/dist/registered.js +259 -41
- package/components/datepicker/dist/src/auro-calendar-cell.d.ts +2 -0
- package/components/datepicker/dist/src/auro-calendar.d.ts +17 -1
- package/components/datepicker/dist/src/auro-datepicker.d.ts +8 -0
- package/components/dropdown/demo/customize.min.js +8 -6
- package/components/dropdown/demo/getting-started.min.js +8 -6
- package/components/dropdown/demo/index.min.js +8 -6
- package/components/dropdown/demo/pages.json +1 -1
- package/components/dropdown/demo/why-dropdown.html +57 -0
- package/components/dropdown/demo/why-dropdown.md +97 -0
- package/components/dropdown/dist/auro-dropdown.d.ts +3 -1
- package/components/dropdown/dist/index.js +8 -6
- package/components/dropdown/dist/registered.js +8 -6
- package/components/form/demo/customize.min.js +1218 -994
- package/components/form/demo/getting-started.min.js +1218 -994
- package/components/form/demo/index.min.js +1218 -994
- package/components/form/demo/pages.json +1 -1
- package/components/form/demo/registerDemoDeps.min.js +1130 -906
- package/components/form/demo/why-form.html +57 -0
- package/components/form/demo/why-form.md +101 -0
- package/components/input/demo/customize.min.js +1 -1
- package/components/input/demo/getting-started.min.js +1 -1
- package/components/input/demo/index.min.js +1 -1
- package/components/input/demo/pages.json +1 -1
- package/components/input/demo/why-input.html +57 -0
- package/components/input/demo/why-input.md +121 -0
- package/components/input/dist/index.js +1 -1
- package/components/input/dist/registered.js +1 -1
- package/components/menu/demo/pages.json +1 -1
- package/components/menu/demo/why-menu.html +57 -0
- package/components/menu/demo/why-menu.md +104 -0
- package/components/radio/demo/customize.min.js +1 -1
- package/components/radio/demo/getting-started.min.js +1 -1
- package/components/radio/demo/index.min.js +1 -1
- package/components/radio/demo/pages.json +1 -1
- package/components/radio/demo/why-radio.html +57 -0
- package/components/radio/demo/why-radio.md +92 -0
- package/components/radio/dist/index.js +1 -1
- package/components/radio/dist/registered.js +1 -1
- package/components/select/demo/customize.min.js +9 -7
- package/components/select/demo/getting-started.min.js +9 -7
- package/components/select/demo/index.min.js +9 -7
- package/components/select/demo/pages.json +1 -1
- package/components/select/demo/why-select.html +57 -0
- package/components/select/demo/why-select.md +128 -0
- package/components/select/dist/index.js +9 -7
- package/components/select/dist/registered.js +9 -7
- package/custom-elements.json +1521 -1476
- 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.
|
|
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 = '
|
|
3945
|
+
var formkitVersion = '202605201522';
|
|
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
|
|
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
|
|
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
|
|
4958
|
-
|
|
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 = '
|
|
3945
|
+
var formkitVersion = '202605201522';
|
|
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
|
|
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
|
|
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
|
|
4958
|
-
|
|
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 = '
|
|
3972
|
+
var formkitVersion = '202605201522';
|
|
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
|
|
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
|
|
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
|
|
4985
|
-
|
|
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><details></code>/<code><summary></code> or custom <code><div></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><dialog></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><select></code>, which only accepts <code><option></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><details></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
|
|
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 = '
|
|
3877
|
+
var formkitVersion = '202605201522';
|
|
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
|
|
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
|
|
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
|
|
4890
|
-
|
|
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 = '
|
|
3877
|
+
var formkitVersion = '202605201522';
|
|
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
|
|
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
|
|
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
|
|
4890
|
-
|
|
4891
|
+
for (const entry of this._inertSiblings) {
|
|
4892
|
+
entry.element.inert = entry.wasInert;
|
|
4891
4893
|
}
|
|
4892
4894
|
this._inertSiblings = undefined;
|
|
4893
4895
|
}
|