@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) • 4.47 kB
JavaScript
!function(e){"function"==typeof define&&define.amd?define(["kendo.html.button.min","kendo.button.menu.min"],e):e()}((function(){var e,t,n,i,o,r,a,s,l,u,d,p,c,m,f,h,b,_,g,w,v,k;e=window.kendo.jQuery,t=window.kendo,n=t.ui.Widget,i=".kendoSplitButton",o=t.ui,r=e.extend,a=t.html,s=t._outerWidth,l=t.keys,u="id",d="aria-disabled",p="aria-label",c="aria-expanded",m="disabled",f="k-disabled",h="k-focus",b="click",_="open",g="close",w="focus",v="k-split-button k-button-group",k=n.extend({init:function(i,o){var r=this;o.enabled=!1!==o.enabled&&!e(i).prop(m),n.fn.init.call(r,i,o),r._wrapper(),r._renderButtons(),r._renderMenu(),r._enable(r.options.enabled),r._aria(),r._attachEvents(),t.notify(r),r._applyCssClasses()},options:{name:"SplitButton",enabled:!0,items:[],rounded:"medium",size:"medium",fillMode:"solid",themeColor:"base",icon:null,popup:null,arrowIcon:"caret-alt-down",messages:{labelSuffix:"splitbutton"}},events:[b,_,g],_wrapper:function(){var n=this,i=(n.element.attr(u)||t.guid())+"_wrapper";n.wrapper=n.element.wrap('<div id="'+i+'" class="'+v+'"></div>').parent(".k-split-button"),n.arrowButton=e('<button tabindex="-1" aria-label="arrow-button" class="k-split-button-arrow"></button>').appendTo(n.wrapper)},_applyCssClasses:function(){this.wrapper.addClass(this._getAppearanceClasses())},_clearCssClasses:function(){this.wrapper.removeClass(this._getAppearanceClasses())},_getAppearanceClasses:function(){var e=this.__proto__.options.name;return t.cssProperties.getValidClass({widget:e,propName:"rounded",value:this.options.rounded})},_renderButtons:function(){this._mainButton(),this._arrowButton()},_mainButton:function(){var e=this,t=r({},e.options,{type:e.element.attr("type")||"button"});delete t.click,a.renderButton(e.element,t)},_arrowButton:function(){var e=this,t=r({},e.options,{type:"button",icon:e.options.arrowIcon});delete t.text,delete t.imageUrl,delete t.click,a.renderButton(e.arrowButton,t)},_aria:function(){var e=this,t=e.element,n=e.menu;t.attr("aria-haspopup",n?"menu":null),t.attr(c,!n&&null),t.attr("aria-controls",n?n.list.attr(u):null),t.attr(p)||t.attr(p,t.text()+" "+e.options.messages.labelSuffix)},_renderMenu:function(){var t=this,n=r({},t.options),i=e("<div></div>");delete n.click,delete n.name,n.items.length&&(t.menu=i.appendTo(t.wrapper).kendoButtonMenu(r({mainButton:t.element,toggleTarget:t.arrowButton,menuOpen:t.menuOpenHandler.bind(t),menuClose:t.menuCloseHandler.bind(t),menuClick:t._click.bind(t)},n)).data("kendoButtonMenu"))},menuOpenHandler:function(e){var t=this,n=s(t.wrapper);t.trigger(_,{target:t.element})?e.preventDefault():(e.sender.adjustPopupWidth(n),t.element.attr(c,!0))},menuCloseHandler:function(e){var t=this;t.trigger(g,{target:t.element})?e.preventDefault():(t.element.attr(c,!1),t.element.trigger(w))},_attachEvents:function(){var e=this;e.element.on(b+i,e._click.bind(e)),e.element.on("keydown"+i,e._keydown.bind(e)),e.element.on(w+i,e._focus.bind(e)),e.element.on("blur"+i,e._blur.bind(e))},_focus:function(){this.wrapper.addClass(h)},_blur:function(){this.wrapper.removeClass(h)},_click:function(t){var n=e(t.target).closest(".k-button"),i=n.attr(u),o=t;"menu-click"===t.type&&(i=t.id,n=t.target,o=t.originalEvent),this.menu.close(),this.trigger(b,{id:i,target:n,originalEvent:o})},_keydown:function(e){!this.element.is(".k-disabled")||e.keyCode!==l.ENTER&&e.keyCode!==l.SPACEBAR||e.preventDefault()},focus:function(){this.element.trigger(w)},_enable:function(e,t){this.element.add(this.arrowButton).toggleClass(f,!e),e?this.element.removeAttr(d):this.element.attr(d,!e),t||this.element.attr(m,!e),this.arrowButton.attr(m,!e)},enable:function(e,t,n){var i=this;void 0===e&&(e=!0),t&&t.length?i.menu.enable(e,t):(i.options.enabled=e,i._enable(e,n),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 t=this;n.fn.setOptions.call(t,e),(e.popup||e.items||e.size)&&(t.menu.destroy(),t._renderMenu()),t._renderButtons(),t._aria()},destroy:function(){var e=this;e.menu.destroy(),e.element.off(i),n.fn.destroy.call(e)}}),t.cssProperties.registerPrefix("SplitButton","k-splitbutton-"),t.cssProperties.registerValues("SplitButton",[{prop:"rounded",values:t.cssProperties.roundedValues.concat([["full","full"]])}]),o.plugin(k)}));
//# sourceMappingURL=kendo.splitbutton.min.js.map