import { FormContextType, ObjectFieldTemplateProps, ObjectFieldTemplatePropertyType, RJSFSchema, StrictRJSFSchema, canExpand, descriptionId, getTemplate, getUiOptions, titleId, } from '@rjsf/utils'; import { Container, Box, SimpleGrid, MantineSpacing } from '@mantine/core'; export default function ObjectFieldTemplate< T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any >(props: ObjectFieldTemplateProps) { const { title, description, disabled, properties, onAddClick, readonly, required, schema, uiSchema, idSchema, formData, registry, } = props; const uiOptions = getUiOptions(uiSchema); const TitleFieldTemplate = getTemplate<'TitleFieldTemplate', T, S, F>('TitleFieldTemplate', registry, uiOptions); const DescriptionFieldTemplate = getTemplate<'DescriptionFieldTemplate', T, S, F>( 'DescriptionFieldTemplate', registry, uiOptions ); // Button templates are not overridden in the uiSchema const { ButtonTemplates: { AddButton }, } = registry.templates; const gridCols = (typeof uiOptions?.gridCols === 'number' && uiOptions?.gridCols) || undefined; const gridSpacing = uiOptions?.gridSpacing; const gridVerticalSpacing = uiOptions?.gridVerticalSpacing; return ( {title && ( (idSchema)} title={title} required={required} schema={schema} uiSchema={uiSchema} registry={registry} /> )} {description && ( (idSchema)} description={description} schema={schema} uiSchema={uiSchema} registry={registry} /> )} {properties .filter((e) => !e.hidden) .map((element: ObjectFieldTemplatePropertyType) => ( {element.content} ))} {canExpand(schema, uiSchema, formData) && ( )} ); }