monday-ui-react-core
Version:
Official monday.com UI resources for application development in React.js
3 lines (2 loc) • 1.92 kB
JavaScript
import{defineProperty as e}from"../../../_virtual/_rollupPluginBabelHelpers.js";import t from"classnames";import a,{forwardRef as o,useRef as i,useCallback as l,useMemo as s}from"react";import r from"../../hooks/useMergeRef.js";import n from"../Clickable/Clickable.js";import d from"../Text/Text.js";import{backwardCompatibilityForProperties as m}from"../../helpers/backwardCompatibilityForProperties.js";import c from"../Tooltip/Tooltip.js";import{getTestId as p,ComponentDefaultTestId as u}from"../../tests/testIds.js";import f from"./RadioButton.module.scss.js";var b=o((function(o,b){var v=o.className,C=o.componentClassName,T=o.text,N=void 0===T?"":T,h=o.value,k=void 0===h?"":h,j=o.name,E=void 0===j?"":j,O=o.labelClassName,B=o.radioButtonClassName,R=o.disabled,_=void 0!==R&&R,x=o.autoFocus,A=o.disabledReason,I=o.defaultChecked,y=void 0!==I&&I,g=o.children,L=o.onSelect,D=o.checked,F=o.retainChildClick,P=void 0===F||F,U=o.childrenTabIndex,w=void 0===U?"0":U,H=o.noLabelAnimation,M=void 0!==H&&H,S=o.id,X=o["data-testid"],q=i(),z=r(b,q),G=m([v,C]),J=l((function(){!_&&P&&(q.current&&(q.current.checked=!0),L&&L(null))}),[L,q,_,P]),K=s((function(){return void 0!==D?{checked:D}:{defaultChecked:y}}),[D,y]);return a.createElement(c,{content:_?A:null},a.createElement("label",{"data-testid":X||p(u.RADIO_BUTTON,S),className:t(f.radioButton,G,e(e({},f.disabled,_),"disabled",_))},a.createElement("span",{className:t(f.inputContainer)},a.createElement("input",Object.assign({className:t(f.input),type:"radio",value:k,name:E,autoFocus:x,disabled:_},K,{onChange:L,ref:z})),a.createElement("span",{"data-testid":p(u.RADIO_BUTTON_CONTROL,S),className:t(f.control,B,e({},f.labelAnimation,!M))})),N&&a.createElement(d,{element:"span",type:d.types.TEXT2,className:O,"data-testid":p(u.RADIO_BUTTON_LABEL,S)},N),g&&a.createElement(n,{onClick:J,tabIndex:w},g)))}));export{b as default};
//# sourceMappingURL=RadioButton.js.map