primereact
Version:
PrimeReact is an open source UI library for React featuring a rich set of 90+ 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) • 3.92 kB
JavaScript
import*as e from"react";import{useUpdateEffect as t}from"primereact/hooks";import{Tooltip as n}from"primereact/tooltip";import{ObjectUtils as r,DomHandler as o,classNames as l,IconUtils as a}from"primereact/utils";function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},c.apply(this,arguments)}function u(e){if(Array.isArray(e))return e}function i(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,o,l,a,c=[],u=!0,i=!1;try{if(l=(n=n.call(e)).next,0===t){if(Object(n)!==n)return;u=!1}else for(;!(u=(r=l.call(n)).done)&&(c.push(r.value),c.length!==t);u=!0);}catch(e){i=!0,o=e}finally{try{if(!u&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(i)throw o}}return c}}function s(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=new Array(t);n<t;n++)r[n]=e[n];return r}function f(e,t){if(e){if("string"==typeof e)return s(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?s(e,t):void 0}}function p(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var d={defaultProps:{__TYPE:"Checkbox",id:null,inputRef:null,inputId:null,value:null,name:null,checked:!1,trueValue:!0,falseValue:!1,style:null,className:null,disabled:!1,required:!1,readOnly:!1,tabIndex:null,icon:"pi pi-check",tooltip:null,tooltipOptions:null,onChange:null,onMouseDown:null,onContextMenu:null,children:void 0},getProps:function(e){return r.getMergedProps(e,d.defaultProps)},getOtherProps:function(e){return r.getDiffProps(e,d.defaultProps)}},m=e.memo(e.forwardRef((function(s,m){var h,b,y=d.getProps(s),g=e.useState(!1),v=(b=2,u(h=g)||i(h,b)||f(h,b)||p()),k=v[0],x=v[1],O=e.useRef(null),E=e.useRef(y.inputRef),P=function(e){if(!y.disabled&&!y.readOnly&&y.onChange){var t=I(),n=e.target instanceof HTMLDivElement||e.target instanceof HTMLSpanElement;if(e.target===E.current||n&&e.target.checked!==t){var r=t?y.falseValue:y.trueValue;y.onChange({originalEvent:e,value:y.value,checked:r,stopPropagation:function(){},preventDefault:function(){},target:{type:"checkbox",name:y.name,id:y.id,value:y.value,checked:r}})}o.focus(E.current),e.preventDefault()}},I=function(){return y.checked===y.trueValue};e.useImperativeHandle(m,(function(){return{props:y,focus:function(){return o.focus(E.current)},getElement:function(){return O.current},getInput:function(){return E.current}}})),e.useEffect((function(){r.combinedRefs(E,y.inputRef)}),[E,y.inputRef]),t((function(){E.current.checked=I()}),[y.checked,y.trueValue]);var C=I(),w=r.isNotEmpty(y.tooltip),M=d.getOtherProps(y),R=r.reduceKeys(M,o.ARIA_PROPS),S=l("p-checkbox p-component",{"p-checkbox-checked":C,"p-checkbox-disabled":y.disabled,"p-checkbox-focused":k},y.className),j=l("p-checkbox-box",{"p-highlight":C,"p-disabled":y.disabled,"p-focus":k}),A=a.getJSXIcon(C?y.icon:"",{className:"p-checkbox-icon p-c"},{props:y,checked:C});return e.createElement(e.Fragment,null,e.createElement("div",c({ref:O,id:y.id,className:S,style:y.style},M,{onClick:P,onContextMenu:y.onContextMenu,onMouseDown:y.onMouseDown}),e.createElement("div",{className:"p-hidden-accessible"},e.createElement("input",c({ref:E,type:"checkbox",id:y.inputId,name:y.name,tabIndex:y.tabIndex,defaultChecked:C,onFocus:function(){x(!0)},onBlur:function(){x(!1)},onKeyDown:function(e){"Space"!==e.code&&" "!==e.key||P(e)},disabled:y.disabled,readOnly:y.readOnly,required:y.required},R))),e.createElement("div",{className:j},A)),w&&e.createElement(n,c({target:O,content:y.tooltip},y.tooltipOptions)))})));m.displayName="Checkbox";export{m as Checkbox};