The Principal Dev – Masterclass for Tech Leads

The Principal Dev – Masterclass for Tech LeadsJuly 17-18

Join

Vanilla Calendar Pro - Lightweight and Functional JavaScript Plugin for Date and Time Selection

vanilla-calendar preview

version tests downloads

This is a versatile JavaScript date and time picker component with TypeScript support, compatible with any JavaScript frameworks and libraries. It is designed to be lightweight, easy to use, and feature-rich, without relying on external dependencies.

Key Features

Browser Support

VanillaCalendar is compatible with a wide range of browsers:

Chrome Firefox Edge Opera Safari
57+ ✔ 52+ ✔ 80+ ✔ 44+ ✔ 10.1+ ✔

Support and Feedback

Vanilla Calendar Pro is free to use for everyone, but maintaining it comes with costs. I personally cover expenses like hosting, domain, and development resources to keep the project running smoothly. Your donations help me continue improving the tool while keeping it accessible for the community. Any contribution, big or small, makes a difference!

If you’d like to support the project, please consider making a donation or giving it a 🌟 star on GitHub.

Feel free to report any issues or share your ideas—your feedback is invaluable!

Getting Started

Installation

You can install it using npm or yarn:

npm install vanilla-calendar-pro
# or
yarn add vanilla-calendar-pro

Usage

Here's a simple example of using it in your HTML:

<html>
  <head>
  </head>
  <body>
    <div id="calendar"></div>
    <!-- or -->
    <!-- <input type="text" id="calendar-input"> -->
  </body>
</html>

To add the necessary styles and scripts, you can use the following code:

import { Calendar } from 'vanilla-calendar-pro';
import 'vanilla-calendar-pro/styles/index.css';

// Initialize the calendar
const calendar = new Calendar('#calendar');
calendar.init();
// or
// const calendarWithInput = new Calendar('#calendar-input', { inputMode: true });
// calendarWithInput.init();

CSS Styles

// Only layout calendar
import 'vanilla-calendar-pro/styles/layout.css';

// Themes
import 'vanilla-calendar-pro/styles/themes/light.css';
import 'vanilla-calendar-pro/styles/themes/dark.css';
// ...and others

The calendar can automatically switch between a light or dark theme depending on the user's system settings, or track a custom HTML attribute that specifies the desired theme.

If you want to apply a specific theme, it is recommended to import layout.css along with your preferred theme instead of index.css.

Layouts

VanillaCalendar features customizable DOM templates that allow you to modify the structure of the calendar to fit your needs. The templates are identified by tags containing the # character, and they should include a trailing slash at the end.

The calendar contains custom layouts for each calendar type, which allow you to change the calendar structure to suit your needs. Each layout contains its own set of components that can be moved or removed from it if necessary. By default, a layout contains all the components available to it. Components are identified by tags containing the # character, and they must contain a slash at the end of the tag.

Here is an example of the default layout:

new Calendar('#calendar', {
  layouts: {
    default: `
      <div class="vc-header" data-vc="header" role="toolbar" aria-label="Calendar Navigation">
        <#ArrowPrev [month] />
        <div class="vc-header__content" data-vc-header="content">
          <#Month />
          <#Year />
        </div>
        <#ArrowNext [month] />
      </div>
      <div class="vc-wrapper" data-vc="wrapper">
        <#WeekNumbers />
        <div class="vc-content" data-vc="content">
          <#Week />
          <#Dates />
          <#DateRangeTooltip />
        </div>
      </div>
      <#ControlTime />
    `
  }
});

Library components

For detailed instructions on how to use the calendar as a component for various libraries, please visit the website with detailed documentation and examples.

API Reference

For detailed information on the available parameters and settings, please refer to the API reference.

This project is tested with BrowserStack.

License

MIT License

Author

Yury Uvarov (uvarov.frontend@gmail.com)

Join libs.tech

...and unlock some superpowers

GitHub

We won't share your data with anyone else.