2025-11-02 14:35:35 +03:00

1309 lines
37 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(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__) {
"use strict";
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"];
});