import React from "react"; import planeVector from "../../assets/images/planeVector.png"; import * as Yup from "yup"; import PropTypes from "prop-types"; import { Dialog, DialogContent, DialogTitle, DialogActions, useMediaQuery, useTheme, IconButton, TextField, } from "@mui/material"; import { useDispatch, useSelector } from "react-redux"; import { useEffect } from "react"; import { inviteUserReq } from "../../store/actions/users/usersActions"; import { useTranslation } from "react-i18next"; import { useFormik } from "formik"; const InviteDialog = ({ title, onClose, open, maxWidth, fullWidth, responsive, }) => { const dispatch = useDispatch(); const { isSuccess } = useSelector((s) => s.invite); const theme = useTheme(); const fullScreen = useMediaQuery(theme.breakpoints.down("md")); const { t } = useTranslation(); const handleClose = () => { onClose(); formik.resetForm(); }; const handleSubmit = (values, { resetForm }) => { const { lastName, firstName, email } = values; dispatch( inviteUserReq({ invite: { lastName, firstName, email, }, handleApiResponseSuccess: resetForm, }) ); }; const formik = useFormik({ initialValues: { firstName: "", lastName: "", email: "", }, validationSchema: Yup.object().shape({ firstName: Yup.string().required(t("login.firstnameRequired")), lastName: Yup.string().required(t("login.lastnameRequired")), email: Yup.string() .required(t("login.emailRequired")) .matches(/^[\w-.]+@([\w-]+\.)+[\w-]{2,4}$/, t("login.invalidEmail")), }), onSubmit: handleSubmit, validateOnBlur: true, enableReinitialize: true, }); useEffect(() => { handleClose(); }, [dispatch, isSuccess]); return (
{title}
{/* */}
{" "} {t("registration.link")}
); }; InviteDialog.propTypes = { title: PropTypes.any, open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, maxWidth: PropTypes.oneOf(["xs", "sm", "md", "lg", "xl"]), fullWidth: PropTypes.bool, responsive: PropTypes.bool, }; export default InviteDialog;