import Box from '@mui/material/Box'; import Grid from '@mui/material/Grid'; import Paper from '@mui/material/Paper'; import { getTemplate, getUiOptions, ArrayFieldTemplateProps, ArrayFieldItemTemplateType, FormContextType, RJSFSchema, StrictRJSFSchema, buttonId, } from '@rjsf/utils'; /** The `ArrayFieldTemplate` component is the template used to render all items in an array. * * @param props - The `ArrayFieldItemTemplateType` props for the component */ export default function ArrayFieldTemplate< T = any, S extends StrictRJSFSchema = RJSFSchema, F extends FormContextType = any, >(props: ArrayFieldTemplateProps) { const { canAdd, disabled, idSchema, uiSchema, items, onAddClick, readonly, registry, required, schema, title } = props; const uiOptions = getUiOptions(uiSchema); const ArrayFieldDescriptionTemplate = getTemplate<'ArrayFieldDescriptionTemplate', T, S, F>( 'ArrayFieldDescriptionTemplate', registry, uiOptions, ); const ArrayFieldItemTemplate = getTemplate<'ArrayFieldItemTemplate', T, S, F>( 'ArrayFieldItemTemplate', registry, uiOptions, ); const ArrayFieldTitleTemplate = getTemplate<'ArrayFieldTitleTemplate', T, S, F>( 'ArrayFieldTitleTemplate', registry, uiOptions, ); // Button templates are not overridden in the uiSchema const { ButtonTemplates: { AddButton }, } = registry.templates; return ( {items && items.map(({ key, ...itemProps }: ArrayFieldItemTemplateType) => ( ))} {canAdd && ( (idSchema, 'add')} className='rjsf-array-item-add' onClick={onAddClick} disabled={disabled || readonly} uiSchema={uiSchema} registry={registry} /> )} ); }