/*! * Datepickk * Docs & License: https://crsten.github.com/datepickk * (c) 2017 Carsten Jacobsen */ import '../css/datepickk.less'; function Datepickk(args){ Datepickk.numInstances = (Datepickk.numInstances || 0) + 1; var that = this; var eventName = 'click'; var selectedDates = []; var currentYear = new Date().getFullYear(); var currentMonth = new Date().getMonth() + 1; var languages = { no: { monthNames:['Januar','Februar','Mars','April','Mai','Juni','Juli','August','September','Oktober','November','Desember'], dayNames:['sø','ma','ti','on','to','fr','lø'], weekStart:1 }, se: { monthNames:['januari','februari','mars','april','maj','juni','juli','augusti','september','oktober','november','december'], dayNames:['sö','må','ti','on','to','fr','lö'], weekStart:1 }, ru: { monthNames:['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь'], dayNames:['вс','пн','вт','ср','чт','пт','сб'], weekStart:1 }, en: { monthNames:['january','february','march','april','may','june','july','august','september','october','november','december'], dayNames:['su','mo','tu','we','th','fr','sa'], weekStart:0 }, de: { monthNames:['Januar','Februar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember'], dayNames:['So','Mo','Di','Mi','Do','Fr','Sa'], weekStart:1 } }; /*Language aliases*/ languages.nb = languages.no; languages.nn = languages.no; var range = false; var maxSelections = null; var container = document.body; var opened = false; var months = 1; var closeOnSelect = false; var button = null; var title = null; var onNavigation = null; var onClose = null; var onConfirm = null; var closeOnClick = true; var inline = false; var lang = 'en'; var onSelect = null; var disabledDates = []; var disabledDays = []; var highlight = []; var tooltips = {}; var daynames = true; var today = true; var startDate = null; var minDate = null; var maxDate = null; var weekStart = null; var locked = false; function generateDaynames(){ that.el.days.innerHTML = ''; var ws = (weekStart !== null) ? weekStart : languages[lang].weekStart; if(daynames){ for(var x = 0;x languages[lang].dayNames.length - 1) ? i + ws - languages[lang].dayNames.length : i + ws; var dayEl = document.createElement('div'); var dayTextEl = document.createElement('p'); dayTextEl.innerHTML = languages[lang].dayNames[dayNameIndex]; dayEl.appendChild(dayTextEl); weekEl.appendChild(dayEl); } that.el.days.appendChild(weekEl); } } } function generateYears(){ [].slice.call(that.el.yearPicker.childNodes).forEach(function(node,index) { node.innerHTML = "'" + (currentYear + parseInt(node.getAttribute('data-year'))).toString().substring(2,4); }) } function generateInputs(){ that.el.tables.innerHTML = ''; for(var x = 0;x start){ return true; } } return false; }); var legends = []; for(var l = 0;l<_highlights.length;l++){ if('legend' in _highlights[l] && _highlights[l].legend){ var oldLegend = container.querySelector('.d-legend-item[data-legend="' + _highlights[l].legend + '"][data-color="' + _highlights[l].backgroundColor + '"]'); if(oldLegend == null){ var legendItem = document.createElement('p'); legendItem.setAttribute('class','d-legend-item'); legendItem.setAttribute('data-legend',_highlights[l].legend); legendItem.setAttribute('data-legend-id',highlight.indexOf(_highlights[l])); legendItem.setAttribute('data-color',_highlights[l].backgroundColor); var legendItemPoint = document.createElement('span'); legendItemPoint.setAttribute('style','background-color:' + _highlights[l].backgroundColor); legendItem.appendChild(legendItemPoint); that.el.legend.appendChild(legendItem); legendItem.addEventListener('mouseover',hoverLegend); legendItem.addEventListener('mouseout',hoverLegend); legends.push(legendItem); }else{ legends.push(oldLegend); } } } [].slice.call(that.el.legend.querySelectorAll('.d-legend-item')).forEach(function(item) { if(legends.indexOf(item) < 0){ item.removeEventListener('mouseover',hoverLegend); item.removeEventListener('mouseout',hoverLegend); that.el.legend.removeChild(item); } }); function hoverLegend(e){ [].slice.call(that.el.tables.querySelectorAll('[data-legend-id*="' + this.getAttribute('data-legend-id') + '"]')).forEach(function(element) { if(e.type == 'mouseover') element.classList.add('legend-hover'); else element.classList.remove('legend-hover'); }); } } function parseMonth(month){ if(month > 11) month -= 12; else if(month < 0) month += 12; return month; } function generateDates(year,month){ var monthElements = that.el.querySelectorAll('.d-table'); var ws = (weekStart !== null) ? weekStart : languages[lang].weekStart; [].slice.call(that.el.querySelectorAll('.d-table')).forEach(function(element, index) { var days = new Date(year,month + index,0).getDate(); var daysLast = new Date(year,month + index - 1,0).getDate(); var startDay = new Date(year,month + index - 1,1).getDay(); var startDate = null; var endDate = null; if(startDay - ws < 0){ startDay = 7 - ws; }else{ startDay -= ws; } var monthText = languages[lang].monthNames[parseMonth(month - 1 + index)]; element.setAttribute('data-month',monthText); [].slice.call(element.querySelectorAll('.d-table input')).forEach(function(inputEl,i) { var labelEl = inputEl.nextSibling; inputEl.checked = false; inputEl.removeAttribute('disabled'); labelEl.removeAttribute('style'); labelEl.removeAttribute('data-legend-id'); labelEl.className = ''; var date = null; if(i < startDay){ labelEl.childNodes[0].innerHTML = daysLast - (startDay - i - 1); if(index == 0){ date = new Date(year,month + index - 2,daysLast - (startDay - i - 1)); labelEl.className = 'prev'; }else{ date = ''; labelEl.className = 'd-hidden'; inputEl.setAttribute('disabled',true); } }else if(i < days + startDay){ date = new Date(year,month + index - 1,i - startDay+1); labelEl.childNodes[0].innerHTML = i - startDay + 1; labelEl.className = ''; }else{ labelEl.childNodes[0].innerHTML = i - days - startDay + 1; if(index == monthElements.length-1){ date = new Date(year,month + index,i - days - startDay + 1); labelEl.className = 'next'; }else{ date = ''; labelEl.className = 'd-hidden'; inputEl.setAttribute('disabled',true); } } if(date instanceof Date){ inputEl.setAttribute('data-date',date.toJSON()); if(disabledDates.indexOf(date.getTime()) != -1 || disabledDays.indexOf(date.getDay()) != -1){ inputEl.setAttribute('disabled',true); } if((minDate && date < minDate) || (maxDate && date > maxDate)){ inputEl.setAttribute('disabled',true); labelEl.className = 'd-hidden'; } if(today && date.getTime() == new Date().setHours(0,0,0,0)){ labelEl.classList.add('today'); }else{ labelEl.classList.remove('today'); } if(tooltips[date.getTime()]){ labelEl.childNodes[0].setAttribute('data-tooltip',true); labelEl.childNodes[1].innerHTML = tooltips[date.getTime()]; }else{ labelEl.childNodes[0].removeAttribute('data-tooltip'); labelEl.childNodes[1].innerHTML = ''; } var _highlights = highlight.filter(function(x){ for(var m = 0;m < x.dates.length;m++){ if(date.getTime() >= x.dates[m].start.getTime() && date.getTime() <= x.dates[m].end.getTime()){ return true; } } return false; }); if(_highlights.length > 0){ var bgColor = ''; var legendIds = ''; if(_highlights.length > 1){ var percent = Math.round(100 / _highlights.length); bgColor = 'background: linear-gradient(-45deg,'; for(var z = 0;z < _highlights.length;z++){ legendIds += highlight.indexOf(_highlights[z]); if(z !== _highlights.length -1){legendIds += ' ';} bgColor += _highlights[z].backgroundColor + ' ' + (percent*z) + '%'; if(z != _highlights.length - 1){ bgColor += ','; bgColor += _highlights[z].backgroundColor + ' ' + (percent*(z+1)) + '%,'; } } bgColor += ');'; }else{ bgColor = (_highlights[0].backgroundColor)?'background:'+ _highlights[0].backgroundColor + ';':''; legendIds += highlight.indexOf(_highlights[0]); } var Color = (_highlights[0].color)?'color:'+ _highlights[0].color + ';':''; labelEl.setAttribute('style',bgColor + Color); labelEl.setAttribute('data-legend-id',legendIds); } } }); }); generateLegends(); }; function setDate(){ if(!that.el.tables.childNodes.length || !that.el.tables.childNodes[0].childNodes.length) return; resetCalendar(); if(currentMonth > 12 || currentMonth < 1){ if(currentMonth > 12){ currentYear += 1; currentMonth -= 12; }else{ currentYear -= 1; currentMonth += 12; } } if(maxDate && new Date(currentYear,currentMonth-1+months-1,1) >= new Date(maxDate).setDate(1)){ currentYear = maxDate.getFullYear(); currentMonth = maxDate.getMonth() + 1 - months + 1; that.el.header.childNodes[2].setAttribute('style','visibility:hidden'); }else{ that.el.header.childNodes[2].removeAttribute('style'); } if(minDate && new Date(currentYear,currentMonth -1,1) <= new Date(minDate).setDate(1)){ currentYear = minDate.getFullYear(); currentMonth = minDate.getMonth() + 1; that.el.header.childNodes[0].setAttribute('style','visibility:hidden'); }else{ that.el.header.childNodes[0].removeAttribute('style'); } for(var c = 0;c < months;c++){ var index = currentMonth-1+c; if(index > 11){ index -= 12; }else if(index < 0){ index += 12; } that.el.monthPicker.childNodes[index].classList.add('current'); } generateDates(currentYear,currentMonth); generateYears(); var startmonth = languages[lang].monthNames[currentMonth-1]; var endmonth = ''; if(months > 1){ endmonth += ' - '; var monthint = currentMonth-1+months-1; if(monthint > 11){ monthint -= 12; }else if(monthint < 0){ monthint += 12; } endmonth += languages[lang].monthNames[monthint]; } var yearname = (currentMonth-1+months-1 > 11)?currentYear.toString().substring(2,4) + '/' + (currentYear + 1).toString().substring(2,4):currentYear.toString().substring(2,4); that.el.header.childNodes[1].childNodes[0].innerHTML = startmonth + endmonth; that.el.header.childNodes[1].childNodes[1].innerHTML = yearname; that.el.yearPicker.querySelector('[data-year="0"]').classList.add('current'); if(currentMonth-1+months-1>11){ that.el.yearPicker.querySelector('[data-year="1"]').classList.add('current'); } renderSelectedDates(); if(onNavigation) onNavigation.call(that); }; function renderSelectedDates(){ selectedDates.forEach(function(date) { var el = that.el.querySelector('[data-date="' + date.toJSON() + '"]'); if(el){ el.checked = true; } }); that.el.tables.classList.remove('before'); if(range && selectedDates.length > 1){ var currentDate = new Date(currentYear,currentMonth-1,1); var sorted = selectedDates.sort(function(a,b){return a.getTime()-b.getTime()}); var first = that.el.querySelector('[data-date="'+ sorted[0].toJSON() +'"]'); if(!first && currentDate >= new Date(sorted[0].getFullYear(),sorted[0].getMonth(),1) && currentDate <= new Date(sorted[1].getFullYear(),sorted[1].getMonth(),1)){ that.el.tables.classList.add('before'); } } }; function resetCalendar(){ [].slice.call(that.el.querySelectorAll('.d-table input')).forEach(function(inputEl) { inputEl.checked = false; }); [].slice.call(that.el.monthPicker.querySelectorAll('.current')).forEach(function(monthPickEl) { monthPickEl.classList.remove('current'); }); [].slice.call(that.el.yearPicker.querySelectorAll('.current')).forEach(function(yearPickEl) { yearPickEl.classList.remove('current'); }); }; function nextMonth(){ currentMonth += months; setDate(); }; function prevMonth(){ currentMonth -= months; setDate(); }; function selectDate(date,ignoreOnSelect){ date = new Date(date); date.setHours(0,0,0,0); var el = that.el.querySelector('[data-date="'+ date.toJSON() +'"]'); if(range && el && el.checked) { el.classList.add('single'); } if(el && !el.checked){ el.checked = true; } selectedDates.push(date); if(onSelect && !ignoreOnSelect){ onSelect.apply(date,[true]); } }; function unselectDate(date,ignoreOnSelect){ date = new Date(date); date.setHours(0,0,0,0); var el = that.el.querySelector('[data-date="'+ date.toJSON() +'"]'); if(el){ el.classList.remove('single'); if(el.checked){el.checked = false;} } selectedDates = selectedDates.filter(function(x){return x.getTime() != date.getTime()}); if(onSelect && !ignoreOnSelect){ onSelect.call(date,false); } }; function unselectAll(ignoreOnSelect){ selectedDates.forEach(function(date) { unselectDate(date,ignoreOnSelect); }); }; function inputChange(e){ var input = this; var date = new Date(input.getAttribute('data-date')); input.classList.remove('single'); if(locked){return;} if(range){ that.el.tables.classList.remove('before'); } if(input.checked){ if(maxSelections && selectedDates.length > maxSelections-1){ var length = selectedDates.length; for(length; length > maxSelections-1; length --){ unselectDate(selectedDates[0]); } } if(range && selectedDates.length){ var first = that.el.querySelector('[data-date="'+ selectedDates[0].toJSON() +'"]'); if(!first && date > selectedDates[0]){ that.el.tables.classList.add('before'); } } selectedDates.push(date); if(closeOnSelect){ that.hide(); } }else{ if(range && selectedDates.length == 1 && selectedDates[0].getTime() == date.getTime()){ selectDate(date); input.classList.add('single'); }else{ selectedDates = selectedDates.filter(function(x){return x.getTime() != date.getTime()}) } } if(onSelect){ onSelect.call(date,input.checked); } }; function setRange(val){ if(val){ range = true; that.el.tables.classList.add('range'); }else{ range = false; that.el.tables.classList.remove('range'); } }; function show(properties){ if(!that.inline && that.container === document.body){document.body.classList.add('d-noscroll');} setArgs(properties); var handler = function(){ that.el.classList.remove('d-show'); that.el.calendar.removeEventListener(whichAnimationEvent(),handler); }; that.el.calendar.addEventListener(whichAnimationEvent(),handler); that.el.classList.add('d-show'); container.appendChild(that.el); opened = true; if(startDate){ currentMonth = startDate.getMonth() + 1; currentYear = startDate.getFullYear(); } setDate(); }; function hide(){ document.body.classList.remove('d-noscroll'); var handler = function(){ that.el.parentNode.removeChild(that.el); opened = false; that.el.classList.remove('d-hide'); if(typeof onClose == 'function'){ onClose.apply(that); } that.el.removeEventListener(whichAnimationEvent(),handler); } that.el.addEventListener(whichAnimationEvent(),handler); that.el.classList.add('d-hide'); }; function bindEvents(){ that.el.header.childNodes[0].addEventListener(eventName,prevMonth); that.el.header.childNodes[2].addEventListener(eventName,nextMonth); that.el.header.childNodes[1].childNodes[0].addEventListener(eventName,function(){ if(that.el.monthPicker.classList.contains('d-show')){ that.el.monthPicker.classList.remove('d-show'); }else{ that.el.monthPicker.classList.add('d-show'); } that.el.yearPicker.classList.remove('d-show'); }); that.el.header.childNodes[1].childNodes[1].addEventListener(eventName,function(){ generateYears(); if(that.el.yearPicker.classList.contains('d-show')){ that.el.yearPicker.classList.remove('d-show'); }else{ that.el.yearPicker.classList.add('d-show'); } that.el.monthPicker.classList.remove('d-show'); }); that.el.button.addEventListener(eventName,hide); that.el.overlay.addEventListener(eventName,function(){ if(closeOnClick){ that.hide(); } }); [].slice.call(that.el.monthPicker.childNodes).forEach(function(monthPicker) { monthPicker.addEventListener(eventName,function(){ currentMonth = parseInt(this.getAttribute('data-month')); setDate(); that.el.monthPicker.classList.remove('d-show'); }); }); [].slice.call(that.el.yearPicker.childNodes).forEach(function(yearPicker) { yearPicker.addEventListener(eventName,function(){ currentYear += parseInt(this.getAttribute('data-year')); setDate(); that.el.yearPicker.classList.remove('d-show'); }); }) var startX = 0; var distance = 0; that.el.calendar.addEventListener('touchstart',function(e){ startX = e.changedTouches[0].clientX || e.originalEvent.changedTouches[0].clientX; //e.preventDefault(); }); that.el.calendar.addEventListener('touchmove',function(e){ distance = e.changedTouches[0].clientX - startX || e.originalEvent.changedTouches[0].clientX - startX; e.preventDefault(); }); that.el.calendar.addEventListener('touchend',function(e){ if(distance > 50){ prevMonth(); }else if(distance < -50){ nextMonth(); } distance = 0; }); }; function setArgs(x){ for(var key in x){ if(key in that){ that[key] = x[key]; } }; }; function init(){ that.el = document.createElement('div'); that.el.id = 'Datepickk'; that.el.classList.add(getBrowserVersion().type); that.el.innerHTML = template; that.el.calendar = that.el.childNodes[1]; that.el.titleBox = that.el.childNodes[0]; that.el.button = that.el.childNodes[3]; that.el.header = that.el.calendar.childNodes[0]; that.el.monthPicker = that.el.calendar.childNodes[1]; that.el.yearPicker = that.el.calendar.childNodes[2]; that.el.tables = that.el.calendar.childNodes[4]; that.el.days = that.el.calendar.childNodes[3]; that.el.overlay = that.el.childNodes[4]; that.el.legend = that.el.childNodes[2]; setArgs(args); generateInputs(); generateDaynames(); bindEvents(); if(inline){ show(); } } that.show = show; that.hide = hide; that.selectDate = selectDate; that.unselectAll = unselectAll; that.unselectDate = unselectDate; function currentDateGetter(){ return new Date(currentYear,currentMonth-1,1); } function currentDateSetter(x){ x = new Date(x); currentMonth = x.getMonth() + 1; currentYear = x.getFullYear(); setDate(); } Object.defineProperties(that,{ "selectedDates": { get: function () { return selectedDates.sort(function(a,b){return a.getTime() - b.getTime();}); } }, "range": { get: function() { return range; }, set: function(x) { setRange(x); if(x){maxSelections = 2;} } }, "button": { get: function() { return button; }, set: function(x){ if(typeof x == 'string'){ button = x; }else{ button = null; } that.el.button.innerHTML = (button)?button:''; } }, "title": { get: function(){ return title; }, set: function(x){ if(typeof x == 'string'){ title = x; }else{ title = null; } that.el.titleBox.innerText = (title)?title:''; } }, "lang": { get: function(){ return lang; }, set: function(x){ if(x in languages){ lang = x; generateDaynames(); setDate(); }else{ console.error('Language not found'); } } }, "weekStart": { get: function(){ return (weekStart !== null) ? weekStart : languages[lang].weekStart; }, set: function(x){ if(typeof x == 'number' && x > -1 && x < 7){ weekStart = x; generateDaynames(); setDate(); }else{ console.error('weekStart must be a number between 0 and 6'); } } }, "months": { get: function(){ return months; }, set: function(x){ if(typeof x == 'number' && x > 0){ months = x; generateDaynames(); generateInputs(); setDate(); if(months == 1){ that.el.classList.remove('multi'); }else{ that.el.classList.add('multi'); } }else{ console.error('months must be a number > 0'); } } }, "isOpen": { get: function(){ return opened; } }, "closeOnSelect": { get: function(){ return closeOnSelect; }, set: function(x){ if(x){ closeOnSelect = true; }else{ closeOnSelect = false; } } }, "disabledDays": { get: function(){ return disabledDays; }, set: function(x){ if(x instanceof Array){ for(var i = 0;i < x.length;i++){ if(typeof x[i] == 'number'){ disabledDays.push(x[i]); } } }else if(typeof x == 'number'){ disabledDays = [x]; }else if(!x){ disabledDays = []; } setDate(); } }, "disabledDates": { get: function(){ return disabledDates.map(function(x){return new Date(x);}); }, set: function(x){ if(x instanceof Array){ x.forEach(function(date) { if(date instanceof Date){ disabledDates.push(new Date(date.getFullYear(),date.getMonth(),date.getDate()).getTime()); } }); }else if(x instanceof Date){ disabledDates = [new Date(x.getFullYear(),x.getMonth(),x.getDate()).getTime()]; }else if(!x){ disabledDates = []; } setDate(); } }, "highlight": { get: function(){ return highlight; }, set: function(x){ if(x instanceof Array){ x.forEach(function(hl) { if(hl instanceof Object){ var highlightObj = {}; highlightObj.dates = []; if('start' in hl){ highlightObj.dates.push({ start: new Date(hl.start.getFullYear(),hl.start.getMonth(),hl.start.getDate()), end: ('end' in hl)?new Date(hl.end.getFullYear(),hl.end.getMonth(),hl.end.getDate()):new Date(hl.start.getFullYear(),hl.start.getMonth(),hl.start.getDate()) }); }else if('dates' in hl && hl.dates instanceof Array){ hl.dates.forEach(function(hlDate) { highlightObj.dates.push({ start: new Date(hlDate.start.getFullYear(),hlDate.start.getMonth(),hlDate.start.getDate()), end: ('end' in hlDate)?new Date(hlDate.end.getFullYear(),hlDate.end.getMonth(),hlDate.end.getDate()):new Date(hlDate.start.getFullYear(),hlDate.start.getMonth(),hlDate.start.getDate()) }); }) } highlightObj.color = hl.color; highlightObj.backgroundColor = hl.backgroundColor; highlightObj.legend = ('legend' in hl)?hl.legend:null; highlight.push(highlightObj); } }); }else if(x instanceof Object){ var highlightObj = {}; highlightObj.dates = []; if('start' in x){ highlightObj.dates.push({ start: new Date(x.start.getFullYear(),x.start.getMonth(),x.start.getDate()), end: ('end' in x)?new Date(x.end.getFullYear(),x.end.getMonth(),x.end.getDate()):new Date(x.start.getFullYear(),x.start.getMonth(),x.start.getDate()) }); }else if('dates' in x && x.dates instanceof Array){ x.dates.forEach(function(hlDate) { highlightObj.dates.push({ start: new Date(hlDate.start.getFullYear(),hlDate.start.getMonth(),hlDate.start.getDate()), end: ('end' in hlDate)?new Date(hlDate.end.getFullYear(),hlDate.end.getMonth(),hlDate.end.getDate()):new Date(hlDate.start.getFullYear(),hlDate.start.getMonth(),hlDate.start.getDate()) }); }); } highlightObj.color = x.color; highlightObj.backgroundColor = x.backgroundColor; highlightObj.legend = ('legend' in x)?x.legend:null; highlight.push(highlightObj); }else if(!x){ highlight = []; } setDate(); } }, "onClose": { set: function(callback){ onClose = callback; } }, "onSelect": { set: function(callback){ onSelect = callback; } }, "today": { get: function(){ return today; }, set: function(x){ if(x){ today = true; }else{ today = false; } } }, "daynames": { get: function(){ return daynames; }, set: function(x){ if(x){ daynames = true; }else{ daynames = false; } generateDaynames(); } }, "fullscreen": { get: function(){ return that.el.classList.contains('fullscreen'); }, set: function(x){ if(x){ that.el.classList.add('fullscreen'); }else{ that.el.classList.remove('fullscreen'); } } }, "locked": { get: function(){ return locked; }, set: function(x){ if(x){ locked = true; that.el.tables.classList.add('locked'); }else{ locked = false; that.el.tables.classList.remove('locked'); } } }, "maxSelections": { get: function(){ return maxSelections; }, set: function(x){ if(typeof x == 'number' && !range){ maxSelections = x; }else{ if(range){ maxSelections = 2; }else{ maxSelections = null; } } } }, "onConfirm": { set: function(callback){ if(typeof callback == 'function'){ onConfirm = callback.bind(that); that.el.button.addEventListener(eventName,onConfirm); }else if(!callback){ that.el.button.removeEventListener(eventName,onConfirm); onConfirm = null; } } }, "onNavigation": { set: function(callback){ if(typeof callback == 'function'){ onNavigation = callback.bind(that); }else if(!callback){ onNavigation = null; } } }, "closeOnClick": { get: function(){ return closeOnClick; }, set: function(x){ if(x){ closeOnClick = true; }else{ closeOnClick = false; } } }, "tooltips": { get: function(){ var ret = []; for(key in tooltips){ ret.push({ date: new Date(parseInt(key)), text: tooltips[key] }); } return ret; }, set: function(x){ if(x instanceof Array){ x.forEach(function(item) { if(item.date && item.text && item.date instanceof Date){ tooltips[new Date(item.date.getFullYear(),item.date.getMonth(),item.date.getDate()).getTime()] = item.text; } }); }else if(x instanceof Object){ if(x.date && x.text && x.date instanceof Date){ tooltips[new Date(x.date.getFullYear(),x.date.getMonth(),x.date.getDate()).getTime()] = x.text; } }else if(!x){ tooltips = []; } setDate(); } }, "currentDate": { get: currentDateGetter, set: currentDateSetter }, "setDate": { set: currentDateSetter }, "startDate": { get: function(){ return startDate; }, set: function(x){ if(x){ startDate = new Date(x); }else{ startDate = null; currentYear = new Date().getFullYear(); currentMonth = new Date().getMonth() + 1; } setDate(); } }, "minDate": { get: function(){ return minDate; }, set: function(x){ minDate = (x) ? new Date(x) : null ; setDate(); } }, "maxDate": { get: function(){ return maxDate; }, set: function(x){ maxDate = (x) ? new Date(x) : null ; setDate(); } }, "container": { get: function(){ return container; }, set: function(x){ if(x instanceof String){ var y = document.querySelector(x); if(y){ container = y; if(container != document.body){ that.el.classList.add('wrapped'); }else{ that.el.classList.remove('wrapped'); } }else{ console.error("Container doesn't exist"); } }else if(x instanceof HTMLElement){ container = x; if(container != document.body){ that.el.classList.add('wrapped'); }else{ that.el.classList.remove('wrapped'); } }else{ console.error("Invalid type"); } } }, "inline": { get: function(){ return inline; }, set: function(x){ if(x){ inline = true; that.el.classList.add('inline'); }else{ inline = false; that.el.classList.remove('inline'); } } }, }); init(); setDate(); return Object.freeze(that); }; function whichAnimationEvent(){ var t; var el = document.createElement('fakeelement'); var transitions = { 'animation':'animationend', 'OAnimation':'oanimationend', 'MozAnimation':'animationend', 'WebkitAnimation':'webkitAnimationEnd', '':'MSAnimationEnd' }; for(t in transitions){ if( el.style[t] !== undefined ){ return transitions[t]; } } } var template = '
' + '
' + '
' + '' + '

' + '' + '
' + '
' + '
1
' + '
2
' + '
3
' + '
4
' + '
5
' + '
6
' + '
7
' + '
8
' + '
9
' + '
10
' + '
11
' + '
12
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '' + '
'; var getBrowserVersion = function(){ var browser = { type: null, version: null } var ua= navigator.userAgent, tem, ios, M= ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; ios = ua.match(/(iphone|ipad)\s+OS\s+([\d+_]+\d+)/i) || []; if(/trident/i.test(M[1])){ tem= /\brv[ :]+(\d+)/g.exec(ua) || []; browser.type = 'MSIE'; browser.version = parseInt(tem[1]); return browser; } if(M[1]=== 'Chrome'){ tem= ua.match(/\bOPR\/(\d+)/) if(tem!= null) return 'Opera '+tem[1]; } if(ios[1]){ return browser = { type: 'iOS', version: ios[2] }; } M= M[2]? [M[1], M[2]]: [navigator.appName, navigator.appVersion, '-?']; if((tem= ua.match(/version\/(\d+)/i))!= null) M.splice(1, 1, tem[1]); browser.type = M[0]; browser.version = parseInt(M[1]); return browser; } export default Datepickk