Flexible Event Calendar In jQuery - evo-calendar

File Size: 375 KB
Views Total: 53381
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
Flexible Event Calendar In jQuery - evo-calendar

evo-calendar is a flexible event calendar plugin to display events in a responsive, modern-looking calendar interface.


  • Allows you to switch between months from the collapsible sidebar.
  • Shows events on the right panel.
  • Adds new events.
  • Multiple languages.
  • Custom date format.
  • Highlights today's date in the calendar.
  • Allows to display multiple events on the same day.
  • 4 addtional themes.

See It In Action:

How to use it:

1. Import the jQuery evo-calendar plugin's JavaScript and CSS files into the HTML document.

<!-- Core Stylesheet -->
<link rel="stylesheet" href="evo-calendar.css" />
<!-- Optional Themes -->
<link rel="stylesheet" href="evo-calendar.midnight-blue.css" />
<link rel="stylesheet" href="evo-calendar.orange-coral.css" />
<link rel="stylesheet" href="evo-calendar.royal-navy.css" />
<!-- JavaScript -->
<script src="jquery.min.js"></script>
<script src="evo-calendar.js"></script>

2. Create a container to hold the event calendar.

<div id="evoCalendar"></div>

3. Create events in an array of objects containing dates, event names and event types (event, holiday, birthday).

myEvents = [
    id: "required-id-1",
    name: "New Year", 
    date: "Wed Jan 01 2020 00:00:00 GMT-0800 (Pacific Standard Time)", 
    type: "holiday", 
    everyYear: true 
    id: "required-id-2",
    name: "Valentine's Day", 
    date: "Fri Feb 14 2020 00:00:00 GMT-0800 (Pacific Standard Time)", 
    type: "holiday", 
    everyYear: true,
    color: "#222"
    id: "required-id-3",
    name: "Custom Date", 
    badge: "08/03 - 08/05",
    date: ["August/03/2020", "August/05/2020"],
    description: "Description here"
    type: "event", 
  // more events here

4. Call the function to generate an event calendar on the page.

  calendarEvents: myEvents

5. Customize the date format.

  format: 'mm/dd/yyyy',
  titleFormat: 'MM yyyy',
  eventHeaderFormat: 'MM d, yyyy'

6. Localize the event calendar. Defaults to 'en'.

  language: 'en'
dates: {
  en: {
      days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
      daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
      daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
      months: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
      monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
      noEventForToday: "No event for today.. so take a rest! :)",
      noEventForThisDay: "No event for this day.. so take a rest! :)"
  es: {
      days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"],
      daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"],
      daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"],
      months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"],
      monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"],
      noEventForToday: "No hay evento para hoy.. ¡así que descanse! :)",
      noEventForThisDay: "Ningún evento para este día.. ¡así que descanse! :)"
  de: {
      days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"],
      daysShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
      daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
      months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"],
      monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"],
      noEventForToday: "Keine Veranstaltung für heute.. also ruhen Sie sich aus! :)",
      noEventForThisDay: "Keine Veranstaltung für diesen Tag.. also ruhen Sie sich aus! :)"
  pt: {
      days: ["Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado"],
      daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"],
      daysMin: ["Do", "2a", "3a", "4a", "5a", "6a", "Sa"],
      months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"],
      monthsShort: ["Jan", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"],
      noEventForToday: "Nenhum evento para hoje.. então descanse! :)",
      noEventForThisDay: "Nenhum evento para este dia.. então descanse! :)"

7. Determine whether to highlight today's date. Defaults to false.

  todayHighlight: false

8. Enable/disable the sidebar & event panel toggler. Defaults to true.

  sidebarToggler: true,
  sidebarDisplayDefault: true,
  eventListToggler: true,
  eventDisplayDefault: true,

9. Determine the first day of the week. Defaults to 0 (Sunday).

  firstDayOfWeek: 1 // Monday

10. Determine an array of dates to be disabled. Defaults to 'null'.

  disabledDate: ["02/17/2020", "02/21/2020"]

11. Execute a function after a date is selected.

  onSelectDate: function() {
    // console.log('onSelectDate!')

12. Add a new event to the calendar.

$("#evoCalendar").evoCalendar('addCalendarEvent', [
   name: "NEW EVENT",
   date: "February/16/2020",
   type: "birthday",
   everyYear: true

13. Determine the theme of the calendar.

  • Midnight Blue
  • Royal Navy
  • Orange Coral
  theme: 'Orange Coral'

14. API Methods.

// set theme
$("#evoCalendar").evoCalendar('setTheme', themeName);

// toggle sidebar
$("#evoCalendar").evoCalendar('toggleSidebar', true/false);

// toggle event list
$("#evoCalendar").evoCalendar('toggleEventList', true/false);

// get the selected date

// get active events

// select a year
$("#evoCalendar").evoCalendar('selectYear', yearNumber);

// select a month
$("#evoCalendar").evoCalendar('selectMonth', monthNumber);

// select a date
$("#evoCalendar").evoCalendar('selectDate', dateNumber);

// add events
$("#evoCalendar").evoCalendar('addCalendarEvent', [{
  id: 'Event ID',
  name: "Event Name",
  date: "Date Here",
  type: "Event Type",
  everyYear: true

// remove events by ID
$("#evoCalendar").evoCalendar('removeCalendarEvent', eventID);

// destroy the calendar

15. Event handlers.

  // options here
.on('selectDate', function(newDate, oldDate) {
  // do something
.on('selectMonth', function(activeMonth, monthIndex) {
  // do something
.on('selectYear', function(activeYear) {
  // do something
.on('selectEvent', function(activeEvent) {
  // do something
.on('destroy', function(calendar) {
  // do something



  • Optimized code, fix mobile behavior


  • Added selectYear event


  • [UPDATE] Dutch language


  • Fix: Merge conflict


  • Added event's description
  • Added event color customization
  • Added event badge
  • Added 'selectMonth' event


  • Minor CSS update
  • Updated Theme CSS


  • Allows to add date range, e.g. [start_date, end_date]


  • Localizing strings for not event on this day and on today


  • JS Updated
  • Add Portuguese Translation


  • Adjust firstDayOfWeek setting (from string to number).


  • Optimized & Fixed

v1.0 (2020-04-25)

  • Added themes, methods, and events.


  • Fix new settings


  • Added 'firstDayOfWeek' option.

This awesome jQuery plugin is developed by edlynvillegas. For more Advanced Usages, please check the demo page or visit the official website.