import Button from '@mui/material/Button'; import Dialog from '@mui/material/Dialog'; import DialogActions from '@mui/material/DialogActions'; import DialogContent from '@mui/material/DialogContent'; import DialogTitle from '@mui/material/DialogTitle'; import Paper from '@mui/material/Paper'; import Table from '@mui/material/Table'; import TableBody from '@mui/material/TableBody'; import TableCell from '@mui/material/TableCell'; import TableContainer from '@mui/material/TableContainer'; import TableHead from '@mui/material/TableHead'; import TableRow from '@mui/material/TableRow'; import Typography from '@mui/material/Typography'; import * as React from 'react'; import { useFormContext } from 'react-hook-form'; import { IPermissionCatalog } from 'types'; import ControlledCheckbox from 'components/ControlledCheckbox'; import useFormatMessage from 'hooks/useFormatMessage'; type PermissionSettingsProps = { onClose: () => void; fieldPrefix: string; subject: string; open?: boolean; defaultChecked?: boolean; actions: IPermissionCatalog['actions']; conditions: IPermissionCatalog['conditions']; }; export default function PermissionSettings(props: PermissionSettingsProps) { const { onClose, open = false, fieldPrefix, subject, actions, conditions, defaultChecked, } = props; const formatMessage = useFormatMessage(); const { getValues, resetField } = useFormContext(); const cancel = () => { for (const action of actions) { for (const condition of conditions) { const fieldName = `${fieldPrefix}.${action.key}.conditions.${condition.key}`; resetField(fieldName); } } onClose(); }; const apply = () => { for (const action of actions) { for (const condition of conditions) { const fieldName = `${fieldPrefix}.${action.key}.conditions.${condition.key}`; const value = getValues(fieldName); resetField(fieldName, { defaultValue: value }); } } onClose(); }; return ( {formatMessage('permissionSettings.title')} {actions.map((action) => ( {action.label} ))} {conditions.map((condition) => ( {condition.label} {actions.map((action) => ( {action.subjects.includes(subject) && ( )} {!action.subjects.includes(subject) && '-'} ))} ))}
); }