Modal.jsx 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import { useState } from "react"
  2. import Box from '@mui/material/Box';
  3. import Modal from '@mui/material/Modal';
  4. import Fade from '@mui/material/Fade';
  5. import { Fab} from '@mui/material';
  6. import AddIcon from '@mui/icons-material/Add';
  7. import Backdrop from '@mui/material/Backdrop';
  8. import CreateNewChat, { FindUserModal, MainChatModal } from "./CreateNewChat";
  9. import { connect } from "react-redux";
  10. import { actionIsOpen } from "../reducers/modalReducer";
  11. import ChatInfoModal from "./ChatInfoModal/ChatInfoModal";
  12. import ChatEditorModal from "./ChatEditorModal/ChatEditorModal";
  13. import UserEditorModal from "./UserEditorModal/UserEditorModal";
  14. import MessageMediaModal from "./MessageMediaModal/MessageMediaModal";
  15. import { history } from "../App";
  16. import SearchChatModal from "./SearchChatModal/SearchChatModal";
  17. import MessageEditorMediaModal from "./MessageEditorMediaModal/MessageEditorMediaModal";
  18. const ModalComponent = ({modal, setOpen}) => {
  19. const [,route, histId] = history.location.pathname.split('/');
  20. const open = modal?.isOpen || false;
  21. const handleClose = () => setOpen(false);
  22. const modalMap = {
  23. createChatModal: <CreateNewChat handleClose={handleClose}/>,
  24. chatInfoModal: <ChatInfoModal handleClose={handleClose}/>,
  25. chatEditorModal: <ChatEditorModal handleClose={handleClose}/>,
  26. userEditorModal: <UserEditorModal handleClose={handleClose}/>,
  27. messageMediaModal: <MessageMediaModal chatId={histId} open={open} handleClose={handleClose}/>,
  28. searchChatModal: <SearchChatModal handleClose={handleClose}/>,
  29. messageEditorMediaModal: <MessageEditorMediaModal chatId={histId} open={open} handleClose={handleClose}/>
  30. }
  31. return (
  32. <Modal
  33. aria-labelledby="transition-modal-title"
  34. aria-describedby="transition-modal-description"
  35. open={open}
  36. onClose={handleClose}
  37. closeAfterTransition
  38. disableAutoFocus
  39. BackdropComponent={Backdrop}
  40. BackdropProps={{
  41. timeout: 500,
  42. }}
  43. >
  44. <Fade in={open}>
  45. <Box className='ModalBox'>
  46. {modalMap[modal.content]}
  47. </Box>
  48. </Fade>
  49. </Modal>
  50. )
  51. }
  52. export const CModalComponent = connect(state => ({modal: state?.modal || {} }), {setOpen: actionIsOpen})(ModalComponent)