import IconButton, { IconButtonProps } from '@material-ui/core/IconButton'; import React, { ReactNode } from 'react'; import { FieldProps, connectField, filterDOMProps, joinName, useField, } from 'uniforms'; export type ListDelFieldProps = FieldProps< unknown, IconButtonProps, { icon?: ReactNode } >; function ListDel({ disabled, icon = '-', name, readOnly, ...props }: ListDelFieldProps) { const nameParts = joinName(null, name); const nameIndex = +nameParts[nameParts.length - 1]; const parentName = joinName(nameParts.slice(0, -1)); const parent = useField<{ minCount?: number }, unknown[]>( parentName, {}, { absoluteName: true }, )[0]; disabled ||= readOnly || parent.minCount! >= parent.value!.length; return ( { const value = parent.value!.slice(); value.splice(nameIndex, 1); parent.onChange(value); }} > {icon} ); } export default connectField(ListDel, { initialValue: false, kind: 'leaf', });