UNPKG

@progress/kendo-ui

Version:

This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.

3 lines (2 loc) 5.3 kB
!function(t){"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.popup.min","kendo.icons.min"],t):t()}((function(){!function(t,e){var n=window.kendo,i=n.ui.Widget,s=".kendoButtonMenu",o=n.ui,l=n.keys,r=n.htmlEncode,a=t.extend,u=".",d="id",p="next",c="k-disabled",f="aria-disabled",m="tabindex",g="click",k="menuClick",h="menuOpen",_="menuClose",C="keydown",v="focus",b={down:{origin:"bottom left",position:"top left"},up:{origin:"top left",position:"bottom left"}},y="k-menu-popup",w="k-group k-menu-group k-reset",x="k-item k-menu-item",B="k-menu-item",E="k-menu-link-text",H="k-link k-menu-link",P="k-sprite",U="k-image",D={text:null,icon:null,url:null,attributes:null,enabled:!0,hidden:!1,id:null,imageUrl:null,spriteCssClass:null},T=function(t){var e=t.imageUrl;return e?'<img alt="icon" class="'+U+'" src="'+r(e)+'" />':""},I=function(t){var e=t.spriteCssClass;return e?'<span class="'+P+" "+r(e)+'"></span>':""},O=function(t){var e=t.icon;return""+(e?n.ui.icon(r(e)):"")},A=function(t){var e=t.text;return e?'<span class="'+E+'">'+r(e)+"</span>":""},F=function(t){var e=t.imageUrl,n=t.spriteCssClass,i=t.icon,s=t.text;return'<span class="'+H+'">'+T({imageUrl:e})+I({spriteCssClass:n})+O({icon:i})+A({text:s})+"</span>"},K=function(t){var e=t.url,n=t.imageUrl,i=t.spriteCssClass,s=t.icon,o=t.text,l=t.attributes;return'<a href="'+r(e)+'" '+(l.target?'target="'+l.target+'"':"")+' class="'+H+'">'+T({imageUrl:n})+I({spriteCssClass:i})+O({icon:s})+A({text:o})+"</a>"};function L(e,n){var i=n===p?t.fn.next:t.fn.prev,s=n===p?t.fn.first:t.fn.last,o=i.call(e),l=":kendoFocusable";return o.length||(o=s.call(e.parent().find(u+B))),o.is(l)||!o.length?o:o.find(l).length?s.call(o.find(l)):L(o,n)}var M=i.extend({init:function(t,e){var n=this;i.fn.init.call(n,t,e),n.mainButton=e.mainButton,n._clickHandlers={},n._renderList(),n._initPopup(),n._attachEvents(),n._applyCssClasses(n.list)},options:{name:"ButtonMenu",direction:"down",element:null,items:[],size:"medium"},events:[k,h,_],_renderList:function(){var e=this,i=e.options.items,s=e.element.addClass(y),o=e.mainButton.attr(d)||n.guid(),l=t('<ul role="menu"></ul>').addClass(w);e.list=l.appendTo(s),e.list.attr(d,o+"_buttonmenu"),i.forEach(e._renderListItem.bind(e))},_renderListItem:function(e){var i,s,o=this;i=(e=a({},D,e,{enabled:e.enable&&e.enabled})).id||n.guid(),s=t('<li id="'+i+'" role="menuitem" class="'+x+'">'+o._renderItemButton(e)+"</li>"),e.click&&(o._clickHandlers[i]=e.click),e.attributes&&(delete e.attributes.target,s.attr(e.attributes)),e.data&&n.isFunction(e.data)&&s.data(e.data(e)),o.list.append(s),o.enable(e.enabled,s),o._hide(e.hidden,s)},_renderItemButton:function(t){var e=this.options;return e.itemTemplate?n.template(e.itemTemplate)(t):t.url?n.template(K)(t):n.template(F)(t)},_initPopup:function(){var t=this,e=t.options,n=e.direction||"down";t._popup=new o.Popup(t.element,a({},e.popup,{anchor:t.mainButton,isRtl:t._isRtl,toggleTarget:e.toggleTarget,copyAnchorStyles:!1,animation:e.animation,open:t._popupOpenHandler.bind(t),close:t._popupCloseHandler.bind(t),activate:t._popupExpandHandler.bind(t)},b[n]))},_popupOpenHandler:function(t){this.trigger(h)?t.preventDefault():this.list.find(u+B).attr(m,0)},_popupCloseHandler:function(t){this.trigger(_)&&t.preventDefault(),this.list.find(u+B).attr(m,-1)},_popupExpandHandler:function(){this.list.find(":kendoFocusable").first().trigger(v)},adjustPopupWidth:function(t){this.element.addClass("k-split-wrapper"),this.element.css({"min-width":t})},_attachEvents:function(){var t=this;t.list.on(g+s,u+B,t._click.bind(t)).on(C+s,u+B,t.listItemKeydown.bind(t)),t.mainButton.on(C+s,t._keydown.bind(t))},_keydown:function(e){if(!t(e.target).is(".k-disabled")&&!t(e.target).parents(".k-disabled").length)return e.altKey&&e.keyCode===l.DOWN?(this._popup.open(),void e.preventDefault()):void 0},listItemKeydown:function(e){var n=this,i=t(e.target);e.preventDefault(),e.keyCode===l.ESC||e.keyCode===l.TAB||e.altKey&&e.keyCode===l.UP?(n._popup.close(),n.mainButton.trigger(v)):e.keyCode===l.DOWN?L(i,p).trigger(v):e.keyCode===l.UP?L(i,"prev").trigger(v):i.is(".k-disabled")||e.keyCode!==l.SPACEBAR&&e.keyCode!==l.ENTER?e.keyCode===l.HOME?n.list.find(":kendoFocusable").filter(u+B).first().trigger(v):e.keyCode===l.END&&n.list.find(":kendoFocusable").filter(u+B).last().trigger(v):i.trigger(g)},_click:function(e){var n=this,i=t(e.target).closest(u+B),s=i.attr(d);n._clickHandlers[s]&&n._clickHandlers[s](e),n.trigger(k,{id:s,target:i,type:"menu-click",originalEvent:e})},toggle:function(){this._popup.toggle()},enable:function(t,e){(e=e&&e.length?this.list.find(e):this.items()).toggleClass(c,!t),t?e.removeAttr(f):e.attr(f,!t)},_hide:function(t,e){(e=e&&e.length?this.list.find(e):this.items()).toggleClass("k-hidden",t)},hide:function(t){this._hide(!0,t)},show:function(t){this._hide(!1,t)},close:function(){this._popup.close()},items:function(){return this.list.children(u+B)},destroyPopup:function(){var t=this;t._popup&&(t._popup.destroy(),t._popup=null,t.list.off(s),t.list.remove(),t.list=null)},destroy:function(){var t=this;delete t._clickHandlers,t.destroyPopup(),t.mainButton.off(s),i.fn.destroy.call(t)}});n.cssProperties.registerPrefix("ButtonMenu","k-menu-group-"),o.plugin(M)}(window.kendo.jQuery)})); //# sourceMappingURL=kendo.button.menu.min.js.map