datepickk
Version:
Flexbox/js datepicker
1,309 lines (1,193 loc) • 37.8 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["Datepickk"] = factory();
else
root["Datepickk"] = factory();
})(this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
;
Object.defineProperty(exports, "__esModule", {
value: true
});
__webpack_require__(1);
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 < months && x < 3; x++) {
var weekEl = document.createElement('div');
weekEl.setAttribute('class', 'd-week');
for (var i = 0; i < 7; i++) {
var dayNameIndex = i + ws > 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 < months; x++) {
var container = document.createElement('div');
container.setAttribute('class', 'd-table');
for (var i = 0; i < 42; i++) {
var input = document.createElement('input');
input.type = 'checkbox';
input.id = Datepickk.numInstances + '-' + x + '-d-day-' + i;
var label = document.createElement('label');
label.setAttribute("for", Datepickk.numInstances + '-' + x + '-d-day-' + i);
var text = document.createElement('text');
var tooltip = document.createElement('span');
tooltip.setAttribute('class', 'd-tooltip');
container.appendChild(input);
container.appendChild(label);
label.appendChild(text);
label.appendChild(tooltip);
input.addEventListener(eventName, function (event) {
if (locked) {
event.preventDefault();
}
});
input.addEventListener('change', inputChange);
}
that.el.tables.appendChild(container);
}
that.el.tables.addEventListener('mouseover', highlightLegend);
that.el.tables.addEventListener('mouseout', highlightLegend);
function highlightLegend(e) {
if (e.target.nodeName !== 'LABEL') return;
var legendIds = e.target.getAttribute('data-legend-id') ? e.target.getAttribute('data-legend-id').split(' ') : [];
if (!legendIds.length) return;
legendIds.forEach(function (legendId) {
var element = that.el.legend.querySelector('[data-legend-id="' + legendId + '"]');
if (e.type == 'mouseover' && element) {
var color = element.getAttribute('data-color') ? hexToRgb(element.getAttribute('data-color')) : null;
element.setAttribute('style', 'background-color:rgba(' + color.r + ',' + color.g + ',' + color.b + ',0.35);');
} else if (element) {
element.removeAttribute('style');
}
});
function hexToRgb(hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
}
}
function generateLegends() {
var start = new Date(that.el.tables.childNodes[0].childNodes[0].getAttribute('data-date'));
var end = new Date(that.el.tables.childNodes[months - 1].childNodes[82].getAttribute('data-date'));
var _highlights = highlight.filter(function (x) {
for (var m = 0; m < x.dates.length; m++) {
if (x.dates[m].start < end && x.dates[m].end > 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 handler() {
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 handler() {
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 get() {
return selectedDates.sort(function (a, b) {
return a.getTime() - b.getTime();
});
}
},
"range": {
get: function get() {
return range;
},
set: function set(x) {
setRange(x);
if (x) {
maxSelections = 2;
}
}
},
"button": {
get: function get() {
return button;
},
set: function set(x) {
if (typeof x == 'string') {
button = x;
} else {
button = null;
}
that.el.button.innerHTML = button ? button : '';
}
},
"title": {
get: function get() {
return title;
},
set: function set(x) {
if (typeof x == 'string') {
title = x;
} else {
title = null;
}
that.el.titleBox.innerText = title ? title : '';
}
},
"lang": {
get: function get() {
return lang;
},
set: function set(x) {
if (x in languages) {
lang = x;
generateDaynames();
setDate();
} else {
console.error('Language not found');
}
}
},
"weekStart": {
get: function get() {
return weekStart !== null ? weekStart : languages[lang].weekStart;
},
set: function set(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 get() {
return months;
},
set: function set(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 get() {
return opened;
}
},
"closeOnSelect": {
get: function get() {
return closeOnSelect;
},
set: function set(x) {
if (x) {
closeOnSelect = true;
} else {
closeOnSelect = false;
}
}
},
"disabledDays": {
get: function get() {
return disabledDays;
},
set: function set(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 get() {
return disabledDates.map(function (x) {
return new Date(x);
});
},
set: function set(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 get() {
return highlight;
},
set: function set(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 set(callback) {
onClose = callback;
}
},
"onSelect": {
set: function set(callback) {
onSelect = callback;
}
},
"today": {
get: function get() {
return today;
},
set: function set(x) {
if (x) {
today = true;
} else {
today = false;
}
}
},
"daynames": {
get: function get() {
return daynames;
},
set: function set(x) {
if (x) {
daynames = true;
} else {
daynames = false;
}
generateDaynames();
}
},
"fullscreen": {
get: function get() {
return that.el.classList.contains('fullscreen');
},
set: function set(x) {
if (x) {
that.el.classList.add('fullscreen');
} else {
that.el.classList.remove('fullscreen');
}
}
},
"locked": {
get: function get() {
return locked;
},
set: function set(x) {
if (x) {
locked = true;
that.el.tables.classList.add('locked');
} else {
locked = false;
that.el.tables.classList.remove('locked');
}
}
},
"maxSelections": {
get: function get() {
return maxSelections;
},
set: function set(x) {
if (typeof x == 'number' && !range) {
maxSelections = x;
} else {
if (range) {
maxSelections = 2;
} else {
maxSelections = null;
}
}
}
},
"onConfirm": {
set: function set(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 set(callback) {
if (typeof callback == 'function') {
onNavigation = callback.bind(that);
} else if (!callback) {
onNavigation = null;
}
}
},
"closeOnClick": {
get: function get() {
return closeOnClick;
},
set: function set(x) {
if (x) {
closeOnClick = true;
} else {
closeOnClick = false;
}
}
},
"tooltips": {
get: function get() {
var ret = [];
for (key in tooltips) {
ret.push({
date: new Date(parseInt(key)),
text: tooltips[key]
});
}
return ret;
},
set: function set(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 get() {
return startDate;
},
set: function set(x) {
if (x) {
startDate = new Date(x);
} else {
startDate = null;
currentYear = new Date().getFullYear();
currentMonth = new Date().getMonth() + 1;
}
setDate();
}
},
"minDate": {
get: function get() {
return minDate;
},
set: function set(x) {
minDate = x ? new Date(x) : null;
setDate();
}
},
"maxDate": {
get: function get() {
return maxDate;
},
set: function set(x) {
maxDate = x ? new Date(x) : null;
setDate();
}
},
"container": {
get: function get() {
return container;
},
set: function set(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 get() {
return inline;
},
set: function set(x) {
if (x) {
inline = true;
that.el.classList.add('inline');
} else {
inline = false;
that.el.classList.remove('inline');
}
}
}
});
init();
setDate();
return Object.freeze(that);
} /*!
* Datepickk
* Docs & License: https://crsten.github.com/datepickk
* (c) 2017 Carsten Jacobsen
*/
;
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 = '<div class="d-title"></div>' + '<div class="d-calendar">' + '<div class="d-header">' + '<i id="d-previous"></i>' + '<p><span class="d-month"></span><span class="d-year"></span></p>' + '<i id="d-next"></i>' + '</div>' + '<div class="d-month-picker">' + '<div data-month="1">1</div>' + '<div data-month="2">2</div>' + '<div data-month="3">3</div>' + '<div data-month="4">4</div>' + '<div data-month="5">5</div>' + '<div data-month="6">6</div>' + '<div data-month="7">7</div>' + '<div data-month="8">8</div>' + '<div data-month="9">9</div>' + '<div data-month="10">10</div>' + '<div data-month="11">11</div>' + '<div data-month="12">12</div>' + '</div>' + '<div class="d-year-picker">' + '<div data-year="-5"></div>' + '<div data-year="-4"></div>' + '<div data-year="-3"></div>' + '<div data-year="-2"></div>' + '<div data-year="-1"></div>' + '<div data-year="0"></div>' + '<div data-year="1"></div>' + '<div data-year="2"></div>' + '<div data-year="3"></div>' + '<div data-year="4"></div>' + '<div data-year="5"></div>' + '</div>' + '<div class="d-weekdays"></div>' + '<div class="d-tables"></div>' + '</div>' + '<div class="d-legend"></div>' + '<button class="d-confirm"></button>' + '<div class="d-overlay"></div>';
var getBrowserVersion = function getBrowserVersion() {
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;
};
exports.default = Datepickk;
/***/ }),
/* 1 */
/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
/***/ })
/******/ ])["default"];
});