Skip to content

Scheduler - Virtual Scrolling - Support keyboard navigation #32743

Open
Tucchhaa wants to merge 16 commits intoDevExpress:26_1from
Tucchhaa:fix_home_end_virtual_scroll_26_1
Open

Scheduler - Virtual Scrolling - Support keyboard navigation #32743
Tucchhaa wants to merge 16 commits intoDevExpress:26_1from
Tucchhaa:fix_home_end_virtual_scroll_26_1

Conversation

@Tucchhaa
Copy link
Contributor

@Tucchhaa Tucchhaa commented Mar 2, 2026

No description provided.

@Tucchhaa Tucchhaa self-assigned this Mar 2, 2026
@Tucchhaa Tucchhaa added the 26_1 label Mar 2, 2026
@Tucchhaa Tucchhaa changed the title Scheduler - Virtual Scrolling - Support focus navigation Scheduler - Virtual Scrolling - Support keyboard navigation Mar 4, 2026
@Tucchhaa Tucchhaa marked this pull request as ready for review March 11, 2026 15:13
@Tucchhaa Tucchhaa requested a review from a team as a code owner March 11, 2026 15:13
Copilot AI review requested due to automatic review settings March 11, 2026 15:13
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates the Scheduler’s appointment ordering pipeline to expose a “sorted appointments” list to the appointments collection, enabling deterministic keyboard navigation (Tab/Home/End) in virtual scrolling scenarios, and adds/updates automated tests around this behavior.

Changes:

  • Introduces a dedicated sorting stage (sortAppointments) that produces SortedEntity[] and is reused for view model generation and keyboard navigation.
  • Refactors workspace → scheduler integration from onRenderAppointments/updateAppointments to renderAppointments.
  • Adds/updates QUnit + TestCafe coverage for keyboard navigation, including new E2E scenarios for virtual scrolling.

Reviewed changes

Copilot reviewed 15 out of 16 changed files in this pull request and generated 8 comments.

Show a summary per file
File Description
packages/testcafe-models/scheduler/appointment/index.ts Renames ctor filter param (titletext) used to locate appointments by text.
packages/devextreme/testing/tests/DevExpress.ui.widgets.scheduler/appointments.tests.js Aligns tests with “real scheduler” items flow and adds getSortedAppointments plumbing.
packages/devextreme/js/__internal/scheduler/workspaces/m_work_space.ts Renames callback to renderAppointments and updates invocation site.
packages/devextreme/js/__internal/scheduler/workspaces/m_virtual_scrolling.ts Uses workspace.renderAppointments() when virtual scrolling triggers re-render.
packages/devextreme/js/__internal/scheduler/view_model/types.ts Introduces SortedEntity type and refactors AppointmentEntity composition.
packages/devextreme/js/__internal/scheduler/view_model/generate_view_model/generate_grid_view_model.ts Splits sorting into sortAppointments() and updates grid VM generation to accept sorted input.
packages/devextreme/js/__internal/scheduler/view_model/appointments_layout_manager.ts Stores and exposes sorted items for reuse (sortedItems).
packages/devextreme/js/__internal/scheduler/m_scheduler.ts Wires getSortedAppointments + scrollTo into appointments config; renames workspace render hook.
packages/devextreme/js/__internal/scheduler/appointments/utils/sorted_index_utils.ts Removes old DOM-based next/prev focus helpers.
packages/devextreme/js/__internal/scheduler/appointments/utils/sorted_index_utils.test.ts Removes Jest coverage for the deleted helpers.
packages/devextreme/js/__internal/scheduler/appointments/m_appointments_kbn.ts Reworks keyboard navigation to use sorted items and support virtual scrolling.
packages/devextreme/js/__internal/scheduler/appointments/m_appointment_collection.ts Tracks elements by sorted index and preserves focus across re-render during virtual navigation.
e2e/testcafe-devextreme/tests/scheduler/helpers/generateAppointmentsWithResources.ts Adds helper to generate large grouped datasets for E2E navigation tests.
e2e/testcafe-devextreme/tests/scheduler/common/keyboardNavigation/documentScrollPrevented.ts Adds E2E checks for preventing document scroll on Home/End.
e2e/testcafe-devextreme/tests/scheduler/common/keyboardNavigation/appointments.ts Expands E2E coverage for appointment keyboard navigation across scrolling modes.

You can also share your feedback on Copilot code review. Take the survey.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants