{"version":3,"file":"kendo.button.menu.min.js","names":["factory","define","amd","$","undefined$1","kendo","window","Widget","ui","NS","keys","extend","DOT","ID","NEXT","DISABLEDSTATE","ARIA_DISABLED","TABINDEX","CLICK","MENU_CLICK","OPEN","CLOSE","KEYDOWN","FOCUS","cssClasses","baseItem","text","icon","url","attributes","enabled","hidden","id","imageUrl","spriteCssClass","IMAGE_TEMPLATE","SPRITE_TEMPLATE","ICON_TEMPLATE","TEXT_TEMPLATE","ITEM_TEMPLATE","LINK_TEMPLATE","findFocusableSibling","element","dir","getSibling","fn","next","prev","getter","first","last","candidate","call","focusable","length","parent","find","is","ButtonMenu","init","options","that","this","mainButton","_clickHandlers","_renderList","_initPopup","_attachEvents","_applyCssClasses","list","name","items","size","events","popup","addClass","attr","guid","appendTo","forEach","_renderListItem","bind","item","menuItem","enable","_renderItemButton","click","data","isFunction","append","_hide","itemTemplate","template","_popup","Popup","anchor","isRtl","_isRtl","toggleTarget","copyAnchorStyles","animation","open","_popupOpenHandler","close","_popupCloseHandler","activate","_popupExpandHandler","ev","trigger","preventDefault","adjustPopupWidth","width","css","on","_click","listItemKeydown","_keydown","target","parents","altKey","keyCode","DOWN","li","ESC","TAB","UP","SPACEBAR","ENTER","HOME","filter","END","closest","type","originalEvent","toggle","toggleClass","removeAttr","hide","show","children","destroyPopup","destroy","off","remove","cssProperties","registerPrefix","plugin","jQuery"],"sources":["kendo.button.menu.js"],"mappings":"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","sourcesContent":["(function (factory) {\n typeof define === 'function' && define.amd ? define(['kendo.core', 'kendo.popup'], factory) :\n factory();\n})((function () {\n var __meta__ = {\n id: \"button.menu\",\n name: \"ButtonMenu\",\n category: \"web\",\n description: \"The popup Menu list part of the SplitButton and the DropDownButton\",\n depends: [\"core\", \"popup\"]\n };\n\n (function($, undefined$1) {\n var kendo = window.kendo,\n Widget = kendo.ui.Widget,\n NS = \".kendoButtonMenu\",\n ui = kendo.ui,\n keys = kendo.keys,\n extend = $.extend,\n\n DOT = \".\",\n ID = \"id\",\n NEXT = \"next\",\n PREV = \"prev\",\n DISABLEDSTATE = \"k-disabled\",\n HIDDEN = \"k-hidden\",\n\n ARIA_DISABLED = \"aria-disabled\",\n ROLE_MENU = \"menu\",\n ROLE_MENU_ITEM = \"menuitem\",\n TABINDEX = \"tabindex\",\n\n CLICK = \"click\",\n MENU_CLICK = \"menuClick\",\n OPEN = \"menuOpen\",\n CLOSE = \"menuClose\",\n KEYDOWN = \"keydown\",\n\n FOCUS = \"focus\";\n\n var cssClasses = {\n popup: \"k-menu-popup\",\n list: \"k-group k-menu-group k-reset\",\n listItem: \"k-item k-menu-item\",\n menuItem: \"k-menu-item\",\n itemText: \"k-menu-link-text\",\n item: \"k-link k-menu-link\",\n sprite: \"k-sprite\",\n image: \"k-image\",\n icon: \"k-icon\"\n };\n\n var baseItem = {\n text: null,\n icon: null,\n url: null,\n attributes: null,\n enabled: true,\n hidden: false,\n id: null,\n imageUrl: null,\n spriteCssClass: null\n };\n\n var IMAGE_TEMPLATE = \"#if(imageUrl){#\\\"icon\\\"#}#\";\n var SPRITE_TEMPLATE = \"#if(spriteCssClass){##}#\";\n var ICON_TEMPLATE = \"#if(icon){##}#\";\n var TEXT_TEMPLATE = \"#if(text){##:text##}#\";\n\n var ITEM_TEMPLATE = \"\" + IMAGE_TEMPLATE + SPRITE_TEMPLATE + ICON_TEMPLATE + TEXT_TEMPLATE + \"\";\n\n var LINK_TEMPLATE = \"\" + IMAGE_TEMPLATE + SPRITE_TEMPLATE + ICON_TEMPLATE + TEXT_TEMPLATE + \"\";\n\n function findFocusableSibling(element, dir) {\n var getSibling = dir === NEXT ? $.fn.next : $.fn.prev;\n var getter = dir === NEXT ? $.fn.first : $.fn.last;\n var candidate = getSibling.call(element);\n var focusable = \":kendoFocusable\";\n\n if (!candidate.length) {\n candidate = getter.call(element.parent().find(DOT + cssClasses.menuItem));\n }\n\n if (candidate.is(focusable) || !candidate.length) {\n return candidate;\n }\n\n if (candidate.find(focusable).length) {\n return getter.call(candidate.find(focusable));\n }\n\n return findFocusableSibling(candidate, dir);\n }\n\n var ButtonMenu = Widget.extend({\n init: function(element, options) {\n var that = this;\n\n\n Widget.fn.init.call(that, element, options);\n\n that.mainButton = options.mainButton;\n that._clickHandlers = {};\n\n that._renderList();\n\n that._initPopup();\n\n that._attachEvents();\n\n that._applyCssClasses(that.list);\n },\n\n options: {\n name: \"ButtonMenu\",\n element: null,\n items: [],\n size: \"medium\",\n },\n\n events: [\n MENU_CLICK,\n OPEN,\n CLOSE\n ],\n\n _renderList: function() {\n var that = this,\n items = that.options.items,\n popup = that.element.addClass(cssClasses.popup),\n id = that.mainButton.attr(ID) || kendo.guid(),\n list = $(\"\").addClass(cssClasses.list);\n\n that.list = list.appendTo(popup);\n\n that.list.attr(ID, id + \"_buttonmenu\");\n\n items.forEach(that._renderListItem.bind(that));\n },\n\n _renderListItem: function(item) {\n var that = this,\n id, menuItem;\n\n item = extend({}, baseItem, item, {\n enabled: item.enable && item.enabled // backward compatibility: support both enable and enabled options.\n });\n\n id = item.id || kendo.guid();\n menuItem = $(\"
  • \" + that._renderItemButton(item) + \"
  • \");\n\n if (item.click) {\n that._clickHandlers[id] = item.click;\n }\n\n if (item.attributes) {\n menuItem.attr(item.attributes);\n }\n\n if (item.data && kendo.isFunction(item.data)) {\n menuItem.data(item.data(item));\n }\n\n that.list.append(menuItem);\n\n that.enable(item.enabled, menuItem);\n that._hide(item.hidden, menuItem);\n },\n\n _renderItemButton: function(item) {\n var that = this,\n options = that.options;\n\n if (options.itemTemplate) {\n return kendo.template(options.itemTemplate)(item);\n }\n\n if (item.url) {\n return kendo.template(LINK_TEMPLATE)(item);\n } else {\n return kendo.template(ITEM_TEMPLATE)(item);\n }\n },\n\n _initPopup: function() {\n var that = this,\n options = that.options;\n\n that._popup = new ui.Popup(that.element, extend({}, options.popup, {\n anchor: that.mainButton,\n isRtl: that._isRtl,\n toggleTarget: options.toggleTarget,\n copyAnchorStyles: false,\n animation: options.animation,\n open: that._popupOpenHandler.bind(that),\n close: that._popupCloseHandler.bind(that),\n activate: that._popupExpandHandler.bind(that)\n }));\n },\n\n _popupOpenHandler: function(ev) {\n var that = this;\n\n var isDefaultPrevented = that.trigger(OPEN);\n\n if (isDefaultPrevented) {\n ev.preventDefault();\n return;\n }\n\n that.list.find(DOT + cssClasses.menuItem).attr(TABINDEX, 0);\n },\n\n _popupCloseHandler: function(ev) {\n var that = this,\n isDefaultPrevented = that.trigger(CLOSE);\n\n if (isDefaultPrevented) {\n ev.preventDefault();\n }\n\n that.list.find(DOT + cssClasses.menuItem).attr(TABINDEX, -1);\n },\n\n _popupExpandHandler: function() {\n var that = this;\n\n that.list.find(\":kendoFocusable\").first().trigger(FOCUS);\n },\n\n adjustPopupWidth: function(width) {\n var that = this;\n\n that.element.addClass(\"k-split-wrapper\");\n\n that.element.css({\n \"min-width\": width\n });\n },\n\n _attachEvents: function() {\n var that = this;\n\n that.list\n .on(CLICK + NS, DOT + cssClasses.menuItem, that._click.bind(that))\n .on(KEYDOWN + NS, DOT + cssClasses.menuItem, that.listItemKeydown.bind(that));\n\n that.mainButton\n .on(KEYDOWN + NS, that._keydown.bind(that));\n },\n\n _keydown: function(ev) {\n var that = this;\n\n if ($(ev.target).is(DOT + DISABLEDSTATE) || $(ev.target).parents(DOT + DISABLEDSTATE).length) {\n return;\n }\n\n if (ev.altKey && ev.keyCode === keys.DOWN) {\n that._popup.open();\n ev.preventDefault();\n return;\n }\n },\n\n listItemKeydown: function(ev) {\n var that = this,\n li = $(ev.target);\n\n ev.preventDefault();\n\n if (ev.keyCode === keys.ESC || ev.keyCode === keys.TAB || (ev.altKey && ev.keyCode === keys.UP)) {\n that._popup.close();\n that.mainButton.trigger(FOCUS);\n } else if (ev.keyCode === keys.DOWN) {\n findFocusableSibling(li, NEXT).trigger(FOCUS);\n } else if (ev.keyCode === keys.UP) {\n findFocusableSibling(li, PREV).trigger(FOCUS);\n } else if (!li.is(DOT + DISABLEDSTATE) && (ev.keyCode === keys.SPACEBAR || ev.keyCode === keys.ENTER)) {\n li.trigger(CLICK);\n } else if (ev.keyCode === keys.HOME) {\n that.list.find(\":kendoFocusable\")\n .filter(DOT + cssClasses.menuItem)\n .first().trigger(FOCUS);\n } else if (ev.keyCode === keys.END) {\n that.list.find(\":kendoFocusable\")\n .filter(DOT + cssClasses.menuItem)\n .last().trigger(FOCUS);\n }\n },\n\n _click: function(ev) {\n var that = this,\n target = $(ev.target).closest(DOT + cssClasses.menuItem),\n id = target.attr(ID);\n\n if (that._clickHandlers[id]) {\n that._clickHandlers[id](ev);\n }\n\n that.trigger(MENU_CLICK, { id: id, target: target, type: \"menu-click\", originalEvent: ev });\n },\n\n toggle: function() {\n this._popup.toggle();\n },\n\n enable: function(enable, items) {\n var that = this;\n\n if (!items || !items.length) {\n items = that.items();\n } else {\n items = that.list.find(items);\n }\n\n items.toggleClass(DISABLEDSTATE, !enable);\n\n if (enable) {\n items.removeAttr(ARIA_DISABLED);\n } else {\n items.attr(ARIA_DISABLED, !enable);\n }\n },\n\n\n _hide: function(hidden, items) {\n var that = this;\n\n if (!items || !items.length) {\n items = that.items();\n } else {\n items = that.list.find(items);\n }\n\n items.toggleClass(HIDDEN, hidden);\n },\n\n hide: function(items) {\n this._hide(true, items);\n },\n\n show: function(items) {\n this._hide(false, items);\n },\n\n close: function() {\n this._popup.close();\n },\n\n items: function() {\n return this.list.children(DOT + cssClasses.menuItem);\n },\n\n destroyPopup: function() {\n var that = this;\n\n if (that._popup) {\n that._popup.destroy();\n that._popup = null;\n\n that.list.off(NS);\n that.list.remove();\n that.list = null;\n }\n },\n\n destroy: function() {\n var that = this;\n\n delete that._clickHandlers;\n\n that.destroyPopup();\n that.mainButton.off(NS);\n Widget.fn.destroy.call(that);\n }\n });\n\n kendo.cssProperties.registerPrefix(\"ButtonMenu\", \"k-menu-group-\");\n\n ui.plugin(ButtonMenu);\n\n })(window.kendo.jQuery);\n\n}));\n"]}