Scheduler - Appointments Refactoring - Rendering#33014
Open
Tucchhaa wants to merge 8 commits intoDevExpress:26_1from
Open
Scheduler - Appointments Refactoring - Rendering#33014Tucchhaa wants to merge 8 commits intoDevExpress:26_1from
Tucchhaa wants to merge 8 commits intoDevExpress:26_1from
Conversation
Tucchhaa
commented
Mar 25, 2026
Comment on lines
-17
to
-18
| startDate: Date | string; | ||
| endDate: Date | string; |
Contributor
Author
There was a problem hiding this comment.
SafeAppointment type actually doesn't have this properties, so I have removed them
Contributor
There was a problem hiding this comment.
Pull request overview
This PR introduces a new internal Scheduler appointments rendering implementation (behind the _newAppointments option), including incremental rendering via view model diffing, plus supporting utilities, styling updates, and test coverage.
Changes:
- Added
appointments_newcomponents (appointments container, base appointment, grid/agenda appointments, collector) and utilities (diffing, targeted appointment, date text) with Jest tests. - Integrated the new appointments implementation into
m_scheduler.tswhen_newAppointmentsis enabled. - Updated Scheduler appointment CSS selectors and refreshed TestCafe visual etalons accordingly.
Reviewed changes
Copilot reviewed 27 out of 33 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/devextreme/js/__internal/scheduler/utils/get_targeted_appointment.ts | Marks old targeted-appointment helper for removal after legacy deletion. |
| packages/devextreme/js/__internal/scheduler/types.ts | Simplifies SafeAppointment typing to align with Scheduler Appointment (Date | string dates already supported). |
| packages/devextreme/js/__internal/scheduler/m_subscribes.ts | Switches legacy date-text formatting to new helper and adds legacy-compat TODOs. |
| packages/devextreme/js/__internal/scheduler/m_scheduler.ts | Wires in new Appointments component behind _newAppointments, including onAppointmentRendered action bridging and container wiring. |
| packages/devextreme/js/__internal/scheduler/m_compact_appointments_helper.ts | Marks legacy helper for removal. |
| packages/devextreme/js/__internal/scheduler/m_classes.ts | Marks legacy class exports for cleanup after old impl removal. |
| packages/devextreme/js/__internal/scheduler/appointments_new/utils/type_helpers.ts | Adds type guards for new appointment view model variants. |
| packages/devextreme/js/__internal/scheduler/appointments_new/utils/get_view_model_diff.ts | Adds diffing logic supporting add/remove/resize operations for incremental rendering. |
| packages/devextreme/js/__internal/scheduler/appointments_new/utils/get_view_model_diff.test.ts | Adds Jest coverage for diffing behavior. |
| packages/devextreme/js/__internal/scheduler/appointments_new/utils/get_targeted_appointment.ts | Adds targeted-appointment construction for new appointment view models (incl. resources). |
| packages/devextreme/js/__internal/scheduler/appointments_new/utils/get_targeted_appointment.test.ts | Adds Jest coverage for targeted appointment construction and resource enrichment. |
| packages/devextreme/js/__internal/scheduler/appointments_new/utils/get_date_text.ts | Adds date text formatting utilities used by new/bridged rendering paths. |
| packages/devextreme/js/__internal/scheduler/appointments_new/const.ts | Introduces shared CSS class constants and localized strings for new appointments rendering. |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointments.ts | New appointments container component implementing diff-based incremental DOM updates. |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointments.test.ts | Jest coverage for rendering, partial updates, all-day container routing, and onAppointmentRendered. |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointment_collector.ts | New appointment-collector component (button-based) for compact/“more” UI. |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointment_collector.test.ts | Jest coverage for collector CSS classes, aria, positioning, and text. |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointment/grid_appointment.ts | New grid appointment component (geometry + content + resource color). |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointment/grid_appointment.test.ts | Jest coverage for grid appointment rendering details and resource coloring. |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointment/base_appointment.ts | Base appointment component with templating, action dispatch, aria role, and common helpers. |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointment/base_appointment.test.ts | Jest coverage for base appointment classes and basic aria role. |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointment/agenda_appointment.ts | New agenda appointment component with marker, details, and resource list rendering. |
| packages/devextreme/js/__internal/scheduler/appointments_new/appointment/agenda_appointment.test.ts | Jest coverage for agenda appointment behavior incl. resources and recurrence. |
| packages/devextreme/js/__internal/scheduler/appointments_new/mock/appointment_properties.ts | Test helpers for generating mock view models and base appointment props. |
| packages/devextreme-scss/scss/widgets/material/scheduler/_index.scss | Updates selectors to apply appointment-content styling without relying on .dx-item-content. |
| packages/devextreme-scss/scss/widgets/generic/scheduler/_index.scss | Same selector adjustment for generic theme. |
| packages/devextreme-scss/scss/widgets/fluent/scheduler/_index.scss | Same selector adjustment for fluent theme. |
| e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=day-crossScrolling=true-vertical-rtl (fluent.blue.light).png | Updated visual baseline due to styling/rendering changes. |
| e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=day-crossScrolling=true-rtl (fluent.blue.light).png | Updated visual baseline due to styling/rendering changes. |
| e2e/testcafe-devextreme/tests/scheduler/common/layout/adaptive/etalons/view=day-crossScrolling=false-vertical-rtl (fluent.blue.light).png | Updated visual baseline due to styling/rendering changes. |
packages/devextreme/js/__internal/scheduler/appointments_new/appointments.ts
Outdated
Show resolved
Hide resolved
packages/devextreme/js/__internal/scheduler/appointments_new/utils/get_date_text.ts
Show resolved
Hide resolved
packages/devextreme/js/__internal/scheduler/appointments_new/utils/get_view_model_diff.ts
Outdated
Show resolved
Hide resolved
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.