@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.08 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.html.button.js"),require("kendo.button.menu.js")):"function"==typeof define&&define.amd?define(["exports","kendo.html.button","kendo.button.menu"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Splitbutton={}))}(this,(function(e){!function(e){var t=window.kendo,n=t.ui.Widget,o=".kendoSplitButton",i=t.ui,r=e.extend,s=t.html,a=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",k="focus",w="k-split-button k-button-group",v=n.extend({init:function(o,i){var r=this;(i=i||{}).enabled=!1!==i.enabled&&!e(o).prop(m),n.fn.init.call(r,o,i),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,o=(n.element.attr(u)||t.guid())+"_wrapper";n.wrapper=n.element.wrap('<div id="'+o+'" class="'+w+'"></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,s.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,delete t.iconClass,s.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),o=e("<div></div>");delete n.click,delete n.name,n.items.length&&(t.menu=o.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=a(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(k))},_attachEvents:function(){var e=this;e.element.on(b+o,e._click.bind(e)),e.element.on("keydown"+o,e._keydown.bind(e)),e.element.on(k+o,e._focus.bind(e)),e.element.on("blur"+o,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"),o=n.attr(u),i=t;"menu-click"===t.type&&(o=t.id,n=t.target,i=t.originalEvent),this.menu.close(),this.trigger(b,{id:o,target:n,originalEvent:i})},_keydown:function(e){!this.element.is("."+f)||e.keyCode!==l.ENTER&&e.keyCode!==l.SPACEBAR||e.preventDefault()},focus:function(){this.element.trigger(k)},_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 o=this;undefined===e&&(e=!0),t&&t.length?o.menu.enable(e,t):(o.options.enabled=e,o._enable(e,n),o.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&&e.menu.destroy(),e.element.off(o),n.fn.destroy.call(e)}});t.cssProperties.registerPrefix("SplitButton","k-splitbutton-"),t.cssProperties.registerValues("SplitButton",[{prop:"rounded",values:t.cssProperties.roundedValues.concat([["full","full"]])}]),i.plugin(v)}(window.kendo.jQuery);var t=kendo;e.__meta__={id:"splitbutton",name:"SplitButton",category:"web",description:"The SplitButton allows the user to execute a default action which is bound to a Button or to choose a predefined action from a drop-down list.",depends:["button.menu","html.button"]},e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=kendo.splitbutton.min.js.map