import React, { useState, useCallback } from 'react'; import { Button, Center, Flex, Modal, ModalBody, ModalCloseButton, ModalContent, ModalFooter, ModalHeader, ModalOverlay, useDisclosure, useToast, Tabs, TabList, Tab, TabPanels, TabPanel, InputGroup, Input, InputRightElement, Text, Link, } from '@chakra-ui/react'; import { useClient } from 'urql'; import { FaUserPlus, FaMinusCircle, FaPlus, FaUpload } from 'react-icons/fa'; import { useDropzone } from 'react-dropzone'; import { escape } from 'lodash'; import { validateEmail } from '../utils'; import { UpdateUser } from '../graphql/mutation'; import { ArrayInputOperations, csvDemoData } from '../constants'; interface emailDataTypes { value: string; isInvalid: boolean; } const InviteEmailModal = () => { const client = useClient(); const toast = useToast(); const { isOpen, onOpen, onClose } = useDisclosure(); const [emails, setEmails] = useState([ { value: '', isInvalid: false, }, { value: '', isInvalid: false, }, { value: '', isInvalid: false, }, { value: '', isInvalid: false, }, ]); const sendInviteHandler = async () => { onClose(); }; const updateEmailListHandler = (operation: string, index: number = 0) => { switch (operation) { case ArrayInputOperations.APPEND: setEmails([ ...emails, { value: '', isInvalid: false, }, ]); break; case ArrayInputOperations.REMOVE: const updatedEmailList = [...emails]; updatedEmailList.splice(index, 1); setEmails(updatedEmailList); break; default: break; } }; const inputChangeHandler = (value: string, index: number) => { const updatedEmailList = [...emails]; updatedEmailList[index].value = value; updatedEmailList[index].isInvalid = !validateEmail(value); setEmails(updatedEmailList); }; const onDrop = useCallback((acceptedFiles) => { console.log(acceptedFiles); }, []); const { getRootProps, getInputProps, isDragActive } = useDropzone({ onDrop }); return ( <> Invite Email Enter emails Upload CSV Emails {emails.map((emailData, index) => ( inputChangeHandler(e.currentTarget.value, index) } /> ))} {isDragActive ? ( Drop the files here... ) : (
Drag 'n' drop the csv file here, or click to select. Download{' '} e.stopPropagation()} > {' '} sample.csv {' '} and modify it.{' '}
)}
); }; export default InviteEmailModal;