|
@@ -1,4 +1,5 @@
|
|
|
-import React, { useState, useRef, useEffect } from 'react';
|
|
|
+import { useState, useRef, useEffect } from 'react';
|
|
|
+import { useSelector } from 'react-redux';
|
|
|
import { createPortal } from 'react-dom';
|
|
|
|
|
|
import Grid from '@mui/material/Grid'
|
|
@@ -10,34 +11,36 @@ import MenuBar from './MenuBar'
|
|
|
import ContactsList from './ContactsList'
|
|
|
import AddContact from './AddContact'
|
|
|
import NotDone from '../../reusableComponents/NotDone'
|
|
|
+import { getState } from '../../../redux/authorization/selector'
|
|
|
|
|
|
const LeftBar = () => {
|
|
|
- const [isOpen, setIsOpen] = useState<boolean>(false)
|
|
|
+ const { sort,nightMode } = useSelector(getState)
|
|
|
+ const [isSearch, setIsSearch] = useState<boolean>(false)
|
|
|
const [isMenu, setIsMenu] = useState<boolean>(false)
|
|
|
const [isMenuSm, setIsMenuSm] = useState<boolean>(false);
|
|
|
- const [iMenu, setIMenu] = useState<number | null>(null)
|
|
|
+ const [selectedIndex, setSelectedIndex] = useState<number | null>(null)
|
|
|
const [value, setValue] = useState<string>('')
|
|
|
const modalRoot = useRef<HTMLDivElement|null>(null);
|
|
|
- const handleFocus = (): void => setIsOpen(true)
|
|
|
+ const handleFocus = (): void => setIsSearch(true)
|
|
|
const handleClick = (): void => {
|
|
|
- setValue('')
|
|
|
- if (iMenu) setIMenu(null)
|
|
|
- if(!isOpen) return setIsMenu(!isMenu)
|
|
|
- setIsOpen(false)
|
|
|
+ setValue('')
|
|
|
+ if (selectedIndex) setSelectedIndex(null)
|
|
|
+ if(!isSearch) return setIsMenu(!isMenu)
|
|
|
+ setIsSearch(false)
|
|
|
}
|
|
|
const handleSearch = (e: React.ChangeEvent<HTMLInputElement>):void => setValue(e.target.value)
|
|
|
const handleEnterOpenMenuSm = (): void => {
|
|
|
- if(!isMenuSm) setIsMenuSm(true)
|
|
|
+ if(!isMenuSm) setIsMenuSm(true)
|
|
|
}
|
|
|
const handleLeaveCloseMenuSm = (e: any): void => {
|
|
|
- if(isMenuSm&&e.pageX > 480) setIsMenuSm(false)
|
|
|
+ if(isMenuSm&&e.pageX > 480) setIsMenuSm(false)
|
|
|
}
|
|
|
const handleSelectedMenu = (i: number) => {
|
|
|
- setIsOpen(true)
|
|
|
+ setIsSearch(true)
|
|
|
setIsMenu(false)
|
|
|
setIsMenuSm(false)
|
|
|
setValue('')
|
|
|
- setIMenu(i)
|
|
|
+ setSelectedIndex(i)
|
|
|
}
|
|
|
|
|
|
useEffect(() => {
|
|
@@ -64,17 +67,17 @@ const LeftBar = () => {
|
|
|
|
|
|
return (
|
|
|
<Grid item lg={3} onMouseEnter={handleEnterOpenMenuSm} onMouseLeave={handleLeaveCloseMenuSm}>
|
|
|
- <SearchBar handleClick={handleClick} handleFocus={handleFocus}
|
|
|
- handleSearch={handleSearch} isOpen={isOpen} iMenu={iMenu} value={value}/>
|
|
|
- {!iMenu&&isOpen && <SearchLists value={value} setValue={setValue}/>}
|
|
|
- {!iMenu&&!isOpen &&<ChatsList/>}
|
|
|
- {!iMenu && isMenuSm && !isOpen && <SmallMenuBar handleSelectedMenu={handleSelectedMenu}
|
|
|
- setIsMenuSm={setIsMenuSm} />}
|
|
|
+ <SearchBar handleClick={handleClick} handleFocus={handleFocus} sort={sort}
|
|
|
+ handleSearch={handleSearch} isSearch={isSearch} selectedIndex={selectedIndex} value={value}/>
|
|
|
+ {!selectedIndex&&isSearch && <SearchLists value={value} setValue={setValue} sort={sort}/>}
|
|
|
+ {!selectedIndex&&!isSearch &&<ChatsList sort={sort}/>}
|
|
|
+ {!selectedIndex && isMenuSm && !isSearch && <SmallMenuBar
|
|
|
+ handleSelectedMenu={handleSelectedMenu} setIsMenuSm={setIsMenuSm} />}
|
|
|
{isMenu && modalRoot.current &&
|
|
|
- createPortal(<MenuBar handleSelectedMenu={handleSelectedMenu} />, modalRoot.current)}
|
|
|
- {iMenu === 1 && <ContactsList handleClick={handleClick} value={value}/>}
|
|
|
- {iMenu === 2 && <NotDone name='Settings' />}
|
|
|
- {iMenu === 3 && <AddContact setIMenu={setIMenu}/>}
|
|
|
+ createPortal(<MenuBar handleSelectedMenu={handleSelectedMenu} nightMode={nightMode}/>, modalRoot.current)}
|
|
|
+ {selectedIndex === 1 && <ContactsList handleClick={handleClick} value={value} sort={sort}/>}
|
|
|
+ {selectedIndex === 2 && <NotDone name='Settings' />}
|
|
|
+ {selectedIndex === 3 && <AddContact setSelectedIndex={setSelectedIndex}/>}
|
|
|
</Grid>
|
|
|
)
|
|
|
}
|