import ListMaterial, { ListProps } from '@material-ui/core/List'; import ListSubheader from '@material-ui/core/ListSubheader'; import React, { Children, ReactNode, cloneElement, isValidElement, } from 'react'; import { FieldProps, connectField, filterDOMProps } from 'uniforms'; import ListAddField from './ListAddField'; import ListItemField from './ListItemField'; export type ListFieldProps = FieldProps< unknown[], ListProps, { addIcon?: ReactNode; itemProps?: object } >; function List({ addIcon, children = , itemProps, label, value, ...props }: ListFieldProps) { return ( <> {label} ) : undefined } {...filterDOMProps(props)} > {value?.map((item, itemIndex) => Children.map(children, (child, childIndex) => isValidElement(child) ? cloneElement(child, { key: `${itemIndex}-${childIndex}`, name: child.props.name?.replace('$', '' + itemIndex), ...itemProps, }) : child, ), )} ); } export default connectField(List);