react-forminate
Version:
React.js + Typescript package that creates dynamic UI forms based on the JSON schema
2 lines (1 loc) • 1.93 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-BHL74Jf6.cjs"),t=require("react"),C=t.memo(f=>{const{eventHandlers:a,processedProps:e,fieldParams:o,fieldValue:r,fieldId:l,isTouched:k,setValue:g}=n.useField(f),i=t.useMemo(()=>!e?.options,[e?.options]),m=t.useMemo(()=>e?.layout||"column",[e?.layout]),c=t.useMemo(()=>e?.singlePositiveAnswerValue||"true",[e?.singlePositiveAnswerValue]),y=t.useMemo(()=>e?.singleNegativeAnswerValue||"",[e?.singleNegativeAnswerValue]),v=t.useMemo(()=>({display:"flex",flexDirection:m==="inline"?"row":"column",gap:m==="inline"?"24px":"8px",flexWrap:"wrap",...e?.containerStyles}),[m,e?.containerStyles]),u=t.useMemo(()=>({display:"flex",alignItems:"center",gap:"4px",cursor:"pointer",...e?.itemsStyles}),[e?.itemsStyles]),d=t.useCallback(s=>i?r===c||r==="true":!!(s&&Array.isArray(r)&&r.includes(s)),[i,r,c]),b=t.useCallback(s=>{const x=s.target.checked?c:y;g(l,x)},[g,l,c,y]),S=t.useMemo(()=>i?n.jsxRuntimeExports.jsxs("label",{htmlFor:l,style:u,className:e?.itemsClassName,children:[n.jsxRuntimeExports.jsx("input",{...o,...a.htmlHandlers,id:l,type:"checkbox",checked:d(),onChange:b}),e?.description&&n.jsxRuntimeExports.jsx("span",{children:e.description})]}):null,[i,l,u,e?.itemsClassName,e?.description,o,a.htmlHandlers,d,b]),M=t.useMemo(()=>i||!e?.options?null:e.options.map((s,x)=>{const p=typeof s=="string",h=p?s:s.value,N=p?s:s.label,w=p?s:`${s.value}-${x}`,j=`${l}-item-${h}`;return n.jsxRuntimeExports.jsxs("label",{htmlFor:j,style:u,className:e.itemsClassName,children:[n.jsxRuntimeExports.jsx("input",{...o,...a.htmlHandlers,id:j,value:h,checked:d(h)}),n.jsxRuntimeExports.jsx("span",{children:N})]},w)}),[i,e?.options,e?.itemsClassName,l,u,o,a.htmlHandlers,d]);return n.jsxRuntimeExports.jsxs("div",{"data-testid":o["data-testid"],"data-touched":k,style:v,children:[S,M]})});C.displayName="CheckboxField";exports.default=C;