UNPKG

@plone/volto

Version:
87 lines (83 loc) 2.7 kB
import PropTypes from 'prop-types'; import { FormattedMessage } from 'react-intl'; import { Dropdown, Table, Checkbox } from 'semantic-ui-react'; import trashSVG from '@plone/volto/icons/delete.svg'; import ploneSVG from '@plone/volto/icons/plone.svg'; import Icon from '@plone/volto/components/theme/Icon/Icon'; import { canAssignRole } from '@plone/volto/helpers/User/User'; const RenderGroups = (props) => { const onChange = (event, { value }) => { const [group, role] = value.split('.'); props.updateGroups(group, role); }; const isAuthGroup = (roleId) => { return props.inheritedRole.includes(roleId); }; const canDeleteGroup = () => { if (props.isUserManager) return true; return !props.group.roles.includes('Manager'); }; return ( <Table.Row key={props.group.title}> <Table.Cell>{props.group.groupname}</Table.Cell> {props.roles.map((role) => ( <Table.Cell key={role.id}> {props.inheritedRole && props.inheritedRole.includes(role.id) && props.group.roles.includes('Authenticated') ? ( <Icon name={ploneSVG} size="20px" color="#007EB1" title={'plone-svg'} /> ) : ( <Checkbox checked={ props.group.id === 'AuthenticatedUsers' ? isAuthGroup(role.id) : props.group.roles.includes(role.id) } onChange={onChange} value={`${props.group.id}.${role.id}`} disabled={!canAssignRole(props.isUserManager, role)} /> )} </Table.Cell> ))} <Table.Cell textAlign="right"> {canDeleteGroup() && ( <Dropdown icon="ellipsis horizontal"> <Dropdown.Menu className="left"> <Dropdown.Item onClick={props.onDelete} value={props.group['@id']} > <Icon name={trashSVG} size="15px" /> <FormattedMessage id="Delete" defaultMessage="Delete" /> </Dropdown.Item> </Dropdown.Menu> </Dropdown> )} </Table.Cell> </Table.Row> ); }; RenderGroups.propTypes = { //single group group: PropTypes.shape({ title: PropTypes.string, description: PropTypes.string, email: PropTypes.string, groupname: PropTypes.string, roles: PropTypes.arrayOf(PropTypes.string), }).isRequired, roles: PropTypes.arrayOf( PropTypes.shape({ id: PropTypes.string, }), ).isRequired, inheritedRole: PropTypes.array, onDelete: PropTypes.func.isRequired, }; export default RenderGroups;