Full-sized drag & drop event calendar with resource & timeline views
npm install @event-calendar/time-gridFull-sized drag & drop JavaScript event calendar with resource & timeline views:
* Lightweight (38kb br compressed)
* Zero-dependency (pre-built bundle)
* Used on over 70,000 websites with Bookly
Inspired by FullCalendar, implements similar options.
- addEvent | - dateFromPoint |
core package:bash
npm install --save-dev @event-calendar/core
`
Then install any additional plugins you plan to use:
`bash
npm install --save-dev @event-calendar/time-grid
`
You must use at least one plugin that provides a view. The following plugins are currently available:*
@event-calendar/day-grid
* @event-calendar/list
* @event-calendar/resource-timeline
* @event-calendar/resource-time-grid
* @event-calendar/time-grid
* @event-calendar/interaction (doesn't provide a view)Then, in your JavaScript module:
`js
import Calendar from '@event-calendar/core';
import TimeGrid from '@event-calendar/time-grid';
// Import CSS if your build tool supports it
import '@event-calendar/core/index.css';let ec = new Calendar({
target: document.getElementById('ec'),
props: {
plugins: [TimeGrid],
options: {
view: 'timeGridWeek',
events: [
// your list of events
]
}
}
});
`
Or in your Svelte component, use the calendar like this:
`html
`$3
Include the following lines of code in the section of your page:
`html
`
Note
> Please note that the file paths contain an indication of a specific version of the library. You can remove this indication, then the latest version will be loaded:
>
`html
>
>
> `
> But it is recommended to always specify the version and explicitly update it if necessary, in order to avoid unpredictable problems when a new version of the library is released.Then initialize the calendar like this:
`js
let ec = new EventCalendar(document.getElementById('ec'), {
view: 'timeGridWeek',
events: [
// your list of events
]
});
`$3
You can modify the calendar options after initialization using the setOption method.
`js
ec.setOption('slotDuration', '01:00');
`
In Svelte, you can simply update the original options object.
`html
`Options
$3
- Type Content or function
- Default 'all-day'Defines the content that is displayed as a title of the
all-day slot.This value can be either a Content or a function that returns content:
`js
function (arg) {
// return Content
}
`
arg is an object with the following properties:
text
The default text
$3
- Type boolean
- Default trueDetermines whether the
all-day slot is displayed at the top of the calendar.When hidden with
false, all-day events will not be displayed in timeGrid/resourceTimeGrid views.$3
- Type object or function
- Default {close: 'Close', dayGridMonth: 'month', listDay: 'list', listMonth: 'list', listWeek: 'list', listYear: 'list', resourceTimeGridDay: 'resources', resourceTimeGridWeek: 'resources', resourceTimelineDay: 'timeline', resourceTimelineMonth: 'timeline', resourceTimelineWeek: 'timeline', timeGridDay: 'day', timeGridWeek: 'week', today: 'today'}
> Views override the default value as follows:
> - dayGridMonth text => ({...text, next: 'Next month', prev: 'Previous month'})
> - listDay text => ({...text, next: 'Next day', prev: 'Previous day'})
> - listMonth text => ({...text, next: 'Next month', prev: 'Previous month'})
> - listWeek text => ({...text, next: 'Next week', prev: 'Previous week'})
> - listYear text => ({...text, next: 'Next year', prev: 'Previous year'})
> - resourceTimeGridDay text => ({...text, next: 'Next day', prev: 'Previous day'})
> - resourceTimeGridWeek text => ({...text, next: 'Next week', prev: 'Previous week'})
> - resourceTimelineDay text => ({...text, next: 'Next day', prev: 'Previous day'})
> - resourceTimelineMonth text => ({...text, next: 'Next month', prev: 'Previous month'})
> - resourceTimelineWeek text => ({...text, next: 'Next week', prev: 'Previous week'})
> - timeGridDay text => ({...text, next: 'Next day', prev: 'Previous day'})
> - timeGridWeek text => ({...text, next: 'Next week', prev: 'Previous week'})Text that is displayed in buttons of the header toolbar.
This value can be either a plain object with all necessary properties, or a callback function that receives default button text object and should return a new one:
`js
function (text) {
// return new button text object
}
`
text
An object with default button text
$3
- Type object
- Default {}Defines custom buttons that can be used in the headerToolbar.
First, specify the custom buttons as key-value pairs. Then reference them from the
headerToolbar option.
Example
`js
let options = {
customButtons: {
myCustomButton: {
text: 'custom!',
click: function() {
alert('clicked the custom button!');
}
}
},
headerToolbar: {
start: 'title myCustomButton',
center: '',
end: 'today prev,next'
}
};
`
Each
customButton entry accepts the following properties:
text
The text to be display on the button itself. See Content
click
A callback function that is called when the button is clicked. Accepts one argument mouseEvent
active
If true, the button will appear pressed/active
$3
- Type Date or string
- Default new Date()Date that is currently displayed on the calendar.
This value can be either a JavaScript Date object, or an ISO8601 date string like
'2022-12-31'.$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that is triggered when the user clicks on a date or a time.
`js
function (info) {}
`
info is an object with the following properties:
date
JavaScript Date object for the clicked date and time
dateStr
ISO8601 string representation of the date
allDay
true or false. Determines if the click has occurred in the all-day slot. Month and list views are also considered as all-day slots
dayEl
HTML element that represents the whole-day that was clicked on
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
resource
If the current view is a resource view, the Resource object that owns this date
$3
- Type boolean
- Default falseDetermines whether the resource view should render the date headings above the resource headings.
$3
- Type function
- Default undefinedCallback function that is triggered when the date range of the calendar was originally set or changed by clicking the previous/next buttons, changing the view, manipulating the current date via the API, etc.
`js
function (info) {}
`
info is an object with the following properties:
start
JavaScript Date object for the beginning of the range the calendar needs events for
end
JavaScript Date object for the end of the range the calendar needs events for. Note: This value is exclusive
startStr
ISO8601 string representation of the start date
endStr
ISO8601 string representation of the end date
view
The current View object
$3
- Type object or function
- Default {day: 'numeric'}Defines the text that is displayed inside the day cell in the
dayGrid view.This value can be either an object with options for the native JavaScript Intl.DateTimeFormat object, or a callback function that returns a Content with the formatted string:
`js
function (date) {
// return Content with the formatted date string
}
`
date
JavaScript Date object that needs to be formatted
$3
- Type object or function
- Default {dateStyle: 'long'}
> Views override the default value as follows:
> - dayGridMonth {weekday: 'long'}Defines the text that is used inside the
aria-label attribute in calendar column headings.This value can be either an object with options for the native JavaScript Intl.DateTimeFormat object, or a callback function that returns formatted string:
`js
function (date) {
// return formatted date string
}
`
date
JavaScript Date object that needs to be formatted
$3
- Type object or function
- Default {weekday: 'short', month: 'numeric', day: 'numeric'}
> Views override the default value as follows:
> - dayGridMonth {weekday: 'short'}
> - resourceTimelineMonth {weekday: 'short', day: 'numeric'}
> - timeGridDay {weekday: 'long'}Defines the text that is displayed on the calendar’s column headings.
This value can be either an object with options for the native JavaScript Intl.DateTimeFormat object, or a callback function that returns a Content with the formatted string:
`js
function (date) {
// return Content with the formatted date string
}
`
date
JavaScript Date object that needs to be formatted
$3
- Type boolean
- Default falseDetermines the maximum number of stacked event levels for a given day in the
dayGrid view.If there are too many events, a link like
+2 more is displayed.Currently, only the value
true is supported, which limits the number of events to the height of the day cell.$3
- Type object or function
- Default {month: 'long', day: 'numeric', year: 'numeric'}Defines the date format of title of the popover created by the dayMaxEvents option.
This value can be either an object with options for the native JavaScript Intl.DateTimeFormat object, or a callback function that returns a Content with the formatted string:
`js
function (date) {
// return Content with the formatted date string
}
`
$3
- Type boolean
- Default true
> Views override the default value as follows:
> - dayGridMonth false
> - resourceTimelineDay false
> - resourceTimelineMonth false
> - resourceTimelineWeek falseDetermines whether to display an event’s end time.
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that, if specified, limits the area into which events are allowed to be dragged.
The function is called during dragging for each cursor movement and takes the same parameters as eventDrop. The function should return
true if dragging to the new position is allowed, and false otherwise.$3
- Type boolean
- Default true
- Requires Interaction pluginDetermines whether the calendar should automatically scroll during the event drag-and-drop when the mouse crosses the edge.
$3
- Type string, integer or object
- Default {weeks: 1}
> Views override the default value as follows:
> - dayGridMonth {months: 1}
> - listDay {days: 1}
> - listMonth {months: 1}
> - listYear {years: 1}
> - resourceTimeGridDay {days: 1}
> - resourceTimelineDay {days: 1}
> - resourceTimelineMonth {months: 1}
> - timeGridDay {days: 1}Sets the duration of a view.
This should be a value that can be parsed into a Duration object.
$3
- Type boolean
- Default false
- Requires Interaction pluginDetermines whether the events on the calendar can be dragged and resized (both at the same time).
If you don't need both, use the more specific eventStartEditable and eventDurationEditable instead.
$3
- Type array
- Default []Array of plain objects that will be parsed into Event objects and displayed on the calendar.
This option is not used if the
eventSources option is provided.$3
- Type function
- Default undefinedCallback function that is triggered when all events have finished updating.
This is an experimental feature and its behavior may change in the future. The function is called at the end of the cycle of rendering all events. The rendering occurs when new events are added, already displayed events are modified, or events are deleted.
`js
function (info) { }
`
info is an object with the following properties:
view
The current View object
$3
- Type string
- Default undefinedSets the default background color for events on the calendar.
You can use any of the CSS color formats such
'#f00', '#ff0000', 'rgb(255,0,0)', or 'red'.$3
- Type string, array or function
- Default undefinedSets additional CSS classes for events.
This value can be either a string containing class names
'class-1 class-2 ...', an array of strings ['class-1', 'class-2', ...] or a function that returns any of the above formats:`js
function (info) {
// return string or array
}
`
info is an object with the following properties:
event
The associated Event object
view
The current View object
$3
- Type function
- Default undefinedCallback function that is triggered when the user clicks an event.
`js
function (info) { }
`
info is an object with the following properties:
el
The HTML element for the event
event
The associated Event object
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type string
- Default undefinedThis is currently an alias for the
eventBackgroundColor.$3
- Type Content or function
- Default undefinedDefines the content that is rendered inside an event’s element.
This value can be either a Content or a function that returns content or
undefined:`js
function (info) {
// return Content or undefined
}
`
info is an object with the following properties:
event
The associated Event object
timeText
Formatted time of the event
view
The current View object
In case the function returns
undefined, the event will be rendered in the default way.$3
- Type function
- Default undefinedCallback function that is triggered right after the element has been added to the DOM. If the event data changes, this is not called again.
`js
function (info) { }
`
info is an object with the following properties:
el
The HTML element for the event
event
The associated Event object
timeText
Formatted time of the event
view
The current View object
$3
- Type integer
- Default 5
- Requires Interaction pluginDefines how many pixels the user’s mouse must move before the event dragging begins.
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that is triggered when the event dragging begins.
`js
function (info) { }
`
info is an object with the following properties:
event
The associated Event object
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that is triggered when the event dragging stops.
It is triggered before the event’s information has been modified (if moved to a new date/time) and before the eventDrop callback is triggered.
`js
function (info) { }
`
info is an object with the following properties:
event
The associated Event object
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that is triggered when dragging stops, and the event has moved to a different day/time.
It is triggered after the event’s information has been modified and after the eventDragStop callback has been triggered.
`js
function (info) { }
`
info is an object with the following properties:
event
The associated Event object
oldEvent
An Event object that holds information about the event before the drop
oldResource
If the resource has changed, this is the Resource object the event came from. If the resource has not changed, this will be undefined
newResource
If the resource has changed, this is the Resource object the event went to. If the resource has not changed, this will be undefined
delta
A Duration object that represents the amount of time the event was moved by
revert
A function that, if called, reverts the event’s start/end date to the values before the drag
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type boolean
- Default true
- Requires Interaction pluginDetermines whether calendar events can be resized.
$3
- Type integer
- Default undefined
- Requires Interaction pluginFor touch devices, the amount of time (in milliseconds) the user must hold down a tap before the event becomes draggable/resizable.
If not specified, it falls back to longPressDelay.
$3
- Type function
- Default undefinedCallback function that is triggered when the user hovers over an event with the cursor (mouse pointer).
`js
function (info) { }
`
info is an object with the following properties:
el
The HTML element for the event
event
The associated Event object
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type function
- Default undefinedCallback function that is triggered when the cursor (mouse pointer) is moved out of an event.
`js
function (info) { }
`
info is an object with the following properties:
el
The HTML element for the event
event
The associated Event object
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type boolean
- Default false
- Requires Interaction pluginDetermines whether the event can be resized from its starting edge.
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that is triggered when resizing stops, and the duration of the event has changed.
It is triggered after the event’s information has been modified and after the eventResizeStop callback has been triggered.
`js
function (info) { }
`
info is an object with the following properties:
event
The associated Event object
oldEvent
An Event object that holds information about the event before the resize
startDelta
A Duration object that represents the amount of time the event’s start date was moved by
endDelta
A Duration object that represents the amount of time the event’s end date was moved by
revert
A function that, if called, reverts the event’s end date to the values before the resize
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that is triggered when the event resizing begins.
`js
function (info) { }
`
info is an object with the following properties:
event
The associated Event object
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that is triggered when the event resizing stops.
It is triggered before the event’s information has been modified (if duration is changed) and before the eventResize callback is triggered.
`js
function (info) { }
`
info is an object with the following properties:
event
The associated Event object
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type EventSource[]
- Default []Array of EventSource objects that will provide the Event Calendar with data about events.
This option is used instead of the
events option.EventSource should be an object with one of the following sets of properties:#### 1. Fetch events from a URL
url
A URL that the calendar will fetch Event objects from. HTTP requests with the following parameters will be sent to this URL whenever the calendar needs new event data:
start
Start date of the range the calendar needs events for
end
End date of the range the calendar needs events for
method
HTTP request method. Default 'GET'
extraParams
Other GET/POST data you want to send to the server. Can be a plain object or a function that returns an object. Default {}
#### 2. Execute custom function
events
A custom function that is executed whenever the Event Calendar needs new event data.
`js
function(fetchInfo, successCallback, failureCallback) { }
`
fetchInfo is an object with the following properties:
start
JavaScript Date object for the beginning of the range the calendar needs events for
end
JavaScript Date object for the end of the range the calendar needs events for. Note: This value is exclusive
startStr
ISO8601 string representation of the start date
endStr
ISO8601 string representation of the end date
The successCallback function must be called by the custom function with an array of parsable Event objects.
If there is any failure (e.g., if an AJAX request fails), then call the failureCallback instead. It accepts an argument with information about the failure.
Instead of calling successCallback and failureCallback, you may return the resulting array of events or return a Promise (or thenable) object instead.
$3
- Type boolean
- Default true
- Requires Interaction pluginDetermines whether the events on the calendar can be dragged.
$3
- Type object or function
- Default {hour: 'numeric', minute: '2-digit'}Defines the time-text that is displayed on each event.
This value can be either an object with options for the native JavaScript Intl.DateTimeFormat object, or a callback function that returns a Content with the formatted string:
`js
function (start, end) {
// return Content with the formatted time string
}
`
start
JavaScript Date object containing the beginning of the time span to be formatted
end
JavaScript Date object containing the end of the time span to be formatted
$3
- Type string
- Default undefinedSets the default text color for events on the calendar.
You can use any of the CSS color formats such
'#f00', '#ff0000', 'rgb(255,0,0)', or 'red'.$3
- Type boolean
- Default falseDetermines whether events that do not belong to the current array of resources should be hidden in
dayGrid/timeGrid/list views.$3
- Type boolean
- Default falseDetermines whether resources with no events for the current range should be hidden in the resource view.
$3
- Type integer
- Default 0The day that each week begins at, where Sunday is
0, Monday is 1, etc. Saturday is 6.$3
- Type boolean or object
- Default falseDetermines whether slotMinTime and slotMaxTime should automatically expand when an event goes out of bounds.
If set to
true, then the decision on whether to expand the limits will be made based on the analysis of currently displayed events, but excluding background events.If you want background events not to be ignored, then instead of
true you can pass an object with the following properties:
eventFilter
A function to determine whether a given event should be taken into account or not.
`js
function(event) {
// return true or false
}
`
event
Event object to be analyzed.
The function must return true to have this event counted, or false to ignore it
$3
- Type object
- Default {start: 'title', center: '', end: 'today prev,next'}Defines the buttons and title at the top of the calendar.
An object can be supplied with properties
start,center,end. These properties contain strings with comma/space separated values. Values separated by a comma will be displayed adjacently. Values separated by a space will be displayed with a small gap in between. Strings can contain any of the following values:
title
A text containing the current month/week/day
prev
A button for moving the calendar back one month/week/day
next
A button for moving the calendar forward one month/week/day
today
A button for moving the calendar to the current month/week/day
_a view name like_ dayGridMonth
A button that will switch the calendar to a specific view
$3
- Type string
- Default undefinedDefines the height of the entire calendar.
This should be a valid CSS value like
'100%' or '600px'.$3
- Type array
- Default []Exclude certain days-of-the-week from being displayed, where Sunday is
0, Monday is 1, etc. Saturday is 6.$3
- Type array
- Default []Array of dates that need to be highlighted in the calendar.
Each date can be either an ISO8601 date string like
'2022-12-31', or a JavaScript Date object.$3
- Type boolean
- Default trueDetermines when event fetching should occur.
When set to
true (the default), the calendar will only fetch events when it absolutely needs to, minimizing HTTP requests. For example, say your calendar starts out in month view, in February. The Event Calendar will fetch events for the entire month of February and store them in its internal storage. Then, say the user switches to week view and begins browsing the weeks in February. The calendar will avoid fetching events because it already has this information stored.When set to
false, the calendar will fetch events any time the view is switched, or any time the current date changes (for example, as a result of the user clicking prev/next).$3
- Type object or function
- Default {weekday: 'long'}Defines the text on the left side of the day headings in list view.
This value can be either an object with options for the native JavaScript Intl.DateTimeFormat object, or a callback function that returns a Content with the formatted string:
`js
function (date) {
// return Content with the formatted date string
}
`
date
JavaScript Date object that needs to be formatted
$3
- Type object or function
- Default {year: 'numeric', month: 'long', day: 'numeric'}Defines the text on the right side of the day headings in list view.
This value can be either an object with options for the native JavaScript Intl.DateTimeFormat object, or a callback function that returns a Content with the formatted string:
`js
function (date) {
// return Content with the formatted date string
}
`
date
JavaScript Date object that needs to be formatted
$3
- Type function
- Default undefinedCallback function that is triggered when event fetching starts/stops.
`js
function (isLoading) { }
`
isLoading
true when the calendar begins fetching events, false when it’s done.
$3
- Type string
- Default undefinedDefines the
locales parameter for the native JavaScript Intl.DateTimeFormat object that the Event Calendar uses to format date and time strings in options such as dayHeaderFormat, eventTimeFormat, etc.$3
- Type integer
- Default 1000For touch devices, the amount of time (in milliseconds) the user must hold down a tap before the event becomes draggable/resizable or the date becomes selectable.
For a more granular configuration, see eventLongPressDelay and selectLongPressDelay.
$3
- Type Content or function
- Default undefinedDefines the text that is displayed instead of the default
+2 more created by the dayMaxEvents option.This value can be either a Content or a function that returns content:
`js
function (arg) {
// return Content
}
`
arg is an object with the following properties:
num
The number of hidden events
text
The default text like +2 more
$3
- Type function
- Default undefinedCallback function that is triggered when the user clicks _No events_ area in list view.
`js
function (info) { }
`
info is an object with the following properties:
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
$3
- Type Content or function
- Default 'No events'Defines the text that is displayed in list view when there are no events to display.
This value can be either a Content or a function that returns content:
`js
function () {
// return Content
}
`$3
- Type boolean
- Default falseEnables a marker indicating the current time in
timeGrid/resourceTimeGrid views.$3
- Type boolean
- Default false
- Requires Interaction pluginEnables mouse cursor pointer in
timeGrid/resourceTimeGrid and other views.$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that, if specified, limits the area within which the event is allowed to resize.
The function is called during resizing for each cursor movement and takes the same parameters as eventResize. The function should return
true if the new size is allowed, and false otherwise.$3
- Type array
- Default []Array of plain objects that will be parsed into Resource objects for displaying in the resource view.
$3
- Type string, objector function
- Default undefinedDefines the content that is rendered inside an element with a resource title.
This value can be either a Content or a function that returns content:
`js
function (info) {
// return Content
}
`
info is an object with the following properties:
resource
The associated Resource object
date
If it is a column that is within a specific date, this will be a Date object
$3
- Type function
- Default undefinedCallback function that is triggered right after the element has been added to the DOM. If the resource data changes, this is not called again.
`js
function (info) { }
`
info is an object with the following properties:
el
The HTML element for the label
resource
The associated Resource object
date
If it is a column that is within a specific date, this will be a Date object
$3
- Type string, integer or object
- Default '06:00:00'Determines how far forward the scroll pane is initially scrolled.
This should be a value that can be parsed into a Duration object.
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that is triggered when a date/time selection is made.
`js
function (info) { }
`
info is an object with the following properties:
start
JavaScript Date object indicating the start of the selection
end
JavaScript Date object indicating the end of the selection
startStr
ISO8601 string representation of the start date
endStr
ISO8601 string representation of the end date
allDay
true or false. Determines if the selection has occurred in the all-day slot
jsEvent
JavaScript native event object with low-level information such as click coordinates
view
The current View object
resource
If the current view is a resource view, the Resource object that was selected
$3
- Type boolean
- Default false
- Requires Interaction pluginDetermines whether the user is allowed to highlight multiple days or time slots by clicking and moving the pointer.
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that, if specified, limits the area that can be selected.
The function is called during selection for each cursor movement and takes the same parameters as select. The function should return
true if the selected range is allowed, and false otherwise.$3
- Type string
- Default undefined
- Requires Interaction pluginSets the background color for the event indicating the current selection. See selectable.
You can use any of the CSS color formats such
'#f00', '#ff0000', 'rgb(255,0,0)', or 'red'.$3
- Type integer
- Default undefined
- Requires Interaction pluginFor touch devices, the amount of time (in milliseconds) the user must hold down a tap before the date becomes selectable.
If not specified, it falls back to longPressDelay.
$3
- Type integer
- Default 5
- Requires Interaction pluginDefines how many pixels the user’s mouse must move before the selection begins.
$3
- Type string, integer or object
- Default '00:30:00'
> Views override the default value as follows:
> - resourceTimelineMonth {days: 1}Defines the frequency for displaying time slots.
This should be a value that can be parsed into a Duration object.
$3
- Type boolean
- Default trueDetermines whether events in the
timeGrid/resourceTimeGrid views should visually overlap when they intersect in time.If set to
false, then intersecting events will be placed next to each other.$3
- Type integer
- Default 24Defines the time slot height in pixels in the
timeGrid/resourceTimeGrid views. When changing the setting, you must additionally override the following CSS styles:`css
.ec-time-grid .ec-time, .ec-time-grid .ec-line {
height: 24px; / override this value /
}
`$3
- Type object or function
- Default {hour: 'numeric', minute: '2-digit'}Defines the text that will be displayed within a time slot.
This value can be either an object with options for the native JavaScript Intl.DateTimeFormat object, or a callback function that returns a Content with the formatted string:
`js
function (time) {
// return Content with the formatted time string
}
`
time
JavaScript Date object that needs to be formatted
$3
- Type string, integer or object
- Default undefinedThe interval at which slot labels should be displayed in
timeGrid views.This should be a value that can be parsed into a Duration object.
If not specified, then if
slotDuration is less than 1 hour, the interval is considered to be twice as long, i.e. the labels are displayed every other time.If the interval is set to zero, then labels are displayed for all slots, including the very first one, which is not normally displayed.
$3
- Type string, integer or object
- Default '24:00:00'Defines the last time slot that will be displayed for each day.
This should be a value that can be parsed into a Duration object.
$3
- Type string, integer or object
- Default '00:00:00'Defines the first time slot that will be displayed for each day.
This should be a value that can be parsed into a Duration object.
$3
- Type integer
- Default 72Defines the time slot width in pixels in
resourceTimeline views. When changing the setting, you must additionally override the following CSS styles:`css
.ec-timeline .ec-time, .ec-timeline .ec-line {
width: 72px; / override this value /
}
`$3
- Type object or function
- Default {allDay: 'ec-all-day', active: 'ec-active', bgEvent: 'ec-bg-event', bgEvents: 'ec-bg-events', body: 'ec-body', button: 'ec-button', buttonGroup: 'ec-button-group', calendar: 'ec', compact: 'ec-compact', container: 'ec-container', content: 'ec-content', day: 'ec-day', dayHead: 'ec-day-head', dayFoot: 'ec-day-foot', days: 'ec-days', daySide: 'ec-day-side', draggable: 'ec-draggable', dragging: 'ec-dragging', event: 'ec-event', eventBody: 'ec-event-body', eventTag: 'ec-event-tag', eventTime: 'ec-event-time', eventTitle: 'ec-event-title', events: 'ec-events', expander: 'ec-expander', extra: 'ec-extra', ghost: 'ec-ghost', handle: 'ec-handle', header: 'ec-header', hiddenScroll: 'ec-hidden-scroll', highlight: 'ec-highlight', icon: 'ec-icon', line: 'ec-line', lines: 'ec-lines', main: 'ec-main', noEvents: 'ec-no-events', nowIndicator: 'ec-now-indicator', otherMonth: 'ec-other-month', pointer: 'ec-pointer', popup: 'ec-popup', preview: 'ec-preview', resizer: 'ec-resizer', resizingX: 'ec-resizing-x', resizingY: 'ec-resizing-y', resource: 'ec-resource', selecting: 'ec-selecting', sidebar: 'ec-sidebar', sidebarTitle: 'ec-sidebar-title', today: 'ec-today', time: 'ec-time', times: 'ec-times', title: 'ec-title', toolbar: 'ec-toolbar', view: 'ec-timeline ec-resource-week-view', weekdays: ['ec-sun', 'ec-mon', 'ec-tue', 'ec-wed', 'ec-thu', 'ec-fri', 'ec-sat'], withScroll: 'ec-with-scroll', uniform: 'ec-uniform'}
> Views override the default value as follows:
> - dayGridMonth theme => ({...theme, view: 'ec-day-grid ec-month-view'})
> - listDay theme => ({...theme, view: 'ec-list ec-day-view'})
> - listMonth theme => ({...theme, view: 'ec-list ec-month-view'})
> - listWeek theme => ({...theme, view: 'ec-list ec-week-view'})
> - listYear theme => ({...theme, view: 'ec-list ec-year-view'})
> - resourceTimeGridDay theme => ({...theme, view: 'ec-time-grid ec-resource-day-view'})
> - resourceTimeGridWeek theme => ({...theme, view: 'ec-time-grid ec-resource-week-view'})
> - resourceTimelineDay theme => ({...theme, view: 'ec-timeline ec-resource-day-view'})
> - resourceTimelineMonth theme => ({...theme, view: 'ec-timeline ec-resource-month-view'})
> - resourceTimelineWeek theme => ({...theme, view: 'ec-timeline ec-resource-week-view'})
> - timeGridDay theme => ({...theme, view: 'ec-time-grid ec-day-view'})
> - timeGridWeek theme => ({...theme, view: 'ec-time-grid ec-week-view'})Defines the CSS classes that the Event Calendar uses to generate HTML markup.
This value can be either a plain object with all necessary properties, or a callback function that receives default theme object and should return a new one:
`js
function (theme) {
// return actual theme object
}
`
theme
An object with default CSS classes
$3
- Type object or function
- Default {year: 'numeric', month: 'short', day: 'numeric'}
> Views override the default value as follows:
> - dayGridMonth {year: 'numeric', month: 'long'}
> - timeGridDay {year: 'numeric', month: 'long', day: 'numeric'}Defines the text that is displayed in the header toolbar’s title.
This value can be either an object with options for the native JavaScript Intl.DateTimeFormat object, or a callback function that returns a Content with the formatted string:
`js
function (start, end) {
// return Content with the formatted date string
}
`
start
JavaScript Date object containing the beginning of the time span to be formatted
end
JavaScript Date object containing the end of the time span to be formatted
$3
- Type function
- Default undefined
- Requires Interaction pluginCallback function that is triggered when the current selection is cleared.
A selection can be cleared for a number of reasons:
- The user clicks away from the current selection (this does not happen when unselectAuto is
false).
- The user makes a new selection. The unselect callback will be fired before the new selection occurs.
- The user navigates forward or backward in the current view, or switches to a new view.
- The unselect method is called via the API.`js
function (info) { }
`
info is an object with the following properties:
jsEvent
JavaScript native event object with low-level information such as click coordinates.
If unselect has been triggered via the unselect method, jsEvent will be undefined
view
The current View object
$3
- Type boolean
- Default true
- Requires Interaction pluginDetermines whether clicking elsewhere on the page will clear the current selection. See selectable.
$3
- Type string
- Default ''
- Requires Interaction pluginA CSS selector that specifies elements that will ignore the unselectAuto option.
Clicking on elements that match this CSS selector will prevent the current selection from being cleared (because of the unselectAuto option).
$3
- Type object
- Default undefinedIf set, the calendar will allow navigation only within the specified date range. Navigation buttons will be grayed out to prevent the user from navigating to an invalid range.
The range should be an object with the following properties:
start
string or Date This should be either an ISO8601 date string like '2025-12-31', or a JavaScript Date object holding the range start date
end
string or Date This should be either an ISO8601 date string like '2025-12-31', or a JavaScript Date object holding the range end date
It is not necessary to specify both properties. The range may have only
start and no end, or vice versa.$3
- Type string
- Default 'resourceTimeGridWeek'The view that is displayed in the calendar. Can be
'dayGridMonth', 'listDay', 'listWeek', 'listMonth', 'listYear', 'resourceTimeGridDay', 'resourceTimeGridWeek', 'resourceTimelineDay', 'resourceTimelineWeek', 'resourceTimelineMonth', 'timeGridDay' or 'timeGridWeek'.$3
- Type function
- Default undefinedCallback function that is triggered right after the view has been added to the DOM.
`js
function (info) { }
`
info is an object with the following properties:
view
The mounted View object
$3
- Type object
- Default {}You can specify options that apply only to specific views. To do so provide separate options objects within the
views option, keyed by the name of the view.$3
- Type Content or function
- Default undefinedDefines the text that is displayed in place of the default week number (such as
W01).This value can be either a Content or a function that returns content:
`js
function (arg) {
// return Content
}
`
arg is an object with the following properties:
date
JavaScript Date object containing the day within which the week number will be displayed
week
Calculated week number
$3
- Type boolean
- Default falseDetermines whether week numbers should be displayed in the
dayGrid view.The numbering of weeks depends on the value of firstDay. When
firstDay is 0, the Western system is used. Any other value uses the ISO system.Methods
Methods allow you to manipulate the Event Calendar after initialization. They are accessible from the calendar instance.In Svelte, methods are available from a component instance:
`html
`$3
- Parameters
- name string The option name
- Return value mixed or undefinedThis method allows you to get the current value of any calendar option.
`js
// E.g. Get current date
let date = ec.getOption('date');
`$3
- Parameters
- name string The option name
- value mixed The new option value
- Return value EventCalendar The calendar instance for chainingThis method allows you to set new value to any calendar option.
`js
// E.g. Change the current date
ec.setOption('date', new Date());
`$3
- Parameters
- event object A plain object that will be parsed into an Event object
- Return value Event object or nullAdds a new event to the calendar.
$3
- Parameters
- id string|integer The ID of the event
- Return value Event object or nullReturns a single event with the matching
id.$3
- Return value Event[] Array of Event objectsReturns an array of events that the calendar has in memory.
$3
- Parameters
- id string|integer The ID of the event
- Return value EventCalendar The calendar instance for chainingRemoves a single event with the matching
id.$3
- Parameters
- event object A plain object or Event object
- Return value EventCalendar The calendar instance for chainingUpdates a single event with the matching
event.id.$3
- Return value EventCalendar The calendar instance for chainingRefetches events from all sources.
$3
- Return value object or nullReturns an
info object with data as if the dateClick event had fired for that point.info object contains the following properties:
date
JavaScript Date object for the date and time
allDay
true or false. Determines if the point is in the all-day slot. Month and list views are also considered as all-day slots
dayEl
HTML element that represents the whole-day that contains the point
resource
If the current view is a resource view, the Resource object that owns this date
Using this method, you can, for example, find out on which day a click occurred inside a multi-day event. To do this, inside eventClick, pass the
jsEvent.clientX and jsEvent.clientY coordinates to dateFromPoint and get the desired date.$3
- Return value undefined
- Not available in SvelteDestroys the calendar, removing all DOM elements, event handlers, and internal data.
Please note that this method is not available in Svelte. Instead, the calendar is destroyed gracefully when the component containing it is destroyed.
$3
- Return value ViewReturns the View object for the current view.
$3
- Return value EventCalendar The calendar instance for chainingMoves the current calendar date forward by 1 day/week/month (depending on the current view).
$3
- Return value EventCalendar The calendar instance for chainingMoves the current calendar date backward by 1 day/week/month (depending on the current view).
$3
- Return value EventCalendar The calendar instance for chainingClears the current selection. See selectable.
Content
The content value can be presented in the following forms:* a string containing text
'some text'
* an object containing the HTML string {html: 'some HTML
'}
* an object containing an array of DOM nodes {domNodes: [node1, node2, ...]}Event object
This is a JavaScript object that the Event Calendar uses to store information about a calendar event.Here are all properties that exist in Event object:
id
A unique string identifier of the event
resourceIds
An array of resource IDs that the event is associated with
allDay
true or false. Determines if the event is shown in the all-day slot
start
JavaScript Date object holding the event’s start time
end
JavaScript Date object holding the event’s end time
title
Content The text appearing on the event. See Content
editable
true, false or undefined. The value overriding the editable setting for this specific event
startEditable
true, false or undefined. The value overriding the eventStartEditable setting for this specific event
durationEditable
true, false or undefined. The value overriding the eventDurationEditable setting for this specific event
display
The rendering type of the event. Can be 'auto' or 'background'
In addition, in your callback functions, you may get the 'ghost', 'preview' and 'pointer' for this property, which are internal values and are used, for example, to display events during drag-and-drop operations
backgroundColor
The eventBackgroundColor override for this specific event
textColor
The eventTextColor override for this specific event
classNames
An array of additional CSS classes for this specific event
styles
An array of additional inline styling declarations for this specific event
extendedProps
A plain object holding miscellaneous properties specified during parsing in the explicitly given extendedProps field
$3
When Event Calendar receives an array of plain event’s objects either from the events option or as a result of an HTTP request to a URL of an event source, it parses the input objects into proper Event objects.Here are all admissible fields for the event’s input object:
id
string or integer A unique identifier of the event. Default auto-generated value
allDay
boolean Determines if the event is shown in the all-day slot. Defaults to true if start and end are both passed without a time part, false otherwise
start
string or Date This should be either an ISO8601 datetime string like '2022-12-31 09:00:00', or a JavaScript Date object holding the event’s start time
end
string or Date This should be either an ISO8601 datetime string like '2022-12-31 13:00:00', or a JavaScript Date object holding the event’s end time
title
Content The text that will appear on the event. See Content. Default ''
editable
boolean Overrides the master editable option for this single event. Default undefined
startEditable
boolean` Overrides the master eventStartEditable option for this single even