import React from "react"; import PropTypes from "prop-types"; import Modal from "antd/lib/modal"; import Alert from "antd/lib/alert"; import DynamicForm from "@/components/dynamic-form/DynamicForm"; import { wrap as wrapDialog, DialogPropType } from "@/components/DialogWrapper"; import recordEvent from "@/services/recordEvent"; class CreateUserDialog extends React.Component { static propTypes = { dialog: DialogPropType.isRequired, onCreate: PropTypes.func.isRequired, }; constructor(props) { super(props); this.state = { savingUser: false, errorMessage: null }; this.form = React.createRef(); } componentDidMount() { recordEvent("view", "page", "users/new"); } createUser = () => { this.form.current.validateFieldsAndScroll((err, values) => { if (!err) { this.setState({ savingUser: true }); this.props .onCreate(values) .then(() => { this.props.dialog.close(); }) .catch(error => { this.setState({ savingUser: false, errorMessage: error.message }); }); } }); }; render() { const { savingUser, errorMessage } = this.state; const formFields = [ { name: "name", title: "Name", type: "text", autoFocus: true }, { name: "email", title: "Email", type: "email" }, ].map(field => ({ required: true, props: { onPressEnter: this.createUser }, ...field })); return ( this.createUser()}> {errorMessage && } ); } } export default wrapDialog(CreateUserDialog);