Skip to content

Scheduler: fix all day appointment resizing in timeline and vertical views - #34702

Open
aleksei-semikozov wants to merge 2 commits into
DevExpress:mainfrom
aleksei-semikozov:scheduler-1779-allday-resize
Open

Scheduler: fix all day appointment resizing in timeline and vertical views#34702
aleksei-semikozov wants to merge 2 commits into
DevExpress:mainfrom
aleksei-semikozov:scheduler-1779-allday-resize

Conversation

@aleksei-semikozov

Copy link
Copy Markdown
Contributor

No description provided.

@aleksei-semikozov aleksei-semikozov self-assigned this Aug 8, 2026
@aleksei-semikozov
aleksei-semikozov marked this pull request as ready for review August 8, 2026 19:17
@aleksei-semikozov
aleksei-semikozov requested a review from a team as a code owner August 8, 2026 19:17
Copilot AI lite review requested due to automatic review settings August 8, 2026 19:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Fixes Scheduler appointment resizing behavior by correctly distinguishing “all-day panel” appointments (day-based resizing) from “all-day” appointments rendered in the regular date table (cell-duration resizing), and adjusts vertical resizing handles for split/reduced appointment parts.

Changes:

  • Adjusted getDeltaTime subscribe wiring to treat only vertical-view all-day-panel appointments as day-resized.
  • Updated vertical appointment resizing rules to render resize handles only on the appropriate reduced parts (head/body/tail).
  • Added Jest coverage for delta-time calculation across view types and for vertical-view resize handle rendering.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

File Description
packages/devextreme/js/__internal/scheduler/m_subscribes.ts Introduces isAllDayPanelAppointment and uses it to compute isAllDayPanel for resizing delta-time.
packages/devextreme/js/__internal/scheduler/m_subscribes.test.ts Adds unit tests validating delta-time behavior for timeline/vertical/month views and all-day-panel visibility.
packages/devextreme/js/__internal/scheduler/appointments/appointment/m_appointment.ts Updates vertical resizing handles to honor reduced appointment parts (only edge parts are resizable).
packages/devextreme/js/__internal/scheduler/tests/appointments_resizing_vertical.test.ts Adds integration tests verifying correct handle rendering for split appointments and hidden all-day panel scenarios.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread packages/devextreme/js/__internal/scheduler/m_subscribes.ts Outdated
Copilot AI review requested due to automatic review settings August 8, 2026 19:26

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

Suppressed comments (2)

packages/devextreme/js/__internal/scheduler/tests/appointments_resizing_vertical.test.ts:27

  • This test suite creates real Scheduler instances and appends them to document.body, but it never disposes the widget or clears the DOM after each test. Other scheduler Jest suites dispose the scheduler and reset document.body in afterEach, and skipping that cleanup can leak timers/event handlers and make tests order-dependent.
const baseConfig: Properties = {
  currentDate: new Date(2021, 3, 12),
  views: ['week'],
  currentView: 'week',
  editing: { allowUpdating: true, allowResizing: true },
  height: 600,
};

packages/devextreme/js/__internal/scheduler/appointments/appointment/m_appointment.ts:149

  • handles is computed via reducedHandles[this.option('reduced') as any]. If reduced is set to an unexpected string, this yields undefined and can break Resizable handle rendering. Also this.option('reduced') is read twice and uses as any. Consider narrowing the value and falling back to the default handles when it’s not one of the supported parts.
      handles: this.option('reduced') ? reducedHandles[this.option('reduced') as any] : DEFAULT_VERTICAL_HANDLES,

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