UNPKG

materio-mui-react-nextjs-admin-template-free

Version:

Most Powerful & Comprehensive Free MUI React NextJS Admin Dashboard Template built for developers! 🚀

137 lines (127 loc) • 4.3 kB
// ** React Imports import { useState, Fragment } from 'react' // ** MUI Imports import Box from '@mui/material/Box' import Paper from '@mui/material/Paper' import Table from '@mui/material/Table' import Collapse from '@mui/material/Collapse' import TableRow from '@mui/material/TableRow' import TableHead from '@mui/material/TableHead' import TableBody from '@mui/material/TableBody' import TableCell from '@mui/material/TableCell' import Typography from '@mui/material/Typography' import IconButton from '@mui/material/IconButton' import TableContainer from '@mui/material/TableContainer' // ** Icons Imports import ChevronUp from 'mdi-material-ui/ChevronUp' import ChevronDown from 'mdi-material-ui/ChevronDown' const createData = (name, calories, fat, carbs, protein, price) => { return { name, calories, fat, carbs, protein, price, history: [ { date: '2020-01-05', customerId: '11091700', amount: 3 }, { date: '2020-01-02', customerId: 'Anonymous', amount: 1 } ] } } const Row = props => { // ** Props const { row } = props // ** State const [open, setOpen] = useState(false) return ( <Fragment> <TableRow sx={{ '& > *': { borderBottom: 'unset' } }}> <TableCell> <IconButton aria-label='expand row' size='small' onClick={() => setOpen(!open)}> {open ? <ChevronUp /> : <ChevronDown />} </IconButton> </TableCell> <TableCell component='th' scope='row'> {row.name} </TableCell> <TableCell align='right'>{row.calories}</TableCell> <TableCell align='right'>{row.fat}</TableCell> <TableCell align='right'>{row.carbs}</TableCell> <TableCell align='right'>{row.protein}</TableCell> </TableRow> <TableRow> <TableCell colSpan={6} sx={{ py: '0 !important' }}> <Collapse in={open} timeout='auto' unmountOnExit> <Box sx={{ m: 2 }}> <Typography variant='h6' gutterBottom component='div'> History </Typography> <Table size='small' aria-label='purchases'> <TableHead> <TableRow> <TableCell>Date</TableCell> <TableCell>Customer</TableCell> <TableCell align='right'>Amount</TableCell> <TableCell align='right'>Total price ($)</TableCell> </TableRow> </TableHead> <TableBody> {row.history.map(historyRow => ( <TableRow key={historyRow.date}> <TableCell component='th' scope='row'> {historyRow.date} </TableCell> <TableCell>{historyRow.customerId}</TableCell> <TableCell align='right'>{historyRow.amount}</TableCell> <TableCell align='right'>{Math.round(historyRow.amount * row.price * 100) / 100}</TableCell> </TableRow> ))} </TableBody> </Table> </Box> </Collapse> </TableCell> </TableRow> </Fragment> ) } const rows = [ createData('Frozen yoghurt', 159, 6.0, 24, 4.0, 3.99), createData('Ice cream sandwich', 237, 9.0, 37, 4.3, 4.99), createData('Eclair', 262, 16.0, 24, 6.0, 3.79), createData('Cupcake', 305, 3.7, 67, 4.3, 2.5), createData('Gingerbread', 356, 16.0, 49, 3.9, 1.5) ] const TableCollapsible = () => { return ( <TableContainer component={Paper}> <Table aria-label='collapsible table'> <TableHead> <TableRow> <TableCell /> <TableCell>Dessert (100g serving)</TableCell> <TableCell align='right'>Calories</TableCell> <TableCell align='right'>Fat (g)</TableCell> <TableCell align='right'>Carbs (g)</TableCell> <TableCell align='right'>Protein (g)</TableCell> </TableRow> </TableHead> <TableBody> {rows.map(row => ( <Row key={row.name} row={row} /> ))} </TableBody> </Table> </TableContainer> ) } export default TableCollapsible