react-forminate
Version:
React.js + Typescript package that creates dynamic UI forms based on the JSON schema
2 lines (1 loc) • 1.51 kB
JavaScript
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./index-BHL74Jf6.cjs"),i=require("./FieldComponents-TtYXly-g.cjs"),b=require("react"),v=l=>{const{eventHandlers:h,processedProps:e,fieldParams:o,fieldValue:d,isTouched:c,hasDefaultStyling:u=!0,fieldId:f,errors:E}=s.useField(l),r=e?.layout||"inline",S=!!E[f],m={...o,...h.htmlHandlers,"data-touched":c},x=(t,g)=>{const n=typeof t=="string",a=n?t:t.value,y=n?t:t.label,j=n?t:`${t.value}-${g}`,R=n?{}:t;return u?s.jsxRuntimeExports.jsxs(i.RadioLabel,{style:e?.itemsStyles,className:e?.itemsClassName,children:[s.jsxRuntimeExports.jsx(i.RadioInput,{...m,...R,value:a,checked:d===a}),s.jsxRuntimeExports.jsx(i.RadioLabelText,{children:y})]},j):s.jsxRuntimeExports.jsxs("label",{style:{display:"flex",alignItems:"center",gap:"8px",cursor:"pointer",...e?.itemsStyles},className:e?.itemsClassName,children:[s.jsxRuntimeExports.jsx("input",{type:"radio",...m,...R,value:a,checked:d===a,className:S?"error":""}),s.jsxRuntimeExports.jsx("span",{style:e.innerItemsStyles,className:e.innerItemsClassName,children:y})]},j)},p={"data-testid":o["data-testid"],"data-touched":c,style:e?.containerStyles};return u?s.jsxRuntimeExports.jsx(i.RadioContainer,{layout:r,...p,children:l.options?.map(x)}):s.jsxRuntimeExports.jsx("div",{...p,style:{display:"flex",flexDirection:r==="inline"?"row":"column",gap:r==="inline"?"24px":"8px",flexWrap:"wrap",...e?.containerStyles},children:l.options?.map(x)})},N=b.memo(v);exports.default=N;