Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nsommer/datepicker.js
Zero-configuration datepicker
https://github.com/nsommer/datepicker.js
css datepicker javascript
Last synced: about 1 month ago
JSON representation
Zero-configuration datepicker
- Host: GitHub
- URL: https://github.com/nsommer/datepicker.js
- Owner: nsommer
- License: mit
- Created: 2016-11-16T14:32:47.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2016-12-30T17:58:00.000Z (about 8 years ago)
- Last Synced: 2024-10-14T19:42:53.410Z (3 months ago)
- Topics: css, datepicker, javascript
- Language: CoffeeScript
- Size: 49.8 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# datepicker.js [![Build Status](https://travis-ci.org/nsommer/datepicker.js.svg?branch=master)](https://travis-ci.org/nsommer/datepicker.js)
All existing datepicker libraries suck, so I wrote my own.
datepicker.js
* **Is not infinitely configurable**, therefore small (~**5.5KB** JS, ~**2.5KB** CSS)
* **Requires zero configuration**, it can be enabled and to some extend customized through HTML5 data attributes
* **Uses semantic markup** to take advantage of HTML5's expressiveness
* **Exposes expressive CSS selectors**, to easily swap styles. Write styles for the datepicker that match your UI theme within minutes.
* **Requires jQuery**
* **Supports keyboard shortcuts**To give you some context: This library is less than 300 lines of JavaScript, the datepicker file of jquery-ui is over 2000 lines of JavaScript ...
## Installation
Unfortunately, all common datepicker names are already reserved in the npm package repository. However, both npm and bower - the two most popular JavaScript package managers - support installation from GitHub repository.
```bash
# If you use npm
npm install --save-dev nsommer/datepicker.js# If you use bower
bower install nsommer/datepicker.js --save
```## Usage
The datepicker requires a `.datepicker-container` container around the input for easier styling and event delegation. `data-toggle="datepicker"` automatically enables the datepicker on an input field, no other JavaScript required.
```html
```Don't forget to include the stylesheet, the JavaScript and jquery!
## Custom styles
The styles for the datepicker widget are found in `scss/_widget.scss`.
The most important style values such as colors, type size etc. are stored in variables with `!default` annotations in `scss/_variables.scss`.
To change the look and feel of the widget - for example to use your application's brand colors - set the corresponding variables **before** importing `datepicker.scss`. This is a popular technique to customize CSS frameworks that use a preprocessor (SASS, LESS).
**Note**: The default styles are written with under the assumption that [normalize.css](https://github.com/necolas/normalize.css/) is included into the page.
## JavaScript API
The datepicker is intentionally designed to be used without any custom JavaScript. Enabling and configuring it is done entirely by using HTML5 `data-*` attributes.
However, you can still access the datepicker instance and interact with it, if you need to. This is done by the jQuery plugin.
```javascript
var datepicker = $("#my-datepicker").datepicker()// Get the selected day as Date object
datepicker.getDate()// Get the selected date as ISO8601
datepicker.getDateAsString()// Set a new date
datepicker.setDate(new Date())// Hide or open it
datepicker.hide()
datepicker.show()// Rerender the widget (e.g. after modifying the date)
datepicker.rerenderView()// Write the current date back to the input field
datepicker.updateInputVal()// Jump a day backwards or forwards
datepicker.previousDay()
datepicker.nextDay()// Jump a week backwards or forwards
datepicker.previousWeek()
datepicker.nextWeek()// Jump a month backwards or forwards
datepicker.previousMonth()
datepicker.nextMonth()
```## Browser Support
Well, IE sucks ...
... however, this library doesn't use any ES6 or other *very new* standards, so it might work on older IEs as well (if you try, tell me about it).
## Development
```bash
git clone https://github.com/nsommer/datepicker.js.git
cd datepicker
npm install
grunt build
```The Gruntfile provides some useful tasks you can use.
| Task | Description |
|------|-------------|
| `grunt build` | Builds the js and css files including minified versions and source maps. |
| `grunt watch` | Watches for file changes and rebuilds. |
| `grunt clean` | Cleans shit away. |
| `grunt server` | Serves the working directory via HTTP at port 8000. |
| `grunt test` | Runs the tests. |All tasks, except `connect` and `test`, can be suffixed with `:js` or `:css` to only apply the task to the JavaScript or to the Stylesheets respectively.
## Contributing
1. Open an issue
2. Fork repo
3. Create branch with meaningful name (e.g. `pr-fix-xyz`, `pr-feature-xyz`)
4. Commit changes
5. Open pull request## Changelog
See `CHANGELOG.md`.
## License
The source code and documentation of this project is available under the [MIT license](https://opensource.org/licenses/MIT).