import React from 'react'; import PropTypes from 'prop-types'; import { Alert, Modal, ModalHeader, ModalBody, ModalFooter, Button, Form, FormGroup, Label, Input, InputGroup, InputGroupAddon } from 'reactstrap'; import { gettext } from '../../../utils/constants'; import { Utils } from '../../../utils/utils'; import SysAdminUserRoleEditor from '../../../components/select-editor/sysadmin-user-role-editor'; const propTypes = { availableRoles: PropTypes.array.isRequired, dialogTitle: PropTypes.string.isRequired, showRole: PropTypes.bool.isRequired, toggleDialog: PropTypes.func.isRequired, addUser: PropTypes.func.isRequired }; class SysAdminAddUserDialog extends React.Component { constructor(props) { super(props); this.state = { errorMsg: '', isPasswordVisible: false, password: '', passwordAgain: '', email: '', name: '', role: 'default', isSubmitBtnActive: false }; } checkSubmitBtnActive = () => { const { email, password, passwordAgain } = this.state; let btnActive = true; if (email.trim() && password.trim() && passwordAgain.trim()) { btnActive = true; } else { btnActive = false; } this.setState({ isSubmitBtnActive: btnActive }); }; toggle = () => { this.props.toggleDialog(); }; togglePasswordVisible = () => { this.setState({ isPasswordVisible: !this.state.isPasswordVisible }); }; inputPassword = (e) => { let passwd = e.target.value; this.setState({ password: passwd, errorMsg: '' }, this.checkSubmitBtnActive); }; inputPasswordAgain = (e) => { let passwd = e.target.value; this.setState({ passwordAgain: passwd, errorMsg: '' }, this.checkSubmitBtnActive); }; generatePassword = () => { let val = Utils.generatePassword(8); this.setState({ password: val, passwordAgain: val }, this.checkSubmitBtnActive); }; inputEmail = (e) => { let email = e.target.value; this.setState({ email: email }, this.checkSubmitBtnActive); }; inputName = (e) => { let name = e.target.value; this.setState({ name: name }); }; updateRole = (role) => { this.setState({ role: role }); }; handleSubmit = () => { const { email, password, passwordAgain, name, role } = this.state; if (password != passwordAgain) { this.setState({ errorMsg: gettext('Passwords do not match.') }); return; } let data = { email: email.trim(), name: name.trim(), password: password.trim() }; if (this.props.showRole) { data.role = role; } this.props.addUser(data); this.toggle(); }; render() { const { dialogTitle, showRole } = this.props; const { errorMsg, isPasswordVisible, email, name, role, password, passwordAgain, isSubmitBtnActive } = this.state; return ( {dialogTitle || gettext('Add Member')}
{showRole && }
{errorMsg && {errorMsg}}
); } } SysAdminAddUserDialog.propTypes = propTypes; export default SysAdminAddUserDialog;