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) • 3.36 kB
JavaScript
import*as e from"react";import{Tooltip as t}from"primereact/tooltip";import{ObjectUtils as n,DomHandler as r,classNames as a}from"primereact/utils";function o(){return o=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},o.apply(this,arguments)}function i(e){if(Array.isArray(e))return e}function l(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,a,o=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(r=n.next()).done)&&(o.push(r.value),!t||o.length!==t);i=!0);}catch(e){l=!0,a=e}finally{try{i||null==n.return||n.return()}finally{if(l)throw a}}return o}}function u(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 c(e,t){if(e){if("string"==typeof e)return u(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)?u(e,t):void 0}}function d(){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 s=e.memo(e.forwardRef((function(u,f){var p,m,b=e.useState(!1),h=(m=2,i(p=b)||l(p,m)||c(p,m)||d()),v=h[0],y=h[1],g=e.useRef(null),k=e.useRef(u.inputRef),E=function(e){R(e)},R=function(e){if(!u.disabled&&u.onChange){var t=u.checked,n=e.target instanceof HTMLDivElement;if(e.target===k.current&&e.target.checked!==t||n&&!e.target.checked){var a=!t;u.onChange({originalEvent:e,value:u.value,checked:a,stopPropagation:function(){},preventDefault:function(){},target:{type:"radio",name:u.name,id:u.id,value:u.value,checked:a}})}r.focus(k.current),e.preventDefault()}};e.useEffect((function(){k.current&&(k.current.checked=u.checked)}),[u.checked]),e.useEffect((function(){n.combinedRefs(k,u.inputRef)}),[k,u.inputRef]),e.useImperativeHandle(f,(function(){return{props:u,select:E,getElement:function(){return g.current},getInput:function(){return k.current}}}));var I=n.isNotEmpty(u.tooltip),O=n.findDiffKeys(u,s.defaultProps),A=n.reduceKeys(O,r.ARIA_PROPS),N=a("p-radiobutton p-component",{"p-radiobutton-checked":u.checked,"p-radiobutton-disabled":u.disabled,"p-radiobutton-focused":v},u.className),S=a("p-radiobutton-box",{"p-highlight":u.checked,"p-disabled":u.disabled,"p-focus":v});return e.createElement(e.Fragment,null,e.createElement("div",o({ref:g,id:u.id,className:N,style:u.style},O,{onClick:R}),e.createElement("div",{className:"p-hidden-accessible"},e.createElement("input",o({ref:k,id:u.inputId,type:"radio",name:u.name,defaultChecked:u.checked,onFocus:function(){y(!0)},onBlur:function(){y(!1)},onKeyDown:function(e){"Space"===e.code&&R(e)},disabled:u.disabled,required:u.required,tabIndex:u.tabIndex},A))),e.createElement("div",{className:S},e.createElement("div",{className:"p-radiobutton-icon"}))),I&&e.createElement(t,o({target:g,content:u.tooltip},u.tooltipOptions)))})));s.displayName="RadioButton",s.defaultProps={__TYPE:"RadioButton",id:null,inputRef:null,inputId:null,name:null,value:null,checked:!1,style:null,className:null,disabled:!1,required:!1,tabIndex:null,tooltip:null,tooltipOptions:null,onChange:null};export{s as RadioButton};