@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.05 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("kendo.core.js"),require("kendo.togglebutton.js"),require("kendo.button.js")):"function"==typeof define&&define.amd?define(["exports","kendo.core.min","kendo.togglebutton","kendo.button"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Buttongroup={}))}(this,(function(e){!function(e){var t=window.kendo,n=t.ui,o=n.Widget,s=n.ToggleButton,i=n.Button,d=t.keys,l=".kendoButtonGroup",u="k-button",r="k-selected",a="k-disabled",c="select",g="aria-disabled",h=".",f="none",b="single",p="multiple",m="focus",_=o.extend({init:function(e,t){var n=this;o.fn.init.call(n,e,t),n.wrapper=n.element,n.selectedIndices=[],n._buttons=n._renderItems(n.options.items);const s=t&&t.fillMode?t.fillMode:"solid";n.element.addClass(" k-button-group k-button-group-"+s).attr("role","group"),n._enable=!0,n.options.enable&&n.options.enabled||(n._enable=!1,n.element.attr(g,!0).addClass(a),n._buttons.forEach((e=>{e.enable(!1)}))),n.options.selection!==f&&n.select(n.options.index),n._attachEvents()},events:[c],options:{name:"ButtonGroup",selection:b,index:-1,enable:!0,enabled:!0,preventKeyNav:!1,size:"medium",rounded:"medium",fillMode:"solid",themeColor:"base"},badge:function(e,n){var o,s,i=this.element,d=isNaN(e)?i.find(e).getKendoToggleButton()||i.find(e).getKendoButton():this._buttons[e],l=n||0===n;if(d){if(!(o=d.badge)&&l)return d._badge({text:t.htmlEncode(n)}),t.htmlEncode(n);if(l)o.text(t.htmlEncode(n));else if(!1===n)return d.badge=null,s=o.element,o.destroy(),void s.empty().remove();return o?o.text():null}},current:function(){return this.element.find(h+r)},destroy:function(){var t=this;t.element.off(l),t.element.find(h+u).each((function(t,n){var o=e(n).getKendoToggleButton()||e(n).getKendoButton();o&&o.destroy()})),o.fn.destroy.call(t)},enable:function(e){void 0===e&&(e=!0),this.element.attr(g,!e).toggleClass(a,!e),this._buttons.forEach((t=>{var n=t.element.hasClass("k-focus")||t.element.is(":focus");t.enable(e),n&&t.element.removeAttr("disabled").addClass("k-focus").trigger("focus")})),this._enable=this.options.enable=e},select:function(t){var n=this,o=-1;this.options.selection!==f&&undefined!==t&&-1!==t&&(o="number"==typeof t?t:t.nodeType?(t=e(t)).index():t.index(),n._buttons[o]&&(n.options.selection===p?t.length>1?t.each(((t,o)=>{var s=e(o).index();n._buttons[s].toggle(),n._toggleIndex(s)})):(n._buttons[o].toggle(),n._toggleIndex(o)):n._resetIndexes(o)))},_addButton:function(e,t){if(this.options.selection===f||t.command&&!t.togglable)return delete t.selected,new i(e,t);var n=new s(e,t);return n.bind("toggle",this._select.bind(this,e)),n},_attachEvents:function(){this.options.preventKeyNav||this.element.on("keydown"+l,this._keyDown.bind(this))},_keyDown:function(n){var o=e(this.element),s=o.find(h+u),i=o.find(":focus"),l=s.index(i),r=t.support.isRtl(this.element);n.keyCode===d.LEFT&&!r||n.keyCode===d.RIGHT&&r?((0===l?s.eq(s.length-1):e(s[l-1])).trigger(m),n.preventDefault()):(n.keyCode===d.LEFT&&r||n.keyCode===d.RIGHT&&!r)&&((l+1===s.length?s.eq(0):e(s[l+1])).trigger(m),n.preventDefault())},_decorateButtons:function(t){t.length&&(e(t[0].element).addClass("k-group-start"),e(t[t.length-1].element).addClass("k-group-end"))},_renderItems:function(n){var o=this,s=o.options,i=o.element.children(),d=[];return i.length>0&&i.each((function(n){var i=e(this),l=i.find("img").addClass("k-image"),u=i.is("[disabled]")||i.hasClass(a),c={badge:t.attrValue(i,"badge"),icon:l[0]?null:t.attrValue(i,"icon"),disabled:u,selected:!u&&i.is(h+r),size:s.size,rounded:s.rounded,fillMode:s.fillMode,themeColor:s.themeColor};d.push(o._addButton(i,c)),c.selected&&o.selectedIndices.push(n)})),n?(n.forEach((function(n,i){var l=n.text?!1===n.encoded?n.text:t.htmlEncode(n.text):"",u=n.url?e("<a href="+t.sanitizeLink(n.url)+">"):e("<button>");u.html(l),n.attributes&&u.attr(n.attributes),n=e.extend({},n,{size:s.size,rounded:s.rounded,fillMode:s.fillMode,themeColor:s.themeColor}),u.appendTo(o.element),d.push(o._addButton(u,n)),n.selected&&o.selectedIndices.push(i)})),o._decorateButtons(d),d):(o._decorateButtons(d),d)},_resetIndexes:function(e){this.selectedIndices=[],this._buttons.forEach((e=>{e.toggle(!1)})),this._buttons[e].toggle(!0),this.selectedIndices.push(e)},_select:function(e){var t=this.options.selection,n=e.index();this._enable&&!e.is(h+a)&&(t===p?this._toggleIndex(n):t===b&&this._resetIndexes(n),this.trigger(c,{indices:this.selectedIndices,target:e}))},_toggleIndex:function(e){-1===this.selectedIndices.indexOf(e)?this.selectedIndices.push(e):this.selectedIndices.splice(this.selectedIndices.indexOf(e),1)}});n.plugin(_)}(window.kendo.jQuery);var t=kendo;e.__meta__={id:"buttongroup",name:"ButtonGroup",category:"web",description:"The Kendo ButtonGroup widget is a linear set of grouped buttons.",depends:["core","togglebutton","button"]},e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=kendo.buttongroup.min.js.map