Event Calendar for JQuery

Other product features to explore

Calendar view

The calendar view supports everything from single to multiple week views all the way to month grids with various ways to render events.
The three views - scheduler, calendar, agenda - can be combined to create the perfect user experience on mobile, desktop and everything in-between.

The capabilities like recurring events, all-day, multi-day events, responsiveness are supported by all three views.

As part of Event calendar and scheduler it can be picked up with the Framework and Complete licenses or with the component license.

Interested in the beta and
want to give it a try?
Back to v4

jQuery Calendar Calendar for jQuery and jQuery Mobile

Calendar - Mobile month view

Change demo
Mobile month view
Get started with this example

Use the event calendar for mobile, desktop and everything in-between. The content perfectly fills the parent container or the mobile screen in full width. You can chooose to render an agenda below the calendar broken up into days ordered chronologically. All of this is configured in the view option.

You can use the calendar and agenda together or separately. For more ways to use the agenda learn about how to configure it.

Interested to see how the event calendar looks on largers screens with labels?  Check out the next demo →

Calendar - Desktop month view

Change demo
Desktop month view
Get started with this example

Desktops or larger screens provide more space, which means you can use not just the horizontal but vertical space as well. Horrizontally the calendar grows to fill the full width of the parent container while the height can be adjusted through the height option.

The number of visible labels are determined by the available space and the ones that don't fit will be shown in a popover. To save vertical space you can show all events in a popover.

Interested to see how the event calendar looks on smaller screens?  Check out the previous demo →

Calendar - Responsive

Change demo

The event calendar is fully responsive. It adapts to the available space and fills the screen to look good everywhere. While the you don't have to worry about the width the height can be manually adjusted with the height option.

Use the responsive setting to configure how the calendar behaves on different sized screens. The responsive setting is equipped with five breakpoints - xsmall (up to 575px), small (up to 767px), medium (up to 991px), large (up to 1199px), xlarge (from 1200px). Custom breakpoints can be added if necessary: my-custom-breakpoint: { breakpoint: 600 } (from 600px up to the next breakpoint).

Viewport
responsive: {
    xsmall: {
        view: {
            calendar: {
                type: 'week'
            },
            agenda: {
                type: 'day'
            }
        }
    },
    custom: { // Custom breakpoint
        breakpoint: 600,
        view: {
            calendar: {
                labels: true
            }
        }
    }

}

Calendar - Variable weeks

Change demo

The calendar view supports variable weeks. Save space by only displaying one or two weeks or go for a full month where it makes sense. Use the weeks setting that expects a number of rows. The default is six weeks, but feel free to play around.

Calendar - Switching views

Change demo

Dynamically switch views within one calendar instance. Use a UI control to let users do the switching or do it programatically.

The example features a month view with full event schedule, a week view with a weekly schedule and daily event list. Use the setOptions method to dynamically change the settings.

Interested in building more complex views?  See how to synchronize a calendar and a separate event list →

Calendar - Marked, colored & labels

Change demo
Marked, colored & labels
Get started with this example

Besides passing the events to the calendar you can mark days with colored dots, add labels or completely color the background of the days using the marked, colors and labels options. This offers means to add more information to the calendar that could be valuable to users. While you can use the colors along with marked and labels, the latter two are mutually exclusive because they get rendered in the same place on the UI.

You can add them as exact dates, ranges or specify recurring rules. The recurring object can be set the same way as for the events.

Use the onPageLoading lifecycle event to load the data runtime. You can learn about lifecycle events and places where to drop logic to customize the experience.

Want to show event data and use multiple labels?  Show the events as labels →

Calendar - Events as labels

Change demo

Events can be displayed in a couple of different ways. Most of the time showing the event data inside and across the calendar cells is the way to go. When configuring the calendar object, you can set labels: true. All of this happens under the view option.

The number of visible labels are determined by the available space and the ones that don't fit will be shown in a popover. To save vertical space you can show all events in a popover.

Rather show events in a pop-over?  Take a look at the next example →

Calendar - Events in popover

Change demo
Events in popover
Get started with this example

Besides displaying events as labels, you can have them show up in a pop-over. Set it up though the calendar: {popover: true} object inside the view option. Using the popover setting saves vertical space and provides a subtle cue to the user that there are events. A small dot will apear in day cells with events or if calendar: {count: true} is set, an event count is displayed.

The same popover is rendered when events are displayed as labels and not all fit vertically in the calendar day cells.

Calendar - Date formats

Change demo
Date formats

Understanding how to work with dates inside the event calendar is essential. You can pass to the data, marked, colors and labels in four different formats. The event calendar can work with Javascript date objects, ISO strings and Moment.js objects.

JS date object
start: new Date(2020, 4, 19, 10, 45),
end: new Date(2020, 4, 19, 11, 45)
ISO date string
start: '2020-05-20T12:30:00',
end: '2020-05-20T13:00:00'
Moment.js object
start: moment([2020, 4, 21, 11]),
end: moment([2020, 4, 21, 14])

Calendar - Event data structure

Change demo
Event data structure

The event data structure for the calendar is straightforward with a couple of base properties that the component understands and uses to render the UI. Besides the base properties you can add any custom property, like location, description ...

  • id - A unique ID for the event. If not specified a unique id will be generated
  • title - Defines the event text. This can be plaintext or HTML
  • color - Defines the event color
  • start - Sets the start date and time for the event. It can be a js date object, ISO date string or moment.js object. Learn about date formats
  • end - Sets the end date and time for the event. The same formats are supported as for start
  • allDay - Configures the event as a full-day event
  • recurring - Configures the recurring rules for the event. Learn about recurring events
{
    // base properties
    title: 'Product planning',
    color: '#56ca70',
    start: new Date(2018, 11, 21, 13),
    end: new Date(2018, 11, 21, 14),
    // add any property you'd like
    busy: true,
    description: 'Weekly meeting with team',
    location: 'Office'
}

Now that you know how the event object is structured you can easily load an array of events into the calendar and perform CRUD operations.

Calendar - Recurring events

Change demo
Recurring events

Configure daily, weekly,monthly and yearly recurring events.

You can pass the recurrence rule in the recurring property of the event as an object or a string in RRULE format. Learn about the event data structure and where to place the recurring rules.

Use the configurator to experiment, build strings and objects that you can grab and use.

Repeat every days weeks months on the years on the of

The event will be repeated every day or every x days, depending on the value

The event will be repeated every x weeks on specific weekdays

The event will be repeated every x month on specific day of the month

The event will be repeated every x years on specific day of a specific month

Stop condition
JS Object
recurring: {
    repeat: '',
    count: 1,
    until: '',
    weekDays: '',
    day: ,
    month: ,
    interval: 1
}
RRULE String
recurring: 'FREQ=;COUNT=;UNTIL=;BYDAY=;BYMONTHDAY=;BYMONTH=;INTERVAL=1;'

Calendar - Events from remote API

Change demo
Events from remote API
Get started with this example

The calendar can be populated by passing an array to the data option, that you can construct either inline or by getting it from a remote API. The important thing to remember is that events need to be in a format that the calendar understands.

Interested in load on demand?  Dynamically load events on month change →

Calendar - Loading events on demand

Change demo
Loading events on demand
Get started with this example

The event calendar supports remote and local data sources. Besides that, events can be populated on initialization or loaded on demand.

Getting the events in real time as the user navigates improves load performance and always serves the most recent data.

Use the onPageLoading lifecycle event to load the data runtime. You can learn about lifecycle events and places where to drop logic to customize the experience.

Interested in loading events from Google Calendar?  Show events from Google Calendar →

Calendar - Events from Google calendar

Change demo
Events from Google calendar
Get started with this example

Data can be loaded from any number of places. The idea is to load the data and make sure to convert it into a format that the event calendar understands. You can use base fields and add custom fields that you can then render with the help of templates.

You can show events coming from google calendars. In this example you'll see how you can load events from a public calendar using the googleSDK. Make sure to set your API key and Client ID, that you can get from here.

Calendar - Add/delete event

Change demo

The component renders event data that it gets from an API, however you can manually add and delete events in real time. The idea is to pass the event in the correct format, which means it needs a couple of base properties:

  • start & end and recurring if applicable - Defines the date and length of the event
  • title - Defines the title of the event, which can be anything from text to something more complex like HTML
  • color - Defines the color of the event
  • allDay - Sets if the event is an all-day event or not
  • everything else you would like - You can add any additional data that makes sense, like busy or location...

After you have the data object ready with the event data you can pass it to the addEvent method. For removing events you can use the removeEvent method. Use the popup component along with inputs & fields to build the form you need.

Calendar - View/update event

Change demo
View/update event
Get started with this example

This demo renders event data that it gets from an API, but a lot of times you want to make the events editable. You can find and load the event by ID into a form and then pass it back to the calendar on Save. Edit the fields:

  • start & end and recurring if applicable - Defines the date and length of the event - Use the date picker
  • title - Defines the title for the event, which can be anything from text to something more complex like HTML
  • color - Defines the color of the event - use the color picker
  • allDay - Sets if the event is an all-day event or not
  • everything else you would like - You can add any additional data that makes sense, like busy or location...

After you have the new data object ready with the event data you can pass it to the calendar through the updateEvent method. Use the popup component along with inputs & fields to build the form you need.

Calendar - Calendar systems

Change demo

The event calendar supports multiple calendar systems. You can control it with the calendarSystem setting, and it supports the following options:

  • Gregorian - it is included by default
  • Jalali - it is the default system of the Persian calendar and is inlcuded within the Farsi language pack
  • Hijri - it is included in the Arabic language pack
Interested in localization?  Explore this example →

Calendar - Lifecycle events

Change demo
Lifecycle events

The event calendar ships with different hooks for deep customization. Events are triggered through the lifecycle of the component where you can tie in custom functionality and code. While users interact with the UI events like onEventClick, onInit, onSelectedDateChange ... will be triggered.

For a complete list of events go to the documentation  See available lifecycle events →
onCellClick: function (event, inst) { // Logic for handling cell clicks },
onDestroy: function (event, inst) { // Logic for destroying the event calendar },
onEventClick: function (event, inst) { // Logic for event click },
onInit: function (event, inst) { // Logic running on component init },
onLabelClick: function (event, inst) { // Logic for label click },
onMarkupReady: function (event, inst) { // Your custom event handler goes here  },
onPageChange: function (event, inst) { // Your custom event handler goes here  },
onPageLoaded: function (event, inst) { // Use it to inject custom markup & attach custom listeners  },
onPageLoading: function (event, inst) { // Use it to load data on demand },
onSelectedDateChange: function (event, inst) { // Use it to keep track of the selected date externally }
Event log

Calendar - Localization

Change demo

The components are fully localized. In case of the event calendar this covers date and time format, button copy, rtl and more. You can see how each example shows up by clicking on the small flag icon or checking the examples below.

All settings can be manually overriden  See what options the localization impacts →

Calendar - Theming capabilities

Change demo
Theming capabilities
Get started with this example

The look and feel of the event calendar can be deeply customized. There are four levels of customization:

  • Base themes: Choose between iOS, Android Material and Windows.
  • Light or dark: Every theme has a light and dark variant. Setting the themeVariant to 'auto' will switch based on system settings.
  • Custom themes: Use the theme builder to customize the colors and make it match your brand.
  • Custom CSS: If you need further customization, the sky is the limit with CSS overrides.

You can also see how every example looks by changing the theme from the header.

Looking for something you didn't see or have a sales question?
Ask us about it, we're here to help.

There is no trial at the moment
There is no trial available for V5 at the moment.
The latest features within the BETA are available for download to customers.

Feel free to explore the demos and let us know if there are questions.
Pick another framework
Looks like you have a license with no access to the BETA.
Feel free to explore the demos and let us know if we can help.

Introducing the next generation of Mobiscroll

The Mobiscroll 5 Beta 1 includes the brand new Scheduler, Agenda and Event calendar components.

We’ll be gradually adding more components and functionality. If you want to give the new version a go, you can check them out below.

Other highlights
  • Redesigned event calendar header with quick navigation
  • A new way of working with recurring events
  • Updated themes with dynamic dark mode
  • Real Angular & React components
  • Dynamic options with global updates
Read the full blogpost
Customize & try this demo locally
Sign in or start your free trial

We have to set you up with a trial for this to run 👍

Email address

Install demo in your app
Follow this quick, two minute install guide
Close window

Step 1.Install the Mobiscroll CLI from npm

Copy command
$ npm install -g @mobiscroll/cli

The CLI makes configuring your apps super simple 👍

Step 2.Run the following command in the root folder of your Ionic project

Copy command
$ mobiscroll config ionic

You will be prompted to log in with your mobiscroll account. Set your password here

Create an Ionic 3 & Mobiscroll starter with the CLI:

$ mobiscroll start ionic myStarter

Run this command for Ionic 4 & Mobiscroll starter:

$ mobiscroll start ionic-angular myStarter

Step 3.Copy the code into your app.

Copy TS
Copy HTML
Copy CSS
Copy Module

Step 4.Run ionic serve in the root folder of your app 🎉

Copy command
$ ionic serve

And voilà, everything should be running smoothly.

Install demo in your app
Follow this quick, two minute install guide
Close window

Step 1.Install the Mobiscroll CLI from npm

Copy command
$ npm install -g @mobiscroll/cli

The CLI makes configuring your apps super simple 👍

Step 2.Run the following command in the root folder of your Ionic project

Copy command
$ mobiscroll config ionic

You will be prompted to log in with your mobiscroll account. Set your password here

Run this command for Ionic 5 & React Mobiscroll starter:

$ mobiscroll start ionic-react myStarter

Step 3.Copy the code into your app.

Copy TSX
Copy CSS

Step 4.Run ionic serve in the root folder of your app 🎉

Copy command
$ ionic serve

And voilà, everything should be running smoothly.

Customize & try demos locally
How would you like to do it?
Install demo in your app
Follow this quick, two minute install guide
Close window

Step 1.Install the Mobiscroll CLI from npm

Copy command
$ npm install -g @mobiscroll/cli

The CLI makes configuring your apps super simple 👍

Step 2.Run the following command in the root folder of your Angular project

Copy command
$ mobiscroll config angular --version=5.0.0-beta

You will be prompted to log in with your mobiscroll account. Set your password here

Step 3.Copy the code into your app. HTML goes into the markup, TS into Typescript.

Copy TS
Copy HTML
Copy CSS
Copy Module

Step 4.Run ng serve in the root folder of your app 🎉

Copy command
$ ng serve

And voilà, everything should be running smoothly.

Thanks for downloading
Try and customize the app locally

Extract the zip file and run the project like any Ionic app. Make sure to have Ionic CLI installed and open the terminal in the app root folder.

Step 1. Run in root folder
$ npm install
Step 2. Start the app
$ ionic serve

Let us know if we can help and enjoy!

Change your password
Need to update your password? Enter and hit the button below
Thanks for downloading
Customize demos locally

Everything is set up so that you can dig in right away and start exploring.

We have set up a trial so that you can try the demos locally.

Extract the zip file and open the demo in your favorite browser. To install Mobiscroll in your project follow instructions from this page.


Let us know if we can help and enjoy! 👍

Thanks for downloading
Customize demos locally

Please extract the zip file and run the project like any Angular CLI app. Make sure to have the Angular CLI installed.

For installation and usage, extract the zip file and open a terminal window and follow these steps.

Step 1. Run in root folder
$ npm install
Step 2. Start the app
$ ng serve --open

Let us know if we can help and enjoy! 👍

Thanks for downloading
Customize demos locally

Everything is set up so that you can dig in right away and start exploring.

We have set up a trial so that you can try the demos locally.

The easiest way to get started is to follow the installation steps and by grabbing the code directly from the demo page. Let us know if we can help and enjoy! 👍

You'll find a fully functional Kitchen-sink Ionic app in the zip file.

Thanks for downloading
Customize demos locally

Everything is set up so that you can dig in right away and start exploring.

We have set up a trial so that you can try the demos locally.

The demos are using Babel's in-browser ES6 and JSX transformer. Extract the zip file and open the demo in your browser. To install Mobiscroll in your project follow instructions from this page.


Let us know if we can help and enjoy! 👍

Demos
Theme Select
Material
iOS
Windows
Language Locale