diff --git a/force-app/main/default/lwc/accordionSection/accordionSection.html b/force-app/main/default/lwc/accordionSection/accordionSection.html index d632b5ed601..41c45c7c426 100644 --- a/force-app/main/default/lwc/accordionSection/accordionSection.html +++ b/force-app/main/default/lwc/accordionSection/accordionSection.html @@ -10,15 +10,16 @@ class="slds-align_absolute-center slds-m-vertical_x-small" > @@ -27,6 +28,9 @@ diff --git a/force-app/main/default/lwc/accordionSection/accordionSection.js b/force-app/main/default/lwc/accordionSection/accordionSection.js index 5106dc28750..a46dc000e35 100644 --- a/force-app/main/default/lwc/accordionSection/accordionSection.js +++ b/force-app/main/default/lwc/accordionSection/accordionSection.js @@ -25,6 +25,15 @@ export default class AccordionSection extends LightningElement { return this.isOpen ? toggleInstructionsWhenOpen : toggleInstructionsWhenClosed; } + get ariaExpanded() { + return this.isOpen ? "true" : "false"; + } + + get buttonAriaLabel() { + const state = this.isOpen ? "expanded" : "collapsed"; + return `${this.title}, ${state}`; + } + get classes() { let classes = ["slds-accordion__section"]; @@ -47,6 +56,15 @@ export default class AccordionSection extends LightningElement { handleToggle() { this.toggle(); + // eslint-disable-next-line @lwc/lwc/no-async-operation + setTimeout(() => this.template.querySelector("button")?.focus(), 0); + } + + handleClickableKeydown(event) { + if (event.key === "Enter" || event.key === " ") { + event.preventDefault(); + this.handleToggle(); + } } @api diff --git a/force-app/main/default/pages/STG_SettingsManager.page b/force-app/main/default/pages/STG_SettingsManager.page index 2c9022b904d..bae297de168 100644 --- a/force-app/main/default/pages/STG_SettingsManager.page +++ b/force-app/main/default/pages/STG_SettingsManager.page @@ -19,11 +19,11 @@ box-shadow: none; } - div.slds-tree__item button.chevronright, div.slds-tree__item.collapsed button.chevrondown { + div.slds-tree__item button .chevronright, div.slds-tree__item.collapsed button .chevrondown { display: none; } - div.slds-tree__item button.chevrondown, div.slds-tree__item.collapsed button.chevronright { + div.slds-tree__item button .chevrondown, div.slds-tree__item.collapsed button .chevronright { display: inline-block; } @@ -52,11 +52,21 @@ if (idPanelCurrent == '') idPanelCurrent = 'idPanelHome'; // page init function + function syncAriaExpanded() { + j$('#mynavbar .slds-tree__branch button[aria-expanded]').each(function() { + var isCollapsed = j$(this).closest('.slds-tree__branch').hasClass('collapsed'); + j$(this).attr('aria-expanded', isCollapsed ? 'false' : 'true'); + }); + } + j$(function () { var cl = j$('#mynavbar').collapsibleList('.slds-tree__branch', {search: false, animate: false}); // start with slds-tree-container all collapsed. couldn't figure out how to call collapseAllHeaders(), // but submitting the click on all li's does the trick! j$('div',cl).trigger('click'); + j$('#mynavbar .slds-tree__branch').on('click', function() { + syncAriaExpanded(); + }); ShowPanel(idPanelCurrent); }); @@ -131,13 +141,14 @@