{"version":3,"sources":["kendo.menu.js"],"names":["f","define","$","undefined","getEffectDirection","direction","root","split","replace","parseDirection","isRtl","output","origin","position","horizontal","test","kendo","directions","reverse","join","contains","parent","child","e","updateItemClasses","item","omitWrap","attr","addClass","children","IMG","IMAGE","LINK","filter","DEFAULTSTATE","removeClass","empty","append","DISABLEDSTATE","removeAttr","length","LINK_SELECTOR","contents","this","nodeName","match","excludedNodesRegExp","nodeType","trim","nodeValue","wrapAll","updateArrow","updateFirstLast","find","remove","each","arrowCssClass","getArrowCssClass","support","hasClass","MENU","FIRST","LAST","updateHasAriaPopup","parents","index","parentLi","eq","getParentLiItems","group","parentsUntil","storeItemSelectEventHandler","element","options","selectHandler","getItemSelectEventHandler","setItemData","items","i","data","select","isFunction","popupOpenerSelector","id","popupGroupSelector","selector","getChildPopups","currentPopup","overflowWrapper","childPopupOpener","result","opener","popupId","popup","POPUP_OPENER_ATTR","push","popupParentItem","popupElement","POPUP_ID_ATTR","itemPopup","animationContainerSelector","overflowMenuParents","current","last","getParents","parentNode","is","elem","mousewheelDelta","delta","wheelDelta","Math","ceil","floor","detail","round","parentsScroll","scrollDirection","scroll","isNaN","isPointerTouch","allPointers","originalEvent","pointerType","touchPointerTypes","isTouch","ev","touch","type","removeSpacesBetweenItems","ul","window","ui","activeElement","_activeElement","mobileOS","isArray","HierarchicalDataSource","MOUSEDOWN","CLICK","DELAY","SCROLLSPEED","extend","proxy","template","keys","Widget","NS","OPEN","ICON_SELECTOR","CLOSE","TIMER","SELECT","ZINDEX","ACTIVATE","DEACTIVATE","POINTERDOWN","pointers","msPointers","CHANGE","ERROR","TOUCHSTART","MOUSEENTER","MOUSELEAVE","MOUSEWHEEL","RESIZE","resize","SCROLLWIDTH","SCROLLHEIGHT","OFFSETWIDTH","OFFSETHEIGHT","DOCUMENT_ELEMENT","document","documentElement","KENDOPOPUP","HOVERSTATE","FOCUSEDSTATE","SELECTEDSTATE","menuSelector","groupSelector","popupSelector","allItemsSelector","disabledSelector","itemSelector","availableItemsSelector","linkSelector","exclusionSelector","nextSelector","lastSelector","templateSelector","scrollButtonSelector","2","STRING","DATABOUND","ARIA_EXPANDED","bindings","text","url","spriteCssClass","imageUrl","imageAttr","content","rendering","wrapperCssClass","enabled","firstLevel","cssClass","hasOwnProperty","selected","itemCssAttributes","attributes","imageCssAttributes","imgAttributes","toJSON","contentCssAttributes","contentAttr","defaultClasses","textClass","arrowClass","groupAttributes","expanded","groupCssClass","Menu","DataBoundWidget","init","that","fn","call","wrapper","_accessors","_templates","_dataSource","_updateClasses","_animations","nextItemZIndex","_tabindex","_initOverflow","_attachMenuEventsHandlers","openOnClick","clicked","_ariaId","format","notify","events","name","animation","open","duration","close","orientation","closeOnClick","hoverDelay","scrollable","popupCollision","_initData","dataSource","angular","elements","view","_overflowWrapper","on","_focusHandler","_click","_preventClose","_mouseenter","_mouseleave","_mousedown","_toggleHover","_keydown","_focus","_removeHoverItem","_checkActiveElement","_mouseleavePopup","_mouseenterPopup","_documentClickHandler","_documentClick","click","_detachMenuEventsHandlers","off","unbind","backwardBtn","forwardBtn","initialWidth","initialCssWidth","isHorizontal","_openedPopups","_scrollWrapper","wrap","templates","scrollButton","add","appendTo","_initScrolling","outerWidth","style","width","setTimeout","_setOverflowWrapperWidth","_toggleScrollButtons","_popupsWrapper","wrapperWidth","menuWidth","borders","wrapperCssWidth","css","offsetWidth","clientWidth","min","_reinitOverflow","overflowChanged","distance","_destroyOverflow","popupWrapper","popupParentLi","unwrap","scrollElement","isNumeric","mouseWheelDistance","backward","forward","backwardDouble","forwardDouble","scrolling","touchEvents","value","scrollValue","scrollLeft","scrollTop","finish","animate","mouseenterHandler","mousedownHandler","stop","currentTarget","trigger","stopPropagation","preventDefault","eventMap","down","scrollSpeed","ctrlKey","shiftKey","altKey","abs","_closeChildPopups","currentScroll","scrollSize","offset","toggle","setOptions","destroy","enable","_toggleDisabled","disable","attemptGetItem","candidate","referenceItem","inserted","_insert","_childPopupElement","insertBefore","before","insertAfter","after","groups","plain","groupData","isPlainObject","ObservableObject","renderGroup","ObservableArray","map","idx","get","renderItem","charAt","parentItems","container","_openAfterLoad","dataItem","loaded","_loading","one","visiblePopups","closePopup","getByUid","ns","hasChildren","load","closest","siblings","li","clearTimeout","overflowPopup","windowHeight","setScrolling","nextZindex","parentHorizontal","effects","openEffects","_getPopup","_triggerEvent","height","maxHeight","_outerHeight","getShadows","bottom","overflow","zIndex","kendoPopup","activate","deactivate","_closing","sender","removeData","opacity","collision","anchor","_popupOpen","hide","mouseAndTouchPresent","_configurePopupOverflow","_hovered","_initPopupScrolling","popupOpener","groupId","_wrapPopupElement","Date","getTime","autosize","display","skipMouseEvents","scrollHeight","offsetHeight","_initPopupScrollButtons","scrollButtons","timeout","p","isEmptyObject","_closeParentPopups","first","_keyTriggered","_setPopupHeight","isFixed","location","popupOuterHeight","popupOffsetTop","bottomScrollbar","canFit","popups","_initialHeight","_location","max","top","innerHeight","dontClearClose","hasChildPopupsHovered","isPopupMouseLeaved","_isRootItem","_forceClose","toggleClass","target","eventTarget","isEnter","indexOf","_closurePrevented","hoverItem","_hoverItem","_findRootParent","hasFocus","oldHoverItem","_oldHoverItem","nonContentGroupsSelector","matchesSelector","end","_itemHasChildren","pointerTouch","isParentClosing","delegateTarget","rootMenuItems","subMenuItems","relatedTarget","_","sibling","$window","stopImmediatePropagation","browser","msie","toElement","clientX","clientY","_closePopups","rootPopup","groupParent","innerPopup","_innerPopup","openHandle","childGroup","childGroupVisible","shouldCloseTheRootItem","childPopupId","targetElement","toUpperCase","formNode","link","itemElement","href","targetHref","sampleHref","isLink","isLocalLink","isTargetLink","_lastClickedElement","parentElement","handled","_triggerSelect","_parentsUntil","enterKey","context","itemSelectEventData","isSelectItemDefaultPrevented","isSelectDefaultPrevented","_getEventData","isDefaultPrevented","eventData","_defaultPrevented","active","_moveHover","focus","belongsToVertical","key","keyCode","ESC","_itemBelongsToVertival","RIGHT","LEFT","DOWN","_itemDown","UP","_itemUp","HOME","END","_itemEsc","ENTER","SPACEBAR","_moveHoverToRoot","TAB","menuIsVertical","nextItem","_scrollToItem","_itemRight","parentItem","nextAll","prevAll","_itemLeft","scrollDir","getSize","currentScrollOffset","itemSize","itemOffset","ulSize","scrollButtonSize","itemPosition","_outerWidth","_unbindDataSource","fields","field","create","_bindDataSource","fetch","_refreshHandler","refresh","_errorHandler","_error","bind","findByUid","uid","wrapperElement","node","action","itemsToUpdate","updateProxy","_updateItem","removeProxy","_removeItem","_appendItems","forEach","nextElement","next","textField","_fieldAccessor","fieldName","fieldBindings","count","x","expr","fieldAccessor","itemWrapper","arrow","sprite","menu","renderContent","dataContentField","subGroup","renderItems","html","len","ContextMenu","_marker","guid","substring","_popup","_wire","_initialWidth","showOn","alignToAnchor","copyAnchorStyles","_showProxy","userEvents","mousedown","_closeProxy","y","visible","kendoStop","left","_configurePopupScrolling","downEvent","_mousedownProxy","visibility","_setPopupWidth","windowWidth","popupOuterWidth","popupOffsetLeft","shadow","maxWidth","right","arguments","_closeTimeoutProxy","_showHandler","event","pageX","pageY","_eventOrigin","_targetChild","_closeHandler","normalClick","sameTarget","containment","which","_preventProxy","UserEvents","allowSelection","_triggerProxy","noop","plugin","jQuery","amd","a1","a2","a3"],"mappings":"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","file":"kendo.menu.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('kendo.menu', [\n 'kendo.popup',\n 'kendo.data'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'menu',\n name: 'Menu',\n category: 'web',\n description: 'The Menu widget displays hierarchical data as a multi-level menu.',\n depends: [\n 'popup',\n 'data',\n 'data.odata'\n ]\n };\n (function ($, undefined) {\n var kendo = window.kendo, ui = kendo.ui, activeElement = kendo._activeElement, touch = kendo.support.touch && kendo.support.mobileOS, isArray = $.isArray, HierarchicalDataSource = kendo.data.HierarchicalDataSource, MOUSEDOWN = 'mousedown', CLICK = 'click', DELAY = 30, SCROLLSPEED = 50, extend = $.extend, proxy = $.proxy, each = $.each, template = kendo.template, keys = kendo.keys, Widget = ui.Widget, excludedNodesRegExp = /^(ul|a|div)$/i, NS = '.kendoMenu', IMG = 'img', OPEN = 'open', MENU = 'k-menu', LINK = 'k-link k-menu-link', LINK_SELECTOR = '.k-link', ICON_SELECTOR = '.k-menu-expand-arrow', LAST = 'k-last', CLOSE = 'close', TIMER = 'timer', FIRST = 'k-first', IMAGE = 'k-image', SELECT = 'select', ZINDEX = 'zIndex', ACTIVATE = 'activate', DEACTIVATE = 'deactivate', POINTERDOWN = 'touchstart' + NS + ' MSPointerDown' + NS + ' pointerdown' + NS, pointers = kendo.support.pointers, msPointers = kendo.support.msPointers, allPointers = msPointers || pointers, CHANGE = 'change', ERROR = 'error', TOUCHSTART = kendo.support.touch ? 'touchstart' : '', MOUSEENTER = pointers ? 'pointerover' : msPointers ? 'MSPointerOver' : 'mouseenter', MOUSELEAVE = pointers ? 'pointerout' : msPointers ? 'MSPointerOut' : 'mouseleave', MOUSEWHEEL = 'DOMMouseScroll' + NS + ' mousewheel' + NS, RESIZE = kendo.support.resize + NS, SCROLLWIDTH = 'scrollWidth', SCROLLHEIGHT = 'scrollHeight', OFFSETWIDTH = 'offsetWidth', OFFSETHEIGHT = 'offsetHeight', POPUP_ID_ATTR = 'group', POPUP_OPENER_ATTR = 'groupparent', DOCUMENT_ELEMENT = $(document.documentElement), KENDOPOPUP = 'kendoPopup', DEFAULTSTATE = 'k-state-default', HOVERSTATE = 'k-state-hover', FOCUSEDSTATE = 'k-state-focused', DISABLEDSTATE = 'k-state-disabled', SELECTEDSTATE = 'k-state-selected', menuSelector = '.k-menu', groupSelector = '.k-menu-group', animationContainerSelector = '.k-animation-container', popupSelector = groupSelector + ',' + animationContainerSelector, allItemsSelector = ':not(.k-list) > .k-item', disabledSelector = '.k-item.k-state-disabled', itemSelector = '.k-item', availableItemsSelector = '.k-item:not(.k-state-disabled)', linkSelector = '.k-item:not(.k-state-disabled) > .k-link', exclusionSelector = ':not(.k-item.k-separator)', nextSelector = itemSelector + exclusionSelector + ':eq(0)', lastSelector = itemSelector + exclusionSelector + ':last', templateSelector = 'div:not(.k-animation-container,.k-list-container)', scrollButtonSelector = '.k-menu-scroll-button', touchPointerTypes = {\n '2': 1,\n 'touch': 1\n }, STRING = 'string', DATABOUND = 'dataBound', ARIA_EXPANDED = 'aria-expanded', bindings = {\n text: 'dataTextField',\n url: 'dataUrlField',\n spriteCssClass: 'dataSpriteCssClassField',\n imageUrl: 'dataImageUrlField',\n imageAttr: 'dataImageAttrField',\n content: 'dataContentField'\n }, rendering = {\n wrapperCssClass: function (group, item) {\n var result = 'k-item k-menu-item', index = item.index;\n if (item.enabled === false) {\n result += ' k-state-disabled';\n } else {\n result += ' k-state-default';\n }\n if (group.firstLevel && index === 0) {\n result += ' k-first';\n }\n if (index == group.length - 1) {\n result += ' k-last';\n }\n if (item.cssClass) {\n result += ' ' + item.cssClass;\n }\n if (item.attr && item.attr.hasOwnProperty('class')) {\n result += ' ' + item.attr['class'];\n }\n if (item.selected) {\n result += ' ' + SELECTEDSTATE;\n }\n return result;\n },\n itemCssAttributes: function (item) {\n var result = '';\n var attributes = item.attr || {};\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr) && attr !== 'class') {\n result += attr + '=\"' + attributes[attr] + '\" ';\n }\n }\n return result;\n },\n imageCssAttributes: function (imgAttributes) {\n var result = '';\n var attributes = imgAttributes && imgAttributes.toJSON ? imgAttributes.toJSON() : {};\n if (!attributes['class']) {\n attributes['class'] = IMAGE;\n } else {\n attributes['class'] += ' ' + IMAGE;\n }\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr)) {\n result += attr + '=\"' + attributes[attr] + '\" ';\n }\n }\n return result;\n },\n contentCssAttributes: function (item) {\n var result = '';\n var attributes = item.contentAttr || {};\n var defaultClasses = 'k-content k-group k-menu-group';\n if (!attributes['class']) {\n attributes['class'] = defaultClasses;\n } else {\n attributes['class'] += ' ' + defaultClasses;\n }\n for (var attr in attributes) {\n if (attributes.hasOwnProperty(attr)) {\n result += attr + '=\"' + attributes[attr] + '\" ';\n }\n }\n return result;\n },\n textClass: function () {\n return LINK;\n },\n arrowClass: function (item, group) {\n var result = 'k-menu-expand-arrow k-icon';\n if (group.horizontal) {\n result += ' k-i-arrow-60-down';\n } else {\n result += ' k-i-arrow-60-right';\n }\n return result;\n },\n groupAttributes: function (group) {\n return group.expanded !== true ? ' style=\\'display:none\\'' : '';\n },\n groupCssClass: function () {\n return 'k-group k-menu-group';\n },\n content: function (item) {\n return item.content ? item.content : ' ';\n }\n };\n function getEffectDirection(direction, root) {\n direction = direction.split(' ')[!root + 0] || direction;\n return direction.replace('top', 'up').replace('bottom', 'down');\n }\n function parseDirection(direction, root, isRtl) {\n direction = direction.split(' ')[!root + 0] || direction;\n var output = {\n origin: [\n 'bottom',\n isRtl ? 'right' : 'left'\n ],\n position: [\n 'top',\n isRtl ? 'right' : 'left'\n ]\n }, horizontal = /left|right/.test(direction);\n if (horizontal) {\n output.origin = [\n 'top',\n direction\n ];\n output.position[1] = kendo.directions[direction].reverse;\n } else {\n output.origin[0] = direction;\n output.position[0] = kendo.directions[direction].reverse;\n }\n output.origin = output.origin.join(' ');\n output.position = output.position.join(' ');\n return output;\n }\n function contains(parent, child) {\n try {\n return $.contains(parent, child);\n } catch (e) {\n return false;\n }\n }\n function updateItemClasses(item) {\n item = $(item);\n var omitWrap = item.attr(kendo.attr('omit-wrap'));\n if (omitWrap) {\n return;\n }\n item.addClass('k-item k-menu-item').children(IMG).addClass(IMAGE);\n item.children('a').addClass(LINK).children(IMG).addClass(IMAGE);\n item.filter(':not([disabled])').addClass(DEFAULTSTATE);\n item.filter('.k-separator').removeClass('k-menu-item').addClass('k-menu-separator').empty().append(' ');\n item.filter('li[disabled]').addClass(DISABLEDSTATE).removeAttr('disabled').attr('aria-disabled', true);\n if (!item.filter('[role]').length) {\n item.attr('role', 'menuitem');\n }\n if (!item.children(LINK_SELECTOR).length) {\n item.contents().filter(function () {\n return !this.nodeName.match(excludedNodesRegExp) && !(this.nodeType == 3 && !kendo.trim(this.nodeValue));\n }).wrapAll('');\n }\n updateArrow(item);\n updateFirstLast(item);\n }\n function updateArrow(item) {\n item = $(item);\n item.find('> .k-link > [class*=k-i-arrow-60]:not(.k-sprite)').remove();\n item.filter(':has(.k-menu-group)').children('.k-link:not(:has([class*=k-i-arrow]:not(.k-sprite)))').each(function () {\n var item = $(this), arrowCssClass = getArrowCssClass(item);\n item.append('');\n });\n }\n function getArrowCssClass(item) {\n var arrowCssClass, parent = item.parent().parent(), isRtl = kendo.support.isRtl(parent);\n if (parent.hasClass(MENU + '-horizontal')) {\n arrowCssClass = 'k-i-arrow-60-down';\n } else {\n if (isRtl) {\n arrowCssClass = 'k-i-arrow-60-left';\n } else {\n arrowCssClass = 'k-i-arrow-60-right';\n }\n }\n return arrowCssClass;\n }\n function updateFirstLast(item) {\n item = $(item);\n item.filter('.k-first:not(:first-child)').removeClass(FIRST);\n item.filter('.k-last:not(:last-child)').removeClass(LAST);\n item.filter(':first-child').addClass(FIRST);\n item.filter(':last-child').addClass(LAST);\n }\n function updateHasAriaPopup(parents) {\n if (parents && parents.length) {\n for (var index in parents) {\n var parentLi = parents.eq(index);\n if (parentLi.find('ul').length) {\n parentLi.attr('aria-haspopup', true);\n } else {\n parentLi.removeAttr('aria-haspopup');\n }\n }\n }\n }\n function getParentLiItems(group) {\n if (!group.hasClass(MENU)) {\n return group.parentsUntil('.' + MENU, 'li');\n }\n }\n function storeItemSelectEventHandler(element, options) {\n var selectHandler = getItemSelectEventHandler(options);\n if (selectHandler) {\n setItemData(element, selectHandler);\n }\n if (options.items) {\n $(element).children('ul').children('li').each(function (i) {\n storeItemSelectEventHandler(this, options.items[i]);\n });\n }\n }\n function setItemData(element, selectHandler) {\n $(element).children('.k-link').data({ selectHandler: selectHandler });\n }\n function getItemSelectEventHandler(options) {\n var selectHandler = options.select, isFunction = kendo.isFunction;\n if (selectHandler && isFunction(selectHandler)) {\n return selectHandler;\n }\n return null;\n }\n function popupOpenerSelector(id) {\n return id ? 'li[data-groupparent=\\'' + id + '\\']' : 'li[data-groupparent]';\n }\n function popupGroupSelector(id) {\n var selector = id ? '[data-group=\\'' + id + '\\']' : '[data-group]';\n return 'ul' + selector + ',div' + selector;\n }\n function getChildPopups(currentPopup, overflowWrapper) {\n var childPopupOpener = currentPopup.find(popupOpenerSelector());\n var result = [];\n childPopupOpener.each(function (i, opener) {\n opener = $(opener);\n var popupId = opener.data(POPUP_OPENER_ATTR);\n var popup = currentPopup;\n while (popupId) {\n popup = overflowWrapper.find(popupGroupSelector(popupId) + ':visible');\n if (popup.length) {\n result.push(popup);\n }\n opener = popup.find(popupOpenerSelector());\n popupId = opener.data(POPUP_OPENER_ATTR);\n }\n });\n return result;\n }\n function popupParentItem(popupElement, overflowWrapper) {\n var popupId = popupElement.data(POPUP_ID_ATTR);\n return popupId ? overflowWrapper.find(popupOpenerSelector(popupId)) : $([]);\n }\n function itemPopup(item, overflowWrapper) {\n var popupId = item.data(POPUP_OPENER_ATTR);\n return popupId ? overflowWrapper.children(animationContainerSelector).children(popupGroupSelector(popupId)) : $([]);\n }\n function overflowMenuParents(current, overflowWrapper) {\n var parents = [];\n var getParents = function (item) {\n while (item.parentNode && !overflowWrapper.is(item.parentNode)) {\n parents.push(item.parentNode);\n item = item.parentNode;\n }\n };\n var elem = current[0] || current;\n getParents(elem);\n var last = parents[parents.length - 1];\n while ($(last).is(animationContainerSelector)) {\n var popupElement = $(last).children('ul');\n elem = popupParentItem(popupElement, overflowWrapper)[0];\n if (!elem) {\n break;\n }\n parents.push(elem);\n getParents(elem);\n last = parents[parents.length - 1];\n }\n return parents;\n }\n function mousewheelDelta(e) {\n var delta = 0;\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n }\n if (e.detail) {\n delta = Math.round(e.detail / 3);\n }\n return delta;\n }\n function parentsScroll(current, scrollDirection) {\n var scroll = 0;\n var parent = current.parentNode;\n while (parent && !isNaN(parent[scrollDirection])) {\n scroll += parent[scrollDirection];\n parent = parent.parentNode;\n }\n return scroll;\n }\n function isPointerTouch(e) {\n return allPointers && e.originalEvent && e.originalEvent.pointerType in touchPointerTypes;\n }\n function isTouch(e) {\n var ev = e.originalEvent;\n return touch && /touch/i.test(ev.type || '');\n }\n function removeSpacesBetweenItems(ul) {\n ul.contents().filter(function () {\n return this.nodeName != 'LI';\n }).remove();\n }\n var Menu = kendo.ui.DataBoundWidget.extend({\n init: function (element, options) {\n var that = this;\n Widget.fn.init.call(that, element, options);\n element = that.wrapper = that.element;\n options = that.options;\n that._accessors();\n that._templates();\n that._dataSource();\n that._updateClasses();\n that._animations(options);\n that.nextItemZIndex = 100;\n that._tabindex();\n that._initOverflow(options);\n that._attachMenuEventsHandlers();\n if (options.openOnClick) {\n that.clicked = false;\n }\n element.attr('role', 'menubar');\n if (element[0].id) {\n that._ariaId = kendo.format('{0}_mn_active', element[0].id);\n }\n kendo.notify(that);\n },\n events: [\n OPEN,\n CLOSE,\n ACTIVATE,\n DEACTIVATE,\n SELECT,\n DATABOUND\n ],\n options: {\n name: 'Menu',\n animation: {\n open: { duration: 200 },\n close: { duration: 100 }\n },\n orientation: 'horizontal',\n direction: 'default',\n openOnClick: false,\n closeOnClick: true,\n hoverDelay: 100,\n scrollable: false,\n popupCollision: undefined\n },\n _initData: function () {\n var that = this;\n if (that.dataSource) {\n that.angular('cleanup', function () {\n return { elements: that.element.children() };\n });\n that.element.empty();\n that.append(that.dataSource.view(), that.element);\n that.angular('compile', function () {\n return { elements: that.element.children() };\n });\n }\n },\n _attachMenuEventsHandlers: function () {\n var that = this;\n var element = that.element;\n var options = that.options;\n var overflowWrapper = that._overflowWrapper();\n (overflowWrapper || element).on(POINTERDOWN, itemSelector, proxy(that._focusHandler, that)).on(CLICK + NS, disabledSelector, false).on(CLICK + NS, itemSelector, proxy(that._click, that)).on(POINTERDOWN + ' ' + MOUSEDOWN + NS, '.k-content', proxy(that._preventClose, that)).on(MOUSEENTER + NS, availableItemsSelector, proxy(that._mouseenter, that)).on(MOUSELEAVE + NS, availableItemsSelector, proxy(that._mouseleave, that)).on(MOUSEDOWN + NS, availableItemsSelector, proxy(that._mousedown, that)).on(TOUCHSTART + NS + ' ' + MOUSEENTER + NS + ' ' + MOUSELEAVE + NS + ' ' + MOUSEDOWN + NS + ' ' + CLICK + NS, linkSelector, proxy(that._toggleHover, that));\n element.on('keydown' + NS, proxy(that._keydown, that)).on('focus' + NS, proxy(that._focus, that)).on('focus' + NS, '.k-content', proxy(that._focus, that)).on('blur' + NS, proxy(that._removeHoverItem, that)).on('blur' + NS, '[tabindex]', proxy(that._checkActiveElement, that));\n if (overflowWrapper) {\n overflowWrapper.on(MOUSELEAVE + NS, popupSelector, proxy(that._mouseleavePopup, that)).on(MOUSEENTER + NS, popupSelector, proxy(that._mouseenterPopup, that));\n }\n if (options.openOnClick) {\n that._documentClickHandler = proxy(that._documentClick, that);\n $(document).click(that._documentClickHandler);\n }\n },\n _detachMenuEventsHandlers: function () {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n if (overflowWrapper) {\n overflowWrapper.off(NS);\n }\n that.element.off(NS);\n if (that._documentClickHandler) {\n $(document).unbind('click', that._documentClickHandler);\n }\n },\n _initOverflow: function (options) {\n var that = this;\n var isHorizontal = options.orientation == 'horizontal';\n var backwardBtn, forwardBtn;\n if (options.scrollable) {\n that._openedPopups = {};\n that._scrollWrapper = that.element.wrap('
').parent();\n if (isHorizontal) {\n removeSpacesBetweenItems(that.element);\n }\n backwardBtn = $(that.templates.scrollButton({ direction: isHorizontal ? 'left' : 'up' }));\n forwardBtn = $(that.templates.scrollButton({ direction: isHorizontal ? 'right' : 'down' }));\n backwardBtn.add(forwardBtn).appendTo(that._scrollWrapper);\n that._initScrolling(that.element, backwardBtn, forwardBtn, isHorizontal);\n var initialWidth = that.element.outerWidth();\n var initialCssWidth = that.element[0].style.width;\n initialCssWidth = initialCssWidth === 'auto' ? '' : initialCssWidth;\n if (isHorizontal) {\n $(window).on(RESIZE, function () {\n setTimeout(function () {\n that._setOverflowWrapperWidth(initialWidth, initialCssWidth);\n that._toggleScrollButtons(that.element, backwardBtn, forwardBtn, isHorizontal);\n }, 300);\n });\n }\n that._setOverflowWrapperWidth(initialWidth, initialCssWidth);\n that._toggleScrollButtons(that.element, backwardBtn, forwardBtn, isHorizontal);\n }\n },\n _overflowWrapper: function () {\n return this._scrollWrapper || this._popupsWrapper;\n },\n _setOverflowWrapperWidth: function (initialWidth, initialCssWidth) {\n var that = this;\n var wrapperCssWidth = that._scrollWrapper.css('width');\n that._scrollWrapper.css({ width: '' });\n var wrapperWidth = that._scrollWrapper.outerWidth();\n that._scrollWrapper.css({ width: wrapperCssWidth });\n var menuWidth = that.element.outerWidth();\n var borders = that.element[0].offsetWidth - that.element[0].clientWidth;\n if (menuWidth != wrapperWidth && wrapperWidth > 0) {\n var width = initialCssWidth ? Math.min(initialWidth, wrapperWidth) : wrapperWidth;\n that.element.width(width - borders);\n that._scrollWrapper.width(width);\n }\n },\n _reinitOverflow: function (options) {\n var that = this;\n var overflowChanged = options.scrollable && !that.options.scrollable || !options.scrollable && that.options.scrollable || options.scrollable && that.options.scrollable && options.scrollable.distance != that.options.scrollable.distance || options.orientation != that.options.orientation;\n if (overflowChanged) {\n that._detachMenuEventsHandlers();\n that._destroyOverflow();\n that._initOverflow(options);\n that._attachMenuEventsHandlers();\n }\n },\n _destroyOverflow: function () {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n if (overflowWrapper) {\n overflowWrapper.off(NS);\n overflowWrapper.find(scrollButtonSelector).off(NS).remove();\n overflowWrapper.children(animationContainerSelector).each(function (i, popupWrapper) {\n var ul = $(popupWrapper).children(groupSelector);\n ul.off(MOUSEWHEEL);\n var popupParentLi = popupParentItem(ul, overflowWrapper);\n if (popupParentLi.length) {\n popupParentLi.append(popupWrapper);\n }\n });\n overflowWrapper.find(popupOpenerSelector()).removeAttr('data-groupparent');\n overflowWrapper.find(popupGroupSelector()).removeAttr('data-group');\n that.element.off(MOUSEWHEEL);\n $(window).off(RESIZE);\n overflowWrapper.contents().unwrap();\n that._scrollWrapper = that._popupsWrapper = that._openedPopups = undefined;\n }\n },\n _initScrolling: function (scrollElement, backwardBtn, forwardBtn, isHorizontal) {\n var that = this;\n var scrollable = that.options.scrollable;\n var distance = $.isNumeric(scrollable.distance) ? scrollable.distance : SCROLLSPEED;\n var mouseWheelDistance = distance / 2;\n var backward = '-=' + distance;\n var forward = '+=' + distance;\n var backwardDouble = '-=' + distance * 2;\n var forwardDouble = '+=' + distance * 2;\n var scrolling = false;\n var touchEvents = false;\n var scroll = function (value) {\n var scrollValue = isHorizontal ? { 'scrollLeft': value } : { 'scrollTop': value };\n scrollElement.finish().animate(scrollValue, 'fast', 'linear', function () {\n if (scrolling) {\n scroll(value);\n }\n });\n that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n };\n var mouseenterHandler = function (e) {\n if (!scrolling && !touchEvents) {\n scroll(e.data.direction);\n scrolling = true;\n }\n };\n var mousedownHandler = function (e) {\n var scrollValue = isHorizontal ? { 'scrollLeft': e.data.direction } : { 'scrollTop': e.data.direction };\n touchEvents = isTouch(e) || isPointerTouch(e);\n scrollElement.stop().animate(scrollValue, 'fast', 'linear', function () {\n if (!touchEvents) {\n $(e.currentTarget).trigger(MOUSEENTER);\n } else {\n that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n scrolling = true;\n }\n });\n scrolling = false;\n e.stopPropagation();\n e.preventDefault();\n };\n backwardBtn.on(MOUSEENTER + NS, { direction: backward }, mouseenterHandler).on(kendo.eventMap.down + NS, { direction: backwardDouble }, mousedownHandler);\n forwardBtn.on(MOUSEENTER + NS, { direction: forward }, mouseenterHandler).on(kendo.eventMap.down + NS, { direction: forwardDouble }, mousedownHandler);\n backwardBtn.add(forwardBtn).on(MOUSELEAVE + NS, function () {\n scrollElement.stop();\n scrolling = false;\n that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n });\n scrollElement.on(MOUSEWHEEL, function (e) {\n if (!e.ctrlKey && !e.shiftKey && !e.altKey) {\n var wheelDelta = mousewheelDelta(e.originalEvent);\n var scrollSpeed = Math.abs(wheelDelta) * mouseWheelDistance;\n var value = (wheelDelta > 0 ? '+=' : '-=') + scrollSpeed;\n var scrollValue = isHorizontal ? { 'scrollLeft': value } : { 'scrollTop': value };\n that._closeChildPopups(scrollElement);\n scrollElement.finish().animate(scrollValue, 'fast', 'linear', function () {\n that._toggleScrollButtons(scrollElement, backwardBtn, forwardBtn, isHorizontal);\n });\n e.preventDefault();\n }\n });\n },\n _toggleScrollButtons: function (scrollElement, backwardBtn, forwardBtn, horizontal) {\n var currentScroll = horizontal ? kendo.scrollLeft(scrollElement) : scrollElement.scrollTop();\n var scrollSize = horizontal ? SCROLLWIDTH : SCROLLHEIGHT;\n var offset = horizontal ? OFFSETWIDTH : OFFSETHEIGHT;\n backwardBtn.toggle(currentScroll !== 0);\n forwardBtn.toggle(currentScroll < scrollElement[0][scrollSize] - scrollElement[0][offset] - 1);\n },\n setOptions: function (options) {\n var animation = this.options.animation;\n this._animations(options);\n options.animation = extend(true, animation, options.animation);\n if ('dataSource' in options) {\n this._dataSource(options);\n }\n this._updateClasses();\n this._reinitOverflow(options);\n Widget.fn.setOptions.call(this, options);\n },\n destroy: function () {\n var that = this;\n Widget.fn.destroy.call(that);\n that._detachMenuEventsHandlers();\n that._destroyOverflow();\n kendo.destroy(that.element);\n },\n enable: function (element, enable) {\n this._toggleDisabled(element, enable !== false);\n return this;\n },\n disable: function (element) {\n this._toggleDisabled(element, false);\n return this;\n },\n attemptGetItem: function (candidate) {\n candidate = candidate || this.element;\n var item = this.element.find(candidate);\n var overflowWrapper = this._overflowWrapper();\n if (item.length || candidate === this.element) {\n return item;\n } else if (overflowWrapper) {\n return overflowWrapper.find(candidate);\n } else {\n return $();\n }\n },\n append: function (item, referenceItem) {\n referenceItem = this.attemptGetItem(referenceItem);\n var inserted = this._insert(item, referenceItem, referenceItem.length ? this._childPopupElement(referenceItem) : null);\n each(inserted.items, function (i) {\n inserted.group.append(this);\n updateArrow(this);\n storeItemSelectEventHandler(this, item[i] || item);\n });\n updateArrow(referenceItem);\n updateFirstLast(inserted.group.find('.k-first, .k-last').add(inserted.items));\n updateHasAriaPopup(getParentLiItems(inserted.group));\n return this;\n },\n insertBefore: function (item, referenceItem) {\n referenceItem = this.attemptGetItem(referenceItem);\n var inserted = this._insert(item, referenceItem, referenceItem.parent());\n each(inserted.items, function (i) {\n referenceItem.before(this);\n updateArrow(this);\n updateFirstLast(this);\n storeItemSelectEventHandler(this, item[i] || item);\n });\n updateFirstLast(referenceItem);\n return this;\n },\n insertAfter: function (item, referenceItem) {\n referenceItem = this.attemptGetItem(referenceItem);\n var inserted = this._insert(item, referenceItem, referenceItem.parent());\n each(inserted.items, function (i) {\n referenceItem.after(this);\n updateArrow(this);\n updateFirstLast(this);\n storeItemSelectEventHandler(this, item[i] || item);\n });\n updateFirstLast(referenceItem);\n return this;\n },\n _insert: function (item, referenceItem, parent) {\n var that = this, items, groups;\n if (!referenceItem || !referenceItem.length) {\n parent = that.element;\n }\n var plain = $.isPlainObject(item) || item instanceof kendo.data.ObservableObject, groupData = {\n firstLevel: parent.hasClass(MENU),\n horizontal: parent.hasClass(MENU + '-horizontal'),\n expanded: true,\n length: parent.children().length\n };\n if (referenceItem && !parent.length) {\n parent = $(that.renderGroup({\n group: groupData,\n options: that.options\n })).appendTo(referenceItem);\n }\n if (plain || isArray(item) || item instanceof kendo.data.ObservableArray) {\n items = $($.map(plain ? [item] : item, function (value, idx) {\n if (typeof value === 'string') {\n return $(value).get();\n } else {\n return $(that.renderItem({\n group: groupData,\n item: extend(value, { index: idx })\n })).get();\n }\n }));\n } else {\n if (typeof item == 'string' && item.charAt(0) != '<') {\n items = that.element.find(item);\n } else {\n items = $(item);\n }\n groups = items.find('> ul').addClass('k-menu-group').attr('role', 'menu');\n items = items.filter('li');\n items.add(groups.find('> li')).each(function () {\n updateItemClasses(this);\n });\n }\n return {\n items: items,\n group: parent\n };\n },\n remove: function (element) {\n element = this.attemptGetItem(element);\n var that = this, parent = element.parentsUntil(that.element, allItemsSelector), group = element.parent('ul:not(.k-menu)');\n element.remove();\n if (group && !group.children(allItemsSelector).length) {\n var parentItems = getParentLiItems(group);\n var container = group.parent(animationContainerSelector);\n if (container.length) {\n container.remove();\n } else {\n group.remove();\n }\n updateHasAriaPopup(parentItems);\n }\n if (parent.length) {\n parent = parent.eq(0);\n updateArrow(parent);\n updateFirstLast(parent);\n }\n return that;\n },\n _openAfterLoad: function (element, dataItem) {\n var that = this;\n if (dataItem.loaded()) {\n that.open(element);\n that._loading = false;\n } else {\n dataItem.one(CHANGE, function () {\n element.find(ICON_SELECTOR).removeClass('k-i-loading');\n if (that._loading) {\n that.open(element);\n that._loading = false;\n }\n });\n }\n },\n open: function (element) {\n var that = this;\n var options = that.options;\n var horizontal = options.orientation == 'horizontal';\n var direction = options.direction;\n var isRtl = kendo.support.isRtl(that.wrapper);\n var overflowWrapper = that._overflowWrapper();\n element = (overflowWrapper || that.element).find(element);\n var dataItem = that.dataSource && that.dataSource.getByUid(element.data(kendo.ns + 'uid'));\n if (dataItem && dataItem.hasChildren && !dataItem.loaded() && !that._loading) {\n that._loading = true;\n element.find(ICON_SELECTOR).addClass('k-i-loading');\n dataItem.load();\n that._openAfterLoad(element, dataItem);\n return;\n }\n if (/^(top|bottom|default)$/.test(direction)) {\n if (isRtl) {\n direction = horizontal ? (direction + ' left').replace('default', 'bottom') : 'left';\n } else {\n direction = horizontal ? (direction + ' right').replace('default', 'bottom') : 'right';\n }\n }\n var visiblePopups = '>.k-popup:visible,>.k-animation-container>.k-popup:visible';\n var closePopup = function () {\n var popup = $(this).data(KENDOPOPUP);\n if (popup) {\n that.close($(this).closest('li.k-item'), true);\n }\n };\n element.siblings().find(visiblePopups).each(closePopup);\n if (overflowWrapper) {\n element.find(visiblePopups).each(closePopup);\n }\n if (that.options.openOnClick) {\n that.clicked = true;\n }\n element.each(function () {\n var li = $(this);\n clearTimeout(li.data(TIMER));\n li.data(TIMER, setTimeout(function () {\n var ul = li.find('.k-menu-group:first:hidden');\n var popup;\n var overflowPopup;\n if (!ul[0] && overflowWrapper) {\n overflowPopup = that._getPopup(li);\n ul = overflowPopup && overflowPopup.element;\n }\n if (ul.is(':visible')) {\n return;\n }\n if (ul[0] && that._triggerEvent({\n item: li[0],\n type: OPEN\n }) === false) {\n if (!ul.find('.k-menu-group')[0] && ul.children('.k-item').length > 1) {\n var windowHeight = $(window).height(), setScrolling = function () {\n ul.css({\n maxHeight: windowHeight - (kendo._outerHeight(ul) - ul.height()) - kendo.getShadows(ul).bottom,\n overflow: 'auto'\n });\n };\n setScrolling();\n } else {\n ul.css({\n maxHeight: '',\n overflow: ''\n });\n }\n li.data(ZINDEX, li.css(ZINDEX));\n var nextZindex = that.nextItemZIndex++;\n li.css(ZINDEX, nextZindex);\n if (that.options.scrollable) {\n li.parent().siblings(scrollButtonSelector).css({ zIndex: ++nextZindex });\n }\n popup = ul.data(KENDOPOPUP);\n var root = li.parent().hasClass(MENU), parentHorizontal = root && horizontal, directions = parseDirection(direction, root, isRtl), effects = options.animation.open.effects, openEffects = effects !== undefined ? effects : 'slideIn:' + getEffectDirection(direction, root);\n if (!popup) {\n popup = ul.kendoPopup({\n activate: function () {\n that._triggerEvent({\n item: this.wrapper.parent(),\n type: ACTIVATE\n });\n },\n deactivate: function (e) {\n that._closing = false;\n e.sender.element.removeData('targetTransform').css({ opacity: '' });\n that._triggerEvent({\n item: this.wrapper.parent(),\n type: DEACTIVATE\n });\n },\n origin: directions.origin,\n position: directions.position,\n collision: options.popupCollision !== undefined ? options.popupCollision : parentHorizontal ? 'fit' : 'fit flip',\n anchor: li,\n appendTo: overflowWrapper || li,\n animation: {\n open: extend(true, { effects: openEffects }, options.animation.open),\n close: options.animation.close\n },\n open: proxy(that._popupOpen, that),\n close: function (e) {\n that._closing = e.sender.element;\n var li = e.sender.wrapper.parent();\n if (overflowWrapper) {\n var popupId = e.sender.element.data(POPUP_ID_ATTR);\n if (popupId) {\n li = (overflowWrapper || that.element).find(popupOpenerSelector(popupId));\n }\n e.sender.wrapper.children(scrollButtonSelector).hide();\n }\n if (!that._triggerEvent({\n item: li[0],\n type: CLOSE\n })) {\n li.css(ZINDEX, li.data(ZINDEX));\n li.removeData(ZINDEX);\n if (that.options.scrollable) {\n li.parent().siblings(scrollButtonSelector).css({ zIndex: '' });\n }\n if (touch || allPointers || kendo.support.mouseAndTouchPresent) {\n li.removeClass(HOVERSTATE);\n that._removeHoverItem();\n }\n } else {\n e.preventDefault();\n }\n }\n }).data(KENDOPOPUP);\n } else {\n popup = ul.data(KENDOPOPUP);\n popup.options.origin = directions.origin;\n popup.options.position = directions.position;\n popup.options.animation.open.effects = openEffects;\n }\n ul.removeAttr('aria-hidden');\n li.attr(ARIA_EXPANDED, true);\n that._configurePopupOverflow(popup, li);\n popup._hovered = true;\n popup.open();\n that._initPopupScrolling(popup);\n }\n }, that.options.hoverDelay));\n });\n return that;\n },\n _configurePopupOverflow: function (popup, popupOpener) {\n var that = this;\n if (that.options.scrollable) {\n that._wrapPopupElement(popup);\n if (!popupOpener.attr('data-groupparent')) {\n var groupId = new Date().getTime();\n popupOpener.attr('data-groupparent', groupId);\n popup.element.attr('data-group', groupId);\n }\n }\n },\n _wrapPopupElement: function (popup) {\n if (!popup.element.parent().is(animationContainerSelector)) {\n popup.wrapper = kendo.wrap(popup.element, popup.options.autosize).css({\n overflow: 'hidden',\n display: 'block',\n position: 'absolute'\n });\n }\n },\n _initPopupScrolling: function (popup, isHorizontal, skipMouseEvents) {\n var that = this;\n if (that.options.scrollable && popup.element[0].scrollHeight > popup.element[0].offsetHeight) {\n that._initPopupScrollButtons(popup, isHorizontal, skipMouseEvents);\n }\n },\n _initPopupScrollButtons: function (popup, isHorizontal, skipMouseEvents) {\n var that = this;\n var scrollButtons = popup.wrapper.children(scrollButtonSelector);\n var animation = that.options.animation;\n var timeout = (animation && animation.open && animation.open.duration || 0) + DELAY;\n setTimeout(function () {\n if (!scrollButtons.length) {\n var backwardBtn = $(that.templates.scrollButton({ direction: isHorizontal ? 'left' : 'up' }));\n var forwardBtn = $(that.templates.scrollButton({ direction: isHorizontal ? 'right' : 'down' }));\n scrollButtons = backwardBtn.add(forwardBtn).appendTo(popup.wrapper);\n that._initScrolling(popup.element, backwardBtn, forwardBtn, isHorizontal);\n if (!skipMouseEvents) {\n scrollButtons.on(MOUSEENTER + NS, function () {\n var overflowWrapper = that._overflowWrapper();\n $(getChildPopups(popup.element, overflowWrapper)).each(function (i, p) {\n var popupOpener = overflowWrapper.find(popupOpenerSelector(p.data(POPUP_ID_ATTR)));\n that.close(popupOpener);\n });\n }).on(MOUSELEAVE + NS, function () {\n setTimeout(function () {\n if ($.isEmptyObject(that._openedPopups)) {\n that._closeParentPopups(popup.element);\n }\n }, DELAY);\n });\n }\n }\n that._toggleScrollButtons(popup.element, scrollButtons.first(), scrollButtons.last(), isHorizontal);\n }, timeout);\n },\n _popupOpen: function (e) {\n if (!this._keyTriggered) {\n e.sender.element.children('.' + FOCUSEDSTATE).removeClass(FOCUSEDSTATE);\n }\n if (this.options.scrollable) {\n this._setPopupHeight(e.sender);\n }\n },\n _setPopupHeight: function (popup, isFixed) {\n var popupElement = popup.element;\n var popups = popupElement.add(popupElement.parent(animationContainerSelector));\n popups.height(popupElement.hasClass(MENU) && this._initialHeight || '');\n var location = popup._location(isFixed);\n var windowHeight = $(window).height();\n var popupOuterHeight = location.height;\n var popupOffsetTop = isFixed ? 0 : Math.max(location.top, 0);\n var scrollTop = isFixed ? 0 : parentsScroll(this._overflowWrapper()[0], 'scrollTop');\n var bottomScrollbar = window.innerHeight - windowHeight;\n var maxHeight = windowHeight - kendo.getShadows(popupElement).bottom + bottomScrollbar;\n var canFit = maxHeight + scrollTop > popupOuterHeight + popupOffsetTop;\n if (!canFit) {\n var height = Math.min(maxHeight, maxHeight - popupOffsetTop + scrollTop);\n popups.css({\n overflow: 'hidden',\n height: height + 'px'\n });\n }\n },\n close: function (items, dontClearClose) {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n var element = overflowWrapper || that.element;\n items = element.find(items);\n if (!items.length) {\n items = element.find('>.k-item');\n }\n var hasChildPopupsHovered = function (currentPopup) {\n var result = false;\n if ($.isEmptyObject(that._openedPopups)) {\n return result;\n }\n $(getChildPopups(currentPopup, overflowWrapper)).each(function (i, popup) {\n result = !!that._openedPopups[popup.data(POPUP_ID_ATTR).toString()];\n return !result;\n });\n return result;\n };\n var isPopupMouseLeaved = function (opener) {\n var groupId = opener.data(POPUP_OPENER_ATTR);\n return !overflowWrapper || !groupId || !that._openedPopups[groupId.toString()];\n };\n items.each(function () {\n var li = $(this);\n li.attr(ARIA_EXPANDED, false);\n if (!dontClearClose && that._isRootItem(li)) {\n that.clicked = false;\n }\n clearTimeout(li.data(TIMER));\n li.data(TIMER, setTimeout(function () {\n var popup = that._getPopup(li);\n if (popup && (isPopupMouseLeaved(li) || that._forceClose)) {\n if (!that._forceClose && hasChildPopupsHovered(popup.element)) {\n return;\n }\n popup.close();\n popup.element.attr('aria-hidden', true);\n if (overflowWrapper) {\n if (that._forceClose && items.last().is(li[0])) {\n delete that._forceClose;\n }\n }\n }\n }, that.options.hoverDelay));\n });\n return that;\n },\n _getPopup: function (li) {\n var that = this;\n var popup = li.find('.k-menu-group:not(.k-list-container):not(.k-calendar-container):first:visible').data(KENDOPOPUP);\n var overflowWrapper = that._overflowWrapper();\n if (!popup && overflowWrapper) {\n var groupId = li.data(POPUP_OPENER_ATTR);\n if (groupId) {\n var popupElement = overflowWrapper.find(popupGroupSelector(groupId));\n popup = popupElement.data(KENDOPOPUP);\n }\n }\n return popup;\n },\n _toggleDisabled: function (items, enable) {\n this.element.find(items).each(function () {\n $(this).toggleClass(DEFAULTSTATE, enable).toggleClass(DISABLEDSTATE, !enable).attr('aria-disabled', !enable);\n });\n },\n _toggleHover: function (e) {\n var target = $(kendo.eventTarget(e) || e.target).closest(allItemsSelector), isEnter = e.type == MOUSEENTER || MOUSEDOWN.indexOf(e.type) !== -1;\n target.siblings().removeClass(HOVERSTATE);\n if (!target.parents('li.' + DISABLEDSTATE).length) {\n target.toggleClass(HOVERSTATE, isEnter || e.type == 'mousedown' || e.type == 'pointerover' || e.type == TOUCHSTART);\n }\n this._removeHoverItem();\n },\n _preventClose: function () {\n if (!this.options.closeOnClick) {\n this._closurePrevented = true;\n }\n },\n _checkActiveElement: function (e) {\n var that = this, hoverItem = $(e ? e.currentTarget : this._hoverItem()), target = that._findRootParent(hoverItem)[0];\n if (!this._closurePrevented) {\n setTimeout(function () {\n if (!document.hasFocus() || !contains(target, kendo._activeElement()) && e && !contains(target, e.currentTarget)) {\n that.close(target);\n }\n }, 0);\n }\n this._closurePrevented = false;\n },\n _removeHoverItem: function () {\n var oldHoverItem = this._hoverItem();\n if (oldHoverItem && oldHoverItem.hasClass(FOCUSEDSTATE)) {\n oldHoverItem.removeClass(FOCUSEDSTATE);\n this._oldHoverItem = null;\n }\n },\n _updateClasses: function () {\n var element = this.element, nonContentGroupsSelector = '.k-menu-init div ul', items;\n element.removeClass('k-menu-horizontal k-menu-vertical');\n element.addClass('k-widget k-reset k-header k-menu-init ' + MENU).addClass(MENU + '-' + this.options.orientation);\n if (this.options.orientation === 'vertical') {\n element.attr('aria-orientation', 'vertical');\n } else {\n element.attr('aria-orientation', 'horizontal');\n }\n element.find('li > ul').filter(function () {\n return !kendo.support.matchesSelector.call(this, nonContentGroupsSelector);\n }).addClass('k-group k-menu-group').attr('role', 'menu').attr('aria-hidden', element.is(':visible')).parent('li').attr('aria-haspopup', 'true').end().find('li > div').addClass('k-content').attr('tabindex', '-1');\n element.find('li[aria-haspopup]').attr(ARIA_EXPANDED, false);\n items = element.find('> li,.k-menu-group > li');\n element.removeClass('k-menu-init');\n items.each(function () {\n updateItemClasses(this);\n });\n },\n _mouseenter: function (e) {\n var that = this;\n var element = $(e.currentTarget);\n var hasChildren = that._itemHasChildren(element);\n var popupId = element.data(POPUP_OPENER_ATTR) || element.parent().data(POPUP_ID_ATTR);\n var pointerTouch = isPointerTouch(e);\n var isParentClosing = false;\n if (popupId) {\n that._openedPopups[popupId.toString()] = true;\n }\n if (that._closing) {\n isParentClosing = !!that._closing.find(element).length;\n }\n if (isParentClosing || e.delegateTarget != element.parents(menuSelector)[0] && e.delegateTarget != element.parents('.k-menu-scroll-wrapper,.k-popups-wrapper')[0]) {\n return;\n }\n that._keyTriggered = false;\n if (that.options.openOnClick.rootMenuItems && that._isRootItem(element.closest(allItemsSelector)) || that.options.openOnClick.subMenuItems && !that._isRootItem(element.closest(allItemsSelector))) {\n return;\n }\n if ((that.options.openOnClick === false || that.options.openOnClick.rootMenuItems === false && that._isRootItem(element.closest(allItemsSelector)) || that.options.openOnClick.subMenuItems === false && !that._isRootItem(element.closest(allItemsSelector)) || that.clicked) && !touch && !(pointerTouch && that._isRootItem(element.closest(allItemsSelector)))) {\n if (!contains(e.currentTarget, e.relatedTarget) && hasChildren) {\n that.open(element);\n }\n }\n if (that.options.openOnClick === true && that.clicked || touch) {\n element.siblings().each(proxy(function (_, sibling) {\n that.close(sibling, true);\n }, that));\n }\n },\n _mousedown: function (e) {\n var that = this;\n var element = $(e.currentTarget);\n if (that.options.openOnClick.subMenuItems && !that._isRootItem(element) || touch) {\n element.siblings().each(proxy(function (_, sibling) {\n that.close(sibling, true);\n }, that));\n }\n },\n _mouseleave: function (e) {\n var that = this;\n var element = $(e.currentTarget);\n var popupOpener = element.data(POPUP_OPENER_ATTR);\n var hasChildren = element.children(animationContainerSelector).length || element.children(groupSelector).length || popupOpener;\n var $window = $(window);\n if (popupOpener) {\n delete that._openedPopups[popupOpener.toString()];\n }\n if (element.parentsUntil(animationContainerSelector, '.k-list-container,.k-calendar-container')[0]) {\n e.stopImmediatePropagation();\n return;\n }\n if ((that.options.openOnClick === false || !that.options.openOnClick.rootMenuItems && that._isRootItem(element) || !that.options.openOnClick.subMenuItems && !that._isRootItem(element)) && !touch && !isPointerTouch(e) && !contains(e.currentTarget, e.relatedTarget || e.target) && hasChildren && !contains(e.currentTarget, kendo._activeElement())) {\n that.close(element, true);\n that._loading = false;\n return;\n }\n if (kendo.support.browser.msie && !e.toElement && !e.relatedTarget && !isPointerTouch(e) || e.clientX < 0 || e.clientY < 0 || e.clientY > $window.height() || e.clientX > $window.width()) {\n that.close(element);\n }\n },\n _mouseenterPopup: function (e) {\n var that = this;\n var popupElement = $(e.currentTarget);\n if (popupElement.parent().is(animationContainerSelector)) {\n return;\n }\n popupElement = popupElement.children('ul');\n var popupId = popupElement.data(POPUP_ID_ATTR);\n if (popupId) {\n that._openedPopups[popupId.toString()] = true;\n }\n },\n _mouseleavePopup: function (e) {\n var that = this;\n var popupElement = $(e.currentTarget);\n if (!isPointerTouch(e) && popupElement.is(animationContainerSelector)) {\n that._closePopups(popupElement.children('ul'));\n }\n },\n _closePopups: function (rootPopup) {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n var popupId = rootPopup.data(POPUP_ID_ATTR);\n if (popupId) {\n delete that._openedPopups[popupId.toString()];\n var groupParent = overflowWrapper.find(popupOpenerSelector(popupId));\n setTimeout(function () {\n if (that.options.openOnClick) {\n that._closeChildPopups(rootPopup);\n } else {\n if ($.isEmptyObject(that._openedPopups)) {\n var innerPopup = that._innerPopup(rootPopup);\n that._closeParentPopups(innerPopup);\n } else {\n that.close(groupParent, true);\n }\n }\n }, 0);\n }\n },\n _closeChildPopups: function (current) {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n $(getChildPopups(current, overflowWrapper)).each(function () {\n var popupOpener = overflowWrapper.find(popupOpenerSelector(this.data(POPUP_ID_ATTR)));\n that.close(popupOpener, true);\n });\n },\n _innerPopup: function (current) {\n var overflowWrapper = this._overflowWrapper();\n var popups = getChildPopups(current, overflowWrapper);\n return popups[popups.length - 1] || current;\n },\n _closeParentPopups: function (current) {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n var popupId = current.data(POPUP_ID_ATTR);\n var popupOpener = overflowWrapper.find(popupOpenerSelector(popupId));\n popupId = popupOpener.parent().data(POPUP_ID_ATTR);\n that.close(popupOpener, true);\n while (popupId && !that._openedPopups[popupId]) {\n if (popupOpener.parent().is(menuSelector)) {\n break;\n }\n popupOpener = overflowWrapper.find(popupOpenerSelector(popupId));\n that.close(popupOpener, true);\n popupId = popupOpener.parent().data(POPUP_ID_ATTR);\n }\n },\n _click: function (e) {\n var that = this, openHandle, options = that.options, target = $(kendo.eventTarget(e)), targetElement = target[0], nodeName = target[0] ? target[0].nodeName.toUpperCase() : '', formNode = nodeName == 'INPUT' || nodeName == 'SELECT' || nodeName == 'BUTTON' || nodeName == 'LABEL', link = target.closest(LINK_SELECTOR), element = target.closest(allItemsSelector), itemElement = element[0], href = link.attr('href'), childGroup, childGroupVisible, targetHref = target.attr('href'), sampleHref = $('').attr('href'), isLink = !!href && href !== sampleHref, isLocalLink = isLink && !!href.match(/^#/), isTargetLink = !!targetHref && targetHref !== sampleHref, overflowWrapper = that._overflowWrapper(), shouldCloseTheRootItem;\n if (targetElement && !targetElement.parentNode) {\n return;\n }\n if ($(target).hasClass('k-menu-expand-arrow')) {\n this._lastClickedElement = targetElement.parentElement;\n }\n while (targetElement && targetElement.parentNode != itemElement) {\n targetElement = targetElement.parentNode;\n }\n if ($(targetElement).is(templateSelector)) {\n return;\n }\n if (element.hasClass(DISABLEDSTATE)) {\n e.preventDefault();\n return;\n }\n if (!e.handled && that._triggerSelect(target, itemElement) && !formNode) {\n e.preventDefault();\n }\n e.handled = true;\n childGroup = element.children(popupSelector);\n if (overflowWrapper) {\n var childPopupId = element.data(POPUP_OPENER_ATTR);\n if (childPopupId) {\n childGroup = overflowWrapper.find(popupGroupSelector(childPopupId));\n }\n }\n childGroupVisible = childGroup.is(':visible');\n shouldCloseTheRootItem = options.openOnClick && childGroupVisible && that._isRootItem(element);\n if (options.closeOnClick && (!isLink || isLocalLink) && (!childGroup.length || shouldCloseTheRootItem)) {\n element.removeClass(HOVERSTATE).css('height');\n that._oldHoverItem = that._findRootParent(element);\n var item = that._parentsUntil(link, that.element, allItemsSelector);\n that._forceClose = !!overflowWrapper;\n that.close(item);\n that.clicked = false;\n if ('MSPointerUp'.indexOf(e.type) != -1) {\n e.preventDefault();\n }\n return;\n }\n if (isLink && e.enterKey) {\n link[0].click();\n }\n if ((!that._isRootItem(element) || options.openOnClick === false) && !options.openOnClick.subMenuItems && !kendo.support.touch && !(isPointerTouch(e) && that._isRootItem(element.closest(allItemsSelector)))) {\n return;\n }\n if (!isLink && !formNode && !isTargetLink) {\n e.preventDefault();\n }\n that.clicked = true;\n openHandle = childGroup.is(':visible') ? CLOSE : OPEN;\n if (!options.closeOnClick && openHandle == CLOSE) {\n return;\n }\n that[openHandle](element);\n },\n _parentsUntil: function (context, top, selector) {\n var overflowWrapper = this._overflowWrapper();\n if (!overflowWrapper) {\n return context.parentsUntil(top, selector);\n } else {\n var parents = overflowMenuParents(context, overflowWrapper);\n var result = [];\n $(parents).each(function () {\n var parent = $(this);\n if (parent.is(top)) {\n return false;\n }\n if (parent.is(selector)) {\n result.push(this);\n }\n });\n return $(result);\n }\n },\n _triggerSelect: function (target, itemElement) {\n target = target.is('.k-link') ? target : target.closest('.k-link');\n var selectHandler = target.data('selectHandler'), itemSelectEventData;\n if (selectHandler) {\n itemSelectEventData = this._getEventData(target);\n selectHandler.call(this, itemSelectEventData);\n }\n var isSelectItemDefaultPrevented = itemSelectEventData && itemSelectEventData.isDefaultPrevented();\n var isSelectDefaultPrevented = this._triggerEvent({\n item: itemElement,\n type: SELECT\n });\n return isSelectItemDefaultPrevented || isSelectDefaultPrevented;\n },\n _getEventData: function (target) {\n var eventData = {\n sender: this,\n target: target,\n _defaultPrevented: false,\n preventDefault: function () {\n this._defaultPrevented = true;\n },\n isDefaultPrevented: function () {\n return this._defaultPrevented;\n }\n };\n return eventData;\n },\n _documentClick: function (e) {\n var that = this;\n var target = $(e.target).hasClass('k-menu-expand-arrow') ? that._lastClickedElement : e.target;\n if (contains((that._overflowWrapper() || that.element)[0], target)) {\n that._lastClickedElement = undefined;\n return;\n }\n that.clicked = false;\n },\n _focus: function (e) {\n var that = this, target = e.target, hoverItem = that._hoverItem(), active = activeElement();\n if (target != that.wrapper[0] && !$(target).is(':kendoFocusable')) {\n e.stopPropagation();\n $(target).closest('.k-content').closest('.k-menu-group').closest('.k-item').addClass(FOCUSEDSTATE);\n that.wrapper.focus();\n return;\n }\n if (active === e.currentTarget) {\n if (hoverItem.length) {\n that._moveHover([], hoverItem);\n } else if (!that._oldHoverItem) {\n that._moveHover([], that.wrapper.children().first());\n }\n }\n },\n _keydown: function (e) {\n var that = this, key = e.keyCode, hoverItem = that._oldHoverItem, target, belongsToVertical, hasChildren, isRtl = kendo.support.isRtl(that.wrapper);\n if (e.target != e.currentTarget && key != keys.ESC) {\n return;\n }\n if (!hoverItem) {\n hoverItem = that._oldHoverItem = that._hoverItem();\n }\n belongsToVertical = that._itemBelongsToVertival(hoverItem);\n hasChildren = that._itemHasChildren(hoverItem);\n that._keyTriggered = true;\n if (key == keys.RIGHT) {\n target = that[isRtl ? '_itemLeft' : '_itemRight'](hoverItem, belongsToVertical, hasChildren);\n } else if (key == keys.LEFT) {\n target = that[isRtl ? '_itemRight' : '_itemLeft'](hoverItem, belongsToVertical, hasChildren);\n } else if (key == keys.DOWN) {\n target = that._itemDown(hoverItem, belongsToVertical, hasChildren);\n } else if (key == keys.UP) {\n target = that._itemUp(hoverItem, belongsToVertical, hasChildren);\n } else if (key == keys.HOME) {\n that._moveHover(hoverItem, hoverItem.parent().children().first());\n e.preventDefault();\n } else if (key == keys.END) {\n that._moveHover(hoverItem, hoverItem.parent().children().last());\n e.preventDefault();\n } else if (key == keys.ESC) {\n target = that._itemEsc(hoverItem, belongsToVertical);\n } else if (key == keys.ENTER || key == keys.SPACEBAR) {\n target = hoverItem.children('.k-link');\n if (target.length > 0) {\n that._click({\n target: target[0],\n preventDefault: function () {\n },\n enterKey: true\n });\n if (hasChildren && !hoverItem.hasClass(DISABLEDSTATE)) {\n that.open(hoverItem);\n that._moveHover(hoverItem, that._childPopupElement(hoverItem).children().first());\n } else {\n that._moveHoverToRoot(hoverItem, that._findRootParent(hoverItem));\n }\n }\n } else if (key == keys.TAB) {\n target = that._findRootParent(hoverItem);\n that._moveHover(hoverItem, target);\n that._checkActiveElement();\n return;\n }\n if (target && target[0]) {\n e.preventDefault();\n e.stopPropagation();\n }\n },\n _hoverItem: function () {\n return this.wrapper.find('.k-item.k-state-hover,.k-item.k-state-focused').filter(':visible');\n },\n _itemBelongsToVertival: function (item) {\n var menuIsVertical = this.wrapper.hasClass('k-menu-vertical');\n if (!item.length) {\n return menuIsVertical;\n }\n return item.parent().hasClass('k-menu-group') || menuIsVertical;\n },\n _itemHasChildren: function (item) {\n if (!item || !item.length || !item[0].nodeType) {\n return false;\n }\n return item.children('.k-menu-group, div.k-animation-container').length > 0 || !!item.data(POPUP_OPENER_ATTR) && !!this._overflowWrapper().children(popupGroupSelector(item.data(POPUP_OPENER_ATTR)));\n },\n _moveHover: function (item, nextItem) {\n var that = this, id = that._ariaId;\n if (item.length && nextItem.length) {\n item.removeClass(FOCUSEDSTATE);\n }\n if (nextItem.length) {\n if (nextItem[0].id) {\n id = nextItem[0].id;\n }\n nextItem.addClass(FOCUSEDSTATE);\n that._oldHoverItem = nextItem;\n if (id) {\n that.element.removeAttr('aria-activedescendant');\n $('#' + id).removeAttr('id');\n nextItem.attr('id', id);\n that.element.attr('aria-activedescendant', id);\n }\n that._scrollToItem(nextItem);\n }\n },\n _moveHoverToRoot: function (item, nextItem) {\n this._moveHover(item, nextItem);\n },\n _findRootParent: function (item) {\n if (this._isRootItem(item)) {\n return item;\n } else {\n return this._parentsUntil(item, menuSelector, 'li.k-item').last();\n }\n },\n _isRootItem: function (item) {\n return item.parent().hasClass(MENU);\n },\n _itemRight: function (item, belongsToVertical, hasChildren) {\n var that = this, nextItem, parentItem, overflowWrapper;\n if (!belongsToVertical) {\n nextItem = item.nextAll(nextSelector);\n if (!nextItem.length) {\n nextItem = item.prevAll(lastSelector);\n }\n that.close(item);\n } else if (hasChildren && !item.hasClass(DISABLEDSTATE)) {\n that.open(item);\n nextItem = that._childPopupElement(item).children().first();\n } else if (that.options.orientation == 'horizontal') {\n parentItem = that._findRootParent(item);\n overflowWrapper = that._overflowWrapper();\n if (overflowWrapper) {\n var rootPopup = itemPopup(parentItem, overflowWrapper);\n that._closeChildPopups(rootPopup);\n }\n that.close(parentItem);\n nextItem = parentItem.nextAll(nextSelector);\n }\n if (nextItem && !nextItem.length) {\n nextItem = that.wrapper.children('.k-item').first();\n } else if (!nextItem) {\n nextItem = [];\n }\n that._moveHover(item, nextItem);\n return nextItem;\n },\n _itemLeft: function (item, belongsToVertical) {\n var that = this, nextItem, overflowWrapper;\n if (!belongsToVertical) {\n nextItem = item.prevAll(nextSelector);\n if (!nextItem.length) {\n nextItem = item.nextAll(lastSelector);\n }\n that.close(item);\n } else {\n nextItem = item.parent().closest('.k-item');\n overflowWrapper = that._overflowWrapper();\n if (!nextItem.length && overflowWrapper) {\n nextItem = popupParentItem(item.parent(), overflowWrapper);\n }\n that.close(nextItem);\n if (that._isRootItem(nextItem) && that.options.orientation == 'horizontal') {\n nextItem = nextItem.prevAll(nextSelector);\n }\n }\n if (!nextItem.length) {\n nextItem = that.wrapper.children('.k-item').last();\n }\n that._moveHover(item, nextItem);\n return nextItem;\n },\n _itemDown: function (item, belongsToVertical, hasChildren) {\n var that = this, nextItem;\n if (!belongsToVertical) {\n if (!hasChildren || item.hasClass(DISABLEDSTATE)) {\n return;\n } else {\n that.open(item);\n nextItem = that._childPopupElement(item).children().first();\n }\n } else {\n nextItem = item.nextAll(nextSelector);\n }\n if (!nextItem.length && item.length) {\n nextItem = item.parent().children().first();\n } else if (!item.length) {\n nextItem = that.wrapper.children('.k-item').first();\n }\n that._moveHover(item, nextItem);\n return nextItem;\n },\n _itemUp: function (item, belongsToVertical) {\n var that = this, nextItem;\n if (!belongsToVertical) {\n return;\n } else {\n nextItem = item.prevAll(nextSelector);\n }\n if (!nextItem.length && item.length) {\n nextItem = item.parent().children().last();\n } else if (!item.length) {\n nextItem = that.wrapper.children('.k-item').last();\n }\n that._moveHover(item, nextItem);\n return nextItem;\n },\n _scrollToItem: function (item) {\n var that = this;\n if (that.options.scrollable && item && item.length) {\n var ul = item.parent();\n var isHorizontal = ul.hasClass(MENU) ? that.options.orientation == 'horizontal' : false;\n var scrollDir = isHorizontal ? 'scrollLeft' : 'scrollTop';\n var getSize = isHorizontal ? kendo._outerWidth : kendo._outerHeight;\n var currentScrollOffset = ul[scrollDir]();\n var itemSize = getSize(item);\n var itemOffset = item[0][isHorizontal ? 'offsetLeft' : 'offsetTop'];\n var ulSize = getSize(ul);\n var scrollButtons = ul.siblings(scrollButtonSelector);\n var scrollButtonSize = scrollButtons.length ? getSize(scrollButtons.first()) : 0;\n var itemPosition;\n if (currentScrollOffset + ulSize < itemOffset + itemSize + scrollButtonSize) {\n itemPosition = itemOffset + itemSize - ulSize + scrollButtonSize;\n } else if (currentScrollOffset > itemOffset - scrollButtonSize) {\n itemPosition = itemOffset - scrollButtonSize;\n }\n if (!isNaN(itemPosition)) {\n var scrolling = {};\n scrolling[scrollDir] = itemPosition;\n ul.finish().animate(scrolling, 'fast', 'linear', function () {\n that._toggleScrollButtons(ul, scrollButtons.first(), scrollButtons.last(), isHorizontal);\n });\n }\n }\n },\n _itemEsc: function (item, belongsToVertical) {\n var that = this, nextItem;\n if (!belongsToVertical) {\n return item;\n } else {\n nextItem = item.parent().closest('.k-item');\n that.close(nextItem);\n that._moveHover(item, nextItem);\n }\n return nextItem;\n },\n _childPopupElement: function (item) {\n var popupElement = item.find('.k-menu-group');\n var wrapper = this._overflowWrapper();\n if (!popupElement.length && wrapper) {\n popupElement = itemPopup(item, wrapper);\n }\n return popupElement;\n },\n _triggerEvent: function (e) {\n var that = this;\n return that.trigger(e.type, {\n type: e.type,\n item: e.item\n });\n },\n _focusHandler: function (e) {\n var that = this, item = $(kendo.eventTarget(e)).closest(allItemsSelector);\n if (item.hasClass(DISABLEDSTATE)) {\n return;\n }\n setTimeout(function () {\n that._moveHover([], item);\n if (item.children('.k-content')[0]) {\n item.parent().closest('.k-item').removeClass(FOCUSEDSTATE);\n }\n }, 200);\n },\n _animations: function (options) {\n if (options && 'animation' in options && !options.animation) {\n options.animation = {\n open: { effects: {} },\n close: {\n hide: true,\n effects: {}\n }\n };\n }\n },\n _dataSource: function (options) {\n var that = this, dataSource = options ? options.dataSource : that.options.dataSource;\n if (!dataSource) {\n return;\n }\n dataSource = isArray(dataSource) ? { data: dataSource } : dataSource;\n that._unbindDataSource();\n if (!dataSource.fields) {\n dataSource.fields = [\n { field: 'uid' },\n { field: 'text' },\n { field: 'url' },\n { field: 'cssClass' },\n { field: 'spriteCssClass' },\n { field: 'imageUrl' },\n { field: 'imageAttr' },\n { field: 'attr' },\n { field: 'contentAttr' },\n { field: 'content' },\n { field: 'encoded' },\n { field: 'items' },\n { field: 'select' }\n ];\n }\n that.dataSource = HierarchicalDataSource.create(dataSource);\n that._bindDataSource();\n that.dataSource.fetch();\n },\n _bindDataSource: function () {\n this._refreshHandler = proxy(this.refresh, this);\n this._errorHandler = proxy(this._error, this);\n this.dataSource.bind(CHANGE, this._refreshHandler);\n this.dataSource.bind(ERROR, this._errorHandler);\n },\n _unbindDataSource: function () {\n var dataSource = this.dataSource;\n if (dataSource) {\n dataSource.unbind(CHANGE, this._refreshHandler);\n dataSource.unbind(ERROR, this._errorHandler);\n }\n },\n _error: function () {\n },\n findByUid: function (uid) {\n var wrapperElement = this._overflowWrapper() || this.element;\n return wrapperElement.find('[' + kendo.attr('uid') + '=' + uid + ']');\n },\n refresh: function (ev) {\n var that = this;\n var node = ev.node;\n var action = ev.action;\n var parentElement = node ? that.findByUid(node.uid) : that.element;\n var itemsToUpdate = ev.items;\n var index = ev.index;\n var updateProxy = $.proxy(that._updateItem, that);\n var removeProxy = $.proxy(that._removeItem, that);\n if (action == 'add') {\n that._appendItems(itemsToUpdate, index, parentElement);\n } else if (action == 'remove') {\n itemsToUpdate.forEach(removeProxy);\n } else if (action == 'itemchange') {\n itemsToUpdate.forEach(updateProxy);\n } else if (action === 'itemloaded') {\n that.append(ev.items, parentElement);\n } else {\n this._initData();\n }\n this.trigger(DATABOUND, {\n item: parentElement,\n dataItem: node\n });\n },\n _appendItems: function (items, index, parent) {\n var that = this;\n var referenceItem = parent.find(itemSelector).eq(index);\n if (referenceItem.length) {\n that.insertBefore(items, referenceItem);\n } else {\n that.append(items, parent);\n }\n },\n _removeItem: function (item) {\n var that = this;\n var element = that.findByUid(item.uid);\n that.remove(element);\n },\n _updateItem: function (item) {\n var that = this;\n var element = that.findByUid(item.uid);\n var nextElement = element.next();\n var parentNode = item.parentNode();\n that.remove(element);\n if (nextElement.length) {\n that.insertBefore(item, nextElement);\n } else {\n that.append(item, parentNode && that.findByUid(parentNode.uid));\n }\n },\n _accessors: function () {\n var that = this, options = that.options, i, field, textField, element = that.element;\n for (i in bindings) {\n field = options[bindings[i]];\n textField = element.attr(kendo.attr(i + '-field'));\n if (!field && textField) {\n field = textField;\n }\n if (!field) {\n field = i;\n }\n if (!isArray(field)) {\n field = [field];\n }\n options[bindings[i]] = field;\n }\n },\n _fieldAccessor: function (fieldName) {\n var fieldBindings = this.options[bindings[fieldName]] || [], count = fieldBindings.length, result = '(function(item) {';\n if (count === 0) {\n result += 'return item[\\'' + fieldName + '\\'];';\n } else {\n result += 'var levels = [' + $.map(fieldBindings, function (x) {\n return 'function(d){ return ' + kendo.expr(x) + '}';\n }).join(',') + '];';\n result += 'if(item.level){return levels[Math.min(item.level(), ' + count + '-1)](item);}else';\n result += '{return levels[' + count + '-1](item)}';\n }\n result += '})';\n return result;\n },\n _templates: function () {\n var that = this, options = that.options, fieldAccessor = proxy(that._fieldAccessor, that);\n if (options.template && typeof options.template == STRING) {\n options.template = template(options.template);\n } else if (!options.template) {\n options.template = template('# var text = ' + fieldAccessor('text') + '(data.item); #' + '# if (typeof data.item.encoded != \\'undefined\\' && data.item.encoded === false) {#' + '#= text #' + '# } else { #' + '#: text #' + '# } #');\n }\n that.templates = {\n content: template('#var contentHtml = ' + fieldAccessor('content') + '(item);#' + '
#= contentHtml || \\'\\' #
'),\n group: template('
    ' + '#= renderItems(data) #' + '
'),\n itemWrapper: template('# var url = ' + fieldAccessor('url') + '(item); #' + '# var imageUrl = ' + fieldAccessor('imageUrl') + '(item); #' + '# var imgAttributes = ' + fieldAccessor('imageAttr') + '(item);#' + '# var tag = url ? \\'a\\' : \\'span\\' #' + '<#= tag # class=\\'#= textClass(item) #\\' #if(url){#href=\\'#= url #\\'#}#>' + '# if (imageUrl) { #' + '\\'\\'' + '# } #' + '#= sprite(item) ##= data.menu.options.template(data) #' + '#= arrow(data) #' + ''),\n item: template('#var contentHtml = ' + fieldAccessor('content') + '(item);#' + '
  • ' + '#= itemWrapper(data) #' + '#if (item.hasChildren || item.items) { #' + '#= subGroup({ items: item.items, menu: menu, group: { expanded: item.expanded } }) #' + '# } else if (item.content || item.contentUrl || contentHtml) { #' + '#= renderContent(data) #' + '# } #' + '# if(item.items && item.items.length > 0) { # ' + '# if(item.expanded) { # ' + ' aria-expanded=\\'true\\'' + '# } else { #' + ' aria-expanded=\\'false\\'' + '# } #' + '# } #' + '
  • '),\n scrollButton: template('' + ''),\n arrow: template(''),\n sprite: template('# var spriteCssClass = ' + fieldAccessor('spriteCssClass') + '(data); if(spriteCssClass) {##}#'),\n empty: template('')\n };\n },\n renderItem: function (options) {\n var that = this;\n options = extend({\n menu: that,\n group: {}\n }, options);\n var empty = that.templates.empty, item = options.item;\n return that.templates.item(extend(options, {\n sprite: that.templates.sprite,\n itemWrapper: that.templates.itemWrapper,\n renderContent: that.renderContent,\n arrow: item.items || item.content || item[that.options.dataContentField[0]] ? that.templates.arrow : empty,\n subGroup: that.renderGroup\n }, rendering));\n },\n renderGroup: function (options) {\n var that = this;\n var templates = that.templates || options.menu.templates;\n return templates.group(extend({\n renderItems: function (options) {\n var html = '', i = 0, items = options.items, len = items ? items.length : 0, group = extend({ length: len }, options.group);\n for (; i < len; i++) {\n html += options.menu.renderItem(extend(options, {\n group: group,\n item: extend({ index: i }, items[i])\n }));\n }\n return html;\n }\n }, options, rendering));\n },\n renderContent: function (options) {\n return options.menu.templates.content(extend(options, rendering));\n }\n });\n var ContextMenu = Menu.extend({\n init: function (element, options) {\n var that = this;\n Menu.fn.init.call(that, element, options);\n that.element.attr('role', 'menu');\n that._marker = kendo.guid().substring(0, 8);\n that.target = $(that.options.target);\n that._popup();\n that._wire();\n },\n _initOverflow: function (options) {\n var that = this;\n if (options.scrollable && !that._overflowWrapper()) {\n that._openedPopups = {};\n that._popupsWrapper = (that.element.parent().is(animationContainerSelector) ? that.element.parent() : that.element).wrap('
    ').parent();\n if (that.options.orientation == 'horizontal') {\n removeSpacesBetweenItems(that.element);\n }\n if (options.appendTo) {\n options.appendTo = $(options.appendTo);\n options.appendTo.append(that._popupsWrapper);\n }\n that._initialHeight = that.element[0].style.height;\n that._initialWidth = that.element[0].style.width;\n }\n },\n options: {\n name: 'ContextMenu',\n filter: null,\n showOn: 'contextmenu',\n orientation: 'vertical',\n alignToAnchor: false,\n copyAnchorStyles: true,\n target: 'body'\n },\n events: [\n OPEN,\n CLOSE,\n ACTIVATE,\n DEACTIVATE,\n SELECT\n ],\n setOptions: function (options) {\n var that = this;\n Menu.fn.setOptions.call(that, options);\n that.target.off(that.showOn + NS + that._marker, that._showProxy);\n if (that.userEvents) {\n that.userEvents.destroy();\n }\n that.target = $(that.options.target);\n if (options.orientation && that.popup.wrapper[0]) {\n that.popup.element.unwrap();\n }\n that._wire();\n Menu.fn.setOptions.call(this, options);\n },\n destroy: function () {\n var that = this;\n that.target.off(that.options.showOn + NS + that._marker);\n DOCUMENT_ELEMENT.off(kendo.support.mousedown + NS + that._marker, that._closeProxy);\n if (that.userEvents) {\n that.userEvents.destroy();\n }\n Menu.fn.destroy.call(that);\n },\n open: function (x, y) {\n var that = this;\n x = $(x)[0];\n if (contains(that.element[0], $(x)[0]) || that._itemHasChildren($(x))) {\n Menu.fn.open.call(that, x);\n } else {\n if (that._triggerEvent({\n item: that.element,\n type: OPEN\n }) === false) {\n if (that.popup.visible() && that.options.filter) {\n that.popup.close(true);\n that.popup.element.kendoStop(true);\n }\n if (y !== undefined) {\n var overflowWrapper = that._overflowWrapper();\n if (overflowWrapper) {\n var offset = overflowWrapper.offset();\n x -= offset.left;\n y -= offset.top;\n }\n that.popup.wrapper.hide();\n that._configurePopupScrolling(x, y);\n that.popup.open(x, y);\n } else {\n that.popup.options.anchor = (x ? x : that.popup.anchor) || that.target;\n that.popup.element.kendoStop(true);\n that._configurePopupScrolling();\n that.popup.open();\n }\n DOCUMENT_ELEMENT.off(that.popup.downEvent, that.popup._mousedownProxy);\n DOCUMENT_ELEMENT.on(kendo.support.mousedown + NS + that._marker, that._closeProxy);\n that.element.focus();\n }\n }\n return that;\n },\n _configurePopupScrolling: function (x, y) {\n var that = this;\n var popup = that.popup;\n var isHorizontal = that.options.orientation == 'horizontal';\n if (that.options.scrollable) {\n that._wrapPopupElement(popup);\n popup.element.parent().css({\n position: '',\n height: ''\n });\n popup.element.css({\n visibility: 'hidden',\n display: '',\n position: ''\n });\n if (isHorizontal) {\n that._setPopupWidth(popup, isNaN(x) ? undefined : {\n isFixed: true,\n x: x,\n y: y\n });\n } else {\n that._setPopupHeight(popup, isNaN(x) ? undefined : {\n isFixed: true,\n x: x,\n y: y\n });\n }\n popup.element.css({\n visibility: '',\n display: 'none',\n position: 'absolute'\n });\n that._initPopupScrollButtons(popup, isHorizontal, true);\n popup.element.siblings(scrollButtonSelector).hide();\n }\n },\n _setPopupWidth: function (popup, isFixed) {\n var popupElement = popup.element;\n var popups = popupElement.add(popupElement.parent(animationContainerSelector));\n popups.width(this._initialWidth || '');\n var location = popup._location(isFixed);\n var windowWidth = $(window).width();\n var popupOuterWidth = location.width;\n var popupOffsetLeft = Math.max(location.left, 0);\n var scrollLeft = isFixed ? 0 : parentsScroll(this._overflowWrapper()[0], 'scrollLeft');\n var shadow = kendo.getShadows(popupElement);\n var maxWidth = windowWidth - shadow.left - shadow.right;\n var canFit = maxWidth + scrollLeft > popupOuterWidth + popupOffsetLeft;\n if (!canFit) {\n popups.css({\n overflow: 'hidden',\n width: maxWidth - popupOffsetLeft + scrollLeft + 'px'\n });\n }\n },\n close: function () {\n var that = this;\n if (contains(that.element[0], $(arguments[0])[0]) || that._itemHasChildren(arguments[0])) {\n Menu.fn.close.call(that, arguments[0]);\n } else {\n if (that.popup.visible()) {\n if (that._triggerEvent({\n item: that.element,\n type: CLOSE\n }) === false) {\n that._removeHoverItem();\n that.element.find('#' + that._ariaId).removeAttr('id');\n that.popup.close();\n DOCUMENT_ELEMENT.off(kendo.support.mousedown + NS + that._marker, that._closeProxy);\n that.unbind(SELECT, that._closeTimeoutProxy);\n that.target.focus();\n }\n }\n }\n },\n _showHandler: function (e) {\n var ev = e, offset, that = this, options = that.options, target = kendo.support.mobileOS ? $(ev.target) : $(ev.currentTarget);\n if (e.event) {\n ev = e.event;\n ev.pageX = e.x.location;\n ev.pageY = e.y.location;\n }\n if (contains(that.element[0], e.relatedTarget || e.target)) {\n return;\n }\n that._eventOrigin = ev;\n ev.preventDefault();\n ev.stopImmediatePropagation();\n that.element.find('.' + FOCUSEDSTATE).removeClass(FOCUSEDSTATE);\n if (options.filter && target.is(options.filter) || !options.filter) {\n if (options.alignToAnchor) {\n that.popup.options.anchor = ev.currentTarget;\n that.open(ev.currentTarget);\n } else {\n that.popup.options.anchor = ev.currentTarget;\n if (that._targetChild) {\n offset = that.target.offset();\n that.open(ev.pageX - offset.left, ev.pageY - offset.top);\n } else {\n that.open(ev.pageX, ev.pageY);\n }\n }\n }\n },\n _closeHandler: function (e) {\n var that = this, target = $(e.relatedTarget || e.target), sameTarget = target.closest(that.target.selector)[0] == that.target[0], item = target.closest(itemSelector), children = that._itemHasChildren(item), overflowWrapper = that._overflowWrapper(), containment = contains(that.element[0], target[0]) || overflowWrapper && contains(overflowWrapper[0], target[0]);\n that._eventOrigin = e;\n var normalClick = e.which !== 3;\n if (that.popup.visible() && (normalClick && sameTarget || !sameTarget) && (that.options.closeOnClick && !children && containment || !containment)) {\n if (containment) {\n this.unbind(SELECT, this._closeTimeoutProxy);\n that.bind(SELECT, that._closeTimeoutProxy);\n } else {\n that.close();\n }\n }\n },\n _wire: function () {\n var that = this, options = that.options, target = that.target;\n that._preventProxy = null;\n that._showProxy = proxy(that._showHandler, that);\n that._closeProxy = proxy(that._closeHandler, that);\n that._closeTimeoutProxy = proxy(that.close, that);\n if (target[0]) {\n if (kendo.support.mobileOS && options.showOn == 'contextmenu') {\n that.userEvents = new kendo.UserEvents(target, {\n filter: options.filter,\n allowSelection: false\n });\n that._preventProxy = function () {\n return false;\n };\n that.userEvents.bind('hold', that._showProxy);\n }\n if (options.filter) {\n target.on(options.showOn + NS + that._marker, options.filter, that._preventProxy || that._showProxy);\n } else {\n target.on(options.showOn + NS + that._marker, that._preventProxy || that._showProxy);\n }\n }\n },\n _triggerEvent: function (e) {\n var that = this, anchor = $(that.popup.options.anchor)[0], origin = that._eventOrigin;\n that._eventOrigin = undefined;\n return that.trigger(e.type, extend({\n type: e.type,\n item: e.item || this.element[0],\n target: anchor\n }, origin ? { event: origin } : {}));\n },\n _popup: function () {\n var that = this;\n var overflowWrapper = that._overflowWrapper();\n that._triggerProxy = proxy(that._triggerEvent, that);\n that.popup = that.element.addClass('k-context-menu').kendoPopup({\n autosize: that.options.orientation === 'horizontal',\n anchor: that.target || 'body',\n copyAnchorStyles: that.options.copyAnchorStyles,\n collision: that.options.popupCollision || 'fit',\n animation: that.options.animation,\n activate: that._triggerProxy,\n deactivate: that._triggerProxy,\n appendTo: overflowWrapper || that.options.appendTo,\n close: !overflowWrapper ? $.noop : function (e) {\n $(getChildPopups(e.sender.element, overflowWrapper)).each(function (i, p) {\n var popup = p.data(KENDOPOPUP);\n if (popup) {\n popup.close(true);\n }\n });\n }\n }).data(KENDOPOPUP);\n that._targetChild = contains(that.target[0], that.popup.element[0]);\n },\n _moveHoverToRoot: function (item, nextItem) {\n this._moveHover(item, nextItem);\n this.close();\n },\n _focus: function (e) {\n var hoverItem = this._oldHoverItem = this._hoverItem() || [];\n Menu.fn._focus.call(this, e);\n if (activeElement() === e.currentTarget) {\n this._moveHover(hoverItem, this.wrapper.children().first());\n }\n }\n });\n ui.plugin(Menu);\n ui.plugin(ContextMenu);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"]}