import { FormControl } from 'components/FormControl' import { AddressInput } from 'components/forms/FormInput' import { useEffect, useId, useMemo } from 'react' import { FaMinus, FaPlus } from 'react-icons/fa' import { useInputState } from './FormInput.hooks' export interface Address { address: string } export interface AddressListProps { title: string subtitle?: string isRequired?: boolean entries: [string, Address][] onAdd: () => void onChange: (key: string, address: Address) => void onRemove: (key: string) => void } export function AddressList(props: AddressListProps) { const { title, subtitle, isRequired, entries, onAdd, onChange, onRemove } = props return ( {entries.map(([id], i) => (
))} ) } export interface AddressProps { id: string isLast: boolean onAdd: AddressListProps['onAdd'] onChange: AddressListProps['onChange'] onRemove: AddressListProps['onRemove'] } export function Address({ id, isLast, onAdd, onChange, onRemove }: AddressProps) { const Icon = useMemo(() => (isLast ? FaPlus : FaMinus), [isLast]) const htmlId = useId() const addressState = useInputState({ id: `ib-address-${htmlId}`, name: `ib-address-${htmlId}`, title: ``, }) useEffect(() => { onChange(id, { address: addressState.value, }) }, [addressState.value, id]) return (
) }