I want to give different background colors dynamically to rows of the react-data table,but can't find How to do that,
My table component is,
import {
Flex,
useColorModeValue,
Button,
ButtonGroup,
Input,
VStack,
HStack,
Stack,
Image,
Text,
} from "@chakra-ui/react";
import React, { useMemo } from "react";
import {
useGlobalFilter,
usePagination,
useSortBy,
useTable,
} from "react-table";
import Card from "components/card/Card";
import DataTable from 'react-data-table-component';
export default function ColumnsTable(props) {
const columns = [
{
name: (<Text fontSize={'15px'}>Id</Text>),
selector: row =>(<Text fontSize={'15px'}>{row.id}</Text>) ,
sortable: true,
},
{
name: (<Text fontSize={'15px'}>Name</Text>),
selector: row =>(<Text fontSize={'15px'}>{row.name}</Text>) ,
sortable: true,
},
{
name: (<Text fontSize={'15px'}>Current Position</Text>),
selector: row =>(<Text fontSize={'15px'}>{row.position}</Text>) ,
sortable: true,
},
{
name: (<Text fontSize={'15px'}>Birthday Date</Text>),
selector: row =>(<Text fontSize={'15px'}>{row.birthDay}</Text>) ,
sortable: true,
},
];
const data = [
{
id: 1,
name: 'Annette Black',
position: ' Industrial Designer',
birthDay:'12-06-1998'
},
{
id: 2,
name: 'Bessie Cooper',
position: 'Graphic Designer',
birthDay:'12-06-1998'
},
{
id: 2,
name: ' Leslie Alexander',
position: ' Industrial Designer',
birthDay:'12-06-1998'
},
{
id: 3,
name: 'Leslie Alexander',
position: 'Graphic Designer',
birthDay:'12-06-1998'
},
{
id: 4,
name: 'Leslie Alexander',
position: ' Product Manager',
birthDay:'12-06-1998'
},
]
return (
<Stack w={'74vw'} bg='white' mt={5} py={5}>
<DataTable
title='Upcoming Birthday'
columns={columns}
data={data}
/>
</Stack>
);
}
Thanks in advance
Lorem, ipsum dolor sit amet consectetur adipisicing elit. Placeat provident ducimus voluptate, recusandae vero, distinctio eius, debitis numquam corrupti libero modi quaerat minima. At voluptatem, saepe accusamus velit numquam quis!
This is a heavy workaround, but it doesn't seem that the component allows to elegantly configure the way you want...
const randomRGBAColor = () => {
return `rgba(${Math.floor(Math.random() * 255)},${Math.floor(Math.random() * 255)},${Math.floor(Math.random() * 255)}, 0.3)`
}
useEffect(() => {
document.querySelector(".rdt_TableHeadRow").style.backgroundColor = randomRGBAColor();
[...document.querySelector(".rdt_TableBody").children].forEach(row => row.style.backgroundColor = randomRGBAColor());
}, [])