Developer-friendly Date Picker In Pure JavaScript – thedatepicker
AUTHOR: | thedatepicker |
---|---|
VIEWS TOTAL: | 97 views |
OFFICIAL PAGE: | Go to website |
LAST UPDATE: | February 10, 2021 |
LICENSE: | MIT |
Preview:
Description:
thedatepicker is a simple, customizable, developer-friendly date picker plugin implemented in pure (vanilla) JavaScript.
How to use it:
Insert the Stylesheet the-datepicker.css
and JavaScript the-datepicker.js
into the HTML file.
<link href="dist/the-datepicker.css" rel="stylesheet" /> <script src="dist/the-datepicker.js"></script>
Create a normal text field to accept the date value.
<input type="text" id="example">
Attach the date picker to the text field. Done.
const input = document.getElementById('example'); const datepicker = new TheDatepicker.Datepicker(input); datepicker.render();
Possible options, functions and API methods.
// set initial date datepicker.options.setInitialDate(); // set initial month datepicker.options.setInitialMonth(); // hide on blur datepicker.options.setHideOnBlur(); // hide on select datepicker.options.setHideOnSelect(); // set date format, e.g. j. n. Y datepicker.options.setInputFormat(); // set the first day of week datepicker.options.setFirstDayOfWeek(); // set min/max dates datepicker.options.setMinDate(); datepicker.options.setMaxDate(); // limits the year selection datepicker.options.setDropdownItemsLimit(1900, 2100); // show/hide days when out of month datepicker.options.setDaysOutOfMonthVisible(); // fixed rows count datepicker.options.setFixedRowsCount(); // toggle selection datepicker.options.setToggleSelection(); // show Deselect button datepicker.options.setShowDeselectButton(); // show Close button datepicker.options.setShowCloseButton(); // show Reset button datepicker.options.setShowResetButton(); // allow empty datepicker.options.setAllowEmpty(); // set title datepicker.options.setTitle(); // show month picker as a dropdown datepicker.options.setMonthAsDropdown(); // show year picker as a dropdown datepicker.options.setYearAsDropdown(); datepicker.options.setMonthAndYearSeparated(); datepicker.options.setPositionFixing(); datepicker.options.setDateAvailabilityResolver((date) => { // return true; }); datepicker.options.setCellContentResolver((day) => { // return day.dayNumber; }); datepicker.options.addCellClassesResolver((day) => { // if (day.dayNumber === 20) return ['red']; // if (day.dayNumber === 10) return ['green']; return []; }); datepicker.options.addDayModifier((day) => { // day.isSunday = day.dayOfWeek === TheDatepicker.DayOfWeek.Sunday; }); datepicker.options.setCellClassesResolver((day) => { // return []; }); datepicker.options.onBeforeSelect((event, day, previousDay) => { // callback }); datepicker.options.onSelect((event, day, previousDay) => { // callback }); datepicker.options.onBeforeSwitch((event, isOpening) => { // callback }); datepicker.options.onSwitch((event, isOpening) => { // callback }); datepicker.options.onBeforeGo((event, month, previousMonth) => { // callback }); datepicker.options.onGo((event, month, previousMonth) => { // callback }); // set prefix datepicker.options.setClassesPrefix(); // set go back HTML datepicker.options.setGoBackHtml(); // set go forward HTML datepicker.options.setGoForwardHtml(); // set close HTML datepicker.options.setCloseHtml(); // set reset HTML datepicker.options.setResetHtml(); // set deselect HTML datepicker.options.setDeselectHtml(); // localize the date picker datepicker.options.translator.setDayOfWeekTranslation(TheDatepicker.DayOfWeek.Monday, 'Mo'); datepicker.options.translator.setDayOfWeekTranslation(TheDatepicker.DayOfWeek.Tuesday, 'Tu'); datepicker.options.translator.setDayOfWeekTranslation(TheDatepicker.DayOfWeek.Wednesday, 'We'); datepicker.options.translator.setDayOfWeekTranslation(TheDatepicker.DayOfWeek.Thursday, 'Th'); datepicker.options.translator.setDayOfWeekTranslation(TheDatepicker.DayOfWeek.Friday, 'Fr'); datepicker.options.translator.setDayOfWeekTranslation(TheDatepicker.DayOfWeek.Saturday, 'Sa'); datepicker.options.translator.setDayOfWeekTranslation(TheDatepicker.DayOfWeek.Sunday, 'Su'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.January, 'January'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.February, 'February'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.March, 'March'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.April, 'April'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.May, 'May'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.June, 'June'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.July, 'July'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.August, 'August'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.September, 'September'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.October, 'October'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.November, 'November'); datepicker.options.translator.setMonthTranslation(TheDatepicker.Month.December, 'December'); // open the date picker datepicker.open(); // close the date picker datepicker.close(); // destroy the date picker datepicker.destroy();
Changelog:
v0.7.4 (02/10/2020)
- updated Typescript to latest
v0.7.3 (02/10/2020)
- Package updated
v0.7.1 (07/10/2020)
- Fixed container positioning on mobile
v0.7.0 (06/17/2020)
- Fullscreen on mobile
v0.6.0 (06/17/2020)
- Prevent dates out of range
v0.5.5 (03/20/2020)
- Update
v0.5.4 (02/13/2020)
- Fixed when removing listeners/resolvers during triggering event
v0.5.3 (02/12/2020)
- added addDayModifier method
v0.5.2 (02/05/2020)
- bugfixed
v0.5.1 (01/30/2020)
- bugfixed
v0.5.1alpha (01/30/2020)
- privatize some methods
v0.5.0 (01/17/2020)
- Better minification
v0.4.9 (01/15/2020)
- JS update
v0.4.7 (12/16/2019)
- onDatepickerReady returns Promise
v0.4.7 (12/06/2019)
- Setting priority of initial month
- Publish parseRawInput
v0.4.3 (12/05/2019)
- update
v0.4.2 (12/04/2019)
- getCurrentMonth visible
v0.4.1 (11/22/2019)
- Customizable day cell content structure
v0.4.0 (10/08/2019)
- Option for merge month and year select
v0.3.5 (09/27/2019)
- Updated
v0.3.4 (09/26/2019)
- Fixed activating