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 🙏

© 2024 – Pkg Stats / Ryan Hefner

Datepicker.js

v0.1.1

Published

A pure JS datepicker

Downloads

377

Readme

Datepicker.js Build Status

See the demo here

Quick Start

Include the files

<!-- or another theme from `dist/css` -->
<link rel="stylesheet" href="datepicker.material.css">
<script src="datepicker.js"></script>

Distiguish the Datepicker

<input type="text" id="datepicker">

Initialize Datepicker.js

var datepicker = new Datepicker('#datepicker');

Basic Usage

Call the constructor with an element or selector. Passing a selector other than an ID will return an array of initialized Datepickers matching the selector.

/* All valid */

new Datepicker(document.getElementById('datepicker'));
// => Datepicker

new Datepicker('#datepicker');
// => Datepicker

new Datepicker('.datepicker');
// => [Datepicker, ...]

Pass an object of options to customize the Datepicker during initialization. Data attributes can also be used to set options.

<input type="hidden" id="datepicker" data-inline="true"/>
var datepicker = new Datepicker('#datepicker', {
  multiple: true,
  inline: false
});

datepicker.get('inline');
// => true

datepicker.get('multiple');
// => true

Options

Inline Datepicker

inline: (true|false)

Best used with hidden inputs. Enabling this will render the Datepicker inline with the input and prevent show/hide functionality.

Multiple Dates

multiple: (true|false)

Enables the ability for multiple dates to be selected. Clicking and dragging selects/deselects a range of dates.

Ranged Selection

ranged: (true|false)

Forces the selection to a range of dates. Subsequent clicks and dragging select a new range.

Time Picker

time: (true|false|"ranged")

Enables a single time picker for non-ranged Datepickers when true. For ranged Datepickers, or when time is "ranged", two time pickers are rendered: "start" and "end".

Additional Options

openOn: (Date|"first"|"last"|"today") Default place the Datepicker will open to. A specified date, today, or the first/last date within the selected dates. Default "first".

min/max: (Date|false) Minimum and maximum dates available to select from. Default false.

within: ([Date...]|false) If provided, only dates within this array will be allowed. Default false.

without: ([Date...]|false) If provided, dates within this array will be excluded. Default false.

yearRange: (Integer) How many years forward & backward from the active year the Datepicker will display in the year dropdown menu. Default 5.

weekStart: (Integer) Index of the day of the week to start on, 0-6. 0 == Sunday, 1 == Monday, etc. Default 0.

defaultTime: (Object|Array) Default time when the time option is enabled. Given an array of [hours, minutes], will set both the start and end default times. An object consisting of start and end arrays will set them individually. Default { start: [0, 0], end: [12, 0] }.

separator: (String) The separator used when serializing multiple dates. Default ",".

serialize: ((Date) => String) Transforms a date into a string to be set as the value of the input.

deserialize: ((String) => Date) Parses a string into a date. Called whenever a date string is used instead of a date object.

Callbacks

toValue: (([Date...]) => String) Transforms the current selected dates to a string used to set the value of the input element.

fromValue: ((String) => [Date...]) Parses the value of the input into an array of selected dates.

onInit: ((Element)) Called after initialization with the original input element as the only parameter.

onChange: ((Date|[Date...])) Called whenever the selected dates change or when the time or time range is updated. The currently selected date(s) are passed; start and end times are set on the respective start and end dates.

onRender: ((Element)) Called whenever the Datepicker is rendered. The element passed is the first child from the resulting templates.

Advanced

Localization

i18n:

  • months: An array of month names. 0 == January, 12 == December, etc.

  • weekdays: An array of weekday names. 0 == Sunday, 1 == Monday, etc.

  • time: An array of labels for the time picker. The first, for non-ranged time pickers. The second, for the starting time. And the third, for the ending time.

Customization

classNames:

{
  node:        'datepicker',
  wrapper:     'datepicker__wrapper',
  inline:      'is-inline',
  selected:    'is-selected',
  disabled:    'is-disabled',
  highlighted: 'is-highlighted',
  otherMonth:  'is-otherMonth',
  weekend:     'is-weekend',
  today:       'is-today'
}

templates: Used for rendering the Datepicker. Utilizes John Resig's micro-templating. A number of properties are available within each template's context.

  • container: Top-level element within the wrapper.
  • header: Header navigation for any given month.
  • timepicker: Rendered when the time picker is enabled.
  • calendar: The actual calendar for any given month.
  • day: An individual day within the calendar.

See the default templates for reference. For a list of available properties within each template context, also see the default templates.

Methods

datepiker.set(option[, value])

@param {String|Object} option @param {Mixed} value

Update an option on the Datepicker. Pass an object as the only argument to update multiple options at once.

datepicker.get(option[, ...])

@param {String} option @return {Mixed}

Retrieve the value of an option from the Datepicker. Pass multiple options as additional arguments to receive an object of options in return.

datepicker.open([openOn])

@param {Date|String} openOn

Open the Datepicker to the date specified by openOn. If not specified, will default to the value of the openOn option. See above for possible values.

datepicker.show()

Displays and positions the Datepicker. If inline is true, this method does nothing.

datepicker.hide()

Hides the Datepicker. If inline is true, this method does nothing.

datepicker.toggle()

Toggles the open() and hide() methods based on whether the Datepicker is open or not.

datepicker.next([skip]) datepicker.prev([skip])

@param {Integer} skip

Advance the Datepicker forward/backward by a month. skip will advance the Datepicker by the specified number.

datepicker.goToDate(date)

@param {Date} date

Send the Datepicker to the specified date.

datepicker.hasDate(date)

@param {Date} date @return {Boolean}

Check if the specified date has been selected in the Datepicker.

datepicker.addDate(date) datepicker.removeDate(date)

@param {Date|Array} date

Add/Remove the date or dates to the Datepicker's selection.

datepicker.toggleDate(date[, force])

@param {Date|Array} date @param {Boolean} force

Add or remove the date or dates from the Datepicker's selection. Declaring force will force add/remove the dates regardless of whether they were previously selected or not.

datepicker.getDate()

@return {Date|Array}

Returns the selected date(s). If range is true, returns the first and last selected dates. When the time picker is enabled, the first date will be set to the start time and the last date will be set to the end time.

datepicker.setDate([date])

@param {Date|Array} date

Clears the current selection of dates and gives the Datepicker a new selection.

datepicker.setTime([part, ]hour, minute)

@param {String|Boolean} part @param {Integer} hour @param {Integer} minute

Set the time of the time picker. When part is true, resets the time to the defaultTime. Otherwise, part must be "start" or "end" or it will default to "start".

datepicker.getValue()

@return {String}

Retrieves the string formatted value of the Datepicker. The resulting string is what is set as the input element's value.

datepicker.setValue(val)

@param {String} val

Given a string value, parses it and sets the selected dates and time.

datepicker.dateAllowed(date[, dim])

@param {Date} date @param {String} dim @return {Boolean}

Checks if a given date is allowed to be selected in the Datepicker. If dim is "month", only checks if the date's month is allowed. If dim is "year", checks if the date's year is allowed.

datepicker.render()

Renders the Datepicker using the defined templates and calendar data.

datepicker.getData([index])

@param {Integer} index

Retrieves data about the current month of the Datepicker. Providing an index will retrieve data for the offset month (e.g. 1 would be the next month, -1 would be the previous month, etc.).

Author

Wil Wilsman wilwilsman.com @wilwilsman

Copyright © 2016 Wil Wilsman. MIT License.