{"version":3,"file":"kendo.multiviewcalendar.min.js","names":["global","factory","exports","module","require","define","amd","globalThis","self","kendomultiviewcalendar","js","this","$","undefined$1","kendo","window","calendar","support","isInRange","toDateObject","createDate","isEqualDate","getToday","keys","ui","Widget","Selectable","template","mobileOS","ns","CLICK","ID","MONTH","DOT","CENTURY","CHANGE","NAVIGATE","VALUE","FOCUSED","SELECTED","MID","SPLITEND","SPLITSTART","START","END","HOVER","DISABLED","TODAY","OUTOFRANGE","CALENDAR_VIEW","CELLSELECTOR","CELLSELECTORVALID","BLUR","FOCUS","MOUSEENTER","touch","MOUSELEAVE_NS","PREVARROW","NEXTARROW","RANGE","SINGLE","MULTIPLE","TABLE","TBODY","THEAD","TH","ROLE","NONE","ARIA_SELECTED","ARIA_DISABLED","ARIA_LABEL","ARIA_ACTIVEDESCENDANT","DATE","Date","views","month","year","decade","century","RangeSelectable","extend","init","element","options","that","fn","call","userEvents","UserEvents","allowSelection","filter","tap","_tap","bind","touchAction","events","name","inputSelectors","multiple","dragToSelect","relatedTarget","noop","destroy","_lastActive","_start","_end","_allowSelection","target","is","cancel","start","addClass","attr","end","mid","elements","tables","find","each","lastCell","last","firstCell","first","hasClass","clear","clearVariables","removeClass","removeAttr","selectFrom","items","startIdx","inArray","index","selectTo","endIdx","range","temp","length","_useEnd","change","trigger","_clearFlags","_useStart","e","selectRange","currentDate","_toggling","MultiViewCalendar","id","culture","wrapper","disableDates","disabled","getCulture","format","_extractFormat","calendars","standard","patterns","d","_templates","_header","_wrapper","getValidCssClass","size","weekNumber","on","_move","_focus","_blur","link","currentTarget","firstChild","href","indexOf","preventDefault","_click","_mouseEnter","guid","_cellID","_calendarWidth","width","_range","_initViews","viewName","value","_selectable","_footer","footer","_selectDates","_addSelectedCellsToArray","selectable","selectDates","_restoreSelection","notify","min","max","dates","showViewHeader","depth","messages","weekColumnHeader","orientation","setOptions","normalize","i","_views","off","remove","_cell","_currentView","_current","header","_title","rangeSelectable","_today","current","focus","tablesWrapper","_option","view","navigateToPast","_navigate","navigateToFuture","navigateUp","_index","navigate","navigateDown","_value","isNaN","viewsEnum","restrictValue","_aria","rowGroups","add","role","_ariaMonth","rows","noHeaderRows","not","noHeaderCells","columnHeaderCells","rowHeaderCells","outOfRange","row","prev","$row","numberOfEmpty","owned","children","eq","j","cell","$cell","push","join","_updateHeader","lastDate","prevDisabled","nextDisabled","title","_firstViewValue","visibleRange","_visibleRange","shiftDate","html","getFullYear","toggleClass","compare","_navContainer","icon","iconClass","appendTo","_dateInViews","prevent","lastActive","cellIndex","triggerChange","key","keyCode","focusedCell","table","closest","currentValue","isRtl","RIGHT","LEFT","UP","DOWN","SPACEBAR","HOME","_focusCell","next","_todayClick","ctrlKey","metaKey","_cellByDate","ENTER","_toggleSelection","shiftKey","setDate","_nextNavigatable","getMonth","getDate","_selectRange","event","PAGEUP","PAGEDOWN","_visualizeSelectedDatesInView","cells","selectedDates","toDateString","_selectElement","isDisabled","navigatableDate","getTime","_unselect","option","parseDate","_toggle","toLowerCase","_rangeSelection","aria","parseOptions","_selection","_onRelatedTarget","unselect","_unselecting","_getFirstViewDate","currentView","ranges","_canRenderNextView","viewDate","fullYear","date","maxYear","maxMonth","viewOptions","_table","content","url","showHeader","isWeekColumnVisible","otherMonth","contentClasses","sender","useEnd","useStart","initialRange","_preventChange","selectElements","domEvent","isCell","_validateValue","_deselect","item","currentDateIndex","map","Number","splice","firstDateInView","lastDateInView","_fillRange","daysDifference","startDate","endDate","fromDateUTC","UTC","endDateUTC","Math","ceil","MS_PER_DAY","daysBetweenTwoDates","array","numberOfDays","fromDate","nextDay","addDaysToArray","buttons","prependTo","mousetoggle","_calendarTitleClick","_prevViewClick","_nextViewClick","insertAfter","empty","data","useWithBlock","toString","today","hide","show","arrow","modifier","offset","originaValue","setFullYear","toggle","isTodayDisabled","adjustDST","contains","cellId","removeAttribute","_updateAria","ariaTemplate","text","valueType","clearSelection","validSelectedDates","datesUnique","position","time","grep","setHours","startInRange","endInRange","type","dimension","numberOfViews","abs","setMonth","plugin","jQuery"],"sources":["kendo.multiviewcalendar.js"],"mappings":"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","sourcesContent":["(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('kendo.core.js'), require('kendo.selectable.js'), require('kendo.calendar.js'), require('kendo.icons.js')) :\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.selectable', 'kendo.calendar', 'kendo.icons'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, (global.kendomultiviewcalendar = global.kendomultiviewcalendar || {}, global.kendomultiviewcalendar.js = factory()));\n})(this, (function () {\n var __meta__ = {\n id: \"multiviewcalendar\",\n name: \"MultiViewCalendar\",\n category: \"web\",\n description: \"Multi-view calendar.\",\n depends: [ \"core\", \"selectable\", \"calendar\" ]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n calendar = kendo.calendar,\n support = kendo.support,\n isInRange = calendar.isInRange,\n toDateObject = calendar.toDateObject,\n createDate = calendar.createDate,\n isEqualDate = calendar.isEqualDate,\n getToday = calendar.getToday,\n keys = kendo.keys,\n ui = kendo.ui,\n Widget = ui.Widget,\n Selectable = ui.Selectable,\n template = kendo.template,\n mobileOS = support.mobileOS,\n ns = \".kendoMultiViewCalendar\",\n CLICK = \"click\",\n KEYDOWN = \"keydown\",\n ID = \"id\",\n MIN = \"min\",\n MONTH = \"month\",\n DOT = \".\",\n EMPTY = \" \",\n CENTURY = \"century\",\n DECADE = \"decade\",\n CHANGE = \"change\",\n NAVIGATE = \"navigate\",\n VALUE = \"value\",\n FOCUSED = \"k-focus\",\n SELECTED = \"k-selected\",\n MID = \"k-range-mid\",\n SPLITEND = \"k-range-split-end\",\n SPLITSTART = \"k-range-split-start\",\n START = \"k-range-start\",\n END = \"k-range-end\",\n HOVER = \"k-hover\",\n DISABLED = \"k-disabled\",\n TODAY = \"k-calendar-nav-today\",\n OTHERMONTH = \"k-other-month\",\n OUTOFRANGE = \"k-out-of-range\",\n CALENDAR_VIEW = \"k-calendar-view\",\n CELLSELECTOR = \"td:has(.k-link):not(.\" + OUTOFRANGE + \")\",\n CELLSELECTORVALID = \"td:has(.k-link):not(.\" + DISABLED + \"):not(.\" + OUTOFRANGE + \")\",\n BLUR = \"blur\",\n FOCUS = \"focus\",\n MOUSEENTER = support.touch ? \"touchstart\" : \"mouseenter\",\n MOUSELEAVE_NS = support.touch ? \"touchend\" + ns + \" touchmove\" + ns : \"mouseleave\" + ns,\n PREVARROW = \"_prevArrow\",\n NEXTARROW = \"_nextArrow\",\n RANGE = \"range\",\n SINGLE = \"single\",\n MULTIPLE = \"multiple\",\n TABINDEX = \"tabindex\",\n TABLE = \"table\",\n TBODY = \"tbody\",\n THEAD = \"thead\",\n TR = \"tr\",\n TD = \"td\",\n TH = \"th\",\n ROLE = \"role\",\n NONE = \"none\",\n ROWGROUP = \"rowgroup\",\n COLUMNHEADER = \"columnheader\",\n ROWHEADER = \"rowheader\",\n GRIDCELL = \"gridcell\",\n ARIA_SELECTED = \"aria-selected\",\n ARIA_DISABLED = \"aria-disabled\",\n ARIA_LABEL = \"aria-label\",\n ARIA_OWNS = \"aria-owns\",\n ARIA_ACTIVEDESCENDANT = \"aria-activedescendant\",\n INPUTSELECTOR = \"input,a,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-caret-alt-down,span.k-icon.k-i-caret-alt-up,span.k-svg-icon.k-svg-i-caret-alt-down,span.k-svg-icon.k-svg-i-caret-alt-up\",\n DATE = Date,\n views = {\n month: 0,\n year: 1,\n decade: 2,\n century: 3\n };\n\n var RangeSelectable = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n Widget.fn.init.call(that, element, options);\n\n that.calendar = options.calendar;\n\n that.userEvents = new kendo.UserEvents(that.element, {\n global: true,\n allowSelection: true,\n filter: that.options.filter,\n tap: that._tap.bind(that),\n touchAction: NONE\n });\n },\n\n events: [CHANGE],\n\n options: {\n name: \"RangeSelectable\",\n filter: \">*\",\n inputSelectors: INPUTSELECTOR,\n multiple: false,\n dragToSelect: true,\n relatedTarget: $.noop\n },\n\n destroy: function() {\n var that = this;\n\n Widget.fn.destroy.call(that);\n\n that.userEvents.destroy();\n that.calendar = null;\n\n that._lastActive = that.element = that.userEvents = that._start = that._end = null;\n },\n\n _allowSelection: function(target) {\n if ($(target).is(this.options.inputSelectors)) {\n this.userEvents.cancel();\n return false;\n }\n\n return true;\n },\n\n start: function(element) {\n if (element === undefined$1) {\n return this._start;\n }\n element.addClass(START + \" \" + SELECTED).attr(ARIA_SELECTED, true);\n this._start = element;\n },\n\n end: function(element) {\n if (element === undefined$1) {\n return this._start;\n }\n element.addClass(END + \" \" + SELECTED).attr(ARIA_SELECTED, true);\n this._end = element;\n },\n\n mid: function(elements) {\n var tables = this.element.find(\"table.k-month\");\n\n elements.addClass(MID).attr(ARIA_SELECTED, true);\n tables.each(function() {\n var that = $(this);\n var lastCell = that.find(CELLSELECTORVALID).last();\n var firstCell = that.find(CELLSELECTORVALID).first();\n\n if (lastCell.hasClass(MID)) {\n lastCell.addClass(SPLITEND);\n }\n\n if (firstCell.hasClass(MID)) {\n firstCell.addClass(SPLITSTART);\n }\n });\n },\n\n clear: function(clearVariables) {\n this.element.find(CELLSELECTOR)\n .removeClass(END + \" \" + SELECTED + \" \" + START + \" \" + MID + \" \" + SPLITEND + \" \" + SPLITSTART)\n .removeAttr(ARIA_SELECTED);\n\n if (clearVariables) {\n this._start = this._end = null;\n }\n },\n\n selectFrom: function(start) {\n var that = this;\n var items;\n var startIdx;\n\n items = that.element.find(CELLSELECTOR);\n\n startIdx = $.inArray($(start)[0], items);\n\n that.clear();\n that.start(start);\n\n items = items.filter(function(index) {\n return index > startIdx;\n });\n that.mid(items);\n },\n\n selectTo: function(end) {\n var that = this;\n var items;\n var endIdx;\n\n items = that.element.find(CELLSELECTOR);\n\n endIdx = $.inArray($(end)[0], items);\n\n that.clear();\n\n items = items.filter(function(index) {\n return index < endIdx;\n });\n that.mid(items);\n that.end($(end));\n },\n\n range: function(start, end) {\n var that = this;\n var items;\n var startIdx;\n var endIdx;\n var temp;\n\n if (start === undefined$1) {\n return { start: that._start, end: that._end };\n }\n\n items = that.element.find(CELLSELECTOR);\n\n startIdx = $.inArray($(start)[0], items);\n endIdx = $.inArray($(end)[0], items);\n\n if (endIdx == -1) {\n endIdx = items.length;\n }\n\n if (startIdx > endIdx) {\n temp = end;\n end = start;\n start = temp;\n temp = startIdx;\n startIdx = endIdx;\n endIdx = temp;\n }\n that.clear();\n start.addClass(START + \" \" + SELECTED).attr(ARIA_SELECTED, true);\n that._start = start;\n\n items = items.filter(function(index) {\n return index > startIdx && index < endIdx;\n });\n that.mid(items);\n\n if (end) {\n that.end($(end));\n } else {\n that._useEnd = true;\n }\n },\n\n change: function() {\n this.trigger(CHANGE);\n },\n\n _clearFlags: function() {\n this._useStart = this._useEnd = false;\n },\n\n _tap: function(e) {\n var target = $(e.target),\n range = this.calendar.selectRange() || {},\n start = range.start,\n end = range.end,\n that = this,\n currentDate = toDateObject($(target).find(\"a\")),\n items,\n startIdx,\n endIdx;\n\n\n that._lastActive = target;\n\n if (!start || +start > +currentDate) {\n that.clear(true);\n that.start(target);\n that._clearFlags();\n that.trigger(CHANGE);\n return;\n }\n\n if (start && !end) {\n items = that.element.find(CELLSELECTOR);\n\n startIdx = $.inArray($(that._start)[0], items);\n endIdx = $.inArray($(target)[0], items);\n\n if (start) {\n that._useStart = true;\n }\n\n items = items.filter(function(index) {\n return index > startIdx && index < endIdx;\n });\n that.mid(items);\n that.end($(target));\n that.trigger(CHANGE);\n that._clearFlags();\n return;\n }\n\n if (start && end) {\n if (target.hasClass(MID)) {\n if (!that._toggling) {\n that.range(target, that._end);\n } else {\n that.range(that._start, target);\n }\n that._toggling = !that._toggling;\n that.trigger(CHANGE);\n that._clearFlags();\n return;\n }\n that._toggling = false;\n that._end = null;\n that.clear();\n that.start(target);\n that.trigger(CHANGE);\n that._clearFlags();\n }\n }\n });\n\n\n var MultiViewCalendar = Widget.extend({\n init: function(element, options) {\n var that = this;\n var id;\n var culture;\n\n Widget.fn.init.call(that, element, options);\n\n element = that.wrapper = that.element;\n options = that.options;\n\n that.options.disableDates = calendar.disabled(that.options.disableDates);\n\n culture = kendo.getCulture(options.culture);\n options.format = kendo._extractFormat(options.format || culture.calendars.standard.patterns.d);\n\n that._templates();\n\n that._header();\n\n that._wrapper();\n\n id = element\n .addClass(\"k-widget k-calendar k-calendar-range \" + (kendo.getValidCssClass(\"k-calendar-\", \"size\", that.options.size || \"medium\")) + (options.weekNumber ? \" k-week-number\" : \"\"))\n .on(KEYDOWN + ns, DOT + CALENDAR_VIEW, that._move.bind(that))\n .on(FOCUS + ns, DOT + CALENDAR_VIEW, that._focus.bind(that))\n .on(BLUR + ns, DOT + CALENDAR_VIEW, that._blur.bind(that))\n .on(CLICK + ns, CELLSELECTORVALID, function(e) {\n var link = e.currentTarget.firstChild;\n\n if (link.href.indexOf(\"#\") != -1) {\n e.preventDefault();\n }\n\n that._click($(link));\n })\n .on(MOUSEENTER + ns, CELLSELECTORVALID, that._mouseEnter.bind(that))\n .on(MOUSELEAVE_NS, CELLSELECTORVALID, function() {\n $(this).removeClass(HOVER);\n })\n .attr(ID);\n\n if (!id) {\n id = kendo.guid();\n }\n\n that._cellID = id + \"_cell_selected\";\n\n that._calendarWidth = that.element.width();\n\n that._range = options.range;\n\n that._initViews({ viewName: options.start, value: options.value });\n that._selectable();\n\n that._footer(that.footer);\n that._selectDates = [];\n that.value(options.value);\n that._addSelectedCellsToArray();\n\n if (options.selectable == MULTIPLE) {\n that._selectDates = options.selectDates.length ? options.selectDates : that._selectDates;\n that._restoreSelection();\n }\n\n if (options.selectable == RANGE) {\n that.selectRange(that._range);\n }\n\n kendo.notify(that);\n },\n\n options: {\n name: \"MultiViewCalendar\",\n value: null,\n min: new DATE(1900, 0, 1),\n max: new DATE(2099, 11, 31),\n dates: [],\n disableDates: null,\n culture: \"\",\n footer: \"\",\n format: \"\",\n month: {},\n range: { start: null, end: null },\n weekNumber: false,\n views: 2,\n showViewHeader: false,\n selectable: SINGLE,\n selectDates: [],\n start: MONTH,\n depth: MONTH,\n messages: {\n weekColumnHeader: \"\"\n },\n size: \"medium\",\n orientation: \"horizontal\"\n },\n\n events: [\n CHANGE,\n NAVIGATE\n ],\n\n setOptions: function(options) {\n var that = this;\n\n calendar.normalize(options);\n\n options.disableDates = calendar.disabled(options.disableDates);\n\n Widget.fn.setOptions.call(that, options);\n\n that._selectable();\n\n that._templates();\n\n that._footer(that.footer);\n\n for (var i = 0; i < that._views.length; i++) {\n that._views[i].off(ns).remove();\n }\n\n that._initViews({ viewName: options.start, value: options.value });\n\n that._range = options.range || { start: null, end: null };\n\n that._restoreSelection();\n },\n\n destroy: function() {\n var that = this;\n\n that._cell = null;\n that._currentView = null;\n that._current = null;\n\n if (that._views) {\n for (var i = 0; i < that._views.length; i++) {\n that._views[i].off(ns).remove();\n }\n }\n\n that.element.off(ns);\n\n if (that.header) {\n that.header.off(ns);\n that._title = null;\n that.header = null;\n }\n\n if (that.selectable) {\n that.selectable.destroy();\n that.selectable = null;\n }\n\n if (that.rangeSelectable) {\n that.rangeSelectable.destroy();\n that.rangeSelectable = null;\n }\n\n if (that._today) {\n kendo.destroy(that._today.off(ns));\n }\n\n that._views = null;\n\n Widget.fn.destroy.call(that);\n },\n\n current: function() {\n return this._current;\n },\n\n focus: function() {\n this.tablesWrapper.trigger(\"focus\");\n },\n\n min: function(value) {\n return this._option(MIN, value);\n },\n\n max: function(value) {\n return this._option(\"max\", value);\n },\n\n view: function() {\n return this._currentView;\n },\n\n navigateToPast: function() {\n this._navigate(PREVARROW, -1);\n },\n\n navigateToFuture: function() {\n this._navigate(NEXTARROW, 1);\n },\n\n navigateUp: function() {\n var that = this,\n index = that._index;\n\n if (that._title.hasClass(DISABLED)) {\n return;\n }\n\n that.navigate(that._current, ++index);\n },\n\n navigateDown: function(value) {\n var that = this,\n index = that._index,\n depth = that.options.depth;\n\n if (!value) {\n return;\n }\n\n if (index === views[depth]) {\n if (!isEqualDate(that._value, that._current) || !isEqualDate(that._value, value)) {\n that.value(value);\n that.trigger(CHANGE);\n }\n return;\n }\n\n that.navigate(value, --index);\n },\n\n navigate: function(value, view) {\n view = isNaN(view) ? calendar.views[calendar.viewsEnum[view]] : calendar.views[view];\n\n var that = this;\n var options = that.options;\n var min = options.min;\n var max = options.max;\n\n if (!value) {\n that._current = value = new DATE(+calendar.restrictValue(value, min, max));\n } else {\n that._current = value;\n }\n\n if (view === undefined$1) {\n view = that._currentView;\n }\n\n that._currentView = view;\n\n for (var i = 0; i < that._views.length; i++) {\n that._views[i].off(ns).remove();\n }\n\n that._initViews({ viewName: view.name, value: value });\n\n that._restoreSelection();\n },\n\n _aria: function() {\n var tables = this.tablesWrapper.find(TABLE),\n rowGroups = tables.first().find(THEAD).add(tables.find(TBODY)),\n viewName = this._currentView.name;\n\n tables.removeAttr(TABINDEX);\n\n tables.attr({\n role: NONE\n });\n\n rowGroups.attr({\n role: ROWGROUP\n });\n\n if (viewName === MONTH) {\n this._ariaMonth();\n }\n },\n\n _ariaMonth: function() {\n var tables = this.tablesWrapper.find(TABLE),\n rowGroups = tables.first().find(THEAD).add(tables.find(TBODY)),\n rows = rowGroups.find(TR),\n noHeaderRows = tables.not(\":eq(0)\").find(THEAD + EMPTY + TR),\n noHeaderCells = noHeaderRows.find(TH),\n columnHeaderCells = tables.first().find(THEAD + EMPTY + TH),\n rowHeaderCells = tables.find(TBODY + EMPTY + TH),\n outOfRange = tables.find(DOT + OUTOFRANGE),\n ariaDataCells = function(i, row) {\n var $row = $(row),\n numberOfEmpty = $row.find(DOT + OUTOFRANGE).length,\n owned = [],\n prev, cells;\n\n if (i === 1) {\n $row.children()\n .filter(DOT + OUTOFRANGE)\n .attr({\n \"aria-hidden\": \"false\",\n role: GRIDCELL\n });\n } else if (numberOfEmpty === 7) {\n $row.removeAttr(ROLE);\n $row.find(TH).removeAttr(ROLE);\n } else if (numberOfEmpty > 0 && numberOfEmpty < 7 && $row.children().not(TH).first().hasClass(OUTOFRANGE)) {\n $row.find(TH).removeAttr(ROLE);\n prev = rows.eq(i - 1);\n\n if (!prev.attr(ROLE) || prev.attr(ROLE) === NONE) {\n prev = rows.eq(i - 2);\n }\n\n cells = $row.children().not(TH);\n\n cells.each(function(j, cell) {\n var $cell = $(cell),\n id;\n\n if (!$cell.hasClass(OUTOFRANGE)) {\n id = \"owned_\" + i + \"_\" + j;\n $cell.attr(ID, id);\n owned.push(id);\n }\n });\n\n $row.removeAttr(ROLE);\n prev.attr(ARIA_OWNS, owned.join(\" \"));\n }\n };\n\n columnHeaderCells.attr({\n role: COLUMNHEADER\n });\n\n rowHeaderCells.attr({\n role: ROWHEADER\n });\n\n outOfRange.removeAttr(ROLE);\n noHeaderRows.removeAttr(ROLE);\n noHeaderCells.removeAttr(ARIA_LABEL).removeAttr(ROLE);\n\n rows.each(ariaDataCells);\n },\n\n _updateHeader: function() {\n var that = this;\n var view = that._currentView;\n var title = that._title;\n var value = that._firstViewValue;\n var options = that.options;\n var visibleRange = that._visibleRange();\n var culture = options.culture;\n var min = options.min;\n var max = options.max;\n var lastDate;\n var disabled;\n var prevDisabled;\n var nextDisabled;\n\n if (view.name === DECADE || view.name === CENTURY) {\n lastDate = shiftDate(value, view.name, options.views - 1);\n if (!isInRange(lastDate, min, max)) {\n lastDate = max;\n }\n\n title.html('\" +\n \"\" + (kendo.ui.icon({ icon: \"chevron-left\", iconClass: \"k-button-icon\" })) + \"\" +\n \"\" + (kendo.ui.icon({ icon: \"chevron-right\", iconClass: \"k-button-icon\" })) + \"\" +\n '').appendTo(that.header);\n that[PREVARROW] = that._navContainer.find(\".k-calendar-prev-view\");\n that[NEXTARROW] = that._navContainer.find(\".k-calendar-next-view\");\n }\n\n that[PREVARROW].toggleClass(DISABLED, prevDisabled).attr(ARIA_DISABLED, prevDisabled);\n if (that[PREVARROW].hasClass(DISABLED)) {\n that[PREVARROW].removeClass(HOVER);\n }\n\n that[NEXTARROW].toggleClass(DISABLED, nextDisabled).attr(ARIA_DISABLED, nextDisabled);\n if (that[NEXTARROW].hasClass(DISABLED)) {\n that[NEXTARROW].removeClass(HOVER);\n }\n }\n },\n\n _mouseEnter: function(e) {\n var that = this;\n var cell = $(e.currentTarget);\n var range;\n var items;\n var startIdx;\n var endIdx;\n\n cell.addClass(HOVER);\n\n if (that.rangeSelectable && that._currentView.name === MONTH) {\n range = that.selectRange();\n if (range.start && !range.end) {\n if (that._dateInViews(that.selectRange().start)) {\n items = that.element.find(that.rangeSelectable.options.filter);\n startIdx = $.inArray($(that.rangeSelectable._start)[0], items);\n endIdx = $.inArray($(cell)[0], items);\n if (startIdx > endIdx) {\n return;\n }\n that.rangeSelectable.range(that.rangeSelectable._start, cell);\n } else if (+toDateObject(that.element.find(CELLSELECTOR).first().find(\"a\")) > +range.start) {\n that.rangeSelectable.selectTo(cell);\n }\n that.rangeSelectable._end = null;\n }\n }\n },\n\n _move: function(e) {\n var that = this;\n var options = that.options;\n var key = e.keyCode;\n var index = that._index;\n var min = options.min;\n var max = options.max;\n var focusedCell = that.element.find(DOT + FOCUSED);\n var table = focusedCell.closest(TABLE);\n var currentValue = new DATE(+(that._current || toDateObject(focusedCell.find(\"a\"))));\n var isRtl = kendo.support.isRtl(that.wrapper);\n var navigate = false;\n var value, prevent, method, cell, lastActive, cellIndex, triggerChange;\n\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n value = 1;\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n value = -1;\n prevent = true;\n } else if (key == keys.UP) {\n value = index === 0 ? -7 : -4;\n prevent = true;\n } else if (key == keys.DOWN) {\n value = index === 0 ? 7 : 4;\n prevent = true;\n } else if (key == keys.SPACEBAR) {\n value = 0;\n prevent = true;\n } else if (key == keys.HOME) {\n prevent = true;\n cell = table.find(CELLSELECTORVALID).eq(0);\n if (cell.hasClass(FOCUSED)) {\n table = table.prev();\n if (table.length) {\n that._focusCell(table.find(CELLSELECTORVALID).eq(0));\n } else {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(PREVARROW, -1);\n that._focusCell(that.element.find(TABLE).first().find(CELLSELECTORVALID).first());\n }\n } else {\n that._focusCell(cell);\n }\n } else if (key == keys.END) {\n prevent = true;\n cell = table.find(CELLSELECTORVALID).last();\n if (cell.hasClass(FOCUSED)) {\n table = table.next();\n if (table.length) {\n that._focusCell(table.find(CELLSELECTORVALID).last());\n } else {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1);\n that._focusCell(that.element.find(TABLE).last().find(CELLSELECTORVALID).last());\n }\n } else {\n that._focusCell(cell);\n }\n } else if (key === 84) {\n that._todayClick(e);\n prevent = true;\n }\n\n if (e.ctrlKey || e.metaKey) {\n if (key == keys.RIGHT && !isRtl || key == keys.LEFT && isRtl) {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1);\n prevent = true;\n } else if (key == keys.LEFT && !isRtl || key == keys.RIGHT && isRtl) {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(PREVARROW, -1);\n prevent = true;\n } else if (key == keys.UP) {\n navigate = !that._title.hasClass(DISABLED);\n that.navigateUp();\n that._focusCell(that._cellByDate(that._current));\n prevent = true;\n } else if (key == keys.DOWN) {\n if (that._currentView.name === MONTH) {\n that.value(currentValue);\n } else {\n that.navigateDown(currentValue);\n that._focusCell(that._cellByDate(that._current));\n navigate = true;\n }\n prevent = true;\n } else if ((key == keys.ENTER || key == keys.SPACEBAR)) {\n if (options.selectable === MULTIPLE) {\n that._toggleSelection(e);\n }\n }\n } else if (e.shiftKey && options.selectable !== SINGLE) {\n if (value !== undefined$1 || method) {\n if (!method) {\n that._currentView.setDate(currentValue, value);\n }\n\n if (that._currentView.name !== MONTH) {\n return;\n }\n\n if (options.disableDates(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n\n if (isInRange(currentValue, min, max)) {\n if (!that._dateInViews(currentValue)) {\n if (value > 0) {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1);\n } else {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(PREVARROW, -1);\n }\n }\n cell = that._cellByDate(currentValue);\n that._current = currentValue;\n\n if (that.selectable) {\n that._selectRange(toDateObject((that.selectable._lastActive || focusedCell).find(\"a\")), currentValue);\n if (!that.selectable._lastActive) {\n that.selectable._lastActive = focusedCell;\n }\n that.trigger(CHANGE);\n that._focusCell(cell);\n }\n\n if (that.rangeSelectable) {\n lastActive = toDateObject((that.rangeSelectable._lastActive || focusedCell).find(\"a\"));\n if (!that._dateInViews(lastActive)) {\n if (+lastActive > +currentValue) {\n that.rangeSelectable._end = that.rangeSelectable._lastActive;\n that.rangeSelectable.selectFrom(cell);\n } else {\n that.rangeSelectable.selectTo(cell);\n }\n } else {\n if (that.rangeSelectable._end && that.rangeSelectable._end.is(DOT + FOCUSED)) {\n that.rangeSelectable._lastActive = that.rangeSelectable._start;\n } else {\n that.rangeSelectable._lastActive = that._cellByDate(lastActive);\n }\n that.rangeSelectable.range(that.rangeSelectable._lastActive, cell);\n }\n that.rangeSelectable.change();\n that._focusCell(cell);\n }\n }\n }\n } else {\n if (key == keys.ENTER || key == keys.SPACEBAR) {\n if (that._currentView.name === MONTH) {\n triggerChange = !focusedCell.hasClass(SELECTED) || that.element.find(DOT + SELECTED).length > 1;\n that.value(currentValue);\n if (that.selectable) {\n that.selectable._lastActive = that._cellByDate(currentValue);\n if (triggerChange) {\n that.selectable.trigger(CHANGE, { event: e });\n }\n }\n if (that.rangeSelectable) {\n that.rangeSelectable.change();\n }\n } else {\n that._click($(that._cell[0].firstChild));\n }\n prevent = true;\n } else if (key == keys.PAGEUP || key == keys.PAGEDOWN) {\n prevent = true;\n cellIndex = table.find(CELLSELECTORVALID).index(focusedCell);\n table = key == keys.PAGEUP ? table.prev() : table.next();\n if (!table.length) {\n if (key == keys.PAGEUP) {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that.navigateToPast();\n table = that.element.find(TABLE).first();\n } else {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that.navigateToFuture();\n table = that.element.find(TABLE).last();\n }\n }\n cell = table.find(CELLSELECTORVALID).eq(cellIndex);\n if (cell.length) {\n that._focusCell(cell);\n } else {\n that._focusCell(table.find(CELLSELECTORVALID).last());\n }\n }\n\n if (value || method) {\n if (!method) {\n that._currentView.setDate(currentValue, value);\n }\n\n min = createDate(min.getFullYear(), min.getMonth(), min.getDate());\n\n if (isInRange(currentValue, min, max)) {\n if (that.selectable && options.disableDates(currentValue)) {\n currentValue = that._nextNavigatable(currentValue, value);\n }\n if (!that._dateInViews(currentValue)) {\n if (value > 0) {\n navigate = that[NEXTARROW] && !that[NEXTARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, 1);\n } else {\n navigate = that[PREVARROW] && !that[PREVARROW].hasClass(DISABLED);\n that._navigate(NEXTARROW, -1);\n }\n }\n cell = that._cellByDate(currentValue);\n that._current = currentValue;\n that._focusCell(cell);\n }\n }\n }\n\n if (navigate) {\n that.trigger(NAVIGATE);\n }\n\n if (prevent) {\n e.preventDefault();\n }\n\n return that._current;\n\n },\n\n _visualizeSelectedDatesInView: function() {\n var that = this;\n var selectedDates = {};\n var cells;\n\n $.each(that._selectDates, function(index, value) {\n selectedDates[kendo.calendar.views[0].toDateString(value)] = value;\n });\n that.selectable.clear();\n cells = that.element.find(TABLE)\n .find(CELLSELECTOR)\n .filter(function(index, element) {\n return selectedDates[$(element.firstChild).attr(kendo.attr(VALUE))];\n });\n\n if (cells.length > 0) {\n that.selectable._selectElement(cells, true);\n }\n },\n\n _nextNavigatable: function(currentValue, value) {\n var that = this;\n var disabled = true;\n var view = that._currentView;\n var min = that.options.min;\n var max = that.options.max;\n var isDisabled = that.options.disableDates;\n var navigatableDate = new Date(currentValue.getTime());\n\n view.setDate(navigatableDate, -value);\n while (disabled) {\n view.setDate(currentValue, value);\n if (!isInRange(currentValue, min, max)) {\n currentValue = navigatableDate;\n break;\n }\n disabled = isDisabled(currentValue);\n }\n return currentValue;\n },\n\n _toggleSelection: function(event) {\n var that = this;\n\n that.selectable._lastActive = $(that._cell[0]);\n\n if ($(that._cell[0]).hasClass(SELECTED)) {\n that.selectable._unselect($(that._cell[0]));\n }\n else {\n that.selectable.value($(that._cell[0]));\n }\n that.selectable.trigger(CHANGE, { event: event });\n },\n\n _option: function(option, value) {\n var that = this;\n var options = that.options;\n var currentValue = that._value || that._current;\n var isBigger;\n\n if (value === undefined$1) {\n return options[option];\n }\n\n value = kendo.parseDate(value, options.format, options.culture);\n\n if (!value) {\n return;\n }\n\n options[option] = new DATE(+value);\n\n if (option === MIN) {\n isBigger = value > currentValue;\n } else {\n isBigger = currentValue > value;\n }\n\n if (isBigger) {\n that._value = null;\n }\n\n that.navigate(that._value);\n\n that._toggle();\n },\n\n _cellByDate: function(value) {\n if (value instanceof Date) {\n value = this._currentView.toDateString(value);\n }\n return this.element.find(TABLE).find(\"td:not(.\" + OTHERMONTH + \")\")\n .filter(function() {\n return $(this.firstChild).attr(kendo.attr(VALUE)) === value;\n });\n },\n\n _selectable: function() {\n var that = this;\n var selectable = that.options.selectable;\n\n if (that.selectable) {\n that.selectable.destroy();\n that.selectable = null;\n }\n\n if (that.rangeSelectable) {\n that.rangeSelectable.destroy();\n that.rangeSelectable = null;\n }\n\n if (selectable.toLowerCase() === RANGE) {\n that.rangeSelectable = new RangeSelectable(that.wrapper, {\n calendar: that,\n filter: \"table.k-month \" + CELLSELECTORVALID,\n change: that._rangeSelection.bind(that)\n });\n } else {\n that.selectable = new Selectable(that.wrapper, {\n aria: true,\n dragToSelect: false,\n inputSelectors: \"input,textarea,.k-multiselect-wrap,select,button,.k-button>span,.k-button>img,span.k-icon.k-i-caret-alt-down,span.k-icon.k-i-caret-alt-up,span.k-svg-icon.k-svg-i-caret-alt-down,span.k-svg-icon.k-svg-i-caret-alt-up\",\n multiple: Selectable.parseOptions(selectable).multiple,\n filter: \"table.k-content \" + CELLSELECTORVALID,\n change: that._selection.bind(that),\n relatedTarget: that._onRelatedTarget.bind(that),\n unselect: that._unselecting.bind(that)\n });\n }\n },\n\n _onRelatedTarget: function(target) {\n var that = this;\n\n if (that.selectable.options.multiple && target.is(CELLSELECTORVALID) && target.length > 1) {\n that._focusCell(target.first(), true);\n }\n },\n\n _getFirstViewDate: function(currentView) {\n var that = this;\n var options = that.options;\n var ranges = [];\n var start;\n var end;\n var current = new Date(+that._current);\n var i;\n\n for (i = 0; i < options.views; i++) {\n start = currentView.first(current);\n end = currentView.last(current);\n\n if (+end > +options.max) {\n if (+start <= +options.max) {\n ranges.push({ start: start, end: new Date(+options.max) });\n }\n break;\n }\n\n ranges.push({ start: start, end: end });\n\n current = new Date(+shiftDate(end, currentView.name, 1));\n }\n\n current = new Date(+that._current);\n\n for (i = 0; i < options.views; i++) {\n start = currentView.first(current);\n end = currentView.last(current);\n\n if (+start < +options.min) {\n if (+end >= +options.min) {\n ranges.push({ start: new Date(+options.min), end: end });\n }\n break;\n }\n\n ranges.push({ start: start, end: end });\n\n current = new Date(+shiftDate(start, currentView.name, -1));\n }\n\n start = ranges[0].start;\n\n for (i = 0; i < options.views + 1; i++) {\n if (!ranges[i]) {\n break;\n }\n\n if (+start > +ranges[i].start) {\n start = ranges[i].start;\n }\n }\n\n return new Date(+start);\n },\n\n _canRenderNextView: function(viewDate) {\n var fullYear = viewDate.getFullYear();\n var month = viewDate.getMonth();\n var date = viewDate.getDate();\n var max = this.options.max;\n var maxYear = max.getFullYear();\n var maxMonth = max.getMonth();\n\n\n if (fullYear < maxYear) {\n return true;\n }\n\n if (fullYear === maxYear && month < maxMonth) {\n return true;\n }\n\n if (fullYear === maxYear && month === maxMonth && date < max.getDate()) {\n return true;\n }\n\n if (fullYear === maxYear && month === maxMonth && date === max.getDate()) {\n return true;\n }\n\n return false;\n },\n\n _initViews: function(viewOptions) {\n var that = this;\n var options = that.options;\n var index = calendar.viewsEnum[viewOptions.viewName];\n var currentView = calendar.views[index];\n var viewDate;\n\n that._current = new DATE(+calendar.restrictValue(viewOptions.value, options.min, options.max));\n that._views = [];\n that._index = index;\n viewDate = that._getFirstViewDate(currentView);\n viewDate.setDate(1);\n\n that._firstViewValue = new Date(+viewDate);\n\n for (var i = 0; i < options.views; i++) {\n viewDate = i ? shiftDate(viewDate, currentView.name, 1) : viewDate;\n viewDate.setDate(1);\n\n if (!that._canRenderNextView(viewDate)) {\n break;\n }\n\n that._table = $(currentView.content($.extend({\n min: options.min,\n max: options.max,\n date: viewDate,\n url: options.url,\n dates: options.dates,\n format: options.format,\n culture: options.culture,\n disableDates: options.disableDates,\n showHeader: options.showViewHeader,\n isWeekColumnVisible: options.weekNumber,\n otherMonth: options.otherMonth,\n messages: options.messages,\n contentClasses: \"k-calendar-table k-content\"\n }, that[currentView.name])));\n\n that._table.appendTo(that.tablesWrapper).addClass(\"k-\" + currentView.name);\n that._views.push(that._table);\n }\n\n that._currentView = currentView;\n\n that.tablesWrapper.attr(\"class\", \"k-calendar-view k-calendar-\" + currentView.name + \"view \" + (that.options.orientation != \"vertical\" ? \"k-hstack\" : \"k-vstack\") + \" k-align-items-start k-justify-content-center\");\n\n that._updateHeader();\n\n that._aria();\n },\n\n _rangeSelection: function(e) {\n var that = this;\n var range = e.sender.range();\n var useEnd = e.sender._useEnd;\n var useStart = e.sender._useStart;\n var initialRange = that.selectRange() || {};\n var start;\n var end;\n\n if (range.start) {\n start = toDateObject(range.start.find(\"a\"));\n }\n\n if (range.end) {\n end = toDateObject(range.end.find(\"a\"));\n }\n\n that._range = { start: useStart ? initialRange.start : start, end: useEnd ? initialRange.end : end };\n\n if (!that._preventChange) {\n that.trigger(CHANGE);\n }\n },\n\n _selection: function(e) {\n var that = this;\n var selectElements = e.sender.value();\n var domEvent = e.event;\n var currentTarget = $(domEvent && domEvent.currentTarget);\n var isCell = currentTarget.is(TD);\n var currentValue;\n\n if (that.options.selectable === SINGLE) {\n that._validateValue(selectElements[0] ? toDateObject(selectElements.first().find(\"a\")) : e.sender._lastActive ? toDateObject(e.sender._lastActive.find(\"a\")) : that.value());\n }\n\n if (that.options.selectable == MULTIPLE) {\n\n if (isCell) {\n currentValue = toDateObject(currentTarget.find(\"a\"));\n }\n\n if (domEvent && domEvent.ctrlKey) {\n if (isCell) {\n if (currentTarget.hasClass(SELECTED)) {\n that._selectDates.push(currentValue);\n } else {\n that._deselect(currentValue);\n }\n } else {\n that.element.find(\"table \" + CELLSELECTORVALID).each(function(index, element) {\n var value = toDateObject($(element).find(\"a\"));\n that._deselect(value);\n });\n that._addSelectedCellsToArray();\n }\n } else if (domEvent && domEvent.shiftKey) {\n that._selectRange(toDateObject(e.sender._lastActive ? e.sender._lastActive.find(\"a\") : selectElements.first().find(\"a\")), currentValue);\n } else if (isCell) {\n that._selectDates = [];\n that._selectDates.push(currentValue);\n } else {\n that._selectDates = [];\n that._addSelectedCellsToArray();\n }\n }\n\n if (!that._preventChange) {\n that.trigger(CHANGE);\n }\n },\n\n _addSelectedCellsToArray: function() {\n var that = this;\n if (!that.selectable) {\n return;\n }\n that.selectable.value().each(function(index, item) {\n var date = toDateObject($(item.firstChild));\n if (!that.options.disableDates(date)) {\n that._selectDates.push(date);\n }\n });\n },\n\n _deselect: function(date) {\n var that = this;\n var currentDateIndex = that._selectDates.map(Number).indexOf(+date);\n if (currentDateIndex != -1) {\n that._selectDates.splice(currentDateIndex, 1);\n }\n },\n\n _unselecting: function(e) {\n var that = this;\n var element = e.element;\n\n if (that.options.selectable === SINGLE && !mobileOS && element.hasClass(FOCUSED)) {\n e.preventDefault();\n }\n },\n\n _visibleRange: function() {\n var tables = this.element.find(DOT + CALENDAR_VIEW + EMPTY + TABLE);\n var firstDateInView = toDateObject(tables.first().find(CELLSELECTOR).first().find(\"a\"));\n var lastDateInView = toDateObject(tables.last().find(CELLSELECTOR).last().find(\"a\"));\n return { start: firstDateInView, end: lastDateInView };\n },\n\n _dateInViews: function(date) {\n var that = this;\n var tables = that.element.find(DOT + CALENDAR_VIEW + EMPTY + TABLE);\n var firstDateInView = toDateObject(tables.first().find(CELLSELECTOR).first().find(\"a\"));\n var lastDateInView = toDateObject(tables.last().find(CELLSELECTOR).last().find(\"a\"));\n\n date = new Date(date.toDateString());\n\n return +date <= +lastDateInView && +date >= +firstDateInView;\n },\n\n _fillRange: function(start, end) {\n var that = this;\n var daysDifference;\n\n that._selectDates = [];\n daysDifference = daysBetweenTwoDates(start, end);\n addDaysToArray(that._selectDates, daysDifference, start, that.options.disableDates);\n },\n\n _selectRange: function(start, end) {\n var that = this;\n var current;\n\n if (+end < +start) {\n current = end;\n end = start;\n start = current;\n }\n\n that._fillRange(start, end);\n that._visualizeSelectedDatesInView();\n },\n\n _header: function() {\n var that = this;\n var element = that.element;\n var buttons;\n var header = element.find(\".k-calendar-header\");\n\n if (!header.length) {\n header = $(\"
\");\n } else {\n title.html(' \");\n }\n\n disabled = view.name === CENTURY;\n title.toggleClass(DISABLED, disabled).attr(ARIA_DISABLED, disabled);\n\n prevDisabled = view.compare(visibleRange.start, that.options.min) < 1;\n nextDisabled = view.compare(visibleRange.end, that.options.max) > -1;\n\n if (prevDisabled && nextDisabled) {\n if (that._navContainer) {\n that._navContainer.remove();\n that._navContainer = null;\n }\n } else {\n if (!that._navContainer) {\n that._navContainer = $(\"