Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(Alert): Move dismiss button before actions to focus on it first #8266

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

andrey-medvedev-vk
Copy link
Contributor

@andrey-medvedev-vk andrey-medvedev-vk commented Feb 12, 2025


  • Release notes

Описание

В задаче #3042 указаны две явные проблемы:

  • фокус должен попадать на заголовок, а он не попадает
    Исходя из рекоммендаций W3C спецификации и других ресурсов ([1], [2]) выходит, что лучше всего иммено фокус на интерактивном элементе, редко когда встречается совет фокусироваться на начале текста, и то, только если текста много.
    Наш Alert требование фокуса выполняет. В это PR я лишь передвинул кнопку закрытия алерта выше в дереве, чтобы при её наличии фокус был на ней, и пользователь не мог случайно согласиться на какое-то действие.
    Пожелание из [Enhancement][a11y] Доступность Alert #3042 от том, что нужен фокус на заголовке обусловлен тем, что нужно, чтобы скринридер прочитал текст в Alert при его появлении. NVDA и VoiceOver читают текст, так как мы используем внутри связь алерта с заголовком и содержимым чере aria-labelledby и area-describedby.

  • Кнопки выполняют одинаковые действия, но называются по разному.

    Кажется, что первая и третья кнопки выполняют одно и то же действие, и по смыслу дублируют друг друга:
    Отмена
    Удалить
    Закрыть предупреждение

    Долго думал как бы спрятать или предоставить польозователям библиотеки возможность прятать лишние дублирующие кнопки, но после общения со специалистом по доступности понял, что проблема не в дублировании, а в том, что кнопки называются по разному и могут сбивать с толку, если выполняют одно и то же действие.
    Решением тут вижу только исправление примера в Storybook и доке и указание в доке о том, что если кнопка закрытия алерта и кнопка действия по сути выполняют одно и то же действие, то имена у них в дереве доступности должны быть одинаковыми.
    Решение: если кнопка действия и кнопка закрытия выполняют одинаковые действия их имена в дереве доступности должный быть одинаковыми. В частности кнопка закрытия через свойство dismissLabel должно повторять имя одной из кнопок действия.

    Были мысли проверять есть ли action у кнопки с режимом 'cancel`, но пришел к выводу, что тут можно только хуже сделать и усложнить.
    Примера должно быть достаточно. Варианты использования могут быть разными и не зависеть от action mode.

Release notes

Исправления

  • Alert: улучшена доступность компонента
    Кнопка закрытия, при наличии, первой получает фокус при открытии алерта
    В документацию по доступности компонента добавлен пункт по поводу имен кнопок с одинаковыми действиями

@github-actions github-actions bot added the patch Автоматизация: PR продублируется в ветку последнего минорного релиза для выпуска патча label Feb 12, 2025
Copy link

codesandbox-ci bot commented Feb 12, 2025

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Copy link
Contributor

github-actions bot commented Feb 12, 2025

size-limit report 📦

Path Size
JS 397.06 KB (0%)
JS (gzip) 120.59 KB (0%)
JS (brotli) 99.11 KB (-0.02% 🔽)
JS import Div (tree shaking) 1.56 KB (0%)
CSS 348.14 KB (0%)
CSS (gzip) 43.1 KB (0%)
CSS (brotli) 34.44 KB (0%)

Copy link
Contributor

github-actions bot commented Feb 12, 2025

e2e tests

Playwright Report

Copy link
Contributor

github-actions bot commented Feb 12, 2025

👀 Docs deployed

Commit 7115297

Copy link

codecov bot commented Feb 12, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 95.54%. Comparing base (67b998d) to head (7115297).
Report is 6 commits behind head on master.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #8266      +/-   ##
==========================================
- Coverage   95.58%   95.54%   -0.05%     
==========================================
  Files         404      404              
  Lines       11612    11641      +29     
  Branches     3857     3859       +2     
==========================================
+ Hits        11099    11122      +23     
- Misses        513      519       +6     
Flag Coverage Δ
unittests 95.54% <100.00%> (-0.05%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@andrey-medvedev-vk andrey-medvedev-vk marked this pull request as ready for review February 13, 2025 15:19
@andrey-medvedev-vk andrey-medvedev-vk requested a review from a team as a code owner February 13, 2025 15:19
Comment on lines +54 to +55
> &
React.AriaAttributes;
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чисто для того, чтобы у пользователей была возможность добавлять aria аттрибуты на кнопки действия.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
patch Автоматизация: PR продублируется в ветку последнего минорного релиза для выпуска патча
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Enhancement][a11y] Доступность Alert
1 participant