primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with Prime
2 lines (1 loc) • 2.11 kB
JavaScript
import*as e from"react";import{Ripple as n}from"primereact/ripple";import{Tooltip as t}from"primereact/tooltip";import{ObjectUtils as o,classNames as l,IconUtils as a}from"primereact/utils";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var n=1;n<arguments.length;n++){var t=arguments[n];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e},r.apply(this,arguments)}var c=e.memo(e.forwardRef((function(i,u){var p=e.useRef(null),s=i.onLabel&&i.onLabel.length>0&&i.offLabel&&i.offLabel.length>0,f=i.onIcon&&i.onIcon.length>0&&i.offIcon&&i.offIcon.length>0,d=s?i.checked?i.onLabel:i.offLabel:" ",m=i.checked?i.onIcon:i.offIcon,b=function(e){!i.disabled&&i.onChange&&i.onChange({originalEvent:e,value:!i.checked,stopPropagation:function(){},preventDefault:function(){},target:{name:i.name,id:i.id,value:!i.checked}})};e.useImperativeHandle(u,(function(){return{props:i,getElement:function(){return p.current}}}));var g=o.isNotEmpty(i.tooltip),h=!i.disabled&&i.tabIndex,v=o.findDiffKeys(i,c.defaultProps),I=l("p-button p-togglebutton p-component",{"p-button-icon-only":f&&!s,"p-highlight":i.checked,"p-disabled":i.disabled},i.className),y=function(){if(f){var e=l("p-button-icon p-c",{"p-button-icon-left":"left"===i.iconPos&&d,"p-button-icon-right":"right"===i.iconPos&&d});return a.getJSXIcon(m,{className:e},{props:i})}return null}();return e.createElement(e.Fragment,null,e.createElement("div",r({ref:p,id:i.id,className:I,style:i.style},v,{onClick:b,onFocus:i.onFocus,onBlur:i.onBlur,onKeyDown:function(e){32===e.keyCode&&(b(e),e.preventDefault())},tabIndex:h,role:"button","aria-pressed":i.checked}),y,e.createElement("span",{className:"p-button-label"},d),e.createElement(n,null)),g&&e.createElement(t,r({target:p,content:i.tooltip},i.tooltipOptions)))})));c.displayName="ToggleButton",c.defaultProps={__TYPE:"ToggleButton",id:null,onIcon:null,offIcon:null,onLabel:"Yes",offLabel:"No",iconPos:"left",style:null,className:null,checked:!1,tabIndex:0,tooltip:null,tooltipOptions:null,onChange:null,onFocus:null,onBlur:null};export{c as ToggleButton};