import styled from '@emotion/styled'; import { Box, Typography } from '@mui/material'; import { useEffect, useState } from 'react'; import { toast } from 'react-toastify'; import { UsersApi } from '../../../api/users'; import { PrimaryButton, SecondaryButton } from '../../../components/common/Buttons/Buttons'; import InlineTagInput from '../../../components/common/InlineTagInput'; import Modal from '../../../components/common/Modal/Modal'; import { EmptyListIcon } from '../../../components/common/icons/icons'; import { TrashSvg } from '../../../components/common/icons/icons'; const ContainerForEmptyIcon = styled(Box)` height: 22.88rem; width: 58.13rem; display: flex; flex-direction: column; gap: 1.5rem; justify-content: center; align-items: center; `; export const ModalAddUsers = ({ open, onClose, onAddUser }) => { const [users, setUsers] = useState([]); const [tableIsEmpty, setTableEmpty] = useState(true); const [usersEmailToAdd, setUsersToAdd] = useState([]); const handleAddToListUser = (users) => { setUsers(users); setTableEmpty(false); }; useEffect(() => { setUsers([]); setTableEmpty(true); setUsersToAdd([]); }, [open]); useEffect(() => { const newUsers = users.map((u) => ({ full_name: '', email: u, username: u.split('@')[0], })); setUsersToAdd((prev) => [...prev, ...newUsers]); }, [users]); const handleDeleteUser = (indx) => { setUsersToAdd((prev) => { return prev.filter((item, i) => i !== indx); }); }; const handleAddUsers = () => { for (const user of usersEmailToAdd) { user['password'] = 'admin123'; UsersApi.createUser(user) .then((data) => { if (data.success) { onAddUser(data.result); } else { toast.error('При добавлении пользователя возникла ошибка: ', data.message); } }) .catch((error) => { toast.error('При добавлении пользователя возникла ошибка: '); }); } onClose?.(); }; return ( Отменить Сохранить }> {users.length == 0 && tableIsEmpty ? ( Список пользователей пуст ) : ( ФИО Почта {usersEmailToAdd.map((user, index) => ( { user.full_name = event.target.value; }} style={{ border: '1px solid #ccc', borderRadius: '0.5rem', fontSize: '0.75rem', boxSizing: 'border-box', width: '20.5rem', height: '2rem', padding: '0.25rem 0.75rem', color: '#4a5565', }} /> {user.email} ))} )} ); };