import { Criterion } from "@/components/SearchBox/SearchBox"; import { useTranslation } from "react-i18next"; import { useState } from "react"; import { Card, CardContent, Typography, Grid, TextField, Button, Stack } from "@mui/material"; import { RestartAlt, Search } from "@mui/icons-material"; import { Autocomplete } from "@mui/material"; const VerticalSearchBox = ({ criteria, onSearch, onReset }: { criteria: Criterion[]; onSearch: (inputs: Record) => void; onReset?: () => void; }) => { const { t } = useTranslation("common"); const [inputs, setInputs] = useState>({}); const handleInputChange = (paramName: string, value: any) => { setInputs(prev => ({ ...prev, [paramName]: value })); }; const handleSearch = () => { onSearch(inputs); }; const handleReset = () => { setInputs({}); onReset?.(); }; return ( {t("Search Criteria")} {criteria.map((c) => { return ( {c.type === "text" && ( handleInputChange(c.paramName, e.target.value)} value={inputs[c.paramName] || ""} /> )} {c.type === "autocomplete" && ( option.label} onChange={(_, value: any) => handleInputChange(c.paramName, value?.value || "")} value={c.options?.find(option => option.value === inputs[c.paramName]) || null} renderInput={(params) => ( )} /> )} ); })} ); }; export default VerticalSearchBox;