import { useState, useRef, useEffect } from 'react'; import { useSelector,useDispatch } from 'react-redux'; import { createPortal } from 'react-dom'; import Grid from '@mui/material/Grid' import SmallMenuBar from './SmallMenuBar' import SearchLists from './SearchLists'; import SearchBar from './SearchBar' import ChatsList from './ChatsList' import MenuBar from './MenuBar' import ContactsList from './ContactsList' import AddContact from './AddContact' import SettingsBar from './SettingsBar'; import EditBar from './EditBar'; import { getAuthorizationState } from '../../../redux/authorization/selector'; import { getLeftIsOpen } from '../../../redux/control/selector'; import { actionLeftIsOpen } from '../../../redux/control/action'; const LeftBar = () => { const dispatch = useDispatch() const { sort, nightMode } = useSelector(getAuthorizationState) const leftIsOpen = useSelector(getLeftIsOpen) const [modal, setModal] = useState(false) const [popup, setPopup] = useState(false); const [disabled, setDisabled] = useState(false) const [value, setValue] = useState('') const [date, setDate] = useState(''); const modalRoot = useRef(null); const handleOpenIsSearch = () => leftIsOpen===''&&dispatch(actionLeftIsOpen('searchChats')) const handleClick = () => { dispatch(actionLeftIsOpen('')) setModal(true) } const handleSearch = (e: React.ChangeEvent):void => setValue(e.target.value) const handleEnterOpenMenuSm = () => !popup&&setPopup(true) const handleLeaveCloseMenuSm = () => popup&&setPopup(false) useEffect(() => { setValue('') setDate('') setModal(false) setPopup(false) },[leftIsOpen]) useEffect(() => { const handleCloseModal = (e:any) => { if (e.target.id === 'overlay') { setModal(false) setPopup(false) } } if (!modalRoot.current) { const modalHtml = document.getElementById('modal-root') as HTMLDivElement | null if (modalHtml) { modalHtml.addEventListener('click',handleCloseModal) modalRoot.current = modalHtml } } return () => { if (modalRoot.current) { modalRoot.current.removeEventListener('click',handleCloseModal) modalRoot.current = null } } }, []) return ( {leftIsOpen === '' || leftIsOpen === 'contacts' || leftIsOpen === 'searchChats' || leftIsOpen === 'searchAllMessages' ? :null} {leftIsOpen === 'searchChats' || leftIsOpen === 'searchAllMessages' ?:null} {leftIsOpen === ''&&} {leftIsOpen === '' && popup && } {modal && modalRoot.current && createPortal(, modalRoot.current)} {leftIsOpen === 'contacts' && } {leftIsOpen === 'contact' && } {leftIsOpen === 'settings' && } {leftIsOpen === 'edit' && } ) } export default LeftBar