import type { FieldTemplateProps, FormContextType, RJSFSchema, StrictRJSFSchema } from '@rjsf/utils'; import { getTemplate, getUiOptions } from '@rjsf/utils'; import { Form } from 'semantic-ui-react'; import { getSemanticProps, MaybeWrap } from '../util'; /** The `FieldTemplate` component is the template used by `SchemaField` to render any field. It renders the field * content, (label, description, children, errors and help) inside of a `WrapIfAdditional` component. * * @param props - The `FieldTemplateProps` for this component */ export default function FieldTemplate< T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any, >(props: FieldTemplateProps) { const { id, children, classNames, style, displayLabel, label, errors, help, hidden, description, rawDescription, registry, schema, uiSchema, ...otherProps } = props; const semanticProps = getSemanticProps({ ...otherProps, formContext: registry.formContext, }); const { wrapLabel, wrapContent } = semanticProps; const uiOptions = getUiOptions(uiSchema); const WrapIfAdditionalTemplate = getTemplate<'WrapIfAdditionalTemplate', T, S, F>( 'WrapIfAdditionalTemplate', registry, uiOptions, ); if (hidden) { return
{children}
; } const isCheckbox = uiOptions.widget === 'checkbox'; return ( {children} {displayLabel && rawDescription && !isCheckbox && ( {description} )} {help} {errors} ); }