"use client"; import React from "react"; import { set, z } from "zod"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage, } from "@/components/ui/form"; import { retrieveHeadersByEndpoint } from "../functions/retrieveEndpointAndValidations"; interface TableProps { createEndpoint: string; updateEndpoint: string; tableFunction: any; UpdatePage: any; setFormPage: any; updatePageInfo: any; returnToPage: any; } const formSchema = z.object({ searchText: z.string().default(""), }); const Table: React.FC = ({ createEndpoint, updateEndpoint, tableFunction, UpdatePage, setFormPage, updatePageInfo, returnToPage, }) => { const [apiHeaders, setApiHeaders] = React.useState([]); const [tabledata, settabledata] = React.useState([]); const [searchDropDown, setSearchDropDown] = React.useState(""); const form = useForm>({ resolver: zodResolver(formSchema), }); function retrieveData(query: null | any = null) { return tableFunction(query) .then((res: any) => { settabledata(res?.data || []); return res?.data || []; }) .catch((err: any) => {}); } React.useEffect(() => { retrieveHeadersByEndpoint(createEndpoint).then((validations: any) => { if (validations?.headers.length !== 0) { tableFunction({ page: 1, limit: 10, order_field: "uu_id", order_type: "desc", }) .then((response: any) => { settabledata(response?.data || []); for (const key in response?.data[0]) { if (Object.keys(validations?.headers).includes(key)) { setApiHeaders((prev: string[]) => [ ...prev, validations?.headers[key], ]); } } }) .catch((err: any) => {}); } retrieveData(); }); }, []); function cleanSearch() { retrieveData(); } function searchByForm() { const searchText = form.getValues("searchText"); if (searchText === "") { cleanSearch(); } else { if (searchText.length > 3) { setQuery({ searchDropDown: searchText }); retrieveData(); } } } function updateSelectedRow({ selectedComponent }: any) { setFormPage( console.log("saveFunction")} /> ); } return ( <>
( )} />
{tabledata.map((row: any) => { return ( updateSelectedRow({ selectedComponent: row })} xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" className="lucide lucide-pencil" > ); })} {apiHeaders && apiHeaders?.map((header, key) => ( ))} {tabledata.map((row: any) => ( {Object.entries(row).map( ([key, value]: [key: string, value: any]) => { return ( ); } )} ))}
{header}
{value || ""}
); }; export default Table;