import { useCallback } from 'react'; import { useForm } from 'react-hook-form'; import { AddProjectMemberInput, Permission } from 'gql-client'; import { Typography } from '@snowballtools/material-tailwind-react-fork'; import { Button } from 'components/shared/Button'; import { Modal } from 'components/shared/Modal'; import { Input } from 'components/shared/Input'; import { Checkbox } from 'components/shared/Checkbox'; 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;