import React, { Fragment } from 'react'; import PropTypes from 'prop-types'; import { withTranslation } from 'react-i18next'; import dateFnsFormat from 'date-fns/format'; import { createSubscribedElement } from '../../UnstatedUtils'; import AppContainer from '../../../services/AppContainer'; class UserGroupTable extends React.Component { constructor(props) { super(props); this.xss = window.xss; this.state = { userGroups: this.props.userGroups, userGroupRelations: this.props.userGroupRelations, }; this.onDelete = this.onDelete.bind(this); } componentWillReceiveProps(nextProps) { this.setState({ userGroups: nextProps.userGroups, userGroupRelations: nextProps.userGroupRelations, }); } onDelete(e) { const { target } = e; const groupId = target.getAttribute('data-user-group-id'); const group = this.state.userGroups.find((group) => { return group._id === groupId; }); this.props.onDelete(group); } render() { const { t } = this.props; return (

{t('admin:user_group_management.group_list')}

{this.state.userGroups.map((group) => { return ( {this.props.isAclEnabled ? ( ) : ( ) } {this.props.isAclEnabled ? ( ) : ( ) } ); })}
{t('Name')} {t('User')} {t('Created')}
{this.xss.process(group.name)}{this.xss.process(group.name)}
    {this.state.userGroupRelations[group._id].map((user) => { return
  • {this.xss.process(user.username)}
  • ; })}
{dateFnsFormat(new Date(group.createdAt), 'yyyy-MM-dd')}
); } } /** * Wrapper component for using unstated */ const UserGroupTableWrapper = (props) => { return createSubscribedElement(UserGroupTable, props, [AppContainer]); }; UserGroupTable.propTypes = { t: PropTypes.func.isRequired, // i18next appContainer: PropTypes.instanceOf(AppContainer).isRequired, userGroups: PropTypes.arrayOf(PropTypes.object).isRequired, userGroupRelations: PropTypes.object.isRequired, isAclEnabled: PropTypes.bool.isRequired, onDelete: PropTypes.func.isRequired, }; export default withTranslation()(UserGroupTableWrapper);