import React, { useState, useEffect } from "react"; import axios from "axios"; import { useLocation, useNavigate } from "react-router-dom"; import { Button, IconButton, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Paper, Typography, Box, } from "@mui/material"; import DeleteIcon from "@mui/icons-material/Delete"; import BuildIcon from "@mui/icons-material/Build"; import AddIcon from "@mui/icons-material/Add"; // Define the API base URL using the environment variable const api = process.env.REACT_APP_API_BASE_URL; const DynamicTable = () => { const [forms, setForms] = useState([]); const location = useLocation(); const navigate = useNavigate(); useEffect(() => { if (location.state && location.state.formData) { setForms((prevForms) => [...prevForms, location.state.formData]); } else { fetchForms(); } }, [location.state]); const fetchForms = async () => { const token = localStorage.getItem("token"); // Get token from local storage try { const response = await axios.get(`${api}/api/form_setup`, { headers: { Authorization: `Bearer ${token}`, }, }); if (Array.isArray(response.data)) { setForms(response.data); } else { console.error("Unexpected response format:", response.data); setForms([]); } } catch (error) { console.error("Error fetching data:", error); setForms([]); } }; const handleDelete = async (id) => { const token = localStorage.getItem("token"); // Get token from local storage try { await axios.delete(`${api}/api/form_setup/${id}`, { headers: { Authorization: `Bearer ${token}`, }, }); fetchForms(); } catch (error) { console.error("Error deleting form:", error); } }; const handleBuild = async (id) => { const token = localStorage.getItem("token"); // Get token from local storage try { await axios.post( `${api}/api/dynamic_form_build`, { id }, { headers: { Authorization: `Bearer ${token}`, }, } ); } catch (error) { console.error("Error building form:", error); } }; const handleAdd = () => { navigate("/form"); }; return ( Dynamic Form Go To Form Name Form Description Related To Page Event Button Caption Go To Form Action {forms.map((form, index) => ( {form.formName} {form.formDescription} {form.relatedTo} {form.pageEvent} {form.buttonCaption} {form.goToForm} handleDelete(form.id)} className="text-red-500 hover:text-red-700" > ))}
); }; export default DynamicTable;