Daily Event Listing
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.
Daily Event Listing
In situations when users are interested in seeing a daily summary rather than an hour-by-hour layout of events use the eventDisplay: 'fill' property under the timeline configuration of the view option.
This is especially useful for spotting overloaded resources/days and helps in managing and creating efficient schedules.
Are you building UI for planning employee shifts? Check out this example →
Demo

Code
View code on GitHub
import {
CalendarNav,
CalendarNext,
CalendarPrev,
CalendarToday,
Eventcalendar,
Segmented,
SegmentedGroup,
setOptions ,
} from '@mobiscroll/react';
import { useCallback, useMemo, useState } from 'react';
setOptions({
locale: ,
theme: ' ',
themeVariant: ' '
});
function App() {
const [view, setView] = useState('month');
const [calView, setCalView] = useState({
timeline: {
type: 'month',
eventDisplay: 'fill',
},
});
const myEvents = useMemo(
() => [
{
start: '2026-10-21T08:00',
end: '2026-10-21T15:00',
title: 'Event 1',
resource: 1,
},
{
start: '2026-10-21T10:00',
end: '2026-10-21T13:00',
title: 'Event 2',
resource: 1,
},
{
start: '2026-10-22T07:00',
end: '2026-10-22T14:00',
title: 'Event 3',
resource: 1,
},
{
start: '2026-10-20T09:00',
end: '2026-10-20T15:00',
title: 'Event 4',
resource: 2,
},
{
start: '2026-10-23T07:00',
end: '2026-10-23T12:00',
title: 'Event 5',
resource: 2,
},
{
start: '2026-10-24T11:00',
end: '2026-10-24T16:00',
title: 'Event 6',
resource: 3,
},
{
start: '2026-10-19T08:00',
end: '2026-10-19T20:00',
title: 'Event 7',
resource: 4,
},
{
start: '2026-10-22T09:00',
end: '2026-10-22T15:00',
title: 'Event 8',
resource: 4,
},
{
start: '2026-10-22T13:00',
end: '2026-10-22T19:00',
title: 'Event 9',
resource: 5,
},
{
start: '2026-10-23T12:00',
end: '2026-10-23T20:00',
title: 'Event 10',
resource: 5,
},
{
start: '2026-10-24T18:00',
end: '2026-10-24T22:00',
title: 'Event 11',
resource: 5,
},
{
start: '2026-10-18T10:00',
end: '2026-10-18T16:00',
title: 'Event 12',
resource: 6,
},
{
start: '2026-10-19T15:00',
end: '2026-10-19T20:00',
title: 'Event 13',
resource: 6,
},
],
[],
);
const myResources = useMemo(
() => [
{
id: 1,
name: 'Resource A',
color: '#e20000',
},
{
id: 2,
name: 'Resource B',
color: '#60e81a',
},
{
id: 3,
name: 'Resource C',
color: '#3ba7ff',
},
{
id: 4,
name: 'Resource D',
color: '#e25dd2',
},
{
id: 5,
name: 'Resource E',
color: '#f1e920',
},
{
id: 6,
name: 'Resource F',
color: '#1ac38d',
},
],
[],
);
const changeView = useCallback((event) => {
let calView;
switch (event.target.value) {
case 'workweek':
calView = {
timeline: {
type: 'week',
eventDisplay: 'fill',
startDay: 1,
endDay: 5,
},
};
break;
case 'week':
calView = {
timeline: {
type: 'week',
eventDisplay: 'fill',
},
};
break;
case 'month':
default:
calView = {
timeline: {
type: 'month',
eventDisplay: 'fill',
},
};
break;
}
setView(event.target.value);
setCalView(calView);
}, []);
const renderMyHeader = useCallback(
() => (
<>
<CalendarNav className="md-event-listing-nav" />
<div className="md-event-listing-picker">
<SegmentedGroup value={view} onChange={changeView}>
<Segmented value="workweek">Work week</Segmented>
<Segmented value="week">Week</Segmented>
<Segmented value="month">Month</Segmented>
</SegmentedGroup>
</div>
<CalendarPrev className="md-event-listing-prev" />
<CalendarToday className="md-event-listing-today" />
<CalendarNext className="md-event-listing-next" />
</>
),
[changeView, view],
);
return (
<Eventcalendar
clickToCreate={ }
dragToCreate={ }
dragToMove={ }
dragToResize={ }
eventDelete={ }
view={calView}
data={myEvents}
resources={myResources}
renderHeader={renderMyHeader}
cssClass="md-event-listing"
/>
);
}
export default App;
import {
CalendarNav,
CalendarNext,
CalendarPrev,
CalendarToday,
Eventcalendar,
MbscCalendarEvent,
MbscEventcalendarView,
MbscResource,
Segmented,
SegmentedGroup,
setOptions ,
} from '@mobiscroll/react';
import { ChangeEvent, FC, useCallback, useMemo, useState } from 'react';
setOptions({
locale: ,
theme: ' ',
themeVariant: ' '
});
const App: FC = () => {
const [view, setView] = useState('month');
const [calView, setCalView] = useState<MbscEventcalendarView>({
timeline: {
type: 'month',
eventDisplay: 'fill',
},
});
const myEvents = useState<MbscCalendarEvent[]>(() => [
{
start: '2026-10-21T08:00',
end: '2026-10-21T15:00',
title: 'Event 1',
resource: 1,
},
{
start: '2026-10-21T10:00',
end: '2026-10-21T13:00',
title: 'Event 2',
resource: 1,
},
{
start: '2026-10-22T07:00',
end: '2026-10-22T14:00',
title: 'Event 3',
resource: 1,
},
{
start: '2026-10-20T09:00',
end: '2026-10-20T15:00',
title: 'Event 4',
resource: 2,
},
{
start: '2026-10-23T07:00',
end: '2026-10-23T12:00',
title: 'Event 5',
resource: 2,
},
{
start: '2026-10-24T11:00',
end: '2026-10-24T16:00',
title: 'Event 6',
resource: 3,
},
{
start: '2026-10-19T08:00',
end: '2026-10-19T20:00',
title: 'Event 7',
resource: 4,
},
{
start: '2026-10-22T09:00',
end: '2026-10-22T15:00',
title: 'Event 8',
resource: 4,
},
{
start: '2026-10-22T13:00',
end: '2026-10-22T19:00',
title: 'Event 9',
resource: 5,
},
{
start: '2026-10-23T12:00',
end: '2026-10-23T20:00',
title: 'Event 10',
resource: 5,
},
{
start: '2026-10-24T18:00',
end: '2026-10-24T22:00',
title: 'Event 11',
resource: 5,
},
{
start: '2026-10-18T10:00',
end: '2026-10-18T16:00',
title: 'Event 12',
resource: 6,
},
{
start: '2026-10-19T15:00',
end: '2026-10-19T20:00',
title: 'Event 13',
resource: 6,
},
]);
const myResources = useMemo<MbscResource[]>(
() => [
{
id: 1,
name: 'Resource A',
color: '#e20000',
},
{
id: 2,
name: 'Resource B',
color: '#60e81a',
},
{
id: 3,
name: 'Resource C',
color: '#3ba7ff',
},
{
id: 4,
name: 'Resource D',
color: '#e25dd2',
},
{
id: 5,
name: 'Resource E',
color: '#f1e920',
},
{
id: 6,
name: 'Resource F',
color: '#1ac38d',
},
],
[],
);
const changeView = useCallback((event: ChangeEvent<HTMLInputElement>) => {
let calView: MbscEventcalendarView;
switch (event.target.value) {
case 'workweek':
calView = {
timeline: {
type: 'week',
eventDisplay: 'fill',
startDay: 1,
endDay: 5,
},
};
break;
case 'week':
calView = {
timeline: {
type: 'week',
eventDisplay: 'fill',
},
};
break;
case 'month':
default:
calView = {
timeline: {
type: 'month',
eventDisplay: 'fill',
},
};
break;
}
setView(event.target.value);
setCalView(calView);
}, []);
const renderMyHeader = useCallback(
() => (
<>
<CalendarNav className="md-event-listing-nav" />
<div className="md-event-listing-picker">
<SegmentedGroup value={view} onChange={changeView}>
<Segmented value="workweek">Work week</Segmented>
<Segmented value="week">Week</Segmented>
<Segmented value="month">Month</Segmented>
</SegmentedGroup>
</div>
<CalendarPrev className="md-event-listing-prev" />
<CalendarToday className="md-event-listing-today" />
<CalendarNext className="md-event-listing-next" />
</>
),
[changeView, view],
);
return (
<Eventcalendar
clickToCreate={ }
dragToCreate={ }
dragToMove={ }
dragToResize={ }
eventDelete={ }
view={calView}
data={myEvents}
resources={myResources}
renderHeader={renderMyHeader}
cssClass="md-event-listing"
/>
);
};
export default App;
.md-event-listing-cont {
position: relative;
padding-left: 50px;
}
.md-event-listing-avatar {
position: absolute;
max-height: 50px;
max-width: 50px;
top: 21px;
-webkit-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
left: 20px;
}
.md-event-listing-name {
font-size: 16px;
}
.md-event-listing-title {
font-size: 12px;
margin-top: 5px;
}
.md-event-listing .mbsc-segmented {
max-width: 350px;
margin: 0 auto;
padding: 1px;
}
.md-event-listing-picker {
flex: 1 0 auto;
}
.md-event-listing-nav {
width: 200px;
}
/* material header order */
.mbsc-material.md-event-listing-prev {
order: 1;
}
.mbsc-material.md-event-listing-next {
order: 2;
}
.mbsc-material.md-event-listing-nav {
order: 3;
}
.mbsc-material .md-event-listing-picker {
order: 4;
}
.mbsc-material .md-event-listing-today {
order: 5;
}
/* windows header order */
.mbsc-windows.md-event-listing-nav {
order: 1;
}
.mbsc-windows.md-event-listing-prev {
order: 2;
}
.mbsc-windows.md-event-listing-next {
order: 3;
}
.mbsc-windows .md-event-listing-picker {
order: 4;
}
.mbsc-windows .md-event-listing-today {
order: 5;
}