• Stars
    star
    259
  • Rank 157,669 (Top 4 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 11 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

input[type=date] polyfill

input[type=date] polyfill

NPM version NPM downloads Build Status Coverage Status Twitter

Donate Your help is appreciated. Create a PR, submit a bug or just grab me 🍺

Why another date picker? The problem is that most of existing solutions do not follow standards regarding to value property format, that should have β€œa valid full-date as defined in [RFC 3339]”. In other words representation of date can vary, but the string value should have yyyy-MM-dd format. It helps to work with such values consistently regarding on the current language.

VIEW DEMO

Features

  • lightweight polyfill with no dependencies
  • works for initial and dynamic content elements
  • normalizes input[type=date] presentation for desktop browsers
  • submitted value always has standards based yyyy-MM-dd [RFC 3339] format
  • placeholder attribute works as expected
  • it's possible to change displayed date value format
  • you are able to control where to apply the polyfill
  • keyboard and accessibility friendly

Installation

$ npm install better-dateinput-polyfill

Then append the following scripts to your page:

<script src="node_modules/better-dateinput-polyfill/dist/better-dateinput-polyfill.js"></script>

Forcing the polyfill

Sometimes it's useful to override browser implemetation with the consistent control implemented by the polyfill. To suppress feature detection you can add <meta name="dateinput-polyfill-media"> into your document <head>. Value of content attribute is a media query where polyfill will be applied:

<!-- force polyfill everywhere -->
<meta name="dateinput-polyfill-media" content="screen">
<!-- force polyfill only on mobile devices in portrait mode-->
<meta name="dateinput-polyfill-media" content="screen and (orientation: portrait)">

Change default date presentation format

When no spicified polyfill uses browser settings to format displayed date. You can override date presentation globally with <meta name="dateinput-polyfill-format"> via content attribute or directly on a HTML element with data-format attribute. Value should be options for the Date#toLocaleString call as a stringified JSON object:

<html>
<head>
    <!-- Override default date presentation format -->
    <meta name="dateinput-polyfill-format" content='{"month":"long","year":"numeric","day":"numeric"}'>
</head>
<body>
    <!-- Override date presentation format on a particular element -->
    <input type="date" data-format='{"month":"short","year":"numeric","day":"numeric"}'>
</body>
</html>

Contributing

Download git repository and install project dependencies:

$ npm install

The project uses set of ES6 transpilers to compile the output file. Now use command below to start development:

$ npm run watch

After any change file build/better-dateinput-polyfill.js is recompiled automatically.

Browser support

Desktop

  • Chrome
  • Safari
  • Firefox
  • Opera
  • Edge
  • Internet Explorer 10+

Mobile

  • iOS Safari 10+
  • Chrome for Android 70+

More Repositories

1

better-dom

Live extension playground
JavaScript
545
star
2

cordova-plugin-firebase-messaging

Cordova plugin for Firebase Cloud Messaging
Java
162
star
3

cordova-plugin-firebase-analytics

Cordova plugin for Firebase Analytics
Java
150
star
4

cordova-plugin-firebase-authentication

Cordova plugin for Firebase Authentication
JavaScript
97
star
5

better-form-validation

Form validation polyfill for better-dom
JavaScript
60
star
6

better-details-polyfill

complete <details> polyfill using better-dom
JavaScript
57
star
7

cordova-plugin-firebase-dynamiclinks

Cordova plugin for Firebase Dynamic Links
Objective-C
55
star
8

cordova-support-google-services

DEPRECATED. Cordova plugin to add google services support
40
star
9

cordova-plugin-app-review

Cordova plugin to review app
Objective-C
38
star
10

better-ajaxify

A simple PJAX engine for websites
JavaScript
30
star
11

cordova-plugin-firebase-crash

Cordova plugin for Firebase Crashlytics
JavaScript
27
star
12

cordova-plugin-idfa

Cordova plugin to get Advertising ID (IDFA or AAID)
Objective-C
24
star
13

cordova-plugin-firebase-config

Cordova plugin for Firebase Remote Config
Objective-C
23
star
14

better-placeholder-polyfill

Placeholder attribute polyfill for better-dom
JavaScript
22
star
15

better-timeinput-polyfill

input[type=time] polyfill for better-dom
JavaScript
16
star
16

cordova-plugin-web-share

Web Share API polyfill for Cordova
Java
13
star
17

cordova-plugin-firebase-inappmessaging

Cordova plugin for Firebase In-App Messaging
JavaScript
10
star
18

better-emmet-plugin

Emmet abbreviation parser for better-dom
JavaScript
9
star
19

better-i18n-plugin

Internationalization plugin for better-dom
JavaScript
7
star
20

cordova-support-android-plugin

More convenient base CordovaPlugin class
Java
7
star
21

cordova-plugin-core-android-extensions

Useful methods for an android cordova app
Java
7
star
22

cordova-plugin-browser

Open browser activity in app
Java
7
star
23

formvalidation.js

Polyfill for form validation
JavaScript
6
star
24

better-elastic-textarea

Make textarea to expand on user input
JavaScript
6
star
25

better-time-element

Useful <time> element extensions
JavaScript
3
star
26

better-xhr

Better abstraction for XMLHttpRequest
JavaScript
2
star
27

cordova-plugin-material-snackbar

Cordova plugin for Material design Snackbars
Java
1
star
28

cordova-plugin-fastclick

Cordova plugin to remove click delays on browsers with touch UIs
JavaScript
1
star
29

better-popover-plugin

Popover plugin for better-dom
JavaScript
1
star
30

better-prettydate

Enhaces time element to update in realtime
JavaScript
1
star
31

cordova-plugin-alert

Display platform-specific modal dialogs in your cordova app
Objective-C
1
star