a11y: WCAG 2.5.5 target sizes + 2.5.3 label-in-name fixes

Increase touch/click target sizes to meet WCAG 2.5.5 (minimum 44×44px
for navigation, 32px for admin UI controls):

- main.css / search.css: pagination buttons 2rem → min-height/min-width
  2.75rem (44px). Changed display to inline-flex for proper centering.
- admin.css: .admin-btn-sm gains min-height: 2rem (32px) and switches
  to inline-flex so the constraint is respected.
- admin.css: .admin-btn-remove (jury ✕ buttons) gains min-height: 2rem
  and inline-flex display + explicit cursor:pointer.

WCAG 2.5.3 label-in-name — jury remove buttons already had aria-label;
wrap the visible ✕ glyph in <span aria-hidden='true'> so screen readers
hear only the aria-label, not the symbol:

- templates/partials/form/jury-fieldset.php: all three ✕ occurrences
  (static PHP blocks + JS-generated innerHTML string) wrapped.

WCAG 4.1.2 / semantic HTML:
- admin/index.php: add role='toolbar' aria-label='Actions groupées' to
  the bulk-actions bar.
This commit is contained in:
Pontoporeia
2026-04-02 18:17:40 +02:00
parent ba36725111
commit e1ce900113
7 changed files with 25 additions and 19 deletions

View File

@@ -65,7 +65,7 @@ $juryIdx = max(count($juryLecteurs), 1);
<input type="checkbox" name="jury_lecteurs_ext[0]" value="1"> Externe
</label>
<button type="button" class="admin-btn-remove" onclick="removeJuryRow(this)"
aria-label="Supprimer ce lecteur"></button>
aria-label="Supprimer ce lecteur"><span aria-hidden="true">✕</span></button>
</div>
<?php else: ?>
<?php foreach ($juryLecteurs as $li => $lm): ?>
@@ -77,7 +77,7 @@ $juryIdx = max(count($juryLecteurs), 1);
<?= $lm['is_external'] ? 'checked' : '' ?>> Externe
</label>
<button type="button" class="admin-btn-remove" onclick="removeJuryRow(this)"
aria-label="Supprimer ce lecteur"></button>
aria-label="Supprimer ce lecteur"><span aria-hidden="true">✕</span></button>
</div>
<?php endforeach; ?>
<?php endif; ?>
@@ -97,7 +97,7 @@ $juryIdx = max(count($juryLecteurs), 1);
+ '<label class="admin-checkbox-label admin-jury-ext">'
+ '<input type="checkbox" name="jury_lecteurs_ext[' + juryIdx + ']" value="1"> Externe'
+ '</label>'
+ '<button type="button" class="admin-btn-remove" onclick="removeJuryRow(this)" aria-label="Supprimer ce lecteur"></button>';
+ '<button type="button" class="admin-btn-remove" onclick="removeJuryRow(this)" aria-label="Supprimer ce lecteur"><span aria-hidden="true">✕</span></button>';
list.appendChild(div);
juryIdx++;
}