import { getTemplate, getUiOptions, isFixedItems, ArrayFieldTemplateProps, ArrayFieldItemTemplateType, FormContextType, RJSFSchema, StrictRJSFSchema, UI_OPTIONS_KEY, buttonId, } from '@snups/rjsf-utils'; import { Fieldset } from 'primereact/fieldset'; import AddButton from '../AddButton'; /** 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 { uiSchema, idSchema, canAdd, className, disabled, items, onAddClick, readonly, schema, title, registry, required, ...rest } = 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, ); return ( <>
(schema) ? '' : ' sortable-form-fields'}`} >
{items && items.map(({ key, uiSchema: itemUiSchema = {}, ...props }: ArrayFieldItemTemplateType) => { const mergedUiSchema = { ...itemUiSchema, [UI_OPTIONS_KEY]: { ...itemUiSchema[UI_OPTIONS_KEY], }, }; return ; })}
{canAdd && (
(idSchema, 'add')} className='rjsf-array-item-add' onClick={onAddClick} disabled={disabled || readonly} uiSchema={uiSchema} registry={registry} />
)}
); }