import React from 'react'; import { useFieldArray, useFormContext } from 'react-hook-form'; import type { FormFields } from '../types'; import { Checkbox } from 'toolkit/chakra/checkbox'; import { useUpdateEffect } from 'toolkit/hooks/useUpdateEffect'; import ContractVerificationFormRow from '../ContractVerificationFormRow'; import ContractVerificationFieldLibraryItem from './ContractVerificationFieldLibraryItem'; const ContractVerificationFieldLibraries = () => { const { formState, control, getValues } = useFormContext(); const { fields, append, remove, insert } = useFieldArray({ name: 'libraries', control, }); const [ isEnabled, setIsEnabled ] = React.useState(fields.length > 0); const value = getValues('libraries'); useUpdateEffect(() => { if (!value || value.length === 0) { setIsEnabled(false); } }, [ value ]); const handleCheckboxChange = React.useCallback(() => { if (!isEnabled) { append({ name: '', address: '' }); } else { remove(); } setIsEnabled(prev => !prev); }, [ append, isEnabled, remove ]); const handleAddFieldClick = React.useCallback((index: number) => { insert(index + 1, { name: '', address: '' }); }, [ insert ]); const handleRemoveFieldClick = React.useCallback((index: number) => { remove(index); }, [ remove ]); return ( <> Add contract libraries { fields.map((field, index) => ( )) } ); }; export default React.memo(ContractVerificationFieldLibraries);