-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvanilla-calendar.min.js
6 lines (6 loc) · 29 KB
/
vanilla-calendar.min.js
1
2
3
4
5
6
// ==UserScript==
// @name @uvarov.frontend/vanilla-calendar
// @version 1.5.5
// @homepage https://vanilla-calendar.frontend.uvarov.tech/
// ==/UserScript==
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).VanillaCalendar=t()}(this,(function(){"use strict";function e(t){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(t)}function t(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function a(e){return function(e){if(Array.isArray(e))return n(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return n(e,t);var a=Object.prototype.toString.call(e).slice(8,-1);"Object"===a&&e.constructor&&(a=e.constructor.name);if("Map"===a||"Set"===a)return Array.from(e);if("Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a))return n(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function n(e,t){(null==t||t>e.length)&&(t=e.length);for(var a=0,n=new Array(t);a<t;a++)n[a]=e[a];return n}return function(){function n(t,a){var l,s,i,c,r,d,o,u,v,h,g,m,y,p,b,T,M,f,_,D,w,L,k,H,Y,C,U,x,E,N,A,S,K,F,q,O,P,j,W,I,V,$,z,B,G,J,Q,R,X,Z,ee,te,ae,ne,le,se,ie,ce,re,de,oe,ue,ve,he,ge,me,ye,pe,be,Te,Me,fe,_e,De,we,Le,ke,He,Ye,Ce,Ue,xe,Ee,Ne,Ae,Se,Ke,Fe,qe,Oe;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),this.HTMLElement="object"===e(t)?t:document.querySelector(t),this.HTMLElement&&(this.type=null!==(l=null==a?void 0:a.type)&&void 0!==l?l:"default",this.date={min:null!==(s=null==a||null===(i=a.date)||void 0===i?void 0:i.min)&&void 0!==s?s:"1970-01-01",max:null!==(c=null==a||null===(r=a.date)||void 0===r?void 0:r.max)&&void 0!==c?c:"2470-12-31",today:null!==(d=null==a||null===(o=a.date)||void 0===o?void 0:o.today)&&void 0!==d?d:new Date},this.settings={lang:null!==(u=null==a||null===(v=a.settings)||void 0===v?void 0:v.lang)&&void 0!==u?u:"en",iso8601:null===(h=null==a||null===(g=a.settings)||void 0===g?void 0:g.iso8601)||void 0===h||h,range:{min:null!==(m=null==a||null===(y=a.settings)||void 0===y||null===(p=y.range)||void 0===p?void 0:p.min)&&void 0!==m?m:this.date.min,max:null!==(b=null==a||null===(T=a.settings)||void 0===T||null===(M=T.range)||void 0===M?void 0:M.max)&&void 0!==b?b:this.date.max,disabled:null!==(f=null==a||null===(_=a.settings)||void 0===_||null===(D=_.range)||void 0===D?void 0:D.disabled)&&void 0!==f?f:null,enabled:null!==(w=null==a||null===(L=a.settings)||void 0===L||null===(k=L.range)||void 0===k?void 0:k.enabled)&&void 0!==w?w:null},selection:{day:null!==(H=null==a||null===(Y=a.settings)||void 0===Y||null===(C=Y.selection)||void 0===C?void 0:C.day)&&void 0!==H?H:"single",month:null===(U=null==a||null===(x=a.settings)||void 0===x||null===(E=x.selection)||void 0===E?void 0:E.month)||void 0===U||U,year:null===(N=null==a||null===(A=a.settings)||void 0===A||null===(S=A.selection)||void 0===S?void 0:S.year)||void 0===N||N,time:null!==(K=null==a||null===(F=a.settings)||void 0===F||null===(q=F.selection)||void 0===q?void 0:q.time)&&void 0!==K&&K,controlTime:null!==(O=null==a||null===(P=a.settings)||void 0===P||null===(j=P.selection)||void 0===j?void 0:j.controlTime)&&void 0!==O?O:"all",stepHours:null!==(W=null==a||null===(I=a.settings)||void 0===I||null===(V=I.selection)||void 0===V?void 0:V.stepHours)&&void 0!==W?W:1,stepMinutes:null!==($=null==a||null===(z=a.settings)||void 0===z||null===(B=z.selection)||void 0===B?void 0:B.stepMinutes)&&void 0!==$?$:1},selected:{dates:null!==(G=null==a||null===(J=a.settings)||void 0===J||null===(Q=J.selected)||void 0===Q?void 0:Q.dates)&&void 0!==G?G:null,month:null!==(R=null==a||null===(X=a.settings)||void 0===X||null===(Z=X.selected)||void 0===Z?void 0:Z.month)&&void 0!==R?R:null,year:null!==(ee=null==a||null===(te=a.settings)||void 0===te||null===(ae=te.selected)||void 0===ae?void 0:ae.year)&&void 0!==ee?ee:null,holidays:null!==(ne=null==a||null===(le=a.settings)||void 0===le||null===(se=le.selected)||void 0===se?void 0:se.holidays)&&void 0!==ne?ne:null,time:null!==(ie=null==a||null===(ce=a.settings)||void 0===ce||null===(re=ce.selected)||void 0===re?void 0:re.time)&&void 0!==ie?ie:null},visibility:{templateHeader:null!==(de=null==a||null===(oe=a.settings)||void 0===oe||null===(ue=oe.visibility)||void 0===ue?void 0:ue.templateHeader)&&void 0!==de?de:"%M %Y",monthShort:null===(ve=null==a||null===(he=a.settings)||void 0===he||null===(ge=he.visibility)||void 0===ge?void 0:ge.monthShort)||void 0===ve||ve,weekNumbers:null!==(me=null==a||null===(ye=a.settings)||void 0===ye||null===(pe=ye.visibility)||void 0===pe?void 0:pe.weekNumbers)&&void 0!==me&&me,weekend:null===(be=null==a||null===(Te=a.settings)||void 0===Te||null===(Me=Te.visibility)||void 0===Me?void 0:Me.weekend)||void 0===be||be,today:null===(fe=null==a||null===(_e=a.settings)||void 0===_e||null===(De=_e.visibility)||void 0===De?void 0:De.today)||void 0===fe||fe,disabled:null!==(we=null==a||null===(Le=a.settings)||void 0===Le||null===(ke=Le.visibility)||void 0===ke?void 0:ke.disabled)&&void 0!==we&&we}},this.locale={months:null!==(He=null==a||null===(Ye=a.locale)||void 0===Ye?void 0:Ye.months)&&void 0!==He?He:[],weekday:null!==(Ce=null==a||null===(Ue=a.locale)||void 0===Ue?void 0:Ue.weekday)&&void 0!==Ce?Ce:[]},this.actions={clickDay:null!==(xe=null==a||null===(Ee=a.actions)||void 0===Ee?void 0:Ee.clickDay)&&void 0!==xe?xe:null,clickMonth:null!==(Ne=null==a||null===(Ae=a.actions)||void 0===Ae?void 0:Ae.clickMonth)&&void 0!==Ne?Ne:null,clickYear:null!==(Se=null==a||null===(Ke=a.actions)||void 0===Ke?void 0:Ke.clickYear)&&void 0!==Se?Se:null,changeTime:null!==(Fe=null==a||null===(qe=a.actions)||void 0===qe?void 0:qe.changeTime)&&void 0!==Fe?Fe:null},this.popups=null!==(Oe=null==a?void 0:a.popups)&&void 0!==Oe?Oe:null,this.currentType=this.type,this.selectedKeeping=null,this.userTime=!1)}var l,s,i;return l=n,(s=[{key:"generateDate",value:function(e){var t=e.getUTCFullYear(),a=e.getUTCMonth()+1,n=e.getUTCDate();return a=a<10?"0".concat(a):a,n=n<10?"0".concat(n):n,"".concat(t,"-").concat(a,"-").concat(n)}},{key:"transformTime12",value:function(e){var t=Number(e),a=t;return 0===t?a="12":13===t?a="01":14===t?a="02":15===t?a="03":16===t?a="04":17===t?a="05":18===t?a="06":19===t?a="07":20===t?a="08":21===t?a="09":22===t?a="10":23===t&&(a="11"),a}},{key:"transformTime24",value:function(e,t){var a=Number(e),n=a;return"AM"===t?12===a&&(n="00"):"PM"===t&&(1===a?n="13":2===a?n="14":3===a?n="15":4===a?n="16":5===a?n="17":6===a?n="18":7===a?n="19":8===a?n="20":9===a?n="21":10===a?n="22":11===a&&(n="23")),n}},{key:"setVariablesDates",value:function(){var e=this;null!==this.settings.selected.dates?this.selectedDates=this.settings.selected.dates:this.selectedDates=[],null!==this.settings.selected.month&&this.settings.selected.month>=0&&this.settings.selected.month<12?this.selectedMonth=this.settings.selected.month:this.selectedMonth=this.date.today.getUTCMonth(),null!==this.settings.selected.year&&this.settings.selected.year>=0&&this.settings.selected.year<=9999?this.selectedYear=this.settings.selected.year:this.selectedYear=this.date.today.getUTCFullYear(),this.viewYear=this.selectedYear,this.dateMin=this.settings.visibility.disabled?new Date(this.date.min):new Date(this.settings.range.min),this.dateMax=this.settings.visibility.disabled?new Date(this.date.max):new Date(this.settings.range.max);var t=!0===this.settings.selection.time||12===this.settings.selection.time;if(t||24===this.settings.selection.time){if("string"==typeof this.settings.selected.time){var a=t?/^([0-9]|0[1-9]|1[0-2]):([0-5][0-9])|(AM|PM)/g:/^([0-1]?[0-9]|2[0-3]):([0-5][0-9])/g;this.settings.selected.time.replace(a,(function(a,n,l,s){n&&l&&(e.userTime=!0,e.selectedHours=n,e.selectedMinutes=l),s&&t?e.selectedKeeping=s:t&&(e.selectedKeeping="AM")}))}!this.userTime&&t?(this.selectedHours=this.transformTime12(this.date.today.getHours()),this.selectedMinutes=this.date.today.getMinutes(),this.selectedKeeping=Number(this.date.today.getHours())>12?"PM":"AM"):this.userTime||(this.selectedHours=this.date.today.getHours(),this.selectedMinutes=this.date.today.getMinutes()),this.selectedHours=Number(this.selectedHours)<10?"0".concat(Number(this.selectedHours)):"".concat(this.selectedHours),this.selectedMinutes=Number(this.selectedMinutes)<10?"0".concat(Number(this.selectedMinutes)):"".concat(this.selectedMinutes),this.selectedTime="".concat(this.selectedHours,":").concat(this.selectedMinutes).concat(this.selectedKeeping?" ".concat(this.selectedKeeping):"")}else this.settings.selection.time&&(this.settings.selection.time=null,console.error("The value of the time property can be: false, true, 12 or 24."))}},{key:"createDOM",value:function(){"default"===this.currentType?(this.HTMLElement.classList.add("vanilla-calendar_default"),this.HTMLElement.classList.remove("vanilla-calendar_month"),this.HTMLElement.classList.remove("vanilla-calendar_year"),this.HTMLElement.innerHTML='\n\t\t\t<div class="vanilla-calendar-header">\n\t\t\t\t<button type="button"\n\t\t\t\t\tclass="vanilla-calendar-arrow vanilla-calendar-arrow_prev"\n\t\t\t\t\tdata-calendar-arrow="prev"\n\t\t\t\t\ttitle="Prev">\n\t\t\t\t</button>\n\t\t\t\t<div class="vanilla-calendar-header__content"></div>\n\t\t\t\t<button type="button"\n\t\t\t\t\tclass="vanilla-calendar-arrow vanilla-calendar-arrow_next"\n\t\t\t\t\tdata-calendar-arrow="next"\n\t\t\t\t\ttitle="Next">\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t'.concat(this.settings.visibility.weekNumbers?'\n\t\t\t<div class="vanilla-calendar-column">\n\t\t\t\t<b class="vanilla-calendar-column__title">#</b>\n\t\t\t\t<div class="vanilla-calendar-column__content vanilla-calendar-week-numbers"></div>\n\t\t\t</div>\n\t\t\t':"",'\n\t\t\t<div class="vanilla-calendar-content">\n\t\t\t\t<div class="vanilla-calendar-week"></div>\n\t\t\t\t<div class="vanilla-calendar-days"></div>\n\t\t\t\t').concat(this.settings.selection.time?'\n\t\t\t\t<div class="vanilla-calendar-time"></div>\n\t\t\t\t':"","\n\t\t\t</div>\n\t\t")):"month"===this.currentType?(this.HTMLElement.classList.remove("vanilla-calendar_default"),this.HTMLElement.classList.add("vanilla-calendar_month"),this.HTMLElement.classList.remove("vanilla-calendar_year"),this.HTMLElement.innerHTML='\n\t\t\t<div class="vanilla-calendar-header">\n\t\t\t\t<div class="vanilla-calendar-header__content"></div>\n\t\t\t</div>\n\t\t\t<div class="vanilla-calendar-content">\n\t\t\t\t<div class="vanilla-calendar-months"></div>\n\t\t\t</div>'):"year"===this.currentType&&(this.HTMLElement.classList.remove("vanilla-calendar_default"),this.HTMLElement.classList.remove("vanilla-calendar_month"),this.HTMLElement.classList.add("vanilla-calendar_year"),this.HTMLElement.innerHTML='\n\t\t\t<div class="vanilla-calendar-header">\n\t\t\t\t<button type="button"\n\t\t\t\t\tclass="vanilla-calendar-arrow vanilla-calendar-arrow_prev"\n\t\t\t\t\ttitle="prev">\n\t\t\t\t</button>\n\t\t\t\t<div class="vanilla-calendar-header__content"></div>\n\t\t\t\t<button type="button"\n\t\t\t\t\tclass="vanilla-calendar-arrow vanilla-calendar-arrow_next"\n\t\t\t\t\ttitle="next">\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class="vanilla-calendar-content">\n\t\t\t\t<div class="vanilla-calendar-years"></div>\n\t\t\t</div>')}},{key:"createHeader",value:function(){var e=this.HTMLElement.querySelector(".vanilla-calendar-header__content"),t=this.settings.selection.month?"":" vanilla-calendar-month_disabled",a=this.settings.selection.year?"":" vanilla-calendar-year_disabled",n='\n\t\t<button type="button"\n\t\t\tclass="vanilla-calendar-month'.concat(t,'"\n\t\t\tdata-calendar-selected-month="').concat(this.selectedMonth,'">\n\t\t\t').concat(this.locale.months[this.selectedMonth],"\n\t\t</button>").replace(/[\n\t]/g,""),l='\n\t\t<button type="button"\n\t\t\tclass="vanilla-calendar-year'.concat(a,'"\n\t\t\tdata-calendar-selected-year="').concat(this.selectedYear,'">\n\t\t\t').concat(this.selectedYear,"\n\t\t</button>").replace(/[\n\t]/g,""),s=this.settings.visibility.templateHeader.replace("%M",n);s=s.replace("%Y",l),e.innerHTML=s}},{key:"controlArrows",value:function(){var e=this;if(["default","year"].includes(this.currentType)){var t=this.HTMLElement.querySelector(".vanilla-calendar-arrow_prev"),a=this.HTMLElement.querySelector(".vanilla-calendar-arrow_next");!function(){if("default"===e.currentType){var n=e.selectedMonth===e.dateMin.getUTCMonth(),l=e.selectedMonth===e.dateMax.getUTCMonth(),s=!e.settings.selection.year||e.selectedYear===e.dateMin.getUTCFullYear(),i=!e.settings.selection.year||e.selectedYear===e.dateMax.getUTCFullYear();n&&s||!e.settings.selection.month?t.style.visibility="hidden":t.style.visibility=null,l&&i||!e.settings.selection.month?a.style.visibility="hidden":a.style.visibility=null}}(),"year"===e.currentType&&(e.dateMin.getUTCFullYear()&&e.viewYear-7<=e.dateMin.getUTCFullYear()?t.style.visibility="hidden":t.style.visibility=null,e.dateMax.getUTCFullYear()&&e.viewYear+7>=e.dateMax.getUTCFullYear()?a.style.visibility="hidden":a.style.visibility=null)}}},{key:"createWeek",value:function(){var e=this.HTMLElement.querySelector(".vanilla-calendar-week"),t=document.createElement("b");t.className="vanilla-calendar-week__day";var n=a(this.locale.weekday);this.settings.iso8601&&n.push(n.shift()),e.innerHTML="";for(var l=0;l<n.length;l++){var s=n[l],i=t.cloneNode(!0);this.settings.visibility.weekend&&this.settings.iso8601?5!==l&&6!==l||i.classList.add("vanilla-calendar-week__day_weekend"):this.settings.visibility.weekend&&!this.settings.iso8601&&(0!==l&&6!==l||i.classList.add("vanilla-calendar-week__day_weekend")),i.innerText="".concat(s),e.append(i)}}},{key:"getWeekNumber",value:function(e){var t=new Date(e).getUTCDate(),a=new Date(e).getUTCMonth(),n=new Date(e).getUTCFullYear(),l=new Date(n,a,t),s=new Date(Date.UTC(l.getUTCFullYear(),0,1)),i=Math.ceil(((l-s)/864e5+1)/7);return{year:l.getUTCFullYear(),week:i}}},{key:"createWeekNumbers",value:function(e,t){if(this.settings.visibility.weekNumbers){var a=this.HTMLElement.querySelector(".vanilla-calendar-week-numbers"),n=this.HTMLElement.querySelectorAll(".vanilla-calendar-day__btn"),l=Math.ceil((e+t)/7),s=document.createElement("span");s.className="vanilla-calendar-week-number",a.innerHTML="";for(var i=0;i<l;i++){var c=this.getWeekNumber(n[7*i].dataset.calendarDay),r=s.cloneNode(!0);r.innerText="".concat(c.week),r.dataset.calendarYearWeek="".concat(c.year),a.append(r)}}}},{key:"createPopup",value:function(e){if(this.popups)for(var t in this.popups)if(Object.hasOwnProperty.call(this.popups,t)){var a=e.querySelector('[data-calendar-day="'.concat(t,'"]'));if(a){var n=this.popups[t];a.classList.add(n.modifier),a.parentNode.innerHTML+='<div class="vanilla-calendar-day__popup">'.concat(n.html,"</div>")}}}},{key:"createDays",value:function(){var e=this,t=new Date(Date.UTC(this.selectedYear,this.selectedMonth,1)),a=new Date(Date.UTC(this.selectedYear,this.selectedMonth+1,0)).getUTCDate(),n=Number(t.getUTCDay());this.settings.iso8601&&(n=Number((0!==t.getUTCDay()?t.getUTCDay():7)-1));var l=this.HTMLElement.querySelector(".vanilla-calendar-days"),s=document.createElement("div"),i=document.createElement("button");s.className="vanilla-calendar-day",i.className="vanilla-calendar-day__btn",i.type="button",["single","multiple","multiple-ranged"].includes(this.settings.selection.day)&&l.classList.add("vanilla-calendar-days_selecting"),l.innerHTML="";var c=function(t,a,n,c,r){var d=s.cloneNode(!0),o=i.cloneNode(!0);r&&o.classList.add(r),o.innerText=t,o.dataset.calendarDay=n,function(t,a,n,l){!e.settings.visibility.weekend||0!==a&&6!==a||t.classList.add("vanilla-calendar-day__btn_weekend"),Array.isArray(e.settings.selected.holidays)&&e.settings.selected.holidays.forEach((function(e){e===n&&t.classList.add("vanilla-calendar-day__btn_holiday")}));var s=e.date.today.getUTCDate(),i=e.date.today.getUTCMonth()+1;s=s<10?"0".concat(s):s,i=i<10?"0".concat(i):i;var c="".concat(e.date.today.getUTCFullYear(),"-").concat(i,"-").concat(s);e.settings.visibility.today&&t.dataset.calendarDay===c&&t.classList.add("vanilla-calendar-day__btn_today"),0===e.selectedDates.indexOf(n)||e.selectedDates[0]&&e.selectedDates.indexOf(n)===e.selectedDates.length-1?t.classList.add("vanilla-calendar-day__btn_selected"):"multiple-ranged"===e.settings.selection.day&&e.selectedDates.indexOf(n)>0?(t.classList.add("vanilla-calendar-day__btn_selected"),t.classList.add("vanilla-calendar-day__btn_intermediate")):e.selectedDates.indexOf(n)>0&&t.classList.add("vanilla-calendar-day__btn_selected"),(e.settings.range.min>n||e.settings.range.max<n)&&t.classList.add("vanilla-calendar-day__btn_disabled"),e.settings.selection.month||l||t.classList.add("vanilla-calendar-day__btn_disabled"),e.settings.selection.year||new Date(n).getFullYear()===e.selectedYear||t.classList.add("vanilla-calendar-day__btn_disabled"),Array.isArray(e.settings.range.disabled)?e.settings.range.disabled.forEach((function(e){e===n&&t.classList.add("vanilla-calendar-day__btn_disabled")})):Array.isArray(e.settings.range.enabled)&&(t.classList.add("vanilla-calendar-day__btn_disabled"),e.settings.range.enabled.forEach((function(e){e===n&&t.classList.remove("vanilla-calendar-day__btn_disabled")})))}(o,a,n,c),d.append(o),l.append(d)};!function(){var t=new Date(Date.UTC(e.selectedYear,e.selectedMonth,0)).getUTCDate()-n,a=e.selectedYear,l=e.selectedMonth;0===e.selectedMonth?(l=e.locale.months.length,a=e.selectedYear-1):e.selectedMonth<10&&(l="0".concat(e.selectedMonth));for(var s=0;s<n;s++){t+=1;var i="".concat(a,"-").concat(l,"-").concat(t),r=new Date(Date.UTC(e.selectedYear,e.selectedMonth,t-1)).getUTCMonth()-1,d=new Date(Date.UTC(e.selectedYear,r,t)).getUTCDay();c(t,d,i,!1,"vanilla-calendar-day__btn_prev")}}(),function(){for(var t=1;t<=a;t++){var n=new Date(Date.UTC(e.selectedYear,e.selectedMonth,t)),l=e.generateDate(n),s=n.getUTCDay();c(t,s,l,!0)}}(),function(){var t=n+a,l=Math.ceil(t/e.locale.weekday.length),s=e.locale.weekday.length*l-t,i=e.selectedYear,r=e.selectedMonth+2;e.selectedMonth+1===e.locale.months.length?(r="01",i=e.selectedYear+1):e.selectedMonth+2<10&&(r="0".concat(e.selectedMonth+2));for(var d=1;d<=s;d++){var o=d<10?"0".concat(d):d,u="".concat(i,"-").concat(r,"-").concat(o),v=new Date(Date.UTC(e.selectedYear,e.selectedMonth,d)).getUTCMonth()+1,h=new Date(Date.UTC(e.selectedYear,v,d)).getUTCDay();c(d,h,u,!1,"vanilla-calendar-day__btn_next")}}(),this.createPopup(l),this.createWeekNumbers(n,a)}},{key:"changeMonth",value:function(e){var t=this.locale.months.length-1;switch(e){case"prev":0!==this.selectedMonth?this.selectedMonth-=1:this.settings.selection.year&&(this.selectedYear-=1,this.selectedMonth=t);break;case"next":this.selectedMonth!==t?this.selectedMonth+=1:this.settings.selection.year&&(this.selectedYear+=1,this.selectedMonth=0)}this.settings.selected.month=this.selectedMonth,this.settings.selected.year=this.selectedYear,this.createHeader(),this.controlArrows(),this.createDays()}},{key:"createYears",value:function(){this.currentType="year",this.createDOM(),this.createHeader(),this.controlArrows();var e=this.HTMLElement.querySelector(".vanilla-calendar-years");this.settings.selection.year&&e.classList.add("vanilla-calendar-years_selecting");var t=document.createElement("button");t.type="button",t.className="vanilla-calendar-years__year";for(var a=this.viewYear-7;a<this.viewYear+8;a++){var n=a,l=t.cloneNode(!0);n===this.selectedYear&&l.classList.add("vanilla-calendar-years__year_selected"),n<this.dateMin.getUTCFullYear()&&l.classList.add("vanilla-calendar-years__year_disabled"),n>this.dateMax.getUTCFullYear()&&l.classList.add("vanilla-calendar-years__year_disabled"),l.dataset.calendarYear=n,l.innerText="".concat(n),e.append(l)}}},{key:"createMonths",value:function(){this.currentType="month",this.createDOM(),this.createHeader();var e=this.HTMLElement.querySelector(".vanilla-calendar-months");this.settings.selection.month&&e.classList.add("vanilla-calendar-months_selecting");var t=document.createElement("button");t.type="button",t.className="vanilla-calendar-months__month";for(var a=0;a<this.locale.months.length;a++){var n=this.locale.months[a],l=t.cloneNode(!0);a===this.selectedMonth&&l.classList.add("vanilla-calendar-months__month_selected"),a<this.dateMin.getUTCMonth()&&this.selectedYear===this.dateMin.getUTCFullYear()&&l.classList.add("vanilla-calendar-months__month_disabled"),a>this.dateMax.getUTCMonth()&&this.selectedYear===this.dateMax.getUTCFullYear()&&l.classList.add("vanilla-calendar-months__month_disabled"),l.dataset.calendarMonth=a,l.title="".concat(n),l.innerText="".concat(this.settings.visibility.monthShort?n.substring(0,3):n),e.append(l)}}},{key:"controlTime",value:function(e){var t=this,a=this.HTMLElement.querySelector('.vanilla-calendar-time__range input[name="hours"]'),n=this.HTMLElement.querySelector('.vanilla-calendar-time__range input[name="minutes"]'),l=this.HTMLElement.querySelector('.vanilla-calendar-time__hours input[name="hours"]'),s=this.HTMLElement.querySelector('.vanilla-calendar-time__minutes input[name="minutes"]'),i=this.HTMLElement.querySelector(".vanilla-calendar-time__keeping"),c=function(e,t){e.addEventListener("mouseover",(function(){return t.classList.add("is-focus")}))},r=function(e,t){e.addEventListener("mouseout",(function(){return t.classList.remove("is-focus")}))},d=function(e,a,n){"hours"===n?t.selectedHours="".concat(a):"minutes"===n&&(t.selectedMinutes="".concat(a)),t.selectedTime="".concat(t.selectedHours,":").concat(t.selectedMinutes).concat(t.selectedKeeping?" ".concat(t.selectedKeeping):""),t.settings.selected.time=t.selectedTime,t.actions.changeTime&&t.actions.changeTime(e,t.selectedTime,t.selectedHours,t.selectedMinutes,t.selectedKeeping)},o=function(e,a,n,l){e.addEventListener("input",(function(e){var s=Number(e.target.value);s=s<10?"0".concat(s):"".concat(s),"hours"===n&&12===l?Number(e.target.value)<l&&Number(e.target.value)>0?(a.value=s,t.selectedKeeping="AM",i.innerText=t.selectedKeeping,d(e,s,n)):(0===Number(e.target.value)?(t.selectedKeeping="AM",i.innerText="AM"):(t.selectedKeeping="PM",i.innerText="PM"),a.value=t.transformTime12(e.target.value),d(e,t.transformTime12(e.target.value),n)):(a.value=s,d(e,s,n))}))},u=function(e,a,n,l){a.addEventListener("change",(function(a){var s=Number(a.target.value);s=s<10?"0".concat(s):"".concat(s),"hours"===n&&12===l?a.target.value&&Number(a.target.value)<=l&&Number(a.target.value)>0?(a.target.value=s,e.value=t.transformTime24(s,t.selectedKeeping),d(a,s,n)):a.target.value&&Number(a.target.value)<24&&(Number(a.target.value)>l||0===Number(a.target.value))?(0===Number(a.target.value)?(t.selectedKeeping="AM",i.innerText="AM"):(t.selectedKeeping="PM",i.innerText="PM"),a.target.value=t.transformTime12(a.target.value),e.value=s,d(a,t.transformTime12(a.target.value),n)):a.target.value=t.selectedHours:a.target.value&&Number(a.target.value)<=l&&Number(a.target.value)>=0?(a.target.value=s,e.value=s,d(a,s,n)):"hours"===n?a.target.value=t.selectedHours:"minutes"===n&&(a.target.value=t.selectedMinutes)}))};c(a,l),c(n,s),r(a,l),r(n,s),o(a,l,"hours",24===e?23:e),o(n,s,"minutes"),u(a,l,"hours",24===e?23:e),u(n,s,"minutes",59),i&&i.addEventListener("click",(function(e){i.innerText.includes("AM")?t.selectedKeeping="PM":t.selectedKeeping="AM",a.value=t.transformTime24(t.selectedHours,t.selectedKeeping),d(e,t.selectedHours,"hours"),i.innerText=t.selectedKeeping}))}},{key:"createTime",value:function(){var e=this.HTMLElement.querySelector(".vanilla-calendar-time");if(e){var t=!0===this.settings.selection.time?12:this.settings.selection.time,a="range"===this.settings.selection.controlTime;e.innerHTML='\n\t\t<div class="vanilla-calendar-time__content">\n\t\t\t<label class="vanilla-calendar-time__hours">\n\t\t\t\t<input type="text"\n\t\t\t\t\tname="hours"\n\t\t\t\t\tmaxlength="2"\n\t\t\t\t\tvalue="'.concat(this.selectedHours,'"\n\t\t\t\t\t').concat(a?"disabled":"",'>\n\t\t\t</label>\n\t\t\t<label class="vanilla-calendar-time__minutes">\n\t\t\t\t<input type="text"\n\t\t\t\t\tname="minutes"\n\t\t\t\t\tmaxlength="2"\n\t\t\t\t\tvalue="').concat(this.selectedMinutes,'"\n\t\t\t\t\t').concat(a?"disabled":"",">\n\t\t\t</label>\n\t\t\t").concat(12===t?'\n\t\t\t<button type="button"\n\t\t\t\tclass="vanilla-calendar-time__keeping"\n\t\t\t\t'.concat(a?"disabled":"",">").concat(this.selectedKeeping,"</button>\n\t\t\t"):"",'\n\t\t</div>\n\t\t<div class="vanilla-calendar-time__ranges">\n\t\t\t<label class="vanilla-calendar-time__range">\n\t\t\t\t<input type="range"\n\t\t\t\t\tname="hours"\n\t\t\t\t\tmin="0"\n\t\t\t\t\tmax="23"\n\t\t\t\t\tstep="').concat(this.settings.selection.stepHours,'"\n\t\t\t\t\tvalue="').concat(this.selectedKeeping?this.transformTime24(this.selectedHours,this.selectedKeeping):this.selectedHours,'">\n\t\t\t</label>\n\t\t\t<label class="vanilla-calendar-time__range">\n\t\t\t\t<input type="range"\n\t\t\t\t\tname="minutes"\n\t\t\t\t\tmin="0"\n\t\t\t\t\tmax="59"\n\t\t\t\t\tstep="').concat(this.settings.selection.stepMinutes,'"\n\t\t\t\t\tvalue="').concat(this.selectedMinutes,'">\n\t\t\t</label>\n\t\t</div>'),this.controlTime(t)}}},{key:"getLocale",value:function(){if("define"!==this.settings.lang){this.locale.weekday=[];for(var e=0;e<7;e++){var t=new Date(0,0,e).toLocaleString(this.settings.lang,{weekday:"short"});t=(t="".concat(t.charAt(0).toUpperCase()).concat(t.substring(1,t.length))).replace(/\./,""),this.locale.weekday.push(t)}this.locale.months=[];for(var a=0;a<12;a++){var n=new Date(0,a).toLocaleString(this.settings.lang,{month:"long"});n=(n="".concat(n.charAt(0).toUpperCase()).concat(n.substring(1,n.length))).replace(/\./,""),this.locale.months.push(n)}}}},{key:"update",value:function(){this.setVariablesDates(),this.getLocale(),this.createDOM(),this.createHeader(),this.controlArrows(),this.createTime(),"default"===this.currentType?(this.createWeek(),this.createDays()):"month"===this.currentType?this.createMonths():"year"===this.currentType&&this.createYears()}},{key:"click",value:function(){var e=this;this.HTMLElement.addEventListener("click",(function(t){var a=t.target.closest(".vanilla-calendar-arrow"),n=t.target.closest(".vanilla-calendar-arrow_prev"),l=t.target.closest(".vanilla-calendar-arrow_next"),s=t.target.closest(".vanilla-calendar-day__btn"),i=t.target.closest(".vanilla-calendar-day__btn_prev"),c=t.target.closest(".vanilla-calendar-day__btn_next"),r=t.target.closest(".vanilla-calendar-year"),d=t.target.closest(".vanilla-calendar-years__year"),o=t.target.closest(".vanilla-calendar-month"),u=t.target.closest(".vanilla-calendar-months__month");a&&"year"!==e.currentType&&"month"!==e.currentType&&e.changeMonth(t.target.dataset.calendarArrow),function(){if(["single","multiple","multiple-ranged"].includes(e.settings.selection.day)&&s){switch(e.settings.selection.day){case"single":s.classList.contains("vanilla-calendar-day__btn_selected")?e.selectedDates.splice(e.selectedDates.indexOf(s.dataset.calendarDay),1):(e.selectedDates=[],e.selectedDates.push(s.dataset.calendarDay));break;case"multiple":s.classList.contains("vanilla-calendar-day__btn_selected")?e.selectedDates.splice(e.selectedDates.indexOf(s.dataset.calendarDay),1):e.selectedDates.push(s.dataset.calendarDay);break;case"multiple-ranged":!function(){if(e.selectedDates.length>1&&(e.selectedDates=[]),e.selectedDates.push(s.dataset.calendarDay),e.selectedDates[1]){var t=new Date(Date.UTC(new Date(e.selectedDates[0]).getUTCFullYear(),new Date(e.selectedDates[0]).getUTCMonth(),new Date(e.selectedDates[0]).getUTCDate())),a=new Date(Date.UTC(new Date(e.selectedDates[1]).getUTCFullYear(),new Date(e.selectedDates[1]).getUTCMonth(),new Date(e.selectedDates[1]).getUTCDate())),n=function(t){var a=e.generateDate(t);e.settings.range.disabled&&e.settings.range.disabled.includes(a)||e.selectedDates.push(a)};if(e.selectedDates=[],a>t)for(var l=t;l<=a;l.setUTCDate(l.getUTCDate()+1))n(l);else for(var i=t;i>=a;i.setUTCDate(i.getUTCDate()-1))n(i)}}()}e.actions.clickDay&&e.actions.clickDay(t,e.selectedDates),e.settings.selected.dates=e.selectedDates,i?e.changeMonth("prev"):c?e.changeMonth("next"):e.createDays()}}(),e.settings.selection.year&&(a&&"year"===e.currentType?(l?e.viewYear+=15:n&&(e.viewYear-=15),e.createYears()):"year"!==e.currentType&&r?e.createYears():"year"===e.currentType&&r?(e.currentType=e.type,e.update()):d&&(e.selectedYear=Number(d.dataset.calendarYear),e.currentType=e.type,e.selectedMonth<e.dateMin.getUTCMonth()&&e.selectedYear===e.dateMin.getUTCFullYear()&&(e.settings.selected.month=e.dateMin.getUTCMonth()),e.selectedMonth>e.dateMax.getUTCMonth()&&e.selectedYear===e.dateMax.getUTCFullYear()&&(e.settings.selected.month=e.dateMax.getUTCMonth()),e.actions.clickYear&&e.actions.clickYear(t,e.selectedYear),e.settings.selected.year=e.selectedYear,e.update())),e.settings.selection.month&&("month"!==e.currentType&&o?e.createMonths():"month"===e.currentType&&o?(e.currentType=e.type,e.update()):u&&(e.selectedMonth=Number(u.dataset.calendarMonth),e.currentType=e.type,e.actions.clickMonth&&e.actions.clickMonth(t,e.selectedMonth),e.settings.selected.month=e.selectedMonth,e.update()))}))}},{key:"init",value:function(){this.HTMLElement&&(this.update(),this.click())}}])&&t(l.prototype,s),i&&t(l,i),Object.defineProperty(l,"prototype",{writable:!1}),n}()}));