From a1d66863a723a87a85f7ea85142cd5e45f6e3702 Mon Sep 17 00:00:00 2001 From: Sergei Burkatskii Date: Thu, 9 Jul 2026 10:09:14 +0200 Subject: [PATCH 1/8] chore: remove useless params --- packages/devextreme/js/ui/scheduler.d.ts | 74 ------------------------ 1 file changed, 74 deletions(-) diff --git a/packages/devextreme/js/ui/scheduler.d.ts b/packages/devextreme/js/ui/scheduler.d.ts index e7bcc32063fd..5e78d21c54d0 100644 --- a/packages/devextreme/js/ui/scheduler.d.ts +++ b/packages/devextreme/js/ui/scheduler.d.ts @@ -56,12 +56,10 @@ interface AppointmentDraggingEvent { export interface TargetedAppointmentInfo { /** * @docid - * @type dxSchedulerAppointment */ readonly appointmentData: Appointment; /** * @docid - * @type dxSchedulerAppointment */ readonly targetedAppointmentData?: Appointment; } @@ -115,7 +113,6 @@ export type SchedulerPredefinedDateNavigatorItem = 'prev' | 'next' | 'dateInterv export type AppointmentAddedEvent = EventInfo & { /** * @docid _ui_scheduler_AppointmentAddedEvent.appointmentData - * @type dxSchedulerAppointment */ readonly appointmentData: Appointment; /** @docid _ui_scheduler_AppointmentAddedEvent.error */ @@ -131,12 +128,10 @@ export type AppointmentAddedEvent = EventInfo & { export type AppointmentAddingEvent = EventInfo & { /** * @docid _ui_scheduler_AppointmentAddingEvent.appointmentData - * @type dxSchedulerAppointment */ readonly appointmentData: Appointment; /** * @docid _ui_scheduler_AppointmentAddingEvent.cancel - * @type Boolean|Promise */ cancel: boolean | PromiseLike; }; @@ -183,7 +178,6 @@ export type AppointmentDblClickEvent = Cancelable & NativeEventInfo & { /** * @docid _ui_scheduler_AppointmentDeletedEvent.appointmentData - * @type dxSchedulerAppointment */ readonly appointmentData: Appointment; /** @docid _ui_scheduler_AppointmentDeletedEvent.error */ @@ -199,12 +193,10 @@ export type AppointmentDeletedEvent = EventInfo & { export type AppointmentDeletingEvent = EventInfo & { /** * @docid _ui_scheduler_AppointmentDeletingEvent.appointmentData - * @type dxSchedulerAppointment */ readonly appointmentData: Appointment; /** * @docid _ui_scheduler_AppointmentDeletingEvent.cancel - * @type Boolean|Promise */ cancel: boolean | PromiseLike; }; @@ -218,7 +210,6 @@ export type AppointmentDeletingEvent = EventInfo & { export type AppointmentFormOpeningEvent = Cancelable & EventInfo & { /** * @docid _ui_scheduler_AppointmentFormOpeningEvent.appointmentData - * @type dxSchedulerAppointment */ readonly appointmentData?: Appointment; /** @docid _ui_scheduler_AppointmentFormOpeningEvent.form */ @@ -248,7 +239,6 @@ export type AppointmentTooltipShowingEvent = Cancelable & EventInfo readonly targetElement: DxElement; /** * @docid _ui_scheduler_AppointmentTooltipShowingEvent.appointments - * @type Array */ readonly appointments: AppointmentTooltipShowingAppointmentInfo[]; }; @@ -273,7 +263,6 @@ export type AppointmentRenderedEvent = EventInfo & TargetedAppointm export type AppointmentUpdatedEvent = EventInfo & { /** * @docid _ui_scheduler_AppointmentUpdatedEvent.appointmentData - * @type dxSchedulerAppointment */ readonly appointmentData: Appointment; /** @docid _ui_scheduler_AppointmentUpdatedEvent.error */ @@ -289,17 +278,14 @@ export type AppointmentUpdatedEvent = EventInfo & { export type AppointmentUpdatingEvent = EventInfo & { /** * @docid _ui_scheduler_AppointmentUpdatingEvent.oldData - * @type Object */ readonly oldData: any; /** * @docid _ui_scheduler_AppointmentUpdatingEvent.newData - * @type Object */ readonly newData: any; /** * @docid _ui_scheduler_AppointmentUpdatingEvent.cancel - * @type Boolean|Promise */ cancel?: boolean | PromiseLike; }; @@ -442,7 +428,6 @@ export type AppointmentCollectorTemplateData = { readonly appointmentCount: number; /** * @docid - * @type Array */ readonly items: Appointment[]; /** @@ -771,7 +756,6 @@ export interface dxSchedulerOptions extends WidgetOptions { /** * @docid * @default null - * @type function * @type_function_param1 e:{ui/scheduler:AppointmentClickEvent} * @action * @public @@ -780,7 +764,6 @@ export interface dxSchedulerOptions extends WidgetOptions { /** * @docid * @default null - * @type function * @type_function_param1 e:{ui/scheduler:AppointmentContextMenuEvent} * @action * @public @@ -789,7 +772,6 @@ export interface dxSchedulerOptions extends WidgetOptions { /** * @docid * @default null - * @type function * @type_function_param1 e:{ui/scheduler:AppointmentDblClickEvent} * @action * @public @@ -855,7 +837,6 @@ export interface dxSchedulerOptions extends WidgetOptions { /** * @docid * @default null - * @type function * @type_function_param1 e:{ui/scheduler:CellClickEvent} * @action * @public @@ -872,7 +853,6 @@ export interface dxSchedulerOptions extends WidgetOptions { /** * @docid * @default null - * @type function * @type_function_param1 e:{ui/scheduler:CellContextMenuEvent} * @action * @public @@ -1297,21 +1277,18 @@ export default class dxScheduler extends Widget { /** * @docid * @publicName addAppointment(appointment) - * @param1 appointment:dxSchedulerAppointment * @public */ addAppointment(appointment: Appointment): void; /** * @docid * @publicName deleteAppointment(appointment) - * @param1 appointment:dxSchedulerAppointment * @public */ deleteAppointment(appointment: Appointment): void; /** * @docid * @publicName deleteRecurrence(appointment, date, recurrenceEditMode) - * @param1 appointmentData:dxSchedulerAppointment * @public */ deleteRecurrence( @@ -1329,7 +1306,6 @@ export default class dxScheduler extends Widget { /** * @docid * @publicName getOccurrences(startDate, endDate, appointments) - * @param3 appointments:Array * @public */ getOccurrences(startDate: Date, endDate: Date, appointments: Appointment[]): Occurrence[]; @@ -1342,7 +1318,6 @@ export default class dxScheduler extends Widget { /** * @docid * @publicName hideAppointmentPopup(saveChanges) - * @param1 saveChanges:Boolean|undefined * @public */ hideAppointmentPopup(saveChanges?: boolean): void; @@ -1355,10 +1330,6 @@ export default class dxScheduler extends Widget { /** * @docid * @publicName scrollTo(date, options) - * @param2 options:Object|undefined - * @param2_field group:Object|undefined - * @param2_field allDay:Boolean|undefined - * @param2_field alignInView:Enums.SchedulerScrollToAlign|undefined * @public */ scrollTo(date: Date, options?: { @@ -1369,8 +1340,6 @@ export default class dxScheduler extends Widget { /** * @docid * @publicName scrollTo(date, group, allDay) - * @param2 group:Object|undefined - * @param3 allDay:Boolean|undefined * @public * @deprecated */ @@ -1378,26 +1347,18 @@ export default class dxScheduler extends Widget { /** * @docid * @publicName showAppointmentPopup(appointmentData, createNewAppointment, currentAppointmentData) - * @param1 appointmentData:dxSchedulerAppointment|undefined - * @param2 createNewAppointment:Boolean|undefined - * @param3 currentAppointmentData:dxSchedulerAppointment|undefined * @public */ showAppointmentPopup(appointmentData?: Appointment, createNewAppointment?: boolean, currentAppointmentData?: Appointment): void; /** * @docid * @publicName showAppointmentTooltip(appointmentData, target, currentAppointmentData) - * @param1 appointmentData:dxSchedulerAppointment - * @param2 target:string|Element|jQuery - * @param3 currentAppointmentData:dxSchedulerAppointment|undefined * @public */ showAppointmentTooltip(appointmentData: Appointment, target: string | UserDefinedElement, currentAppointmentData?: Appointment): void; /** * @docid * @publicName updateAppointment(target, appointment) - * @param1 target:dxSchedulerAppointment - * @param2 appointment:dxSchedulerAppointment * @public */ updateAppointment(target: Appointment, appointment: Appointment): void; @@ -1504,7 +1465,6 @@ export type Occurrence = { /** * @docid * @public - * @type dxSchedulerAppointment */ appointmentData: Appointment; }; @@ -1526,37 +1486,3 @@ export interface dxSchedulerScrolling { mode?: ScrollMode; } -/// #DEBUG -// eslint-disable-next-line import/first -import { CheckedEvents } from '../core'; - -type FilterOutHidden = Omit; - -type EventsIntegrityCheckingHelper = CheckedEvents, Required, 'onAppointmentAdded' | 'onAppointmentAdding' | 'onAppointmentClick' | 'onAppointmentContextMenu' | 'onAppointmentDblClick' | 'onAppointmentDeleted' | 'onAppointmentDeleting' | 'onAppointmentFormOpening' | 'onAppointmentRendered' | 'onAppointmentTooltipShowing' | 'onAppointmentUpdated' | 'onAppointmentUpdating' | 'onCellClick' | 'onCellContextMenu' | 'onSelectionEnd'>; - -/** -* @hidden -*/ -type Events = { -/** - * @docid dxSchedulerOptions.onContentReady - * @type_function_param1 e:{ui/scheduler:ContentReadyEvent} - */ -onContentReady?: ((e: ContentReadyEvent) => void); -/** - * @docid dxSchedulerOptions.onDisposing - * @type_function_param1 e:{ui/scheduler:DisposingEvent} - */ -onDisposing?: ((e: DisposingEvent) => void); -/** - * @docid dxSchedulerOptions.onInitialized - * @type_function_param1 e:{ui/scheduler:InitializedEvent} - */ -onInitialized?: ((e: InitializedEvent) => void); -/** - * @docid dxSchedulerOptions.onOptionChanged - * @type_function_param1 e:{ui/scheduler:OptionChangedEvent} - */ -onOptionChanged?: ((e: OptionChangedEvent) => void); -}; -/// #ENDDEBUG From 4557f85cdef0b4d3063a99c20853b762e21a076a Mon Sep 17 00:00:00 2001 From: Sergei Burkatskii Date: Thu, 9 Jul 2026 10:13:35 +0200 Subject: [PATCH 2/8] chore: replace internal types with public properties --- packages/devextreme/js/ui/scheduler.d.ts | 32 ++++++++++++------- .../devextreme/js/ui/scheduler_types.d.ts | 1 + 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/packages/devextreme/js/ui/scheduler.d.ts b/packages/devextreme/js/ui/scheduler.d.ts index 5e78d21c54d0..e5a88f09b7a6 100644 --- a/packages/devextreme/js/ui/scheduler.d.ts +++ b/packages/devextreme/js/ui/scheduler.d.ts @@ -24,7 +24,10 @@ import { PointerInteractionEvent, } from '../events'; -import { dxButtonGroupOptions, dxButtonGroupItem } from './button_group'; +import { + Properties as ButtonGroupProperties, + Item as ButtonGroupItem, +} from './button_group'; import { CollectionWidgetItem, } from './collection/ui.collection_widget.base'; @@ -35,7 +38,7 @@ import dxForm, { Properties as FormProperties } from './form'; import dxPopup, { Properties as PopupProperties } from './popup'; import dxSortable from './sortable'; -import { dxToolbarItem } from './toolbar'; +import { Item as ToolbarItemBase } from './toolbar'; import Widget, { WidgetOptions, @@ -947,7 +950,7 @@ export interface dxSchedulerOptions extends WidgetOptions { * @docid * @public */ - scrolling?: dxSchedulerScrolling; + scrolling?: Scrolling; /** * @docid * @readonly @@ -1158,7 +1161,7 @@ export interface dxSchedulerOptions extends WidgetOptions { /** * @docid */ - scrolling?: dxSchedulerScrolling; + scrolling?: Scrolling; /** * @docid * @default "all" @@ -1190,13 +1193,13 @@ export interface dxSchedulerOptions extends WidgetOptions { * @namespace DevExpress.ui.dxScheduler * @public */ -export type DateNavigatorItemProperties = dxButtonGroupOptions & { +export type DateNavigatorItemProperties = ButtonGroupProperties & { /** * @docid * @type Array * @public */ - items: Array; + items: Array; }; /** @@ -1211,7 +1214,7 @@ export type dxSchedulerToolbarItem = ToolbarItem; * @namespace DevExpress.ui.dxScheduler * @public */ -export type ToolbarItem = dxToolbarItem & { +export type ToolbarItem = ToolbarItemBase & { /** * @docid dxSchedulerToolbarItem.name * @public @@ -1273,7 +1276,7 @@ export type Toolbar = { * @namespace DevExpress.ui * @public */ -export default class dxScheduler extends Widget { +export default class dxScheduler extends Widget { /** * @docid * @publicName addAppointment(appointment) @@ -1473,16 +1476,21 @@ export type Occurrence = { export type Properties = dxSchedulerOptions; /** - * @docid + * @namespace DevExpress.ui + * @deprecated Use Scrolling instead + */ +export type dxSchedulerScrolling = Scrolling; + +/** + * @docid dxSchedulerScrolling * @public * @namespace DevExpress.ui */ -export interface dxSchedulerScrolling { +export type Scrolling = { /** * @docid * @default "standard" * @public */ mode?: ScrollMode; -} - +}; diff --git a/packages/devextreme/js/ui/scheduler_types.d.ts b/packages/devextreme/js/ui/scheduler_types.d.ts index e3a266157b91..124186112d30 100644 --- a/packages/devextreme/js/ui/scheduler_types.d.ts +++ b/packages/devextreme/js/ui/scheduler_types.d.ts @@ -48,5 +48,6 @@ export { Appointment, Occurrence, Properties, + Scrolling, dxSchedulerScrolling, } from './scheduler'; From 9dabe6afd5d09cc3f616373356f6423820d74c01 Mon Sep 17 00:00:00 2001 From: Sergei Burkatskii Date: Thu, 9 Jul 2026 12:15:14 +0200 Subject: [PATCH 3/8] fix: run regenerate-all --- .../src/ui/nested/base/index.ts | 2 +- .../{scheduler-scrolling.ts => scrolling.ts} | 2 +- .../src/ui/nested/scrolling.ts | 4 +- .../src/ui/nested/view-dxi.ts | 7 +- .../src/ui/scheduler/index.ts | 32 +++++----- .../src/ui/scheduler/nested/view-dxi.ts | 7 +- packages/devextreme-react/src/scheduler.ts | 32 +++++----- packages/devextreme-vue/src/scheduler.ts | 56 ++++++++-------- .../devextreme/js/ui/scheduler_types.d.ts | 1 - packages/devextreme/ts/dx.all.d.ts | 64 +++++++++++-------- 10 files changed, 108 insertions(+), 99 deletions(-) rename packages/devextreme-angular/src/ui/nested/base/{scheduler-scrolling.ts => scrolling.ts} (97%) diff --git a/packages/devextreme-angular/src/ui/nested/base/index.ts b/packages/devextreme-angular/src/ui/nested/base/index.ts index de74c6df0cfc..2ad5347b0a04 100644 --- a/packages/devextreme-angular/src/ui/nested/base/index.ts +++ b/packages/devextreme-angular/src/ui/nested/base/index.ts @@ -45,7 +45,7 @@ export * from './pager'; export * from './popup-options'; export * from './popup-toolbar-item-dxi'; export * from './position-config'; -export * from './scheduler-scrolling'; +export * from './scrolling'; export * from './search-panel'; export * from './sortable-options'; export * from './sorting'; diff --git a/packages/devextreme-angular/src/ui/nested/base/scheduler-scrolling.ts b/packages/devextreme-angular/src/ui/nested/base/scrolling.ts similarity index 97% rename from packages/devextreme-angular/src/ui/nested/base/scheduler-scrolling.ts rename to packages/devextreme-angular/src/ui/nested/base/scrolling.ts index eda3bc3e305f..c5808cd78b9e 100644 --- a/packages/devextreme-angular/src/ui/nested/base/scheduler-scrolling.ts +++ b/packages/devextreme-angular/src/ui/nested/base/scrolling.ts @@ -12,7 +12,7 @@ import type { DataGridScrollMode } from 'devextreme/ui/data_grid'; @Component({ template: '' }) -export abstract class DxoSchedulerScrolling extends NestedOption { +export abstract class DxoScrolling extends NestedOption { get columnRenderingMode(): DataRenderMode { return this._getOption('columnRenderingMode'); } diff --git a/packages/devextreme-angular/src/ui/nested/scrolling.ts b/packages/devextreme-angular/src/ui/nested/scrolling.ts index 6861224b3dfd..b4269ac1705e 100644 --- a/packages/devextreme-angular/src/ui/nested/scrolling.ts +++ b/packages/devextreme-angular/src/ui/nested/scrolling.ts @@ -19,7 +19,7 @@ import { DxIntegrationModule, NestedOptionHost, } from 'devextreme-angular/core'; -import { DxoSchedulerScrolling } from './base/scheduler-scrolling'; +import { DxoScrolling } from './base/scrolling'; @Component({ @@ -40,7 +40,7 @@ import { DxoSchedulerScrolling } from './base/scheduler-scrolling'; 'useNative' ] }) -export class DxoScrollingComponent extends DxoSchedulerScrolling implements OnDestroy, OnInit { +export class DxoScrollingComponent extends DxoScrolling implements OnDestroy, OnInit { protected get _optionPath() { return 'scrolling'; diff --git a/packages/devextreme-angular/src/ui/nested/view-dxi.ts b/packages/devextreme-angular/src/ui/nested/view-dxi.ts index d1f67d6b03c7..7f83e90ccca2 100644 --- a/packages/devextreme-angular/src/ui/nested/view-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/view-dxi.ts @@ -12,8 +12,9 @@ import { +import type { Scrolling } from 'devextreme/!generated-members'; import type { DayOfWeek, Orientation } from 'devextreme/common'; -import type { AllDayPanelMode, CellAppointmentsLimit, dxSchedulerScrolling, ViewType } from 'devextreme/ui/scheduler'; +import type { AllDayPanelMode, CellAppointmentsLimit, ViewType } from 'devextreme/ui/scheduler'; import { DxIntegrationModule, @@ -182,10 +183,10 @@ export class DxiViewComponent extends CollectionNestedOption { } @Input() - get scrolling(): dxSchedulerScrolling { + get scrolling(): Scrolling { return this._getOption('scrolling'); } - set scrolling(value: dxSchedulerScrolling) { + set scrolling(value: Scrolling) { this._setOption('scrolling', value); } diff --git a/packages/devextreme-angular/src/ui/scheduler/index.ts b/packages/devextreme-angular/src/ui/scheduler/index.ts index 57f11fdf79e9..21e3ab44a558 100644 --- a/packages/devextreme-angular/src/ui/scheduler/index.ts +++ b/packages/devextreme-angular/src/ui/scheduler/index.ts @@ -24,11 +24,13 @@ import { import type dxSortable from 'devextreme/ui/sortable'; import type dxDraggable from 'devextreme/ui/draggable'; -import type { default as dxScheduler, AllDayPanelMode, ViewType, dxSchedulerAppointment, AppointmentFormProperties, CellAppointmentsLimit, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent, SelectionEndEvent, RecurrenceEditMode, dxSchedulerScrolling, SnapToCellsMode, dxSchedulerToolbar } from 'devextreme/ui/scheduler'; +import type { default as dxScheduler, AllDayPanelMode, ViewType, dxSchedulerAppointment, AppointmentFormProperties, CellAppointmentsLimit, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, SelectionEndEvent, RecurrenceEditMode, SnapToCellsMode, dxSchedulerToolbar } from 'devextreme/ui/scheduler'; import type { event } from 'devextreme/events/events.types'; import type { default as DataSource, DataSourceOptions } from 'devextreme/data/data_source'; import type { Store } from 'devextreme/data/store'; import type { DayOfWeek, Orientation } from 'devextreme/common'; +import type { EventInfo } from 'devextreme/common/core/events'; +import type { Scrolling } from 'UNKNOWN_MODULE'; import DxScheduler from 'devextreme/ui/scheduler'; @@ -711,10 +713,10 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh */ @Input() - get scrolling(): dxSchedulerScrolling { + get scrolling(): Scrolling { return this._getOption('scrolling'); } - set scrolling(value: dxSchedulerScrolling) { + set scrolling(value: Scrolling) { this._setOption('scrolling', value); } @@ -903,10 +905,10 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh */ @Input() - get views(): Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[] { + get views(): Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Scrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[] { return this._getOption('views'); } - set views(value: Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]) { + set views(value: Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Scrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]) { this._setOption('views', value); } @@ -1050,35 +1052,35 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh /** - * [descr:dxSchedulerOptions.onContentReady] + * [descr:WidgetOptions.onContentReady] */ - @Output() onContentReady: EventEmitter; + @Output() onContentReady: EventEmitter>; /** - * [descr:dxSchedulerOptions.onDisposing] + * [descr:DOMComponentOptions.onDisposing] */ - @Output() onDisposing: EventEmitter; + @Output() onDisposing: EventEmitter>; /** - * [descr:dxSchedulerOptions.onInitialized] + * [descr:ComponentOptions.onInitialized] */ - @Output() onInitialized: EventEmitter; + @Output() onInitialized: EventEmitter; /** - * [descr:dxSchedulerOptions.onOptionChanged] + * [descr:DOMComponentOptions.onOptionChanged] */ - @Output() onOptionChanged: EventEmitter; + @Output() onOptionChanged: EventEmitter; /** @@ -1401,7 +1403,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh * This member supports the internal infrastructure and is not intended to be used directly from your code. */ - @Output() scrollingChange: EventEmitter; + @Output() scrollingChange: EventEmitter; /** @@ -1506,7 +1508,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh * This member supports the internal infrastructure and is not intended to be used directly from your code. */ - @Output() viewsChange: EventEmitter | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]>; + @Output() viewsChange: EventEmitter | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Scrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]>; /** diff --git a/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts b/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts index 0db621792163..dbbf1140fb9d 100644 --- a/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts +++ b/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts @@ -12,8 +12,9 @@ import { -import type { AllDayPanelMode, CellAppointmentsLimit, dxSchedulerScrolling, SnapToCellsMode, ViewType } from 'devextreme/ui/scheduler'; +import type { AllDayPanelMode, CellAppointmentsLimit, SnapToCellsMode, ViewType } from 'devextreme/ui/scheduler'; import type { DayOfWeek, Orientation } from 'devextreme/common'; +import type { Scrolling } from 'UNKNOWN_MODULE'; import { DxIntegrationModule, @@ -190,10 +191,10 @@ export class DxiSchedulerViewComponent extends CollectionNestedOption { } @Input() - get scrolling(): dxSchedulerScrolling { + get scrolling(): Scrolling { return this._getOption('scrolling'); } - set scrolling(value: dxSchedulerScrolling) { + set scrolling(value: Scrolling) { this._setOption('scrolling', value); } diff --git a/packages/devextreme-react/src/scheduler.ts b/packages/devextreme-react/src/scheduler.ts index 978ea1be3715..abe0202a37d6 100644 --- a/packages/devextreme-react/src/scheduler.ts +++ b/packages/devextreme-react/src/scheduler.ts @@ -8,18 +8,19 @@ import dxScheduler, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { ViewType, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, SelectionEndEvent, AppointmentFormProperties, AppointmentFormIconsShowMode, SchedulerPredefinedToolbarItem, DateNavigatorItemProperties, SchedulerPredefinedDateNavigatorItem, dxSchedulerToolbarItem, AllDayPanelMode, AppointmentCollectorTemplateData, AppointmentTemplateData, AppointmentTooltipTemplateData, CellAppointmentsLimit, dxSchedulerScrolling, SnapToCellsMode } from "devextreme/ui/scheduler"; -import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; -import type { ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, FormItemType, FormPredefinedButtonItem, OptionChangedEvent as FormOptionChangedEvent, dxFormSimpleItem, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, SmartPastedEvent, SmartPastingEvent, FormItemComponent } from "devextreme/ui/form"; -import type { ContentReadyEvent as ButtonGroupContentReadyEvent, DisposingEvent as ButtonGroupDisposingEvent, InitializedEvent as ButtonGroupInitializedEvent, OptionChangedEvent as ButtonGroupOptionChangedEvent, dxButtonGroupItem, ItemClickEvent, SelectionChangedEvent } from "devextreme/ui/button_group"; -import type { ContentReadyEvent as TabPanelContentReadyEvent, DisposingEvent as TabPanelDisposingEvent, InitializedEvent as TabPanelInitializedEvent, OptionChangedEvent as TabPanelOptionChangedEvent, dxTabPanelOptions, ItemClickEvent as TabPanelItemClickEvent, SelectionChangedEvent as TabPanelSelectionChangedEvent, dxTabPanelItem, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, SelectionChangingEvent, TitleClickEvent, TitleHoldEvent, TitleRenderedEvent } from "devextreme/ui/tab_panel"; +import type { ViewType, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, SelectionEndEvent, AppointmentFormProperties, AppointmentFormIconsShowMode, SchedulerPredefinedToolbarItem, DateNavigatorItemProperties, SchedulerPredefinedDateNavigatorItem, dxSchedulerToolbarItem, AllDayPanelMode, AppointmentCollectorTemplateData, AppointmentTemplateData, AppointmentTooltipTemplateData, CellAppointmentsLimit, SnapToCellsMode } from "devextreme/ui/scheduler"; import type { event } from "devextreme/events/events.types"; import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, ButtonStyle, template, ButtonType, ComparisonOperator, Mode, ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone, ScrollMode, TabsIconPosition, TabsStyle, Position, DayOfWeek, Orientation } from "devextreme/common"; +import type { dxButtonOptions, ClickEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent } from "devextreme/ui/button"; +import type { FormItemType, FormPredefinedButtonItem, ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, OptionChangedEvent as FormOptionChangedEvent, dxFormSimpleItem, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, SmartPastedEvent, SmartPastingEvent, FormItemComponent } from "devextreme/ui/form"; +import type { ContentReadyEvent as ButtonGroupContentReadyEvent, DisposingEvent as ButtonGroupDisposingEvent, InitializedEvent as ButtonGroupInitializedEvent, OptionChangedEvent as ButtonGroupOptionChangedEvent, dxButtonGroupItem, ItemClickEvent, SelectionChangedEvent } from "devextreme/ui/button_group"; +import type { ContentReadyEvent as TabPanelContentReadyEvent, DisposingEvent as TabPanelDisposingEvent, InitializedEvent as TabPanelInitializedEvent, OptionChangedEvent as TabPanelOptionChangedEvent, dxTabPanelOptions, ItemClickEvent as TabPanelItemClickEvent, SelectionChangedEvent as TabPanelSelectionChangedEvent, dxTabPanelItem, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, SelectionChangingEvent, TitleClickEvent, TitleHoldEvent, TitleRenderedEvent } from "devextreme/ui/tab_panel"; import type { AIIntegration } from "devextreme/common/ai-integration"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; +import type { Scrolling as AliasedScrolling } from "UNKNOWN_MODULE"; import type dxSortable from "devextreme/ui/sortable"; import type dxDraggable from "devextreme/ui/draggable"; @@ -35,9 +36,9 @@ type ReplaceFieldTypes = { type ISchedulerOptionsNarrowedEvents = { onAppointmentAdded?: ((e: AppointmentAddedEvent) => void); onAppointmentAdding?: ((e: AppointmentAddingEvent) => void); - onAppointmentClick?: ((e: AppointmentClickEvent) => void); - onAppointmentContextMenu?: ((e: AppointmentContextMenuEvent) => void); - onAppointmentDblClick?: ((e: AppointmentDblClickEvent) => void); + onAppointmentClick?: ((e: AppointmentClickEvent) => void) | string; + onAppointmentContextMenu?: ((e: AppointmentContextMenuEvent) => void) | string; + onAppointmentDblClick?: ((e: AppointmentDblClickEvent) => void) | string; onAppointmentDeleted?: ((e: AppointmentDeletedEvent) => void); onAppointmentDeleting?: ((e: AppointmentDeletingEvent) => void); onAppointmentFormOpening?: ((e: AppointmentFormOpeningEvent) => void); @@ -45,11 +46,8 @@ type ISchedulerOptionsNarrowedEvents = { onAppointmentTooltipShowing?: ((e: AppointmentTooltipShowingEvent) => void); onAppointmentUpdated?: ((e: AppointmentUpdatedEvent) => void); onAppointmentUpdating?: ((e: AppointmentUpdatingEvent) => void); - onCellClick?: ((e: CellClickEvent) => void); - onCellContextMenu?: ((e: CellContextMenuEvent) => void); - onContentReady?: ((e: ContentReadyEvent) => void); - onDisposing?: ((e: DisposingEvent) => void); - onInitialized?: ((e: InitializedEvent) => void); + onCellClick?: ((e: CellClickEvent) => void) | string; + onCellContextMenu?: ((e: CellContextMenuEvent) => void) | string; onSelectionEnd?: ((e: SelectionEndEvent) => void) | undefined; } @@ -281,9 +279,9 @@ type IButtonOptionsProps = React.PropsWithChildren<{ hoverStateEnabled?: boolean; icon?: string; onClick?: ((e: ClickEvent) => void); - onContentReady?: ((e: ButtonContentReadyEvent) => void); - onDisposing?: ((e: ButtonDisposingEvent) => void); - onInitialized?: ((e: ButtonInitializedEvent) => void); + onContentReady?: ((e: ContentReadyEvent) => void); + onDisposing?: ((e: DisposingEvent) => void); + onInitialized?: ((e: InitializedEvent) => void); onOptionChanged?: ((e: OptionChangedEvent) => void); rtlEnabled?: boolean; stylingMode?: ButtonStyle; @@ -1461,7 +1459,7 @@ type IViewProps = React.PropsWithChildren<{ name?: string | undefined; offset?: number; resourceCellTemplate?: ((itemData: any, itemIndex: number, itemElement: any) => string | any) | template; - scrolling?: dxSchedulerScrolling; + scrolling?: AliasedScrolling; snapToCellsMode?: SnapToCellsMode; startDate?: Date | number | string | undefined; startDayHour?: number; diff --git a/packages/devextreme-vue/src/scheduler.ts b/packages/devextreme-vue/src/scheduler.ts index a8bcca7114cc..f762f9b1c81b 100644 --- a/packages/devextreme-vue/src/scheduler.ts +++ b/packages/devextreme-vue/src/scheduler.ts @@ -3,6 +3,7 @@ import { defineComponent } from "vue"; import { prepareComponentConfig } from "./core/index"; import Scheduler, { Properties } from "devextreme/ui/scheduler"; import DataSource from "devextreme/data/data_source"; +import DOMComponent from "devextreme/core/dom_component"; import dxScheduler from "devextreme/ui/scheduler"; import dxSortable from "devextreme/ui/sortable"; import dxDraggable from "devextreme/ui/draggable"; @@ -25,18 +26,12 @@ import { AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, - ContentReadyEvent, - DisposingEvent, - InitializedEvent, - OptionChangedEvent, SelectionEndEvent, RecurrenceEditMode, - dxSchedulerScrolling, SnapToCellsMode, dxSchedulerToolbar, AppointmentFormIconsShowMode, SchedulerPredefinedToolbarItem, - DateNavigatorItemProperties, SchedulerPredefinedDateNavigatorItem, dxSchedulerToolbarItem, } from "devextreme/ui/scheduler"; @@ -64,16 +59,22 @@ import { Position, Orientation, } from "devextreme/common"; +import { + EventInfo, +} from "devextreme/common/core/events"; +import { + Component, +} from "devextreme/core/component"; import { event, } from "devextreme/events/events.types"; import { dxButtonOptions, ClickEvent, - ContentReadyEvent as ButtonContentReadyEvent, - DisposingEvent as ButtonDisposingEvent, - InitializedEvent as ButtonInitializedEvent, - OptionChangedEvent as ButtonOptionChangedEvent, + ContentReadyEvent, + DisposingEvent, + InitializedEvent, + OptionChangedEvent, } from "devextreme/ui/button"; import { FormItemType, @@ -120,7 +121,6 @@ import { ShowTextMode, } from "devextreme/ui/toolbar"; import { - dxButtonGroupOptions, dxButtonGroupItem, ContentReadyEvent as ButtonGroupContentReadyEvent, DisposingEvent as ButtonGroupDisposingEvent, @@ -261,9 +261,9 @@ const componentConfig = { offset: Number, onAppointmentAdded: Function as PropType<((e: AppointmentAddedEvent) => void)>, onAppointmentAdding: Function as PropType<((e: AppointmentAddingEvent) => void)>, - onAppointmentClick: Function as PropType<((e: AppointmentClickEvent) => void)>, - onAppointmentContextMenu: Function as PropType<((e: AppointmentContextMenuEvent) => void)>, - onAppointmentDblClick: Function as PropType<((e: AppointmentDblClickEvent) => void)>, + onAppointmentClick: [Function, String] as PropType<(((e: AppointmentClickEvent) => void)) | string>, + onAppointmentContextMenu: [Function, String] as PropType<(((e: AppointmentContextMenuEvent) => void)) | string>, + onAppointmentDblClick: [Function, String] as PropType<(((e: AppointmentDblClickEvent) => void)) | string>, onAppointmentDeleted: Function as PropType<((e: AppointmentDeletedEvent) => void)>, onAppointmentDeleting: Function as PropType<((e: AppointmentDeletingEvent) => void)>, onAppointmentFormOpening: Function as PropType<((e: AppointmentFormOpeningEvent) => void)>, @@ -271,12 +271,12 @@ const componentConfig = { onAppointmentTooltipShowing: Function as PropType<((e: AppointmentTooltipShowingEvent) => void)>, onAppointmentUpdated: Function as PropType<((e: AppointmentUpdatedEvent) => void)>, onAppointmentUpdating: Function as PropType<((e: AppointmentUpdatingEvent) => void)>, - onCellClick: Function as PropType<((e: CellClickEvent) => void)>, - onCellContextMenu: Function as PropType<((e: CellContextMenuEvent) => void)>, - onContentReady: Function as PropType<((e: ContentReadyEvent) => void)>, - onDisposing: Function as PropType<((e: DisposingEvent) => void)>, - onInitialized: Function as PropType<((e: InitializedEvent) => void)>, - onOptionChanged: Function as PropType<((e: OptionChangedEvent) => void)>, + onCellClick: [Function, String] as PropType<(((e: CellClickEvent) => void)) | string>, + onCellContextMenu: [Function, String] as PropType<(((e: CellContextMenuEvent) => void)) | string>, + onContentReady: Function as PropType<((e: EventInfo) => void)>, + onDisposing: Function as PropType<((e: EventInfo) => void)>, + onInitialized: Function as PropType<((e: { component: Component, element: any }) => void)>, + onOptionChanged: Function as PropType<((e: { component: DOMComponent, element: any, fullName: string, model: any, name: string, previousValue: any, value: any }) => void)>, onSelectionEnd: Function as PropType<((e: SelectionEndEvent) => void)>, recurrenceEditMode: String as PropType, recurrenceExceptionExpr: String, @@ -285,7 +285,7 @@ const componentConfig = { resourceCellTemplate: {}, resources: Array as PropType>>, rtlEnabled: Boolean, - scrolling: Object as PropType, + scrolling: Object, selectedCellData: Array as PropType>, shadeUntilCurrentTime: Boolean, showAllDayPanel: Boolean, @@ -576,10 +576,10 @@ const DxButtonOptionsConfig = { hoverStateEnabled: Boolean, icon: String, onClick: Function as PropType<((e: ClickEvent) => void)>, - onContentReady: Function as PropType<((e: ButtonContentReadyEvent) => void)>, - onDisposing: Function as PropType<((e: ButtonDisposingEvent) => void)>, - onInitialized: Function as PropType<((e: ButtonInitializedEvent) => void)>, - onOptionChanged: Function as PropType<((e: ButtonOptionChangedEvent) => void)>, + onContentReady: Function as PropType<((e: ContentReadyEvent) => void)>, + onDisposing: Function as PropType<((e: DisposingEvent) => void)>, + onInitialized: Function as PropType<((e: InitializedEvent) => void)>, + onOptionChanged: Function as PropType<((e: OptionChangedEvent) => void)>, rtlEnabled: Boolean, stylingMode: String as PropType, tabIndex: Number, @@ -1006,7 +1006,7 @@ const DxItemConfig = { location: String as PropType, menuItemTemplate: {}, name: String as PropType, - options: Object as PropType | dxButtonGroupOptions>, + options: {}, showText: String as PropType, tabPanelOptions: Object as PropType>, tabs: Array as PropType>>, @@ -1704,7 +1704,7 @@ const DxToolbarItemConfig = { location: String as PropType, menuItemTemplate: {}, name: String as PropType, - options: Object as PropType | dxButtonGroupOptions>, + options: {}, showText: String as PropType, template: {}, text: String, @@ -1814,7 +1814,7 @@ const DxViewConfig = { name: String, offset: Number, resourceCellTemplate: {}, - scrolling: Object as PropType, + scrolling: Object, snapToCellsMode: String as PropType, startDate: [Date, Number, String], startDayHour: Number, diff --git a/packages/devextreme/js/ui/scheduler_types.d.ts b/packages/devextreme/js/ui/scheduler_types.d.ts index 124186112d30..e87f3f805149 100644 --- a/packages/devextreme/js/ui/scheduler_types.d.ts +++ b/packages/devextreme/js/ui/scheduler_types.d.ts @@ -49,5 +49,4 @@ export { Occurrence, Properties, Scrolling, - dxSchedulerScrolling, } from './scheduler'; diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index d915f281adee..d232d4a876cf 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -7549,9 +7549,8 @@ declare module DevExpress.core.utils { * [descr:DxPromise] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type DxPromise = {} extends PromiseType - ? Promise - : PromiseType; + export type DxPromise = + {} extends PromiseType ? Promise : PromiseType; } declare module DevExpress.data { /** @@ -9207,7 +9206,8 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export class DateBoxBase< - TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxDateBox.Properties + TProperties extends + DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxDateBox.Properties > extends dxDropDownEditor { /** * [descr:DateBoxBase.close()] @@ -17212,7 +17212,8 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export class dxDropDownEditor< - TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxDropDownEditor.Properties + TProperties extends + DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxDropDownEditor.Properties > extends dxTextBox { /** * [descr:dxDropDownEditor.close()] @@ -26242,7 +26243,7 @@ declare module DevExpress.ui { /** * [descr:dxScheduler] */ - export class dxScheduler extends Widget { + export class dxScheduler extends Widget { /** * [descr:dxScheduler.addAppointment(appointment)] */ @@ -27180,7 +27181,7 @@ declare module DevExpress.ui { /** * [descr:dxSchedulerOptions.scrolling] */ - scrolling?: dxSchedulerScrolling; + scrolling?: Scrolling; /** * [descr:dxSchedulerOptions.selectedCellData] */ @@ -27387,7 +27388,7 @@ declare module DevExpress.ui { /** * [descr:dxSchedulerOptions.views.scrolling] */ - scrolling?: dxSchedulerScrolling; + scrolling?: Scrolling; /** * [descr:dxSchedulerOptions.views.allDayPanelMode] */ @@ -27407,15 +27408,6 @@ declare module DevExpress.ui { */ toolbar?: DevExpress.ui.dxScheduler.Toolbar | undefined; } - /** - * [descr:dxSchedulerScrolling] - */ - export interface dxSchedulerScrolling { - /** - * [descr:dxSchedulerScrolling.mode] - */ - mode?: DevExpress.common.ScrollMode; - } /** * @deprecated Use DevExpress.ui.dxScheduler.Toolbar instead * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -27659,7 +27651,8 @@ declare module DevExpress.ui { * [descr:dxSelectBox] */ export class dxSelectBox< - TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxSelectBox.Properties + TProperties extends + DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxSelectBox.Properties > extends dxDropDownList {} module dxSelectBox { /** @@ -30013,7 +30006,8 @@ declare module DevExpress.ui { * [descr:dxTextBox] */ export class dxTextBox< - TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxTextBox.Properties + TProperties extends + DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxTextBox.Properties > extends dxTextEditor { /** * [descr:dxTextBox.reset(value)] @@ -30163,7 +30157,8 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export class dxTextEditor< - TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxTextEditor.Properties + TProperties extends + DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxTextEditor.Properties > extends Editor { /** * [descr:dxTextEditor.blur()] @@ -33564,7 +33559,8 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export class Editor< - TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.Editor.Properties + TProperties extends + DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.Editor.Properties > extends Widget { /** * [descr:Editor.clear()] @@ -33783,6 +33779,15 @@ declare module DevExpress.ui { * [descr:ui.repaintFloatingActionButton()] */ export function repaintFloatingActionButton(): void; + /** + * [descr:dxSchedulerScrolling] + */ + export type Scrolling = { + /** + * [descr:Scrolling.mode] + */ + mode?: DevExpress.common.ScrollMode; + }; /** * [descr:SearchBoxMixin] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -35012,12 +35017,15 @@ declare module DevExpress.ui.dxScheduler { /** * [descr:DateNavigatorItemProperties] */ - export type DateNavigatorItemProperties = dxButtonGroupOptions & { - /** - * [descr:DateNavigatorItemProperties.items] - */ - items: Array; - }; + export type DateNavigatorItemProperties = + DevExpress.ui.dxButtonGroup.Properties & { + /** + * [descr:DateNavigatorItemProperties.items] + */ + items: Array< + DevExpress.ui.dxButtonGroup.Item | SchedulerPredefinedDateNavigatorItem + >; + }; /** * [descr:dxSchedulerToolbar] */ @@ -35042,7 +35050,7 @@ declare module DevExpress.ui.dxScheduler { /** * [descr:dxSchedulerToolbarItem] */ - export type ToolbarItem = dxToolbarItem & { + export type ToolbarItem = DevExpress.ui.dxToolbar.Item & { /** * [descr:dxSchedulerToolbarItem.name] */ From e71e1129b304f16a0ff8aea7a846b99a7475e9d7 Mon Sep 17 00:00:00 2001 From: Sergei Burkatskii Date: Thu, 9 Jul 2026 12:49:12 +0200 Subject: [PATCH 4/8] fix: run regenerate-all --- packages/devextreme/ts/dx.all.d.ts | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index d232d4a876cf..7b27a0639e64 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -7549,8 +7549,9 @@ declare module DevExpress.core.utils { * [descr:DxPromise] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export type DxPromise = - {} extends PromiseType ? Promise : PromiseType; + export type DxPromise = {} extends PromiseType + ? Promise + : PromiseType; } declare module DevExpress.data { /** @@ -9206,8 +9207,7 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export class DateBoxBase< - TProperties extends - DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxDateBox.Properties + TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxDateBox.Properties > extends dxDropDownEditor { /** * [descr:DateBoxBase.close()] @@ -17212,8 +17212,7 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export class dxDropDownEditor< - TProperties extends - DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxDropDownEditor.Properties + TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxDropDownEditor.Properties > extends dxTextBox { /** * [descr:dxDropDownEditor.close()] @@ -27651,8 +27650,7 @@ declare module DevExpress.ui { * [descr:dxSelectBox] */ export class dxSelectBox< - TProperties extends - DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxSelectBox.Properties + TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxSelectBox.Properties > extends dxDropDownList {} module dxSelectBox { /** @@ -30006,8 +30004,7 @@ declare module DevExpress.ui { * [descr:dxTextBox] */ export class dxTextBox< - TProperties extends - DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxTextBox.Properties + TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxTextBox.Properties > extends dxTextEditor { /** * [descr:dxTextBox.reset(value)] @@ -30157,8 +30154,7 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export class dxTextEditor< - TProperties extends - DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxTextEditor.Properties + TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.dxTextEditor.Properties > extends Editor { /** * [descr:dxTextEditor.blur()] @@ -33559,8 +33555,7 @@ declare module DevExpress.ui { * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ export class Editor< - TProperties extends - DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.Editor.Properties + TProperties extends DevExpress.ui.Editor.EditorOptionsWithValue = DevExpress.ui.Editor.Properties > extends Widget { /** * [descr:Editor.clear()] From 82bdf285c24f9d843d63ce229887dae3c33096f9 Mon Sep 17 00:00:00 2001 From: Sergei Burkatskii Date: Thu, 9 Jul 2026 13:40:54 +0200 Subject: [PATCH 5/8] chore: add @type object to scrolling --- .../src/ui/nested/base/index.ts | 1 - .../src/ui/nested/base/scrolling.ts | 78 --------------- .../src/ui/nested/scrolling.ts | 96 +++++++++++++++---- .../src/ui/nested/view-dxi.ts | 5 +- .../src/ui/scheduler/index.ts | 19 ++-- .../src/ui/scheduler/nested/index.ts | 1 - .../src/ui/scheduler/nested/scrolling.ts | 75 --------------- .../src/ui/scheduler/nested/view-dxi.ts | 5 +- packages/devextreme-react/src/scheduler.ts | 30 +----- packages/devextreme-vue/src/scheduler.ts | 27 +----- packages/devextreme/js/ui/scheduler.d.ts | 2 + 11 files changed, 96 insertions(+), 243 deletions(-) delete mode 100644 packages/devextreme-angular/src/ui/nested/base/scrolling.ts delete mode 100644 packages/devextreme-angular/src/ui/scheduler/nested/scrolling.ts diff --git a/packages/devextreme-angular/src/ui/nested/base/index.ts b/packages/devextreme-angular/src/ui/nested/base/index.ts index 2ad5347b0a04..452a5909a79c 100644 --- a/packages/devextreme-angular/src/ui/nested/base/index.ts +++ b/packages/devextreme-angular/src/ui/nested/base/index.ts @@ -45,7 +45,6 @@ export * from './pager'; export * from './popup-options'; export * from './popup-toolbar-item-dxi'; export * from './position-config'; -export * from './scrolling'; export * from './search-panel'; export * from './sortable-options'; export * from './sorting'; diff --git a/packages/devextreme-angular/src/ui/nested/base/scrolling.ts b/packages/devextreme-angular/src/ui/nested/base/scrolling.ts deleted file mode 100644 index c5808cd78b9e..000000000000 --- a/packages/devextreme-angular/src/ui/nested/base/scrolling.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* tslint:disable:max-line-length */ - -import { NestedOption } from 'devextreme-angular/core'; -import { - Component, -} from '@angular/core'; - -import type { Mode, ScrollbarMode, ScrollMode } from 'devextreme/common'; -import type { DataRenderMode } from 'devextreme/common/grids'; -import type { DataGridScrollMode } from 'devextreme/ui/data_grid'; - -@Component({ - template: '' -}) -export abstract class DxoScrolling extends NestedOption { - get columnRenderingMode(): DataRenderMode { - return this._getOption('columnRenderingMode'); - } - set columnRenderingMode(value: DataRenderMode) { - this._setOption('columnRenderingMode', value); - } - - get mode(): DataGridScrollMode | ScrollMode { - return this._getOption('mode'); - } - set mode(value: DataGridScrollMode | ScrollMode) { - this._setOption('mode', value); - } - - get preloadEnabled(): boolean { - return this._getOption('preloadEnabled'); - } - set preloadEnabled(value: boolean) { - this._setOption('preloadEnabled', value); - } - - get renderAsync(): boolean | undefined { - return this._getOption('renderAsync'); - } - set renderAsync(value: boolean | undefined) { - this._setOption('renderAsync', value); - } - - get rowRenderingMode(): DataRenderMode { - return this._getOption('rowRenderingMode'); - } - set rowRenderingMode(value: DataRenderMode) { - this._setOption('rowRenderingMode', value); - } - - get scrollByContent(): boolean { - return this._getOption('scrollByContent'); - } - set scrollByContent(value: boolean) { - this._setOption('scrollByContent', value); - } - - get scrollByThumb(): boolean { - return this._getOption('scrollByThumb'); - } - set scrollByThumb(value: boolean) { - this._setOption('scrollByThumb', value); - } - - get showScrollbar(): ScrollbarMode { - return this._getOption('showScrollbar'); - } - set showScrollbar(value: ScrollbarMode) { - this._setOption('showScrollbar', value); - } - - get useNative(): Mode | boolean { - return this._getOption('useNative'); - } - set useNative(value: Mode | boolean) { - this._setOption('useNative', value); - } -} diff --git a/packages/devextreme-angular/src/ui/nested/scrolling.ts b/packages/devextreme-angular/src/ui/nested/scrolling.ts index b4269ac1705e..ebca74a329a0 100644 --- a/packages/devextreme-angular/src/ui/nested/scrolling.ts +++ b/packages/devextreme-angular/src/ui/nested/scrolling.ts @@ -1,6 +1,5 @@ /* tslint:disable:max-line-length */ -/* tslint:disable:use-input-property-decorator */ import { Component, @@ -8,18 +7,22 @@ import { OnDestroy, NgModule, Host, - SkipSelf + SkipSelf, + Input } from '@angular/core'; +import type { Mode, ScrollbarMode, ScrollMode } from 'devextreme/common'; +import type { DataRenderMode } from 'devextreme/common/grids'; +import type { DataGridScrollMode } from 'devextreme/ui/data_grid'; import { DxIntegrationModule, NestedOptionHost, } from 'devextreme-angular/core'; -import { DxoScrolling } from './base/scrolling'; +import { NestedOption } from 'devextreme-angular/core'; @Component({ @@ -27,20 +30,81 @@ import { DxoScrolling } from './base/scrolling'; template: '', styles: [''], imports: [ DxIntegrationModule ], - providers: [NestedOptionHost], - inputs: [ - 'columnRenderingMode', - 'mode', - 'preloadEnabled', - 'renderAsync', - 'rowRenderingMode', - 'scrollByContent', - 'scrollByThumb', - 'showScrollbar', - 'useNative' - ] + providers: [NestedOptionHost] }) -export class DxoScrollingComponent extends DxoScrolling implements OnDestroy, OnInit { +export class DxoScrollingComponent extends NestedOption implements OnDestroy, OnInit { + @Input() + get columnRenderingMode(): DataRenderMode { + return this._getOption('columnRenderingMode'); + } + set columnRenderingMode(value: DataRenderMode) { + this._setOption('columnRenderingMode', value); + } + + @Input() + get mode(): DataGridScrollMode | ScrollMode { + return this._getOption('mode'); + } + set mode(value: DataGridScrollMode | ScrollMode) { + this._setOption('mode', value); + } + + @Input() + get preloadEnabled(): boolean { + return this._getOption('preloadEnabled'); + } + set preloadEnabled(value: boolean) { + this._setOption('preloadEnabled', value); + } + + @Input() + get renderAsync(): boolean | undefined { + return this._getOption('renderAsync'); + } + set renderAsync(value: boolean | undefined) { + this._setOption('renderAsync', value); + } + + @Input() + get rowRenderingMode(): DataRenderMode { + return this._getOption('rowRenderingMode'); + } + set rowRenderingMode(value: DataRenderMode) { + this._setOption('rowRenderingMode', value); + } + + @Input() + get scrollByContent(): boolean { + return this._getOption('scrollByContent'); + } + set scrollByContent(value: boolean) { + this._setOption('scrollByContent', value); + } + + @Input() + get scrollByThumb(): boolean { + return this._getOption('scrollByThumb'); + } + set scrollByThumb(value: boolean) { + this._setOption('scrollByThumb', value); + } + + @Input() + get showScrollbar(): ScrollbarMode { + return this._getOption('showScrollbar'); + } + set showScrollbar(value: ScrollbarMode) { + this._setOption('showScrollbar', value); + } + + @Input() + get useNative(): Mode | boolean { + return this._getOption('useNative'); + } + set useNative(value: Mode | boolean) { + this._setOption('useNative', value); + } + protected get _optionPath() { return 'scrolling'; diff --git a/packages/devextreme-angular/src/ui/nested/view-dxi.ts b/packages/devextreme-angular/src/ui/nested/view-dxi.ts index 7f83e90ccca2..9125fd9c8cae 100644 --- a/packages/devextreme-angular/src/ui/nested/view-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/view-dxi.ts @@ -12,7 +12,6 @@ import { -import type { Scrolling } from 'devextreme/!generated-members'; import type { DayOfWeek, Orientation } from 'devextreme/common'; import type { AllDayPanelMode, CellAppointmentsLimit, ViewType } from 'devextreme/ui/scheduler'; @@ -183,10 +182,10 @@ export class DxiViewComponent extends CollectionNestedOption { } @Input() - get scrolling(): Scrolling { + get scrolling(): any { return this._getOption('scrolling'); } - set scrolling(value: Scrolling) { + set scrolling(value: any) { this._setOption('scrolling', value); } diff --git a/packages/devextreme-angular/src/ui/scheduler/index.ts b/packages/devextreme-angular/src/ui/scheduler/index.ts index 21e3ab44a558..cc9c374f2d9c 100644 --- a/packages/devextreme-angular/src/ui/scheduler/index.ts +++ b/packages/devextreme-angular/src/ui/scheduler/index.ts @@ -30,7 +30,6 @@ import type { default as DataSource, DataSourceOptions } from 'devextreme/data/d import type { Store } from 'devextreme/data/store'; import type { DayOfWeek, Orientation } from 'devextreme/common'; import type { EventInfo } from 'devextreme/common/core/events'; -import type { Scrolling } from 'UNKNOWN_MODULE'; import DxScheduler from 'devextreme/ui/scheduler'; @@ -49,7 +48,6 @@ import { import { DxoAppointmentDraggingModule } from 'devextreme-angular/ui/nested'; import { DxoEditingModule } from 'devextreme-angular/ui/nested'; import { DxiResourceModule } from 'devextreme-angular/ui/nested'; -import { DxoScrollingModule } from 'devextreme-angular/ui/nested'; import { DxiViewModule } from 'devextreme-angular/ui/nested'; import { DxoSchedulerAIOptionsModule } from 'devextreme-angular/ui/scheduler/nested'; @@ -74,7 +72,6 @@ import { DxiSchedulerPatternRuleModule } from 'devextreme-angular/ui/scheduler/n import { DxiSchedulerRangeRuleModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerRequiredRuleModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerResourceModule } from 'devextreme-angular/ui/scheduler/nested'; -import { DxoSchedulerScrollingModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerSimpleItemModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerStringLengthRuleModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerTabModule } from 'devextreme-angular/ui/scheduler/nested'; @@ -713,10 +710,10 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh */ @Input() - get scrolling(): Scrolling { + get scrolling(): Record { return this._getOption('scrolling'); } - set scrolling(value: Scrolling) { + set scrolling(value: Record) { this._setOption('scrolling', value); } @@ -905,10 +902,10 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh */ @Input() - get views(): Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Scrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[] { + get views(): Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Record, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[] { return this._getOption('views'); } - set views(value: Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Scrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]) { + set views(value: Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Record, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]) { this._setOption('views', value); } @@ -1403,7 +1400,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh * This member supports the internal infrastructure and is not intended to be used directly from your code. */ - @Output() scrollingChange: EventEmitter; + @Output() scrollingChange: EventEmitter>; /** @@ -1508,7 +1505,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh * This member supports the internal infrastructure and is not intended to be used directly from your code. */ - @Output() viewsChange: EventEmitter | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Scrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]>; + @Output() viewsChange: EventEmitter | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Record, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]>; /** @@ -1678,7 +1675,6 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh DxoAppointmentDraggingModule, DxoEditingModule, DxiResourceModule, - DxoScrollingModule, DxiViewModule, DxoSchedulerAIOptionsModule, DxoSchedulerAppointmentDraggingModule, @@ -1702,7 +1698,6 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh DxiSchedulerRangeRuleModule, DxiSchedulerRequiredRuleModule, DxiSchedulerResourceModule, - DxoSchedulerScrollingModule, DxiSchedulerSimpleItemModule, DxiSchedulerStringLengthRuleModule, DxiSchedulerTabModule, @@ -1721,7 +1716,6 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh DxoAppointmentDraggingModule, DxoEditingModule, DxiResourceModule, - DxoScrollingModule, DxiViewModule, DxoSchedulerAIOptionsModule, DxoSchedulerAppointmentDraggingModule, @@ -1745,7 +1739,6 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh DxiSchedulerRangeRuleModule, DxiSchedulerRequiredRuleModule, DxiSchedulerResourceModule, - DxoSchedulerScrollingModule, DxiSchedulerSimpleItemModule, DxiSchedulerStringLengthRuleModule, DxiSchedulerTabModule, diff --git a/packages/devextreme-angular/src/ui/scheduler/nested/index.ts b/packages/devextreme-angular/src/ui/scheduler/nested/index.ts index 696b43c951a2..6e68e267602c 100644 --- a/packages/devextreme-angular/src/ui/scheduler/nested/index.ts +++ b/packages/devextreme-angular/src/ui/scheduler/nested/index.ts @@ -20,7 +20,6 @@ export * from './pattern-rule-dxi'; export * from './range-rule-dxi'; export * from './required-rule-dxi'; export * from './resource-dxi'; -export * from './scrolling'; export * from './simple-item-dxi'; export * from './string-length-rule-dxi'; export * from './tab-dxi'; diff --git a/packages/devextreme-angular/src/ui/scheduler/nested/scrolling.ts b/packages/devextreme-angular/src/ui/scheduler/nested/scrolling.ts deleted file mode 100644 index a57ccb8f47b9..000000000000 --- a/packages/devextreme-angular/src/ui/scheduler/nested/scrolling.ts +++ /dev/null @@ -1,75 +0,0 @@ -/* tslint:disable:max-line-length */ - - -import { - Component, - OnInit, - OnDestroy, - NgModule, - Host, - SkipSelf, - Input -} from '@angular/core'; - - - - -import type { ScrollMode } from 'devextreme/common'; - -import { - DxIntegrationModule, - NestedOptionHost, -} from 'devextreme-angular/core'; -import { NestedOption } from 'devextreme-angular/core'; - - -@Component({ - selector: 'dxo-scheduler-scrolling', - template: '', - styles: [''], - imports: [ DxIntegrationModule ], - providers: [NestedOptionHost] -}) -export class DxoSchedulerScrollingComponent extends NestedOption implements OnDestroy, OnInit { - @Input() - get mode(): ScrollMode { - return this._getOption('mode'); - } - set mode(value: ScrollMode) { - this._setOption('mode', value); - } - - - protected get _optionPath() { - return 'scrolling'; - } - - - constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost, - @Host() optionHost: NestedOptionHost) { - super(); - parentOptionHost.setNestedOption(this); - optionHost.setHost(this, this._fullOptionPath.bind(this)); - } - - - ngOnInit() { - this._addRecreatedComponent(); - } - - ngOnDestroy() { - this._addRemovedOption(this._getOptionPath()); - } - - -} - -@NgModule({ - imports: [ - DxoSchedulerScrollingComponent - ], - exports: [ - DxoSchedulerScrollingComponent - ], -}) -export class DxoSchedulerScrollingModule { } diff --git a/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts b/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts index dbbf1140fb9d..ca8e213d1757 100644 --- a/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts +++ b/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts @@ -14,7 +14,6 @@ import { import type { AllDayPanelMode, CellAppointmentsLimit, SnapToCellsMode, ViewType } from 'devextreme/ui/scheduler'; import type { DayOfWeek, Orientation } from 'devextreme/common'; -import type { Scrolling } from 'UNKNOWN_MODULE'; import { DxIntegrationModule, @@ -191,10 +190,10 @@ export class DxiSchedulerViewComponent extends CollectionNestedOption { } @Input() - get scrolling(): Scrolling { + get scrolling(): Record { return this._getOption('scrolling'); } - set scrolling(value: Scrolling) { + set scrolling(value: Record) { this._setOption('scrolling', value); } diff --git a/packages/devextreme-react/src/scheduler.ts b/packages/devextreme-react/src/scheduler.ts index abe0202a37d6..d74eae4d4102 100644 --- a/packages/devextreme-react/src/scheduler.ts +++ b/packages/devextreme-react/src/scheduler.ts @@ -10,7 +10,7 @@ import NestedOption from "./core/nested-option"; import type { ViewType, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, SelectionEndEvent, AppointmentFormProperties, AppointmentFormIconsShowMode, SchedulerPredefinedToolbarItem, DateNavigatorItemProperties, SchedulerPredefinedDateNavigatorItem, dxSchedulerToolbarItem, AllDayPanelMode, AppointmentCollectorTemplateData, AppointmentTemplateData, AppointmentTooltipTemplateData, CellAppointmentsLimit, SnapToCellsMode } from "devextreme/ui/scheduler"; import type { event } from "devextreme/events/events.types"; -import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, ButtonStyle, template, ButtonType, ComparisonOperator, Mode, ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone, ScrollMode, TabsIconPosition, TabsStyle, Position, DayOfWeek, Orientation } from "devextreme/common"; +import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, ButtonStyle, template, ButtonType, ComparisonOperator, Mode, ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone, TabsIconPosition, TabsStyle, Position, DayOfWeek, Orientation } from "devextreme/common"; import type { dxButtonOptions, ClickEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent } from "devextreme/ui/button"; import type { FormItemType, FormPredefinedButtonItem, ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, OptionChangedEvent as FormOptionChangedEvent, dxFormSimpleItem, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, SmartPastedEvent, SmartPastingEvent, FormItemComponent } from "devextreme/ui/form"; import type { ContentReadyEvent as ButtonGroupContentReadyEvent, DisposingEvent as ButtonGroupDisposingEvent, InitializedEvent as ButtonGroupInitializedEvent, OptionChangedEvent as ButtonGroupOptionChangedEvent, dxButtonGroupItem, ItemClickEvent, SelectionChangedEvent } from "devextreme/ui/button_group"; @@ -20,7 +20,6 @@ import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collectio import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; import type { DataSourceOptions } from "devextreme/data/data_source"; import type { Store } from "devextreme/data/store"; -import type { Scrolling as AliasedScrolling } from "UNKNOWN_MODULE"; import type dxSortable from "devextreme/ui/sortable"; import type dxDraggable from "devextreme/ui/draggable"; @@ -101,7 +100,6 @@ const Scheduler = memo( appointmentDragging: { optionName: "appointmentDragging", isCollectionItem: false }, editing: { optionName: "editing", isCollectionItem: false }, resource: { optionName: "resources", isCollectionItem: true }, - scrolling: { optionName: "scrolling", isCollectionItem: false }, toolbar: { optionName: "toolbar", isCollectionItem: false }, view: { optionName: "views", isCollectionItem: true } }), []); @@ -992,25 +990,6 @@ const Resource = Object.assign(_ componentType: "option", }); -// owners: -// Scheduler -// View -type IScrollingProps = React.PropsWithChildren<{ - mode?: ScrollMode; -}> -const _componentScrolling = (props: IScrollingProps) => { - return React.createElement(NestedOption, { - ...props, - elementDescriptor: { - OptionName: "scrolling", - }, - }); -}; - -const Scrolling = Object.assign(_componentScrolling, { - componentType: "option", -}); - // owners: // Form type ISimpleItemProps = React.PropsWithChildren<{ @@ -1459,7 +1438,7 @@ type IViewProps = React.PropsWithChildren<{ name?: string | undefined; offset?: number; resourceCellTemplate?: ((itemData: any, itemIndex: number, itemElement: any) => string | any) | template; - scrolling?: AliasedScrolling; + scrolling?: Record; snapToCellsMode?: SnapToCellsMode; startDate?: Date | number | string | undefined; startDayHour?: number; @@ -1486,9 +1465,6 @@ const _componentView = (props: IViewProps) => { elementDescriptor: { OptionName: "views", IsCollectionItem: true, - ExpectedChildren: { - scrolling: { optionName: "scrolling", isCollectionItem: false } - }, TemplateProps: [{ tmplOption: "appointmentCollectorTemplate", render: "appointmentCollectorRender", @@ -1575,8 +1551,6 @@ export { IRequiredRuleProps, Resource, IResourceProps, - Scrolling, - IScrollingProps, SimpleItem, ISimpleItemProps, StringLengthRule, diff --git a/packages/devextreme-vue/src/scheduler.ts b/packages/devextreme-vue/src/scheduler.ts index f762f9b1c81b..d39ec56ca7ec 100644 --- a/packages/devextreme-vue/src/scheduler.ts +++ b/packages/devextreme-vue/src/scheduler.ts @@ -53,7 +53,6 @@ import { ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone, - ScrollMode, TabsIconPosition, TabsStyle, Position, @@ -285,7 +284,7 @@ const componentConfig = { resourceCellTemplate: {}, resources: Array as PropType>>, rtlEnabled: Boolean, - scrolling: Object, + scrolling: Object as PropType>, selectedCellData: Array as PropType>, shadeUntilCurrentTime: Boolean, showAllDayPanel: Boolean, @@ -401,7 +400,6 @@ const componentConfig = { appointmentDragging: { isCollectionItem: false, optionName: "appointmentDragging" }, editing: { isCollectionItem: false, optionName: "editing" }, resource: { isCollectionItem: true, optionName: "resources" }, - scrolling: { isCollectionItem: false, optionName: "scrolling" }, toolbar: { isCollectionItem: false, optionName: "toolbar" }, view: { isCollectionItem: true, optionName: "views" } }; @@ -1319,23 +1317,6 @@ const DxResource = defineComponent(DxResourceConfig); (DxResource as any).$_optionName = "resources"; (DxResource as any).$_isCollectionItem = true; -const DxScrollingConfig = { - emits: { - "update:isActive": null, - "update:hoveredElement": null, - "update:mode": null, - }, - props: { - mode: String as PropType - } -}; - -prepareConfigurationComponentConfig(DxScrollingConfig); - -const DxScrolling = defineComponent(DxScrollingConfig); - -(DxScrolling as any).$_optionName = "scrolling"; - const DxSimpleItemConfig = { emits: { "update:isActive": null, @@ -1814,7 +1795,7 @@ const DxViewConfig = { name: String, offset: Number, resourceCellTemplate: {}, - scrolling: Object, + scrolling: Object as PropType>, snapToCellsMode: String as PropType, startDate: [Date, Number, String], startDayHour: Number, @@ -1829,9 +1810,6 @@ const DxView = defineComponent(DxViewConfig); (DxView as any).$_optionName = "views"; (DxView as any).$_isCollectionItem = true; -(DxView as any).$_expectedChildren = { - scrolling: { isCollectionItem: false, optionName: "scrolling" } -}; export default DxScheduler; export { @@ -1858,7 +1836,6 @@ export { DxRangeRule, DxRequiredRule, DxResource, - DxScrolling, DxSimpleItem, DxStringLengthRule, DxTab, diff --git a/packages/devextreme/js/ui/scheduler.d.ts b/packages/devextreme/js/ui/scheduler.d.ts index e5a88f09b7a6..f04a115a040d 100644 --- a/packages/devextreme/js/ui/scheduler.d.ts +++ b/packages/devextreme/js/ui/scheduler.d.ts @@ -949,6 +949,7 @@ export interface dxSchedulerOptions extends WidgetOptions { /** * @docid * @public + * @type object */ scrolling?: Scrolling; /** @@ -1160,6 +1161,7 @@ export interface dxSchedulerOptions extends WidgetOptions { type?: ViewType | undefined; /** * @docid + * @type object */ scrolling?: Scrolling; /** From e94b7a3bf86a387597982abf75f3d76a2f2d0204 Mon Sep 17 00:00:00 2001 From: Sergei Burkatskii Date: Thu, 9 Jul 2026 13:50:37 +0200 Subject: [PATCH 6/8] fix: revert typing for scrolling --- .../src/ui/nested/base/index.ts | 1 + .../src/ui/nested/base/scheduler-scrolling.ts | 78 +++++++++++++++ .../src/ui/nested/scrolling.ts | 96 ++++--------------- .../src/ui/nested/view-dxi.ts | 6 +- .../src/ui/scheduler/index.ts | 20 ++-- .../src/ui/scheduler/nested/index.ts | 1 + .../src/ui/scheduler/nested/scrolling.ts | 75 +++++++++++++++ .../src/ui/scheduler/nested/view-dxi.ts | 6 +- packages/devextreme-react/src/scheduler.ts | 31 +++++- packages/devextreme-vue/src/scheduler.ts | 28 +++++- packages/devextreme/js/ui/scheduler.d.ts | 18 +--- .../devextreme/js/ui/scheduler_types.d.ts | 2 +- packages/devextreme/ts/dx.all.d.ts | 22 ++--- 13 files changed, 261 insertions(+), 123 deletions(-) create mode 100644 packages/devextreme-angular/src/ui/nested/base/scheduler-scrolling.ts create mode 100644 packages/devextreme-angular/src/ui/scheduler/nested/scrolling.ts diff --git a/packages/devextreme-angular/src/ui/nested/base/index.ts b/packages/devextreme-angular/src/ui/nested/base/index.ts index 452a5909a79c..de74c6df0cfc 100644 --- a/packages/devextreme-angular/src/ui/nested/base/index.ts +++ b/packages/devextreme-angular/src/ui/nested/base/index.ts @@ -45,6 +45,7 @@ export * from './pager'; export * from './popup-options'; export * from './popup-toolbar-item-dxi'; export * from './position-config'; +export * from './scheduler-scrolling'; export * from './search-panel'; export * from './sortable-options'; export * from './sorting'; diff --git a/packages/devextreme-angular/src/ui/nested/base/scheduler-scrolling.ts b/packages/devextreme-angular/src/ui/nested/base/scheduler-scrolling.ts new file mode 100644 index 000000000000..eda3bc3e305f --- /dev/null +++ b/packages/devextreme-angular/src/ui/nested/base/scheduler-scrolling.ts @@ -0,0 +1,78 @@ +/* tslint:disable:max-line-length */ + +import { NestedOption } from 'devextreme-angular/core'; +import { + Component, +} from '@angular/core'; + +import type { Mode, ScrollbarMode, ScrollMode } from 'devextreme/common'; +import type { DataRenderMode } from 'devextreme/common/grids'; +import type { DataGridScrollMode } from 'devextreme/ui/data_grid'; + +@Component({ + template: '' +}) +export abstract class DxoSchedulerScrolling extends NestedOption { + get columnRenderingMode(): DataRenderMode { + return this._getOption('columnRenderingMode'); + } + set columnRenderingMode(value: DataRenderMode) { + this._setOption('columnRenderingMode', value); + } + + get mode(): DataGridScrollMode | ScrollMode { + return this._getOption('mode'); + } + set mode(value: DataGridScrollMode | ScrollMode) { + this._setOption('mode', value); + } + + get preloadEnabled(): boolean { + return this._getOption('preloadEnabled'); + } + set preloadEnabled(value: boolean) { + this._setOption('preloadEnabled', value); + } + + get renderAsync(): boolean | undefined { + return this._getOption('renderAsync'); + } + set renderAsync(value: boolean | undefined) { + this._setOption('renderAsync', value); + } + + get rowRenderingMode(): DataRenderMode { + return this._getOption('rowRenderingMode'); + } + set rowRenderingMode(value: DataRenderMode) { + this._setOption('rowRenderingMode', value); + } + + get scrollByContent(): boolean { + return this._getOption('scrollByContent'); + } + set scrollByContent(value: boolean) { + this._setOption('scrollByContent', value); + } + + get scrollByThumb(): boolean { + return this._getOption('scrollByThumb'); + } + set scrollByThumb(value: boolean) { + this._setOption('scrollByThumb', value); + } + + get showScrollbar(): ScrollbarMode { + return this._getOption('showScrollbar'); + } + set showScrollbar(value: ScrollbarMode) { + this._setOption('showScrollbar', value); + } + + get useNative(): Mode | boolean { + return this._getOption('useNative'); + } + set useNative(value: Mode | boolean) { + this._setOption('useNative', value); + } +} diff --git a/packages/devextreme-angular/src/ui/nested/scrolling.ts b/packages/devextreme-angular/src/ui/nested/scrolling.ts index ebca74a329a0..6861224b3dfd 100644 --- a/packages/devextreme-angular/src/ui/nested/scrolling.ts +++ b/packages/devextreme-angular/src/ui/nested/scrolling.ts @@ -1,5 +1,6 @@ /* tslint:disable:max-line-length */ +/* tslint:disable:use-input-property-decorator */ import { Component, @@ -7,22 +8,18 @@ import { OnDestroy, NgModule, Host, - SkipSelf, - Input + SkipSelf } from '@angular/core'; -import type { Mode, ScrollbarMode, ScrollMode } from 'devextreme/common'; -import type { DataRenderMode } from 'devextreme/common/grids'; -import type { DataGridScrollMode } from 'devextreme/ui/data_grid'; import { DxIntegrationModule, NestedOptionHost, } from 'devextreme-angular/core'; -import { NestedOption } from 'devextreme-angular/core'; +import { DxoSchedulerScrolling } from './base/scheduler-scrolling'; @Component({ @@ -30,81 +27,20 @@ import { NestedOption } from 'devextreme-angular/core'; template: '', styles: [''], imports: [ DxIntegrationModule ], - providers: [NestedOptionHost] + providers: [NestedOptionHost], + inputs: [ + 'columnRenderingMode', + 'mode', + 'preloadEnabled', + 'renderAsync', + 'rowRenderingMode', + 'scrollByContent', + 'scrollByThumb', + 'showScrollbar', + 'useNative' + ] }) -export class DxoScrollingComponent extends NestedOption implements OnDestroy, OnInit { - @Input() - get columnRenderingMode(): DataRenderMode { - return this._getOption('columnRenderingMode'); - } - set columnRenderingMode(value: DataRenderMode) { - this._setOption('columnRenderingMode', value); - } - - @Input() - get mode(): DataGridScrollMode | ScrollMode { - return this._getOption('mode'); - } - set mode(value: DataGridScrollMode | ScrollMode) { - this._setOption('mode', value); - } - - @Input() - get preloadEnabled(): boolean { - return this._getOption('preloadEnabled'); - } - set preloadEnabled(value: boolean) { - this._setOption('preloadEnabled', value); - } - - @Input() - get renderAsync(): boolean | undefined { - return this._getOption('renderAsync'); - } - set renderAsync(value: boolean | undefined) { - this._setOption('renderAsync', value); - } - - @Input() - get rowRenderingMode(): DataRenderMode { - return this._getOption('rowRenderingMode'); - } - set rowRenderingMode(value: DataRenderMode) { - this._setOption('rowRenderingMode', value); - } - - @Input() - get scrollByContent(): boolean { - return this._getOption('scrollByContent'); - } - set scrollByContent(value: boolean) { - this._setOption('scrollByContent', value); - } - - @Input() - get scrollByThumb(): boolean { - return this._getOption('scrollByThumb'); - } - set scrollByThumb(value: boolean) { - this._setOption('scrollByThumb', value); - } - - @Input() - get showScrollbar(): ScrollbarMode { - return this._getOption('showScrollbar'); - } - set showScrollbar(value: ScrollbarMode) { - this._setOption('showScrollbar', value); - } - - @Input() - get useNative(): Mode | boolean { - return this._getOption('useNative'); - } - set useNative(value: Mode | boolean) { - this._setOption('useNative', value); - } - +export class DxoScrollingComponent extends DxoSchedulerScrolling implements OnDestroy, OnInit { protected get _optionPath() { return 'scrolling'; diff --git a/packages/devextreme-angular/src/ui/nested/view-dxi.ts b/packages/devextreme-angular/src/ui/nested/view-dxi.ts index 9125fd9c8cae..d1f67d6b03c7 100644 --- a/packages/devextreme-angular/src/ui/nested/view-dxi.ts +++ b/packages/devextreme-angular/src/ui/nested/view-dxi.ts @@ -13,7 +13,7 @@ import { import type { DayOfWeek, Orientation } from 'devextreme/common'; -import type { AllDayPanelMode, CellAppointmentsLimit, ViewType } from 'devextreme/ui/scheduler'; +import type { AllDayPanelMode, CellAppointmentsLimit, dxSchedulerScrolling, ViewType } from 'devextreme/ui/scheduler'; import { DxIntegrationModule, @@ -182,10 +182,10 @@ export class DxiViewComponent extends CollectionNestedOption { } @Input() - get scrolling(): any { + get scrolling(): dxSchedulerScrolling { return this._getOption('scrolling'); } - set scrolling(value: any) { + set scrolling(value: dxSchedulerScrolling) { this._setOption('scrolling', value); } diff --git a/packages/devextreme-angular/src/ui/scheduler/index.ts b/packages/devextreme-angular/src/ui/scheduler/index.ts index cc9c374f2d9c..8aec7ba540a2 100644 --- a/packages/devextreme-angular/src/ui/scheduler/index.ts +++ b/packages/devextreme-angular/src/ui/scheduler/index.ts @@ -24,7 +24,7 @@ import { import type dxSortable from 'devextreme/ui/sortable'; import type dxDraggable from 'devextreme/ui/draggable'; -import type { default as dxScheduler, AllDayPanelMode, ViewType, dxSchedulerAppointment, AppointmentFormProperties, CellAppointmentsLimit, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, SelectionEndEvent, RecurrenceEditMode, SnapToCellsMode, dxSchedulerToolbar } from 'devextreme/ui/scheduler'; +import type { default as dxScheduler, AllDayPanelMode, ViewType, dxSchedulerAppointment, AppointmentFormProperties, CellAppointmentsLimit, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, SelectionEndEvent, RecurrenceEditMode, dxSchedulerScrolling, SnapToCellsMode, dxSchedulerToolbar } from 'devextreme/ui/scheduler'; import type { event } from 'devextreme/events/events.types'; import type { default as DataSource, DataSourceOptions } from 'devextreme/data/data_source'; import type { Store } from 'devextreme/data/store'; @@ -48,6 +48,7 @@ import { import { DxoAppointmentDraggingModule } from 'devextreme-angular/ui/nested'; import { DxoEditingModule } from 'devextreme-angular/ui/nested'; import { DxiResourceModule } from 'devextreme-angular/ui/nested'; +import { DxoScrollingModule } from 'devextreme-angular/ui/nested'; import { DxiViewModule } from 'devextreme-angular/ui/nested'; import { DxoSchedulerAIOptionsModule } from 'devextreme-angular/ui/scheduler/nested'; @@ -72,6 +73,7 @@ import { DxiSchedulerPatternRuleModule } from 'devextreme-angular/ui/scheduler/n import { DxiSchedulerRangeRuleModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerRequiredRuleModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerResourceModule } from 'devextreme-angular/ui/scheduler/nested'; +import { DxoSchedulerScrollingModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerSimpleItemModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerStringLengthRuleModule } from 'devextreme-angular/ui/scheduler/nested'; import { DxiSchedulerTabModule } from 'devextreme-angular/ui/scheduler/nested'; @@ -710,10 +712,10 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh */ @Input() - get scrolling(): Record { + get scrolling(): dxSchedulerScrolling { return this._getOption('scrolling'); } - set scrolling(value: Record) { + set scrolling(value: dxSchedulerScrolling) { this._setOption('scrolling', value); } @@ -902,10 +904,10 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh */ @Input() - get views(): Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Record, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[] { + get views(): Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[] { return this._getOption('views'); } - set views(value: Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Record, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]) { + set views(value: Array | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]) { this._setOption('views', value); } @@ -1400,7 +1402,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh * This member supports the internal infrastructure and is not intended to be used directly from your code. */ - @Output() scrollingChange: EventEmitter>; + @Output() scrollingChange: EventEmitter; /** @@ -1505,7 +1507,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh * This member supports the internal infrastructure and is not intended to be used directly from your code. */ - @Output() viewsChange: EventEmitter | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: Record, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]>; + @Output() viewsChange: EventEmitter | string> | { agendaDuration?: number, allDayPanelMode?: AllDayPanelMode, appointmentCollectorTemplate?: any, appointmentTemplate?: any, appointmentTooltipTemplate?: any, cellDuration?: number, dataCellTemplate?: any, dateCellTemplate?: any, endDayHour?: number, firstDayOfWeek?: DayOfWeek | undefined, groupByDate?: boolean, groupOrientation?: Orientation, groups?: Array, hiddenWeekDays?: Array | undefined, intervalCount?: number, maxAppointmentsPerCell?: CellAppointmentsLimit | number, name?: string | undefined, offset?: number, resourceCellTemplate?: any, scrolling?: dxSchedulerScrolling, snapToCellsMode?: SnapToCellsMode, startDate?: Date | number | string | undefined, startDayHour?: number, timeCellTemplate?: any, type?: undefined | ViewType }[]>; /** @@ -1675,6 +1677,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh DxoAppointmentDraggingModule, DxoEditingModule, DxiResourceModule, + DxoScrollingModule, DxiViewModule, DxoSchedulerAIOptionsModule, DxoSchedulerAppointmentDraggingModule, @@ -1698,6 +1701,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh DxiSchedulerRangeRuleModule, DxiSchedulerRequiredRuleModule, DxiSchedulerResourceModule, + DxoSchedulerScrollingModule, DxiSchedulerSimpleItemModule, DxiSchedulerStringLengthRuleModule, DxiSchedulerTabModule, @@ -1716,6 +1720,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh DxoAppointmentDraggingModule, DxoEditingModule, DxiResourceModule, + DxoScrollingModule, DxiViewModule, DxoSchedulerAIOptionsModule, DxoSchedulerAppointmentDraggingModule, @@ -1739,6 +1744,7 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh DxiSchedulerRangeRuleModule, DxiSchedulerRequiredRuleModule, DxiSchedulerResourceModule, + DxoSchedulerScrollingModule, DxiSchedulerSimpleItemModule, DxiSchedulerStringLengthRuleModule, DxiSchedulerTabModule, diff --git a/packages/devextreme-angular/src/ui/scheduler/nested/index.ts b/packages/devextreme-angular/src/ui/scheduler/nested/index.ts index 6e68e267602c..696b43c951a2 100644 --- a/packages/devextreme-angular/src/ui/scheduler/nested/index.ts +++ b/packages/devextreme-angular/src/ui/scheduler/nested/index.ts @@ -20,6 +20,7 @@ export * from './pattern-rule-dxi'; export * from './range-rule-dxi'; export * from './required-rule-dxi'; export * from './resource-dxi'; +export * from './scrolling'; export * from './simple-item-dxi'; export * from './string-length-rule-dxi'; export * from './tab-dxi'; diff --git a/packages/devextreme-angular/src/ui/scheduler/nested/scrolling.ts b/packages/devextreme-angular/src/ui/scheduler/nested/scrolling.ts new file mode 100644 index 000000000000..a57ccb8f47b9 --- /dev/null +++ b/packages/devextreme-angular/src/ui/scheduler/nested/scrolling.ts @@ -0,0 +1,75 @@ +/* tslint:disable:max-line-length */ + + +import { + Component, + OnInit, + OnDestroy, + NgModule, + Host, + SkipSelf, + Input +} from '@angular/core'; + + + + +import type { ScrollMode } from 'devextreme/common'; + +import { + DxIntegrationModule, + NestedOptionHost, +} from 'devextreme-angular/core'; +import { NestedOption } from 'devextreme-angular/core'; + + +@Component({ + selector: 'dxo-scheduler-scrolling', + template: '', + styles: [''], + imports: [ DxIntegrationModule ], + providers: [NestedOptionHost] +}) +export class DxoSchedulerScrollingComponent extends NestedOption implements OnDestroy, OnInit { + @Input() + get mode(): ScrollMode { + return this._getOption('mode'); + } + set mode(value: ScrollMode) { + this._setOption('mode', value); + } + + + protected get _optionPath() { + return 'scrolling'; + } + + + constructor(@SkipSelf() @Host() parentOptionHost: NestedOptionHost, + @Host() optionHost: NestedOptionHost) { + super(); + parentOptionHost.setNestedOption(this); + optionHost.setHost(this, this._fullOptionPath.bind(this)); + } + + + ngOnInit() { + this._addRecreatedComponent(); + } + + ngOnDestroy() { + this._addRemovedOption(this._getOptionPath()); + } + + +} + +@NgModule({ + imports: [ + DxoSchedulerScrollingComponent + ], + exports: [ + DxoSchedulerScrollingComponent + ], +}) +export class DxoSchedulerScrollingModule { } diff --git a/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts b/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts index ca8e213d1757..0db621792163 100644 --- a/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts +++ b/packages/devextreme-angular/src/ui/scheduler/nested/view-dxi.ts @@ -12,7 +12,7 @@ import { -import type { AllDayPanelMode, CellAppointmentsLimit, SnapToCellsMode, ViewType } from 'devextreme/ui/scheduler'; +import type { AllDayPanelMode, CellAppointmentsLimit, dxSchedulerScrolling, SnapToCellsMode, ViewType } from 'devextreme/ui/scheduler'; import type { DayOfWeek, Orientation } from 'devextreme/common'; import { @@ -190,10 +190,10 @@ export class DxiSchedulerViewComponent extends CollectionNestedOption { } @Input() - get scrolling(): Record { + get scrolling(): dxSchedulerScrolling { return this._getOption('scrolling'); } - set scrolling(value: Record) { + set scrolling(value: dxSchedulerScrolling) { this._setOption('scrolling', value); } diff --git a/packages/devextreme-react/src/scheduler.ts b/packages/devextreme-react/src/scheduler.ts index d74eae4d4102..9c205c29a16e 100644 --- a/packages/devextreme-react/src/scheduler.ts +++ b/packages/devextreme-react/src/scheduler.ts @@ -8,9 +8,9 @@ import dxScheduler, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { ViewType, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, SelectionEndEvent, AppointmentFormProperties, AppointmentFormIconsShowMode, SchedulerPredefinedToolbarItem, DateNavigatorItemProperties, SchedulerPredefinedDateNavigatorItem, dxSchedulerToolbarItem, AllDayPanelMode, AppointmentCollectorTemplateData, AppointmentTemplateData, AppointmentTooltipTemplateData, CellAppointmentsLimit, SnapToCellsMode } from "devextreme/ui/scheduler"; +import type { ViewType, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, SelectionEndEvent, AppointmentFormProperties, AppointmentFormIconsShowMode, SchedulerPredefinedToolbarItem, DateNavigatorItemProperties, SchedulerPredefinedDateNavigatorItem, dxSchedulerToolbarItem, AllDayPanelMode, AppointmentCollectorTemplateData, AppointmentTemplateData, AppointmentTooltipTemplateData, CellAppointmentsLimit, dxSchedulerScrolling, SnapToCellsMode } from "devextreme/ui/scheduler"; import type { event } from "devextreme/events/events.types"; -import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, ButtonStyle, template, ButtonType, ComparisonOperator, Mode, ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone, TabsIconPosition, TabsStyle, Position, DayOfWeek, Orientation } from "devextreme/common"; +import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, ButtonStyle, template, ButtonType, ComparisonOperator, Mode, ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone, ScrollMode, TabsIconPosition, TabsStyle, Position, DayOfWeek, Orientation } from "devextreme/common"; import type { dxButtonOptions, ClickEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent } from "devextreme/ui/button"; import type { FormItemType, FormPredefinedButtonItem, ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, OptionChangedEvent as FormOptionChangedEvent, dxFormSimpleItem, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, SmartPastedEvent, SmartPastingEvent, FormItemComponent } from "devextreme/ui/form"; import type { ContentReadyEvent as ButtonGroupContentReadyEvent, DisposingEvent as ButtonGroupDisposingEvent, InitializedEvent as ButtonGroupInitializedEvent, OptionChangedEvent as ButtonGroupOptionChangedEvent, dxButtonGroupItem, ItemClickEvent, SelectionChangedEvent } from "devextreme/ui/button_group"; @@ -100,6 +100,7 @@ const Scheduler = memo( appointmentDragging: { optionName: "appointmentDragging", isCollectionItem: false }, editing: { optionName: "editing", isCollectionItem: false }, resource: { optionName: "resources", isCollectionItem: true }, + scrolling: { optionName: "scrolling", isCollectionItem: false }, toolbar: { optionName: "toolbar", isCollectionItem: false }, view: { optionName: "views", isCollectionItem: true } }), []); @@ -990,6 +991,25 @@ const Resource = Object.assign(_ componentType: "option", }); +// owners: +// Scheduler +// View +type IScrollingProps = React.PropsWithChildren<{ + mode?: ScrollMode; +}> +const _componentScrolling = (props: IScrollingProps) => { + return React.createElement(NestedOption, { + ...props, + elementDescriptor: { + OptionName: "scrolling", + }, + }); +}; + +const Scrolling = Object.assign(_componentScrolling, { + componentType: "option", +}); + // owners: // Form type ISimpleItemProps = React.PropsWithChildren<{ @@ -1438,7 +1458,7 @@ type IViewProps = React.PropsWithChildren<{ name?: string | undefined; offset?: number; resourceCellTemplate?: ((itemData: any, itemIndex: number, itemElement: any) => string | any) | template; - scrolling?: Record; + scrolling?: dxSchedulerScrolling; snapToCellsMode?: SnapToCellsMode; startDate?: Date | number | string | undefined; startDayHour?: number; @@ -1465,6 +1485,9 @@ const _componentView = (props: IViewProps) => { elementDescriptor: { OptionName: "views", IsCollectionItem: true, + ExpectedChildren: { + scrolling: { optionName: "scrolling", isCollectionItem: false } + }, TemplateProps: [{ tmplOption: "appointmentCollectorTemplate", render: "appointmentCollectorRender", @@ -1551,6 +1574,8 @@ export { IRequiredRuleProps, Resource, IResourceProps, + Scrolling, + IScrollingProps, SimpleItem, ISimpleItemProps, StringLengthRule, diff --git a/packages/devextreme-vue/src/scheduler.ts b/packages/devextreme-vue/src/scheduler.ts index d39ec56ca7ec..d49168f25a3f 100644 --- a/packages/devextreme-vue/src/scheduler.ts +++ b/packages/devextreme-vue/src/scheduler.ts @@ -28,6 +28,7 @@ import { CellContextMenuEvent, SelectionEndEvent, RecurrenceEditMode, + dxSchedulerScrolling, SnapToCellsMode, dxSchedulerToolbar, AppointmentFormIconsShowMode, @@ -53,6 +54,7 @@ import { ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone, + ScrollMode, TabsIconPosition, TabsStyle, Position, @@ -284,7 +286,7 @@ const componentConfig = { resourceCellTemplate: {}, resources: Array as PropType>>, rtlEnabled: Boolean, - scrolling: Object as PropType>, + scrolling: Object as PropType, selectedCellData: Array as PropType>, shadeUntilCurrentTime: Boolean, showAllDayPanel: Boolean, @@ -400,6 +402,7 @@ const componentConfig = { appointmentDragging: { isCollectionItem: false, optionName: "appointmentDragging" }, editing: { isCollectionItem: false, optionName: "editing" }, resource: { isCollectionItem: true, optionName: "resources" }, + scrolling: { isCollectionItem: false, optionName: "scrolling" }, toolbar: { isCollectionItem: false, optionName: "toolbar" }, view: { isCollectionItem: true, optionName: "views" } }; @@ -1317,6 +1320,23 @@ const DxResource = defineComponent(DxResourceConfig); (DxResource as any).$_optionName = "resources"; (DxResource as any).$_isCollectionItem = true; +const DxScrollingConfig = { + emits: { + "update:isActive": null, + "update:hoveredElement": null, + "update:mode": null, + }, + props: { + mode: String as PropType + } +}; + +prepareConfigurationComponentConfig(DxScrollingConfig); + +const DxScrolling = defineComponent(DxScrollingConfig); + +(DxScrolling as any).$_optionName = "scrolling"; + const DxSimpleItemConfig = { emits: { "update:isActive": null, @@ -1795,7 +1815,7 @@ const DxViewConfig = { name: String, offset: Number, resourceCellTemplate: {}, - scrolling: Object as PropType>, + scrolling: Object as PropType, snapToCellsMode: String as PropType, startDate: [Date, Number, String], startDayHour: Number, @@ -1810,6 +1830,9 @@ const DxView = defineComponent(DxViewConfig); (DxView as any).$_optionName = "views"; (DxView as any).$_isCollectionItem = true; +(DxView as any).$_expectedChildren = { + scrolling: { isCollectionItem: false, optionName: "scrolling" } +}; export default DxScheduler; export { @@ -1836,6 +1859,7 @@ export { DxRangeRule, DxRequiredRule, DxResource, + DxScrolling, DxSimpleItem, DxStringLengthRule, DxTab, diff --git a/packages/devextreme/js/ui/scheduler.d.ts b/packages/devextreme/js/ui/scheduler.d.ts index f04a115a040d..9fd2044c8bae 100644 --- a/packages/devextreme/js/ui/scheduler.d.ts +++ b/packages/devextreme/js/ui/scheduler.d.ts @@ -949,9 +949,8 @@ export interface dxSchedulerOptions extends WidgetOptions { /** * @docid * @public - * @type object */ - scrolling?: Scrolling; + scrolling?: dxSchedulerScrolling; /** * @docid * @readonly @@ -1161,9 +1160,8 @@ export interface dxSchedulerOptions extends WidgetOptions { type?: ViewType | undefined; /** * @docid - * @type object */ - scrolling?: Scrolling; + scrolling?: dxSchedulerScrolling; /** * @docid * @default "all" @@ -1478,21 +1476,15 @@ export type Occurrence = { export type Properties = dxSchedulerOptions; /** - * @namespace DevExpress.ui - * @deprecated Use Scrolling instead - */ -export type dxSchedulerScrolling = Scrolling; - -/** - * @docid dxSchedulerScrolling + * @docid * @public * @namespace DevExpress.ui */ -export type Scrolling = { +export interface dxSchedulerScrolling { /** * @docid * @default "standard" * @public */ mode?: ScrollMode; -}; +} diff --git a/packages/devextreme/js/ui/scheduler_types.d.ts b/packages/devextreme/js/ui/scheduler_types.d.ts index e87f3f805149..e3a266157b91 100644 --- a/packages/devextreme/js/ui/scheduler_types.d.ts +++ b/packages/devextreme/js/ui/scheduler_types.d.ts @@ -48,5 +48,5 @@ export { Appointment, Occurrence, Properties, - Scrolling, + dxSchedulerScrolling, } from './scheduler'; diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index 7b27a0639e64..40084dfd869a 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -27180,7 +27180,7 @@ declare module DevExpress.ui { /** * [descr:dxSchedulerOptions.scrolling] */ - scrolling?: Scrolling; + scrolling?: dxSchedulerScrolling; /** * [descr:dxSchedulerOptions.selectedCellData] */ @@ -27387,7 +27387,7 @@ declare module DevExpress.ui { /** * [descr:dxSchedulerOptions.views.scrolling] */ - scrolling?: Scrolling; + scrolling?: dxSchedulerScrolling; /** * [descr:dxSchedulerOptions.views.allDayPanelMode] */ @@ -27407,6 +27407,15 @@ declare module DevExpress.ui { */ toolbar?: DevExpress.ui.dxScheduler.Toolbar | undefined; } + /** + * [descr:dxSchedulerScrolling] + */ + export interface dxSchedulerScrolling { + /** + * [descr:dxSchedulerScrolling.mode] + */ + mode?: DevExpress.common.ScrollMode; + } /** * @deprecated Use DevExpress.ui.dxScheduler.Toolbar instead * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. @@ -33774,15 +33783,6 @@ declare module DevExpress.ui { * [descr:ui.repaintFloatingActionButton()] */ export function repaintFloatingActionButton(): void; - /** - * [descr:dxSchedulerScrolling] - */ - export type Scrolling = { - /** - * [descr:Scrolling.mode] - */ - mode?: DevExpress.common.ScrollMode; - }; /** * [descr:SearchBoxMixin] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. From 5e5048dfd722a1aa49b0cf339e6d0b08ab4c1979 Mon Sep 17 00:00:00 2001 From: Sergei Burkatskii Date: Thu, 9 Jul 2026 14:32:30 +0200 Subject: [PATCH 7/8] feat: type events from debug block --- .../src/ui/scheduler/index.ts | 19 +++++----- packages/devextreme-react/src/scheduler.ts | 19 +++++----- packages/devextreme-vue/src/scheduler.ts | 35 +++++++++---------- packages/devextreme/js/ui/scheduler.d.ts | 33 ++++++++++++++++- packages/devextreme/ts/dx.all.d.ts | 22 +++++++++++- 5 files changed, 89 insertions(+), 39 deletions(-) diff --git a/packages/devextreme-angular/src/ui/scheduler/index.ts b/packages/devextreme-angular/src/ui/scheduler/index.ts index 8aec7ba540a2..57f11fdf79e9 100644 --- a/packages/devextreme-angular/src/ui/scheduler/index.ts +++ b/packages/devextreme-angular/src/ui/scheduler/index.ts @@ -24,12 +24,11 @@ import { import type dxSortable from 'devextreme/ui/sortable'; import type dxDraggable from 'devextreme/ui/draggable'; -import type { default as dxScheduler, AllDayPanelMode, ViewType, dxSchedulerAppointment, AppointmentFormProperties, CellAppointmentsLimit, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, SelectionEndEvent, RecurrenceEditMode, dxSchedulerScrolling, SnapToCellsMode, dxSchedulerToolbar } from 'devextreme/ui/scheduler'; +import type { default as dxScheduler, AllDayPanelMode, ViewType, dxSchedulerAppointment, AppointmentFormProperties, CellAppointmentsLimit, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent, SelectionEndEvent, RecurrenceEditMode, dxSchedulerScrolling, SnapToCellsMode, dxSchedulerToolbar } from 'devextreme/ui/scheduler'; import type { event } from 'devextreme/events/events.types'; import type { default as DataSource, DataSourceOptions } from 'devextreme/data/data_source'; import type { Store } from 'devextreme/data/store'; import type { DayOfWeek, Orientation } from 'devextreme/common'; -import type { EventInfo } from 'devextreme/common/core/events'; import DxScheduler from 'devextreme/ui/scheduler'; @@ -1051,35 +1050,35 @@ export class DxSchedulerComponent extends DxComponent implements OnDestroy, OnCh /** - * [descr:WidgetOptions.onContentReady] + * [descr:dxSchedulerOptions.onContentReady] */ - @Output() onContentReady: EventEmitter>; + @Output() onContentReady: EventEmitter; /** - * [descr:DOMComponentOptions.onDisposing] + * [descr:dxSchedulerOptions.onDisposing] */ - @Output() onDisposing: EventEmitter>; + @Output() onDisposing: EventEmitter; /** - * [descr:ComponentOptions.onInitialized] + * [descr:dxSchedulerOptions.onInitialized] */ - @Output() onInitialized: EventEmitter; + @Output() onInitialized: EventEmitter; /** - * [descr:DOMComponentOptions.onOptionChanged] + * [descr:dxSchedulerOptions.onOptionChanged] */ - @Output() onOptionChanged: EventEmitter; + @Output() onOptionChanged: EventEmitter; /** diff --git a/packages/devextreme-react/src/scheduler.ts b/packages/devextreme-react/src/scheduler.ts index 9c205c29a16e..93746cd7eabc 100644 --- a/packages/devextreme-react/src/scheduler.ts +++ b/packages/devextreme-react/src/scheduler.ts @@ -8,13 +8,13 @@ import dxScheduler, { import { Component as BaseComponent, IHtmlOptions, ComponentRef, NestedComponentMeta } from "./core/component"; import NestedOption from "./core/nested-option"; -import type { ViewType, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, SelectionEndEvent, AppointmentFormProperties, AppointmentFormIconsShowMode, SchedulerPredefinedToolbarItem, DateNavigatorItemProperties, SchedulerPredefinedDateNavigatorItem, dxSchedulerToolbarItem, AllDayPanelMode, AppointmentCollectorTemplateData, AppointmentTemplateData, AppointmentTooltipTemplateData, CellAppointmentsLimit, dxSchedulerScrolling, SnapToCellsMode } from "devextreme/ui/scheduler"; -import type { event } from "devextreme/events/events.types"; -import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, ButtonStyle, template, ButtonType, ComparisonOperator, Mode, ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone, ScrollMode, TabsIconPosition, TabsStyle, Position, DayOfWeek, Orientation } from "devextreme/common"; -import type { dxButtonOptions, ClickEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, OptionChangedEvent } from "devextreme/ui/button"; -import type { FormItemType, FormPredefinedButtonItem, ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, OptionChangedEvent as FormOptionChangedEvent, dxFormSimpleItem, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, SmartPastedEvent, SmartPastingEvent, FormItemComponent } from "devextreme/ui/form"; +import type { ViewType, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, SelectionEndEvent, AppointmentFormProperties, AppointmentFormIconsShowMode, SchedulerPredefinedToolbarItem, DateNavigatorItemProperties, SchedulerPredefinedDateNavigatorItem, dxSchedulerToolbarItem, AllDayPanelMode, AppointmentCollectorTemplateData, AppointmentTemplateData, AppointmentTooltipTemplateData, CellAppointmentsLimit, dxSchedulerScrolling, SnapToCellsMode } from "devextreme/ui/scheduler"; +import type { ContentReadyEvent as ButtonContentReadyEvent, DisposingEvent as ButtonDisposingEvent, InitializedEvent as ButtonInitializedEvent, dxButtonOptions, ClickEvent, OptionChangedEvent } from "devextreme/ui/button"; +import type { ContentReadyEvent as FormContentReadyEvent, DisposingEvent as FormDisposingEvent, InitializedEvent as FormInitializedEvent, FormItemType, FormPredefinedButtonItem, OptionChangedEvent as FormOptionChangedEvent, dxFormSimpleItem, dxFormGroupItem, dxFormTabbedItem, dxFormEmptyItem, dxFormButtonItem, LabelLocation, FormLabelMode, EditorEnterKeyEvent, FieldDataChangedEvent, SmartPastedEvent, SmartPastingEvent, FormItemComponent } from "devextreme/ui/form"; import type { ContentReadyEvent as ButtonGroupContentReadyEvent, DisposingEvent as ButtonGroupDisposingEvent, InitializedEvent as ButtonGroupInitializedEvent, OptionChangedEvent as ButtonGroupOptionChangedEvent, dxButtonGroupItem, ItemClickEvent, SelectionChangedEvent } from "devextreme/ui/button_group"; import type { ContentReadyEvent as TabPanelContentReadyEvent, DisposingEvent as TabPanelDisposingEvent, InitializedEvent as TabPanelInitializedEvent, OptionChangedEvent as TabPanelOptionChangedEvent, dxTabPanelOptions, ItemClickEvent as TabPanelItemClickEvent, SelectionChangedEvent as TabPanelSelectionChangedEvent, dxTabPanelItem, ItemContextMenuEvent, ItemHoldEvent, ItemRenderedEvent, SelectionChangingEvent, TitleClickEvent, TitleHoldEvent, TitleRenderedEvent } from "devextreme/ui/tab_panel"; +import type { event } from "devextreme/events/events.types"; +import type { ValidationRuleType, HorizontalAlignment, VerticalAlignment, ButtonStyle, template, ButtonType, ComparisonOperator, Mode, ToolbarItemLocation, ToolbarItemComponent, SingleMultipleOrNone, ScrollMode, TabsIconPosition, TabsStyle, Position, DayOfWeek, Orientation } from "devextreme/common"; import type { AIIntegration } from "devextreme/common/ai-integration"; import type { CollectionWidgetItem } from "devextreme/ui/collection/ui.collection_widget.base"; import type { LocateInMenuMode, ShowTextMode } from "devextreme/ui/toolbar"; @@ -47,6 +47,9 @@ type ISchedulerOptionsNarrowedEvents = { onAppointmentUpdating?: ((e: AppointmentUpdatingEvent) => void); onCellClick?: ((e: CellClickEvent) => void) | string; onCellContextMenu?: ((e: CellContextMenuEvent) => void) | string; + onContentReady?: ((e: ContentReadyEvent) => void); + onDisposing?: ((e: DisposingEvent) => void); + onInitialized?: ((e: InitializedEvent) => void); onSelectionEnd?: ((e: SelectionEndEvent) => void) | undefined; } @@ -278,9 +281,9 @@ type IButtonOptionsProps = React.PropsWithChildren<{ hoverStateEnabled?: boolean; icon?: string; onClick?: ((e: ClickEvent) => void); - onContentReady?: ((e: ContentReadyEvent) => void); - onDisposing?: ((e: DisposingEvent) => void); - onInitialized?: ((e: InitializedEvent) => void); + onContentReady?: ((e: ButtonContentReadyEvent) => void); + onDisposing?: ((e: ButtonDisposingEvent) => void); + onInitialized?: ((e: ButtonInitializedEvent) => void); onOptionChanged?: ((e: OptionChangedEvent) => void); rtlEnabled?: boolean; stylingMode?: ButtonStyle; diff --git a/packages/devextreme-vue/src/scheduler.ts b/packages/devextreme-vue/src/scheduler.ts index d49168f25a3f..af466e90b36e 100644 --- a/packages/devextreme-vue/src/scheduler.ts +++ b/packages/devextreme-vue/src/scheduler.ts @@ -3,7 +3,6 @@ import { defineComponent } from "vue"; import { prepareComponentConfig } from "./core/index"; import Scheduler, { Properties } from "devextreme/ui/scheduler"; import DataSource from "devextreme/data/data_source"; -import DOMComponent from "devextreme/core/dom_component"; import dxScheduler from "devextreme/ui/scheduler"; import dxSortable from "devextreme/ui/sortable"; import dxDraggable from "devextreme/ui/draggable"; @@ -26,6 +25,10 @@ import { AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, + ContentReadyEvent, + DisposingEvent, + InitializedEvent, + OptionChangedEvent, SelectionEndEvent, RecurrenceEditMode, dxSchedulerScrolling, @@ -60,22 +63,16 @@ import { Position, Orientation, } from "devextreme/common"; -import { - EventInfo, -} from "devextreme/common/core/events"; -import { - Component, -} from "devextreme/core/component"; import { event, } from "devextreme/events/events.types"; import { dxButtonOptions, ClickEvent, - ContentReadyEvent, - DisposingEvent, - InitializedEvent, - OptionChangedEvent, + ContentReadyEvent as ButtonContentReadyEvent, + DisposingEvent as ButtonDisposingEvent, + InitializedEvent as ButtonInitializedEvent, + OptionChangedEvent as ButtonOptionChangedEvent, } from "devextreme/ui/button"; import { FormItemType, @@ -274,10 +271,10 @@ const componentConfig = { onAppointmentUpdating: Function as PropType<((e: AppointmentUpdatingEvent) => void)>, onCellClick: [Function, String] as PropType<(((e: CellClickEvent) => void)) | string>, onCellContextMenu: [Function, String] as PropType<(((e: CellContextMenuEvent) => void)) | string>, - onContentReady: Function as PropType<((e: EventInfo) => void)>, - onDisposing: Function as PropType<((e: EventInfo) => void)>, - onInitialized: Function as PropType<((e: { component: Component, element: any }) => void)>, - onOptionChanged: Function as PropType<((e: { component: DOMComponent, element: any, fullName: string, model: any, name: string, previousValue: any, value: any }) => void)>, + onContentReady: Function as PropType<((e: ContentReadyEvent) => void)>, + onDisposing: Function as PropType<((e: DisposingEvent) => void)>, + onInitialized: Function as PropType<((e: InitializedEvent) => void)>, + onOptionChanged: Function as PropType<((e: OptionChangedEvent) => void)>, onSelectionEnd: Function as PropType<((e: SelectionEndEvent) => void)>, recurrenceEditMode: String as PropType, recurrenceExceptionExpr: String, @@ -577,10 +574,10 @@ const DxButtonOptionsConfig = { hoverStateEnabled: Boolean, icon: String, onClick: Function as PropType<((e: ClickEvent) => void)>, - onContentReady: Function as PropType<((e: ContentReadyEvent) => void)>, - onDisposing: Function as PropType<((e: DisposingEvent) => void)>, - onInitialized: Function as PropType<((e: InitializedEvent) => void)>, - onOptionChanged: Function as PropType<((e: OptionChangedEvent) => void)>, + onContentReady: Function as PropType<((e: ButtonContentReadyEvent) => void)>, + onDisposing: Function as PropType<((e: ButtonDisposingEvent) => void)>, + onInitialized: Function as PropType<((e: ButtonInitializedEvent) => void)>, + onOptionChanged: Function as PropType<((e: ButtonOptionChangedEvent) => void)>, rtlEnabled: Boolean, stylingMode: String as PropType, tabIndex: Number, diff --git a/packages/devextreme/js/ui/scheduler.d.ts b/packages/devextreme/js/ui/scheduler.d.ts index 9fd2044c8bae..4958e3d32129 100644 --- a/packages/devextreme/js/ui/scheduler.d.ts +++ b/packages/devextreme/js/ui/scheduler.d.ts @@ -451,7 +451,10 @@ export type DateNavigatorTextInfo = { * @namespace DevExpress.ui * @docid */ -export interface dxSchedulerOptions extends WidgetOptions { +export interface dxSchedulerOptions extends Omit< + WidgetOptions, + 'onContentReady' | 'onDisposing' | 'onInitialized' | 'onOptionChanged' +> { /** * @docid * @default false @@ -861,6 +864,34 @@ export interface dxSchedulerOptions extends WidgetOptions { * @public */ onCellContextMenu?: ((e: CellContextMenuEvent) => void) | string; + /** + * @docid + * @public + * @type_function_param1 e:{ui/scheduler:ContentReadyEvent} + * @action + */ + onContentReady?: (e: ContentReadyEvent) => void; + /** + * @docid + * @public + * @type_function_param1 e:{ui/scheduler:DisposingEvent} + * @action + */ + onDisposing?: (e: DisposingEvent) => void; + /** + * @docid + * @public + * @type_function_param1 e:{ui/scheduler:InitializedEvent} + * @action + */ + onInitialized?: (e: InitializedEvent) => void; + /** + * @docid + * @public + * @type_function_param1 e:{ui/scheduler:OptionChangedEvent} + * @action + */ + onOptionChanged?: (e: OptionChangedEvent) => void; /** * @docid * @default "dialog" diff --git a/packages/devextreme/ts/dx.all.d.ts b/packages/devextreme/ts/dx.all.d.ts index 40084dfd869a..dd026af3c5ff 100644 --- a/packages/devextreme/ts/dx.all.d.ts +++ b/packages/devextreme/ts/dx.all.d.ts @@ -26779,7 +26779,11 @@ declare module DevExpress.ui { * @deprecated [depNote:dxSchedulerOptions] * @deprecated Attention! This type is for internal purposes only. If you used it previously, please submit a ticket to our {@link https://supportcenter.devexpress.com/ticket/create Support Center}. We will check if there is an alternative solution. */ - export interface dxSchedulerOptions extends WidgetOptions { + export interface dxSchedulerOptions + extends Omit< + WidgetOptions, + 'onContentReady' | 'onDisposing' | 'onInitialized' | 'onOptionChanged' + > { /** * [descr:dxSchedulerOptions.adaptivityEnabled] */ @@ -27110,6 +27114,22 @@ declare module DevExpress.ui { onCellContextMenu?: | ((e: DevExpress.ui.dxScheduler.CellContextMenuEvent) => void) | string; + /** + * [descr:dxSchedulerOptions.onContentReady] + */ + onContentReady?: (e: DevExpress.ui.dxScheduler.ContentReadyEvent) => void; + /** + * [descr:dxSchedulerOptions.onDisposing] + */ + onDisposing?: (e: DevExpress.ui.dxScheduler.DisposingEvent) => void; + /** + * [descr:dxSchedulerOptions.onInitialized] + */ + onInitialized?: (e: DevExpress.ui.dxScheduler.InitializedEvent) => void; + /** + * [descr:dxSchedulerOptions.onOptionChanged] + */ + onOptionChanged?: (e: DevExpress.ui.dxScheduler.OptionChangedEvent) => void; /** * [descr:dxSchedulerOptions.recurrenceEditMode] */ From 4d55dbf3e85c813c4944ee4c383fafd57c90dccc Mon Sep 17 00:00:00 2001 From: Sergei Burkatskii Date: Thu, 9 Jul 2026 14:56:34 +0200 Subject: [PATCH 8/8] fix: return @type function to handlers --- packages/devextreme-react/src/scheduler.ts | 10 +++++----- packages/devextreme-vue/src/scheduler.ts | 15 ++++++++------- packages/devextreme/js/ui/scheduler.d.ts | 6 ++++++ 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/packages/devextreme-react/src/scheduler.ts b/packages/devextreme-react/src/scheduler.ts index 93746cd7eabc..978ea1be3715 100644 --- a/packages/devextreme-react/src/scheduler.ts +++ b/packages/devextreme-react/src/scheduler.ts @@ -35,9 +35,9 @@ type ReplaceFieldTypes = { type ISchedulerOptionsNarrowedEvents = { onAppointmentAdded?: ((e: AppointmentAddedEvent) => void); onAppointmentAdding?: ((e: AppointmentAddingEvent) => void); - onAppointmentClick?: ((e: AppointmentClickEvent) => void) | string; - onAppointmentContextMenu?: ((e: AppointmentContextMenuEvent) => void) | string; - onAppointmentDblClick?: ((e: AppointmentDblClickEvent) => void) | string; + onAppointmentClick?: ((e: AppointmentClickEvent) => void); + onAppointmentContextMenu?: ((e: AppointmentContextMenuEvent) => void); + onAppointmentDblClick?: ((e: AppointmentDblClickEvent) => void); onAppointmentDeleted?: ((e: AppointmentDeletedEvent) => void); onAppointmentDeleting?: ((e: AppointmentDeletingEvent) => void); onAppointmentFormOpening?: ((e: AppointmentFormOpeningEvent) => void); @@ -45,8 +45,8 @@ type ISchedulerOptionsNarrowedEvents = { onAppointmentTooltipShowing?: ((e: AppointmentTooltipShowingEvent) => void); onAppointmentUpdated?: ((e: AppointmentUpdatedEvent) => void); onAppointmentUpdating?: ((e: AppointmentUpdatingEvent) => void); - onCellClick?: ((e: CellClickEvent) => void) | string; - onCellContextMenu?: ((e: CellContextMenuEvent) => void) | string; + onCellClick?: ((e: CellClickEvent) => void); + onCellContextMenu?: ((e: CellContextMenuEvent) => void); onContentReady?: ((e: ContentReadyEvent) => void); onDisposing?: ((e: DisposingEvent) => void); onInitialized?: ((e: InitializedEvent) => void); diff --git a/packages/devextreme-vue/src/scheduler.ts b/packages/devextreme-vue/src/scheduler.ts index af466e90b36e..ead3818f5f1b 100644 --- a/packages/devextreme-vue/src/scheduler.ts +++ b/packages/devextreme-vue/src/scheduler.ts @@ -36,6 +36,7 @@ import { dxSchedulerToolbar, AppointmentFormIconsShowMode, SchedulerPredefinedToolbarItem, + DateNavigatorItemProperties, SchedulerPredefinedDateNavigatorItem, dxSchedulerToolbarItem, } from "devextreme/ui/scheduler"; @@ -259,9 +260,9 @@ const componentConfig = { offset: Number, onAppointmentAdded: Function as PropType<((e: AppointmentAddedEvent) => void)>, onAppointmentAdding: Function as PropType<((e: AppointmentAddingEvent) => void)>, - onAppointmentClick: [Function, String] as PropType<(((e: AppointmentClickEvent) => void)) | string>, - onAppointmentContextMenu: [Function, String] as PropType<(((e: AppointmentContextMenuEvent) => void)) | string>, - onAppointmentDblClick: [Function, String] as PropType<(((e: AppointmentDblClickEvent) => void)) | string>, + onAppointmentClick: Function as PropType<((e: AppointmentClickEvent) => void)>, + onAppointmentContextMenu: Function as PropType<((e: AppointmentContextMenuEvent) => void)>, + onAppointmentDblClick: Function as PropType<((e: AppointmentDblClickEvent) => void)>, onAppointmentDeleted: Function as PropType<((e: AppointmentDeletedEvent) => void)>, onAppointmentDeleting: Function as PropType<((e: AppointmentDeletingEvent) => void)>, onAppointmentFormOpening: Function as PropType<((e: AppointmentFormOpeningEvent) => void)>, @@ -269,8 +270,8 @@ const componentConfig = { onAppointmentTooltipShowing: Function as PropType<((e: AppointmentTooltipShowingEvent) => void)>, onAppointmentUpdated: Function as PropType<((e: AppointmentUpdatedEvent) => void)>, onAppointmentUpdating: Function as PropType<((e: AppointmentUpdatingEvent) => void)>, - onCellClick: [Function, String] as PropType<(((e: CellClickEvent) => void)) | string>, - onCellContextMenu: [Function, String] as PropType<(((e: CellContextMenuEvent) => void)) | string>, + onCellClick: Function as PropType<((e: CellClickEvent) => void)>, + onCellContextMenu: Function as PropType<((e: CellContextMenuEvent) => void)>, onContentReady: Function as PropType<((e: ContentReadyEvent) => void)>, onDisposing: Function as PropType<((e: DisposingEvent) => void)>, onInitialized: Function as PropType<((e: InitializedEvent) => void)>, @@ -1004,7 +1005,7 @@ const DxItemConfig = { location: String as PropType, menuItemTemplate: {}, name: String as PropType, - options: {}, + options: Object as PropType>, showText: String as PropType, tabPanelOptions: Object as PropType>, tabs: Array as PropType>>, @@ -1702,7 +1703,7 @@ const DxToolbarItemConfig = { location: String as PropType, menuItemTemplate: {}, name: String as PropType, - options: {}, + options: Object as PropType>, showText: String as PropType, template: {}, text: String, diff --git a/packages/devextreme/js/ui/scheduler.d.ts b/packages/devextreme/js/ui/scheduler.d.ts index 4958e3d32129..873671a3fbe5 100644 --- a/packages/devextreme/js/ui/scheduler.d.ts +++ b/packages/devextreme/js/ui/scheduler.d.ts @@ -762,6 +762,7 @@ export interface dxSchedulerOptions extends Omit< /** * @docid * @default null + * @type function * @type_function_param1 e:{ui/scheduler:AppointmentClickEvent} * @action * @public @@ -770,6 +771,7 @@ export interface dxSchedulerOptions extends Omit< /** * @docid * @default null + * @type function * @type_function_param1 e:{ui/scheduler:AppointmentContextMenuEvent} * @action * @public @@ -778,6 +780,7 @@ export interface dxSchedulerOptions extends Omit< /** * @docid * @default null + * @type function * @type_function_param1 e:{ui/scheduler:AppointmentDblClickEvent} * @action * @public @@ -843,6 +846,7 @@ export interface dxSchedulerOptions extends Omit< /** * @docid * @default null + * @type function * @type_function_param1 e:{ui/scheduler:CellClickEvent} * @action * @public @@ -859,6 +863,7 @@ export interface dxSchedulerOptions extends Omit< /** * @docid * @default null + * @type function * @type_function_param1 e:{ui/scheduler:CellContextMenuEvent} * @action * @public @@ -1220,6 +1225,7 @@ export interface dxSchedulerOptions extends Omit< /** * @docid + * @type object * @inherits dxButtonGroupOptions * @namespace DevExpress.ui.dxScheduler * @public