@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
3 lines • 4.49 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`kendo.core.min.js`)):typeof define==`function`&&define.amd?define([`exports`,`kendo.core.min`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Segmentedbutton={}),e.kendo._globals.Core))})(this,function(e,t){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let n={id:`segmentedbutton`,name:`SegmentedButton`,category:`web`,description:`The SegmentedButton is an internal component that provides a segmented control UI.`,depends:[`core`]};(function(e,t){let n=window.kendo,r=n.htmlEncode,i=n.ui.Widget,a=`.kendoSegmentedButton`,o=`select`,s=`k-hover`,c=`k-focus`,l=`k-disabled`,u=`k-selected`,d=`.k-segmented-control-button`,f=i.extend({init:function(e,t){let r=this;i.fn.init.call(r,e,t),r._items=r.options.items||[],r._selectedValue=r.options.selected,r._createIconClassMap(),r._render(),r._bindEvents(),n.notify(r)},options:{name:`SegmentedButton`,items:[],selected:null,size:t,stretched:!1},events:[o],_createIconClassMap:function(){let e=this,t=e._items,n=e._iconClassMap=new Map;t.forEach(e=>{e.iconClassOnSelection&&n.set(e.value,e.iconClassOnSelection)})},_render:function(){let t=this,r=t.element,i=t._items,a=t.options.size||`medium`,o=n.cssProperties.sizeValues.find(([e])=>e===a),s=o?o[1]:`md`,c=t.options.stretched;r.addClass(`k-segmented-control k-segmented-control-${s}${c?` k-segmented-control-stretched`:``}`);let l=e(`<div>`).addClass(`k-segmented-control-thumb`);r.append(l),i.forEach((e,n)=>{let i=t._renderButton(e,n);r.append(i)}),t._calculateThumbPosition()},_renderButton:function(t,i){let a=this,o=t.value===a._selectedValue,s=t.disabled===!0,c=e(`<button>`).addClass(`k-segmented-control-button`).attr(`data-value`,t.value).attr(`data-button-index`,i).toggleClass(l,s).toggleClass(u,o&&!s).prop(`disabled`,s);if(t.icon){let r=e(n.html.renderIcon(t.icon,`k-segmented-control-button-icon k-icon`));if(o&&!s){let e=a._iconClassMap.get(t.value);r.addClass(e)}c.append(r)}if(t.text){let n=e(`<span>`).addClass(`k-segmented-control-button-text`).text(r(t.text));c.append(n)}return c},_calculateThumbPosition:function(){let t=this,r=t._selectedValue,i=n._outerWidth(t.element),a=t._items?.length||0;if(!i)return;let o=t.element.find(`button[data-value]`),s=o.filter(`[data-value=${r}]`),c=s.data(`button-index`),l=t.element.find(`.k-segmented-control-thumb`),u=n._outerWidth(s),d=0,f=0,p=0;if(t.options.stretched){let e=a-1-c;d=c*u,f=e*u,p=(i-a*u)/2}else{let t=0;o.each((r,i)=>{let a=e(i);t+=n._outerWidth(a),r<c&&(d+=n._outerWidth(a)),r>c&&(f+=n._outerWidth(a))}),p=(i-t)/2}l.css({left:d+p,right:f+p})},_bindEvents:function(){let t=this;t.element.on(`click`+a,d,function(n){let r=e(n.currentTarget);if(r.hasClass(l))return;let i=r.data(`value`);i!==t._selectedValue&&t.select(i)}).on(`mouseenter`+a,d,function(t){let n=e(t.currentTarget);n.hasClass(l)||n.addClass(s)}).on(`mouseleave`+a,d,function(t){e(t.currentTarget).removeClass(s)}).on(`focus`+a,d,function(t){let n=e(t.currentTarget);n.hasClass(l)||n.addClass(c)}).on(`blur`+a,d,function(t){e(t.currentTarget).removeClass(c)})},select:function(e){let n=this;if(e===t)return n._selectedValue;let r=n._items.find(t=>t.value===e);if(!r)return;let i={value:e,item:r};n.trigger(o,i)||(n._selectedValue=e,n._updateSelectedState())},_updateSelectedState:function(){let t=this,n=t.element.find(d),r=t._selectedValue;n.each((n,r)=>{let i=e(r);t._removeSelectionClasses(i)});let i=n.filter(`[data-value="${r}"]`);t._addSelectionClasses(i,r),t._calculateThumbPosition()},_addSelectionClasses:function(e,t){let n=this._iconClassMap.get(t);e.addClass(u);let r=e.find(`.k-icon`);r.length&&n&&r.addClass(n)},_removeSelectionClasses:function(e){let t=this,n=e.data(`value`),r=t._iconClassMap.get(n);e.removeClass(u);let i=e.find(`.k-icon`);i.length&&r&&i.removeClass(r)},value:function(e){let n=this;if(e===t)return n._selectedValue;n._selectedValue=e,n._updateSelectedState()},enable:function(e,t){let n=this,r=n.element.find(d).filter(`[data-value="${e}"]`);if(!r.length)return;let i=t!==!1,a=n._items.find(t=>t.value===e);a&&(a.disabled=!i),r.toggleClass(l,!i).prop(`disabled`,!i),i||r.removeClass(s+` k-focus`)},destroy:function(){let e=this;e.element.off(a),i.fn.destroy.call(e)}});n.ui.plugin(f)})(window.kendo.jQuery);var r=kendo;e.__meta__=n,e.default=r});
//# sourceMappingURL=kendo.segmentedbutton.min.js.map