@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines • 6.37 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.core.min.js`),require(`kendo.popup.min.js`),require(`kendo.icons.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.core.min`,`kendo.popup.min`,`kendo.icons.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.ButtonMenu={}),e.kendo._globals.Core,e.kendo._globals.Popup,e.kendo._globals.Icons))})(this,function(e,t,n,r){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let i={id:`button.menu`,name:`ButtonMenu`,category:`web`,description:`The popup Menu list part of the SplitButton and the DropDownButton`,depends:[`core`,`popup`,`icons`]};(function(e,t){var n=window.kendo,r=n.ui.Widget,i=`.kendoButtonMenu`,a=n.ui,o=n.keys,s=n.htmlEncode,c=n.sanitizeLink,l=e.extend,u=`.`,d=`id`,f=`next`,p=`prev`,m=`k-disabled`,h=`k-hidden`,g=`aria-disabled`,_=`menu`,v=`menuitem`,y=`tabindex`,b=`click`,x=`menuClick`,S=`menuOpen`,C=`menuClose`,w=`keydown`,T=`focus`,E={down:{origin:`bottom left`,position:`top left`},up:{origin:`top left`,position:`bottom left`}},D={popup:`k-menu-popup`,list:`k-menu-group`,listItem:`k-item k-menu-item`,menuItem:`k-menu-item`,itemText:`k-menu-link-text`,item:`k-link k-menu-link`,sprite:`k-sprite`,image:`k-image`,icon:`k-icon`},O={text:null,icon:null,url:null,attributes:null,enabled:!0,hidden:!1,id:null,imageUrl:null,spriteCssClass:null},k=({imageUrl:e})=>`${e?`<img alt="icon" class="${D.image}" src="${s(e)}" />`:``}`,A=({spriteCssClass:e})=>`${e?`<span class="${D.sprite} ${s(e)}"></span>`:``}`,j=({icon:e})=>`${e?n.ui.icon(s(e)):``}`,M=({text:e})=>`${e?`<span class="${D.itemText}">${s(e)}</span>`:``}`,N=({imageUrl:e,spriteCssClass:t,icon:n,text:r})=>`<span class="${D.item}">${k({imageUrl:e})}${A({spriteCssClass:t})}${j({icon:n})}${M({text:r})}</span>`,P=({url:e,imageUrl:t,spriteCssClass:n,icon:r,text:i,attributes:a})=>`<a href="${c(e)}" ${a&&a.target?`target="${a.target}"`:``} class="${D.item}">${k({imageUrl:t})}${A({spriteCssClass:n})}${j({icon:r})}${M({text:i})}</a>`;function F(t,n){var r=n===f?e.fn.next:e.fn.prev,i=n===f?e.fn.first:e.fn.last,a=r.call(t),o=`:kendoFocusable`;return a.length||(a=i.call(t.parent().find(u+D.menuItem))),a.is(o)||!a.length?a:a.find(o).length?i.call(a.find(o)):F(a,n)}var I=r.extend({init:function(e,t){var n=this;r.fn.init.call(n,e,t),n.mainButton=t.mainButton,n._clickHandlers={},n._renderList(),n._initPopup(),n._attachEvents(),n._applyCssClasses(n.list)},options:{name:`ButtonMenu`,direction:`down`,element:null,items:[],size:t},events:[x,S,C],_renderList:function(){var t=this,r=t.options.items,i=t.element.addClass(D.popup),a=t.mainButton.attr(d)||n.guid();t.list=e(`<ul role="`+_+`"></ul>`).addClass(D.list).appendTo(i),t.list.attr(d,a+`_buttonmenu`),r.forEach(t._renderListItem.bind(t)),t.list.find(u+D.menuItem+`:first-child`).addClass(`k-first`),t.list.find(u+D.menuItem+`:last-child`).addClass(`k-last`)},_renderListItem:function(t){var r=this,i=t.attributes?t.attributes.id:null,a,o;t=l({},O,t,{enabled:t.enable&&t.enabled}),a=t.id||i||n.guid(),o=e(`<li id="`+a+`" role="`+v+`" class="`+D.listItem+`">`+r._renderItemButton(t)+`</li>`),t.click&&(r._clickHandlers[a]=t.click),t.attributes&&(delete t.attributes.target,t.attributes.class&&(o.addClass(t.attributes.class),delete t.attributes.class),o.attr(t.attributes)),t.data&&n.isFunction(t.data)&&o.data(t.data(t)),r.list.append(o),r.enable(t.enabled,o),r._hide(t.hidden,o)},_renderItemButton:function(e){var t=this.options;return t.itemTemplate?n.template(t.itemTemplate)(e):e.url?n.template(P)(e):n.template(N)(e)},_initPopup:function(){var e=this,t=e.options,n=t.direction||`down`;e._popup=new a.Popup(e.element,l({},t.popup,{anchor:e.mainButton,isRtl:e._isRtl,toggleTarget:t.toggleTarget,copyAnchorStyles:!1,animation:t.animation,open:e._popupOpenHandler.bind(e),close:e._popupCloseHandler.bind(e),activate:e._popupExpandHandler.bind(e)},E[n]))},_popupOpenHandler:function(e){var t=this;if(t.trigger(S)){e.preventDefault();return}t.list.find(u+D.menuItem).attr(y,0)},_popupCloseHandler:function(e){var t=this;t.trigger(C)&&e.preventDefault(),t.list.find(u+D.menuItem).attr(y,-1)},_popupExpandHandler:function(){this.list.find(`:kendoFocusable`).first().trigger(T)},adjustPopupWidth:function(e){this.element.css({"min-width":e})},_attachEvents:function(){var e=this;e.list.on(b+i,u+D.menuItem,e._click.bind(e)).on(w+i,u+D.menuItem,e.listItemKeydown.bind(e)),e.mainButton.on(w+i,e._keydown.bind(e))},_keydown:function(t){var n=this;if(!(e(t.target).is(u+m)||e(t.target).parents(u+m).length)&&t.altKey&&t.keyCode===o.DOWN){n.open(),t.preventDefault();return}},listItemKeydown:function(t){var n=this,r=e(t.target);t.preventDefault(),t.keyCode===o.ESC||t.keyCode===o.TAB||t.altKey&&t.keyCode===o.UP?(n.close(),n.mainButton.trigger(T)):t.keyCode===o.DOWN?F(r,f).trigger(T):t.keyCode===o.UP?F(r,p).trigger(T):!r.is(u+m)&&(t.keyCode===o.SPACEBAR||t.keyCode===o.ENTER)?r.trigger(b):t.keyCode===o.HOME?n.list.find(`:kendoFocusable`).filter(u+D.menuItem).first().trigger(T):t.keyCode===o.END&&n.list.find(`:kendoFocusable`).filter(u+D.menuItem).last().trigger(T)},_click:function(t){var n=this,r=e(t.target).closest(u+D.menuItem),i=r.attr(d);n._clickHandlers[i]&&n._clickHandlers[i](t),n.trigger(x,{id:i,target:r,type:`menu-click`,originalEvent:t})},toggle:function(){this._popup.toggle()},enable:function(e,t){var n=this;t=!t||!t.length?n.items():n.list.find(t),t.toggleClass(m,!e),e?t.removeAttr(g):t.attr(g,!e)},_hide:function(e,t){var n=this;t=!t||!t.length?n.items():n.list.find(t),t.toggleClass(h,e)},hide:function(e){this._hide(!0,e)},show:function(e){this._hide(!1,e)},open:function(){this.items().length!==0&&this.items().filter(`:not(.${h})`).length!==0&&this._popup.open()},close:function(){this._popup.close()},items:function(){return this.list.children(u+D.menuItem)},destroyPopup:function(){var e=this;e._popup&&(e._popup.destroy(),e._popup=null,e.list.off(i),e.list.remove(),e.list=null)},destroy:function(){var e=this;delete e._clickHandlers,e.destroyPopup(),e.mainButton.off(i),r.fn.destroy.call(e)}});n.cssProperties.registerPrefix(`ButtonMenu`,`k-menu-group-`),a.plugin(I)})(window.kendo.jQuery);var a=kendo;e.__meta__=i,e.default=a});
//# sourceMappingURL=kendo.button.menu.min.js.map