Skip to content

Commit 7d6be02

Browse files
Fix after review: implement deprecation warning for old scrollTo API
1 parent 67cd482 commit 7d6be02

File tree

3 files changed

+52
-10
lines changed

3 files changed

+52
-10
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import {
2+
describe, expect, it, jest,
3+
} from '@jest/globals';
4+
import { logger } from '@ts/core/utils/m_console';
5+
6+
import { createScheduler } from './__mock__/create_scheduler';
7+
import { setupSchedulerTestEnvironment } from './__mock__/m_mock_scheduler';
8+
9+
describe('Scheduler scrollTo deprecation', () => {
10+
it('should log deprecation warning when using old scrollTo API', async () => {
11+
setupSchedulerTestEnvironment();
12+
const loggerWarnSpy = jest.spyOn(logger, 'warn');
13+
14+
const { scheduler } = await createScheduler({
15+
dataSource: [{
16+
text: 'Meeting',
17+
startDate: new Date(2025, 0, 15, 9, 0),
18+
endDate: new Date(2025, 0, 15, 10, 0),
19+
}],
20+
views: ['week'],
21+
currentView: 'week',
22+
currentDate: new Date(2025, 0, 15),
23+
startDayHour: 8,
24+
endDayHour: 18,
25+
});
26+
loggerWarnSpy.mockReset();
27+
28+
const testDate = new Date(2025, 0, 16, 14, 0);
29+
30+
scheduler.scrollTo(testDate, undefined, false);
31+
32+
expect(loggerWarnSpy).toHaveBeenCalledTimes(1);
33+
expect(loggerWarnSpy).toHaveBeenCalledWith(
34+
expect.stringContaining('W0002'),
35+
);
36+
});
37+
});

packages/devextreme/js/__internal/scheduler/m_scheduler.ts

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ import { MobileTooltipStrategy } from './tooltip_strategies/m_mobile_tooltip_str
6464
import type {
6565
AppointmentTooltipItem,
6666
SafeAppointment,
67-
TargetedAppointment,
67+
ScrollToGroupValuesOrOptions, ScrollToOptions, TargetedAppointment,
6868
} from './types';
6969
import { AppointmentAdapter } from './utils/appointment_adapter/appointment_adapter';
7070
import { AppointmentDataAccessor } from './utils/data_accessor/appointment_data_accessor';
@@ -77,7 +77,6 @@ import type { NormalizedView } from './utils/options/types';
7777
import { setAppointmentGroupValues } from './utils/resource_manager/appointment_groups_utils';
7878
import { createResourceEditorModel } from './utils/resource_manager/popup_utils';
7979
import { ResourceManager } from './utils/resource_manager/resource_manager';
80-
import type { GroupValues, RawGroupValues } from './utils/resource_manager/types';
8180
import AppointmentLayoutManager from './view_model/appointments_layout_manager';
8281
import { AppointmentDataSource } from './view_model/m_appointment_data_source';
8382
import type { AppointmentViewModelPlain } from './view_model/types';
@@ -91,14 +90,6 @@ import SchedulerWorkSpaceMonth from './workspaces/m_work_space_month';
9190
import SchedulerWorkSpaceWeek from './workspaces/m_work_space_week';
9291
import SchedulerWorkSpaceWorkWeek from './workspaces/m_work_space_work_week';
9392

94-
interface ScrollToOptions {
95-
group?: RawGroupValues | GroupValues;
96-
allDay?: boolean | undefined;
97-
align?: 'start' | 'center';
98-
}
99-
100-
type ScrollToGroupValuesOrOptions = RawGroupValues | GroupValues | ScrollToOptions | undefined;
101-
10293
const toMs = dateUtils.dateToMilliseconds;
10394

10495
const WIDGET_CLASS = 'dx-scheduler';
@@ -2045,6 +2036,7 @@ class Scheduler extends SchedulerOptionsBaseWidget {
20452036
allDayValue = groupValuesOrOptions.allDay;
20462037
align = groupValuesOrOptions.align ?? 'center';
20472038
} else {
2039+
errors.log('W0002', 'dxScheduler', 'scrollTo', '26.1', 'Use an object with "group", "allDay", and "align" properties instead of separate parameters.');
20482040
groupValues = groupValuesOrOptions;
20492041
allDayValue = allDay;
20502042
}

packages/devextreme/js/__internal/scheduler/types.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import type { dxElementWrapper } from '@js/core/renderer';
22
import type { Appointment, Properties } from '@js/ui/scheduler';
33

44
import type { ResourceLoader } from './utils/loader/resource_loader';
5+
import type { GroupValues, RawGroupValues } from './utils/resource_manager/types';
56
import type { AppointmentViewModelPlain } from './view_model/types';
67

78
export type Direction = 'vertical' | 'horizontal';
@@ -269,3 +270,15 @@ export interface CompactAppointmentOptions {
269270
allowDrag: boolean;
270271
isCompact: boolean;
271272
}
273+
274+
export interface ScrollToOptions {
275+
group?: RawGroupValues | GroupValues;
276+
allDay?: boolean | undefined;
277+
align?: 'start' | 'center';
278+
}
279+
280+
export type ScrollToGroupValuesOrOptions =
281+
| RawGroupValues
282+
| GroupValues
283+
| ScrollToOptions
284+
| undefined;

0 commit comments

Comments
 (0)