Full Calendar
Bootstrap full calendar plugin
Note: We are transitioning MDB4 to a legacy version and focusing on developing MDB5.
While we'll continue to support for the transition period, we encourage you to migrate to
MDB5. We're offering a huge discount on MDB5 PRO to help with your transition,
enabling you to leverage the full potential of the latest version. You can find more information here.
upgrade with discount
Bootstrap full calendar plugin is an extension that allows you to create calendar functionality.
Thanks to this plugin you will be able to easily create new events, manage current events, move existing events between other days, and integrate with your Google Calendar.
To start working with full calendar plugin see "Getting Started" tab on this page.
Basic Example
A few predefined events allowing you to see how the plugin looks like.
<div id="calendar"></div>
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay,listWeek'
},
defaultDate: '2018-11-16',
navLinks: true,
eventLimit: true,
events: [{
title: 'Front-End Conference',
start: '2018-11-16',
end: '2018-11-18'
},
{
title: 'Hair stylist with Mike',
start: '2018-11-20',
allDay: true
},
{
title: 'Car mechanic',
start: '2018-11-14T09:00:00',
end: '2018-11-14T11:00:00'
},
{
title: 'Dinner with Mike',
start: '2018-11-21T19:00:00',
end: '2018-11-21T22:00:00'
},
{
title: 'Chillout',
start: '2018-11-15',
allDay: true
},
{
title: 'Vacation',
start: '2018-11-23',
end: '2018-11-29'
},
]
});
Dynamically added events
Find out how easy it is to add new events with the Full Calendar plugin! One button, and the event is already in your calendar.
<div id="calendar"></div>
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'addEventButton',
right: 'month,agendaWeek,agendaDay,listWeek'
},
defaultDate: '2018-11-16',
navLinks: true,
editable: true,
eventLimit: true,
events: [{
title: 'Simple static event',
start: '2018-11-16',
description: 'Super cool event'
},
],
customButtons: {
addEventButton: {
text: 'Add new event',
click: function () {
var dateStr = prompt('Enter date in YYYY-MM-DD format');
var date = moment(dateStr);
if (date.isValid()) {
$('#calendar').fullCalendar('renderEvent', {
title: 'Dynamic event',
start: date,
allDay: true
});
} else {
alert('Invalid Date');
}
}
}
},
dayClick: function (date, jsEvent, view) {
var date = moment(date);
if (date.isValid()) {
$('#calendar').fullCalendar('renderEvent', {
title: 'Dynamic event from date click',
start: date,
allDay: true
});
} else {
alert('Invalid');
}
},
});
Events with tooltips
You can easily add tooltip to an event in the calendar. This way you can easily remember what this event is all about.
<div id="calendar"></div>
$('#calendar').fullCalendar({
defaultView: 'month',
defaultDate: '2018-11-12',
eventRender: function (eventObj, $el) {
$el.popover({
title: eventObj.title,
content: eventObj.description,
trigger: 'hover',
placement: 'top',
container: 'body'
});
},
events: [{
title: 'All Day Event',
description: 'description for All Day Event',
start: '2018-11-01'
},
{
title: 'Long Event',
description: 'description for Long Event',
start: '2018-10-07',
end: '2018-11-10'
},
{
id: 999,
title: 'Repeating Event',
description: 'description for Repeating Event',
start: '2018-11-09T16:00:00'
},
{
id: 999,
title: 'Repeating Event',
description: 'description for Repeating Event',
start: '2018-11-16T16:00:00'
},
{
title: 'Conference',
description: 'description for Conference',
start: '2018-11-11',
end: '2018-11-13'
},
{
title: 'Meeting',
description: 'description for Meeting',
start: '2018-11-12T10:30:00',
end: '2018-11-12T12:30:00'
},
{
title: 'Lunch',
description: 'description for Lunch',
start: '2018-11-12T12:00:00'
},
{
title: 'Meeting',
description: 'description for Meeting',
start: '2018-11-12T14:30:00'
},
{
title: 'Birthday Party',
description: 'description for Birthday Party',
start: '2018-11-13T07:00:00'
},
{
title: 'Click for Google',
description: 'description for Click for Google',
url: 'http://google.com/',
start: '2018-11-28'
}
]
});
Movable events
Didn't you do something today? Set it aside for tomorrow! Full Calendar allows you to move events between other days.
<div id="calendar"></div>
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'title',
right: 'month,agendaWeek,agendaDay,listWeek'
},
defaultDate: '2018-11-16',
navLinks: true,
editable: true,
eventLimit: true,
events: [{
title: 'All Day Event',
start: '2018-11-01'
},
{
title: 'Long Event',
start: '2018-11-07',
end: '2018-11-10'
},
{
id: 999,
title: 'Repeating Event',
start: '2018-11-09T16:00:00'
},
{
id: 999,
title: 'Repeating Event',
start: '2018-11-16T16:00:00'
},
{
title: 'Conference',
start: '2018-11-11',
end: '2018-11-13'
},
{
title: 'Meeting',
start: '2018-11-12T10:30:00',
end: '2018-11-12T12:30:00'
},
{
title: 'Lunch',
start: '2018-11-12T12:00:00'
},
{
title: 'Meeting',
start: '2018-11-12T14:30:00'
},
{
title: 'Happy Hour',
start: '2018-11-12T17:30:00'
},
{
title: 'Dinner',
start: '2018-11-12T20:00:00'
},
{
title: 'Birthday Party',
start: '2018-11-13T07:00:00'
},
{
title: 'Click for Google',
url: 'https://google.com/',
start: '2018-11-28'
}
]
});
Long dynamic events
Select few days and create an event with one click! Just like in Google Calendar.
<div id="calendar"></div>
$('#calendar').fullCalendar({
header: {
left: 'prev,next today',
center: 'addEventButton',
right: 'month,agendaWeek,agendaDay,listWeek'
},
defaultDate: '2018-11-16',
navLinks: true,
editable: true,
eventLimit: true,
events: [{
title: 'Simple static event',
start: '2018-11-16',
description: 'Super cool event'
},
],
customButtons: {
addEventButton: {
text: 'Add new event',
click: function () {
var dateStr = prompt('Enter date in YYYY-MM-DD format');
var date = moment(dateStr);
if (date.isValid()) {
$('#calendar').fullCalendar('renderEvent', {
title: 'Dynamic event',
start: date,
allDay: true
});
} else {
alert('Invalid Date');
}
}
}
},
dayClick: function (date, jsEvent, view) {
var date = moment(date);
if (date.isValid()) {
$('#calendar').fullCalendar('renderEvent', {
title: 'Dynamic event from date click',
start: date,
allDay: true
});
} else {
alert('Invalid');
}
},
});
Full Calendar options list
Below options are available to use in Full Calendar.
Name | Type | Default | Description | Available values | Example |
---|---|---|---|---|---|
header |
object | left: 'title', center: ' ', right: 'today prev, next' | Defines the buttons and title at the top of the calendar. | title, prev, next, prevYear, nextYear, today |
header: {left: 'title', center: ' ', right: 'today prev, next' } |
footer |
object | false | Defines the controls at the bottom of the calendar. | title, prev, next, prevYear, nextYear, today |
footer: {left: 'title', center: ' ', right: 'today prev, next' } |
titleFormat |
object | - | Determines the text that will be displayed in the header’s title. | - |
titleFormat: 'MM/YYYY' |
buttonText |
object | buttonText: {today: 'today', month: 'month, week: 'week', day: 'day', list: 'list'} | Defines the buttons and title at the top of the calendar. | - |
buttonText: {today: 'today', month: 'month, week: 'week', day: 'day', list: 'list'} |
buttonIcons |
object | prev: 'left-single-arrow', next: 'right-single-arrow', prevYear: 'left-double-arrow', nextYear: 'right-double-arrow' | Icons that will be displayed in buttons of the header/footer. | 'left-single-arrow', 'right-single-arrow', 'left-double-arrow', 'right-double-arrow' |
buttonIcons: {next: 'right-single-arrow', prevYear: 'left-double-arrow', nextYear: 'right-double-arrow'} |
customButtons |
object | - | Defines custom buttons that can be used in the header/footer. Specify a hash of custom buttons. Then reference them from the header setting. | text, click, icon, themeIcon, bootstrapGlyphicon |
customButtons: { myCustomButton: { text: 'Custom', click: function() { alert('Clicked the custom button'); } } }, header: {left: 'myCustomButton', center: ' ', right: ' ' } |
Below events are available to use in Full Calendar.
Name | Type | Description | Example |
---|---|---|---|
eventClick |
any | The event is fired when user has clicked the event. | eventClick: function(calEvent, jsEvent, view) { console.log('click', calEvent.title); } |
eventMouseover |
any | The event is fired when user has mouseover the event. | eventMouseover: function(calEvent, jsEvent, view) { console.log('mouseover', calEvent); } |
eventMouseout |
any | The event is fired when user has mouseout the event. | eventMouseout: function(calEvent, jsEvent, view) { console.log('mouseout', calEvent); } |
Full Calendar - getting started : download & setup
Download
This plugin requires a purchase.
Buy full calendar plugin
Installation tutorial
Note: The video below shows a different plugin, but it does not matter. The installation process is the same for all plugins.