import React, { ChangeEvent, useEffect, useState } from "react"; import { useGetIntranetUsersData } from "../../APIs/IntranetUsersAPIs/getUsersList"; import { Table, TableBody, TableCell, TableContainer, TableHead, TableRow, tableRowClasses, Paper, Button, IconButton, TextField, Dialog, DialogTitle, DialogContent, DialogActions, TablePagination, Grid, InputAdornment, Box, } from '@mui/material'; import EditIcon from '@mui/icons-material/Edit'; import AddIcon from '@mui/icons-material/Add'; import { postNewIntranetUsersData } from "../../APIs/IntranetUsersAPIs/postAddUser"; import { AccountCircle } from "@mui/icons-material"; import SearchIcon from '@mui/icons-material/Search'; const StyledTextField = (props:any) => ( ); interface Row { username: string; role: string; active:any; } export default function IntranetUsers(){ const [searchByFilterOnBlur,setSearchByFilterOnBlur] = useState() const { data: manageUsersResponse, isLoading, isError } = useGetIntranetUsersData(); const [data, setData] = useState([]); const [open, setOpen] = useState(false); const [selectedRow, setSelectedRow] = useState(); const [newRow, setNewRow] = useState(); const [page, setPage] = React.useState(0); const [rowsPerPage, setRowsPerPage] = React.useState(10); const [filteredData, setFilteredData] = useState([]); useEffect(() => { if (searchByFilterOnBlur) { // Filter data based on the username const filtered = manageUsersResponse?.filter((row: any) => row.username.toLowerCase().includes(searchByFilterOnBlur.toLowerCase()) || row.role.toLowerCase().includes(searchByFilterOnBlur.toLowerCase()) ); setFilteredData(filtered || []); } else { // If search input is empty, show all data setFilteredData(manageUsersResponse || []); } }, [searchByFilterOnBlur, manageUsersResponse]); useEffect(()=>{ if (!open){ setSelectedRow({username: '', role: '', active: '' }); setNewRow({username: '', role: '', active: '' }); } },[open]) useEffect(() => { if (selectedRow){ postNewIntranetUsersData(selectedRow); } },[data]) const handleChangePage = (event:any, newPage:any) => { setPage(newPage); }; const handleChangeRowsPerPage = (event:any) => { setRowsPerPage(+event.target.value); setPage(0); }; const handleEdit = (row: Row) => { setSelectedRow({...row}); setOpen(true); }; const handleSave = () => { // if (selectedRow.id) { // const updatedData = data.map((row) => (row.id === selectedRow.id ? selectedRow : row)); // setData(updatedData); // } else { const id = data.length + 1; setData([...data, { ...selectedRow, id }]); // } setOpen(false); }; const handleClose = () => { setOpen(false); setSelectedRow({username: '', role: '', active: '' }); setNewRow({username: '', role: '', active: '' }); }; const handleChange = (e: ChangeEvent) => { const { name, value } = e.target; if (selectedRow) { // Editing existing row setSelectedRow({ ...selectedRow, [name]: value }); } else { // Adding a new row setNewRow({ ...newRow, [name]: value }); } }; const handleOpen = () => { setOpen(true); }; return( ), }} value={searchByFilterOnBlur} onChange={(e)=>{ setSearchByFilterOnBlur(e.target.value); }} sx={{input: { color: 'white' }, "& label": { color: "white" }, "& label.Mui-focused": { color: "white" }, "& .MuiInput-underline:after": { borderBottomColor: "white" }, "& .MuiOutlinedInput-root": { "& fieldset": { borderColor: "white" }}, "&:hover fieldset": { borderColor: "white", borderWidth: 2 }, "&.Mui-focused fieldset": { borderColor: "white" }, margin:1, // marginTop:3 }} placeholder="Search..." /> Name Role Active {filteredData && filteredData.map((row:any) => ( handleEdit(row)} aria-label="edit"> {row.username} {row.role} {row.active==1? Active : Inactive} ))}
{selectedRow && selectedRow.id ? 'Edit Row' : 'Add New Row'}
) }