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);