Switch Day, Week and Month Views
Usage
theme="ios" You can turn auto theming on and let it decide based on the platform.
Usage
themeVariant="light" You can turn auto dark mode on based on system settings.
Usage
clickToCreate={true}
// click to create is on dragToCreate={true}
// drag to create is on dragToMove={true}
// reordering is on dragToResize={true}
// resizing is on eventDelete={true}
// deleting is on Fine-tune drag & drop with these options, which are false by default.
Usage
locale={localeEn} Selecting the locale loads the localized settings and the translated UI text.
Switch Day, Week and Month Views
Dynamically switch views within one calendar instance. Use a UI control to let users do the switching or do it programmatically. This example features a segmented component inside the header, but the live option changes can be invoked from anywhere.
Switch between a month view with a monthly agenda, a week view with a weekly agenda and daily event list.
Thanks to property binding and all option changes are live and propagate accordingly.
Demo

Code
View code on GitHub
import {
CalendarNav,
CalendarNext,
CalendarPrev,
Eventcalendar,
getJson,
Segmented,
SegmentedGroup,
setOptions ,
} from '@mobiscroll/react';
import { useCallback, useEffect, useState } from 'react';
setOptions({
locale: ,
theme: ' ',
themeVariant: ' '
});
function App() {
const [view, setView] = useState('month');
const [myEvents, setEvents] = useState([]);
const [calView, setCalView] = useState({
calendar: { type: 'month' },
agenda: { type: 'month' },
});
const changeView = useCallback((event) => {
let view;
switch (event.target.value) {
case 'month':
view = {
calendar: { type: 'month' },
agenda: { type: 'month' },
};
break;
case 'week':
view = {
calendar: { type: 'week' },
agenda: { type: 'week' },
};
break;
case 'day':
view = {
agenda: { type: 'day' },
};
break;
}
setView(event.target.value);
setCalView(view);
}, []);
const customWithNavButtons = useCallback(
() => (
<>
<CalendarNav className="cal-header-nav" />
<div className="mbsc-flex mbsc-flex-1-0 mbsc-justify-content-center">
<SegmentedGroup value={view} onChange={changeView}>
<Segmented value="month" icon="material-event-note" />
<Segmented value="week" icon="material-date-range" />
<Segmented value="day" icon="material-view-day" />
</SegmentedGroup>
</div>
<CalendarPrev className="cal-header-prev" />
<CalendarNext className="cal-header-next" />
</>
),
[changeView, view],
);
useEffect(() => {
getJson(
'https://trial.mobiscroll.com/events/?vers=5',
(events) => {
setEvents(events);
},
'jsonp',
);
}, []);
return (
<div className="md-switching-view-cont">
<Eventcalendar
clickToCreate={ }
dragToCreate={ }
dragToMove={ }
dragToResize={ }
eventDelete={ }
renderHeader={customWithNavButtons}
view={calView}
data={myEvents}
/>
</div>
);
}
export default App;
import {
CalendarNav,
CalendarNext,
CalendarPrev,
Eventcalendar,
getJson,
MbscCalendarEvent,
MbscEventcalendarView,
Segmented,
SegmentedGroup,
setOptions ,
} from '@mobiscroll/react';
import { ChangeEvent, FC, useCallback, useEffect, useState } from 'react';
setOptions({
locale: ,
theme: ' ',
themeVariant: ' '
});
const App: FC = () => {
const [view, setView] = useState('month');
const [myEvents, setEvents] = useState<MbscCalendarEvent[]>([]);
const [calView, setCalView] = useState<MbscEventcalendarView>({
calendar: { type: 'month' },
agenda: { type: 'month' },
});
const changeView = useCallback((event: ChangeEvent<HTMLInputElement>) => {
let view = {};
switch (event.target.value) {
case 'month':
view = {
calendar: { type: 'month' },
agenda: { type: 'month' },
};
break;
case 'week':
view = {
calendar: { type: 'week' },
agenda: { type: 'week' },
};
break;
case 'day':
view = {
agenda: { type: 'day' },
};
break;
}
setView(event.target.value);
setCalView(view);
}, []);
const customWithNavButtons = useCallback(
() => (
<>
<CalendarNav className="cal-header-nav" />
<div className="mbsc-flex mbsc-flex-1-0 mbsc-justify-content-center">
<SegmentedGroup value={view} onChange={changeView}>
<Segmented value="month" icon="material-event-note" />
<Segmented value="week" icon="material-date-range" />
<Segmented value="day" icon="material-view-day" />
</SegmentedGroup>
</div>
<CalendarPrev className="cal-header-prev" />
<CalendarNext className="cal-header-next" />
</>
),
[changeView, view],
);
useEffect(() => {
getJson(
'https://trial.mobiscroll.com/events/?vers=5',
(events: MbscCalendarEvent[]) => {
setEvents(events);
},
'jsonp',
);
}, []);
return (
<div className="md-switching-view-cont">
<Eventcalendar
clickToCreate={ }
dragToCreate={ }
dragToMove={ }
dragToResize={ }
eventDelete={ }
renderHeader={customWithNavButtons}
view={calView}
data={myEvents}
/>
</div>
);
};
export default App;
.md-switching-view-cont {
height: 100%;
}
.md-switching-view-cont .mbsc-segmented {
margin: 0;
}
.md-switching-view-cont .mbsc-segmented.mbsc-material,
.md-switching-view-cont .mbsc-segmented.mbsc-windows {
padding: 0;
}
.md-switching-view-cont .mbsc-segmented .mbsc-segmented-button {
padding: 0 1px;
}
.md-switching-view-cont .mbsc-segmented .mbsc-icon {
font-size: 20px;
}
.md-switching-view-cont .mbsc-segmented-button.mbsc-windows {
border: 0;
}
.cal-header-picker {
-webkit-flex: 1 0 auto;
-moz-box-flex: 1;
-ms-flex: 1 0 auto;
flex: 1 0 auto;
display: -webkit-flex;
display: -moz-box;
display: -ms-flexbox;
display: flex;
-webkit-justify-content: center;
-moz-box-pack: center;
-ms-flex-pack: center;
justify-content: center;
}
.cal-header-nav {
width: 165px;
}
.cal-header-nav .mbsc-calendar-title.mbsc-material {
font-size: 16px;
}