From b0991607ea457af98987d18b907f49fd5b8d60e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marl=C3=A8ne=20SIMONDANT?= <msimondant@grandlyon.com> Date: Mon, 22 Apr 2024 14:48:28 +0000 Subject: [PATCH] fix(accessibility): checkboxes must have labels and should not be nested in another interactive element (button) --- .../components/checkbox-form/checkbox-form.component.html | 6 +++--- .../components/checkbox-form/checkbox-form.component.scss | 2 +- src/app/shared/components/checkbox/checkbox.component.html | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/app/shared/components/checkbox-form/checkbox-form.component.html b/src/app/shared/components/checkbox-form/checkbox-form.component.html index 784e822f6..9a5c736eb 100644 --- a/src/app/shared/components/checkbox-form/checkbox-form.component.html +++ b/src/app/shared/components/checkbox-form/checkbox-form.component.html @@ -1,9 +1,9 @@ -<button type="button" tabindex="-1" [ngClass]="{ selected: isChecked }" (click)="clicked()"> +<div class="checkbox" tabindex="-1" [ngClass]="{ selected: isChecked }" (click)="clicked()" (keydown.enter)="clicked()"> <app-checkbox [checked]="isChecked" /> <svg *ngIf="iconSvg" aria-hidden="true" class="icon" [ngClass]="iconType"> <use [attr.xlink:href]="'assets/form/sprite.svg#' + iconSvg" /> </svg> - <p>{{ text }}</p> -</button> + <p id="checkboxLabel">{{ text }}</p> +</div> diff --git a/src/app/shared/components/checkbox-form/checkbox-form.component.scss b/src/app/shared/components/checkbox-form/checkbox-form.component.scss index 167a1bc2c..0078cd152 100644 --- a/src/app/shared/components/checkbox-form/checkbox-form.component.scss +++ b/src/app/shared/components/checkbox-form/checkbox-form.component.scss @@ -1,7 +1,7 @@ @import 'color'; @import 'typography'; -button { +div.checkbox { width: 100%; height: 80px; padding: 1rem; diff --git a/src/app/shared/components/checkbox/checkbox.component.html b/src/app/shared/components/checkbox/checkbox.component.html index 17d7e6d70..c2185f1c7 100644 --- a/src/app/shared/components/checkbox/checkbox.component.html +++ b/src/app/shared/components/checkbox/checkbox.component.html @@ -5,5 +5,6 @@ [checked]="checked" [indeterminate]="indeterminate" [disabled]="disabled" + [attr.aria-labelledby]="'checkboxLabel'" (click)="action.emit($event)" /> -- GitLab