Files
tanami-admin-panel/src/Components/DataTable/DataTable.jsx

115 lines
3.9 KiB
React
Raw Normal View History

2024-06-20 12:09:48 +05:30
import React from "react";
2024-06-21 20:32:14 +05:30
import {
Table,
TableContainer,
Tbody,
Td,
Th,
Thead,
Tr,
Skeleton,
TableCaption,
Tfoot,
} from "@chakra-ui/react";
2024-06-20 12:09:48 +05:30
import EmptySearchList from "../EmptySearchList";
2024-06-24 12:08:21 +05:30
import Pagination from "../Pagination";
2024-06-25 19:16:55 +05:30
import { useNavigate } from "react-router-dom";
2024-06-20 12:09:48 +05:30
2024-06-25 19:16:55 +05:30
const DataTable = ({ data, isLoading, tableHeadRow, emptyMessage, totalPages, viewActionId,
setMouseEntered,
setMouseEnteredId, }) => {
const navigate = useNavigate()
2024-06-20 12:09:48 +05:30
const columnWidth = data && data[0] ? `${(100 / Object.keys(data[0]).length).toFixed(2)}%` : "auto";
return (
<TableContainer overflowX={"hidden"} className="h-auto mb-3 w-100">
{data?.length === 0 ? (
<EmptySearchList message={emptyMessage} />
) : (
<Table size="sm">
2024-06-24 12:08:21 +05:30
{/* <TableCaption><Pagination totalItems={totalPages} /></TableCaption> */}
<TableCaption>Tanami v1.0</TableCaption>
<Thead backgroundColor="gray.50">
2024-06-20 12:09:48 +05:30
<Tr>
{tableHeadRow.map((heading, index) => (
2024-06-21 20:32:14 +05:30
<Th key={index} p={3} w={"auto"} color={"#004118"}>
2024-06-20 12:09:48 +05:30
{isLoading ? <Skeleton height="20px" /> : heading}
{/* {heading} */}
</Th>
))}
</Tr>
</Thead>
<Tbody className="web-text-small">
{isLoading
2024-06-24 12:08:21 +05:30
? Array?.from({ length: 10 }).map((_, index) => (
2024-06-20 12:09:48 +05:30
<Tr key={index}>
{tableHeadRow.map((_, i) => (
2024-06-21 20:32:14 +05:30
<Td
key={i}
style={{
whiteSpace: "nowrap",
textOverflow: "ellipsis",
}}
className="web-text-small"
w={columnWidth}
>
2024-06-20 12:09:48 +05:30
<Skeleton height="20px" mb={1} mt={1} />
</Td>
))}
</Tr>
))
: data?.map((item, index) => (
2024-06-25 19:16:55 +05:30
<Tr
// onMouseEnter={(e) => {
// e.currentTarget.style.backgroundColor = "transparent"; // Change the background color on hover
// e.currentTarget.style.transition = "0.1s";
// e.currentTarget.style.boxShadow =
// "rgba(0, 0, 0, 0.24) 0px 1px 8px";
// setMouseEntered(true);
// setMouseEnteredId(item.id);
// }}
// onMouseLeave={(e) => {
// e.currentTarget.style.backgroundColor = "transparent"; // Revert to default background color on hover out
// e.currentTarget.style.transition = "0.3s";
// e.currentTarget.style.boxShadow = "none";
// setMouseEntered(false);
// }}
transition={'0.5s all'}
_hover={{
bg:"green.50",
cursor: "pointer",
}} key={index}>
2024-06-20 12:09:48 +05:30
{tableHeadRow.map((heading, i) => (
2024-06-21 20:32:14 +05:30
<Td
2024-06-25 19:16:55 +05:30
onClick={
i === tableHeadRow.length - 1 || i === 0
? null
: () => navigate(`edit-sponser/${item.id}`) // Define the onClick handler for other cells
}
// color={"gray.600"}
2024-06-21 20:32:14 +05:30
key={i}
style={{
whiteSpace: "nowrap",
textOverflow: "ellipsis",
}}
className="web-text-small"
2024-06-25 19:16:55 +05:30
2024-06-21 20:32:14 +05:30
>
2024-06-20 12:09:48 +05:30
{item[heading]}
</Td>
))}
</Tr>
))}
</Tbody>
</Table>
)}
</TableContainer>
);
};
export default DataTable;