Range Selection

Select date ranges for booking systems, filters, and date span inputs.

Example

<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>
<p>Start: <span id="start">-</span> | End: <span id="end">-</span></p>

<script>
const { Calendar } = calendarjs;

Calendar(document.getElementById('calendar'), {
    type: 'inline',
    range: true,
    value: '2025-12-01,2025-12-05',
    onchange: function(self, value) {
        if (value) {
            document.getElementById('start').textContent = value[0];
            document.getElementById('end').textContent = value[1]
        }
    }
});
</script>
</html>
import { Calendar } from '@calendarjs/ce';
import '@calendarjs/ce/dist/style.css';

export default function App() {
    const self = this;
    self.start = '2025-12-01';
    self.end = '2025-12-05';

    const change = (el, value) => {
        if (value) {
            self.start = value[0];
            self.end = value[1];
        }
    };

    return render => render`<div>
        <Calendar type="inline" range="true" value="2025-12-01,2025-12-05" onchange="${change}" />
        <p>Start: ${self.start} | End: ${self.end}</p>
    </div>`;
}
import { useState } from 'react';
import { Calendar } from '@calendarjs/ce/dist/react';
import '@calendarjs/ce/dist/style.css';

export default function App() {
    const [start, setStart] = useState('2025-12-01');
    const [end, setEnd] = useState('2025-12-05');

    const handleChange = (self, value) => {
        if (value) {
            setStart(value[0]);
            setEnd(value[1]);
        }
    };

    return (
        <div>
            <Calendar type="inline" range={true} value="2025-12-01,2025-12-05" onchange={handleChange} />
            <p>Start: {start} | End: {end}</p>
        </div>
    );
}
<template>
    <div>
        <Calendar type="inline" :range="true" value="2025-12-01,2025-12-05" @onchange="handleChange" />
        <p>Start: {{ start }} | End: {{ end }}</p>
    </div>
</template>

<script>
import { Calendar } from '@calendarjs/ce/dist/vue';
import '@calendarjs/ce/dist/style.css';

export default {
    components: { Calendar },
    data() {
        return { start: '2025-12-01', end: '2025-12-05' };
    },
    methods: {
        handleChange(self, value) {
            if (value) {
                this.start = value[0];
                this.end = value[1];
            }
        }
    }
}
</script>

Related