I created a simple table using React.js and MUI-Datatables:
import MUIDataTable from "mui-datatables";
const columns = ["Name", "Company", "City", "State"];
const data = [
["Joe James", "Test Corp", "Yonkers", "NY"],
["John Walsh", "Test Corp", "Hartford", "CT"],
["Bob Herm", "Test Corp", "Tampa", "FL"],
["James Houston", "Test Corp", "Dallas", "TX"],
];
const options = {
filterType: 'checkbox',
};
<MUIDataTable
title={"Employee List"}
data={data}
columns={columns}
options={options}
/>
How can I add a custom CSS class to a single row inside the table. Lets say I want the second row with John Walsh to have a green background color.
Update:
Using customRowRender
allows to style a certain row but I am still not 100% happy with the solution because certain features like selectable rows do not work out of the box anymore:
const options = {
filterType: "checkbox",
customRowRender: (data, dataIndex, rowIndex) => {
let style = {};
if (data[0] === "John Walsh") {
style.backgroundColor = "green";
}
return (
<TableRow style={style}>
<TableCell />
<TableCell>
<Typography>{data[0]}</Typography>
</TableCell>
<TableCell>
<Typography>{data[1]}</Typography>
</TableCell>
<TableCell>
<Typography>{data[2]}</Typography>
</TableCell>
<TableCell>
<Typography>{data[3]}</Typography>
</TableCell>
</TableRow>
);
}
};
Here you go.
setRowProps: row => {
if (row[0] === "New") {
return {
style: { background: "snow" }
};
}
}
You may opt to use the customRowRender
and provide your own styles for a selected row. Since they are both different components, they may 'talk' to each other using props, context or some sort of state management.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With