import { useState, useEffect } from "react"; import { Cancel } from "@mui/icons-material"; import { TextField } from "@mui/material"; import { Box } from "@mui/system"; import { useStatusContext } from "../../Contexts/StatusContext"; const TextInput = ({ text, handleDelete }) => { return ( {text} handleDelete(text)} /> ); } const TextInputList = ({ onChange = () => {}, validate = () => {}, label }) => { const [textList, setTextList] = useState([]); const [input, setInput] = useState(""); const { setMessage } = useStatusContext(); const handleDelete = (textToDelete) => { setTextList(textList => textList.filter(text => text !== textToDelete)); } const handleOnChange = (event) => { const char = event.nativeEvent.data; if (char === ",") { try { if (validate) validate(input); setTextList(textList => [...textList, input]); setInput(""); } catch { setMessage(`"${input}" is not valid.`); } } else { setInput(event.target.value); } } useEffect(() => { onChange(input.length ? [...textList, input] : [...textList]); // eslint-disable-next-line react-hooks/exhaustive-deps }, [textList, input]); return (
{textList.map((text) => ( ))}
); }; export default TextInputList;