import { BoxProps, DataAttributes, ElementProps, Factory, MantineRadius, ScrollAreaProps, StylesApiProps } from '@mantine/core'; import { ScheduleLabelsOverride } from '../../labels'; import { DateLabelFormat, DateStringValue, DateTimeStringValue, DayOfWeek, ScheduleEventData, ScheduleMode, ScheduleResourceData, ScheduleResourceGroup, ScheduleViewLevel } from '../../types'; import { MoreEventsProps, MoreEventsStylesNames } from '../MoreEvents/MoreEvents'; import { RenderEvent, RenderEventBody } from '../ScheduleEvent/ScheduleEvent'; import { CombinedScheduleHeaderStylesNames } from '../ScheduleHeader/ScheduleHeader'; import { ViewSelectProps } from '../ScheduleHeader/ViewSelect/ViewSelect'; export type ResourcesWeekViewStylesNames = 'resourcesWeekView' | 'resourcesWeekViewRoot' | 'resourcesWeekViewInner' | 'resourcesWeekViewHeaderRows' | 'resourcesWeekViewHeaderContent' | 'resourcesWeekViewDayLabelsRow' | 'resourcesWeekViewDayLabel' | 'resourcesWeekViewTimeLabelsRow' | 'resourcesWeekViewScrollArea' | 'resourcesWeekViewCorner' | 'resourcesWeekViewTimeLabel' | 'resourcesWeekViewResourceLabel' | 'resourcesWeekViewRow' | 'resourcesWeekViewRowSlot' | 'resourcesWeekViewRowSlots' | 'resourcesWeekViewBackgroundEvent' | 'resourcesWeekViewAllDayEvent' | 'resourcesWeekViewCurrentTimeIndicator' | 'resourcesWeekViewCurrentTimeIndicatorLine' | 'resourcesWeekViewCurrentTimeIndicatorThumb' | 'resourcesWeekViewCurrentTimeIndicatorTimeBubble' | 'resourcesWeekViewEventWrapper' | 'resourcesWeekViewResizeHandle' | 'resourcesWeekViewGroupColumn' | 'resourcesWeekViewGroupColumnEmpty' | MoreEventsStylesNames | CombinedScheduleHeaderStylesNames; export type ResourcesWeekViewCssVariables = { resourcesWeekView: '--resources-week-view-radius' | '--resources-week-view-slot-width' | '--resources-week-view-row-height' | '--resources-week-view-group-label-width'; }; export interface ResourcesWeekViewProps extends BoxProps, StylesApiProps, ElementProps<'div'> { __staticSelector?: string; date: Date | string; onDateChange?: (value: DateStringValue) => void; resources: ScheduleResourceData[]; startTime?: string; endTime?: string; intervalMinutes?: number; slotLabelFormat?: DateLabelFormat; radius?: MantineRadius; /** Date and time to scroll to on initial render, in `YYYY-MM-DD HH:mm:ss` format */ startScrollDateTime?: string; scrollAreaProps?: Partial & DataAttributes; locale?: string; withCurrentTimeIndicator?: boolean; withCurrentTimeBubble?: boolean; withHeader?: boolean; onViewChange?: (view: ScheduleViewLevel) => void; previousControlProps?: React.ComponentProps<'button'> & DataAttributes; nextControlProps?: React.ComponentProps<'button'> & DataAttributes; todayControlProps?: React.ComponentProps<'button'> & DataAttributes; viewSelectProps?: Partial & DataAttributes; weekLabelFormat?: DateLabelFormat; renderWeekLabel?: (params: { weekStart: DateStringValue; weekEnd: DateStringValue; }) => React.ReactNode; events?: ScheduleEventData[]; slotWidth?: React.CSSProperties['width']; rowHeight?: React.CSSProperties['height']; labels?: ScheduleLabelsOverride; highlightBusinessHours?: boolean; businessHours?: [string, string]; renderEventBody?: RenderEventBody; renderEvent?: RenderEvent; renderResourceLabel?: (resource: ScheduleResourceData) => React.ReactNode; /** List of resource groups to display as a column to the left of resource labels */ groups?: ScheduleResourceGroup[]; /** Function to customize group label rendering */ renderGroupLabel?: (group: ScheduleResourceGroup) => React.ReactNode; /** Width of the group label column @default 80px */ groupLabelWidth?: React.CSSProperties['width']; withEventsDragAndDrop?: boolean; onEventDrop?: (data: { eventId: string | number; newStart: DateTimeStringValue; newEnd: DateTimeStringValue; event: ScheduleEventData; resourceId?: string | number; }) => void; canDragEvent?: (event: ScheduleEventData) => boolean; onEventDragStart?: (event: ScheduleEventData) => void; onEventDragEnd?: () => void; onTimeSlotClick?: (data: { slotStart: DateTimeStringValue; slotEnd: DateTimeStringValue; nativeEvent: React.MouseEvent; resourceId?: string | number; }) => void; onEventClick?: (event: ScheduleEventData, e: React.MouseEvent) => void; withDragSlotSelect?: boolean; onSlotDragEnd?: (data: { rangeStart: DateTimeStringValue; rangeEnd: DateTimeStringValue; resourceId?: string | number; }) => void; mode?: ScheduleMode; onExternalEventDrop?: (data: { dataTransfer: DataTransfer; dropDateTime: DateTimeStringValue; resourceId?: string | number; }) => void; recurrenceExpansionLimit?: number; /** Maximum number of events visible per time slot before "+more" indicator shows, minimum value is 1 @default 2 */ maxEventsPerTimeSlot?: number; /** Props passed down to `MoreEvents` component */ moreEventsProps?: Partial; firstDayOfWeek?: DayOfWeek; weekendDays?: DayOfWeek[]; withWeekendDays?: boolean; weekdayFormat?: DateLabelFormat; highlightToday?: boolean; } export type ResourcesWeekViewFactory = Factory<{ props: ResourcesWeekViewProps; ref: HTMLDivElement; stylesNames: ResourcesWeekViewStylesNames; vars: ResourcesWeekViewCssVariables; }>; export declare const ResourcesWeekView: import("@mantine/core").MantineComponent<{ props: ResourcesWeekViewProps; ref: HTMLDivElement; stylesNames: ResourcesWeekViewStylesNames; vars: ResourcesWeekViewCssVariables; }>;