import SectionContainer from '../../components/SectionContainer'; import { useEffect, useState } from 'react'; import { DataGrid } from '@mui/x-data-grid'; import { Typography, Button, Dialog, DialogTitle, DialogContent, IconButton, Box } from '@mui/material'; import EditRoundedIcon from '@mui/icons-material/EditRounded'; import DeleteRoundedIcon from '@mui/icons-material/DeleteRounded'; import AddOrEditAdminForm from './AddOrEditAdminForm'; import { getExternalData } from '../../api/actions'; const columnsBase = [ { field: 'name', headerName: 'Name', flex: 2 }, { field: 'description', headerName: 'Description', flex: 2 }, { field: 'status', headerName: 'Status', width: 120 }, { field: 'createdAt', headerName: 'Created At', width: 120, valueFormatter: (params) => { const date = params?.value; return date ? new Date(date).toLocaleString() : '—'; } }, { field: 'createdBy', headerName: 'Created By', flex: 1 }, { field: 'updatedAt', headerName: 'Updated At', width: 120, valueFormatter: (params) => { const date = params?.value; return date ? new Date(date).toLocaleString() : '—'; } }, { field: 'updatedBy', headerName: 'Updated By', flex: 1 }, ]; export default function Admin() { const [rows, setRows] = useState([]); const [open, setOpen] = useState(false); const [editingData, setEditingData] = useState(null); const [confirmOpen, setConfirmOpen] = useState(false); const [rowToDelete, setRowToDelete] = useState(null); useEffect(() => { getExternalData().then(data => { const safeData = Array.isArray(data) ? data : []; setRows(safeData); }).catch(error => { console.error('Error loading data:', error); setRows([]); }); }, []); const handleEditClick = (params) => { setEditingData(params.row); setOpen(true); }; const handleDeleteClick = (row) => { setRowToDelete(row); setConfirmOpen(true); }; const columns = [ ...columnsBase, { field: 'actions', headerName: '', width: 130, renderCell: (params) => ( handleEditClick(params)} > handleDeleteClick(params.row)} > ) } ]; return ( Admin { setOpen(false); setEditingData(null); }} maxWidth="md" fullWidth> {editingData ? 'Edit Item' : 'Add Item'} { }} initialData={editingData} onCancel={() => { setOpen(false); setEditingData(null); }} /> setConfirmOpen(false)}> Confirm Delete Are you sure you want to delete {rowToDelete?.name}? ({ top: 4, bottom: 4 })} /> ); }