aboutsummaryrefslogtreecommitdiffstats
path: root/public/projects/react-small-apps/apps/todos/src/components/layout/Header/Header.js
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-02-20 16:11:50 +0100
committerArmand Philippot <git@armandphilippot.com>2022-02-20 16:15:08 +0100
commit73a5c7fae9ffbe9ada721148c8c454a643aceebe (patch)
treec8fad013ed9b5dd589add87f8d45cf02bbfc6e91 /public/projects/react-small-apps/apps/todos/src/components/layout/Header/Header.js
parentb01239fbdcc5bbc5921f73ec0e8fee7bedd5c8e8 (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.js39
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;