@aurodesignsystem-dev/auro-formkit 0.0.0-pr1475.4 → 0.0.0-pr1477.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.
- package/components/bibtemplate/dist/auro-bibtemplate.d.ts +0 -7
- package/components/bibtemplate/dist/index.js +1 -9
- package/components/bibtemplate/dist/registered.js +1 -9
- 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/dist/index.js +1 -1
- package/components/checkbox/dist/registered.js +1 -1
- package/components/combobox/demo/customize.min.js +18 -234
- package/components/combobox/demo/getting-started.min.js +18 -234
- package/components/combobox/demo/index.min.js +18 -234
- package/components/combobox/demo/keyboard-behavior.md +68 -8
- package/components/combobox/dist/index.js +18 -234
- package/components/combobox/dist/registered.js +18 -234
- package/components/counter/demo/customize.min.js +15 -231
- package/components/counter/demo/index.min.js +15 -231
- package/components/counter/demo/keyboard-behavior.md +0 -1
- package/components/counter/dist/index.js +433 -45
- package/components/counter/dist/registered.js +2 -10
- package/components/datepicker/demo/accessibility.md +3 -51
- package/components/datepicker/demo/api.md +0 -9
- package/components/datepicker/demo/customize.html +0 -2
- package/components/datepicker/demo/customize.md +8 -72
- package/components/datepicker/demo/design.md +1 -3
- package/components/datepicker/demo/index.js +1 -5
- package/components/datepicker/demo/index.md +1 -81
- package/components/datepicker/demo/index.min.js +101 -1350
- package/components/datepicker/demo/keyboard-behavior.md +2 -201
- package/components/datepicker/demo/voiceover.md +12 -19
- package/components/datepicker/dist/index.js +111 -1284
- package/components/datepicker/dist/registered.js +111 -1284
- package/components/datepicker/dist/src/auro-calendar-cell.d.ts +1 -64
- package/components/datepicker/dist/src/auro-calendar-month.d.ts +0 -28
- package/components/datepicker/dist/src/auro-calendar.d.ts +0 -84
- package/components/datepicker/dist/src/auro-datepicker.d.ts +0 -80
- package/components/datepicker/dist/src/datepickerKeyboardStrategy.d.ts +3 -5
- package/components/dropdown/demo/accessibility.md +0 -11
- package/components/dropdown/demo/api.md +0 -1
- package/components/dropdown/demo/customize.md +0 -3
- package/components/dropdown/demo/customize.min.js +13 -221
- package/components/dropdown/demo/getting-started.min.js +13 -221
- package/components/dropdown/demo/index.min.js +13 -221
- package/components/dropdown/demo/keyboard-behavior.md +0 -1
- package/components/dropdown/dist/auro-dropdown.d.ts +1 -31
- package/components/dropdown/dist/index.js +13 -221
- package/components/dropdown/dist/registered.js +13 -221
- package/components/form/demo/customize.min.js +987 -2806
- package/components/form/demo/getting-started.min.js +987 -2806
- package/components/form/demo/index.min.js +987 -2806
- package/components/form/demo/registerDemoDeps.min.js +982 -2801
- 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/dist/index.js +1 -1
- package/components/input/dist/registered.js +1 -1
- package/components/radio/demo/getting-started.js +1 -1
- package/components/radio/demo/getting-started.md +1 -1
- package/components/radio/demo/index.min.js +1 -1
- package/components/radio/dist/index.js +1 -1
- package/components/radio/dist/registered.js +1 -1
- package/components/select/demo/customize.min.js +33 -247
- package/components/select/demo/getting-started.min.js +33 -247
- package/components/select/demo/index.min.js +33 -247
- package/components/select/demo/keyboard-behavior.md +54 -9
- package/components/select/dist/index.js +33 -247
- package/components/select/dist/registered.js +33 -247
- package/custom-elements.json +1491 -2163
- package/package.json +2 -2
- package/components/datepicker/demo/customize.js +0 -19
- package/components/datepicker/demo/customize.min.js +0 -25810
- package/components/radio/demo/customize.min.js +0 -2186
- package/components/radio/demo/demo-support.min.js +0 -55807
- package/components/radio/demo/getting-started.min.js +0 -2205
|
@@ -3338,7 +3338,7 @@ function applyKeyboardStrategy(component, strategy, options = {}) {
|
|
|
3338
3338
|
});
|
|
3339
3339
|
}
|
|
3340
3340
|
|
|
3341
|
-
var styleCss$2 = i$2`: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(
|
|
3341
|
+
var styleCss$2 = i$2`: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}`;
|
|
3342
3342
|
|
|
3343
3343
|
var colorCss$2 = i$2`.container{background-color:var(--ds-auro-dropdownbib-container-color);box-shadow:var(--ds-auro-dropdownbib-boxshadow-color);color:var(--ds-auro-dropdownbib-text-color)}`;
|
|
3344
3344
|
|
|
@@ -3969,7 +3969,7 @@ class AuroHelpText extends i {
|
|
|
3969
3969
|
}
|
|
3970
3970
|
}
|
|
3971
3971
|
|
|
3972
|
-
var formkitVersion = '
|
|
3972
|
+
var formkitVersion = '202605192014';
|
|
3973
3973
|
|
|
3974
3974
|
class AuroElement extends i {
|
|
3975
3975
|
static get properties() {
|
|
@@ -4149,7 +4149,6 @@ class AuroDropdown extends AuroElement {
|
|
|
4149
4149
|
_intializeDefaults() {
|
|
4150
4150
|
this.appearance = 'default';
|
|
4151
4151
|
this.chevron = false;
|
|
4152
|
-
this.desktopModal = false;
|
|
4153
4152
|
this.disabled = false;
|
|
4154
4153
|
this.disableKeyboardHandling = false;
|
|
4155
4154
|
this.error = false;
|
|
@@ -4330,14 +4329,6 @@ class AuroDropdown extends AuroElement {
|
|
|
4330
4329
|
reflect: true
|
|
4331
4330
|
},
|
|
4332
4331
|
|
|
4333
|
-
/**
|
|
4334
|
-
* If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
|
|
4335
|
-
*/
|
|
4336
|
-
desktopModal: {
|
|
4337
|
-
type: Boolean,
|
|
4338
|
-
reflect: true
|
|
4339
|
-
},
|
|
4340
|
-
|
|
4341
4332
|
/**
|
|
4342
4333
|
* If declared, the dropdown will only show by calling the API .show() public method.
|
|
4343
4334
|
*/
|
|
@@ -4625,15 +4616,6 @@ class AuroDropdown extends AuroElement {
|
|
|
4625
4616
|
|
|
4626
4617
|
disconnectedCallback() {
|
|
4627
4618
|
super.disconnectedCallback();
|
|
4628
|
-
this._clearPageInert();
|
|
4629
|
-
if (this._bibTabHandler) {
|
|
4630
|
-
this.removeEventListener('keydown', this._bibTabHandler);
|
|
4631
|
-
this._bibTabHandler = undefined;
|
|
4632
|
-
}
|
|
4633
|
-
if (this.focusTrap) {
|
|
4634
|
-
this.focusTrap.disconnect();
|
|
4635
|
-
this.focusTrap = undefined;
|
|
4636
|
-
}
|
|
4637
4619
|
if (this.floater) {
|
|
4638
4620
|
this.floater.hideBib('disconnect');
|
|
4639
4621
|
this.floater.disconnect();
|
|
@@ -4661,45 +4643,19 @@ class AuroDropdown extends AuroElement {
|
|
|
4661
4643
|
if (this.isPopoverVisible) {
|
|
4662
4644
|
// Fullscreen: use showModal() for native accessibility (inert outside, focus trap)
|
|
4663
4645
|
// Desktop: use show() for Floating UI positioning + FocusTrap for focus management
|
|
4664
|
-
this.
|
|
4665
|
-
this.
|
|
4666
|
-
|
|
4667
|
-
// Desktop modal: make siblings inert so content outside is not interactive
|
|
4668
|
-
if (this.desktopModal && !this.isBibFullscreen) {
|
|
4669
|
-
this._setPageInert();
|
|
4670
|
-
}
|
|
4646
|
+
const useModal = this.isBibFullscreen;
|
|
4647
|
+
this.bibElement.value.open(useModal);
|
|
4671
4648
|
} else {
|
|
4672
4649
|
this.bibElement.value.close();
|
|
4673
|
-
this._clearPageInert();
|
|
4674
4650
|
}
|
|
4675
4651
|
}
|
|
4676
4652
|
|
|
4677
4653
|
// When fullscreen strategy changes while open, re-open dialog with correct mode
|
|
4678
4654
|
// (e.g. resizing from desktop → mobile while dropdown is open)
|
|
4679
4655
|
if (changedProperties.has('isBibFullscreen') && this.isPopoverVisible && this.bibElement.value) {
|
|
4656
|
+
const useModal = this.isBibFullscreen;
|
|
4680
4657
|
this.bibElement.value.close();
|
|
4681
|
-
this.bibElement.value.open(
|
|
4682
|
-
|
|
4683
|
-
// Re-initialize focus management for the new strategy
|
|
4684
|
-
this.updateFocusTrap();
|
|
4685
|
-
|
|
4686
|
-
// Toggle inert: desktop modal needs it, fullscreen showModal() handles it natively
|
|
4687
|
-
if (this.desktopModal && !this.isBibFullscreen) {
|
|
4688
|
-
this._setPageInert();
|
|
4689
|
-
} else {
|
|
4690
|
-
this._clearPageInert();
|
|
4691
|
-
}
|
|
4692
|
-
}
|
|
4693
|
-
|
|
4694
|
-
// Handle desktopModal toggled while the dropdown is already open.
|
|
4695
|
-
// Re-initialize focus trapping and page inert state to match the new mode.
|
|
4696
|
-
if (changedProperties.has('desktopModal') && this.isPopoverVisible && !this.isBibFullscreen) {
|
|
4697
|
-
this.updateFocusTrap();
|
|
4698
|
-
if (this.desktopModal) {
|
|
4699
|
-
this._setPageInert();
|
|
4700
|
-
} else {
|
|
4701
|
-
this._clearPageInert();
|
|
4702
|
-
}
|
|
4658
|
+
this.bibElement.value.open(useModal);
|
|
4703
4659
|
}
|
|
4704
4660
|
}
|
|
4705
4661
|
|
|
@@ -4709,14 +4665,8 @@ class AuroDropdown extends AuroElement {
|
|
|
4709
4665
|
* @param {CustomEvent} event - The custom event that contains the dropdown toggle information.
|
|
4710
4666
|
*/
|
|
4711
4667
|
handleDropdownToggle(event) {
|
|
4668
|
+
this.updateFocusTrap();
|
|
4712
4669
|
this.isPopoverVisible = event.detail.expanded;
|
|
4713
|
-
|
|
4714
|
-
// Tear down FocusTrap when closing. Creation happens in updated()
|
|
4715
|
-
// after the dialog is open so getFocusableElements can find content.
|
|
4716
|
-
if (!this.isPopoverVisible) {
|
|
4717
|
-
this.updateFocusTrap();
|
|
4718
|
-
}
|
|
4719
|
-
|
|
4720
4670
|
const eventType = event.detail.eventType || "unknown";
|
|
4721
4671
|
if (!this.isPopoverVisible && this.hasFocus && eventType === "keydown") {
|
|
4722
4672
|
this.trigger.focus();
|
|
@@ -4815,176 +4765,19 @@ class AuroDropdown extends AuroElement {
|
|
|
4815
4765
|
* @private
|
|
4816
4766
|
*/
|
|
4817
4767
|
updateFocusTrap() {
|
|
4818
|
-
// Always clean up existing handlers/traps before setting up new ones
|
|
4819
|
-
// to prevent duplicate listeners on repeated calls.
|
|
4820
|
-
if (this._bibTabHandler) {
|
|
4821
|
-
this.removeEventListener('keydown', this._bibTabHandler);
|
|
4822
|
-
this._bibTabHandler = undefined;
|
|
4823
|
-
}
|
|
4824
|
-
|
|
4825
|
-
if (this.focusTrap) {
|
|
4826
|
-
this.focusTrap.disconnect();
|
|
4827
|
-
this.focusTrap = undefined;
|
|
4828
|
-
}
|
|
4829
|
-
|
|
4830
4768
|
if (this.isPopoverVisible) {
|
|
4831
4769
|
if (!this.isBibFullscreen) {
|
|
4832
|
-
|
|
4833
|
-
|
|
4834
|
-
|
|
4835
|
-
// from slotted content bubble through the dropdown host (light DOM),
|
|
4836
|
-
// not through the bib (shadow projection target). Using FocusTrap
|
|
4837
|
-
// on the dropdown would include the trigger in the tab cycle.
|
|
4838
|
-
// Instead, listen for Tab on the dropdown and manually wrap focus
|
|
4839
|
-
// within the bib's focusable elements.
|
|
4840
|
-
this._bibTabHandler = (event) => {
|
|
4841
|
-
if (event.key !== 'Tab') {
|
|
4842
|
-
return;
|
|
4843
|
-
}
|
|
4844
|
-
|
|
4845
|
-
// Collect focusable elements from the bib content.
|
|
4846
|
-
const focusables = getFocusableElements(this.bibContent);
|
|
4847
|
-
|
|
4848
|
-
// Fallback: try from slotted content directly
|
|
4849
|
-
if (!focusables.length) {
|
|
4850
|
-
const slot = this.shadowRoot.querySelector('.slotContent slot');
|
|
4851
|
-
const assignedNodes = slot ? slot.assignedNodes({ flatten: true }) : [];
|
|
4852
|
-
|
|
4853
|
-
for (const node of assignedNodes) {
|
|
4854
|
-
if (node.nodeType === Node.ELEMENT_NODE) {
|
|
4855
|
-
focusables.push(...getFocusableElements(node));
|
|
4856
|
-
}
|
|
4857
|
-
}
|
|
4858
|
-
}
|
|
4859
|
-
|
|
4860
|
-
if (!focusables.length) {
|
|
4861
|
-
return;
|
|
4862
|
-
}
|
|
4863
|
-
|
|
4864
|
-
event.preventDefault();
|
|
4865
|
-
|
|
4866
|
-
const direction = event.shiftKey ? -1 : 1; // eslint-disable-line no-magic-numbers
|
|
4867
|
-
|
|
4868
|
-
// Walk the active element chain through shadow roots
|
|
4869
|
-
const actives = this._getActiveElements();
|
|
4870
|
-
|
|
4871
|
-
let idx = focusables.findIndex((el) => actives.includes(el));
|
|
4872
|
-
|
|
4873
|
-
if (idx === -1) { // eslint-disable-line no-magic-numbers
|
|
4874
|
-
// Focus is not on a known element — move to first/last
|
|
4875
|
-
idx = direction === 1 ? -1 : focusables.length; // eslint-disable-line no-magic-numbers
|
|
4876
|
-
}
|
|
4877
|
-
|
|
4878
|
-
// Try each element in order, skipping any that can't receive focus
|
|
4879
|
-
// (e.g. hidden elements, elements in collapsed sections)
|
|
4880
|
-
for (let index = 0; index < focusables.length; index++) { // eslint-disable-line no-plusplus
|
|
4881
|
-
let nextIdx = idx + direction;
|
|
4882
|
-
|
|
4883
|
-
// Wrap around
|
|
4884
|
-
if (nextIdx < 0) {
|
|
4885
|
-
nextIdx = focusables.length - 1;
|
|
4886
|
-
} else if (nextIdx >= focusables.length) {
|
|
4887
|
-
nextIdx = 0;
|
|
4888
|
-
}
|
|
4889
|
-
|
|
4890
|
-
focusables[nextIdx].focus();
|
|
4891
|
-
|
|
4892
|
-
// Verify focus actually moved to the target
|
|
4893
|
-
const newActives = this._getActiveElements();
|
|
4894
|
-
|
|
4895
|
-
if (newActives.includes(focusables[nextIdx])) {
|
|
4896
|
-
return;
|
|
4897
|
-
}
|
|
4898
|
-
|
|
4899
|
-
// Focus didn't stick — skip this element and try the next
|
|
4900
|
-
idx = nextIdx;
|
|
4901
|
-
}
|
|
4902
|
-
};
|
|
4903
|
-
this.addEventListener('keydown', this._bibTabHandler);
|
|
4904
|
-
|
|
4905
|
-
// Move initial focus into the bib content, matching FocusTrap behavior
|
|
4906
|
-
requestAnimationFrame(() => {
|
|
4907
|
-
const focusables = getFocusableElements(this.bibContent);
|
|
4908
|
-
if (focusables.length) {
|
|
4909
|
-
focusables[0].focus();
|
|
4910
|
-
}
|
|
4911
|
-
});
|
|
4912
|
-
} else {
|
|
4913
|
-
// Normal desktop: use FocusTrap on the bib element
|
|
4914
|
-
this.focusTrap = new FocusTrap(this.bibContent);
|
|
4915
|
-
this.focusTrap.focusFirstElement();
|
|
4916
|
-
}
|
|
4770
|
+
// Desktop: show() doesn't trap focus, so use FocusTrap
|
|
4771
|
+
this.focusTrap = new FocusTrap(this.bibContent);
|
|
4772
|
+
this.focusTrap.focusFirstElement();
|
|
4917
4773
|
}
|
|
4918
4774
|
// Fullscreen: showModal() provides native focus trapping
|
|
4919
|
-
}
|
|
4920
|
-
}
|
|
4921
|
-
|
|
4922
|
-
/**
|
|
4923
|
-
* Returns the chain of active (focused) elements through shadow roots.
|
|
4924
|
-
* @private
|
|
4925
|
-
* @returns {Array<HTMLElement>}
|
|
4926
|
-
*/
|
|
4927
|
-
_getActiveElements() {
|
|
4928
|
-
let { activeElement } = document;
|
|
4929
|
-
const actives = [activeElement];
|
|
4930
|
-
|
|
4931
|
-
while (activeElement?.shadowRoot?.activeElement) {
|
|
4932
|
-
activeElement = activeElement.shadowRoot.activeElement;
|
|
4933
|
-
actives.push(activeElement);
|
|
4934
|
-
}
|
|
4935
|
-
|
|
4936
|
-
return actives;
|
|
4937
|
-
}
|
|
4938
|
-
|
|
4939
|
-
/**
|
|
4940
|
-
* Sets `inert` on sibling elements of the dropdown's top-level host
|
|
4941
|
-
* so that content outside the dropdown is not interactive while the modal is open.
|
|
4942
|
-
* Walks up through shadow DOM boundaries to find the outermost host element
|
|
4943
|
-
* in the light DOM, then sets `inert` on siblings at each ancestor level
|
|
4944
|
-
* to ensure all page content outside the host subtree is inert.
|
|
4945
|
-
* @private
|
|
4946
|
-
*/
|
|
4947
|
-
_setPageInert() {
|
|
4948
|
-
if (this._inertSiblings) {
|
|
4949
4775
|
return;
|
|
4950
4776
|
}
|
|
4951
4777
|
|
|
4952
|
-
this.
|
|
4953
|
-
|
|
4954
|
-
|
|
4955
|
-
// element in the light DOM. For example, if this dropdown is inside
|
|
4956
|
-
// auro-datepicker's shadow DOM, we walk up to the datepicker element
|
|
4957
|
-
// so we set inert on its siblings — not on the datepicker itself.
|
|
4958
|
-
let host = this;
|
|
4959
|
-
while (host.getRootNode() instanceof ShadowRoot) {
|
|
4960
|
-
host = host.getRootNode().host;
|
|
4961
|
-
}
|
|
4962
|
-
|
|
4963
|
-
// Walk up the ancestor chain, inerting siblings at each level
|
|
4964
|
-
// to ensure the entire page outside the host subtree is inert.
|
|
4965
|
-
let current = host;
|
|
4966
|
-
while (current.parentElement) {
|
|
4967
|
-
const parent = current.parentElement;
|
|
4968
|
-
for (const sibling of parent.children) {
|
|
4969
|
-
if (sibling !== current && !sibling.inert) {
|
|
4970
|
-
sibling.inert = true;
|
|
4971
|
-
this._inertSiblings.push(sibling);
|
|
4972
|
-
}
|
|
4973
|
-
}
|
|
4974
|
-
current = parent;
|
|
4975
|
-
}
|
|
4976
|
-
}
|
|
4977
|
-
|
|
4978
|
-
/**
|
|
4979
|
-
* Restores `inert` state on siblings that were made inert by `_setPageInert`.
|
|
4980
|
-
* @private
|
|
4981
|
-
*/
|
|
4982
|
-
_clearPageInert() {
|
|
4983
|
-
if (this._inertSiblings) {
|
|
4984
|
-
for (const sibling of this._inertSiblings) {
|
|
4985
|
-
sibling.inert = false;
|
|
4986
|
-
}
|
|
4987
|
-
this._inertSiblings = undefined;
|
|
4778
|
+
if (this.focusTrap) {
|
|
4779
|
+
this.focusTrap.disconnect();
|
|
4780
|
+
this.focusTrap = undefined;
|
|
4988
4781
|
}
|
|
4989
4782
|
}
|
|
4990
4783
|
|
|
@@ -5223,7 +5016,6 @@ class AuroDropdown extends AuroElement {
|
|
|
5223
5016
|
shape="${this.shape}"
|
|
5224
5017
|
?data-show="${this.isPopoverVisible}"
|
|
5225
5018
|
?isfullscreen="${this.isBibFullscreen}"
|
|
5226
|
-
?desktopmodal="${this.desktopModal}"
|
|
5227
5019
|
.dialogLabel="${this.bibDialogLabel}"
|
|
5228
5020
|
${n$2(this.bibElement)}
|
|
5229
5021
|
>
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
<p>The trigger is a focusable element and participates in the standard tab order, responding to <code>Tab</code> and <code>Shift+Tab</code> key events per <auro-hyperlink href="https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex">native browser behavior</auro-hyperlink>, i.e., these keys step through the browser tabindex sequence.</p>
|
|
6
6
|
<p>When the component is <code>disabled</code> it is removed from the <code>tabindex</code> sequence. VoiceOver's virtual cursor <em>(swipe navigation)</em> can still encounter the component, but standard keyboard <code>Tab</code> navigation skips it.</p>
|
|
7
7
|
<p>When the bib is collapsed, the bib content is excluded from the tab sequence. When <strong>expanded</strong>, focusable elements within the bib content are included in the natural tab order. In fullscreen mode, focus is trapped within the bib, and the tab sequence cycles through the bib content focusable elements until the bib is closed or the viewport no longer meets the fullscreen condition and is rendered as a popover.</p>
|
|
8
|
-
<p>When the <code>desktopModal</code> attribute is set, focus is also trapped within the bib on desktop viewports. All sibling elements on the page are marked <code>inert</code>, preventing interaction with content outside the dropdown until it is closed.</p>
|
|
9
8
|
<!-- AURO-GENERATED-CONTENT:END -->
|
|
10
9
|
<auro-header level="3" id="keyEvents">Key Events</auro-header>
|
|
11
10
|
<!-- AURO-GENERATED-CONTENT:START (FILE:src=./../docs/partials/keyEvents.md) -->
|
|
@@ -44,13 +44,6 @@ export class AuroDropdown extends AuroElement {
|
|
|
44
44
|
type: BooleanConstructor;
|
|
45
45
|
reflect: boolean;
|
|
46
46
|
};
|
|
47
|
-
/**
|
|
48
|
-
* If declared, the dropdown will behave as a modal dialog when in a desktop viewport size.
|
|
49
|
-
*/
|
|
50
|
-
desktopModal: {
|
|
51
|
-
type: BooleanConstructor;
|
|
52
|
-
reflect: boolean;
|
|
53
|
-
};
|
|
54
47
|
/**
|
|
55
48
|
* If declared, the dropdown will only show by calling the API .show() public method.
|
|
56
49
|
*/
|
|
@@ -292,7 +285,6 @@ export class AuroDropdown extends AuroElement {
|
|
|
292
285
|
private _intializeDefaults;
|
|
293
286
|
appearance: string | undefined;
|
|
294
287
|
chevron: boolean | undefined;
|
|
295
|
-
desktopModal: boolean | undefined;
|
|
296
288
|
disabled: boolean | undefined;
|
|
297
289
|
disableKeyboardHandling: boolean | undefined;
|
|
298
290
|
error: boolean | undefined;
|
|
@@ -381,8 +373,6 @@ export class AuroDropdown extends AuroElement {
|
|
|
381
373
|
* @returns {string}
|
|
382
374
|
*/
|
|
383
375
|
private get focusableEntityQuery();
|
|
384
|
-
_bibTabHandler: ((event: any) => void) | undefined;
|
|
385
|
-
focusTrap: any;
|
|
386
376
|
updated(changedProperties: any): void;
|
|
387
377
|
firstUpdated(): void;
|
|
388
378
|
dropdownId: any;
|
|
@@ -410,27 +400,7 @@ export class AuroDropdown extends AuroElement {
|
|
|
410
400
|
* @private
|
|
411
401
|
*/
|
|
412
402
|
private updateFocusTrap;
|
|
413
|
-
|
|
414
|
-
* Returns the chain of active (focused) elements through shadow roots.
|
|
415
|
-
* @private
|
|
416
|
-
* @returns {Array<HTMLElement>}
|
|
417
|
-
*/
|
|
418
|
-
private _getActiveElements;
|
|
419
|
-
/**
|
|
420
|
-
* Sets `inert` on sibling elements of the dropdown's top-level host
|
|
421
|
-
* so that content outside the dropdown is not interactive while the modal is open.
|
|
422
|
-
* Walks up through shadow DOM boundaries to find the outermost host element
|
|
423
|
-
* in the light DOM, then sets `inert` on siblings at each ancestor level
|
|
424
|
-
* to ensure all page content outside the host subtree is inert.
|
|
425
|
-
* @private
|
|
426
|
-
*/
|
|
427
|
-
private _setPageInert;
|
|
428
|
-
_inertSiblings: any[] | undefined;
|
|
429
|
-
/**
|
|
430
|
-
* Restores `inert` state on siblings that were made inert by `_setPageInert`.
|
|
431
|
-
* @private
|
|
432
|
-
*/
|
|
433
|
-
private _clearPageInert;
|
|
403
|
+
focusTrap: any;
|
|
434
404
|
/**
|
|
435
405
|
* Function to support @focusout event.
|
|
436
406
|
* @private
|