diff --git a/README.md b/README.md
index 62cf8fd..23928ef 100644
--- a/README.md
+++ b/README.md
@@ -57,6 +57,16 @@ include it anywhere in your HTML.
```
+* **ES modules:**
+```js
+import supportsDateInput from 'configurable-date-input-polyfill/src';
+
+if (!supportsDateInput()) {
+ import('configurable-date-input-polyfill/src/add-picker')
+ .then(({ default: addPickerToInputs }) => addPickerToInputs([yourInputElement]));
+}
+```
+
* This package supports **AMD**.
diff --git a/dist/configurable-date-input-polyfill.dist.js b/dist/configurable-date-input-polyfill.dist.js
index 5081cc7..d499151 100644
--- a/dist/configurable-date-input-polyfill.dist.js
+++ b/dist/configurable-date-input-polyfill.dist.js
@@ -1 +1 @@
-!function(){"use strict";var t={815:function(t,e,r){var a=r(81),n=r.n(a),o=r(645),i=r.n(o)()(n());i.push([t.id,'date-input-polyfill{width:auto;min-width:260px;height:auto;background-color:#fff;-webkit-box-shadow:0 0 5px 2px rgba(128,128,128,.81);-moz-box-shadow:0 0 5px 2px rgba(128,128,128,.81);box-shadow:0 0 5px 2px rgba(128,128,128,.81);position:absolute;font-family:Arial,sans-serif;font-size:16px;color:#000}date-input-polyfill .date-select-header{position:relative;width:100%;height:40px;background-color:#fff;text-align:center;line-height:40px}date-input-polyfill .date-select-header .date-header-button{padding:5px 25px 5px 5px;border:solid 1px #a8a3a3;background-color:#fff;min-width:150px;width:auto;max-width:180px;height:28px;border-radius:5px;cursor:pointer;position:relative;line-height:15px;font-size:13px}date-input-polyfill .date-select-header .date-header-button.active:after{content:"<";display:inline-block;position:absolute;right:10px;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg);font-size:18px;top:6px}date-input-polyfill .date-select-header .date-header-button.inactive:after{content:"<";display:inline-block;position:absolute;right:10px;-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg);font-size:18px;top:6px}date-input-polyfill .day-matrix-wrapper{position:relative;background-color:#fff;width:100%;height:auto;padding:0 10px 10px 10px;box-sizing:border-box}date-input-polyfill .day-matrix-wrapper table{width:100%;text-align:center;font-size:18px;padding:0;line-height:24px;border-collapse:separate}date-input-polyfill .day-matrix-wrapper table thead{color:#b4b4b4;pointer-events:none}date-input-polyfill .day-matrix-wrapper table thead th{border:none;padding:0;text-align:center;font-size:18px}date-input-polyfill .day-matrix-wrapper table tbody td{border:solid 1px #fff;padding:0;text-align:center;font-size:18px;width:30px}date-input-polyfill .day-matrix-wrapper table tbody td.current-day{border:solid 1px #cce5f3;background-color:#cce5f3}date-input-polyfill .day-matrix-wrapper table tbody td.current-day.disabled{border:solid 1px #fff}date-input-polyfill .day-matrix-wrapper table tbody td[data-selected]{font-weight:bold;border:solid 1px #a2d8f6;background-color:#a2d8f6}date-input-polyfill .day-matrix-wrapper table tbody td[data-selected]:hover{border:solid 1px #a2d8f6;background-color:#a2d8f6}date-input-polyfill .day-matrix-wrapper table tbody td.prev-month,date-input-polyfill .day-matrix-wrapper table tbody td.next-month{color:#d3d3d3}date-input-polyfill .day-matrix-wrapper table tbody td.prev-month:hover,date-input-polyfill .day-matrix-wrapper table tbody td.next-month:hover{color:#fff}date-input-polyfill .day-matrix-wrapper table tbody td.disabled{background-color:gray;color:#d3d3d3}date-input-polyfill .day-matrix-wrapper table tbody td.disabled:hover{background-color:gray;border:solid 1px #fff;color:#d3d3d3}date-input-polyfill .day-matrix-wrapper table tbody td:hover{cursor:pointer;background-color:#d3d3d3;border:solid 1px #d3d3d3}date-input-polyfill .date-select-dropdown{position:absolute;width:100%;height:auto;top:40px;background-color:#fff;display:none}date-input-polyfill .date-select-dropdown .select-container{position:relative;float:left;width:100%;height:auto;padding:5px 60px 5px 60px}date-input-polyfill .date-select-dropdown .select-container .up,date-input-polyfill .date-select-dropdown .select-container .down{width:100%;height:25px;text-align:center;background-color:rgba(0,0,0,0);cursor:pointer;line-height:22px;float:left;border:none;outline:none;color:#7d7d7d;position:relative}date-input-polyfill .date-select-dropdown .select-container .up:after,date-input-polyfill .date-select-dropdown .select-container .down:after{content:"<";position:absolute;top:0;left:19px;font-size:20px;display:inline-block;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}date-input-polyfill .date-select-dropdown .select-container .down:after{-webkit-transform:rotate(-90deg);-moz-transform:rotate(-90deg);-o-transform:rotate(-90deg);-ms-transform:rotate(-90deg);transform:rotate(-90deg)}date-input-polyfill .date-select-dropdown .select-container .select-wrapper{float:left;width:50px;height:175px;position:relative;margin:10px}date-input-polyfill .date-select-dropdown .select-container .select-wrapper .option-wrapper{float:left;width:100%;height:auto}date-input-polyfill .date-select-dropdown .select-container .select-wrapper .option-wrapper .option{height:25px;border-radius:5px;text-align:center;float:left;width:100%;line-height:25px}date-input-polyfill .date-select-dropdown .select-container .select-wrapper .option-wrapper .option:nth-child(3){background-color:#d3d3d3}date-input-polyfill[data-open=false]{visibility:hidden;z-index:-100 !important;top:0}date-input-polyfill[data-open=true]{visibility:visible}',""]),e.Z=i},645:function(t){t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var r="",a=void 0!==e[5];return e[4]&&(r+="@supports (".concat(e[4],") {")),e[2]&&(r+="@media ".concat(e[2]," {")),a&&(r+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),r+=t(e),a&&(r+="}"),e[2]&&(r+="}"),e[4]&&(r+="}"),r})).join("")},e.i=function(t,r,a,n,o){"string"==typeof t&&(t=[[null,t,void 0]]);var i={};if(a)for(var l=0;l0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=o),r&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=r):d[2]=r),n&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=n):d[4]="".concat(n)),e.push(d))}},e}},81:function(t){t.exports=function(t){return t[1]}},379:function(t){var e=[];function r(t){for(var r=-1,a=0;a0?" ".concat(r.layer):""," {")),a+=r.css,n&&(a+="}"),r.media&&(a+="}"),r.supports&&(a+="}");var o=r.sourceMap;o&&"undefined"!=typeof btoa&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),e.styleTagTransform(a,t,e.options)}(e,t,r)},remove:function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(e)}}}},589:function(t){t.exports=function(t,e){if(e.styleSheet)e.styleSheet.cssText=t;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(t))}}}},e={};function r(a){var n=e[a];if(void 0!==n)return n.exports;var o=e[a]={id:a,exports:{}};return t[a](o,o.exports,r),o.exports}r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,{a:e}),e},r.d=function(t,e){for(var a in e)r.o(e,a)&&!r.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.nc=void 0,function(){var t=r(379),e=r.n(t),a=r(795),n=r.n(a),o=r(569),i=r.n(o),l=r(565),s=r.n(l),u=r(216),d=r.n(u),c=r(589),p=r.n(c),h=r(815),m={};function f(t){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},f(t)}function y(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&b(t,e)}function b(t,e){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},b(t,e)}function g(t){var e=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}();return function(){var r,a=v(t);if(e){var n=v(this).constructor;r=Reflect.construct(a,arguments,n)}else r=a.apply(this,arguments);return function(t,e){if(e&&("object"===f(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t)}(this,r)}}function v(t){return v=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},v(t)}function S(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function D(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null,e=[],r=this.selectedLocaleArray;return t||0===t?this.selectedLocaleArray[t]:(this.monthArray.forEach((function(t){e.push(r[t].substring(0,3))})),e)}},{key:"toggleByInput",value:function(t){t!==this.monthArray[2]&&(this.monthArray=this.rotate(this.monthArray,this.calculateDateOffset(t)),this.redrawMonthSelect())}},{key:"calculateDateOffset",value:function(t){var e=this.monthArray.length,r=0;switch(!0){case tthis.monthArray[2]:r=t-this.monthArray[2]}return r}},{key:"rotate",value:function(t,e){for(var r=e;r>0;){var a=t.shift();t.push(a),r-=1}return t}},{key:"toggleByMatrix",value:function(t){switch(t){case"next":this.monthArray=this.rotate(this.monthArray,1);break;case"prev":this.monthArray=this.rotate(this.monthArray,11)}this.redrawMonthSelect()}},{key:"returnSelectedMonthAsLabel",value:function(){return this.returnMonthStringArray(this.monthArray[2])}},{key:"returnSelectedMonth",value:function(){return this.monthArray[2]}}]),r}(A);function E(t){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},E(t)}function k(t,e){for(var r=0;r2||t.classList.contains("disabled"))){var e=this.daysWrapper.querySelector("[data-selected]");e&&e.removeAttribute("data-selected"),t.setAttribute("data-selected","");var r=!1;t.classList.contains("next-month")?(11===this.monthSelect.returnSelectedMonth()&&this.yearSelect.toggleByInput(this.yearSelect.returnSelectedYear()+1),this.monthSelect.toggleByMatrix("next"),r=!0):t.classList.contains("prev-month")&&(0===this.monthSelect.returnSelectedMonth()&&this.yearSelect.toggleByInput(this.yearSelect.returnSelectedYear()-1),this.monthSelect.toggleByMatrix("prev"),r=!0),r&&(this.date=new Date,this.date.setMonth(this.monthSelect.returnSelectedMonth()),this.date.setFullYear(this.yearSelect.returnSelectedYear()),this.dateHeaderButton.innerHTML="".concat(this.monthSelect.returnSelectedMonthAsLabel()," ").concat(this.yearSelect.returnSelectedYear())),this.date.setDate(parseInt(t.textContent)),this.setInput()}}},{key:"positionPicker",value:function(t){var e=t.getBoundingClientRect();this.pickerElement.style.top="".concat(e.top+e.height+(document.documentElement.scrollTop||document.body.scrollTop)+3,"px");var r=this.pickerElement.getBoundingClientRect(),a=r.width?r.width:280,n=e.right-a;this.pickerElement.className="polyfill-right-aligned",e.right=e)this.monthSelect.toggleByInput(this.date.getMonth()),this.yearSelect.toggleByInput(this.date.getFullYear());else{var a=new Date;this.date=a<=r&&a>=e?a:e,this.monthSelect.toggleByInput(this.date.getMonth()),this.yearSelect.toggleByInput(this.date.getFullYear())}this.dateHeaderButton.innerHTML="".concat(this.monthSelect.returnSelectedMonthAsLabel()," ").concat(this.yearSelect.returnSelectedYear());for(var n=this.selectWrapper.getElementsByClassName("control"),o=0;o'.concat(this.localeLabels.days[e],""));return"mo"===this.targetInputElement.firstDayOfWeek&&t.push(t.shift()),"sa"===this.targetInputElement.firstDayOfWeek&&t.unshift(t.pop()),this.daysHead.innerHTML=" ".concat(t.join(""),"
"),!0}},{key:"refreshDaysMatrix",value:function(){var t,e=this.date.getFullYear(),r=this.date.getMonth(),a=[],n=this.returnAbsoluteDate(e,r,1).getDay(),o=this.returnAbsoluteDate(e,r+1,0).getDate();if("mo"===this.targetInputElement.firstDayOfWeek&&(0===n?n=6:n-=1),"sa"===this.targetInputElement.firstDayOfWeek&&(6===n?n=0:n+=1),n>0)for(var i=this.returnAbsoluteDate(e,r,0).getDate(),l=n,s=l-1,u=0;u":"","")),b+1<=n){var g=this.returnAbsoluteDate(e,r-1,a[b]);p.push('| ').concat(a[b]," | "))}else{var v=b+1-n,S=c&&d.getDate()===v,D=this.returnAbsoluteDate(e,r,v);if(m&&h.getDate()===v)p.push("").concat(v," | "));else{var w="").concat(v," | ");p.push(w)}}var A=n+o;if(A<42)for(var M=this.returnAbsoluteDate(e,r+2,0),x=1;A<42;)M.setDate(x),A%7==0&&p.push("".concat(0!==x?"
":"","")),p.push('| ').concat(x," | ")),x+=1,A+=1;this.daysWrapper.innerHTML=p.join("")}},{key:"returnCurrentDate",value:function(){return this.date}},{key:"returnAbsoluteDate",value:function(t,e,r){var a=new Date;return a.setFullYear(t,e,r),a.setHours(0,0,0,0),a}}])&&k(e.prototype,r),Object.defineProperty(e,"prototype",{writable:!1}),t}());function N(t){return N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},N(t)}var O,L,H,W=(O=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|'[^']*'/g,L=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,H=/[^-+\dA-Z]/g,function(t,e,r,a){if(1!==arguments.length||"string"!==(null===(n=t)?"null":void 0===n?"undefined":"object"!==N(n)?N(n):Array.isArray(n)?"array":{}.toString.call(n).slice(8,-1).toLowerCase())||/\d/.test(t)||(e=t,t=void 0),(t=t||new Date)instanceof Date||(t=new Date(t)),isNaN(t))throw TypeError("Invalid date");var n,o=(e=String(W.masks[e]||e||W.masks.default)).slice(0,4);"UTC:"!==o&&"GMT:"!==o||(e=e.slice(4),r=!0,"GMT:"===o&&(a=!0));var i=r?"getUTC":"get",l=t[i+"Date"](),s=t[i+"Day"](),u=t[i+"Month"](),d=t[i+"FullYear"](),c=t[i+"Hours"](),p=t[i+"Minutes"](),h=t[i+"Seconds"](),m=t[i+"Milliseconds"](),f=r?0:t.getTimezoneOffset(),y=function(t){var e=new Date(t.getFullYear(),t.getMonth(),t.getDate());e.setDate(e.getDate()-(e.getDay()+6)%7+3);var r=new Date(e.getFullYear(),0,4);r.setDate(r.getDate()-(r.getDay()+6)%7+3);var a=e.getTimezoneOffset()-r.getTimezoneOffset();e.setHours(e.getHours()-a);var n=(e-r)/6048e5;return 1+Math.floor(n)}(t),b=function(t){var e=t.getDay();return 0===e&&(e=7),e}(t),g={d:l,dd:C(l),ddd:W.i18n.dayNames[s],dddd:W.i18n.dayNames[s+7],m:u+1,mm:C(u+1),mmm:W.i18n.monthNames[u],mmmm:W.i18n.monthNames[u+12],yy:String(d).length<3?d:String(d).slice(String(d).length-2),yyyy:C(d,4),h:c%12||12,hh:C(c%12||12),H:c,HH:C(c),M:p,MM:C(p),s:h,ss:C(h),l:C(m,3),L:C(Math.round(m/10)),t:c<12?"a":"p",tt:c<12?"am":"pm",T:c<12?"A":"P",TT:c<12?"AM":"PM",Z:a?"GMT":r?"UTC":(String(t).match(L)||[""]).pop().replace(H,""),o:(f>0?"-":"+")+C(100*Math.floor(Math.abs(f)/60)+Math.abs(f)%60,4),S:["th","st","nd","rd"][l%10>3?0:(l%100-l%10!=10)*l%10],W:y,N:b};return e.replace(O,(function(t){return t in g?g[t]:t.slice(1,t.length-1)}))});function C(t,e){for(t=String(t),e=e||2;t.lengtho&&(n=r,o=a),n=0||n.indexOf(t.slice(0,2))>=0)&&(e=Y[a])})),e}function R(t){for(var e=function(){var e=t[r],a=J(e),n=function(t){return t.getAttribute("date-format")||document.body.getAttribute("date-format")||t.getAttribute("data-date-format")||document.body.getAttribute("data-date-format")||"yyyy-mm-dd"}(e),o=P(e),i=_(e),l=j(o,i),s=z(a),u=B(e),d=function(t){return!!t.getAttribute("data-force-polyfill")}(e);d&&e.setAttribute("type","text");var c,p,h,m,f,y={htmlElement:e,firstDayOfWeek:u,dateFormat:n,dateRange:l,locale:a,localeLabels:s,minDateAttribute:o,maxDateAttribute:i};e.setAttribute("data-has-picker",""),e.addEventListener("focus",(function(){return F(y)})),e.addEventListener("mouseup",(function(){return F(y)})),c=y,"MutationObserver"in window&&new MutationObserver((function(t){t.forEach((function(t){if(-1!==t.attributeName.indexOf("min")||-1!==t.attributeName.indexOf("max"))c.minDateAttribute=P(c.htmlElement),c.maxDateAttribute=_(c.htmlElement),c.dateRange=j(c.minDateAttribute,c.maxDateAttribute);else if("lang"===t.attributeName)c.locale=J(c.htmlElement),c.localeLabels=z(c.locale);else if("data-first-day"===t.attributeName)c.firstDayOfWeek=B(c.htmlElement);else if("data-date-format"===t.attributeName||"date-format"===t.attributeName){var e=c.htmlElement.valueAsDate;c.dateFormat=c.htmlElement.getAttribute(t.attributeName)||"yyyy-mm-dd",e&&(c.htmlElement.valueAsDate=e)}}))})).observe(c.htmlElement,{attributes:!0}),function(t){var e=t;Object.defineProperties(e.htmlElement,{valueAsDate:{get:function(){if(!e.htmlElement.value)return null;function t(t,e){for(var r=t.length-1;r>=0;r-=1)if(t[r].charAt(0)===e)return r;return null}var r=(e.dateFormat||"yyyy-mm-dd").split(/(m+|d+|y+)/).filter(Boolean),a=e.htmlElement.value.split(/(\D+)/).filter(Boolean),n=Number(a[t(r,"y")||0]),o=Number(a[t(r,"m")||0]),i=Number(a[t(r,"d")||0]),l=new Date(n,o-1,i,0,0,0,0);return isNaN(l.getDate())?null:l},set:function(t){var r;e.htmlElement.value=I(t,e.dateFormat),"function"==typeof Event?r=new Event("change",{bubbles:!0}):(r=document.createEvent("Event")).initEvent("change",!0,!0),e.htmlElement.dispatchEvent(r)}},valueAsNumber:{get:function(){return e.htmlElement.value?e.htmlElement.valueAsDate.valueOf():NaN},set:function(t){e.htmlElement.valueAsDate=new Date(t)}}})}(y),h=(p=y).dateRange[0],m=p.dateRange[1],(f=p.htmlElement).addEventListener("keydown",(function(t){var e=new Date;switch(t.keyCode){case 9:case 27:T.hide();break;case 37:f.valueAsDate&&((e=T.returnCurrentDate()).setDate(e.getDate()-1),e>=h&&(f.valueAsDate=e));break;case 38:f.valueAsDate&&((e=T.returnCurrentDate()).setDate(e.getDate()-7),e>=h&&(f.valueAsDate=e));break;case 39:f.valueAsDate&&((e=T.returnCurrentDate()).setDate(e.getDate()+1),e<=m&&(f.valueAsDate=e));break;case 40:f.valueAsDate&&((e=T.returnCurrentDate()).setDate(e.getDate()+7),e<=m&&(f.valueAsDate=e))}T.syncPickerWithInput()})),f.addEventListener("keyup",(function(){T.syncPickerWithInput()}))},r=0;r0?" ".concat(t[5]):""," {")),r+=e(t),a&&(r+="}"),t[2]&&(r+="}"),t[4]&&(r+="}"),r})).join("")},t.i=function(e,r,a,n,o){"string"==typeof e&&(e=[[null,e,void 0]]);var i={};if(a)for(var l=0;l0?" ".concat(d[5]):""," {").concat(d[1],"}")),d[5]=o),r&&(d[2]?(d[1]="@media ".concat(d[2]," {").concat(d[1],"}"),d[2]=r):d[2]=r),n&&(d[4]?(d[1]="@supports (".concat(d[4],") {").concat(d[1],"}"),d[4]=n):d[4]="".concat(n)),t.push(d))}},t}},81:function(e){e.exports=function(e){return e[1]}},379:function(e){var t=[];function r(e){for(var r=-1,a=0;a0?" ".concat(r.layer):""," {")),a+=r.css,n&&(a+="}"),r.media&&(a+="}"),r.supports&&(a+="}");var o=r.sourceMap;o&&"undefined"!=typeof btoa&&(a+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(o))))," */")),t.styleTagTransform(a,e,t.options)}(t,e,r)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(t)}}}},589:function(e){e.exports=function(e,t){if(t.styleSheet)t.styleSheet.cssText=e;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(e))}}}},t={};function r(a){var n=t[a];if(void 0!==n)return n.exports;var o=t[a]={id:a,exports:{}};return e[a](o,o.exports,r),o.exports}r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,{a:t}),t},r.d=function(e,t){for(var a in t)r.o(t,a)&&!r.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.nc=void 0,function(){var e=r(379),t=r.n(e),a=r(795),n=r.n(a),o=r(569),i=r.n(o),l=r(565),s=r.n(l),u=r(216),d=r.n(u),c=r(589),p=r.n(c),h=r(815),m={};function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function y(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&b(e,t)}function b(e,t){return b=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},b(e,t)}function g(e){var t=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}();return function(){var r,a=v(e);if(t){var n=v(this).constructor;r=Reflect.construct(a,arguments,n)}else r=a.apply(this,arguments);return function(e,t){if(t&&("object"===f(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e)}(this,r)}}function v(e){return v=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},v(e)}function S(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function D(e,t){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:null,t=[],r=this.selectedLocaleArray;return e||0===e?this.selectedLocaleArray[e]:(this.monthArray.forEach((function(e){t.push(r[e].substring(0,3))})),t)}},{key:"toggleByInput",value:function(e){e!==this.monthArray[2]&&(this.monthArray=this.rotate(this.monthArray,this.calculateDateOffset(e)),this.redrawMonthSelect())}},{key:"calculateDateOffset",value:function(e){var t=this.monthArray.length,r=0;switch(!0){case ethis.monthArray[2]:r=e-this.monthArray[2]}return r}},{key:"rotate",value:function(e,t){for(var r=t;r>0;){var a=e.shift();e.push(a),r-=1}return e}},{key:"toggleByMatrix",value:function(e){switch(e){case"next":this.monthArray=this.rotate(this.monthArray,1);break;case"prev":this.monthArray=this.rotate(this.monthArray,11)}this.redrawMonthSelect()}},{key:"returnSelectedMonthAsLabel",value:function(){return this.returnMonthStringArray(this.monthArray[2])}},{key:"returnSelectedMonth",value:function(){return this.monthArray[2]}}]),r}(A);function E(e){return E="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},E(e)}function k(e,t){for(var r=0;r2||e.classList.contains("disabled"))){var t=this.daysWrapper.querySelector("[data-selected]");t&&t.removeAttribute("data-selected"),e.setAttribute("data-selected","");var r=!1;e.classList.contains("next-month")?(11===this.monthSelect.returnSelectedMonth()&&this.yearSelect.toggleByInput(this.yearSelect.returnSelectedYear()+1),this.monthSelect.toggleByMatrix("next"),r=!0):e.classList.contains("prev-month")&&(0===this.monthSelect.returnSelectedMonth()&&this.yearSelect.toggleByInput(this.yearSelect.returnSelectedYear()-1),this.monthSelect.toggleByMatrix("prev"),r=!0),r&&(this.date=new Date,this.date.setMonth(this.monthSelect.returnSelectedMonth()),this.date.setFullYear(this.yearSelect.returnSelectedYear()),this.dateHeaderButton.innerHTML="".concat(this.monthSelect.returnSelectedMonthAsLabel()," ").concat(this.yearSelect.returnSelectedYear())),this.date.setDate(parseInt(e.textContent)),this.setInput()}}},{key:"positionPicker",value:function(e){var t=e.getBoundingClientRect();this.pickerElement.style.top="".concat(t.top+t.height+(document.documentElement.scrollTop||document.body.scrollTop)+3,"px");var r=this.pickerElement.getBoundingClientRect(),a=r.width?r.width:280,n=t.right-a;this.pickerElement.className="polyfill-right-aligned",t.right=t)this.monthSelect.toggleByInput(this.date.getMonth()),this.yearSelect.toggleByInput(this.date.getFullYear());else{var a=new Date;this.date=a<=r&&a>=t?a:t,this.monthSelect.toggleByInput(this.date.getMonth()),this.yearSelect.toggleByInput(this.date.getFullYear())}this.dateHeaderButton.innerHTML="".concat(this.monthSelect.returnSelectedMonthAsLabel()," ").concat(this.yearSelect.returnSelectedYear());for(var n=this.selectWrapper.getElementsByClassName("control"),o=0;o'.concat(this.localeLabels.days[t],""));return"mo"===this.targetInputElement.firstDayOfWeek&&e.push(e.shift()),"sa"===this.targetInputElement.firstDayOfWeek&&e.unshift(e.pop()),this.daysHead.innerHTML=" ".concat(e.join(""),"
"),!0}},{key:"refreshDaysMatrix",value:function(){var e,t=this.date.getFullYear(),r=this.date.getMonth(),a=[],n=this.returnAbsoluteDate(t,r,1).getDay(),o=this.returnAbsoluteDate(t,r+1,0).getDate();if("mo"===this.targetInputElement.firstDayOfWeek&&(0===n?n=6:n-=1),"sa"===this.targetInputElement.firstDayOfWeek&&(6===n?n=0:n+=1),n>0)for(var i=this.returnAbsoluteDate(t,r,0).getDate(),l=n,s=l-1,u=0;u":"","")),b+1<=n){var g=this.returnAbsoluteDate(t,r-1,a[b]);p.push('| ').concat(a[b]," | "))}else{var v=b+1-n,S=c&&d.getDate()===v,D=this.returnAbsoluteDate(t,r,v);if(m&&h.getDate()===v)p.push("").concat(v," | "));else{var w="").concat(v," | ");p.push(w)}}var A=n+o;if(A<42)for(var M=this.returnAbsoluteDate(t,r+2,0),x=1;A<42;)M.setDate(x),A%7==0&&p.push("".concat(0!==x?"
":"","")),p.push('| ').concat(x," | ")),x+=1,A+=1;this.daysWrapper.innerHTML=p.join("")}},{key:"returnCurrentDate",value:function(){return this.date}},{key:"returnAbsoluteDate",value:function(e,t,r){var a=new Date;return a.setFullYear(e,t,r),a.setHours(0,0,0,0),a}}])&&k(t.prototype,r),Object.defineProperty(t,"prototype",{writable:!1}),e}());function N(e){return N="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},N(e)}var O,L,H,W=(O=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZWN]|'[^']*'/g,L=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,H=/[^-+\dA-Z]/g,function(e,t,r,a){if(1!==arguments.length||"string"!==(null===(n=e)?"null":void 0===n?"undefined":"object"!==N(n)?N(n):Array.isArray(n)?"array":{}.toString.call(n).slice(8,-1).toLowerCase())||/\d/.test(e)||(t=e,e=void 0),(e=e||new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var n,o=(t=String(W.masks[t]||t||W.masks.default)).slice(0,4);"UTC:"!==o&&"GMT:"!==o||(t=t.slice(4),r=!0,"GMT:"===o&&(a=!0));var i=r?"getUTC":"get",l=e[i+"Date"](),s=e[i+"Day"](),u=e[i+"Month"](),d=e[i+"FullYear"](),c=e[i+"Hours"](),p=e[i+"Minutes"](),h=e[i+"Seconds"](),m=e[i+"Milliseconds"](),f=r?0:e.getTimezoneOffset(),y=function(e){var t=new Date(e.getFullYear(),e.getMonth(),e.getDate());t.setDate(t.getDate()-(t.getDay()+6)%7+3);var r=new Date(t.getFullYear(),0,4);r.setDate(r.getDate()-(r.getDay()+6)%7+3);var a=t.getTimezoneOffset()-r.getTimezoneOffset();t.setHours(t.getHours()-a);var n=(t-r)/6048e5;return 1+Math.floor(n)}(e),b=function(e){var t=e.getDay();return 0===t&&(t=7),t}(e),g={d:l,dd:C(l),ddd:W.i18n.dayNames[s],dddd:W.i18n.dayNames[s+7],m:u+1,mm:C(u+1),mmm:W.i18n.monthNames[u],mmmm:W.i18n.monthNames[u+12],yy:String(d).length<3?d:String(d).slice(String(d).length-2),yyyy:C(d,4),h:c%12||12,hh:C(c%12||12),H:c,HH:C(c),M:p,MM:C(p),s:h,ss:C(h),l:C(m,3),L:C(Math.round(m/10)),t:c<12?"a":"p",tt:c<12?"am":"pm",T:c<12?"A":"P",TT:c<12?"AM":"PM",Z:a?"GMT":r?"UTC":(String(e).match(L)||[""]).pop().replace(H,""),o:(f>0?"-":"+")+C(100*Math.floor(Math.abs(f)/60)+Math.abs(f)%60,4),S:["th","st","nd","rd"][l%10>3?0:(l%100-l%10!=10)*l%10],W:y,N:b};return t.replace(O,(function(e){return e in g?g[e]:e.slice(1,e.length-1)}))});function C(e,t){for(e=String(e),t=t||2;e.lengtho&&(n=r,o=a),n=0||n.indexOf(e.slice(0,2))>=0)&&(t=Y[a])})),t}function R(e){for(var t=function(){var t=e[r],a=J(t),n=function(e){return e.getAttribute("date-format")||document.body.getAttribute("date-format")||e.getAttribute("data-date-format")||document.body.getAttribute("data-date-format")||"yyyy-mm-dd"}(t),o=P(t),i=_(t),l=j(o,i),s=z(a),u=B(t),d=function(e){return!!e.getAttribute("data-force-polyfill")}(t);d&&t.setAttribute("type","text");var c,p,h,m,f,y={htmlElement:t,firstDayOfWeek:u,dateFormat:n,dateRange:l,locale:a,localeLabels:s,minDateAttribute:o,maxDateAttribute:i};t.setAttribute("data-has-picker",""),t.addEventListener("focus",(function(){return F(y)})),t.addEventListener("mouseup",(function(){return F(y)})),c=y,"MutationObserver"in window&&new MutationObserver((function(e){e.forEach((function(e){if(-1!==e.attributeName.indexOf("min")||-1!==e.attributeName.indexOf("max"))c.minDateAttribute=P(c.htmlElement),c.maxDateAttribute=_(c.htmlElement),c.dateRange=j(c.minDateAttribute,c.maxDateAttribute);else if("lang"===e.attributeName)c.locale=J(c.htmlElement),c.localeLabels=z(c.locale);else if("data-first-day"===e.attributeName)c.firstDayOfWeek=B(c.htmlElement);else if("data-date-format"===e.attributeName||"date-format"===e.attributeName){var t=c.htmlElement.valueAsDate;c.dateFormat=c.htmlElement.getAttribute(e.attributeName)||"yyyy-mm-dd",t&&(c.htmlElement.valueAsDate=t)}}))})).observe(c.htmlElement,{attributes:!0}),function(e){var t=e;Object.defineProperties(t.htmlElement,{valueAsDate:{get:function(){if(!t.htmlElement.value)return null;function e(e,t){for(var r=e.length-1;r>=0;r-=1)if(e[r].charAt(0)===t)return r;return null}var r=(t.dateFormat||"yyyy-mm-dd").split(/(m+|d+|y+)/).filter(Boolean),a=t.htmlElement.value.split(/(\D+)/).filter(Boolean),n=Number(a[e(r,"y")||0]),o=Number(a[e(r,"m")||0]),i=Number(a[e(r,"d")||0]),l=new Date(n,o-1,i,0,0,0,0);return isNaN(l.getDate())?null:l},set:function(e){var r;t.htmlElement.value=I(e,t.dateFormat),"function"==typeof Event?r=new Event("change",{bubbles:!0}):(r=document.createEvent("Event")).initEvent("change",!0,!0),t.htmlElement.dispatchEvent(r)}},valueAsNumber:{get:function(){return t.htmlElement.value?t.htmlElement.valueAsDate.valueOf():NaN},set:function(e){t.htmlElement.valueAsDate=new Date(e)}}})}(y),h=(p=y).dateRange[0],m=p.dateRange[1],(f=p.htmlElement).addEventListener("keydown",(function(e){var t=new Date;switch(e.keyCode){case 9:case 27:T.hide();break;case 37:f.valueAsDate&&((t=T.returnCurrentDate()).setDate(t.getDate()-1),t>=h&&(f.valueAsDate=t));break;case 38:f.valueAsDate&&((t=T.returnCurrentDate()).setDate(t.getDate()-7),t>=h&&(f.valueAsDate=t));break;case 39:f.valueAsDate&&((t=T.returnCurrentDate()).setDate(t.getDate()+1),t<=m&&(f.valueAsDate=t));break;case 40:f.valueAsDate&&((t=T.returnCurrentDate()).setDate(t.getDate()+7),t<=m&&(f.valueAsDate=t))}T.syncPickerWithInput()})),f.addEventListener("keyup",(function(){T.syncPickerWithInput()}))},r=0;r showPicker(dateInput));
+ htmlElement.addEventListener('mouseup', () => showPicker(dateInput));
+
+ createMutationObserver(dateInput);
+ setupValueProperties(dateInput);
+ setupKeyEvents(dateInput);
+ }
+}
diff --git a/src/configurable-date-input-polyfill.js b/src/configurable-date-input-polyfill.js
index d617914..f2b025d 100644
--- a/src/configurable-date-input-polyfill.js
+++ b/src/configurable-date-input-polyfill.js
@@ -1,64 +1,8 @@
import './configurable-date-input-polyfill.scss';
-import {
- showPicker,
- getDateRange,
- setupKeyEvents,
- getLocaleLabels,
- returnDateFormat,
- returnSelectedLocale,
- setupValueProperties,
- returnSelectedMinDate,
- returnSelectedMaxDate,
- createMutationObserver,
- returnForcePolyfillFlag,
- returnSelectedFirstDayOfWeek,
-} from './inputUtilities';
-function supportsDateInput() {
- // Return false if the browser does not support input[type="date"].
- const input = document.createElement('input');
- input.setAttribute('type', 'date');
+import supportsDateInput from './index';
- const notADateValue = 'not-a-date';
- input.setAttribute('value', notADateValue);
-
- return !(input.value === notADateValue);
-}
-
-function addPickerToInputs(dateInputs) {
- for (let i = 0; i < dateInputs.length; i += 1) {
- const htmlElement = dateInputs[i];
- const locale = returnSelectedLocale(htmlElement);
- const dateFormat = returnDateFormat(htmlElement);
- const minDateAttribute = returnSelectedMinDate(htmlElement);
- const maxDateAttribute = returnSelectedMaxDate(htmlElement);
- const dateRange = getDateRange(minDateAttribute, maxDateAttribute);
- const localeLabels = getLocaleLabels(locale);
- const firstDayOfWeek = returnSelectedFirstDayOfWeek(htmlElement);
- const forcePolyfill = returnForcePolyfillFlag(htmlElement);
-
- if (forcePolyfill) htmlElement.setAttribute('type', 'text');
-
- const dateInput = {
- htmlElement,
- firstDayOfWeek,
- dateFormat,
- dateRange,
- locale,
- localeLabels,
- minDateAttribute,
- maxDateAttribute,
- };
-
- htmlElement.setAttribute('data-has-picker', '');
- htmlElement.addEventListener('focus', () => showPicker(dateInput));
- htmlElement.addEventListener('mouseup', () => showPicker(dateInput));
-
- createMutationObserver(dateInput);
- setupValueProperties(dateInput);
- setupKeyEvents(dateInput);
- }
-}
+import addPickerToInputs from './add-picker';
function addPolyfillPickers() {
addPickerToInputs(document.querySelectorAll('input[type="text"].date-polyfill:not([data-has-picker])'));
diff --git a/src/index.d.ts b/src/index.d.ts
new file mode 100644
index 0000000..254b3df
--- /dev/null
+++ b/src/index.d.ts
@@ -0,0 +1 @@
+export default function supportsDateInput(): boolean;
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..a8e3544
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,10 @@
+export default function supportsDateInput() {
+ // Return false if the browser does not support input[type="date"].
+ const input = document.createElement('input');
+ input.setAttribute('type', 'date');
+
+ const notADateValue = 'not-a-date';
+ input.setAttribute('value', notADateValue);
+
+ return !(input.value === notADateValue);
+}