Files
mabibli/MaBibli.Client/Services/Aria.cs
T
mathieuandClaude Opus 5 c168959e12 Fait dire aux boutons repliables s'ils sont ouverts ou fermés
« aria-expanded="@_ouvert" » ne rend pas « true » ou « false » : Blazor y voit
un attribut de présence, comme disabled. Vrai donnait aria-expanded="", faux
retirait l'attribut — dans les deux cas, un lecteur d'écran n'apprenait rien,
et un bouton replié ne s'annonçait plus comme repliable.

Le défaut valait pour les six boutons de l'application. Une fonction nommée
remplace le booléen nu, qui se relisait comme correct.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 01:39:28 +02:00

23 lines
1.0 KiB
C#

namespace MaBibli.Client.Services;
/// <summary>
/// Les états ARIA, écrits en toutes lettres.
/// </summary>
/// <remarks>
/// ⚠️ <b><c>aria-expanded="@_ouvert"</c> ne fait pas ce qu'on croit.</b> Blazor traite un booléen
/// comme un attribut de <i>présence</i> — à la manière de <c>disabled</c> ou <c>hidden</c> : vrai
/// rend <c>aria-expanded=""</c>, faux <b>retire l'attribut</b>. Or ARIA attend les chaînes
/// « true » et « false », et un lecteur d'écran ne sait lire ni l'une ni l'autre de ces deux
/// formes : replié, le bouton ne s'annonce plus comme repliable du tout.
/// <para>
/// Le défaut est passé inaperçu cinq fois (2026-08-22) parce qu'il ne se voit pas à l'écran et
/// qu'aucun test ne rend de balisage. D'où cette fonction : elle se remarque à la relecture là
/// où un booléen nu se lit comme correct.
/// </para>
/// </remarks>
public static class Aria
{
/// <summary>« true » ou « false », jamais un attribut de présence.</summary>
public static string Etat(bool valeur) => valeur ? "true" : "false";
}