@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) • 3.12 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["kendo.html.button.min","kendo.button.menu.min"],e):e()}((function(){var e,n,t,i,o,l,a,u,s,d,r,m,p,c,f,h,b,g,v,k,_;e=window.kendo.jQuery,n=window.kendo,t=n.ui.Widget,i=".kendoDropDownButton",o=n.ui,l=n.keys,a=e.extend,u=n.html,s=n._outerWidth,d="aria-disabled",r="aria-label",m="aria-expanded",p="disabled",c="k-disabled",f="click",h="open",b="close",g="focus",v="k-menu-button",k="k-dropdown-button",_=t.extend({init:function(i,o){var l=this;o.enabled=!1!==o.enabled&&!e(i).prop(p),t.fn.init.call(l,i,o),l.wrapper=l.element,l._mainButton(),l._renderMenu(),l._enable(l.options.enabled),l._aria(),l._attachEvents(),n.notify(l),l._applyCssClasses()},options:{name:"DropDownButton",direction:"down",enabled:!0,items:[],rounded:"medium",size:"medium",fillMode:"solid",themeColor:"base",icon:null,popup:null,messages:{labelSuffix:"dropdownbutton"}},events:[f,h,b],_mainButton:function(){var e=this,n=a({},e.options,{type:e.element.attr("type")||"button"});delete n.click,e.element.addClass(v).addClass(k),u.renderButton(e.element,n)},_aria:function(){var e=this,n=e.element,t=e.menu;n.attr("aria-haspopup",t?"menu":null),n.attr(m,!t&&null),n.attr("aria-controls",t?t.list.attr("id"):null),n.attr(r)||n.attr(r,n.text()+" "+e.options.messages.labelSuffix)},_renderMenu:function(){var n=this,t=a({},n.options),i=e("<div></div>");delete t.click,delete t.name,t.items.length&&(n.menu=i.appendTo(document.body).kendoButtonMenu(a({mainButton:n.element,toggleTarget:n.element,menuOpen:n.menuOpenHandler.bind(n),menuClose:n.menuCloseHandler.bind(n),menuClick:n._click.bind(n)},t)).data("kendoButtonMenu"))},menuOpenHandler:function(e){var n=this,t=s(n.element);n.trigger(h,{target:n.element})?e.preventDefault():(e.sender.adjustPopupWidth(t),n.element.attr(m,!0))},menuCloseHandler:function(e){var n=this;n.trigger(b,{target:n.element})?e.preventDefault():(n.element.attr(m,!1),n.element.trigger(g))},_attachEvents:function(){var e=this;e.element.on("keydown"+i,e._keydown.bind(e))},_click:function(e){var n=e.id,t=e.target,i=e.originalEvent;this.menu.close(),this.trigger(f,{id:n,target:t,originalEvent:i})},_keydown:function(e){!this.element.is(".k-disabled")||e.keyCode!==l.ENTER&&e.keyCode!==l.SPACEBAR||e.preventDefault()},focus:function(){this.element.trigger(g)},_enable:function(e,n){this.element.toggleClass(c,!e),e?this.element.removeAttr(d):this.element.attr(d,!e),n||this.element.attr(p,!e)},enable:function(e,n,t){var i=this;void 0===e&&(e=!0),n&&n.length?i.menu.enable(e,n):(i.options.enabled=e,i._enable(e,t),i.menu.enable(e))},hide:function(e){e&&e.length&&this.menu.hide(e)},show:function(e){e&&e.length&&this.menu.show(e)},open:function(){this.menu._popup.open()},close:function(){this.menu._popup.close()},items:function(){return this.menu.items()},setOptions:function(e){var n=this;t.fn.setOptions.call(n,e),(e.popup||e.items||e.size)&&(n.menu.destroy(),n._renderMenu()),n._mainButton(),n._aria()},destroy:function(){var e=this;e.menu.destroy(),e.element.off(i),t.fn.destroy.call(e)}}),o.plugin(_)}));
//# sourceMappingURL=kendo.dropdownbutton.min.js.map