Calendar Events
Handle user interactions and integrate the calendar with your application logic.
Available Events
| Event | Description |
|---|---|
onchange |
Fired when date value changesonchange?: (self: Calendar, value: string | number) => void |
onupdate |
Fired when calendar view updatesonupdate?: (self: Calendar, value: string | number) => void |
onopen |
Fired when calendar opensonopen?: (self: Calendar) => void |
onclose |
Fired when calendar closesonclose?: (self: Calendar, origin: HTMLElement | null) => void |
Date Selection
Handle date changes with the onchange event:
<html>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/style.min.css" />
<script src="https://cdn.jsdelivr.net/npm/lemonadejs/dist/lemonade.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/index.min.js"></script>
<div id='calendar'></div>
<div id='output'></div>
<script>
const { Calendar } = calendarjs;
Calendar(document.getElementById('calendar'), {
type: 'inline',
value: new Date(),
onchange: function(self, value) {
document.getElementById('output').innerHTML = 'Selected: ' + value;
}
});
</script>
</html>
import { Calendar } from '@calendarjs/ce';
import '@calendarjs/ce/dist/style.css';
export default function App() {
const change = (self, value) => {
this.selected = value;
};
return render => render`<div>
<Calendar type="inline" value="${new Date()}" onchange="${change}" />
<p>Selected: ${this.selected}</p>
</div>`;
}
import { useState } from 'react';
import { Calendar } from '@calendarjs/ce/dist/react';
import '@calendarjs/ce/dist/style.css';
export default function App() {
const [selected, setSelected] = useState('');
return (
<div>
<Calendar
type="inline"
value={new Date()}
onchange={(self, value) => setSelected(value)}
/>
<p>Selected: {selected}</p>
</div>
);
}
<template>
<div>
<Calendar type="inline" :value="new Date()" @onchange="handleChange" />
<p>Selected: {{ selected }}</p>
</div>
</template>
<script>
import { Calendar } from '@calendarjs/ce/dist/vue';
import '@calendarjs/ce/dist/style.css';
export default {
components: { Calendar },
data() {
return { selected: '' };
},
methods: {
handleChange(self, value) {
this.selected = value;
}
}
}
</script>
Open/Close Events
Track calendar visibility:
<html>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/style.min.css" />
<script src="https://cdn.jsdelivr.net/npm/lemonadejs/dist/lemonade.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@calendarjs/ce/dist/index.min.js"></script>
<input type="text" id="input" /> <span id="log"></span> <div id="calendar"></div>
<script>
const { Calendar } = calendarjs;
let log = document.getElementById('log');
Calendar(document.getElementById('calendar'), {
input: document.getElementById('input'),
onopen: function(self) {
log.textContent = 'Calendar opened';
},
onclose: function(self, origin) {
log.textContent = 'Calendar closed';
}
});
</script>
</html>
import { Calendar } from '@calendarjs/ce';
import '@calendarjs/ce/dist/style.css';
export default function App() {
const self = this;
const onopen = function() {
self.log = 'Calendar opened';
};
const onclose = function() {
self.log = 'Calendar closed';
};
return render => render`<div>
<input type="text" :ref="self.input" />
<div>${self.log}</div>
<Calendar :input="self.input" onopen="${onopen}" :onclose="${onclose}" />
</div>`;
}
import { useRef, useState, useEffect } from 'react';
import { Calendar } from '@calendarjs/ce/dist/react';
import '@calendarjs/ce/dist/style.css';
export default function App() {
const inputRef = useRef();
const [input, setInput] = useState(null);
const [status, setStatus] = useState('');
useEffect(() => {
if (inputRef.current) setInput(inputRef.current);
}, []);
return (
<div>
<input type="text" ref={inputRef} />
{input && (
<Calendar
input={input}
onopen={() => setStatus('Calendar opened')}
onclose={() => setStatus('Calendar closed')}
/>
)}
<p>{status}</p>
</div>
);
}
<template>
<div>
<input type="text" ref="inputRef" />
<Calendar :input="$refs.inputRef" @onopen="onOpen" @onclose="onClose" />
<p>{{ status }}</p>
</div>
</template>
<script>
import { Calendar } from '@calendarjs/ce/dist/vue';
import '@calendarjs/ce/dist/style.css';
export default {
components: { Calendar },
data() {
return { status: '' };
},
methods: {
onOpen() {
this.status = 'Calendar opened';
},
onClose() {
this.status = 'Calendar closed';
}
}
}
</script>