UNPKG

@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.19 kB
!function(e){"function"==typeof define&&define.amd?define(["kendo.core.min","kendo.togglebutton.min","kendo.button.min"],e):e()}((function(){var e,t,n,o,i,s,d,l,r,u,a,c,h,f,g,b,m,p;e=window.kendo.jQuery,t=window.kendo,n=t.ui,o=n.Widget,i=n.ToggleButton,s=n.Button,d=t.keys,l=".kendoButtonGroup",r="k-selected",u="k-disabled",a="select",c="aria-disabled",h=".",f="none",g="single",b="multiple",m="focus",p=o.extend({init:function(e,t){var n=this;o.fn.init.call(n,e,t),n.wrapper=n.element,n._buttons=n._renderItems(n.options.items),n.selectedIndices=[],n.element.addClass("k-widget k-button-group").attr("role","group"),n._enable=!0,n.options.enable&&n.options.enabled||(n._enable=!1,n.element.attr(c,!0).addClass(u),n._buttons.forEach((function(e){e.enable(!1)}))),n.options.selection!==f&&n.select(n.options.index),n._attachEvents()},events:[a],options:{name:"ButtonGroup",selection:g,index:-1,enable:!0,enabled:!0,preventKeyNav:!1,size:"medium",rounded:"medium",fillMode:"solid",themeColor:"base"},badge:function(e,n){var o,i,s=this.element,d=isNaN(e)?s.find(e).getKendoToggleButton()||s.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,i=o.element,o.destroy(),void i.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(".k-button").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(c,!e).toggleClass(u,!e),this._buttons.forEach((function(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&&void 0!==t&&-1!==t&&(o="number"==typeof t?t:t.nodeType?(t=e(t)).index():t.index(),n._buttons[o]&&(n.options.selection===b?t.length>1?t.each((function(t,o){var i=e(o).index();n._buttons[i].toggle(),n._toggleIndex(i)})):(n._buttons[o].toggle(),n._toggleIndex(o)):n._resetIndexes(o)))},_addButton:function(e,t){if(this.options.selection===f)return delete t.selected,new s(e,t);var n=new i(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),i=o.find(".k-button"),s=o.find(":focus"),l=i.index(s),r=t.support.isRtl(this.element);n.keyCode===d.LEFT&&!r||n.keyCode===d.RIGHT&&r?((0===l?i.eq(i.length-1):e(i[l-1])).trigger(m),n.preventDefault()):(n.keyCode===d.LEFT&&r||n.keyCode===d.RIGHT&&!r)&&((l+1===i.length?i.eq(0):e(i[l+1])).trigger(m),n.preventDefault())},_renderItems:function(n){var o=this,i=o.options,s=o.element.children(),d=[];return s.length>0&&s.each((function(){var n=e(this),s=n.find("img").addClass("k-image"),l=n.is("[disabled]")||n.hasClass(u),a={badge:t.attrValue(n,"badge"),icon:s[0]?null:t.attrValue(n,"icon"),disabled:l,selected:!l&&n.is(h+r),size:i.size,rounded:i.rounded,fillMode:i.fillMode,themeColor:i.themeColor};d.push(o._addButton(n,a))})),n?(n.forEach((function(n){var s=n.text?!1===n.encoded?n.text:t.htmlEncode(n.text):"",l=n.url?e("<a href="+n.url+">"):e("<button>");l.text(s),n.attributes&&l.attr(n.attributes),n=e.extend({},n,{size:i.size,rounded:i.rounded,fillMode:i.fillMode,themeColor:i.themeColor}),l.appendTo(o.element),d.push(o._addButton(l,n))})),d):d},_resetIndexes:function(e){this.selectedIndices=[],this._buttons.forEach((function(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+u)&&(t===b?this._toggleIndex(n):t===g&&this._resetIndexes(n),this.trigger(a,{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(p)})); //# sourceMappingURL=kendo.buttongroup.min.js.map