@aurodesignsystem/auro-formkit 3.0.1 → 3.1.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/CHANGELOG.md +18 -0
- package/components/checkbox/README.md +1 -1
- package/components/checkbox/demo/api.min.js +468 -25
- package/components/checkbox/demo/index.min.js +468 -25
- package/components/checkbox/demo/readme.md +1 -1
- package/components/checkbox/dist/index.js +468 -25
- package/components/checkbox/dist/registered.js +468 -25
- package/components/combobox/README.md +1 -1
- package/components/combobox/demo/api.min.js +1125 -74
- package/components/combobox/demo/index.min.js +1125 -74
- package/components/combobox/demo/readme.md +1 -1
- package/components/combobox/dist/auro-combobox.d.ts +30 -0
- package/components/combobox/dist/index.js +1125 -74
- package/components/combobox/dist/registered.js +1125 -74
- package/components/counter/README.md +1 -1
- package/components/counter/demo/api.min.js +570 -45
- package/components/counter/demo/index.min.js +570 -45
- package/components/counter/demo/readme.md +1 -1
- package/components/counter/dist/index.js +570 -45
- package/components/counter/dist/registered.js +570 -45
- package/components/datepicker/README.md +1 -1
- package/components/datepicker/demo/api.min.js +1073 -70
- package/components/datepicker/demo/index.min.js +1073 -70
- package/components/datepicker/demo/readme.md +1 -1
- package/components/datepicker/dist/index.js +1073 -70
- package/components/datepicker/dist/registered.js +1073 -70
- package/components/dropdown/README.md +1 -1
- package/components/dropdown/demo/api.md +8 -5
- package/components/dropdown/demo/api.min.js +104 -22
- package/components/dropdown/demo/index.min.js +104 -22
- package/components/dropdown/demo/readme.md +1 -1
- package/components/dropdown/dist/auro-dropdown.d.ts +29 -0
- package/components/dropdown/dist/index.js +104 -22
- package/components/dropdown/dist/registered.js +104 -22
- package/components/form/README.md +1 -1
- package/components/form/demo/readme.md +1 -1
- package/components/input/README.md +1 -1
- package/components/input/demo/api.md +4 -1
- package/components/input/demo/api.min.js +503 -25
- package/components/input/demo/index.min.js +503 -25
- package/components/input/demo/readme.md +1 -1
- package/components/input/dist/base-input.d.ts +24 -0
- package/components/input/dist/index.js +503 -25
- package/components/input/dist/registered.js +503 -25
- package/components/menu/README.md +1 -1
- package/components/menu/demo/readme.md +1 -1
- package/components/radio/README.md +1 -1
- package/components/radio/demo/api.min.js +468 -25
- package/components/radio/demo/index.min.js +468 -25
- package/components/radio/demo/readme.md +1 -1
- package/components/radio/dist/index.js +468 -25
- package/components/radio/dist/registered.js +468 -25
- package/components/select/README.md +1 -1
- package/components/select/demo/api.min.js +570 -45
- package/components/select/demo/index.min.js +570 -45
- package/components/select/demo/readme.md +1 -1
- package/components/select/dist/index.js +570 -45
- package/components/select/dist/registered.js +570 -45
- package/package.json +2 -2
|
@@ -1846,7 +1846,7 @@ class AuroFloatingUI {
|
|
|
1846
1846
|
/**
|
|
1847
1847
|
* @private
|
|
1848
1848
|
* getting called on 'blur' in trigger or `focusin` in document
|
|
1849
|
-
*
|
|
1849
|
+
*
|
|
1850
1850
|
* Hides the bib if focus moves outside of the trigger or bib, unless a 'noHideOnThisFocusLoss' flag is set.
|
|
1851
1851
|
* This method checks if the currently active element is still within the trigger or bib.
|
|
1852
1852
|
* If not, and if the bib isn't in fullscreen mode with focus lost, it hides the bib.
|
|
@@ -1962,7 +1962,7 @@ class AuroFloatingUI {
|
|
|
1962
1962
|
// Close any other dropdown that is already open
|
|
1963
1963
|
const existedVisibleFloatingUI = document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
|
|
1964
1964
|
if (existedVisibleFloatingUI && existedVisibleFloatingUI !== this &&
|
|
1965
|
-
existedVisibleFloatingUI.isPopoverVisible &&
|
|
1965
|
+
existedVisibleFloatingUI.element.isPopoverVisible &&
|
|
1966
1966
|
document.expandedAuroFloater.eventPrefix === this.eventPrefix) {
|
|
1967
1967
|
document.expandedAuroFloater.hideBib();
|
|
1968
1968
|
}
|
|
@@ -2138,7 +2138,7 @@ class AuroFloatingUI {
|
|
|
2138
2138
|
this.id = window.crypto.randomUUID();
|
|
2139
2139
|
this.element.setAttribute('id', this.id);
|
|
2140
2140
|
}
|
|
2141
|
-
|
|
2141
|
+
|
|
2142
2142
|
this.element.bib.setAttribute("id", `${this.id}-floater-bib`);
|
|
2143
2143
|
}
|
|
2144
2144
|
|
|
@@ -2191,7 +2191,7 @@ class AuroFloatingUI {
|
|
|
2191
2191
|
if (this.element.bib) {
|
|
2192
2192
|
this.element.shadowRoot.append(this.element.bib);
|
|
2193
2193
|
}
|
|
2194
|
-
|
|
2194
|
+
|
|
2195
2195
|
// Remove event & keyboard listeners
|
|
2196
2196
|
if (this.element?.trigger) {
|
|
2197
2197
|
this.element.trigger.removeEventListener('keydown', this.handleEvent);
|
|
@@ -2920,6 +2920,7 @@ var helpTextVersion = '1.0.0';
|
|
|
2920
2920
|
* @csspart helpText - The helpText content container.
|
|
2921
2921
|
* @event auroDropdown-triggerClick - Notifies that the trigger has been clicked.
|
|
2922
2922
|
* @event auroDropdown-toggled - Notifies that the visibility of the dropdown bib has changed.
|
|
2923
|
+
* @event auroDropdown-idAdded - Notifies consumers that the unique ID for the dropdown bib has been generated.
|
|
2923
2924
|
*/
|
|
2924
2925
|
class AuroDropdown extends LitElement {
|
|
2925
2926
|
constructor() {
|
|
@@ -2965,7 +2966,9 @@ class AuroDropdown extends LitElement {
|
|
|
2965
2966
|
this.rounded = false;
|
|
2966
2967
|
this.tabIndex = 0;
|
|
2967
2968
|
this.noToggle = false;
|
|
2969
|
+
this.a11yAutocomplete = 'none';
|
|
2968
2970
|
this.labeled = true;
|
|
2971
|
+
this.a11yRole = 'combobox';
|
|
2969
2972
|
this.onDark = false;
|
|
2970
2973
|
|
|
2971
2974
|
// floaterConfig
|
|
@@ -3101,6 +3104,16 @@ class AuroDropdown extends LitElement {
|
|
|
3101
3104
|
type: Number
|
|
3102
3105
|
},
|
|
3103
3106
|
|
|
3107
|
+
/**
|
|
3108
|
+
* The unique ID for the dropdown bib element.
|
|
3109
|
+
* @private
|
|
3110
|
+
*/
|
|
3111
|
+
dropdownId: {
|
|
3112
|
+
type: String,
|
|
3113
|
+
reflect: false,
|
|
3114
|
+
attribute: false
|
|
3115
|
+
},
|
|
3116
|
+
|
|
3104
3117
|
/**
|
|
3105
3118
|
* If declared in combination with `bordered` property or `helpText` slot content, will apply red color to both.
|
|
3106
3119
|
*/
|
|
@@ -3263,6 +3276,23 @@ class AuroDropdown extends LitElement {
|
|
|
3263
3276
|
*/
|
|
3264
3277
|
tabIndex: {
|
|
3265
3278
|
type: Number
|
|
3279
|
+
},
|
|
3280
|
+
|
|
3281
|
+
/**
|
|
3282
|
+
* The value for the role attribute of the trigger element.
|
|
3283
|
+
*/
|
|
3284
|
+
a11yRole: {
|
|
3285
|
+
type: String || undefined,
|
|
3286
|
+
attribute: false,
|
|
3287
|
+
reflect: false
|
|
3288
|
+
},
|
|
3289
|
+
|
|
3290
|
+
/**
|
|
3291
|
+
* The value for the aria-autocomplete attribute of the trigger element.
|
|
3292
|
+
*/
|
|
3293
|
+
a11yAutocomplete: {
|
|
3294
|
+
type: String,
|
|
3295
|
+
attribute: false,
|
|
3266
3296
|
}
|
|
3267
3297
|
};
|
|
3268
3298
|
}
|
|
@@ -3313,7 +3343,22 @@ class AuroDropdown extends LitElement {
|
|
|
3313
3343
|
}
|
|
3314
3344
|
|
|
3315
3345
|
firstUpdated() {
|
|
3346
|
+
|
|
3347
|
+
// Configure the floater to, this will generate the ID for the bib
|
|
3316
3348
|
this.floater.configure(this, 'auroDropdown');
|
|
3349
|
+
|
|
3350
|
+
/**
|
|
3351
|
+
* @description Let subscribers know that the dropdown ID ha been generated and added.
|
|
3352
|
+
* @event auroDropdown-idAdded
|
|
3353
|
+
* @type {Object<key: 'id', value: string>} - The ID of the dropdown bib element.
|
|
3354
|
+
*/
|
|
3355
|
+
this.dispatchEvent(new CustomEvent('auroDropdown-idAdded', {detail: {id: this.floater.element.id}}));
|
|
3356
|
+
|
|
3357
|
+
// Set the bib ID locally if the user hasn't provided a focusable trigger
|
|
3358
|
+
if (!this.triggerContentFocusable) {
|
|
3359
|
+
this.dropdownId = this.floater.element.id;
|
|
3360
|
+
}
|
|
3361
|
+
|
|
3317
3362
|
this.bibContent = this.floater.element.bib;
|
|
3318
3363
|
|
|
3319
3364
|
// Add the tag name as an attribute if it is different than the component name
|
|
@@ -3465,6 +3510,30 @@ class AuroDropdown extends LitElement {
|
|
|
3465
3510
|
});
|
|
3466
3511
|
}
|
|
3467
3512
|
|
|
3513
|
+
/*
|
|
3514
|
+
* Sets aria attributes for the trigger element if a custom one is passed in.
|
|
3515
|
+
* @private
|
|
3516
|
+
* @method setTriggerAriaAttributes
|
|
3517
|
+
* @param { HTMLElement } triggerElement - The custom trigger element.
|
|
3518
|
+
*/
|
|
3519
|
+
clearTriggerA11yAttributes(triggerElement) {
|
|
3520
|
+
|
|
3521
|
+
if (!triggerElement || !triggerElement.removeAttribute) {
|
|
3522
|
+
return;
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3525
|
+
// Reset appropriate attributes for a11y
|
|
3526
|
+
triggerElement.removeAttribute('aria-labelledby');
|
|
3527
|
+
if (triggerElement.getAttribute('id') === `${this.id}-trigger-element`) {
|
|
3528
|
+
triggerElement.removeAttribute('id');
|
|
3529
|
+
}
|
|
3530
|
+
triggerElement.removeAttribute('role');
|
|
3531
|
+
triggerElement.removeAttribute('aria-expanded');
|
|
3532
|
+
|
|
3533
|
+
triggerElement.removeAttribute('aria-controls');
|
|
3534
|
+
triggerElement.removeAttribute('aria-autocomplete');
|
|
3535
|
+
}
|
|
3536
|
+
|
|
3468
3537
|
/**
|
|
3469
3538
|
* Handles changes to the trigger content slot and updates related properties.
|
|
3470
3539
|
*
|
|
@@ -3478,32 +3547,41 @@ class AuroDropdown extends LitElement {
|
|
|
3478
3547
|
* @returns {void}
|
|
3479
3548
|
*/
|
|
3480
3549
|
handleTriggerContentSlotChange(event) {
|
|
3550
|
+
|
|
3481
3551
|
this.floater.handleTriggerTabIndex();
|
|
3482
3552
|
|
|
3553
|
+
// Get the trigger
|
|
3554
|
+
const trigger = this.shadowRoot.querySelector('#trigger');
|
|
3555
|
+
|
|
3556
|
+
// Get the trigger slot
|
|
3483
3557
|
const triggerSlot = this.shadowRoot.querySelector('.triggerContent slot');
|
|
3484
3558
|
|
|
3559
|
+
// If there's a trigger slot
|
|
3485
3560
|
if (triggerSlot) {
|
|
3486
3561
|
|
|
3562
|
+
// Get the content nodes to see if there are any children
|
|
3487
3563
|
const triggerContentNodes = triggerSlot.assignedNodes();
|
|
3488
3564
|
|
|
3565
|
+
// If there are children
|
|
3489
3566
|
if (triggerContentNodes) {
|
|
3490
3567
|
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
this.triggerContentFocusable = this.containsFocusableElement(node);
|
|
3494
|
-
}
|
|
3495
|
-
});
|
|
3496
|
-
}
|
|
3497
|
-
}
|
|
3568
|
+
// See if any of them are focusable elemeents
|
|
3569
|
+
this.triggerContentFocusable = triggerContentNodes.some((node) => this.containsFocusableElement(node));
|
|
3498
3570
|
|
|
3499
|
-
|
|
3571
|
+
// If any of them are focusable elements
|
|
3572
|
+
if (this.triggerContentFocusable) {
|
|
3500
3573
|
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
|
|
3574
|
+
// Assume the consumer will be providing their own a11y in whatever they passed in
|
|
3575
|
+
this.clearTriggerA11yAttributes(trigger);
|
|
3576
|
+
|
|
3577
|
+
// Remove the tabindex from the trigger so it doesn't interrupt focus flow
|
|
3578
|
+
trigger.removeAttribute('tabindex');
|
|
3579
|
+
} else {
|
|
3580
|
+
|
|
3581
|
+
// Add the tabindex to the trigger so that it's in the focus flow
|
|
3582
|
+
trigger.setAttribute('tabindex', '0');
|
|
3583
|
+
}
|
|
3584
|
+
}
|
|
3507
3585
|
}
|
|
3508
3586
|
|
|
3509
3587
|
if (event) {
|
|
@@ -3513,6 +3591,7 @@ class AuroDropdown extends LitElement {
|
|
|
3513
3591
|
|
|
3514
3592
|
if (this.triggerContentSlot) {
|
|
3515
3593
|
this.setupTriggerFocusEventBinding();
|
|
3594
|
+
|
|
3516
3595
|
this.hasTriggerContent = this.triggerContentSlot.some((slot) => {
|
|
3517
3596
|
if (slot.textContent.trim()) {
|
|
3518
3597
|
return true;
|
|
@@ -3580,10 +3659,13 @@ class AuroDropdown extends LitElement {
|
|
|
3580
3659
|
id="trigger"
|
|
3581
3660
|
class="trigger"
|
|
3582
3661
|
part="trigger"
|
|
3583
|
-
aria-labelledby="triggerLabel"
|
|
3584
3662
|
tabindex="${this.tabIndex}"
|
|
3585
3663
|
?showBorder="${this.showTriggerBorders}"
|
|
3586
|
-
|
|
3664
|
+
role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
3665
|
+
aria-expanded="${ifDefined(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
3666
|
+
aria-controls="${ifDefined(this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
3667
|
+
aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
3668
|
+
>
|
|
3587
3669
|
<div class="triggerContentWrapper">
|
|
3588
3670
|
<label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
|
|
3589
3671
|
<slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
|
|
@@ -3617,12 +3699,12 @@ class AuroDropdown extends LitElement {
|
|
|
3617
3699
|
<div id="bibSizer" part="size"></div>
|
|
3618
3700
|
<${this.dropdownBibTag}
|
|
3619
3701
|
id="bib"
|
|
3620
|
-
role="tooltip"
|
|
3621
3702
|
?data-show="${this.isPopoverVisible}"
|
|
3622
3703
|
?isfullscreen="${this.isBibFullscreen}"
|
|
3623
3704
|
?common="${this.common}"
|
|
3624
3705
|
?rounded="${this.common || this.rounded}"
|
|
3625
|
-
?inset="${this.common || this.inset}"
|
|
3706
|
+
?inset="${this.common || this.inset}"
|
|
3707
|
+
>
|
|
3626
3708
|
</${this.dropdownBibTag}>
|
|
3627
3709
|
</div>
|
|
3628
3710
|
`;
|
|
@@ -1846,7 +1846,7 @@ class AuroFloatingUI {
|
|
|
1846
1846
|
/**
|
|
1847
1847
|
* @private
|
|
1848
1848
|
* getting called on 'blur' in trigger or `focusin` in document
|
|
1849
|
-
*
|
|
1849
|
+
*
|
|
1850
1850
|
* Hides the bib if focus moves outside of the trigger or bib, unless a 'noHideOnThisFocusLoss' flag is set.
|
|
1851
1851
|
* This method checks if the currently active element is still within the trigger or bib.
|
|
1852
1852
|
* If not, and if the bib isn't in fullscreen mode with focus lost, it hides the bib.
|
|
@@ -1962,7 +1962,7 @@ class AuroFloatingUI {
|
|
|
1962
1962
|
// Close any other dropdown that is already open
|
|
1963
1963
|
const existedVisibleFloatingUI = document.expandedAuroFormkitDropdown || document.expandedAuroFloater;
|
|
1964
1964
|
if (existedVisibleFloatingUI && existedVisibleFloatingUI !== this &&
|
|
1965
|
-
existedVisibleFloatingUI.isPopoverVisible &&
|
|
1965
|
+
existedVisibleFloatingUI.element.isPopoverVisible &&
|
|
1966
1966
|
document.expandedAuroFloater.eventPrefix === this.eventPrefix) {
|
|
1967
1967
|
document.expandedAuroFloater.hideBib();
|
|
1968
1968
|
}
|
|
@@ -2138,7 +2138,7 @@ class AuroFloatingUI {
|
|
|
2138
2138
|
this.id = window.crypto.randomUUID();
|
|
2139
2139
|
this.element.setAttribute('id', this.id);
|
|
2140
2140
|
}
|
|
2141
|
-
|
|
2141
|
+
|
|
2142
2142
|
this.element.bib.setAttribute("id", `${this.id}-floater-bib`);
|
|
2143
2143
|
}
|
|
2144
2144
|
|
|
@@ -2191,7 +2191,7 @@ class AuroFloatingUI {
|
|
|
2191
2191
|
if (this.element.bib) {
|
|
2192
2192
|
this.element.shadowRoot.append(this.element.bib);
|
|
2193
2193
|
}
|
|
2194
|
-
|
|
2194
|
+
|
|
2195
2195
|
// Remove event & keyboard listeners
|
|
2196
2196
|
if (this.element?.trigger) {
|
|
2197
2197
|
this.element.trigger.removeEventListener('keydown', this.handleEvent);
|
|
@@ -2920,6 +2920,7 @@ var helpTextVersion = '1.0.0';
|
|
|
2920
2920
|
* @csspart helpText - The helpText content container.
|
|
2921
2921
|
* @event auroDropdown-triggerClick - Notifies that the trigger has been clicked.
|
|
2922
2922
|
* @event auroDropdown-toggled - Notifies that the visibility of the dropdown bib has changed.
|
|
2923
|
+
* @event auroDropdown-idAdded - Notifies consumers that the unique ID for the dropdown bib has been generated.
|
|
2923
2924
|
*/
|
|
2924
2925
|
class AuroDropdown extends LitElement {
|
|
2925
2926
|
constructor() {
|
|
@@ -2965,7 +2966,9 @@ class AuroDropdown extends LitElement {
|
|
|
2965
2966
|
this.rounded = false;
|
|
2966
2967
|
this.tabIndex = 0;
|
|
2967
2968
|
this.noToggle = false;
|
|
2969
|
+
this.a11yAutocomplete = 'none';
|
|
2968
2970
|
this.labeled = true;
|
|
2971
|
+
this.a11yRole = 'combobox';
|
|
2969
2972
|
this.onDark = false;
|
|
2970
2973
|
|
|
2971
2974
|
// floaterConfig
|
|
@@ -3101,6 +3104,16 @@ class AuroDropdown extends LitElement {
|
|
|
3101
3104
|
type: Number
|
|
3102
3105
|
},
|
|
3103
3106
|
|
|
3107
|
+
/**
|
|
3108
|
+
* The unique ID for the dropdown bib element.
|
|
3109
|
+
* @private
|
|
3110
|
+
*/
|
|
3111
|
+
dropdownId: {
|
|
3112
|
+
type: String,
|
|
3113
|
+
reflect: false,
|
|
3114
|
+
attribute: false
|
|
3115
|
+
},
|
|
3116
|
+
|
|
3104
3117
|
/**
|
|
3105
3118
|
* If declared in combination with `bordered` property or `helpText` slot content, will apply red color to both.
|
|
3106
3119
|
*/
|
|
@@ -3263,6 +3276,23 @@ class AuroDropdown extends LitElement {
|
|
|
3263
3276
|
*/
|
|
3264
3277
|
tabIndex: {
|
|
3265
3278
|
type: Number
|
|
3279
|
+
},
|
|
3280
|
+
|
|
3281
|
+
/**
|
|
3282
|
+
* The value for the role attribute of the trigger element.
|
|
3283
|
+
*/
|
|
3284
|
+
a11yRole: {
|
|
3285
|
+
type: String || undefined,
|
|
3286
|
+
attribute: false,
|
|
3287
|
+
reflect: false
|
|
3288
|
+
},
|
|
3289
|
+
|
|
3290
|
+
/**
|
|
3291
|
+
* The value for the aria-autocomplete attribute of the trigger element.
|
|
3292
|
+
*/
|
|
3293
|
+
a11yAutocomplete: {
|
|
3294
|
+
type: String,
|
|
3295
|
+
attribute: false,
|
|
3266
3296
|
}
|
|
3267
3297
|
};
|
|
3268
3298
|
}
|
|
@@ -3313,7 +3343,22 @@ class AuroDropdown extends LitElement {
|
|
|
3313
3343
|
}
|
|
3314
3344
|
|
|
3315
3345
|
firstUpdated() {
|
|
3346
|
+
|
|
3347
|
+
// Configure the floater to, this will generate the ID for the bib
|
|
3316
3348
|
this.floater.configure(this, 'auroDropdown');
|
|
3349
|
+
|
|
3350
|
+
/**
|
|
3351
|
+
* @description Let subscribers know that the dropdown ID ha been generated and added.
|
|
3352
|
+
* @event auroDropdown-idAdded
|
|
3353
|
+
* @type {Object<key: 'id', value: string>} - The ID of the dropdown bib element.
|
|
3354
|
+
*/
|
|
3355
|
+
this.dispatchEvent(new CustomEvent('auroDropdown-idAdded', {detail: {id: this.floater.element.id}}));
|
|
3356
|
+
|
|
3357
|
+
// Set the bib ID locally if the user hasn't provided a focusable trigger
|
|
3358
|
+
if (!this.triggerContentFocusable) {
|
|
3359
|
+
this.dropdownId = this.floater.element.id;
|
|
3360
|
+
}
|
|
3361
|
+
|
|
3317
3362
|
this.bibContent = this.floater.element.bib;
|
|
3318
3363
|
|
|
3319
3364
|
// Add the tag name as an attribute if it is different than the component name
|
|
@@ -3465,6 +3510,30 @@ class AuroDropdown extends LitElement {
|
|
|
3465
3510
|
});
|
|
3466
3511
|
}
|
|
3467
3512
|
|
|
3513
|
+
/*
|
|
3514
|
+
* Sets aria attributes for the trigger element if a custom one is passed in.
|
|
3515
|
+
* @private
|
|
3516
|
+
* @method setTriggerAriaAttributes
|
|
3517
|
+
* @param { HTMLElement } triggerElement - The custom trigger element.
|
|
3518
|
+
*/
|
|
3519
|
+
clearTriggerA11yAttributes(triggerElement) {
|
|
3520
|
+
|
|
3521
|
+
if (!triggerElement || !triggerElement.removeAttribute) {
|
|
3522
|
+
return;
|
|
3523
|
+
}
|
|
3524
|
+
|
|
3525
|
+
// Reset appropriate attributes for a11y
|
|
3526
|
+
triggerElement.removeAttribute('aria-labelledby');
|
|
3527
|
+
if (triggerElement.getAttribute('id') === `${this.id}-trigger-element`) {
|
|
3528
|
+
triggerElement.removeAttribute('id');
|
|
3529
|
+
}
|
|
3530
|
+
triggerElement.removeAttribute('role');
|
|
3531
|
+
triggerElement.removeAttribute('aria-expanded');
|
|
3532
|
+
|
|
3533
|
+
triggerElement.removeAttribute('aria-controls');
|
|
3534
|
+
triggerElement.removeAttribute('aria-autocomplete');
|
|
3535
|
+
}
|
|
3536
|
+
|
|
3468
3537
|
/**
|
|
3469
3538
|
* Handles changes to the trigger content slot and updates related properties.
|
|
3470
3539
|
*
|
|
@@ -3478,32 +3547,41 @@ class AuroDropdown extends LitElement {
|
|
|
3478
3547
|
* @returns {void}
|
|
3479
3548
|
*/
|
|
3480
3549
|
handleTriggerContentSlotChange(event) {
|
|
3550
|
+
|
|
3481
3551
|
this.floater.handleTriggerTabIndex();
|
|
3482
3552
|
|
|
3553
|
+
// Get the trigger
|
|
3554
|
+
const trigger = this.shadowRoot.querySelector('#trigger');
|
|
3555
|
+
|
|
3556
|
+
// Get the trigger slot
|
|
3483
3557
|
const triggerSlot = this.shadowRoot.querySelector('.triggerContent slot');
|
|
3484
3558
|
|
|
3559
|
+
// If there's a trigger slot
|
|
3485
3560
|
if (triggerSlot) {
|
|
3486
3561
|
|
|
3562
|
+
// Get the content nodes to see if there are any children
|
|
3487
3563
|
const triggerContentNodes = triggerSlot.assignedNodes();
|
|
3488
3564
|
|
|
3565
|
+
// If there are children
|
|
3489
3566
|
if (triggerContentNodes) {
|
|
3490
3567
|
|
|
3491
|
-
|
|
3492
|
-
|
|
3493
|
-
this.triggerContentFocusable = this.containsFocusableElement(node);
|
|
3494
|
-
}
|
|
3495
|
-
});
|
|
3496
|
-
}
|
|
3497
|
-
}
|
|
3568
|
+
// See if any of them are focusable elemeents
|
|
3569
|
+
this.triggerContentFocusable = triggerContentNodes.some((node) => this.containsFocusableElement(node));
|
|
3498
3570
|
|
|
3499
|
-
|
|
3571
|
+
// If any of them are focusable elements
|
|
3572
|
+
if (this.triggerContentFocusable) {
|
|
3500
3573
|
|
|
3501
|
-
|
|
3502
|
-
|
|
3503
|
-
|
|
3504
|
-
|
|
3505
|
-
|
|
3506
|
-
|
|
3574
|
+
// Assume the consumer will be providing their own a11y in whatever they passed in
|
|
3575
|
+
this.clearTriggerA11yAttributes(trigger);
|
|
3576
|
+
|
|
3577
|
+
// Remove the tabindex from the trigger so it doesn't interrupt focus flow
|
|
3578
|
+
trigger.removeAttribute('tabindex');
|
|
3579
|
+
} else {
|
|
3580
|
+
|
|
3581
|
+
// Add the tabindex to the trigger so that it's in the focus flow
|
|
3582
|
+
trigger.setAttribute('tabindex', '0');
|
|
3583
|
+
}
|
|
3584
|
+
}
|
|
3507
3585
|
}
|
|
3508
3586
|
|
|
3509
3587
|
if (event) {
|
|
@@ -3513,6 +3591,7 @@ class AuroDropdown extends LitElement {
|
|
|
3513
3591
|
|
|
3514
3592
|
if (this.triggerContentSlot) {
|
|
3515
3593
|
this.setupTriggerFocusEventBinding();
|
|
3594
|
+
|
|
3516
3595
|
this.hasTriggerContent = this.triggerContentSlot.some((slot) => {
|
|
3517
3596
|
if (slot.textContent.trim()) {
|
|
3518
3597
|
return true;
|
|
@@ -3580,10 +3659,13 @@ class AuroDropdown extends LitElement {
|
|
|
3580
3659
|
id="trigger"
|
|
3581
3660
|
class="trigger"
|
|
3582
3661
|
part="trigger"
|
|
3583
|
-
aria-labelledby="triggerLabel"
|
|
3584
3662
|
tabindex="${this.tabIndex}"
|
|
3585
3663
|
?showBorder="${this.showTriggerBorders}"
|
|
3586
|
-
|
|
3664
|
+
role="${ifDefined(this.triggerContentFocusable ? undefined : this.a11yRole)}"
|
|
3665
|
+
aria-expanded="${ifDefined(this.triggerContentFocusable ? undefined : this.isPopoverVisible)}"
|
|
3666
|
+
aria-controls="${ifDefined(this.triggerContentFocusable ? undefined : this.dropdownId)}"
|
|
3667
|
+
aria-labelledby="${ifDefined(this.triggerContentFocusable ? undefined : 'triggerLabel')}"
|
|
3668
|
+
>
|
|
3587
3669
|
<div class="triggerContentWrapper">
|
|
3588
3670
|
<label class="label" id="triggerLabel" hasTrigger=${this.hasTriggerContent}>
|
|
3589
3671
|
<slot name="label" @slotchange="${this.handleLabelSlotChange}"></slot>
|
|
@@ -3617,12 +3699,12 @@ class AuroDropdown extends LitElement {
|
|
|
3617
3699
|
<div id="bibSizer" part="size"></div>
|
|
3618
3700
|
<${this.dropdownBibTag}
|
|
3619
3701
|
id="bib"
|
|
3620
|
-
role="tooltip"
|
|
3621
3702
|
?data-show="${this.isPopoverVisible}"
|
|
3622
3703
|
?isfullscreen="${this.isBibFullscreen}"
|
|
3623
3704
|
?common="${this.common}"
|
|
3624
3705
|
?rounded="${this.common || this.rounded}"
|
|
3625
|
-
?inset="${this.common || this.inset}"
|
|
3706
|
+
?inset="${this.common || this.inset}"
|
|
3707
|
+
>
|
|
3626
3708
|
</${this.dropdownBibTag}>
|
|
3627
3709
|
</div>
|
|
3628
3710
|
`;
|
|
@@ -109,7 +109,7 @@ The use of any Auro custom element has a dependency on the [Auro Design Tokens](
|
|
|
109
109
|
In cases where the project is not able to process JS assets, there are pre-processed assets available for use. Legacy browsers such as IE11 are no longer supported.
|
|
110
110
|
|
|
111
111
|
```html
|
|
112
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@3.0.
|
|
112
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@3.0.1/auro-form/+esm"></script>
|
|
113
113
|
```
|
|
114
114
|
<!-- AURO-GENERATED-CONTENT:END -->
|
|
115
115
|
|
|
@@ -109,7 +109,7 @@ The use of any Auro custom element has a dependency on the [Auro Design Tokens](
|
|
|
109
109
|
In cases where the project is not able to process JS assets, there are pre-processed assets available for use. Legacy browsers such as IE11 are no longer supported.
|
|
110
110
|
|
|
111
111
|
```html
|
|
112
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@3.0.
|
|
112
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@3.0.1/auro-form/+esm"></script>
|
|
113
113
|
```
|
|
114
114
|
<!-- AURO-GENERATED-CONTENT:END -->
|
|
115
115
|
|
|
@@ -99,7 +99,7 @@ The use of any Auro custom element has a dependency on the [Auro Design Tokens](
|
|
|
99
99
|
In cases where the project is not able to process JS assets, there are pre-processed assets available for use. Legacy browsers such as IE11 are no longer supported.
|
|
100
100
|
|
|
101
101
|
```html
|
|
102
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@3.0.
|
|
102
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@aurodesignsystem/auro-formkit@3.0.1/auro-input/+esm"></script>
|
|
103
103
|
```
|
|
104
104
|
<!-- AURO-GENERATED-CONTENT:END -->
|
|
105
105
|
|
|
@@ -15,7 +15,10 @@ Generate unique names for dependency components.
|
|
|
15
15
|
## Properties
|
|
16
16
|
|
|
17
17
|
| Property | Attribute | Type | Default | Description |
|
|
18
|
-
|-----------------------------------|-----------------------------------|-----------|-------------|--------------------------------------------------|
|
|
18
|
+
|-----------------------------------|-----------------------------------|-----------|-------------|--------------------------------------------------|
|
|
19
|
+
| `a11yControls` | `a11yControls` | `string` | | The value for the aria-controls attribute. |
|
|
20
|
+
| `a11yExpanded` | `a11yExpanded` | `boolean` | | The value for the aria-expanded attribute. |
|
|
21
|
+
| `a11yRole` | `a11yRole` | `string` | | The value for the role attribute. |
|
|
19
22
|
| [activeLabel](#activeLabel) | `activeLabel` | `boolean` | false | If set, the label will remain fixed in the active position. |
|
|
20
23
|
| [autocapitalize](#autocapitalize) | `autocapitalize` | `string` | | An enumerated attribute that controls whether and how text input is automatically capitalized as it is entered/edited by the user. [off/none, on/sentences, words, characters]. |
|
|
21
24
|
| [autocomplete](#autocomplete) | `autocomplete` | `string` | | An enumerated attribute that defines what the user agent can suggest for autofill. At this time, only `autocomplete="off"` is supported. |
|