'use client' // React Imports import { useState, useEffect } from 'react' // MUI Imports import Dialog from '@mui/material/Dialog' import DialogTitle from '@mui/material/DialogTitle' import DialogContent from '@mui/material/DialogContent' import Typography from '@mui/material/Typography' import Checkbox from '@mui/material/Checkbox' import FormGroup from '@mui/material/FormGroup' import FormControlLabel from '@mui/material/FormControlLabel' import DialogActions from '@mui/material/DialogActions' import Button from '@mui/material/Button' // Component Imports import DialogCloseButton from '../DialogCloseButton' import CustomTextField from '@core/components/mui/TextField' // Style Imports import tableStyles from '@core/styles/table.module.css' type RoleDialogProps = { open: boolean setOpen: (open: boolean) => void title?: string } type DataType = | string | { title: string read?: boolean write?: boolean select?: boolean } const defaultData: DataType[] = [ 'User Management', 'Content Management', 'Disputes Management', 'Database Management', 'Financial Management', 'Reporting', 'API Control', 'Repository Management', 'Payroll' ] const RoleDialog = ({ open, setOpen, title }: RoleDialogProps) => { // States const [selectedCheckbox, setSelectedCheckbox] = useState( title ? [ 'user-management-read', 'user-management-write', 'user-management-create', 'disputes-management-read', 'disputes-management-write', 'disputes-management-create' ] : [] ) const [isIndeterminateCheckbox, setIsIndeterminateCheckbox] = useState(false) const handleClose = () => { setOpen(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 { defaultData.forEach(row => { const id = (typeof row === 'string' ? row : row.title).toLowerCase().split(' ').join('-') togglePermission(`${id}-read`) togglePermission(`${id}-write`) togglePermission(`${id}-create`) }) } } useEffect(() => { if (selectedCheckbox.length > 0 && selectedCheckbox.length < defaultData.length * 3) { setIsIndeterminateCheckbox(true) } else { setIsIndeterminateCheckbox(false) } }, [selectedCheckbox]) return ( setOpen(false)} disableRipple> {title ? 'Edit Role' : 'Add Role'} Set Role Permissions
e.preventDefault()}> e.target.value} /> Role Permissions
{defaultData.map((item, index) => { const id = (typeof item === 'string' ? item : item.title).toLowerCase().split(' ').join('-') return ( ) })}
Administrator Access } label='Select All' />
{typeof item === 'object' ? item.title : item} {typeof item === 'object' ? ( } label='Read' /> } label='Write' /> } label='Select' /> ) : ( togglePermission(`${id}-read`)} checked={selectedCheckbox.includes(`${id}-read`)} /> } label='Read' /> togglePermission(`${id}-write`)} checked={selectedCheckbox.includes(`${id}-write`)} /> } label='Write' /> togglePermission(`${id}-create`)} checked={selectedCheckbox.includes(`${id}-create`)} /> } label='Create' /> )}
) } export default RoleDialog