import {FieldArray, useField} from "formik"; import {Button, Chip, Input, Popover, PopoverContent, PopoverTrigger} from "@heroui/react"; import {KeyboardEvent, useState} from "react"; import {PlusIcon} from "@phosphor-icons/react"; // @ts-ignore const ArrayInput = ({label, ...props}) => { // @ts-ignore const [field, meta] = useField(props); const [newElementValue, setNewElementValue] = useState(""); return ( { function handleKeyDown(event: KeyboardEvent) { if (event.key === "Enter" || event.key == "Tab" || event.key === ",") { event.preventDefault(); newElementValue .split(",") .map((value) => value.trim()) .filter((value) => value !== "") .forEach((value) => arrayHelpers.push(value)); setNewElementValue(""); } } return (

{label}

{field.value.length} {field.value.length == 1 ? "element" : "elements"}
{field.value.map((element: any, index: number) => ( arrayHelpers.remove(index)} isDisabled={props.isDisabled} > {element} ))} setNewElementValue(e.target.value)} onKeyDown={handleKeyDown} placeholder="New element..." variant="bordered" />
{meta.touched && meta.error && meta.error.trim().length > 0 && ( meta.error )}
); }} /> ); } export default ArrayInput;