UNPKG

@febe95/vue-functional-calendar

Version:

Lightweight, high-performance calendar component based on Vue.js

3 lines 60.3 kB
(function(C,a){typeof exports=="object"&&typeof module<"u"?a(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],a):(C=typeof globalThis<"u"?globalThis:C||self,a(C.FunctionalCalendar={},C.Vue))})(this,function(C,a){"use strict";Date.prototype.getWeekNumber=function(e){if(!e){let s=(this.getDay()+6)%7;this.setDate(this.getDate()-s+3)}let t=new Date(this.getFullYear(),0,4);return Math.ceil(((this-t)/864e5+t.getDay()+1)/7)};class T{constructor(t,s,l,n){this.sundayStart=t,this.leftAndRightDays=s,this.dateFormat=l,this.dayNames=n}formatDate(t){let s=t.getDate(),l=t.getMonth()+1,n=t.getFullYear(),i=this.dateFormat.replace("dd",s.toString());return i=i.replace("mm",l.toString()),i=i.replace("yyyy",n.toString()),i.split(" ")[0]}getDateFromFormat(t){let s=this.dateFormat.split(" ")[0];if(t=t.split(" ")[0],s.indexOf("/")!==-1)s=s.split("/"),t=t.split("/");else if(s.indexOf("-")!==-1)s=s.split("-"),t=t.split("-");else if(s.indexOf(".")!==-1)s=s.split("."),t=t.split(".");else throw new Error("Your date format not valid. Please read documentation.!");let l=s.indexOf("yyyy"),n=s.indexOf("mm"),i=s.indexOf("dd");return new Date(t[l],t[n]-1,t[i])}checkValidDate(t){return t=this.getDateFromFormat(t),t!="Invalid Date"}getWeeksInMonth(t,s){let l=[],n=new Date(s,t,1),i=new Date(s,t+1,0),r=i.getDate(),d=1,h=this.sundayStart?7-n.getDay():n.getDay()===0?1:7-n.getDay()+1;for(;d<=r;)l.push({year:s,start:d,end:h,number:new Date(s,t,d).getWeekNumber(this.sundayStart),days:[]}),d=h+1,h=h+7,h>r&&(h=r);return{weeks:l,month:i.getMonth(),year:i.getFullYear()}}getLeftMonthDays(t,s){let n=this.getWeeksInMonth(t,s).weeks[0],i=n.end-n.start+1,r=[],d=0,h=0;if(i!==7){let o=this.getWeeksInMonth(t-1,s),m=o.weeks[o.weeks.length-1];for(let c=m.start;c<=m.end;c++)r.push(c);h=o.month,d=o.year}return{days:r.reverse(),month:h,year:d}}getRightMonthDays(t,s){let l=this.getWeeksInMonth(t,s),n=l.weeks[l.weeks.length-1],i=n.end-n.start+1,r=[],d=0,h=0;if(i!==7){let o=this.getWeeksInMonth(t+1,s),m=o.weeks[0];for(let c=m.start;c<=m.end;c++)r.push(c);h=o.month,d=o.year}return{days:r,month:h,year:d}}getFinalizedWeeks(t,s){let l=this.getWeeksInMonth(t,s),n=this.getLeftMonthDays(t,s),i=this.getRightMonthDays(t,s);return l.weeks.forEach(r=>{for(let d=r.start;d<=r.end;d++)r.days.push({day:d,month:l.month,year:l.year,hide:!1,hideLeftAndRightDays:!1})}),n.days.length&&n.days.forEach(r=>{let d=!1;this.leftAndRightDays||(r="",d=!0),l.weeks[0].days.unshift({day:r,month:n.month,year:n.year,hide:!0,hideLeftAndRightDays:d})}),i.days.length&&i.days.forEach(r=>{let d=!1;this.leftAndRightDays||(r="",d=!0),l.weeks[l.weeks.length-1].days.push({day:r,month:i.month,year:i.year,hide:!0,hideLeftAndRightDays:d})}),l.weeks.forEach(r=>{delete r.year}),l.weeks}mask(t){let s=this.getDateFromFormat(t).getDate().toString().length,l=this.getDateFromFormat(t).getMonth(),n="00";s===1&&(n="0");let i="00";l+1<=9&&(i="0");let r=this.dateFormat.replace("dd",n).replace("mm",i).replace("yyyy","0000"),d=/[0\*]/,h=/[0-9]/,o="";for(let m=0,c=0;c<r.length&&!(c>=t.length||r[c]==="0"&&t[m].match(h)==null);){for(;r[c].match(d)==null&&t[m]!==r[c];)o+=r[c++];o+=t[m++],c++}return o}}const D=()=>{},S={props:{activeHours:{type:Array,required:!1},activeMinutes:{type:Array,required:!1},borderColor:{type:String,default:""},displayTimeInput:{type:Boolean,default:!1},configs:{type:Object,default:()=>{}},sundayStart:{type:Boolean,default:D},placeholder:{type:[String,Boolean],default:D},dateFormat:{type:String,validator(e){let t=e.split(" ")[1];return t?!!~["HH:MM","HH:mm","hh:MM","hh:mm"].indexOf(t):!0}},canClearRange:{type:Boolean,default:!1},isMultiple:{type:Boolean,default:D},isSeparately:{type:Boolean,default:D},isDatePicker:{type:Boolean,default:D},isMultipleDatePicker:{type:Boolean,default:D},isMultipleDateRange:{type:Boolean,default:D},isDateRange:{type:Boolean,default:D},withTimePicker:{type:Boolean,default:D},calendarsCount:{type:Number},isModal:{type:Boolean,default:D},isTypeable:{type:Boolean,default:D},changeMonthFunction:{type:Boolean,default:D},changeYearFunction:{type:Boolean,default:D},changeYearStep:{type:Number,default:()=>3},changeMonthStep:{type:Number,default:()=>1},newCurrentDate:{type:Date},markedDates:{type:Array,default:()=>[]},markedDateRange:{type:[Object,Array]},disabledDayNames:{type:Array},disabledDates:{type:Array,default:()=>[]},enabledDates:{type:Array,default:()=>[]},limits:{type:[Object,Boolean],default:D},minSelDays:{type:[Number,Boolean],default:D},maxSelDays:{type:[Number,Boolean],default:D},dayNames:{type:Array},monthNames:{type:Array},shortMonthNames:{type:Array},showWeekNumbers:{type:Boolean,default:D},modelValue:{type:Object},transition:{type:Boolean,default:D},hiddenElements:{type:Array},isAutoCloseable:{type:Boolean,default:void 0},isDark:{type:Boolean,default:void 0},isLayoutExpandable:{type:Boolean,default:void 0},titlePosition:{type:String,default:"center"},arrowsPosition:{type:String,default:"space-between"},alwaysUseDefaultClasses:{type:Boolean,default:!1}},data(){return{popoverElement:"",defaultDateFormat:{date:!1,dateTime:!1,hour:"00",minute:"00"},hoveredObject:null,calendar:{currentDate:new Date,selectedDate:!1,selectedDateTime:!1,selectedHour:"00",selectedMinute:"00",selectedDatesItem:"",selectedDates:[],dateRange:{start:"",end:""},multipleDateRange:[]},transitionPrefix:"left",showCalendar:!0,showMonthPicker:!1,showYearPicker:!1,showTimePicker:!1,allowPreDate:!0,allowNextDate:!0,listCalendars:[],fConfigs:{sundayStart:!1,placeholder:!1,dateFormat:"dd/mm/yyyy hh:MM",isMultipleDateRange:!1,isDatePicker:!1,isMultipleDatePicker:!1,isDateRange:!1,withTimePicker:!1,isMultiple:!1,calendarsCount:1,isSeparately:!1,isModal:!1,isTypeable:!1,changeMonthFunction:!1,changeYearFunction:!1,changeYearStep:3,changeMonthStep:1,markedDates:[],markedDateRange:{start:!1,end:!1},limits:!1,minSelDays:!1,maxSelDays:!1,disabledDates:[],enabledDates:[],disabledDayNames:[],dayNames:["Mo","Tu","We","Th","Fr","Sa","Su"],monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonthNames:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],showWeekNumbers:!1,transition:!0,hiddenElements:[],isAutoCloseable:!1,isDark:!1,isLayoutExpandable:!1,titlePosition:"center",arrowsPosition:"space-between"}}}},k=(e,t)=>{const s=e.__vccOpts||e;for(const[l,n]of t)s[l]=n;return s},N={name:"TimePicker",data(){return{startDateActive:!0,currentSelectedDate:""}},props:{height:{type:Number,required:!0},hours:{type:Array,default:function(){return[...Array(24).keys()]},required:!1},minutes:{type:Array,default:function(){return[...Array(60).keys()]},required:!1}},watch:{startDateActive:function(){this.setScrollPosition()}},computed:{getCurrentDate(){return this.currentSelectedDate.date},getCurrentDateTime(){return this.currentSelectedDate.dateTime}},created(){let e=this.$parent.calendar.selectedDates;this.currentSelectedDate=e[e.length-1]},mounted(){let e=this.$parent.calendar.dateRange.start.split(" ")[0],t=this.$parent.calendar.dateRange.end.split(" ")[0];e&&this.$parent.helpCalendar.getDateFromFormat(e)<this.$parent.helpCalendar.getDateFromFormat(t)?this.startDateActive=!1:this.startDateActive=!0,this.setSelectedDateTime(),this.setStyles()},methods:{formatTime(e){return e<10?"0"+e:e},close(){this.$parent.showTimePicker=!1},addMinuteHour(e,t,s){let l="";return l+=t.split(" ")[0],e=="hour"?(l+=" "+s+":",l+=t.split(" ")[1].split(":")[1]):(l+=" "+t.split(" ")[1].split(":")[0]+":",l+=s),l},changeHour(e){if(this.$parent.fConfigs.isDateRange)this.checkStartDate()?this.$parent.calendar.dateRange.start=this.addMinuteHour("hour",this.$parent.calendar.dateRange.start,e):this.$parent.calendar.dateRange.end=this.addMinuteHour("hour",this.$parent.calendar.dateRange.end,e);else if(this.$parent.fConfigs.isMultipleDatePicker){let t=this.$parent.calendar.selectedDates.find(s=>s.date===this.getCurrentDate);t.hour=e}else this.$parent.calendar.selectedHour=e;this.setSelectedDateTime(),this.setScrollPosition()},changeMinute(e){if(this.$parent.fConfigs.isDateRange)this.checkStartDate()?this.$parent.calendar.dateRange.start=this.addMinuteHour("minute",this.$parent.calendar.dateRange.start,e):this.$parent.calendar.dateRange.end=this.addMinuteHour("minute",this.$parent.calendar.dateRange.end,e);else if(this.$parent.fConfigs.isMultipleDatePicker){let t=this.$parent.calendar.selectedDates.find(s=>s.date===this.getCurrentDate);t.minute=e}else this.$parent.calendar.selectedMinute=e;this.setSelectedDateTime(),this.setScrollPosition()},setSelectedDateTime(){if(this.$parent.fConfigs.isDatePicker)this.$parent.calendar.selectedDateTime=this.$parent.calendar.selectedDate+" "+this.$parent.calendar.selectedHour+":"+this.$parent.calendar.selectedMinute;else if(this.$parent.fConfigs.isMultipleDatePicker){let e=this.$parent.calendar.selectedDates.find(t=>t.date===this.getCurrentDate);e.dateTime=e.date+" "+e.hour+":"+e.minute}},checkStartDate(){return this.startDateActive},checkHourActiveClass(e){let t;return this.$parent.fConfigs.isDateRange?this.checkStartDate()?t=this.$parent.calendar.dateRange.start.split(" ")[1].split(":")[0]:t=this.$parent.calendar.dateRange.end.split(" ")[1].split(":")[0]:this.$parent.fConfigs.isMultipleDatePicker?t=this.$parent.calendar.selectedDates.find(s=>s.date===this.getCurrentDate).hour:t=this.$parent.calendar.selectedHour,this.hours.length&&!this.hours.some(s=>s==t)&&(t=this.hours[0]),t==this.formatTime(e)},checkMinuteActiveClass(e){let t;return this.$parent.fConfigs.isDateRange?this.checkStartDate()?t=this.$parent.calendar.dateRange.start.split(":")[1]:t=this.$parent.calendar.dateRange.end.split(":")[1]:this.$parent.fConfigs.isMultipleDatePicker?t=this.$parent.calendar.selectedDates.find(s=>s.date===this.getCurrentDate).minute:t=this.$parent.calendar.selectedMinute,this.minutes.length&&!this.minutes.some(s=>s==t)&&(t=this.minutes[0]),t==this.formatTime(e)},setStyles(){this.setScrollPosition();let e=+this.height-35-85;document.getElementsByClassName("vfc-time-picker__list")[0].style.height=e+"px",document.getElementsByClassName("vfc-time-picker__list")[1].style.height=e+"px"},setScrollPosition(){let e=this.$parent.$refs.mainContainer;this.$nextTick(function(){const t=this.$refs.hourList.querySelector(".vfc-time-picker__item--selected"),s=this.$refs.minuteList.querySelector(".vfc-time-picker__item--selected");this.$refs.hourList.scrollTop=t?t.offsetTop-e.clientHeight/2:0,this.$refs.minuteList.scrollTop=s?s.offsetTop-e.clientHeight/2:0})}}},E={class:"vfc-time-picker-container"},b={class:"vfc-modal-time-mechanic"},P={id:"time-line",class:"vfc-modal-time-line"},B={class:"vfc-time-picker"},$={class:"vfc-time-picker__list vfc-time-picker__list--hours",ref:"hourList"},A=["onClick"],O={class:"vfc-time-picker__list vfc-time-picker__list--minutes",ref:"minuteList"},Y=["onClick"];function L(e,t,s,l,n,i){return a.openBlock(),a.createElementBlock("div",E,[a.createElementVNode("div",{class:"vfc-close",onClick:t[0]||(t[0]=r=>i.close())}),a.createElementVNode("div",b,[a.createElementVNode("div",P,[a.createElementVNode("span",null,[e.$parent.fConfigs.isDateRange?(a.openBlock(),a.createElementBlock(a.Fragment,{key:0},[a.createElementVNode("span",{onClick:t[1]||(t[1]=r=>n.startDateActive=!0),class:a.normalizeClass({"vfc-active":n.startDateActive})},a.toDisplayString(e.$parent.calendar.dateRange.start),3),e.$parent.calendar.dateRange.end?(a.openBlock(),a.createElementBlock(a.Fragment,{key:0},[t[3]||(t[3]=a.createElementVNode("span",null,"-",-1)),a.createElementVNode("span",{onClick:t[2]||(t[2]=r=>n.startDateActive=!1),class:a.normalizeClass({"vfc-active":!n.startDateActive})},a.toDisplayString(e.$parent.calendar.dateRange.end),3)],64)):a.createCommentVNode("",!0)],64)):e.$parent.fConfigs.isMultipleDatePicker?(a.openBlock(),a.createElementBlock(a.Fragment,{key:1},[a.createTextVNode(a.toDisplayString(i.getCurrentDateTime),1)],64)):(a.openBlock(),a.createElementBlock(a.Fragment,{key:2},[a.createTextVNode(a.toDisplayString(e.$parent.calendar.selectedDateTime),1)],64))])]),t[4]||(t[4]=a.createElementVNode("div",{class:"titles"},[a.createElementVNode("div",null,"Hour"),a.createElementVNode("div",null,"Minute")],-1)),a.createElementVNode("div",B,[a.createElementVNode("div",$,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(s.hours,r=>(a.openBlock(),a.createElementBlock("div",{class:a.normalizeClass(["vfc-time-picker__item",{"vfc-time-picker__item--selected":i.checkHourActiveClass(r)}]),key:r,onClick:d=>i.changeHour(i.formatTime(r))},a.toDisplayString(i.formatTime(r)),11,A))),128))],512),a.createElementVNode("div",O,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(s.minutes,r=>(a.openBlock(),a.createElementBlock("div",{class:a.normalizeClass(["vfc-time-picker__item",{"vfc-time-picker__item--selected":i.checkMinuteActiveClass(r)}]),key:r,onClick:d=>i.changeMinute(i.formatTime(r))},a.toDisplayString(i.formatTime(r)),11,Y))),128))],512)])])])}const V=k(N,[["render",L],["__scopeId","data-v-5dc081df"]]),H={name:"CalendarArrows",props:{fConfigs:{type:Object,required:!0},allowPreDate:{type:Boolean,required:!0},allowNextDate:{type:Boolean,required:!0},calendarKey:{type:Number,default:0},isMultiple:{type:Boolean,required:!0}},computed:{oneArrows(){return!this.fConfigs.isSeparately&&!this.isMultiple},manyArrows(){return this.fConfigs.isSeparately&&this.isMultiple}}};function x(e,t,s,l,n,i){return a.openBlock(),a.createElementBlock("div",null,[i.oneArrows||i.manyArrows?(a.openBlock(),a.createElementBlock("div",{key:0,class:a.normalizeClass(["vfc-separately-navigation-buttons","vfc-"+s.fConfigs.arrowsPosition])},[a.createElementVNode("div",{onClick:t[0]||(t[0]=r=>e.$parent.PreMonth(i.oneArrows?0:s.calendarKey)),class:a.normalizeClass({"vfc-cursor-pointer":s.allowPreDate})},[a.renderSlot(e.$slots,"navigationArrowLeft",{},()=>[a.createElementVNode("div",{class:a.normalizeClass(["vfc-arrow-left",{"vfc-disabled":!s.allowPreDate}])},null,2)])],2),a.createElementVNode("div",{onClick:t[1]||(t[1]=r=>e.$parent.NextMonth(i.oneArrows?0:s.calendarKey)),class:a.normalizeClass({"vfc-cursor-pointer":s.allowNextDate})},[a.renderSlot(e.$slots,"navigationArrowRight",{},()=>[a.createElementVNode("div",{class:a.normalizeClass(["vfc-arrow-right",{"vfc-disabled":!s.allowNextDate}])},null,2)])],2)],2)):a.createCommentVNode("",!0)])}const I=k(H,[["render",x]]),_={name:"WeekNumbers",props:{number:{tyoe:Number,required:!0},borderColor:{type:String,default:""}}},v={class:"vfc-span-day"};function W(e,t,s,l,n,i){return a.openBlock(),a.createElementBlock("div",{class:"vfc-day vfc-week-number",style:a.normalizeStyle({borderRightColor:s.borderColor})},[a.createElementVNode("span",v,a.toDisplayString(s.number),1)],4)}const j=k(_,[["render",W]]),z={name:"CalendarDay",props:{day_key:{type:Number,required:!0},week:{type:Object,required:!0},day:{type:Object,required:!0},helpCalendar:{type:Object,required:!0},fConfigs:{type:Object,required:!0},calendar:{type:Object,required:!0},alwaysUseDefaultClasses:{type:Boolean,default:!1}},emits:["clearRange","dayMouseOver"],data(){return{toolTip:!1,onNumber:!1}},computed:{startActive(){if(!this.fConfigs.isMultipleDateRange)return(this.day.isDateRangeStart||this.day.isMouseToLeft)&&!this.day.hideLeftAndRightDays;"".inRange||this.inRangeInit();const e=this.day.date.inRange(this.calendar.multipleDateRange),t=this.calendar.multipleDateRange[this.calendar.multipleDateRange.length-1];if(!t)return e;const s=~this.calendar.multipleDateRange.map(n=>n.start).indexOf(this.day.date),l=~this.calendar.multipleDateRange.map(n=>n.end).indexOf(this.day.date);return s===l&&l?e:s&&~s>-1&&this.calendar.multipleDateRange[~s].end||!t.start&&!t.end?s||e:(this.day.isDateRangeStart||this.day.isMouseToLeft)&&!this.day.hideLeftAndRightDays||e},endActive(){if(!this.fConfigs.isMultipleDateRange)return(this.day.isDateRangeEnd||this.day.isMouseToRight)&&!this.day.hideLeftAndRightDays;"".inRange||this.inRangeInit();const e=this.day.date.inRange(this.calendar.multipleDateRange),t=this.calendar.multipleDateRange[this.calendar.multipleDateRange.length-1];if(!t)return e;const s=~this.calendar.multipleDateRange.map(n=>n.start).indexOf(this.day.date),l=~this.calendar.multipleDateRange.map(n=>n.end).indexOf(this.day.date);return s===l&&l?e:l?!0:!t.start&&!t.end?t.start===t.end?!1:l:(this.day.isDateRangeEnd||this.day.isMouseToRight)&&!this.day.hideLeftAndRightDays||e},numberShow(){return this.fConfigs.isMultipleDateRange?!!(~this.calendar.multipleDateRange.map(t=>t.end).indexOf(this.day.date)||~this.calendar.multipleDateRange.map(t=>t.start).indexOf(this.day.date)):!1},timesShow(){let e=this.calendar.multipleDateRange?~this.calendar.multipleDateRange.map(t=>t.end).indexOf(this.day.date):-1;return this.fConfigs.isMultipleDateRange&&e},getDaysNumber(){const e=this.calendar.multipleDateRange.map(n=>n.end).indexOf(this.day.date),t=this.calendar.multipleDateRange.map(n=>n.start).indexOf(this.day.date),s=this.calendar.multipleDateRange.map(n=>n.end).lastIndexOf(this.day.date),l=this.calendar.multipleDateRange.map(n=>n.start).lastIndexOf(this.day.date);return this.toolTip=e!==s||t!==l||e>-1&&t>-1||t>-1&&e>-1,this.toolTip?"·":(e>-1?Number(e):null)??t}},methods:{toolTipTxt(){const e=[],t=this.calendar.multipleDateRange.map(r=>r.end),s=this.calendar.multipleDateRange.map(r=>r.start);let l=0,n=0,i=t.indexOf(this.day.date,l);for(;~t.indexOf(this.day.date,l);)i=t.indexOf(this.day.date,l),e.push(i),l=i+1;for(i=s.indexOf(this.day.date,n);~s.indexOf(this.day.date,n);)i=s.indexOf(this.day.date,n),e.push(i),n=i+1;return e.sort((r,d)=>r-d)},inRangeInit(){//!!!!\\ const e=this.helpCalendar;String.prototype.inRange=function(t){let s=!1;return t.forEach(l=>{const n=+e.getDateFromFormat(l.start.split(" ")[0]),i=+e.getDateFromFormat(l.end.split(" ")[0]),r=+e.getDateFromFormat(this.split(" ")[0]);n!==i&&n&&i&&(s=s||n<r&&r<i)}),s};//!!!!\\ },clearRange(){this.$emit("clearRange",this.day.date)},dayMouseOver(){this.$emit("dayMouseOver",this.day.date)},hasSlot(e="default"){return!!this.$parent.$parent.$slots[e]},isDisabledDate(e){const t=this.fConfigs.disabledDates;return this.isDateIncludedInDatesCollection(e,t)||!this.isEnabledDate(e)},isEnabledDate(e){const t=this.fConfigs.enabledDates;return!t.length||this.isDateIncludedInDatesCollection(e,t)},isDateIncludedInDatesCollection(e,t){let s=new Date;s.setHours(0,0,0,0);let l=this.helpCalendar.getDateFromFormat(e);return t.includes(e)||t.includes("beforeToday")&&l.getTime()<s.getTime()||t.includes("afterToday")&&l.getTime()>s.getTime()},getClassNames(e){let t=[];(!this.hasSlot("default")||this.alwaysUseDefaultClasses)&&t.push("vfc-span-day");let s=this.helpCalendar.getDateFromFormat(e.date).getDay()-1;s===-1&&(s=6);let l=this.fConfigs.dayNames[s];this.fConfigs.disabledDayNames.includes(l)&&(e.hide=!0,t.push("vfc-cursor-not-allowed"));let n=this.helpCalendar.getDateFromFormat(e.date);if(new Date().setHours(0,0,0,0),this.isDisabledDate(e.date)&&(t.push("vfc-disabled"),t.push("vfc-cursor-not-allowed")),this.fConfigs.limits){let r=this.helpCalendar.getDateFromFormat(this.fConfigs.limits.min).getTime(),d=this.helpCalendar.getDateFromFormat(this.fConfigs.limits.max).getTime();(n.getTime()<r||n.getTime()>d)&&(t.push("vfc-disabled"),t.push("vfc-cursor-not-allowed"))}if(e.hide&&t.push("vfc-hide"),e.isToday&&t.push("vfc-today"),!e.hideLeftAndRightDays&&!this.fConfigs.disabledDayNames.includes(l)&&(e.isMarked?t.push("vfc-marked"):e.isHovered&&t.push("vfc-hovered"),this.fConfigs.markedDates.includes(e.date)&&t.push("vfc-borderd"),Array.isArray(this.fConfigs.markedDateRange)?this.fConfigs.markedDateRange.forEach(r=>{this.helpCalendar.getDateFromFormat(r.start)<=this.helpCalendar.getDateFromFormat(e.date)&&this.helpCalendar.getDateFromFormat(r.end)>=this.helpCalendar.getDateFromFormat(e.date)&&t.push("vfc-marked"),e.date===r.start?t.push("vfc-start-marked"):e.date===r.end&&t.push("vfc-end-marked")}):this.fConfigs.markedDateRange.start&&this.fConfigs.markedDateRange.end?(this.helpCalendar.getDateFromFormat(this.fConfigs.markedDateRange.start)<=this.helpCalendar.getDateFromFormat(e.date)&&this.helpCalendar.getDateFromFormat(this.fConfigs.markedDateRange.end)>=this.helpCalendar.getDateFromFormat(e.date)&&t.push("vfc-marked"),e.date===this.fConfigs.markedDateRange.start?t.push("vfc-start-marked"):e.date===this.fConfigs.markedDateRange.end&&t.push("vfc-end-marked")):(this.fConfigs.markedDateRange.start&&this.helpCalendar.getDateFromFormat(this.fConfigs.markedDateRange.start)<=this.helpCalendar.getDateFromFormat(e.date)&&t.push("vfc-marked"),this.fConfigs.markedDateRange.end&&this.helpCalendar.getDateFromFormat(this.fConfigs.markedDateRange.end)>=this.helpCalendar.getDateFromFormat(e.date)&&t.push("vfc-marked")),t.push("vfc-hover")),this.fConfigs.isMultipleDateRange&&("".inRange||this.inRangeInit(),(e.isMarked||~this.calendar.multipleDateRange.map(r=>r.start.split(" ")[0]).indexOf(e.date)||~this.calendar.multipleDateRange.map(r=>r.end.split(" ")[0]).indexOf(e.date)||e.date.inRange(this.calendar.multipleDateRange))&&t.push("vfc-marked"),this.fConfigs.markedDates.includes(e.date)&&t.push("vfc-borderd"),~this.calendar.multipleDateRange.map(r=>r.start.split(" ")[0]).indexOf(e.date)&&t.push("vfc-start-marked"),~this.calendar.multipleDateRange.map(r=>r.end.split(" ")[0]).indexOf(e.date)&&t.push("vfc-end-marked")),typeof this.fConfigs.markedDates=="object"){let r=this.fConfigs.markedDates.find(d=>d.date===e.date);typeof r<"u"&&t.push(r.class)}return e.date===this.calendar.dateRange.start.split(" ")[0]&&t.push("vfc-start-marked"),e.date===this.calendar.dateRange.end.split(" ")[0]&&t.push("vfc-end-marked"),(e.date===this.calendar.selectedDate||Object.prototype.hasOwnProperty.call(this.calendar,"selectedDates")&&this.calendar.selectedDates.find(r=>r.date===e.date))&&t.push("vfc-borderd"),t}}},q={class:"vfc-day"},U={key:0,class:"vfc-base-start"},J={key:1,class:"vfc-base-end"};function G(e,t,s,l,n,i){return a.openBlock(),a.createElementBlock("div",q,[i.startActive?(a.openBlock(),a.createElementBlock("div",U)):a.createCommentVNode("",!0),i.endActive?(a.openBlock(),a.createElementBlock("div",J)):a.createCommentVNode("",!0),s.day.hideLeftAndRightDays?a.createCommentVNode("",!0):(a.openBlock(),a.createElementBlock("span",{key:2,class:a.normalizeClass(i.getClassNames(s.day)),onClick:t[3]||(t[3]=a.withModifiers(r=>e.$parent.$parent.clickDay(s.day,i.isDisabledDate),["self"])),onMouseover:t[4]||(t[4]=(...r)=>i.dayMouseOver&&i.dayMouseOver(...r))},[a.renderSlot(e.$slots,"default",{week:s.week,day:s.day},()=>[a.createTextVNode(a.toDisplayString(s.day.day),1)],!0),i.timesShow?(a.openBlock(),a.createElementBlock("span",{key:0,onClick:t[0]||(t[0]=(...r)=>i.clearRange&&i.clearRange(...r)),class:"times"},"×")):a.createCommentVNode("",!0),i.numberShow?(a.openBlock(),a.createElementBlock("span",{key:1,onMouseover:t[1]||(t[1]=r=>n.toolTip&&(n.onNumber=!0)),onMouseleave:t[2]||(t[2]=r=>n.onNumber=!1),class:"number"},[a.createTextVNode(a.toDisplayString(i.getDaysNumber)+" ",1),a.withDirectives(a.createElementVNode("div",{class:"toolTip"},a.toDisplayString(i.toolTipTxt().join(" ")),513),[[a.vShow,n.toolTip&&n.onNumber]])],32)):a.createCommentVNode("",!0)],34))])}const Q=k(z,[["render",G],["__scopeId","data-v-042468d1"]]),X={name:"MonthYearPicker",props:{calendarKey:{type:Number,default:0},changeYearStep:{type:Number,default:3}},data(){return{delta:0}},watch:{delta(e){e<-new Date().getFullYear()&&(this.delta=0)}},methods:{changePicker(e){if(this.$parent.showMonthPicker){e==="right"?this.$parent.NextYear(this.calendarKey):this.$parent.PreYear(this.calendarKey);return}e==="right"?this.delta+=this.changeYearStep:this.delta-=this.changeYearStep}}},Z={class:"vfc-months-container"},K={class:"vfc-content vfc-content-MY-picker"},ee={class:"vfc-navigation-buttons"},te={class:"vfc-months"},ae=["onClick"],se=["onClick"];function ie(e,t,s,l,n,i){return a.openBlock(),a.createElementBlock("div",Z,[a.createElementVNode("div",K,[a.createElementVNode("div",ee,[a.createElementVNode("div",{onClick:t[0]||(t[0]=r=>i.changePicker("left"))},t[3]||(t[3]=[a.createElementVNode("div",{class:"vfc-arrow-left"},null,-1)])),a.createElementVNode("h2",{class:a.normalizeClass(["vfc-top-date",n.delta!==0&&"vfc-top-date-has-delta"]),onClick:t[1]||(t[1]=r=>n.delta=0)},[t[4]||(t[4]=a.createElementVNode("span",{class:"vfc-popover-caret"},null,-1)),a.createTextVNode(" "+a.toDisplayString(e.$parent.listCalendars[s.calendarKey].date.getFullYear()),1)],2),a.createElementVNode("div",{onClick:t[2]||(t[2]=r=>i.changePicker("right"))},t[5]||(t[5]=[a.createElementVNode("div",{class:"vfc-arrow-right"},null,-1)]))]),a.createElementVNode("div",te,[e.$parent.showMonthPicker?(a.openBlock(!0),a.createElementBlock(a.Fragment,{key:0},a.renderList(e.$parent.fConfigs.shortMonthNames,(r,d)=>(a.openBlock(),a.createElementBlock("div",{class:a.normalizeClass(["vfc-item",{"vfc-selected":e.$parent.listCalendars[s.calendarKey].date.getMonth()===d}]),key:d,onClick:h=>e.$parent.pickMonth(d,s.calendarKey)},a.toDisplayString(r),11,ae))),128)):e.$parent.showYearPicker?(a.openBlock(!0),a.createElementBlock(a.Fragment,{key:1},a.renderList(e.$parent.getYearList(e.$parent.listCalendars[s.calendarKey].date,n.delta),(r,d)=>(a.openBlock(),a.createElementBlock("div",{class:a.normalizeClass(["vfc-item",{"vfc-selected":e.$parent.listCalendars[s.calendarKey].date.getFullYear()===r.year}]),key:d,onClick:h=>e.$parent.pickYear(r.year,s.calendarKey)},a.toDisplayString(r.year),11,se))),128)):a.createCommentVNode("",!0)])])])}const ne=k(X,[["render",ie]]),re={name:"PickerInputs",props:{fConfigs:{type:Object,required:!0},singleSelectedDate:{type:String,required:!0},calendar:{type:Object,required:!0}},emits:["update:singleSelectedDate","update:calendar"],computed:{dateRangeSelectedStartDate:{get(){return this.calendar.dateRange.start?this.calendar.dateRange.start:""},set(e){if(e=this.helpCalendar.mask(e),this.helpCalendar.getDateFromFormat(e).getMonth()){const t={...this.calendar,dateRange:{...this.calendar.dateRange,start:e}};this.$emit("update:calendar",t)}}},dateRangeSelectedEndDate:{get(){return this.calendar.dateRange.end?this.calendar.dateRange.end:""},set(e){if(e=this.helpCalendar.mask(e),this.helpCalendar.getDateFromFormat(e).getMonth()){const t={...this.calendar,dateRange:{...this.calendar.dateRange,end:e}};this.$emit("update:calendar",t)}}}},methods:{updateSingleDate(e){this.$emit("update:singleSelectedDate",e.target.value)},updateDateRangeStart(e){this.dateRangeSelectedStartDate=e.target.value},updateDateRangeEnd(e){this.dateRangeSelectedEndDate=e.target.value},updateSelectedDatesItem(e){const t={...this.calendar,selectedDatesItem:e.target.value};this.$emit("update:calendar",t)},removeFromSelectedDates(e){this.$parent.removeFromSelectedDates(e)}}},le=["value","placeholder","readonly","maxlength"],de=["value","placeholder","readonly","maxlength"],oe=["value","placeholder","readonly","maxlength"],he={class:"vfc-tags-input-wrapper-default vfc-tags-input"},fe=["innerHTML"],ce=["onClick"],me=["value"];function ge(e,t,s,l,n,i){return a.openBlock(),a.createElementBlock("div",null,[s.fConfigs.isModal&&s.fConfigs.isDateRange?(a.openBlock(),a.createElementBlock("div",{key:0,class:a.normalizeClass(["vfc-multiple-input",{"vfc-dark":s.fConfigs.isDark}])},[a.renderSlot(e.$slots,"dateRangeInputs",{startDate:i.dateRangeSelectedStartDate,endDate:i.dateRangeSelectedEndDate,isTypeable:s.fConfigs.isTypeable},()=>[a.createElementVNode("input",{type:"text",title:"Start Date",value:i.dateRangeSelectedStartDate,onInput:t[0]||(t[0]=(...r)=>i.updateDateRangeStart&&i.updateDateRangeStart(...r)),placeholder:s.fConfigs.placeholder.split(" ")[0],readonly:!s.fConfigs.isTypeable,maxlength:s.fConfigs.dateFormat.length},null,40,le),a.createElementVNode("input",{type:"text",title:"End Date",value:i.dateRangeSelectedEndDate,onInput:t[1]||(t[1]=(...r)=>i.updateDateRangeEnd&&i.updateDateRangeEnd(...r)),placeholder:s.fConfigs.placeholder.split(" ")[0],readonly:!s.fConfigs.isTypeable,maxlength:s.fConfigs.dateFormat.length},null,40,de)])],2)):s.fConfigs.isModal&&s.fConfigs.isDatePicker?(a.openBlock(),a.createElementBlock("div",{key:1,class:a.normalizeClass({"vfc-dark":s.fConfigs.isDark})},[a.renderSlot(e.$slots,"datePickerInput",{selectedDate:s.singleSelectedDate,isTypeable:s.fConfigs.isTypeable},()=>[a.createElementVNode("input",{class:"vfc-single-input",type:"text",title:"Date",value:s.singleSelectedDate,onInput:t[2]||(t[2]=(...r)=>i.updateSingleDate&&i.updateSingleDate(...r)),placeholder:s.fConfigs.placeholder,readonly:!s.fConfigs.isTypeable,maxlength:s.fConfigs.dateFormat.length},null,40,oe)])],2)):s.fConfigs.isModal&&s.fConfigs.isMultipleDatePicker?(a.openBlock(),a.createElementBlock("div",{key:2,class:a.normalizeClass(["vfc-tags-input-root",{"vfc-dark":s.fConfigs.isDark}])},[a.createElementVNode("div",he,[(a.openBlock(!0),a.createElementBlock(a.Fragment,null,a.renderList(s.calendar.selectedDates,(r,d)=>(a.openBlock(),a.createElementBlock("span",{class:"vfc-tags-input-badge vfc-tags-input-badge-pill vfc-tags-input-badge-selected-default",key:d},[a.createElementVNode("span",{innerHTML:r.date},null,8,fe),a.createElementVNode("a",{href:"#",class:"vfc-tags-input-remove",onClick:a.withModifiers(h=>i.removeFromSelectedDates(d),["prevent"])},null,8,ce)]))),128)),a.createElementVNode("input",{value:s.calendar.selectedDatesItem,onInput:t[3]||(t[3]=(...r)=>i.updateSelectedDatesItem&&i.updateSelectedDatesItem(...r)),onKeydown:t[4]||(t[4]=a.withKeys(a.withModifiers((...r)=>e.$parent.addToSelectedDates&&e.$parent.addToSelectedDates(...r),["prevent"]),["enter"])),type:"text",placeholder:"Add a date"},null,40,me)])],2)):a.createCommentVNode("",!0)])}const pe=k(re,[["render",ge]]),De={name:"CalendarFooter"},ue={class:"footerCon"};function Ce(e,t,s,l,n,i){return a.openBlock(),a.createElementBlock("div",ue,[a.renderSlot(e.$slots,"cleaner",{},void 0,!0),a.renderSlot(e.$slots,"footer",{},void 0,!0)])}const ke=k(De,[["render",Ce],["__scopeId","data-v-41b323e9"]]),ye=(e,t)=>!!e&&!!t&&(e===t||e.contains(t)),y=()=>new Date().getUTCMilliseconds(),we={name:"FunctionalCalendar",components:{MonthYearPicker:ne,TimePicker:V,PickerInputs:pe,CalendarArrows:I,CalendarFooter:ke,CalendarDay:Q,WeekNumbers:j},mixins:[S],computed:{startDMY(){return this.calendar.dateRange.start?this.calendar.dateRange.start.split(" ")[0]:""},endDMY(){return this.calendar.dateRange.end?this.calendar.dateRange.end.split(" ")[0]:""},rangeIsSelected(){return this.isMultipleDateRange?this.calendar.multipleDateRange.length>0:!!(this.calendar.dateRange.end&&this.calendar.dateRange.start)},helpCalendar(){return new T(this.fConfigs.sundayStart,this.checkHiddenElement("leftAndRightDays"),this.fConfigs.dateFormat,this.fConfigs.dayNames)},singleSelectedDate:{get(){let e="";if(this.displayTimeInput){const t=["HH:MM","HH:mm","hh:MM","hh:mm","MM:HH","mm:HH","MM:hh","mm:hh"];let s=this.fConfigs.dateFormat;this.dateFormat&&(s=this.dateFormat),t.indexOf(s.split(" ")[1])>3?e+=" "+[this.calendar.selectedHour,this.calendar.selectedMinute].reverse().join(":"):e+=" "+[this.calendar.selectedHour,this.calendar.selectedMinute].join(":")}return this.calendar.selectedDate?this.calendar.selectedDate+e:""},set(e){e=this.helpCalendar.mask(e),this.helpCalendar.getDateFromFormat(e).getMonth()&&(this.calendar.selectedDate=e)}}},created(){this.setConfigs(),this.initCalendar()},mounted(){this.displayTimeInput&&(this.fConfigs.placeholder.split(" ")[1]||(this.fConfigs.placeholder+=" hh:mm")),this.popoverElement=this.$refs.popoverElement,this.popoverElement.addEventListener("focusin",this.onFocusIn),this.popoverElement.addEventListener("focusout",this.onFocusOut),window.addEventListener("click",this.hideMonthYearPicker,{capture:!0}),this.$watch("modelValue",function(e){if(typeof e=="object"&&(Object.prototype.hasOwnProperty.call(e,"dateRange")||Object.prototype.hasOwnProperty.call(e,"selectedDate")))this.calendar=e;else if(typeof e=="object"&&Object.prototype.hasOwnProperty.call(e,"multipleDateRange")){this.calendar.multipleDateRange=e.multipleDateRange;const t=this.calendar.multipleDateRange[Math.max(0,this.calendar.multipleDateRange.length-1)];if(t&&(t.start&&!t.end||!t.start&&t.end))throw new Error("Invalid Data Range")}},{immediate:!0,deep:!0}),this.$watch("showCalendar",function(e){e?this.$emit("opened"):this.$emit("closed")},{immediate:!0,deep:!0})},beforeUnmount:function(){window.removeEventListener("focusin",this.onFocusIn),window.removeEventListener("focusout",this.onFocusOut),window.removeEventListener("click",this.hideMonthYearPicker)},watch:{enabledDates:{handler(){this.fConfigs.enabledDates=this.enabledDates},deep:!0},"configs.enabledDates":{handler(){this.fConfigs.enabledDates=this.configs.enabledDates},deep:!0},fConfigs:{handler(){this.markChooseDays()},deep:!0,immediate:!0},calendar:{handler(){this.markChooseDays()},deep:!0,immediate:!0},"calendar.currentDate":{handler(e){this.$emit("input",this.calendar),this.checkLimits(e)}}},methods:{initCalendar(){this.setCalendarData(),this.listRendering(),this.markChooseDays(),this.checkLimits(this.calendar.currentDate)},updateCalendar(){this.setExistingCalendarData(),this.listRendering(),this.markChooseDays()},isNotSeparatelyAndFirst(e){return this.isSeparately||e==0},setCalendarData(){let e=this.calendar.currentDate;e=new Date(e.getFullYear(),e.getMonth()-1),this.listCalendars=[];for(let t=0;t<this.fConfigs.calendarsCount;t++){e=new Date(e.getFullYear(),e.getMonth()+1);let s={key:t+y(),date:e,dateTop:`${this.fConfigs.monthNames[e.getMonth()]} ${e.getFullYear()}`,month:this.fConfigs.monthNames[e.getMonth()],year:e.getFullYear(),weeks:this.helpCalendar.getFinalizedWeeks(e.getMonth(),e.getFullYear())};if(this.listCalendars.push(s),!this.fConfigs.isMultiple)break}},setExistingCalendarData(){for(let e=0;e<this.listCalendars.length;e++){let t=this.listCalendars[e],s=t.date;if(this.listCalendars[e]={key:t.key,date:s,dateTop:`${this.fConfigs.monthNames[s.getMonth()]} ${s.getFullYear()}`,month:this.fConfigs.monthNames[s.getMonth()],year:s.getFullYear(),weeks:this.helpCalendar.getFinalizedWeeks(s.getMonth(),s.getFullYear())},!this.fConfigs.isMultiple)break}},setConfigs(){let e;if(typeof this.$getOptions<"u"&&(e=this.$getOptions(),Object.keys(e).forEach(t=>{typeof this.fConfigs[t]<"u"&&(this.fConfigs[t]=e[t])})),typeof this.configs<"u"?Object.keys(this.fConfigs).forEach(t=>{typeof this.configs[t]<"u"&&(this.fConfigs[t]=this.configs[t])}):Object.keys(this.$props).forEach(t=>{typeof this.fConfigs[t]<"u"&&typeof this.$props[t]<"u"&&(this.fConfigs[t]=this.$props[t])}),this.fConfigs.isModal&&(this.showCalendar=!1),this.fConfigs.placeholder||(this.fConfigs.placeholder=this.fConfigs.dateFormat),typeof this.newCurrentDate<"u"&&(this.calendar.currentDate=this.newCurrentDate),this.fConfigs.sundayStart){let t=[...this.fConfigs.dayNames],s=t[t.length-1];t.splice(t.length-1,1),t.unshift(s),this.fConfigs.dayNames=t}},listRendering(){this.listCalendars.forEach(e=>{e.weeks.forEach(t=>{let s=[];t.days.forEach(l=>{let n=new Date(l.year,l.month,l.day),i=new Date,r=!1;n.setHours(0,0,0,0),i.setHours(0,0,0,0),n.getTime()===i.getTime()&&(r=!0);let d;typeof this.fConfigs.markedDates[0]=="object"?d=this.fConfigs.markedDates.find(o=>o.date===this.helpCalendar.formatDate(n)):d=this.fConfigs.markedDates.find(o=>o===this.helpCalendar.formatDate(n)),this.startDMY===this.helpCalendar.formatDate(n)&&(d=!0);let h=!1;typeof d<"u"&&(h=!0),s.push({day:l.day,date:this.helpCalendar.formatDate(n),hide:l.hide,isMouseToLeft:!1,isMouseToRight:!1,isHovered:!1,isDateRangeStart:this.checkDateRangeStart(this.helpCalendar.formatDate(n)),isDateRangeEnd:this.checkDateRangeEnd(this.helpCalendar.formatDate(n)),hideLeftAndRightDays:l.hideLeftAndRightDays,isToday:r,isMarked:h})}),t.days=s})})},clickDay(e,t){if(this.fConfigs.withTimePicker&&this.fConfigs.isDateRange&&(e.date=e.date+" 00:00"),this.$emit("dayClicked",e),!this.fConfigs.isDateRange&&!this.fConfigs.isDatePicker&&!this.fConfigs.isMultipleDatePicker)return!1;let s=this.helpCalendar.getDateFromFormat(e.date).getDay()-1;s===-1&&(s=6);let l=this.fConfigs.dayNames[s];if(this.fConfigs.disabledDayNames.includes(l)||t(e.date))return!1;if(this.fConfigs.limits){let n=this.helpCalendar.getDateFromFormat(this.fConfigs.limits.min).getTime(),i=this.helpCalendar.getDateFromFormat(this.fConfigs.limits.max).getTime(),r=this.helpCalendar.getDateFromFormat(e.date).getTime();if(r<n||r>i)return!1}if(this.fConfigs.isMultipleDateRange){let n=this.helpCalendar.getDateFromFormat(e.date.split(" ")[0]).getTime(),i=this.calendar.multipleDateRange.length,r=this.calendar.multipleDateRange[i-1],d="";if(r||(this.calendar.multipleDateRange.push({end:"",start:""}),i=this.calendar.multipleDateRange.length,r=this.calendar.multipleDateRange[i-1]),r.start&&(d=this.helpCalendar.getDateFromFormat(r.start)),r.start!==""&&r.end!==""?this.calendar.multipleDateRange.push({end:"",start:e.date}):r.start===""&&r.end===""?r.start=e.date:r.end===""&&n>d.getTime()?r.end=e.date:r.start!==""&&n<=d.getTime()&&(this.$nextTick(()=>{this.calendar.withTimePicker&&(this.$refs.timePicker.startDateActive=!0)}),r.end=r.start,r.start=e.date),r.start!==""&&r.end!==""){let h=864e5,o=this.helpCalendar.getDateFromFormat(r.start),m=this.helpCalendar.getDateFromFormat(r.end),c=Math.round(Math.abs((o.getTime()-m.getTime())/h)),p=this.helpCalendar.getDateFromFormat(e.date).getTime();this.$emit("selectedDaysCount",c),this.fConfigs.isModal&&this.fConfigs.isAutoCloseable&&(this.showCalendar=!1);let f=this.fConfigs.minSelDays;f&&p>=d.getTime()&&c<f&&(d.setDate(d.getDate()+(f-1)),r.end=this.helpCalendar.formatDate(d)),f&&p<d.getTime()&&c<f&&(d.setDate(d.getDate()-(f-1)),r.start=this.helpCalendar.formatDate(d));let g=this.fConfigs.maxSelDays;g&&p>=d.getTime()&&c>=g&&(d.setDate(d.getDate()+(g-1)),r.end=this.helpCalendar.formatDate(d)),g&&p<d.getTime()&&c>=g&&(d.setDate(d.getDate()-(g-1)),r.start=this.helpCalendar.formatDate(d))}this.$emit("input",this.calendar)}else if(this.fConfigs.isDateRange){let n=this.helpCalendar.getDateFromFormat(e.date.split(" ")[0]).getTime(),i="";if(this.calendar.dateRange.start&&(i=this.helpCalendar.getDateFromFormat(this.calendar.dateRange.start)),this.calendar.dateRange.start!==""&&this.calendar.dateRange.end!==""?(this.calendar.dateRange.start=e.date,this.calendar.dateRange.end=""):this.calendar.dateRange.start===""&&this.calendar.dateRange.end===""?this.calendar.dateRange.start=e.date:this.calendar.dateRange.end===""&&n>i.getTime()?this.calendar.dateRange.end=e.date:this.calendar.dateRange.start!==""&&n<=i.getTime()&&(this.$nextTick(()=>{this.calendar.dateRange&&this.calendar.withTimePicker&&(this.$refs.timePicker.startDateActive=!0)}),this.calendar.dateRange.end=this.calendar.dateRange.start,this.calendar.dateRange.start=e.date),this.calendar.dateRange.start!==""&&this.calendar.dateRange.end!==""){let r=864e5,d=this.helpCalendar.getDateFromFormat(this.calendar.dateRange.start),h=this.helpCalendar.getDateFromFormat(this.calendar.dateRange.end),o=Math.round(Math.abs((d.getTime()-h.getTime())/r)),m=this.helpCalendar.getDateFromFormat(e.date).getTime();this.$emit("selectedDaysCount",o),this.fConfigs.isModal&&this.fConfigs.isAutoCloseable&&(this.showCalendar=!1);let c=this.fConfigs.minSelDays;c&&m>=i.getTime()&&o<c&&(i.setDate(i.getDate()+(c-1)),this.calendar.dateRange.end=this.helpCalendar.formatDate(i)),c&&m<i.getTime()&&o<c&&(i.setDate(i.getDate()-(c-1)),this.calendar.dateRange.start=this.helpCalendar.formatDate(i));let p=this.fConfigs.maxSelDays;p&&m>=i.getTime()&&o>=p&&(i.setDate(i.getDate()+(p-1)),this.calendar.dateRange.end=this.helpCalendar.formatDate(i)),p&&m<i.getTime()&&o>=p&&(i.setDate(i.getDate()-(p-1)),this.calendar.dateRange.start=this.helpCalendar.formatDate(i))}this.$emit("input",this.calendar)}else if(this.fConfigs.isDatePicker)this.calendar.selectedDate=e.date,this.$emit("input",this.calendar),this.fConfigs.isModal&&this.fConfigs.isAutoCloseable&&(this.showCalendar=!1);else if(this.fConfigs.isMultipleDatePicker){if(Object.prototype.hasOwnProperty.call(this.calendar,"selectedDates")&&this.calendar.selectedDates.find(n=>n.date===e.date)){let n=this.calendar.selectedDates.findIndex(i=>i.date===e.date);this.calendar.selectedDates.splice(n,1)}else{let n=Object.assign({},this.defaultDateFormat);n.date=e.date,Object.prototype.hasOwnProperty.call(this.calendar,"selectedDates")||(this.calendar.selectedDates=[]),this.calendar.selectedDates.push(n)}this.$emit("input",this.calendar)}this.markChooseDays(),this.fConfigs.withTimePicker&&((this.fConfigs.isDateRange||this.fConfigs.isDatePicker)&&this.openTimePicker(),this.calendar.selectedDates.find(n=>n.date===e.date)&&this.fConfigs.isMultipleDatePicker&&this.openTimePicker()),this.$emit("choseDay",e)},markChooseDays(){let e=this.startDMY,t=this.endDMY;this.listCalendars.forEach(s=>{s.weeks.forEach(l=>{l.days.forEach(n=>{n.isMarked=!1,n.date=n.date.split(" ")[0],this.fConfigs.isDatePicker?this.calendar.selectedDate===n.date&&(n.isMarked=!0):this.fConfigs.isMultipleDatePicker?Object.prototype.hasOwnProperty.call(this.calendar,"selectedDates")&&this.calendar.selectedDates.find(i=>i.date===n.date)&&(n.isMarked=!0):(n.isMouseToLeft=!1,n.isMouseToRight=!1,e===n.date&&(n.isMouseToLeft=!!t,n.isMarked=!0),t===n.date&&(n.isMouseToRight=!!t,n.isMarked=!0),this.calendar.multipleDateRange&&(~this.calendar.multipleDateRange.map(i=>i.start.split(" ")[0]).indexOf(n.date)&&(n.isMouseToLeft=!!t,n.isMarked=!0),~this.calendar.multipleDateRange.map(i=>i.end.split(" ")[0]).indexOf(n.date)&&(n.isMouseToRight=!!t,n.isMarked=!0),this.calendar.multipleDateRange.forEach(i=>{i.start&&i.start===i.end&&(n.isMouseToLeft=!1,n.isMouseToRight=!1),i.start&&i.end&&this.helpCalendar.getDateFromFormat(n.date).getTime()>this.helpCalendar.getDateFromFormat(i.start)&&this.helpCalendar.getDateFromFormat(n.date)<this.helpCalendar.getDateFromFormat(i.end)&&(n.isMarked=!0)})),e&&e===t&&(n.isMouseToLeft=!1,n.isMouseToRight=!1),e&&t&&this.helpCalendar.getDateFromFormat(n.date).getTime()>this.helpCalendar.getDateFromFormat(e)&&this.helpCalendar.getDateFromFormat(n.date)<this.helpCalendar.getDateFromFormat(t)&&(n.isMarked=!0)),this.fConfigs.markedDates.includes(n.date)&&(n.isMarked=!0)})})})},dayMouseOver(e){if(this.$emit("dayMouseOver",e),!this.fConfigs.isDateRange)return!1;if(this.fConfigs.limits){let t=this.helpCalendar.getDateFromFormat(this.fConfigs.limits.min).getTime(),s=this.helpCalendar.getDateFromFormat(this.fConfigs.limits.max).getTime(),l=this.helpCalendar.getDateFromFormat(e).getTime();if(l<t||l>s)return!1}if((this.calendar.dateRange.start===""||this.calendar.dateRange.end==="")&&(this.calendar.dateRange.start!==""||this.calendar.dateRange.end!==""))for(let t=0;t<this.listCalendars.length;t++){let s=this.listCalendars[t];for(let l=0;l<s.weeks.length;l++){let n=s.weeks[l];for(let i=0;i<n.days.length;i++){let r=n.days[i];if(this.listCalendars[t].weeks[l].days[i].isHovered=!1,r.date!==this.startDMY&&!this.fConfigs.markedDates.includes(r.date)&&(this.listCalendars[t].weeks[l].days[i].isMarked=!1),this.calendar.dateRange.start){let d=this.helpCalendar.getDateFromFormat(r.date).getTime(),h=this.helpCalendar.getDateFromFormat(e).getTime(),o=this.helpCalendar.getDateFromFormat(this.calendar.dateRange.start);this.listCalendars[t].weeks[l].days[i].isMouseToLeft=d===o.getTime()&&h>o.getTime()||d===h&&h<o.getTime(),this.listCalendars[t].weeks[l].days[i].isMouseToRight=d===o.getTime()&&h<o.getTime()||d===h&&h>o.getTime();let m=this.helpCalendar.getDateFromFormat(r.date).getDay()-1;m===-1&&(m=6);let c=this.fConfigs.dayNames[m];if(!this.fConfigs.disabledDayNames.includes(c)&&(d>o.getTime()&&d<h||d<o.getTime()&&d>h)&&(this.listCalendars[t].weeks[l].days[i].isMarked=!0),!this.calendar.dateRange.end&&d===h&&(this.listCalendars[t].weeks[l].days[i].isHovered=!1),this.checkSelDates("min",this.calendar.dateRange.start,r.date,e)){this.listCalendars[t].weeks[l].days[i].isMarked=!0;let p,f;f=new Date(o.getTime()),p=new Date(o.getTime()),f.setDate(f.getDate()-this.fConfigs.minSelDays+1),p.setDate(p.getDate()+this.fConfigs.minSelDays-1),h>=f.getTime()&&this.helpCalendar.formatDate(f)===r.date?(this.listCalendars[t].weeks[l].days[i].isMarked=!1,this.listCalendars[t].weeks[l].days[i].isMouseToLeft=!0,this.listCalendars[t].weeks[l].days[i].isHovered=!0):h<=p.getTime()&&this.helpCalendar.formatDate(p)===r.date&&(this.listCalendars[t].weeks[l].days[i].isMarked=!1,this.listCalendars[t].weeks[l].days[i].isMouseToRight=!0,this.listCalendars[t].weeks[l].days[i].isHovered=!0)}if(this.checkSelDates("max",this.calendar.dateRange.start,r.date,e)){this.listCalendars[t].weeks[l].days[i].isMarked=!1,this.listCalendars[t].weeks[l].days[i].isHovered=!1,this.listCalendars[t].weeks[l].days[i].isMouseToLeft=!1,this.listCalendars[t].weeks[l].days[i].isMouseToRight=!1;let p,f;p=new Date(o.getTime()),f=new Date(o.getTime()),p.setDate(p.getDate()-this.fConfigs.maxSelDays+1),f.setDate(f.getDate()+this.fConfigs.maxSelDays-1),h<=p.getTime()&&this.helpCalendar.formatDate(p)===r.date&&(this.listCalendars[t].weeks[l].days[i].isHovered=!0,this.listCalendars[t].weeks[l].days[i].isMouseToLeft=!0),h>=f.getTime()&&this.helpCalendar.formatDate(f)===r.date&&(this.listCalendars[t].weeks[l].days[i].isHovered=!0,this.listCalendars[t].weeks[l].days[i].isMouseToRight=!0)}}}}}if(this.calendar.multipleDateRange){let t=this.calendar.multipleDateRange[this.calendar.multipleDateRange.length-1];if(!t)return;if((t.start===""||t.end==="")&&(t.start!==""||t.end!==""))for(let s=0;s<this.listCalendars.length;s++){let l=this.listCalendars[s];for(let n=0;n<l.weeks.length;n++){let i=l.weeks[n];for(let r=0;r<i.days.length;r++){let d=i.days[r];if(this.listCalendars[s].weeks[n].days[r].isHovered=!1,d.date!==this.startDMY&&!this.fConfigs.markedDates.includes(d.date)&&(this.listCalendars[s].weeks[n].days[r].isMarked=!1),t.start){let h=this.helpCalendar.getDateFromFormat(d.date).getTime(),o=this.helpCalendar.getDateFromFormat(e).getTime(),m=this.helpCalendar.getDateFromFormat(t.start);this.listCalendars[s].weeks[n].days[r].isMouseToLeft=h===m.getTime()&&o>m.getTime()||h===o&&o<m.getTime(),this.listCalendars[s].weeks[n].days[r].isMouseToRight=h===m.getTime()&&o<m.getTime()||h===o&&o>m.getTime();let c=this.helpCalendar.getDateFromFormat(d.date).getDay()-1;c===-1&&(c=6);let p=this.fConfigs.dayNames[c];if(!this.fConfigs.disabledDayNames.includes(p)&&(h>m.getTime()&&h<o||h<m.getTime()&&h>o)&&(this.listCalendars[s].weeks[n].days[r].isMarked=!0),!t.end&&h===o&&(this.listCalendars[s].weeks[n].days[r].isHovered=!1),this.checkSelDates("min",t.start,d.date,e)){this.listCalendars[s].weeks[n].days[r].isMarked=!0;let f,g;g=new Date(m.getTime()),f=new Date(m.getTime()),g.setDate(g.getDate()-this.fConfigs.minSelDays+1),f.setDate(f.getDate()+this.fConfigs.minSelDays-1),o>=g.getTime()&&this.helpCalendar.formatDate(g)===d.date?(this.listCalendars[s].weeks[n].days[r].isMarked=!1,this.listCalendars[s].weeks[n].days[r].isMouseToLeft=!0,this.listCalendars[s].weeks[n].days[r].isHovered=!0):o<=f.getTime()&&this.helpCalendar.formatDate(f)===d.date&&(this.listCalendars[s].weeks[n].days[r].isMarked=!1,this.listCalendars[s].weeks[n].days[r].isMouseToRight=!0,this.listCalendars[s].weeks[n].days[r].isHovered=!0)}if(this.checkSelDates("max",t.start,d.date,e)){this.listCalendars[s].weeks[n].days[r].isMarked=!1,this.listCalendars[s].weeks[n].days[r].isHovered=!1,this.listCalendars[s].weeks[n].days[r].isMouseToLeft=!1,this.listCalendars[s].weeks[n].days[r].isMouseToRight=!1;let f,g;f=new Date(m.getTime()),g=new Date(m.getTime()),f.setDate(f.getDate()-this.fConfigs.maxSelDays+1),g.setDate(g.getDate()+this.fConfigs.maxSelDays-1),o<=f.getTime()&&this.helpCalendar.formatDate(f)===d.date&&(this.listCalendars[s].weeks[n].days[r].isHovered=!0,this.listCalendars[s].weeks[n].days[r].isMouseToLeft=!0),o>=g.getTime()&&this.helpCalendar.formatDate(g)===d.date&&(this.listCalendars[s].weeks[n].days[r].isHovered=!0,this.listCalendars[s].weeks[n].days[r].isMouseToRight=!0)}}}}}}},PreMonth(e=null){if(!this.allowPreDate)return!1;this.transitionPrefix="right";let t=this.fConfigs.changeMonthStep;e=e!==null?e:0;let s=this.listCalendars[e];s.date=new Date(s.date.getFullYear(),s.date.getMonth()-t),s.key-=y(),this.updateCalendar(),this.fConfigs.isSeparately||(this.calendar.currentDate=s.date,this.initCalendar()),this.$emit("changedMonth",s.date)},NextMonth(e=null){if(!this.allowNextDate)return!1;this.transitionPrefix="left";let t=this.fConfigs.changeMonthStep;e=e!==null?e:0;let s=this.listCalendars[e];s.date=new Date(s.date.getFullYear(),s.date.getMonth()+t),s.key+=y(),this.updateCalendar(),this.fConfigs.isSeparately||(this.calendar.currentDate=s.date,this.initCalendar()),this.$emit("changedMonth",s.date)},PreYear(e=null){if(!this.allowPreDate)return!1;let t=this.showYearPicker?this.fConfigs.changeYearStep:1;e=e!==null?e:0;let s=this.listCalendars[e];s.date=new Date(s.date.getFullYear()-t,s.date.getMonth()),this.updateCalendar(),this.fConfigs.isSeparately||(this.calendar.currentDate=s.date,this.initCalendar()),this.$emit("changedYear",s.date)},NextYear(e=null){if(!this.allowNextDate)return!1;let t=this.showYearPicker?this.fConfigs.changeYearStep:1;e=e!==null?e:0;let s=this.listCalendars[e];s.date=new Date(s.date.getFullYear()+t,s.date.getMonth()),this.updateCalendar(),this.fConfigs.isSeparately||(this.calendar.currentDate=s.date,this.initCalendar()),this.$emit("changedYear",s.date)},ChooseDate(e){let t=this.helpCalendar.getDateFromFormat(e);e==="today"&&(t=new Date),this.listCalendars[0].date=this.calendar.currentDate=t,this.updateCalendar(),this.initCalendar()},openMonthPicker(e){this.fConfigs.changeMonthFunction&&(this.showMonthPicker=e===this.showMonthPicker?!1:e,this.showYearPicker=!1)},openYearPicker(e){this.fConfigs.changeYearFunction&&(this.showYearPicker=e===this.showYearPicker?!1:e,this.showMonthPicker=!1)},openTimePicker(){this.showTimePicker=!0},pickMonth(e,t){if(this.showMonthPicker=!1,!this.isSeparately)thi