npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@lemonadejs/calendar

v5.9.3

Published

LemonadeJS reactive JavaScript calendar plugin

Downloads

56,390

Readme

JavaScript Calendar

Official JavaScript Calendar Documentation

Compatible with Vanilla JavaScript, LemonadeJS, React, VueJS or Angular.

Leverage the power of the LemonadeJS Calendar, a lightweight and versatile JavaScript component compatible with React, VueJS, and Angular. Designed to enhance web applications, it offers an embeddable calendar for easy date, time, and range selections. Key features include:

  • Intuitive keyboard navigation.
  • A reactive and responsive design for seamless device adaptation.
  • Flexible range selection for various applications.
  • Customizable options to match your project needs.

Getting Started

You can install using NPM or directly from a CDN.

npm Installation

npm install @lemonadejs/calendar

CDN

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@lemonadejs/modal/dist/style.min.css" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@lemonadejs/calendar/dist/style.min.css" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons" />
<script src="https://cdn.jsdelivr.net/npm/lemonadejs/dist/lemonade.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@lemonadejs/modal/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@lemonadejs/calendar/dist/index.min.js"></script>

Usage

Quick example with React:

import React, { useRef } from 'react';
import Calendar from '@lemonadejs/calendar/dist/react';

import '@lemonadejs/calendar/dist/style.css';
import '@lemonadejs/modal/dist/style.css';

export default function App() {
    const calendarRef = useRef();

    return <Calendar type="inline" ref={calendarRef} value={new Date()} />;
}

API Reference

Options

| Attribute | Type | Description | |----------------|---------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| | type? | 'default' \| 'auto' \| 'picker' \| 'inline' | Render mode. 'auto' resolves to 'default' (≥ 800px wide) or 'picker' (smaller). Default: 'default'. | | format? | string | Date format using Excel-like tokens (e.g. 'dd/mm/yyyy'). | | value? | number \| string \| Date \| Array | Initial value. ISO string ('2025-06-15'), Excel-style serial number, native Date, or [start, end] tuple in range mode. | | numeric? | boolean | Return values as Excel-style numbers via getValue(). Default: false. | | range? | boolean | Enable range selection. Default: false. | | footer? | boolean | Show the footer (Reset / Done buttons + Today + time picker). Default: true. | | time? | boolean | Show hour and minute selectors in the footer. Default: false. | | grid? | boolean | Apply grid display mode (sets data-grid="true" on root). Default: false. | | placeholder? | string | Placeholder applied to a bound input. | | disabled? | boolean | Disable interaction. Default: false. | | startingDay? | number | First day of the week (0=Sun … 6=Sat). Default: 0. | | validRange? | string[] \| number[] \| Function | Bounds tuple [from, to] (ISO or Excel serial), or a predicate (day, month, year, item) => boolean to disable a cell. | | data? | Array<{ date: string, [key: string]: any }> | Event entries; cells with a matching date get a data-event marker. | | wheel? | boolean | Allow mouse-wheel month navigation. Default: true. | | input? | HTMLInputElement \| 'auto' | Existing input to bind, or 'auto' to create one. | | initInput? | boolean | Wire up input listeners (open-on-focus, type-to-update). Default: true. |

Events

| Event | Signature | Description | |-------------|------------------------------------------|-----------------------------------------------------------------------------------| | onchange? | (self, value) => void | Fired when the value changes (date selection or setValue). | | onupdate? | (self, value) => void | Fired when the cursor moves between cells (e.g. via arrow keys). | | onopen? | (self) => void | Fired when the modal opens ('picker' / 'default' types only). | | onclose? | (self, origin) => void | Fired when the modal closes. origin is 'button', 'escape', 'focusout', or any custom string passed to close({ origin }). | | onChange? | (event) => void | React-only. Forwarded to the bound input's native change DOM event. Distinct from onchange. |

Instance

Calling Calendar(root, options) returns an instance exposing:

| Property / Method | Description | |--------------------|----------------------------------------------------------------------------------------------| | el | Root DOM element. | | value | Current value (assignable; mutation triggers a re-render). | | format | Active date format mask. | | type | Resolved type (post-'auto' resolution). | | view | Current view: 'days' \| 'months' \| 'years'. | | range | Range mode flag. | | rangeValues | [start, end] numeric tuple while a range is active, null otherwise. | | modal | Modal instance (only for 'picker' / 'default' types). | | content | Inner content element (focus target for keyboard navigation). | | input | Bound input element (auto-created or user-provided). | | open() | Open the modal. | | close(options?) | Close the modal. Pass { origin: '...' } to label the close source. | | isClosed() | true / false for modal types; undefined for 'inline'. | | setView(view) | Switch view. Accepts 'days', 'months', 'years'. | | next() | Navigate forward (month / year / year-block depending on the current view). | | prev() | Navigate backward. | | reset() | Clear the value and close the modal when applicable. | | getValue() | Return the current value as a string (or number when numeric: true). | | setValue(v) | Set the value programmatically. Accepts ISO strings, Excel serial numbers, or [start, end] tuples in range mode. | | update() | Commit the current cursor selection (used by Done button). |

License

Released under the MIT license.

Other Tools