import { useMutation } from '@apollo/client'; import { Button, CircularProgress, Dialog, DialogActions, DialogContent, DialogTitle } from '@material-ui/core'; import { ButtonProps } from '@material-ui/core/Button'; import gql from 'graphql-tag'; import { without } from 'lodash'; import * as React from 'react'; import { useState } from 'react'; import { Field, FormRenderProps } from 'react-final-form'; import Form from '../../components/Form'; import ChecklistField from '../../components/form/ChecklistField'; import Input from '../../components/form/TextField'; import { InviteUser, InviteUserVariables, UserRole } from '../../graphql'; import { compose, isEmail, minLength, required } from '../../util/validation'; const mutation = gql` mutation InviteUser($email: String!, $roles: [String!]!) { inviteUser(email: $email, roles: $roles) } `; interface FormProps { email: string; roles: string[]; } const InviteUserDialog = (buttonProps: Partial) => { const [open, updateOpen] = useState(false); const [inviteUser] = useMutation(mutation); return ( <> updateOpen(false)} fullWidth> {open && ( onSubmit={({ email, roles }) => inviteUser({ variables: { email, roles }, }) } initialValues={{ roles: [] }} successMessage="Invited user" onSuccess={() => updateOpen(false)} render={({ handleSubmit, submitting }: FormRenderProps) => (
Invite user
)} /> )}
); }; export default InviteUserDialog;