1/*! 2 * Evo Calendar - Simple and Modern-looking Event Calendar Plugin 3 * 4 * Licensed under the MIT License 5 * 6 * Version: 1.1.3 7 * Author: Edlyn Villegas 8 * Docs: https://edlynvillegas.github.com/evo-calendar 9 * Repo: https://github.com/edlynvillegas/evo-calendar 10 * Issues: https://github.com/edlynvillegas/evo-calendar/issues 11 * 12 */ 13!(function (e) { 14 "use strict"; 15 "function" == typeof define && define.amd ? define(["jquery"], e) : "undefined" != typeof exports ? (module.exports = e(require("jquery"))) : e(jQuery); 16})(function (d) { 17 "use strict"; 18 var i, 19 r = window.EvoCalendar || {}; 20 (i = 0), 21 ((r = function (e, t) { 22 var a = this; 23 if ( 24 ((a.defaults = { 25 theme: null, 26 format: "mm/dd/yyyy", 27 titleFormat: "MM yyyy", 28 eventHeaderFormat: "MMd, yyyy", 29 firstDayOfWeek: 0, 30 language: "en", 31 todayHighlight: !1, 32 sidebarDisplayDefault: !0, 33 sidebarToggler: !0, 34 eventDisplayDefault: !0, 35 eventListToggler: !0, 36 calendarEvents: null, 37 }), 38 (a.options = d.extend({}, a.defaults, t)), 39 (a.initials = { 40 default_class: d(e)[0].classList.value, 41 validParts: /dd?|DD?|mm?|MM?|yy(?:yy)?/g, 42 dates: { 43 hu: { 44 days: ["Vasárnap", "HétfÅ", "Kedd", "Szerda", "Csütörtök", "Péntek", "Szombat"], 45 daysShort: ["Vas", "Hét", "Ked", "Sze", "Csü", "Pén", "Szo"], 46 daysMin: ["Va", "Hé", "Ke", "Sz", "Cs", "Pé", "Sz"], 47 months: ["Január", "Február", "Március", "Ãprilis", "Május", "Június", "Július", "Augusztus", "Szeptember", "Október", "November", "December"], 48 monthsShort: ["Jan", "Feb", "Már", "Apr", "Maj", "Jún", "Júl", "Aug", "Sze", "Okt", "Nov", "Dec"], 49 noEventForToday: "Ezen a napon nincs semmi program", 50 noEventForThisDay: "Ezen a napon nincs semmi program", 51 previousYearText: "ElÅzŠév", 52 nextYearText: "A következŠévben", 53 closeSidebarText: "Bezárás", 54 closeEventListText: "Bezárás", 55 }, 56 sk: { 57 days: ["Nedeľa", "Pondelok", "Utorok", "Streda", "Å tvrtok", "Piatok", "Sobota"], 58 daysShort: ["Ned", "Pon", "Uto", "Str", "Å tv", "Pia", "Sob"], 59 daysMin: ["Ne", "Po", "Ut", "St", "Å t", "Pi", "So"], 60 months: ["Január", "Február", "Marec", "AprÃl", "Máj", "Jún", "Júl", "August", "September", "Október", "November", "December"], 61 monthsShort: ["Jan", "Feb", "Mar", "Apr", "Maj", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], 62 noEventForToday: "V tento deÅ nie je niÄ naplánované", 63 noEventForThisDay: "V tento deÅ nie je niÄ naplánované", 64 previousYearText: "Predchadzajci rok", 65 nextYearText: "Nasledujúci rok", 66 closeSidebarText: "ZavrieÅ¥", 67 closeEventListText: "ZavrieÅ¥", 68 }, 69 en: { 70 days: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], 71 daysShort: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"], 72 daysMin: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"], 73 months: ["January", "February", "March", "April", "May", "Jun", "July", "August", "September", "October", "
73November", "December"], 74 monthsShort: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], 75 noEventForToday: "No event for today.. so take a rest! :)", 76 noEventForThisDay: "No event for this day.. so take a rest! :)", 77 previousYearText: "Previous year", 78 nextYearText: "Next year", 79 closeSidebarText: "Close sidebar", 80 closeEventListText: "Close event list", 81 }, 82 es: { 83 days: ["Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"], 84 daysShort: ["Dom", "Lun", "Mar", "Mié", "Jue", "Vie", "Sáb"], 85 daysMin: ["Do", "Lu", "Ma", "Mi", "Ju", "Vi", "Sa"], 86 months: ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"], 87 monthsShort: ["Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic"], 88 noEventForToday: "No hay evento para hoy.. ¡asà que descanse! :)", 89 noEventForThisDay: "Ningún evento para este dÃa.. ¡asà que descanse! :)", 90 previousYearText: "Año anterior", 91 nextYearText: "El próximo año", 92 closeSidebarText: "Cerrar la barra lateral", 93 closeEventListText: "Cerrar la lista de eventos", 94 }, 95 de: { 96 days: ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"], 97 daysShort: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], 98 daysMin: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"], 99 months: ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"], 100 monthsShort: ["Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"], 101 noEventForToday: "Keine Veranstaltung für heute.. also ruhen Sie sich aus! :)", 102 noEventForThisDay: "Keine Veranstaltung für diesen Tag.. also ruhen Sie sich aus! :)", 103 previousYearText: "Vorheriges Jahr", 104 nextYearText: "Nächstes Jahr", 105 closeSidebarText: "SchlieÃen Sie die Seitenleiste", 106 closeEventListText: "SchlieÃen Sie die Ereignisliste", 107 }, 108 pt: { 109 days: ["Domingo", "Segunda-Feira", "Terça-Feira", "Quarta-Feira", "Quinta-Feira", "Sexta-Feira", "Sábado"], 110 daysShort: ["Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb"], 111 daysMin: ["Do", "2a", "3a", "4a", "5a", "6a", "Sa"], 112 months: ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"], 113 monthsShort: ["Jan", "Feb", "Mar", "Abr", "Mai", "Jun", "Jul", "Ago", "Set", "Out", "Nov", "Dez"], 114 noEventForToday: "Nenhum evento para hoje.. então descanse! :)", 115 noEventForThisDay: "Nenhum evento para este dia.. então descanse! :)", 116 previousYearText: "Ano anterior", 117 nextYearText: "Próximo ano", 118 closeSidebarText: "Feche a barra lateral", 119 closeEventListText: "Feche a lista de eventos", 120 }, 121 fr: { 122 days: ["Dimanche", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi"], 123 daysShort: ["Dim", "Lun", "Mar", "Mer", "Jeu", "Ven", "Sam"], 124 daysMin: ["Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"],
125 months: ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"], 126 monthsShort: ["Jan", "Fév", "Mar", "Avr", "Mai", "Juin", "Juil", "Août", "Sept", "Oct", "Nov", "Déc"], 127 noEventForToday: "Rien pour aujourd'hui... Belle journée :)", 128 noEventForThisDay: "Rien pour ce jour-ci... Profite de te réposer :)", 129 previousYearText: "Année précédente", 130 nextYearText: "L'année prochaine", 131 closeSidebarText: "Fermez la barre latérale", 132 closeEventListText: "Fermer la liste des événements", 133 }, 134 nl: { 135 days: ["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"], 136 daysShort: ["Zon", "Maan", "Din", "Woe", "Don", "Vrij", "Zat"], 137 daysMin: ["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"], 138 months: ["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"], 139 monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"], 140 noEventForToday: "Geen event voor vandaag.. dus rust even uit! :)", 141 noEventForThisDay: "Geen event voor deze dag.. dus rust even uit! :)", 142 previousYearText: "Vorig jaar", 143 nextYearText: "Volgend jaar", 144 closeSidebarText: "Sluit de zijbalk", 145 closeEventListText: "Sluit de event lijst", 146 }, 147 id: { 148 days: ["Minggu", "Senin", "Selasa", "Rabu", "Kamis", "Jumat", "Sabtu"], 149 daysShort: ["Min", "Sen", "Sel", "Rab", "Kam", "Jum", "Sab"], 150 daysMin: ["Mi", "Sn", "Sl", "Ra", "Ka", "Ju", "Sa"], 151 months: ["Januari", "Februari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "November", "Desember"], 152 monthsShort: ["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Agu", "Sep", "Okt", "Nov", "Des"], 153 noEventForToday: "Tidak ada Acara untuk Sekarang.. Jadi Beristirahatlah! :)", 154 noEventForThisDay: "Tidak ada Acara untuk Hari Ini.. Jadi Beristirahatlah! :)", 155 previousYearText: "Tahun Sebelumnya", 156 nextYearText: "Tahun Berikutnya", 157 closeSidebarText: "Tutup Sidebar", 158 closeEventListText: "Tutup Daftar Acara", 159 }, 160 }, 161 }), 162 (a.initials.weekends = { 163 sun: a.initials.dates[a.options.language].daysShort[0], 164 sat: a.initials.dates[a.options.language].daysShort[6], 165 }), 166 null != a.options.calendarEvents) 167 ) 168 for (var n = 0; n < a.options.calendarEvents.length; n++) 169 a.options.calendarEvents[n].id || console.log('%c Event named: "' + a.options.calendarEvents[n].name + "\" doesn't have a unique ID ", "color:white;font-weight:bold;background-color:#e21d1d;"), 170 a.isValidDate(a.options.calendarEvents[n].date) && (a.options.calendarEvents[n].date = a.formatDate(a.options.calendarEvents[n].date, a.options.format)); 171 (a.startingDay = null), 172 (a.monthLength = null), 173 (a.windowW = d(window).width()), 174 (a.$current = { 175 month: isNaN(this.month) || null == this.month ? new Date().getMonth() : this.month, 176 year: isNaN(this.year) || null == this.year ? new Date().getFullYear() : this.year, 177 date: a.formatDate(a.initials.dates[a.defaults.language].months[new Date().getMonth()] + " " + new Date().getDate() + " " + new Date().getFullYear(), a.options.format), 178 }), 179 (a.$active = { 180 month: a.$current.month, 181 year: a.$current.year, 182 date: a.$current.date, 183 event_date: a.$current.date, 184 events: [], 185 }), 186 (a.$label = { 187 days: [], 188 months: a.initials.dates[a.defaults.language].months, 189 days_in_month: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31], 190 }), 191 (a.$markups = { 192 calendarHTML: "", 193 mainHTML: "", 194 sidebarHTML: "", 195 eventHTML: "", 196 }), 197 (a.$elements = { 198 calendarEl: d(e), 199 innerEl: null, 200 sidebarEl: null, 201 eventEl: null, 202 sidebarToggler: null, 203 eventListToggler: null, 204 activeDayEl: null, 205 activeMonthEl: null, 206 activeYearEl: null, 207 }), 208 (a.$breakpoints = { 209 tablet: 768, 210 mobile: 425, 211 }), 212 (a.$UI = { 213 hasSidebar: !0, 214 hasEvent: !0, 215 }), 216 (a.formatDate = d.proxy(a.formatDate, a)), 217 (a.selectDate = d.proxy(a.selectDate, a)), 218 (a.selectMonth = d.proxy(a.selectMonth, a)), 219 (a.selectYear = d.proxy(a.selectYear, a)), 220 (a.selectEvent = d.proxy(a.selectEvent, a)), 221 (a.toggleSidebar = d.proxy(a.toggleSidebar, a)), 222 (a.toggleEventList = d.proxy(a.toggleEventList, a)), 223 (a.instanceUid = i++), 224 a.init(!0); 225 }).prototype.init = function (e) { 226 var t = this; 227 d(t.$elements.calendarEl).hasClass("calendar-initialized") || 228 (d(t.$elements.calendarEl).addClass("evo-calendar calendar-initialized"),
229 t.windowW <= t.$breakpoints.tablet 230 ? (t.toggleSidebar(!1), t.toggleEventList(!1)) 231 : (t.options.sidebarDisplayDefault ? t.toggleSidebar(!0) : t.toggleSidebar(!1), t.options.eventDisplayDefault ? t.toggleEventList(!0) : t.toggleEventList(!1)), 232 t.options.theme && t.setTheme(t.options.theme), 233 t.buildTheBones()); 234 }), 235 (r.prototype.destroy = function () { 236 var e = this; 237 e.destroyEventListener(), 238 e.$elements.calendarEl && 239 (e.$elements.calendarEl.removeClass("calendar-initialized"), e.$elements.calendarEl.removeClass("evo-calendar"), e.$elements.calendarEl.removeClass("sidebar-hide"), e.$elements.calendarEl.removeClass("event-hide")), 240 e.$elements.calendarEl.empty(), 241 e.$elements.calendarEl.attr("class", e.initials.default_class), 242 d(e.$elements.calendarEl).trigger("destroy", [e]); 243 }), 244 (r.prototype.limitTitle = function (e, t) { 245 var a = []; 246 if (((t = void 0 === t ? 18 : t), e.split(" ").join("").length > t)) { 247 for (var n = e.split(" "), i = 0; i < n.length; i++) n[i].length + a.join("").length <= t && a.push(n[i]); 248 return a.join(" ") + "..."; 249 } 250 return e; 251 }), 252 (r.prototype.stringCheck = function (e) { 253 return e.replace(/[^\w]/g, "\\$&"); 254 }), 255 (r.prototype.parseFormat = function (e) { 256 if ("function" == typeof e.toValue && "function" == typeof e.toDisplay) return e; 257 var t = e.replace(this.initials.validParts, "\0").split("\0"), 258 e = e.match(this.initials.validParts); 259 return ( 260 (t && t.length && e && 0 !== e.length) || console.log("%c Invalid date format ", "color:white;font-weight:bold;background-color:#e21d1d;"), 261 { 262 separators: t, 263 parts: e, 264 } 265 ); 266 }), 267 (r.prototype.formatDate = function (e, t, a) { 268 var n = this; 269 if (!e) return ""; 270 if (((a = a || n.defaults.language), "string" == typeof t && (t = n.parseFormat(t)), t.toDisplay)) return t.toDisplay(e, t, a); 271 var i = new Date(e), 272 o = { 273 d: i.getDate(), 274 D: n.initials.dates[a].daysShort[i.getDay()], 275 DD: n.initials.dates[a].days[i.getDay()], 276 m: i.getMonth() + 1, 277 M: n.initials.dates[a].monthsShort[i.getMonth()], 278 MM: n.initials.dates[a].months[i.getMonth()], 279 yy: i.getFullYear().toString().substring(2), 280 yyyy: i.getFullYear(), 281 }; 282 (o.dd = (o.d < 10 ? "0" : "") + o.d), (o.mm = (o.m < 10 ? "0" : "") + o.m), (e = []); 283 for (var r = d.extend([], t.separators), s = 0, l = t.parts.length; s <= l; s++) r.length && e.push(r.shift()), e.push(o[t.parts[s]]); 284 return e.join(""); 285 }), 286 (r.prototype.getBetweenDates = function (e) { 287 for (var t = this, a = [], n = 0; n < t.monthLength; n++) { 288 var i = t.formatDate(t.$label.months[t.$active.month] + " " + (n + 1) + " " + t.$active.year, t.options.format); 289 t.isBetweenDates(i, e) && a.push(i); 290 } 291 return a; 292 }), 293 (r.prototype.isBetweenDates = function (e, t) { 294 var a, 295 t = t instanceof Array ? ((a = new Date(t[0])), new Date(t[1])) : ((a = new Date(t)), new Date(t)); 296 return a <= new Date(e) && t >= new Date(e); 297 }), 298 (r.prototype.hasSameDayEventType = function (e, t) { 299 for (var a = this, n = 0, i = 0; i < a.options.calendarEvents.length; i++) 300 if (a.options.calendarEvents[i].date instanceof Array) for (var o = a.getBetweenDates(a.options.calendarEvents[i].date), r = 0; r < o.length; r++) e === o[r] && t === a.options.calendarEvents[i].type && n++; 301 else e === a.options.calendarEvents[i].date && t === a.options.calendarEvents[i].type && n++; 302 return 0 < n; 303 }), 304 (r.prototype.setTheme = function (e) { 305 var t = this, 306 a = t.options.theme; 307 (t.options.theme = e.toLowerCase().split(" ").join("-")), t.options.theme && d(t.$elements.calendarEl).removeClass(a), "default"
307!== t.options.theme && d(t.$elements.calendarEl).addClass(t.options.theme); 308 }), 309 (r.prototype.resize = function () { 310 var e = this; 311 (e.windowW = d(window).width()), 312 e.windowW <= e.$breakpoints.tablet 313 ? (e.toggleSidebar(!1), 314 e.toggleEventList(!1), 315 e.windowW <= e.$breakpoints.mobile ? d(window).off("click.evocalendar.evo-" + e.instanceUid) : d(window).on("click.evocalendar.evo-" + e.instanceUid, d.proxy(e.toggleOutside, e))) 316 : (e.options.sidebarDisplayDefault ? e.toggleSidebar(!0) : e.toggleSidebar(!1), e.options.eventDisplayDefault ? e.toggleEventList(!0) : e.toggleEventList(!1), d(window).off("click.evocalendar.evo-" + e.instanceUid)); 317 }), 318 (r.prototype.initEventListener = function () { 319 var e = this; 320 d(window) 321 .off("resize.evocalendar.evo-" + e.instanceUid) 322 .on("resize.evocalendar.evo-" + e.instanceUid, d.proxy(e.resize, e)), 323 e.options.sidebarToggler && e.$elements.sidebarToggler.off("click.evocalendar").on("click.evocalendar", e.toggleSidebar), 324 e.options.eventListToggler && e.$elements.eventListToggler.off("click.evocalendar").on("click.evocalendar", e.toggleEventList), 325 e.$elements.sidebarEl.find("[data-month-val]").off("click.evocalendar").on("click.evocalendar", e.selectMonth), 326 e.$elements.sidebarEl.find("[data-year-val]").off("click.evocalendar").on("click.evocalendar", e.selectYear), 327 e.$elements.eventEl.find("[data-event-index]").off("click.evocalendar").on("click.evocalendar", e.selectEvent); 328 }), 329 (r.prototype.destroyEventListener = function () { 330 var e = this; 331 d(window).off("resize.evocalendar.evo-" + e.instanceUid), 332 d(window).off("click.evocalendar.evo-" + e.instanceUid), 333 e.options.sidebarToggler && e.$elements.sidebarToggler.off("click.evocalendar"), 334 e.options.eventListToggler && e.$elements.eventListToggler.off("click.evocalendar"), 335 e.$elements.innerEl.find(".calendar-day").children().off("click.evocalendar"), 336 e.$elements.sidebarEl.find("[data-month-val]").off("click.evocalendar"), 337 e.$elements.sidebarEl.find("[data-year-val]").off("click.evocalendar"), 338 e.$elements.eventEl.find("[data-event-index]").off("click.evocalendar"); 339 }), 340 (r.prototype.calculateDays = function () { 341 var e, 342 t, 343 a, 344 n = this; 345 for ( 346 n.monthLength = n.$label.days_in_month[n.$active.month], 347 1 == n.$active.month && ((n.$active.year % 4 == 0 && n.$active.year % 100 != 0) || n.$active.year % 400 == 0) && (n.monthLength = 29), 348 e = n.initials.dates[n.options.language].daysShort, 349 t = n.options.firstDayOfWeek; 350 n.$label.days.length < e.length; 351 352 ) 353 t == e.length && (t = 0), n.$label.days.push(e[t]), t++; 354 (a = new Date(n.$active.year, n.$active.month).getDay() - t), (n.startingDay = a < 0 ? n.$label.days.length + a : a); 355 }), 356 (r.prototype.buildTheBones = function () { 357 var e = this; 358 if ((e.calculateDays(), !e.$elements.calendarEl.html())) { 359 for ( 360 var t = 361 '<div class="calendar-sidebar"><div class="calendar-year"><button class="icon-button" role="button" data-year-val="prev" title="' + 362 e.initials.dates[e.options.language].previousYearText + 363 '"><span class="chevron-arrow-left"></span></button> <p></p> <button class="icon-button" role="button" data-year-val="next" title="' + 364 e.initials.dates[e.options.language].nextYearText + 365 '"><span class="chevron-arrow-right"></span></button></div><div class="month-list"><ul class="calendar-months">', 366 a = 0; 367 a < e.$label.months.length; 368 a++ 369 ) 370 t += '<li class="month" role="button" data-month-val="' + a + '">' + e.initials.dates[e.options.language].months[a] + "</li>"; 371 (t += "</ul>"), (t += "</div></div>"), (t += '<div class="calendar-inner"><table class="calendar-table"><tr><th colspan="7"></th></tr><tr class="calendar-header">'); 372 for (a = 0; a < e.$label.days.length; a++) { 373 var n = "calendar-header-day"; 374 (e.$label.days[a] !== e.initials.weekends.sat && e.$label.days[a] !== e.initials.weekends.sun) || (n += " --weekend"), (t += '<td class="' + n + '">' + e.$label.days[a] + "</td>"); 375 } 376 (t += "</tr></table></div>"), 377 (t += '<div class="calendar-events"><div class="event-header"><p></p></div><div class="event-list"></div></div>'), 378 e.$elements.calendarEl.html(t), 379 e.$elements.sidebarEl || (e.$elements.sidebarEl = d(e.$elements.calendarEl).find(".calendar-sidebar")), 380 e.$elements.innerEl || (e.$elements.innerEl = d(e.$elements.calendarEl).find(".calendar-inner")), 381 e.$elements.eventEl || (e.$elements.eventEl = d(e.$elements.calendarEl).find(".calendar-events")), 382 e.options.sidebarToggler && 383 (d(e.$elements.sidebarEl).append( 384 '<span id="sidebarToggler" role="button" aria-pressed title="' + e.initials.dates[e.options.language].closeSidebarText + '"><button class="icon-button"><span class="bars"></span></button></span>' 385 ), 386 e.$elements.sidebarToggler || (e.$elements.sidebarToggler = d(e.$elements.sidebarEl).find("span#sidebarToggler"))), 387 e.options.eventListToggler && 388 (d(e.$elements.calendarEl).append( 389 '<span id="eventListToggler" role="button" aria-pressed title="' + 390 e.initials.dates[e.options.language].closeEventListText + 391 '"><button class="icon-button"><span class="chevron-arrow-right"></span></button></span>' 392 ), 393 e.$elements.eventListToggler || (e.$elements.eventListToggler = d(e.$elements.calendarEl).find("span#eventListToggler"))); 394 } 395 e.buildSidebarYear(), e.buildSidebarMonths(), e.buildCalendar(
395), e.buildEventList(), e.initEventListener(), e.resize(); 396 }), 397 (r.prototype.buildEventList = function () { 398 var e, 399 t = this, 400 a = !1; 401 t.$active.events = []; 402 var n = t.formatDate(t.$active.date, t.options.eventHeaderFormat, t.options.language); 403 t.$elements.eventEl.find(".event-header > p").text(n); 404 n = t.$elements.eventEl.find(".event-list"); 405 if ((0 < n.children().length && n.empty(), t.options.calendarEvents)) 406 for (var i = 0; i < t.options.calendarEvents.length; i++) { 407 (t.isBetweenDates(t.$active.date, t.options.calendarEvents[i].date) || 408 (t.options.calendarEvents[i].everyYear && 409 new Date(t.$active.date).getMonth() + 1 + " " + new Date(t.$active.date).getDate() == new Date(t.options.calendarEvents[i].date).getMonth() + 1 + " " + new Date(t.options.calendarEvents[i].date).getDate())) && 410 o(t.options.calendarEvents[i]); 411 } 412 413 function o(e) { 414 (a = !0), t.addEventList(e); 415 } 416 a || 417 ((e = '<div class="event-empty">'), 418 t.$active.date === t.$current.date ? (e += "<p>" + t.initials.dates[t.options.language].noEventForToday + "</p>") : (e += "<p>" + t.initials.dates[t.options.language].noEventForThisDay + "</p>"), 419 (e += "</div>")), 420 n.append(e); 421 }), 422 (r.prototype.addEventList = function (e) { 423 var t, 424 a = this, 425 n = a.$elements.eventEl.find(".event-list"); 426 0 === n.find("[data-event-index]").length && n.empty(), 427 a.$active.events.push(e), 428 (t = '<div class="event-container" role="button" data-event-index="' + e.id + '">'), 429 (t += '<div class="event-icon"><div class="event-bullet-' + e.type + '"'), 430 e.color && (t += 'style="background-color:' + e.color + '"'), 431 (t += '></div></div><div class="event-info"><p class="event-title">' + a.limitTitle(e.name)), 432 e.badge && (t += "<span>" + e.badge + "</span>"), 433 (t += "</p>"), 434 e.description && (t += '<p class="event-desc">' + e.description + "</p>"), 435 (t += "</div>"), 436 (t += "</div>"), 437 n.append(t), 438 a.$elements.eventEl 439 .find('[data-event-index="' + e.id + '"]') 440 .off("click.evocalendar") 441 .on("click.evocalendar", a.selectEvent); 442 }), 443 (r.prototype.removeEventList = function (e) { 444 var t, 445 a = this, 446 n = a.$elements.eventEl.find(".event-list"); 447 0 !== n.find('[data-event-index="' + e + '"]').length && 448 (n.find('[data-event-index="' + e + '"]').remove(), 449 0 === n.find("[data-event-index]").length && 450 (n.empty(), 451 a.$active.date === a.$current.date ? (t += "<p>" + a.initials.dates[a.options.language].noEventForToday + "</p>") : (t += "<p>" + a.initials.dates[a.options.language].noEventForThisDay + "</p>"), 452 n.append(t))); 453 }), 454 (r.prototype.buildSidebarYear = function () { 455 this.$elements.sidebarEl.find(".calendar-year > p").text(this.$active.year); 456 }), 457 (r.prototype.buildSidebarMonths = function () { 458 this.$elements.sidebarEl.find(".calendar-months > [data-month-val]").removeClass("active-month"), this.$elements.sidebarEl.find('.calendar-months > [data-month-val="' + this.$active.month + '"]').addClass("active-month"); 459 }), 460 (r.prototype.buildCalendar = function () { 461 var e, 462 t = this; 463 t.calculateDays(), 464 (r = t.formatDate(new Date(t.$label.months[t.$active.month] + " 1 " + t.$active.year), t.options.titleFormat, t.options.language)), 465 t.$elements.innerEl.find(".calendar-table th").text(r), 466 t.$elements.innerEl.find(".calendar-body").remove(), 467 (e += '<tr class="calendar-body">'); 468 for (var a = 1, n = 0; n < 9; n++) { 469 for (var i, o = 0; o < t.$label.days.length; o++) { 470 a <= t.monthLength && (0 < n || o >= t.startingDay) 471 ? ((i = "calendar-day"), 472 (t.$label.days[o] !== t.initials.weekends.sat && t.$label.days[o] !== t.initials.weekends.sun) || (i += " --weekend"), 473 (e += '<td class="' + i + '">'), 474 (e += '<div class="day" role="button" data-date-val="' + t.formatDate(t.$label.months[t.$active.month] + " " + a + " " + t.$active.year, t.options.format) + '">' + a + "</div>"), 475 a++) 476 : (e += "<td>"), 477 (e += "</td>"); 478 } 479 if (a > t.monthLength) break; 480 e += '</tr><tr class="calendar-body">'; 481 } 482 (e += "</tr>"), 483 t.$elements.innerEl.find(".calendar-table").append(e), 484 t.options.todayHighlight && t.$elements.innerEl.find("[data-date-val='" + t.$current.date + "']").addClass("calendar-today"), 485 t.$elements.innerEl.find(".calendar-day").children().off("click.evocalendar").on("click.evocalendar", t.selectDate); 486 var r = t.$elements.innerEl.find("[data-date-val='" + t.$active.date + "']"); 487 r && (t.$elements.innerEl.children().removeClass("calendar-active"), r.addClass("calendar-active")), null != t.options.calendarEvents && t.buildEventIndicator(); 488 }), 489 (r.prototype.addEventIndicator = function (t) { 490 var a, 491 n, 492 i = this, 493 e = t.date, 494 o = i.stringCheck(t.type); 495 if (e instanceof Array) { 496 if (t.everyYear) for (var r = 0; r < e.length; r++) e[r] = i.formatDate(new Date(e[r]).setFullYear(i.$active.year), i.options.format); 497 for (var s = i.getBetweenDates(e), l = 0; l < s.length; l++) d(s[l]); 498 } else t.everyYear && (e = i.formatDate(new Date(e).setFullYear(i.$active.year), i.options.format)), d(e); 499 500 function d(e) { 501 0 === (n = i.$elements.innerEl.find('[data-date-val="' + e + '"]')).find("span.event-indicator").length && n.append('<span class="event-indicator"></span>'), 502 0 === n.find("span.event-indicator > .type-bullet > .type-" + o).length && 503 ((a = '<div class="type-bullet"><div '), (a += 'class="type-' + t.type + '"'), t.color && (a += 'style="border: 0.3rem solid ' + t.color + '; font-size: 0.9rem;"'), (a += "><span style='vertical-align: text-top; padding: 0.2rem;'>" + t.shortcut + "</span></div></div>"), n.find(".event-indicator").append(a)); 504 } 505 }), 506 (r.prototype.removeEventIndicator = function (e) { 507 var t = this, 508 a = e.date, 509 n = t.stringCheck(e.type); 510 if (a instanceof Array) for (var i = t.getBetweenDates(a), o = 0; o < i.length; o++) r(i[o]); 511 else r(a); 512 513 function r(e) { 514 0 !== t.$elements.innerEl.find('[data-date-val="' + e + '"] span.event-indicator').length && 515 (t.hasSameDayEventType(e, n) || 516 t.$elements.innerEl 517 .find('[data-date-val="' + e + '"] span.event-indicator > .type-bullet > .type-' + n) 518 .parent() 519 .remove()); 520 } 521 }), 522 (r.prototype.buildEventIndicator = function () { 523 this.$elements.innerEl.find(".calendar-day > day > .event-indicator").empty(); 524 for (var e = 0; e < this.options.calendarEvents.length; e++) this.addEventIndicator(this.options.calendarEvents[e]); 525 }), 526 (r.prototype.selectEvent = function (e) { 527 var t = this, 528 a = d(e.target).closest(".event-container"), 529 e = d(a).data("eventIndex").toString(), 530 a = t.options.calendarEvents 531 .map(function (e) { 532 return e.id.toString(); 533 }) 534 .indexOf(e), 535 e = t.options.calendarEvents[a]; 536 e.date instanceof Array && (e.dates_range = t.getBetweenDates(e.date)), d(t.$elements.calendarEl).trigger("selectEvent", [t.options.calendarEvents[a]]); 537 }), 538 (r.prototype.selectYear = function (e) { 539 var t, 540 a = this; 541 "string" == typeof e || "number" == typeof e ? 4 === parseInt(e).toString().length && (t = parseInt(e)) : ((e = d(e.target).closest("[data-year-val]")), (t = d(e).data("yearVal"))), 542 "prev" == t ? --a.$active.year : "next" == t ? ++a.$active.year : "number" == typeof t && (a.$active.year = t), 543 a.windowW <= a.$breakpoints.mobile && a.$UI.hasSidebar && a.toggleSidebar(!1), 544 d(a.$elements.calendarEl).trigger("selectYear", [a.$active.year]), 545 a.buildSidebarYear(),
546 a.buildCalendar(); 547 }), 548 (r.prototype.selectMonth = function (e) { 549 var t = this; 550 "string" == typeof e || "number" == typeof e ? 0 <= e && e <= t.$label.months.length && (t.$active.month = e.toString()) : (t.$active.month = d(e.currentTarget).data("monthVal")), 551 t.buildSidebarMonths(), 552 t.buildCalendar(), 553 t.windowW <= t.$breakpoints.tablet && t.$UI.hasSidebar && t.toggleSidebar(!1), 554 d(t.$elements.calendarEl).trigger("selectMonth", [t.initials.dates[t.options.language].months[t.$active.month], t.$active.month]); 555 }), 556 (r.prototype.selectDate = function (e) { 557 var t, 558 a, 559 n, 560 i = this, 561 o = i.$active.date; 562 "string" == typeof e || "number" == typeof e || e instanceof Date 563 ? ((t = i.formatDate(new Date(e), i.options.format)), 564 (a = new Date(t).getFullYear()), 565 (n = new Date(t).getMonth()), 566 i.$active.year !== a && i.selectYear(a), 567 i.$active.month !== n && i.selectMonth(n), 568 (n = i.$elements.innerEl.find("[data-date-val='" + t + "']"))) 569 : (t = (n = d(e.currentTarget)).data("dateVal")), 570 (e = i.$active.date === t), 571 (i.$active.date = t), 572 (i.$active.event_date = t), 573 i.$elements.innerEl.find("[data-date-val]").removeClass("calendar-active"), 574 n.addClass("calendar-active"), 575 e || i.buildEventList(), 576 d(i.$elements.calendarEl).trigger("selectDate", [i.$active.date, o]); 577 }), 578 (r.prototype.getActiveDate = function () { 579 return this.$active.date; 580 }), 581 (r.prototype.getActiveEvents = function () { 582 return this.$active.events; 583 }), 584 (r.prototype.toggleOutside = function (e) { 585 var t = this, 586 e = e.target === t.$elements.innerEl[0]; 587 t.$UI.hasSidebar && e && t.toggleSidebar(!1), t.$UI.hasEvent && e && t.toggleEventList(!1); 588 }), 589 (r.prototype.toggleSidebar = function (e) { 590 var t = this; 591 void 0 === e || e.originalEvent 592 ? (d(t.$elements.calendarEl).toggleClass("sidebar-hide"), (t.$UI.hasSidebar = !t.$UI.hasSidebar)) 593 : e 594 ? (d(t.$elements.calendarEl).removeClass("sidebar-hide"), (t.$UI.hasSidebar = !0)) 595 : (d(t.$elements.calendarEl).addClass("sidebar-hide"), (t.$UI.hasSidebar = !1)), 596 t.windowW <= t.$breakpoints.tablet && t.$UI.hasSidebar && t.$UI.hasEvent && t.toggleEventList(); 597 }), 598 (r.prototype.toggleEventList = function (e) { 599 var t = this; 600 void 0 === e || e.originalEvent 601 ? (d(t.$elements.calendarEl).toggleClass("event-hide"), (t.$UI.hasEvent = !t.$UI.hasEvent)) 602 : e 603 ? (d(t.$elements.calendarEl).removeClass("event-hide"), (t.$UI.hasEvent = !0)) 604 : (d(t.$elements.calendarEl).addClass("event-hide"), (t.$UI.hasEvent = !1)), 605 t.windowW <= t.$breakpoints.tablet && t.$UI.hasEvent && t.$UI.hasSidebar && t.toggleSidebar(); 606 }), 607 (r.prototype.addCalendarEvent = function (e) { 608 var n = this; 609 610 function t(t) { 611 if ((t.id || console.log('%c Event named: "' + t.name + "\" doesn't have a unique ID ", "color:white;font-weight:bold;background-color:#e21d1d;"), t.date instanceof Array)) 612 for (var e = 0; e < t.date.length; e++) a(t.date[e]) && (t.date[e] = n.formatDate(new Date(t.date[e]), n.options.format)); 613 else a(t.date) && (t.date = n.formatDate(new Date(t.date), n.options.format)); 614 615 function a(e) { 616 if (n.isValidDate(e)) return 1; 617 console.log('%c Event named: "' + t.name + '" has invalid date ', "color:white;font-weight:bold;background-color:#e21d1d;"); 618 } 619 n.options.calendarEvents || (n.options.calendarEvents = []), n.options.calendarEvents.push(t), n.addEventIndicator(t), n.$active.event_date === t.date && n.addEventList(t); 620 } 621 if (e instanceof Array) for (var a = 0; a < e.length; a++) t(e[a]); 622 else "object" == typeof e && t(e); 623 }), 624 (r.prototype.removeCalendarEvent = function (e) { 625 var n = this; 626 627 function t(e) { 628 var t, 629 a = n.options.calendarEvents 630 .map(function (e) { 631 return e.id; 632 }) 633 .indexOf(e); 634 0 <= a 635 ? ((t = n.options.calendarEvents[a]), n.options.calendarEvents.splice(a, 1), n.removeEventList(e), n.removeEventIndicator(t)) 636 : console.log("%c " + e + ": ID not found ", "color:white;font-weight:bold;background-color:#e21d1d;"); 637 } 638 if (e instanceof Array) for (var a = 0; a < e.length; a++) t(e[a]); 639 else t(e); 640 }), 641 (r.prototype.isValidDate = function (e) { 642 return new Date(e) && !isNaN(new Date(e).getTime()); 643 }), 644 (d.fn.evoCalendar = function () { 645 for (var e, t = this, a = arguments[0], n = Array.prototype.slice.call(arguments, 1), i = t.length, o = 0; o < i; o++) 646 if (("object" == typeof a || void 0 === a ? (t[o].evoCalendar = new r(t[o], a)) : (e = t[o].evoCalendar[a].apply(t[o].evoCalendar, n)), void 0 !== e)) return e; 647 return t; 648 }); 649});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.