devextreme-react
Version:
DevExtreme React UI and Visualization Components
358 lines (356 loc) • 16.5 kB
TypeScript
/*!
* devextreme-react
* Version: 24.2.6
* Build date: Mon Mar 17 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
*
* This software may be modified and distributed under the terms
* of the MIT license. See the LICENSE file in the root of the project for details.
*
* https://github.com/DevExpress/devextreme-react
*/
import * as React from "react";
import { Ref, ReactElement } from "react";
import dxScheduler, { Properties } from "devextreme/ui/scheduler";
import { IHtmlOptions, NestedComponentMeta } from "./core/component";
import type { ViewType, AppointmentAddedEvent, AppointmentAddingEvent, AppointmentClickEvent, AppointmentContextMenuEvent, AppointmentDblClickEvent, AppointmentDeletedEvent, AppointmentDeletingEvent, AppointmentFormOpeningEvent, AppointmentRenderedEvent, AppointmentTooltipShowingEvent, AppointmentUpdatedEvent, AppointmentUpdatingEvent, CellClickEvent, CellContextMenuEvent, ContentReadyEvent, DisposingEvent, InitializedEvent, AllDayPanelMode, AppointmentTemplateData, AppointmentTooltipTemplateData, CellAppointmentsLimit, dxSchedulerScrolling } from "devextreme/ui/scheduler";
import type { event } from "devextreme/events/events.types";
import type { DataSourceOptions } from "devextreme/data/data_source";
import type { Store } from "devextreme/data/store";
import type { ScrollMode, template, FirstDayOfWeek, Orientation } from "devextreme/common";
import type dxSortable from "devextreme/ui/sortable";
import type dxDraggable from "devextreme/ui/draggable";
import type DataSource from "devextreme/data/data_source";
type ReplaceFieldTypes<TSource, TReplacement> = {
[P in keyof TSource]: P extends keyof TReplacement ? TReplacement[P] : TSource[P];
};
type ISchedulerOptionsNarrowedEvents = {
onAppointmentAdded?: ((e: AppointmentAddedEvent) => void);
onAppointmentAdding?: ((e: AppointmentAddingEvent) => void);
onAppointmentClick?: ((e: AppointmentClickEvent) => void);
onAppointmentContextMenu?: ((e: AppointmentContextMenuEvent) => void);
onAppointmentDblClick?: ((e: AppointmentDblClickEvent) => void);
onAppointmentDeleted?: ((e: AppointmentDeletedEvent) => void);
onAppointmentDeleting?: ((e: AppointmentDeletingEvent) => void);
onAppointmentFormOpening?: ((e: AppointmentFormOpeningEvent) => void);
onAppointmentRendered?: ((e: AppointmentRenderedEvent) => void);
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);
};
type ISchedulerOptions = React.PropsWithChildren<ReplaceFieldTypes<Properties, ISchedulerOptionsNarrowedEvents> & IHtmlOptions & {
appointmentCollectorRender?: (...params: any) => React.ReactNode;
appointmentCollectorComponent?: React.ComponentType<any>;
appointmentRender?: (...params: any) => React.ReactNode;
appointmentComponent?: React.ComponentType<any>;
appointmentTooltipRender?: (...params: any) => React.ReactNode;
appointmentTooltipComponent?: React.ComponentType<any>;
dataCellRender?: (...params: any) => React.ReactNode;
dataCellComponent?: React.ComponentType<any>;
dateCellRender?: (...params: any) => React.ReactNode;
dateCellComponent?: React.ComponentType<any>;
dropDownAppointmentRender?: (...params: any) => React.ReactNode;
dropDownAppointmentComponent?: React.ComponentType<any>;
resourceCellRender?: (...params: any) => React.ReactNode;
resourceCellComponent?: React.ComponentType<any>;
timeCellRender?: (...params: any) => React.ReactNode;
timeCellComponent?: React.ComponentType<any>;
defaultCurrentDate?: Date | number | string;
defaultCurrentView?: string | ViewType;
onCurrentDateChange?: (value: Date | number | string) => void;
onCurrentViewChange?: (value: string | ViewType) => void;
}>;
interface SchedulerRef {
instance: () => dxScheduler;
}
declare const Scheduler: (props: React.PropsWithChildren<ISchedulerOptions> & {
ref?: Ref<SchedulerRef>;
}) => ReactElement | null;
type IAppointmentDraggingProps = React.PropsWithChildren<{
autoScroll?: boolean;
data?: any | undefined;
group?: string | undefined;
onAdd?: ((e: {
component: dxScheduler;
event: event;
fromComponent: dxSortable | dxDraggable;
fromData: any;
itemData: any;
itemElement: any;
toComponent: dxSortable | dxDraggable;
toData: any;
}) => void);
onDragEnd?: ((e: {
cancel: boolean;
component: dxScheduler;
event: event;
fromComponent: dxSortable | dxDraggable;
fromData: any;
itemData: any;
itemElement: any;
toComponent: dxSortable | dxDraggable;
toData: any;
toItemData: any;
}) => void);
onDragMove?: ((e: {
cancel: boolean;
component: dxScheduler;
event: event;
fromComponent: dxSortable | dxDraggable;
fromData: any;
itemData: any;
itemElement: any;
toComponent: dxSortable | dxDraggable;
toData: any;
}) => void);
onDragStart?: ((e: {
cancel: boolean;
component: dxScheduler;
event: event;
fromData: any;
itemData: any;
itemElement: any;
}) => void);
onRemove?: ((e: {
component: dxScheduler;
event: event;
fromComponent: dxSortable | dxDraggable;
fromData: any;
itemData: any;
itemElement: any;
toComponent: dxSortable | dxDraggable;
}) => void);
scrollSensitivity?: number;
scrollSpeed?: number;
}>;
declare const AppointmentDragging: ((props: IAppointmentDraggingProps) => React.FunctionComponentElement<React.PropsWithChildren<{
autoScroll?: boolean | undefined;
data?: any | undefined;
group?: string | undefined;
onAdd?: ((e: {
component: dxScheduler;
event: event;
fromComponent: dxSortable | dxDraggable;
fromData: any;
itemData: any;
itemElement: any;
toComponent: dxSortable | dxDraggable;
toData: any;
}) => void) | undefined;
onDragEnd?: ((e: {
cancel: boolean;
component: dxScheduler;
event: event;
fromComponent: dxSortable | dxDraggable;
fromData: any;
itemData: any;
itemElement: any;
toComponent: dxSortable | dxDraggable;
toData: any;
toItemData: any;
}) => void) | undefined;
onDragMove?: ((e: {
cancel: boolean;
component: dxScheduler;
event: event;
fromComponent: dxSortable | dxDraggable;
fromData: any;
itemData: any;
itemElement: any;
toComponent: dxSortable | dxDraggable;
toData: any;
}) => void) | undefined;
onDragStart?: ((e: {
cancel: boolean;
component: dxScheduler;
event: event;
fromData: any;
itemData: any;
itemElement: any;
}) => void) | undefined;
onRemove?: ((e: {
component: dxScheduler;
event: event;
fromComponent: dxSortable | dxDraggable;
fromData: any;
itemData: any;
itemElement: any;
toComponent: dxSortable | dxDraggable;
}) => void) | undefined;
scrollSensitivity?: number | undefined;
scrollSpeed?: number | undefined;
} & {
children?: React.ReactNode;
} & {
elementDescriptor: import("./core/configuration/react/element").IElementDescriptor;
}>>) & NestedComponentMeta;
type IEditingProps = React.PropsWithChildren<{
allowAdding?: boolean;
allowDeleting?: boolean;
allowDragging?: boolean;
allowResizing?: boolean;
allowTimeZoneEditing?: boolean;
allowUpdating?: boolean;
}>;
declare const Editing: ((props: IEditingProps) => React.FunctionComponentElement<React.PropsWithChildren<{
allowAdding?: boolean | undefined;
allowDeleting?: boolean | undefined;
allowDragging?: boolean | undefined;
allowResizing?: boolean | undefined;
allowTimeZoneEditing?: boolean | undefined;
allowUpdating?: boolean | undefined;
} & {
children?: React.ReactNode;
} & {
elementDescriptor: import("./core/configuration/react/element").IElementDescriptor;
}>>) & NestedComponentMeta;
type IResourceProps = React.PropsWithChildren<{
allowMultiple?: boolean;
colorExpr?: string;
dataSource?: Array<any> | DataSource | DataSourceOptions | null | Store | string;
displayExpr?: ((resource: any) => string) | string;
fieldExpr?: string;
label?: string;
useColorAsDefault?: boolean;
valueExpr?: (() => void) | string;
}>;
declare const Resource: ((props: IResourceProps) => React.FunctionComponentElement<React.PropsWithChildren<{
allowMultiple?: boolean | undefined;
colorExpr?: string | undefined;
dataSource?: string | any[] | DataSource<any, any> | DataSourceOptions<any, any, any, any> | Store<any, any> | null | undefined;
displayExpr?: string | ((resource: any) => string) | undefined;
fieldExpr?: string | undefined;
label?: string | undefined;
useColorAsDefault?: boolean | undefined;
valueExpr?: string | (() => void) | undefined;
} & {
children?: React.ReactNode;
} & {
elementDescriptor: import("./core/configuration/react/element").IElementDescriptor;
}>>) & NestedComponentMeta;
type IScrollingProps = React.PropsWithChildren<{
mode?: ScrollMode;
}>;
declare const Scrolling: ((props: IScrollingProps) => React.FunctionComponentElement<React.PropsWithChildren<{
mode?: ScrollMode | undefined;
} & {
children?: React.ReactNode;
} & {
elementDescriptor: import("./core/configuration/react/element").IElementDescriptor;
}>>) & NestedComponentMeta;
type IViewProps = React.PropsWithChildren<{
agendaDuration?: number;
allDayPanelMode?: AllDayPanelMode;
appointmentCollectorTemplate?: ((data: {
appointmentCount: number;
isCompact: boolean;
}, collectorElement: any) => string | any) | template;
appointmentTemplate?: ((model: AppointmentTemplateData | {
appointmentData: Record<string, any>;
targetedAppointmentData: Record<string, any>;
}, itemIndex: number, contentElement: any) => string | any) | template;
appointmentTooltipTemplate?: ((model: AppointmentTooltipTemplateData | {
appointmentData: Record<string, any>;
targetedAppointmentData: Record<string, any>;
}, itemIndex: number, contentElement: any) => string | any) | template;
cellDuration?: number;
dataCellTemplate?: ((itemData: any, itemIndex: number, itemElement: any) => string | any) | template;
dateCellTemplate?: ((itemData: any, itemIndex: number, itemElement: any) => string | any) | template;
dropDownAppointmentTemplate?: ((itemData: any, itemIndex: number, contentElement: any) => string | any) | template;
endDayHour?: number;
firstDayOfWeek?: FirstDayOfWeek | undefined;
groupByDate?: boolean;
groupOrientation?: Orientation;
groups?: Array<string>;
intervalCount?: number;
maxAppointmentsPerCell?: CellAppointmentsLimit | number;
name?: string | undefined;
offset?: number;
resourceCellTemplate?: ((itemData: any, itemIndex: number, itemElement: any) => string | any) | template;
scrolling?: dxSchedulerScrolling;
startDate?: Date | number | string | undefined;
startDayHour?: number;
timeCellTemplate?: ((itemData: any, itemIndex: number, itemElement: any) => string | any) | template;
type?: undefined | ViewType;
appointmentCollectorRender?: (...params: any) => React.ReactNode;
appointmentCollectorComponent?: React.ComponentType<any>;
appointmentRender?: (...params: any) => React.ReactNode;
appointmentComponent?: React.ComponentType<any>;
appointmentTooltipRender?: (...params: any) => React.ReactNode;
appointmentTooltipComponent?: React.ComponentType<any>;
dataCellRender?: (...params: any) => React.ReactNode;
dataCellComponent?: React.ComponentType<any>;
dateCellRender?: (...params: any) => React.ReactNode;
dateCellComponent?: React.ComponentType<any>;
dropDownAppointmentRender?: (...params: any) => React.ReactNode;
dropDownAppointmentComponent?: React.ComponentType<any>;
resourceCellRender?: (...params: any) => React.ReactNode;
resourceCellComponent?: React.ComponentType<any>;
timeCellRender?: (...params: any) => React.ReactNode;
timeCellComponent?: React.ComponentType<any>;
}>;
declare const View: ((props: IViewProps) => React.FunctionComponentElement<React.PropsWithChildren<{
agendaDuration?: number | undefined;
allDayPanelMode?: AllDayPanelMode | undefined;
appointmentCollectorTemplate?: template | ((data: {
appointmentCount: number;
isCompact: boolean;
}, collectorElement: any) => string | any) | undefined;
appointmentTemplate?: template | ((model: AppointmentTemplateData | {
appointmentData: Record<string, any>;
targetedAppointmentData: Record<string, any>;
}, itemIndex: number, contentElement: any) => string | any) | undefined;
appointmentTooltipTemplate?: template | ((model: AppointmentTooltipTemplateData | {
appointmentData: Record<string, any>;
targetedAppointmentData: Record<string, any>;
}, itemIndex: number, contentElement: any) => string | any) | undefined;
cellDuration?: number | undefined;
dataCellTemplate?: template | ((itemData: any, itemIndex: number, itemElement: any) => string | any) | undefined;
dateCellTemplate?: template | ((itemData: any, itemIndex: number, itemElement: any) => string | any) | undefined;
dropDownAppointmentTemplate?: template | ((itemData: any, itemIndex: number, contentElement: any) => string | any) | undefined;
endDayHour?: number | undefined;
firstDayOfWeek?: FirstDayOfWeek | undefined;
groupByDate?: boolean | undefined;
groupOrientation?: Orientation | undefined;
groups?: string[] | undefined;
intervalCount?: number | undefined;
maxAppointmentsPerCell?: number | CellAppointmentsLimit | undefined;
name?: string | undefined;
offset?: number | undefined;
resourceCellTemplate?: template | ((itemData: any, itemIndex: number, itemElement: any) => string | any) | undefined;
scrolling?: dxSchedulerScrolling | undefined;
startDate?: Date | number | string | undefined;
startDayHour?: number | undefined;
timeCellTemplate?: template | ((itemData: any, itemIndex: number, itemElement: any) => string | any) | undefined;
type?: undefined | ViewType;
appointmentCollectorRender?: ((...params: any) => React.ReactNode) | undefined;
appointmentCollectorComponent?: React.ComponentType<any> | undefined;
appointmentRender?: ((...params: any) => React.ReactNode) | undefined;
appointmentComponent?: React.ComponentType<any> | undefined;
appointmentTooltipRender?: ((...params: any) => React.ReactNode) | undefined;
appointmentTooltipComponent?: React.ComponentType<any> | undefined;
dataCellRender?: ((...params: any) => React.ReactNode) | undefined;
dataCellComponent?: React.ComponentType<any> | undefined;
dateCellRender?: ((...params: any) => React.ReactNode) | undefined;
dateCellComponent?: React.ComponentType<any> | undefined;
dropDownAppointmentRender?: ((...params: any) => React.ReactNode) | undefined;
dropDownAppointmentComponent?: React.ComponentType<any> | undefined;
resourceCellRender?: ((...params: any) => React.ReactNode) | undefined;
resourceCellComponent?: React.ComponentType<any> | undefined;
timeCellRender?: ((...params: any) => React.ReactNode) | undefined;
timeCellComponent?: React.ComponentType<any> | undefined;
} & {
children?: React.ReactNode;
} & {
elementDescriptor: import("./core/configuration/react/element").IElementDescriptor;
}>>) & NestedComponentMeta;
export default Scheduler;
export { Scheduler, ISchedulerOptions, SchedulerRef, AppointmentDragging, IAppointmentDraggingProps, Editing, IEditingProps, Resource, IResourceProps, Scrolling, IScrollingProps, View, IViewProps };
import type * as SchedulerTypes from 'devextreme/ui/scheduler_types';
export { SchedulerTypes };