kendo-ui-core
Version:
3 lines (2 loc) • 5.63 kB
JavaScript
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("kendo.core.js"),require("kendo.popup.js"),require("kendo.icons.js")):"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.popup.min","kendo.icons.min"],e):((t="undefined"!=typeof globalThis?globalThis:t||self).kendobutton=t.kendobutton||{},t.kendobutton.menu=t.kendobutton.menu||{},t.kendobutton.menu.js=e())}(this,(function(){return function(t,e){var n=window.kendo,i=n.ui.Widget,s=".kendoButtonMenu",o=n.ui,l=n.keys,a=n.htmlEncode,r=t.extend,u=".",d="id",p="next",c="k-disabled",f="k-hidden",m="aria-disabled",g="tabindex",k="click",h="menuClick",b="menuOpen",_="menuClose",C="keydown",y="focus",v={down:{origin:"bottom left",position:"top left"},up:{origin:"top left",position:"bottom left"}},$="k-menu-popup",x="k-menu-group",w="k-item k-menu-item",B="k-menu-item",E="k-menu-link-text",H="k-link k-menu-link",P="k-sprite",T="k-image",U={text:null,icon:null,url:null,attributes:null,enabled:!0,hidden:!1,id:null,imageUrl:null,spriteCssClass:null},j=({imageUrl:t})=>""+(t?`<img alt="icon" class="${T}" src="${a(t)}" />`:""),D=({spriteCssClass:t})=>""+(t?`<span class="${P} ${a(t)}"></span>`:""),I=({icon:t})=>`${t?n.ui.icon(a(t)):""}`,O=({text:t})=>""+(t?`<span class="${E}">${a(t)}</span>`:""),A=({imageUrl:t,spriteCssClass:e,icon:n,text:i})=>`<span class="${H}">${j({imageUrl:t})}${D({spriteCssClass:e})}${I({icon:n})}${O({text:i})}</span>`,F=({url:t,imageUrl:e,spriteCssClass:n,icon:i,text:s,attributes:o})=>`<a href="${a(t)}" ${o.target?`target="${o.target}"`:""} class="${H}">${j({imageUrl:e})}${D({spriteCssClass:n})}${I({icon:i})}${O({text:s})}</a>`;function K(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)):K(o,n)}var L=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:[h,b,_],_renderList:function(){var e=this,i=e.options.items,s=e.element.addClass($),o=e.mainButton.attr(d)||n.guid(),l=t('<ul role="menu"></ul>').addClass(x);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,l=e.attributes?e.attributes.id:null;i=(e=r({},U,e,{enabled:e.enable&&e.enabled})).id||l||n.guid(),s=t('<li id="'+i+'" role="menuitem" class="'+w+'">'+o._renderItemButton(e)+"</li>"),e.click&&(o._clickHandlers[i]=e.click),e.attributes&&(delete e.attributes.target,e.attributes.class&&(s.addClass(e.attributes.class),delete e.attributes.class),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(F)(t):n.template(A)(t)},_initPopup:function(){var t=this,e=t.options,n=e.direction||"down";t._popup=new o.Popup(t.element,r({},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)},v[n]))},_popupOpenHandler:function(t){this.trigger(b)?t.preventDefault():this.list.find(u+B).attr(g,0)},_popupCloseHandler:function(t){this.trigger(_)&&t.preventDefault(),this.list.find(u+B).attr(g,-1)},_popupExpandHandler:function(){this.list.find(":kendoFocusable").first().trigger(y)},adjustPopupWidth:function(t){this.element.css({"min-width":t})},_attachEvents:function(){var t=this;t.list.on(k+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(u+c)&&!t(e.target).parents(u+c).length)return e.altKey&&e.keyCode===l.DOWN?(this.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.close(),n.mainButton.trigger(y)):e.keyCode===l.DOWN?K(i,p).trigger(y):e.keyCode===l.UP?K(i,"prev").trigger(y):i.is(u+c)||e.keyCode!==l.SPACEBAR&&e.keyCode!==l.ENTER?e.keyCode===l.HOME?n.list.find(":kendoFocusable").filter(u+B).first().trigger(y):e.keyCode===l.END&&n.list.find(":kendoFocusable").filter(u+B).last().trigger(y):i.trigger(k)},_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(h,{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(m):e.attr(m,!t)},_hide:function(t,e){(e=e&&e.length?this.list.find(e):this.items()).toggleClass(f,t)},hide:function(t){this._hide(!0,t)},show:function(t){this._hide(!1,t)},open:function(){0!==this.items().length&&(0!==this.items().filter(`:not(.${f})`).length&&this._popup.open())},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(L)}(window.kendo.jQuery),kendo}));
//# sourceMappingURL=kendo.button.menu.min.js.map