forked from jcgertig/date-input-polyfill
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdate-input-polyfill.umd.js
1 lines (1 loc) · 18.8 KB
/
date-input-polyfill.umd.js
1
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).dateInputPolyfill={})}(this,(function(e){"use strict";function t(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function n(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function a(e,t,a){return t&&n(e.prototype,t),a&&n(e,a),e}!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===n&&a.firstChild?a.insertBefore(i,a.firstChild):a.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}('.date-input-polyfill-reset, date-input-polyfill, date-input-polyfill select, date-input-polyfill table, date-input-polyfill th, date-input-polyfill td {\n background: #fff;\n color: #000;\n text-shadow: none;\n border: 0;\n padding: 0;\n height: auto;\n width: auto;\n line-height: normal;\n font-family: sans-serif;\n font-size: 14px;\n}\n\ndate-input-polyfill {\n position: absolute !important;\n text-align: center;\n box-shadow: 0px 3px 10px 1px rgba(0,0,0,0.22);\n cursor: default;\n z-index: 1;\n border-radius: 5px;\n -moz-border-radius: 5px;\n -webkit-border-radius: 5px;\n overflow: hidden;\n display: block\n}\n\ndate-input-polyfill[data-open="false"] {\n visibility: hidden;\n z-index: -100 !important;\n top: 0;\n }\n\ndate-input-polyfill[data-open="true"] {\n visibility: visible;\n }\n\ndate-input-polyfill select, date-input-polyfill table, date-input-polyfill th, date-input-polyfill td {\n\n box-shadow: none;\n font-family: \'Lato\', Helvetica, Arial, sans-serif;\n }\n\ndate-input-polyfill select, date-input-polyfill button {\n border: 0;\n border-radius: 0;\n border-bottom: 1px solid #DADFE1;\n height: 24px;\n vertical-align: top;\n -webkit-appearance: none;\n -moz-appearance: none;\n }\n\ndate-input-polyfill .monthSelect-wrapper {\n width: 55%;\n display: inline-block;\n }\n\ndate-input-polyfill .yearSelect-wrapper {\n width: 25%;\n display: inline-block;\n }\n\ndate-input-polyfill select {\n width: 100%\n }\n\ndate-input-polyfill select:first-of-type {\n border-right: 1px solid #DADFE1;\n border-radius: 5px 0 0 0;\n -moz-border-radius: 5px 0 0 0;\n -webkit-border-radius: 5px 0 0 0;\n }\n\ndate-input-polyfill button {\n width: 20%;\n background: #DADFE1;\n border-radius: 0 5px 0 0;\n -moz-border-radius: 0 5px 0 0;\n -webkit-border-radius: 0 5px 0 0\n }\n\ndate-input-polyfill button:hover {\n background: #eee;\n }\n\ndate-input-polyfill table {\n border-collapse: separate !important;\n border-radius: 0 0 5px 5px;\n -moz-border-radius: 0 0 5px 5px;\n -webkit-border-radius: 0 0 5px 5px;\n overflow: hidden;\n max-width: 280px;\n width: 280px;\n }\n\ndate-input-polyfill th, date-input-polyfill td {\n width: 32px;\n padding: 4px;\n text-align: center;\n box-sizing: content-box;\n }\n\ndate-input-polyfill td[data-day] {\n cursor: pointer\n }\n\ndate-input-polyfill td[data-day]:hover {\n background: #DADFE1;\n }\n\ndate-input-polyfill [data-selected] {\n font-weight: bold;\n background: #D8EAF6;\n }\n');var i={"en_en-US_en-UK":{days:["Su","Mo","Tu","We","Th","Fr","Sa"],months:["January","February","March","April","May","June","July","August","September","October","November","December"]},"zh_zh-CN":{days:["星期天","星期一","星期二","星期三","星期四","星期五","星期六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},"zh-Hans_zh-Hans-CN":{days:["周日","周一","周二","周三","周四","周五","周六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},"zh-Hant_zh-Hant-TW":{days:["週日","週一","週二","週三","週四","週五","週六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},"de_de-DE":{days:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],months:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],today:"Heute",format:"DD.MM.YYYY"},"nl_nl-NL_nl-BE":{days:["Zondag","Maandag","Dinsdag","Woensdag","Donderdag","Vrijdag","Zaterdag"],months:["Januari","Februari","Maart","April","Mei","Juni","Juli","Augustus","September","Oktober","November","December"],today:"Vandaag",format:"D/M/Y"},"pt_pt-BR":{days:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],months:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],today:"Hoje"},"fr_fr-FR_fr-BE":{days:["Di","Lu","Ma","Me","Je","Ve","Sa"],months:["Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre"],today:"Aujourd'hui",format:"D/M/Y"},"es_es-VE":{days:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],today:"Hoy",format:"D/M/Y"},"da_da-dk":{days:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],months:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],today:"I dag",format:"dd/MM-YYYY"},"ru_ru-RU_ru-UA_ru-KZ_ru-MD":{days:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],today:"Сегодня",format:"D.M.Y"},"uk_uk-UA":{days:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],today:"Cьогодні",format:"D.M.Y"},"sv_sv-SE":{days:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],months:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],today:"Idag",format:"YYYY-MM-dd"},"test_test-TEST":{days:["Foo","Mon","Tue","Wed","Thu","Fri","Sat"],months:["Foo","February","March","April","May","June","July","August","September","October","November","December"]},ja:{days:["日","月","火","水","木","金","土"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],today:"今日",format:"YYYY-MM-dd"}};var r,o=function(e){var t={exports:{}};return e(t,t.exports),t.exports}((function(e,t){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})(e)}!function(a){var i,r,o,u=arguments,s=(i=/d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LlopSZWN]|"[^"]*"|'[^']*'/g,r=/\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,o=/[^-+\dA-Z]/g,function(e,t,n,a){if(1!==u.length||"string"!==m(e)||/\d/.test(e)||(t=e,e=void 0),(e=e||0===e?e:new Date)instanceof Date||(e=new Date(e)),isNaN(e))throw TypeError("Invalid date");var h=(t=String(s.masks[t]||t||s.masks.default)).slice(0,4);"UTC:"!==h&&"GMT:"!==h||(t=t.slice(4),n=!0,"GMT:"===h&&(a=!0));var p=function(){return n?"getUTC":"get"},y=function(){return e[p()+"Date"]()},f=function(){return e[p()+"Day"]()},b=function(){return e[p()+"Month"]()},g=function(){return e[p()+"FullYear"]()},v=function(){return e[p()+"Hours"]()},D=function(){return e[p()+"Minutes"]()},M=function(){return e[p()+"Seconds"]()},T=function(){return e[p()+"Milliseconds"]()},A=function(){return n?0:e.getTimezoneOffset()},x={d:function(){return y()},dd:function(){return d(y())},ddd:function(){return s.i18n.dayNames[f()]},dddd:function(){return s.i18n.dayNames[f()+7]},m:function(){return b()+1},mm:function(){return d(b()+1)},mmm:function(){return s.i18n.monthNames[b()]},mmmm:function(){return s.i18n.monthNames[b()+12]},yy:function(){return String(g()).slice(2)},yyyy:function(){return d(g(),4)},h:function(){return v()%12||12},hh:function(){return d(v()%12||12)},H:function(){return v()},HH:function(){return d(v())},M:function(){return D()},MM:function(){return d(D())},s:function(){return M()},ss:function(){return d(M())},l:function(){return d(T(),3)},L:function(){return d(Math.floor(T()/10))},t:function(){return v()<12?s.i18n.timeNames[0]:s.i18n.timeNames[1]},tt:function(){return v()<12?s.i18n.timeNames[2]:s.i18n.timeNames[3]},T:function(){return v()<12?s.i18n.timeNames[4]:s.i18n.timeNames[5]},TT:function(){return v()<12?s.i18n.timeNames[6]:s.i18n.timeNames[7]},Z:function(){return a?"GMT":n?"UTC":(String(e).match(r)||[""]).pop().replace(o,"").replace(/GMT\+0000/g,"UTC")},o:function(){return(A()>0?"-":"+")+d(100*Math.floor(Math.abs(A())/60)+Math.abs(A())%60,4)},p:function(){return(A()>0?"-":"+")+d(Math.floor(Math.abs(A())/60),2)+":"+d(Math.floor(Math.abs(A())%60),2)},S:function(){return["th","st","nd","rd"][y()%10>3?0:(y()%100-y()%10!=10)*y()%10]},W:function(){return l(e)},N:function(){return c(e)}};return t.replace(i,(function(e){return e in x?x[e]():e.slice(1,e.length-1)}))});s.masks={default:"ddd mmm dd yyyy HH:MM:ss",shortDate:"m/d/yy",paddedShortDate:"mm/dd/yyyy",mediumDate:"mmm d, yyyy",longDate:"mmmm d, yyyy",fullDate:"dddd, mmmm d, yyyy",shortTime:"h:MM TT",mediumTime:"h:MM:ss TT",longTime:"h:MM:ss TT Z",isoDate:"yyyy-mm-dd",isoTime:"HH:MM:ss",isoDateTime:"yyyy-mm-dd'T'HH:MM:sso",isoUtcDateTime:"UTC:yyyy-mm-dd'T'HH:MM:ss'Z'",expiresHeaderFormat:"ddd, dd mmm yyyy HH:MM:ss Z"},s.i18n={dayNames:["Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],monthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec","January","February","March","April","May","June","July","August","September","October","November","December"],timeNames:["a","p","am","pm","A","P","AM","PM"]};var d=function(e,t){for(e=String(e),t=t||2;e.length<t;)e="0"+e;return e},l=function(e){var t=new Date(e.getFullYear(),e.getMonth(),e.getDate());t.setDate(t.getDate()-(t.getDay()+6)%7+3);var n=new Date(t.getFullYear(),0,4);n.setDate(n.getDate()-(n.getDay()+6)%7+3);var a=t.getTimezoneOffset()-n.getTimezoneOffset();t.setHours(t.getHours()-a);var i=(t-n)/6048e5;return 1+Math.floor(i)},c=function(e){var t=e.getDay();return 0===t&&(t=7),t},m=function(e){return null===e?"null":void 0===e?"undefined":"object"!==n(e)?n(e):Array.isArray(e)?"array":{}.toString.call(e).slice(8,-1).toLowerCase()};"object"===n(t)?e.exports=s:a.dateFormat=s}(void 0)})),u=function(){function e(){var n=this;t(this,e),this.date=new Date,this.input=null,this.isOpen=!1,this.container=document.createElement("date-input-polyfill"),this.year=document.createElement("select"),e.createRangeSelect(this.year,1890,this.date.getFullYear()+20),this.year.className="yearSelect",this.year.addEventListener("change",(function(){n.date.setYear(n.year.value),n.refreshDaysMatrix()}));var a=document.createElement("span");a.className="yearSelect-wrapper",a.appendChild(this.year),this.container.appendChild(a),this.month=document.createElement("select"),this.month.className="monthSelect",this.month.addEventListener("change",(function(){n.date.setMonth(n.month.value),n.refreshDaysMatrix()}));var i=document.createElement("span");i.className="monthSelect-wrapper",i.appendChild(this.month),this.container.appendChild(i),this.today=document.createElement("button"),this.today.textContent="Today",this.today.addEventListener("click",(function(){var e=new Date;n.date=new Date("".concat(e.getFullYear(),"/").concat("0".concat(e.getMonth()+1).slice(-2),"/").concat("0".concat(e.getDate()).slice(-2))),n.setInput()})),this.container.appendChild(this.today);var r=document.createElement("table");this.daysHead=document.createElement("thead"),this.days=document.createElement("tbody"),this.days.addEventListener("click",(function(e){var t=e.target;if(!t.hasAttribute("data-day"))return!1;var a=n.days.querySelector("[data-selected]");a&&a.removeAttribute("data-selected"),t.setAttribute("data-selected",""),n.date.setDate(parseInt(t.textContent)),n.setInput()})),r.appendChild(this.daysHead),r.appendChild(this.days),this.container.appendChild(r),this.hide(),document.body.appendChild(this.container),this.removeClickOut=function(e){if(n.isOpen){for(var t=e.target,a=t===n.container||t===n.input;!a&&(t=t.parentNode);)a=t===n.container;("date"!==e.target.getAttribute("type")&&!a||!a)&&n.hide()}},this.removeBlur=function(e){n.isOpen&&n.hide()}}return a(e,[{key:"hide",value:function(){this.container.setAttribute("data-open",this.isOpen=!1),this.input&&this.input.blur(),document.removeEventListener("mousedown",this.removeClickOut),document.removeEventListener("touchstart",this.removeClickOut)}},{key:"show",value:function(){var e=this;this.container.setAttribute("data-open",this.isOpen=!0),setTimeout((function(){document.addEventListener("mousedown",e.removeClickOut),document.addEventListener("touchstart",e.removeClickOut)}),500),window.onpopstate=function(){e.hide()}}},{key:"goto",value:function(e){var t=this,n=e.getBoundingClientRect();this.container.style.top="".concat(n.top+n.height+(document.documentElement.scrollTop||document.body.scrollTop)+3,"px");var a=this.container.getBoundingClientRect(),i=a.width?a.width:280,r=function(){return t.container.className.replace("polyfill-left-aligned","").replace("polyfill-right-aligned","").replace(/\s+/g," ").trim()},o=n.right-i;n.right<i?(o=n.left,this.container.className="".concat(r()," polyfill-left-aligned")):this.container.className="".concat(r()," polyfill-right-aligned"),this.container.style.left="".concat(o+(document.documentElement.scrollLeft||document.body.scrollLeft),"px"),this.show()}},{key:"attachTo",value:function(e){return(e!==this.input||!this.isOpen)&&(this.input=e,this.refreshLocale(),this.sync(),this.goto(this.input),!0)}},{key:"sync",value:function(){isNaN(Date.parse(this.input.valueAsDate))?this.date=new Date:this.date=e.absoluteDate(this.input.valueAsDate),this.year.value=this.date.getFullYear(),this.month.value=this.date.getMonth(),this.refreshDaysMatrix()}},{key:"setInput",value:function(){var e=this;this.input.valueAsDate=this.date,this.input.focus(),setTimeout((function(){e.hide()}),100),this.pingInput()}},{key:"refreshLocale",value:function(){if(this.locale===this.input.locale)return!1;this.locale=this.input.locale,this.today.textContent=this.locale.today||"Today";for(var t=["<tr>"],n=0,a=this.locale.days.length;n<a;++n)t.push('<th scope="col">'.concat(this.locale.days[n],"</th>"));this.daysHead.innerHTML=t.join(""),e.createRangeSelect(this.month,0,11,this.locale.months)}},{key:"refreshDaysMatrix",value:function(){this.refreshLocale();for(var t=this.date.getFullYear(),n=this.date.getMonth(),a=new Date(t,n,1).getDay(),i=new Date(this.date.getFullYear(),n+1,0).getDate(),r=e.absoluteDate(this.input.valueAsDate)||!1,o=r&&t===r.getFullYear()&&n===r.getMonth(),u=[],s=0;s<i+a;++s)if(s%7==0&&u.push("\n ".concat(0!==s?"</tr>":"","\n <tr>\n ")),s+1<=a)u.push("<td></td>");else{var d=s+1-a,l=o&&r.getDate()===d;u.push("<td data-day ".concat(l?"data-selected":"",">\n ").concat(d,"\n </td>"))}this.days.innerHTML=u.join("")}},{key:"pingInput",value:function(){var e,t;try{e=new Event("input",{bubbles:!0,cancelable:!1}),t=new Event("change",{bubbles:!0,cancelable:!1})}catch(n){(e=document.createEvent("KeyboardEvent")).initEvent("input",!0,!1),(t=document.createEvent("KeyboardEvent")).initEvent("change",!0,!1)}this.input.dispatchEvent(e),this.input.dispatchEvent(t)}}],[{key:"createRangeSelect",value:function(e,t,n,a){e.innerHTML="";for(var i=t;i<=n;++i){var r=document.createElement("option");e.appendChild(r);var o=a?a[i-t]:i;r.text=o,r.value=i}return e}},{key:"absoluteDate",value:function(e){return e&&new Date(e.getTime()+60*e.getTimezoneOffset()*1e3)}}]),e}(),s=function(){function e(n){var a=this;t(this,e),r||(r=new u),this.element=n,this.element.setAttribute("data-has-picker",""),this.locale=this.element.getAttribute("lang")||document.body.getAttribute("lang")||"en",this.format=this.element.getAttribute("date-format")||document.body.getAttribute("date-format")||this.element.getAttribute("data-date-format")||document.body.getAttribute("data-date-format")||"yyyy-mm-dd",this.element.setAttribute("placeholder",this.format),this.localeText=this.getLocaleText(),Object.defineProperties(this.element,{valueAsDate:{get:function(){if(!a.element.value)return null;var e=a.format||"yyyy-mm-dd",t=a.element.value.match(/(\d+)/g),n=0,i={};return e.replace(/(yyyy|dd|mm)/g,(function(e){i[e]=n++})),new Date(t[i.yyyy],t[i.mm]-1,t[i.dd])},set:function(e){a.element.value=o(e,a.format,!0)}},valueAsNumber:{get:function(){return a.element.value?a.element.valueAsDate.valueOf():NaN},set:function(e){a.element.valueAsDate=new Date(e)}}});var i=function(e){var t=a.element;t.locale=a.localeText;r.attachTo(t)};this.element.addEventListener("focus",i),this.element.addEventListener("mouseup",i),this.element.addEventListener("keydown",(function(e){var t=new Date;switch(e.keyCode){case 9:case 27:r.hide();break;case 38:a.element.valueAsDate&&(t.setDate(a.element.valueAsDate.getDate()+1),a.element.valueAsDate=t,r.pingInput());break;case 40:a.element.valueAsDate&&(t.setDate(a.element.valueAsDate.getDate()-1),a.element.valueAsDate=t,r.pingInput())}r.sync()})),this.element.addEventListener("keyup",(function(e){r.sync()}))}return a(e,[{key:"getLocaleText",value:function(){var e=this.locale.toLowerCase();for(var t in i){var n=t.split("_");if(n.map((function(e){return e.toLowerCase()})),~n.indexOf(e)||~n.indexOf(e.substr(0,2)))return i[t]}}}],[{key:"supportsDateInput",value:function(){var e=document.createElement("input");e.setAttribute("type","date");var t="not-a-date";return e.setAttribute("value",t),!(e.value===t)}},{key:"addPickerToDateInputs",value:function(){var t=document.querySelectorAll('input[type="date"]:not([data-has-picker])'),n=t.length;if(!n)return!1;for(var a=0;a<n;++a)new e(t[a])}},{key:"addPickerToOtherInputs",value:function(){var t=document.querySelectorAll('input[type="text"].date-polyfill:not([data-has-picker])'),n=t.length;if(!n)return!1;for(var a=0;a<n;++a)new e(t[a])}}]),e}(),d=function(){s.addPickerToOtherInputs(),s.supportsDateInput()||s.addPickerToDateInputs()},l=function(){d(),document.querySelector("body").addEventListener("mousedown",(function(){d()}))};"loading"!==document.readyState?l():document.addEventListener("DOMContentLoaded",(function(){l()})),e.Input=s,Object.defineProperty(e,"__esModule",{value:!0})}));//# sourceMappingURL=date-input-polyfill.umd.js.map