1+ import * as dateFns from "date-fns" ;
12import { Calendar , dateFnsLocalizer , ViewsProps } from "react-big-calendar" ;
23import withDragAndDrop from "react-big-calendar/lib/addons/dragAndDrop" ;
4+ import { CalendarContainerProps } from "../../typings/CalendarProps" ;
5+ import { CustomToolbar } from "../components/Toolbar" ;
6+
37import "react-big-calendar/lib/addons/dragAndDrop/styles.css" ;
48import "react-big-calendar/lib/css/react-big-calendar.css" ;
59
6- import * as dateFns from "date-fns" ;
7- import { CalendarContainerProps } from "../../typings/CalendarProps" ;
8-
910// Define the event shape
1011export interface CalEvent {
1112 title : string ;
@@ -43,6 +44,12 @@ function getViewRange(view: string, date: Date) {
4344 }
4445}
4546
47+ export function eventPropGetter ( event : CalEvent ) {
48+ return {
49+ style : event . color ? { backgroundColor : event . color } : undefined
50+ } ;
51+ }
52+
4653export function extractCalendarProps ( props : CalendarContainerProps ) {
4754 const items = props . databaseDataSource ?. items ?? [ ] ;
4855 const events : CalEvent [ ] = items . map ( item => {
@@ -60,11 +67,7 @@ export function extractCalendarProps(props: CalendarContainerProps) {
6067 } ) ;
6168
6269 const viewsOption : ViewsProps < CalEvent , object > =
63- props . view === "standard" ? [ "month" , "week" , "day" ] : [ "month" , "week" , "work_week" , "day" , "agenda" ] ;
64-
65- const eventPropGetter = ( event : CalEvent ) => ( {
66- style : event . color ? { backgroundColor : event . color } : undefined
67- } ) ;
70+ props . view === "standard" ? [ "day" , "week" , "month" ] : [ "month" , "week" , "work_week" , "day" , "agenda" ] ;
6871
6972 const handleSelectEvent = ( event : CalEvent ) => {
7073 if ( props . onClickEvent ?. canExecute ) {
@@ -110,21 +113,24 @@ export function extractCalendarProps(props: CalendarContainerProps) {
110113 } ;
111114
112115 return {
113- localizer,
114- events,
116+ components : {
117+ toolbar : CustomToolbar
118+ } ,
115119 defaultView : props . defaultView ,
116- startAccessor : ( event : unknown ) => ( event as CalEvent ) . start ,
117- endAccessor : ( event : unknown ) => ( event as CalEvent ) . end ,
118- selectable : props . enableCreate ,
120+ events,
121+ localizer,
119122 resizable : props . editable !== "never" ,
120- onSelectEvent : handleSelectEvent ,
121- onSelectSlot : handleSelectSlot ,
123+ selectable : props . enableCreate ,
124+ views : viewsOption ,
125+ allDayAccessor : ( event : CalEvent ) => event . allDay ,
126+ endAccessor : ( event : CalEvent ) => event . end ,
127+ eventPropGetter,
122128 onEventDrop : handleEventDropOrResize ,
123129 onEventResize : handleEventDropOrResize ,
124130 onNavigate : handleRangeChange ,
125- views : viewsOption ,
126- titleAccessor : ( event : unknown ) => ( event as CalEvent ) . title ,
127- allDayAccessor : ( event : unknown ) => ( event as CalEvent ) . allDay ,
128- eventPropGetter
131+ onSelectEvent : handleSelectEvent ,
132+ onSelectSlot : handleSelectSlot ,
133+ startAccessor : ( event : CalEvent ) => event . start ,
134+ titleAccessor : ( event : CalEvent ) => event . title
129135 } ;
130136}
0 commit comments