UNPKG

pubsweet-component-bookbuilder

Version:

105 lines (92 loc) 2.37 kB
import React, { Fragment } from 'react' import PropTypes from 'prop-types' import GroupHeader from './GroupHeader' import AddMember from './AddMember' import MemberList from './MemberList' export class Group extends React.Component { constructor(props) { super(props) this._showAddMember = this._showAddMember.bind(this) this._closeAddMember = this._closeAddMember.bind(this) this.state = { isAddMemberOpen: false, } } _showAddMember() { this.setState({ isAddMemberOpen: !this.state.isAddMemberOpen }) } _closeAddMember() { this.setState({ isAddMemberOpen: false }) } render() { const { team, findUser, options, update, rules, canViewAddTeamMember, } = this.props const { members } = team const allowed = true return ( <Fragment> <GroupHeader allowed={allowed} canViewAddTeamMember={canViewAddTeamMember} show={this.state.isAddMemberOpen} showInput={this._showAddMember} title={options.title} /> <MemberList color={options.color} members={members} rules={rules} team={team} update={update} /> <AddMember findUser={findUser} hideInput={this._closeAddMember} show={this.state.isAddMemberOpen} team={team} update={update} /> </Fragment> ) } } Group.propTypes = { team: PropTypes.shape({ id: PropTypes.string, name: PropTypes.string, type: PropTypes.string, rev: PropTypes.string, teamType: PropTypes.shape({ name: PropTypes.string, permissions: PropTypes.arrayOf(PropTypes.string), }), members: PropTypes.arrayOf(PropTypes.string), object: PropTypes.shape({ id: PropTypes.string, type: PropTypes.string, }), }).isRequired, users: PropTypes.arrayOf( PropTypes.shape({ admin: PropTypes.bool, email: PropTypes.string, id: PropTypes.string, rev: PropTypes.string, type: PropTypes.string, username: PropTypes.string, }), ).isRequired, options: PropTypes.shape({ addButtonText: PropTypes.string, color: PropTypes.string, title: PropTypes.string, }).isRequired, update: PropTypes.func.isRequired, } export default Group