Skip to content

Commit df43cc2

Browse files
refactor(calendar-web): use custom toolbar
1 parent 030ce57 commit df43cc2

File tree

1 file changed

+25
-19
lines changed

1 file changed

+25
-19
lines changed

packages/pluggableWidgets/calendar-web/src/utils/calendar-utils.ts

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
import * as dateFns from "date-fns";
12
import { Calendar, dateFnsLocalizer, ViewsProps } from "react-big-calendar";
23
import withDragAndDrop from "react-big-calendar/lib/addons/dragAndDrop";
4+
import { CalendarContainerProps } from "../../typings/CalendarProps";
5+
import { CustomToolbar } from "../components/Toolbar";
6+
37
import "react-big-calendar/lib/addons/dragAndDrop/styles.css";
48
import "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
1011
export 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+
4653
export 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

Comments
 (0)