import React, { useCallback } from 'react'; import { useForm } from 'react-hook-form'; import { AddProjectMemberInput, Permission } from 'gql-client'; import { Button, Dialog, DialogHeader, DialogBody, DialogFooter, Input, Typography, Checkbox, } from '@material-tailwind/react'; interface AddMemberDialogProp { open: boolean; handleOpen: () => void; handleAddMember: (data: AddProjectMemberInput) => Promise; } interface formData { emailAddress: string; permissions: { view: boolean; edit: boolean; }; } const AddMemberDialog = ({ open, handleOpen, handleAddMember, }: AddMemberDialogProp) => { const { handleSubmit, register, reset, formState: { isValid }, } = useForm({ defaultValues: { emailAddress: '', permissions: { view: true, edit: false, }, }, }); const submitHandler = useCallback(async (data: formData) => { reset(); handleOpen(); const permissions = Object.entries(data.permissions) .filter(([, value]) => value) .map( ([key]) => key.charAt(0).toUpperCase() + key.slice(1), ) as Permission[]; await handleAddMember({ email: data.emailAddress, permissions }); }, []); return (
Add member
We will send an invitation link to this email address. Email address Permissions You can change this later if required.
); }; export default AddMemberDialog;