import { useState } from "react";
import {
Box,
TextField,
MenuItem,
Button,
Drawer,
FormControl,
Select,
Typography,
Stack,
} from "@mui/material";
import { DatePicker } from "@mui/x-date-pickers/DatePicker";
import { AdapterDateFns } from "@mui/x-date-pickers/AdapterDateFns";
import { LocalizationProvider } from "@mui/x-date-pickers/LocalizationProvider";
import SearchIcon from "@mui/icons-material/Search";
import RefreshIcon from "@mui/icons-material/Refresh";
interface IForm {
userId: string;
transactionId: string;
transactionReferenceId: string;
currency: string;
state: string;
depositMethod: string;
dateTime: string
}
interface ILabel {
label: string;
field: string;
type: string;
options?: string[];
}
interface IAdvancedSearch {
setForm: () => void;
form: IForm[];
resetForm: () => void;
labels: ILabel[]
}
export default function AdvancedSearch1({ setForm, form, resetForm, labels }: IAdvancedSearch) {
const [open, setOpen] = useState(false);
const handleChange = (field: string, value: any) => {
setForm((prev) => ({ ...prev, [field]: value }));
};
const toggleDrawer =
(open: boolean) => (event: React.KeyboardEvent | React.MouseEvent) => {
if (
event.type === "keydown" &&
((event as React.KeyboardEvent).key === "Tab" ||
(event as React.KeyboardEvent).key === "Shift")
) {
return;
}
setOpen(open);
};
const list = () => (
Search
{/* Buttons */}
}
onClick={() => console.log("Apply Filter", form)}
sx={{ "& .span": { margin: "0px", padding: "0px" } }}
>
Apply Filter
}
onClick={resetForm}
sx={{ "& span": { margin: "0px", padding: "0px" } }}
>
{labels.map(({ label, field, type, options }) => (
{label}
{type === "text" && (
handleChange(field, e.target.value)}
/>
)}
{type === "select" && (
)}
{type === "date" && (
handleChange(field, newValue)}
renderInput={(params) => (
)}
/>
)}
))}
);
return (
}
onClick={toggleDrawer(true)}
>
Advanced Search
{/* */}
{list()}
);
}