Dobre praktyki WCAG - komponenty (low-code)
Etykieta (Text)
Dobre praktyki
Nagłówki oraz etykiety powinny być jednoznaczne i niezduplikowane – użytkownik powinien móc z łatwością rozpoznać, do czego odnosi się dany opis.
Etykiety bez powiązania z polem powinny być ustawiane jako paragraf, z użyciem opcji „Wyświetl jako paragraf (
<p>)”.

Powiązanie etykiety z polem :
Jeśli etykieta dotyczy jednego komponentu – należy wybrać ten komponent z listy w polu
labelRef. Przykład: jeśli etykietąText7ma być opis dla polaTextField2, to w konfiguracji WCAG etykietyText7należy wskazać komponentTextField2jako powiązany.

Jeśli etykieta dotyczy wielu komponentów – należy wybrać komponent pierwszy lub najważniejszy w kontekście grupy. Przykład: jeśli kod pocztowy składa się z dwóch pól typu
TextField, należy powiązać etykietę z pierwszym z nich.
Spójność etykiet:
Te same elementy na różnych stronach powinny mieć identyczne etykiety, aby zachować spójność nawigacji i treści z punktu widzenia użytkownika, w tym osób korzystających z czytników ekranu.
Sposób weryfikacji
sprawdzenie ariaLabel oraz ariaDescription (jeśli zostało uzupełnione)
Pole tekstowe (TextField)
Dobre praktyki
Uzupełnianie etykiety i atrybutów dostępności (ariaLabel, ariaDescription):
Każde pole powinno mieć przypisaną etykietę lub
ariaLabel(w przypadku braku etykiety wizualnej).Domyślnie, po dodaniu komponentu
TextField, właściwościariaLabeliariaDescriptionsą puste – należy je uzupełnić ręcznie. Przykład: zamiastGesTextField1.ariaLabelKeynależy użyćGesTextField1.label, co automatycznie przypisze wartość etykiety doariaLabel.

Dobre praktyki przy opisie pól:
Wymagalność pola
Komunikat "pole wymagane" może być zbyt ogólny. Zaleca się stosowanie konkretnych komunikatów, np. "Pole imię jest wymagane".
Walidacja formatu
Jeśli pole posiada walidację formatu (np. PESEL, NIP), należy dodać do
ariaDescriptionopis wymagań, np.: "Wymagane 11 cyfr bez spacji ani znaków specjalnych."
Maska
Jeśli pole posiada maskę → opisać w
ariaDescription, np. jakie znaki są dozwolone/niedozwolone.Jeśli pole posiada
visibleMask→ opisać np.: "Dla kodu pocztowego wpisz tylko cyfry, bez myślnika."
Maksymalna długość
Jeśli pole ma ustawioną wartość
maxLength→ dodać doariaDescriptioninformację o ograniczeniu, np.: "Do 30 znaków."
Suggester
Jeśli pole zawiera suggester (podpowiedzi dynamiczne) → opisać jego działanie, np.: "Wartość może zostać zmieniona automatycznie przy wpisaniu niepoprawnej liczby."
Walidator
Gdy komunikat błędu walidatora jest niejednoznaczny, należy w
ariaDescriptionzawrzeć jego sensowny opis, np.: "Pole nie może zawierać znaków specjalnych."
Formater
Jeśli pole zawiera formater → opisać sposób działania, np.: "Tekst zostanie automatycznie przekształcony na wielkie litery."
Ograniczenia dotyczące wklejania
Jeśli pole nie pozwala na wklejanie tekstu → należy to opisać w
ariaDescription, np.: "Pole nie obsługuje wklejania danych."
Prefiks / sufiks
Jeżeli pole zawiera prefiks lub sufiks (np. „+48”, „PLN”) → dodać do
ariaDescription, np.: "Pole poprzedzone kodem kraju +48."
Sposób weryfikacji
sprawdzenie ariaLabel oraz ariaDescription (jeśli zostało uzupełnione)
Pomoc kontekstowa (Tooltip)
Dobre praktyki
Jeśli tooltip posiada warunki widoczności, należy upewnić się, że są one zgodne z warunkami komponentu, do którego tooltip został przypisany.
Pole wielokrotnego wyboru (Checkbox) i Sekcja z checkboxem (CheckboxSection)
Dobre praktyki
Uzupełnianie ariaLabel i ariaDescription dla komponentu Checkbox i CheckboxSection:
Domyślnie, po dodaniu komponentu Checkbox, pola
ariaLabeliariaDescriptionsą puste. WartośćariaLabelnależy uzupełnić ręcznie – zazwyczaj wystarczy przypisać jej wartość z polatext.Przykład: Zastąpić:
GesCheckbox11.ariaLabel→GesCheckbox11.text(w efekcie:ariaLabel = text)

Atrybut
ariaDescriptionnie zawsze jest wymagany, ale warto go dodać w przypadku bardziej złożonego kontekstu, np. gdy checkbox wymaga dodatkowego objaśnienia.
Checkbox z treścią formatowaną (TextContent):
W przypadku, gdy checkbox jest zasilany treścią formatowaną z komponentu
TextContent, należy pamiętać, że czytniki ekranowe nie odczytująTextContent. Dlatego treść tekstu należy również przypisać doariaLabel, aby zapewnić jej dostępność.

Sposób weryfikacji
sprawdzenie ariaLabel oraz ariaDescription (jeśli zostało uzupełnione)
Pole daty (DatePicker)
Dobre praktyki
Uzupełnianie ariaLabel i ariaDescription dla komponentu DatePicker:
Każde pole powinno mieć przypisaną etykietę lub
ariaLabel(jeśli brak etykiety wizualnej).Domyślnie, po dodaniu komponentu DatePicker, właściwości
ariaLabeliariaDescriptionsą puste. Należy je uzupełnić ręcznie lub przypisaćariaLabeldo klucza etykiety komponentu.Przykład: Zamiast
GesDatePicker1.ariaLabelKey→ użyćGesDatePicker1.label(w efekcie:ariaLabel = label)
Dobre praktyki uzupełniania ariaDescription dla pól daty:
Jeśli pole posiada ograniczenia wyboru dat (
dateRange) → należy dodać opis doariaDescription, np.: „Wybierz datę z zakresu od 01.01.2020 do 31.12.2030.”Jeśli pole ma ustawiony niestandardowy format (
dateFormat) → należy opisać go wariaDescription, np.: „Data w formacie: miesiąc–rok (MM-RRRR).”Jeśli włączona jest maska (
autoMask) → warto dodać informację, jak działa automatyczne uzupełnianie, np.: „Wpisuj tylko cyfry – separator zostanie dodany automatycznie.”
Sposób weryfikacji
sprawdzenie ariaLabel oraz ariaDescription (jednoznaczna informacja o formacie danych)sprawdzenie ariaLabel oraz ariaDescription (jeśli zostało uzupełnione)
Obraz (Image)
Dobre praktyki
Tekst alternatywny (imageAlt) dla obrazów
Każdy obrazek powinien mieć uzupełniony tekst alternatywny (
imageAltlubimageAltKeyw pliku formularza).

Rekomendacje:
Maksymalna długość tekstu: 80 znaków
Zachowuj spójność stylu i języka opisu z resztą interfejsu
Pusty atrybut
alt(alt="") powinien być stosowany tylko wtedy, gdy obraz pełni funkcję dekoracyjną, np.:tło
linia rozdzielająca treść
ozdobna ikona bez funkcji informacyjnej
Prezentacja Informacyja/Dekoracyjna - W sekcji WCAG można ustawić prezentację informacyjną (obrazek będzie można sfokusować) lub dekoracyjną (nie można go sfokusować i posiada pusty atrybut imageAlt).
Obrazek jako link Jeśli obrazek jest zawarty w linku,
altpowinien zawierać zarówno opis graficzny, jak i informację o funkcji, np.: <a href="https://www.bank.com"> <img src="logo-bank.png" alt="Logo Banku XYZ – Przejdź na stronę główną Banku XYZ"> </a>Elementy SVG Dla grafik SVG można dodać atrybut
ariaLabeliariaDescription
Więcej: Dodatkowe informacje
Sposób weryfikacji
sprawdzenie wartości alt na wniosku
Pole wyboru wartości z listy (Combobox)
Dobre praktyki
Uzupełnianie ariaLabel i ariaDescription dla komponentu Combobox:
Każdy komponent ComboBox powinien mieć przypisaną etykietę lub
ariaLabel(w przypadku braku etykiety wizualnej).Domyślnie, po dodaniu ComboBoxa, pola
ariaLabeliariaDescriptionsą puste – należy je uzupełnić ręcznie lub przypisaćariaLabeldo klucza etykiety.Przykład:
GesCombobox1.ariaLabelKey→GesCombobox1.label(w efekcie:ariaLabel = label)
Alternatywny tekst dla wartości domyślnej „Wybierz”:
W zakładce „Pozostałe” (w konfiguracji ComboBoxa) można zdefiniować alternatywny tekst dla domyślnej wartości „Wybierz”, co poprawia dostępność i zrozumiałość dla użytkowników korzystających z czytników ekranowych.

Sposób weryfikacji
sprawdzenie ariaLabel i ariaDescription
Radio grupa (RadioGroup)/ Grupa Kafli (TileGroup)
Dobre praktyki
Etykieta i atrybuty dostępności:
Każdy komponent powinien posiadać etykietę (
label) lubariaLabel(jeśli etykieta wizualna nie jest dostępna).Domyślnie, po dodaniu komponentu (
ComboBox,RadioGroup,TileGroup), polaariaLabeliariaDescriptionsą puste — należy je uzupełnić ręcznie lub przypisaćariaLabeldo klucza etykiety.
RadioGroup:
Każda opcja (
Radio) powinna mieć unikalną wartość (value), aby uniknąć konfliktów w działaniu formularza oraz błędów czytników ekranu.RadioGroupmoże mieć:jeden wspólny tooltip (dla całej grupy),
lub oddzielne tooltipy dla każdej opcji, jeśli każda wymaga dodatkowego opisu.
TileGroup:
Jeżeli w treści kafelka (
Tile) został dodany obrazek, należy:dodać opis alternatywny (
alt), który jasno informuje o zawartości obrazka,ustawić
alt=""w przypadku grafik dekoracyjnych, aby nie były odczytywane przez czytniki ekranu.
Sposób weryfikacji
sprawdzenie ariaLabel i ariaDescription, sprawdzenie wartości alt jeśli zostały dodane do obrazków
Sekcja powtarzalna (RepeatableSection)
Dobre praktyki
Sekcja powinna mieć tytuł (
label) lubariaLabel– zapewnia to, że czytnik ekranu prawidłowo zidentyfikuje jej zawartość i kontekst.W atrybucie
ariaDescriptionnależy umieścić informację o minimalnej i maksymalnej liczbie możliwych wystąpień sekcji.
Sposób weryfikacji
sprawdzenie ariaDescription
Slider/Step slider
Dobre praktyki
Domyślnie, po dodaniu komponentu Slider, właściwości
ariaLabeliariaDescriptionsą puste. Należy je uzupełnić ręcznie — szczególnieariaLabel, jeśli komponent nie posiada widocznej etykiety.W atrybucie
ariaDescriptionwarto umieścić informację o zakresie wartości możliwych do wyboru
Sposób weryfikacji
sprawdzenie ariaDescription
Plus Minus
Dobre praktyki
Domyślnie, po dodaniu komponentu typu Plus-Minus, atrybuty
ariaLabeliariaDescriptionsą puste. Należy je uzupełnić ręcznie — szczególnieariaLabel, jeśli komponent nie posiada widocznej etykiety.W atrybucie
ariaDescriptionwarto dodać informację o minimalnej i maksymalnej możliwej wartości, aby użytkownicy czytników ekranowych mieli jasność co do dostępnego zakresu.
Sposób weryfikacji
sprawdzenie ariaDescription
Treść formatowana zwijana (RollableTextContent)
Dobre praktyki
Należy upewnić się, że komponent posiada tytuł (etykietę) oraz
ariaLabel.ariaLabelpowinno jednoznacznie opisywać zawartość komponentu, aby czytniki ekranowe mogły prawidłowo przekazać użytkownikowi informację o treści.
Sposób weryfikacji
sprawdzenie wartości title
Wybór produktu (ProductSelector)
Dobre praktyki
Domyślnie, po dodaniu komponentu ProductSelector, pola
ariaLabeliariaDescriptionsą puste. Należy je uzupełnić ręcznie — szczególnieariaLabel, jeśli komponent nie posiada widocznej etykiety.Obrazki wykorzystywane w komponencie ProductSelector powinny mieć uzupełnione wartości
alt— zgodne z zasadami dostępności, aby czytniki ekranowe mogły poprawnie opisać grafikę.Treść HTML wykorzystywana w komponencie (
ContentHTML) powinna być zweryfikowana przy pomocy narzędzia do walidacji HTML (np. Markup Validation Service) w celu eliminacji błędów i poprawy dostępności.
Sposób weryfikacji
sprawdzenie wartości alt i kodu HTML
Link wewnętrzny (PageNavigationLink) i zewnętrzny (Link)
Dobre praktyki
Domyślnie, po dodaniu linku pola
ariaLabeliariaDescriptionsą puste. Należy je uzupełnić ręcznie — szczególnieariaLabel, jeśli komponent nie posiada widocznej etykiety.Nie należy stosować wyłącznie wielkich liter (caps lock) w tekstach linków, aby nie utrudniać ich czytania i rozpoznawania przez użytkowników oraz czytniki ekranowe.
Użytkownik powinien być poinformowany, czy kliknięcie linku spowoduje otwarcie nowej karty lub uruchomienie innej aplikacji. Można to osiągnąć poprzez:
ustawienie właściwości otwierania linku, np.
target="_blank",dodanie tekstu informującego np. w tytule (
title) lub wariaDescription.czytelne oznaczenie graficzne lub tekstowe.
We właściwościach linku można ustawić m.in.:
sposób otwierania (
target, np._blank),tekst wyświetlany po najechaniu kursorem (atrybut
title),nazwę kotwicy (fragmentu strony).

Sposób weryfikacji
sprawdzenie ariaLabel i ariaDescription
Oświadczenia (Statements)
Dobre praktyki
W zakładce Właściwości można zmienić następujące właściwości nadpisujące teksty wyświetlane w interfejsie:
Właściwość nadpisująca:
"Zwiń treść oświadczeń"Właściwość nadpisująca:
"Rozwiń treść oświadczeń"Właściwość nadpisująca treść:
"Nie wyraziłeś zgody na wymagane oświadczenia"Właściwość nadpisująca treść:
"Nie dokonałeś wyboru przy wszystkich oświadczeniach, uzupełnij wymagane informacje w sekcji oświadczenia"Właściwość nadpisująca treść:
"Akceptuję wybrane oświadczenia"Właściwość nadpisująca treść:
"Akceptuję wszystkie oświadczenia"

Załączniki (UploadFile)
Dobre praktyki
Domyślnie, po dodaniu UploadFile pola
ariaLabeliariaDescriptionsą puste. Należy je uzupełnić ręcznie — szczególnieariaLabel, jeśli komponent nie posiada widocznej etykiety.W atrybutach
Domyślnie, po dodaniu linku pola
ariaLabeliariaDescriptionsą puste. Należy je uzupełnić ręcznie — szczególnieariaLabel, jeśli komponent nie posiada widocznej etykiety.
lub
ariaDescriptionpowinny znaleźć się informacje dotyczące:wymagalności załączników,
ilości możliwych do dodania plików.
Sposób weryfikacji
sprawdzenie ariaLabel
Mapa (MapView)
Dobre praktyki
Domyślnie, po dodaniu MapView pola
ariaLabeliariaDescriptionsą puste. Należy je uzupełnić ręcznie — szczególnieariaLabel, jeśli komponent nie posiada widocznej etykiety.W atrybucie
ariaLabellubariaDescriptionwarto umieścić informacje istotne dla użytkownika, np.:opis celu mapy,
wskazówki dotyczące obsługi (np. czy można wybrać lokalizację),
inne istotne informacje dostępnościowe.
Sposób weryfikacji
sprawdzenie ariaLabel
Potwierdzenie danych (ConfirmationSection)
Dobre praktyki
Domyślnie, po dodaniu confirmation section pola
ariaLabeliariaDescriptionsą puste. Należy je uzupełnić ręcznie — szczególnieariaLabel, jeśli komponent nie posiada widocznej etykiety.W atrybucie
ariaLabellubariaDescriptionwarto umieścić dodatkowe informacje pomocne w kontekście potwierdzania danych, np.:instrukcje dotyczące potwierdzenia,
informację o konieczności sprawdzenia danych przed zatwierdzeniem.
Generator kodów QR (QRCodeGenerator)
Dobre praktyki
Domyślnie, po dodaniu QRCodeGenerator pola ariaLabel i ariaDescription są puste.
Należy je uzupełnić ręcznie — szczególnie ariaLabel, jeśli komponent nie posiada widocznej etykiety.
Sposób weryfikacji
sprawdzenie ariaLabel
Skaner kodów QR (QRCodeScanner)
Dobre praktyki
Domyślnie, po dodaniu QRCodeScanner pola ariaLabel i ariaDescription są puste.
Należy je uzupełnić ręcznie — szczególnie ariaLabel, jeśli komponent nie posiada widocznej etykiety.
Sposób weryfikacji
sprawdzenie ariaLabel
Skaner kodów AZTEC (AztecCodeScanner)
Dobre praktyki
Domyślnie, po dodaniu AztecCodeScanner pola ariaLabel i ariaDescription są puste.
Należy je uzupełnić ręcznie — szczególnie ariaLabel, jeśli komponent nie posiada widocznej etykiety.
Sposób weryfikacji
sprawdzenie ariaLabel
Przydatne strony
przewodnik po wymaganiach: https://wcag20.widzialni.org/index.php
tryb wysokiego kontrastu - rozszerzenie: https://chromewebstore.google.com/detail/wysoki-kontrast/djcfdncoelnlbldjfhinnjlhdjlikmph?hl=pl
Czytniki ekranu
do pobrania czytnik NVDA (pod Windows): https://www.nvda.pl/pobierz lub
Na Linuksie mamy wbudowany czytnik (uruchamianie/gaszenie Win+Alt+S)
Last updated
Was this helpful?
