Scheduler - A11y - Add Home and End hotkeys, change scheduler's role, extend appointment's aria-describedby #32575
Conversation
There was a problem hiding this comment.
Pull request overview
Improves Scheduler accessibility by expanding keyboard navigation and enriching ARIA metadata so assistive technologies can better describe scheduler state and appointment interactions.
Changes:
- Added Home/End keyboard handlers for faster appointment navigation in Scheduler appointment keyboard navigation.
- Changed Scheduler root ARIA role from
grouptoapplication. - Extended appointment
aria-describedbycontent to include hotkey guidance, and adjusted unit/e2e tests accordingly.
Reviewed changes
Copilot reviewed 39 out of 39 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/devextreme/js/localization/messages/ar.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/bg.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/ca.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/cs.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/da.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/de.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/el.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/en.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/es.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/fa.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/fi.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/fr.json | Adds new scheduler appointment hotkeys message key/value; minor whitespace cleanup. |
| packages/devextreme/js/localization/messages/hu.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/it.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/ja.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/lt.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/lv.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/nb.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/nl.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/pl.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/pt.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/ro.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/ru.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/sl.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/sv.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/tr.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/uk.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/vi.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/zh-tw.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/localization/messages/zh.json | Adds new scheduler appointment hotkeys message key/value. |
| packages/devextreme/js/__internal/scheduler/m_scheduler.ts | Updates scheduler ARIA role to application. |
| packages/devextreme/js/__internal/scheduler/appointments/m_appointments_kbn.ts | Adds Home/End keyboard navigation and refactors focus logic into a helper. |
| packages/devextreme/js/__internal/scheduler/appointments/appointment/text_utils.ts | Appends hotkeys text into appointment ARIA description string. |
| packages/devextreme/js/__internal/scheduler/appointments/appointment/text_utils.test.ts | Relaxes assertions to account for newly appended hotkeys description text. |
| packages/devextreme/js/__internal/scheduler/appointments/appointment/m_appointment.ts | Refactors aria description assignment flow (early-return when empty). |
| packages/devextreme/js/__internal/scheduler/tests/appointments.test.ts | Adds Jest coverage for aria-describedby presence and Home/End focusing behavior; improves cleanup. |
| packages/devextreme/js/__internal/scheduler/tests/mock/model/appointment.ts | Extends appointment test model with isFocused() helper. |
| e2e/testcafe-devextreme/tests/accessibility/scheduler/scheduler.ts | Updates expected scheduler role in accessibility e2e test. |
| e2e/testcafe-devextreme/tests/accessibility/scheduler/appointment.ts | Updates appointment accessibility e2e assertions to expect aria-describedby and tolerate appended text. |
packages/devextreme/js/__internal/scheduler/appointments/appointment/text_utils.ts
Outdated
Show resolved
Hide resolved
packages/devextreme/js/__internal/scheduler/appointments/appointment/m_appointment.ts
Outdated
Show resolved
Hide resolved
packages/devextreme/js/__internal/scheduler/appointments/m_appointments_kbn.ts
Outdated
Show resolved
Hide resolved
e2e/testcafe-devextreme/tests/scheduler/common/keyboardNavigation/appointments.ts
Show resolved
Hide resolved
e2e/testcafe-devextreme/tests/scheduler/common/keyboardNavigation/appointments.ts
Show resolved
Hide resolved
e2e/testcafe-devextreme/tests/scheduler/common/keyboardNavigation/appointments.ts
Outdated
Show resolved
Hide resolved
e2e/testcafe-devextreme/tests/scheduler/common/keyboardNavigation/appointments.ts
Outdated
Show resolved
Hide resolved
e2e/testcafe-devextreme/tests/scheduler/common/keyboardNavigation/appointments.ts
Outdated
Show resolved
Hide resolved
f2d0e02 to
54409f5
Compare
682436d to
ab02675
Compare
ab02675 to
10a7d53
Compare
packages/devextreme/js/__internal/scheduler/__tests__/appointments.test.ts
Outdated
Show resolved
Hide resolved
packages/devextreme/js/__internal/scheduler/appointments/m_appointments_kbn.ts
Show resolved
Hide resolved
aleksei-semikozov
left a comment
There was a problem hiding this comment.
I noticed that the workspace still has tabindex (it gets tabindex=0 from focusStateEnabled: true passed by the scheduler).
The issue mentions "Workspace shouldn't have tabindex" — are you planning to address this in this PR or will it be a separate one?
Thank you for noticing it, there will be another PR to fix tabindex. I will update description of the issue of this PR |
No description provided.