// ** React Imports import { useEffect, useState } from 'react' // ** Next Import import Link from 'next/link' // ** MUI Imports import Box from '@mui/material/Box' import Grid from '@mui/material/Grid' import Card from '@mui/material/Card' import Table from '@mui/material/Table' import Button from '@mui/material/Button' import Avatar from '@mui/material/Avatar' import Dialog from '@mui/material/Dialog' import Tooltip from '@mui/material/Tooltip' import Checkbox from '@mui/material/Checkbox' import TableRow from '@mui/material/TableRow' import TableBody from '@mui/material/TableBody' import TableCell from '@mui/material/TableCell' import TableHead from '@mui/material/TableHead' import TextField from '@mui/material/TextField' import IconButton from '@mui/material/IconButton' import Typography from '@mui/material/Typography' import FormControl from '@mui/material/FormControl' import DialogTitle from '@mui/material/DialogTitle' import AvatarGroup from '@mui/material/AvatarGroup' import CardContent from '@mui/material/CardContent' import DialogActions from '@mui/material/DialogActions' import DialogContent from '@mui/material/DialogContent' import TableContainer from '@mui/material/TableContainer' import FormControlLabel from '@mui/material/FormControlLabel' // ** Icon Imports import Icon from 'src/@core/components/icon' import Image from 'next/image' interface CardDataType { title: string avatars: string[] totalUsers: number } const cardData: CardDataType[] = [ { totalUsers: 4, title: 'Administrator', avatars: ['1.png', '2.png', '3.png', '4.png'] }, { totalUsers: 7, title: 'Manager', avatars: ['5.png', '6.png', '7.png', '8.png', '1.png', '2.png', '3.png'] }, { totalUsers: 5, title: 'Users', avatars: ['4.png', '5.png', '6.png', '7.png', '8.png'] }, { totalUsers: 3, title: 'Support', avatars: ['1.png', '2.png', '3.png'] }, { totalUsers: 2, title: 'Restricted User', avatars: ['4.png', '5.png'] } ] const rolesArr: string[] = [ 'User Management', 'Content Management', 'Disputes Management', 'Database Management', 'Financial Management', 'Reporting', 'API Control', 'Repository Management', 'Payroll' ] const RolesCards = () => { // ** States const [open, setOpen] = useState(false) const [dialogTitle, setDialogTitle] = useState<'Add' | 'Edit'>('Add') const [selectedCheckbox, setSelectedCheckbox] = useState([]) const [isIndeterminateCheckbox, setIsIndeterminateCheckbox] = useState(false) const handleClickOpen = () => setOpen(true) const handleClose = () => { setOpen(false) setSelectedCheckbox([]) setIsIndeterminateCheckbox(false) } const togglePermission = (id: string) => { const arr = selectedCheckbox if (selectedCheckbox.includes(id)) { arr.splice(arr.indexOf(id), 1) setSelectedCheckbox([...arr]) } else { arr.push(id) setSelectedCheckbox([...arr]) } } const handleSelectAllCheckbox = () => { if (isIndeterminateCheckbox) { setSelectedCheckbox([]) } else { rolesArr.forEach(row => { const id = row.toLowerCase().split(' ').join('-') togglePermission(`${id}-read`) togglePermission(`${id}-write`) togglePermission(`${id}-create`) }) } } useEffect(() => { if (selectedCheckbox.length > 0 && selectedCheckbox.length < rolesArr.length * 3) { setIsIndeterminateCheckbox(true) } else { setIsIndeterminateCheckbox(false) } }, [selectedCheckbox]) const renderCards = () => cardData.map((item, index: number) => ( {`Total ${item.totalUsers} users`} {item.avatars.map((img, index: number) => ( ))} {item.title} { e.preventDefault() handleClickOpen() setDialogTitle('Edit') }} > Edit Role )) return ( {renderCards()} { handleClickOpen() setDialogTitle('Add') }} > add-role Add role, if it doesn't exist. [`${theme.spacing(5)} !important`, `${theme.spacing(15)} !important`], pt: theme => [`${theme.spacing(8)} !important`, `${theme.spacing(12.5)} !important`] }} > {`${dialogTitle} Role`} Set Role Permissions `${theme.spacing(5)} !important`, px: theme => [`${theme.spacing(5)} !important`, `${theme.spacing(15)} !important`] }} > Role Permissions Administrator Access } /> {rolesArr.map((i: string, index: number) => { const id = i.toLowerCase().split(' ').join('-') return ( `${theme.palette.text.primary} !important` }} > {i} togglePermission(`${id}-read`)} checked={selectedCheckbox.includes(`${id}-read`)} /> } /> togglePermission(`${id}-write`)} checked={selectedCheckbox.includes(`${id}-write`)} /> } /> togglePermission(`${id}-create`)} checked={selectedCheckbox.includes(`${id}-create`)} /> } /> ) })}
[`${theme.spacing(5)} !important`, `${theme.spacing(15)} !important`], pb: theme => [`${theme.spacing(8)} !important`, `${theme.spacing(12.5)} !important`] }} >
) } export default RolesCards