light-datepicker
Version:
Light DatePicker
2 lines • 9.94 kB
JavaScript
var datepicker=function(e){function t(r){if(n[r])return n[r].exports;var a=n[r]={exports:{},id:r,loaded:!1};return e[r].call(a.exports,a,a.exports,t),a.loaded=!0,a.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DatePickerRange=t.DatePicker=t.Calendar=void 0;var r=n(1),a=n(4),i=n(9);t.Calendar=r.Calendar,t.DatePicker=a.DatePicker,t.DatePickerRange=i.DatePickerRange},function(e,t,n){"use strict";function r(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t<e.length;t++)n[t]=e[t];return n}return Array.from(e)}function a(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.Calendar=void 0;var i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(2),c=n(3),s=42;t.Calendar=function(){function e(t){a(this,e),this.decorators=[],this.listeners=[],this.container=(0,o.createNode)("div","calendar",null),this.nodes=new Array(s),this.weekdays=t,this.render()}return i(e,[{key:"render",value:function(){var e=this.container,t=this.nodes;this.weekdays.forEach(function(t){return e.appendChild((0,o.createNode)("span","weekday",t))});for(var n=document.createDocumentFragment(),r=0;r<s;r++)t[r]=this.createDateNode(),n.appendChild(t[r]);e.appendChild(n)}},{key:"createDateNode",value:function(){var e=this,t=(0,o.createNode)("span","");return t.addEventListener("click",function(n){return e.emit("clickDate",t)}),t.addEventListener("mouseover",function(n){return e.emit("hoverDate",t)}),t}},{key:"on",value:function(e,t){this.container.addEventListener(e,t)}},{key:"emit",value:function(e,t){if(!t.classList.contains("disabled")){var n=new CustomEvent(e,{detail:t.date});this.container.dispatchEvent(n)}}},{key:"addDecorator",value:function(e,t){this.decorators.push({filter:e,className:t})}},{key:"applyDecorators",value:function(){var e=this;this.nodes.forEach(function(t){e.decorators.some(function(e){e.filter(t.date)?t.classList.add(e.className):t.classList.remove(e.className)})})}},{key:"datesOfCalendar",value:function(e){var t=(0,c.datesInMonth)(e),n=(0,c.startMonth)(e).getDay()||7,a=(0,c.datesInMonth)((0,c.prevMonth)(e)).reverse().slice(0,n).reverse(),i=(0,c.datesInMonth)((0,c.nextMonth)(e)).slice(0,42-n-t.length);return[].concat(r(a),r(t),r(i))}},{key:"draw",value:function(e){var t=this.datesOfCalendar(e);return this.nodes.forEach(function(e,n){e.date=t[n],e.innerText=t[n].getDate()}),this.applyDecorators(),this.container}}]),e}()},function(e,t){"use strict";function n(e,t,n){var r=document.createElement(e);return r.className=t,r.innerHTML=n,r}Object.defineProperty(t,"__esModule",{value:!0}),t.createNode=n},function(e,t){"use strict";function n(e){return new Date(e.getFullYear(),e.getMonth()+1)}function r(e){return new Date(e.getFullYear(),e.getMonth()-1)}function a(e){return new Date(e.getFullYear(),e.getMonth(),1)}function i(e){return new Date(e.getFullYear(),e.getMonth()+1,0)}function o(e){var t={length:i(e).getDate()};return Array.from(t,function(t,n){return new Date(e.getFullYear(),e.getMonth(),n+1)})}function c(e,t){var n=arguments.length<=2||void 0===arguments[2]?"year month day":arguments[2];return!(!e||!t)&&!(n.includes("year")&&e.getFullYear()!==t.getFullYear()||n.includes("month")&&e.getMonth()!==t.getMonth()||n.includes("day")&&e.getDate()!==t.getDate())}Object.defineProperty(t,"__esModule",{value:!0}),t.nextMonth=n,t.prevMonth=r,t.startMonth=a,t.endMonth=i,t.datesInMonth=o,t.isSame=c},function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.DatePicker=void 0;var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();n(5);var o=n(1),c=n(3),s=n(2),u=(window.navigator.language,"sun_mon_tue_wed_thu_fri_sat".split("_")),l=window.document;t.DatePicker=function(){function e(t){r(this,e),this.options={currentDate:new Date,language:"en-Us",selector:null,updateInput:!0,weekdays:u,appendTo:"body"},this.options=a({},this.options,t),this.options.currentMonth=Object.assign(this.options.currentDate),this.setupParentElement(),this.updateInputValue(),this.setupCalendar(),this.setupDatePicker(),this.draw(),this.hide()}return i(e,[{key:"setupParentElement",value:function(){var e=this;this.parentElement=l.querySelector(this.options.selector),this.parentElement.addEventListener("focus",function(t){return e.show()})}},{key:"setupCalendar",value:function(){var e=this,t=this.options;this.calendar=new o.Calendar(t.weekdays),this.calendar.addDecorator(function(e){return!(0,c.isSame)(e,t.currentMonth,"year month")},"out-month"),this.calendar.addDecorator(function(e){return(0,c.isSame)(e,t.currentMonth,"year month")},"enabled"),this.calendar.addDecorator(function(e){return(0,c.isSame)(e,t.currentDate)},"selected"),this.calendar.on("clickDate",function(t){return e.selectDate(t.detail)})}},{key:"setupDatePicker",value:function(){var e=this,t='<div class="arrow"></div>\n <div class="header">\n <span class="prev">←</span>\n <span class="title"></span>\n <span class="next">→</span>\n </div>';this.datepicker=(0,s.createNode)("div","datepicker",t),this.datepicker.style.display="none",this.datepicker.appendChild(this.calendar.container),this.datepicker.querySelector(".prev").addEventListener("click",function(t){return e.onClickPrevMonth()}),this.datepicker.querySelector(".next").addEventListener("click",function(t){return e.onClickNextMonth()}),l.querySelector(this.options.appendTo).appendChild(this.datepicker),l.addEventListener("click",function(t){var n=t.target,r=e.isOpened&&!e.parentElement.isEqualNode(n)&&!e.datepicker.isEqualNode(n)&&!e.datepicker.contains(n);r&&e.hide()},!0)}},{key:"show",value:function(){var e=this.parentElement.getBoundingClientRect();this.isOpened=!0,this.datepicker.style.cssText="display: block; top: "+(e.top+55)+"px; left: "+e.left+"px;",this.calendar.applyDecorators()}},{key:"hide",value:function(){var e=this,t=arguments.length<=0||void 0===arguments[0]?0:arguments[0];setTimeout(function(){e.isOpened=!1,e.datepicker.style.display="none"},t)}},{key:"selectDate",value:function(e){var t=this.options;(0,c.isSame)(e,t.currentMonth,"year month")&&(t.currentDate=e,this.updateInputValue(),this.calendar.applyDecorators())}},{key:"updateInputValue",value:function(){var e=this.options;if(e.updateInput){var t=e.currentDate.toLocaleDateString(e.language,{weekday:"short",day:"numeric",month:"numeric"});this.parentElement.value=t}}},{key:"onClickPrevMonth",value:function(){var e=this.options;e.currentMonth=(0,c.prevMonth)(e.currentMonth),this.draw()}},{key:"onClickNextMonth",value:function(){var e=this.options;e.currentMonth=(0,c.nextMonth)(e.currentMonth),this.draw()}},{key:"updateTitle",value:function(){var e=this.options,t=e.currentMonth.toLocaleDateString(e.language,{month:"long",year:"numeric"});this.datepicker.querySelector(".title").innerText=t}},{key:"draw",value:function(){this.updateTitle(),this.calendar.draw(this.options.currentMonth)}}]),e}()},function(e,t){},,,,function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}Object.defineProperty(t,"__esModule",{value:!0}),t.DatePickerRange=void 0;var a=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}(),o=n(4);t.DatePickerRange=function(){function e(t){var n=this;r(this,e),this.rightDateSelected=!1,this.leftDatePicker=new o.DatePicker(a({},this.options,{selector:t.leftSelector})),this.rightDatePicker=new o.DatePicker(a({},this.options,{selector:t.rightSelector})),this.leftDatePicker.calendar.on("clickDate",function(e){return n.onLeftSelectDate(e.detail)}),this.rightDatePicker.calendar.on("clickDate",function(e){return n.onRightSelectDate(e.detail)}),this.rightDatePicker.parentElement.addEventListener("focus",function(e){return n.leftDatePicker.hide()}),this.leftDatePicker.parentElement.addEventListener("focus",function(e){return n.rightDatePicker.hide()}),this.setupDecorators()}return i(e,[{key:"onLeftSelectDate",value:function(e){var t=this.leftDatePicker.options.currentDate,n=this.rightDatePicker.options.currentDate;n<t&&(this.rightDatePicker.options.currentMonth=t,this.rightDatePicker.options.currentDate=t,this.rightDatePicker.updateInputValue(),this.rightDatePicker.draw()),this.leftDatePicker.hide(),this.rightDatePicker.show()}},{key:"onRightSelectDate",value:function(e){this.rightDatePicker.hide(300),this.rightDateSelected=!0}},{key:"setupDecorators",value:function(){var e=this,t=function(t){return t<e.leftDatePicker.options.currentDate},n=function(t){return t>=e.leftDatePicker.options.currentDate&&t<=e.rightDatePicker.options.currentDate};this.rightDatePicker.calendar.addDecorator(t,"disabled"),this.leftDatePicker.calendar.addDecorator(n,"range"),this.rightDatePicker.calendar.addDecorator(n,"range")}}]),e}()}]);
//# sourceMappingURL=datepicker.min.js.map