diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-02-20 16:11:50 +0100 | 
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-02-20 16:15:08 +0100 | 
| commit | 73a5c7fae9ffbe9ada721148c8c454a643aceebe (patch) | |
| tree | c8fad013ed9b5dd589add87f8d45cf02bbfc6e91 /public/projects/react-small-apps/apps/todos/src/components/layout/Header/Header.js | |
| parent | b01239fbdcc5bbc5921f73ec0e8fee7bedd5c8e8 (diff) | |
chore!: restructure repo
I separated public files from the config/dev files. It improves repo
readability.
I also moved dotenv helper to public/inc directory and extract the
Matomo tracker in the same directory.
Diffstat (limited to 'public/projects/react-small-apps/apps/todos/src/components/layout/Header/Header.js')
| -rw-r--r-- | public/projects/react-small-apps/apps/todos/src/components/layout/Header/Header.js | 39 | 
1 files changed, 39 insertions, 0 deletions
| diff --git a/public/projects/react-small-apps/apps/todos/src/components/layout/Header/Header.js b/public/projects/react-small-apps/apps/todos/src/components/layout/Header/Header.js new file mode 100644 index 0000000..75ecf8b --- /dev/null +++ b/public/projects/react-small-apps/apps/todos/src/components/layout/Header/Header.js @@ -0,0 +1,39 @@ +import { useSelector } from "react-redux"; +import UserOptions from "./UserOptions/UserOptions"; +import "./Header.scss"; +import { useEffect, useRef, useState } from "react"; +import { useLocation } from "react-router"; + +function Header() { +  const [isExpanded, setIsExpanded] = useState(false); +  const currentUser = useSelector((state) => state.auth.currentUser); +  const headerRef = useRef(null); +  const location = useLocation(); + +  useEffect(() => { +    setIsExpanded(false); +  }, [location.pathname]); + +  const closeModal = (e) => { +    if (!headerRef.current.contains(e.relatedTarget)) setIsExpanded(false); +  }; + +  return ( +    <header ref={headerRef} className="header" onBlur={closeModal}> +      <div className="container"> +        <h1 className="branding">ToDos App</h1> +        {currentUser ? ( +          <UserOptions +            username={currentUser.username} +            isExpanded={isExpanded} +            setIsExpanded={setIsExpanded} +          /> +        ) : ( +          "" +        )} +      </div> +    </header> +  ); +} + +export default Header; | 
