import { useCallback } from 'react'; import { useForm } from 'react-hook-form'; 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 { Select, SelectOption } from 'components/shared/Select'; import { AddProjectMemberInput, Permission } from 'gql-client'; interface AddMemberDialogProp { open: boolean; handleOpen: () => void; handleAddMember: (data: AddProjectMemberInput) => Promise; } interface formData { emailAddress: string; canEdit: boolean; } const permissionViewOptions: SelectOption = { value: Permission.View, label: Permission.View, }; const permissionEditOptions: SelectOption = { value: Permission.Edit, label: Permission.Edit, }; const permissionsDropdownOptions: SelectOption[] = [ permissionViewOptions, permissionEditOptions, ]; const AddMemberDialog = ({ open, handleOpen, handleAddMember, }: AddMemberDialogProp) => { const { watch, setValue, handleSubmit, register, reset, formState: { isValid }, } = useForm({ defaultValues: { emailAddress: '', canEdit: false, }, }); const submitHandler = useCallback(async (data: formData) => { reset(); handleOpen(); const permissions = [data.canEdit ? Permission.Edit : Permission.View]; await handleAddMember({ email: data.emailAddress, permissions }); }, []); return ( Add member
We will send an invitation link to this email address. Email address