[bug] Add aria-controls attributes to supplement aria-expanded attributes

This commit is contained in:
addison 2022-04-26 09:12:33 -04:00
parent e9c30d4232
commit b0ee9efbbd
4 changed files with 29 additions and 8 deletions

View File

@ -3,6 +3,7 @@
<button <button
class="no-btn" class="no-btn"
[attr.aria-expanded]="!isCollapsed(collectionsGrouping)" [attr.aria-expanded]="!isCollapsed(collectionsGrouping)"
aria-controls="collection-filters"
(click)="toggleCollapse(collectionsGrouping)" (click)="toggleCollapse(collectionsGrouping)"
appA11yTitle="{{ 'toggleCollapse' | i18n }}" appA11yTitle="{{ 'toggleCollapse' | i18n }}"
> >
@ -17,7 +18,7 @@
</button> </button>
<h2>&nbsp;{{ collectionsGrouping.name | i18n }}</h2> <h2>&nbsp;{{ collectionsGrouping.name | i18n }}</h2>
</div> </div>
<ul *ngIf="!isCollapsed(collectionsGrouping)" class="filter-options"> <ul id="collection-filters" *ngIf="!isCollapsed(collectionsGrouping)" class="filter-options">
<ng-template #recursiveCollections let-collections> <ng-template #recursiveCollections let-collections>
<li <li
class="filter-option" class="filter-option"
@ -29,6 +30,7 @@
*ngIf="c.children.length" *ngIf="c.children.length"
class="toggle-button" class="toggle-button"
[attr.aria-expanded]="!isCollapsed(c.node)" [attr.aria-expanded]="!isCollapsed(c.node)"
[attr.aria-controls]="c.node.name + '_children'"
(click)="toggleCollapse(c.node)" (click)="toggleCollapse(c.node)"
appA11yTitle="{{ 'toggleCollapse' | i18n }}" appA11yTitle="{{ 'toggleCollapse' | i18n }}"
> >
@ -54,7 +56,11 @@
&nbsp;{{ c.node.name }} &nbsp;{{ c.node.name }}
</button> </button>
</span> </span>
<ul class="nested-filter-options" *ngIf="c.children.length && !isCollapsed(c.node)"> <ul
[id]="c.node.name + '_children'"
class="nested-filter-options"
*ngIf="c.children.length && !isCollapsed(c.node)"
>
<ng-container <ng-container
*ngTemplateOutlet="recursiveCollections; context: { $implicit: c.children }" *ngTemplateOutlet="recursiveCollections; context: { $implicit: c.children }"
> >

View File

@ -3,6 +3,7 @@
<button <button
class="toggle-button" class="toggle-button"
[attr.aria-expanded]="!isCollapsed(foldersGrouping)" [attr.aria-expanded]="!isCollapsed(foldersGrouping)"
aria-controls="folder-filters"
(click)="toggleCollapse(foldersGrouping)" (click)="toggleCollapse(foldersGrouping)"
appA11yTitle="{{ 'toggleCollapse' | i18n }}" appA11yTitle="{{ 'toggleCollapse' | i18n }}"
> >
@ -20,7 +21,7 @@
<i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i> <i class="bwi bwi-plus bwi-fw" aria-hidden="true"></i>
</button> </button>
</div> </div>
<ul class="filter-options" *ngIf="!isCollapsed(foldersGrouping)"> <ul id="folder-filters" class="filter-options" *ngIf="!isCollapsed(foldersGrouping)">
<ng-template #recursiveFolders let-folders> <ng-template #recursiveFolders let-folders>
<li <li
*ngFor="let f of folders" *ngFor="let f of folders"
@ -35,6 +36,8 @@
*ngIf="f.children.length" *ngIf="f.children.length"
(click)="toggleCollapse(f.node)" (click)="toggleCollapse(f.node)"
appA11yTitle="{{ 'toggleCollapse' | i18n }}" appA11yTitle="{{ 'toggleCollapse' | i18n }}"
[attr.aria-expanded]="!isCollapsed(f.node)"
[attr.aria-controls]="f.node.name + '_children'"
> >
<i <i
class="bwi bwi-fw" class="bwi bwi-fw"
@ -62,7 +65,11 @@
<i class="bwi bwi-pencil bwi-fw" aria-hidden="true"></i> <i class="bwi bwi-pencil bwi-fw" aria-hidden="true"></i>
</button> </button>
</span> </span>
<ul class="nested-filter-options" *ngIf="f.children.length && !isCollapsed(f.node)"> <ul
[id]="f.node.name + '_children'"
class="nested-filter-options"
*ngIf="f.children.length && !isCollapsed(f.node)"
>
<ng-container *ngTemplateOutlet="recursiveFolders; context: { $implicit: f.children }"> <ng-container *ngTemplateOutlet="recursiveFolders; context: { $implicit: f.children }">
</ng-container> </ng-container>
</ul> </ul>

View File

@ -6,6 +6,8 @@
class="toggle-button" class="toggle-button"
appA11yTitle="{{ 'toggleCollapse' | i18n }}" appA11yTitle="{{ 'toggleCollapse' | i18n }}"
(click)="toggleCollapse()" (click)="toggleCollapse()"
[attr.aria-expanded]="!isCollapsed"
aria-controls="organization-filters"
> >
<i <i
class="bwi bwi-fw" class="bwi bwi-fw"
@ -24,7 +26,7 @@
<h2>&nbsp;{{ organizationGrouping.name | i18n }}</h2> <h2>&nbsp;{{ organizationGrouping.name | i18n }}</h2>
</button> </button>
</div> </div>
<ul *ngIf="!isCollapsed" class="filter-options no-margin"> <ul id="organization-filters" *ngIf="!isCollapsed" class="filter-options no-margin">
<li <li
class="filter-option" class="filter-option"
*ngFor="let organization of organizations" *ngFor="let organization of organizations"
@ -45,7 +47,12 @@
</ng-container> </ng-container>
<ng-container *ngSwitchCase="'organizationMember'"> <ng-container *ngSwitchCase="'organizationMember'">
<div class="filter-heading" [ngClass]="{ active: !hasActiveFilter }"> <div class="filter-heading" [ngClass]="{ active: !hasActiveFilter }">
<button appA11yTitle="{{ 'toggleCollapse' | i18n }}" (click)="toggleCollapse()"> <button
appA11yTitle="{{ 'toggleCollapse' | i18n }}"
(click)="toggleCollapse()"
[attr.aria-expanded]="!isCollapsed"
aria-controls="organization-filters"
>
<i <i
class="bwi bwi-fw" class="bwi bwi-fw"
aria-hidden="true" aria-hidden="true"
@ -63,7 +70,7 @@
<h2>&nbsp;{{ organizationGrouping.name | i18n }}</h2> <h2>&nbsp;{{ organizationGrouping.name | i18n }}</h2>
</button> </button>
</div> </div>
<ul *ngIf="!isCollapsed" class="filter-options no-margin"> <ul id="organization-filters" *ngIf="!isCollapsed" class="filter-options no-margin">
<li class="filter-option" [ngClass]="{ active: activeFilter.myVaultOnly }"> <li class="filter-option" [ngClass]="{ active: activeFilter.myVaultOnly }">
<span class="filter-buttons"> <span class="filter-buttons">
<button <button

View File

@ -3,6 +3,7 @@
class="no-btn" class="no-btn"
(click)="toggleCollapse()" (click)="toggleCollapse()"
aria-expanded="!isCollapsed" aria-expanded="!isCollapsed"
aria-controls="type-filters"
appA11yTitle="{{ 'toggleCollapse' | i18n }}" appA11yTitle="{{ 'toggleCollapse' | i18n }}"
> >
<i <i
@ -16,7 +17,7 @@
</button> </button>
<h2>&nbsp;{{ typesNode.name | i18n }}</h2> <h2>&nbsp;{{ typesNode.name | i18n }}</h2>
</div> </div>
<ul *ngIf="!isCollapsed" class="filter-options"> <ul id="type-filters" *ngIf="!isCollapsed" class="filter-options">
<li <li
class="filter-option" class="filter-option"
[ngClass]="{ active: activeFilter.cipherType === cipherTypeEnum.Login }" [ngClass]="{ active: activeFilter.cipherType === cipherTypeEnum.Login }"