diff --git a/src/components/common/Header.tsx b/src/components/common/Header.tsx index 7ddfcd2..a4cf373 100644 --- a/src/components/common/Header.tsx +++ b/src/components/common/Header.tsx @@ -92,7 +92,7 @@ function Header() { className="relative flex justify-around items-center w-full">
+ className={`${isOpen ? "" : "hidden"} absolute z-99 top-12 right-0 bg-white divide-y divide-gray-100 rounded-lg shadow-sm w-44`}>
{loginState.username}
{loginState.email}
diff --git a/src/components/setting/SettingSideBar.tsx b/src/components/setting/SettingSideBar.tsx index fcebca3..0375312 100644 --- a/src/components/setting/SettingSideBar.tsx +++ b/src/components/setting/SettingSideBar.tsx @@ -3,9 +3,9 @@ interface TabType { title: string; } -function SettingSideBar({setSelectedSection}: { +function SettingSideBar({setSelectedSection, side}: { setSelectedSection: (section: string) => void, - side?: boolean, + side: boolean, }) { const tabList: TabType[] = [ @@ -23,7 +23,7 @@ function SettingSideBar({setSelectedSection}: { return (
+ className={`w-48 h-full flex-col justify-start items-start ${side && "pt-16 px-4 bg-gray-50 h-screen"}`}>
    {tabList.map((tab) =>
  • diff --git a/src/pages/blog/BlogPage.tsx b/src/pages/blog/BlogPage.tsx index 6cb2885..e9b69cc 100644 --- a/src/pages/blog/BlogPage.tsx +++ b/src/pages/blog/BlogPage.tsx @@ -212,9 +212,9 @@ function BlogPage() {
- diff --git a/src/pages/setting/SettingPage.tsx b/src/pages/setting/SettingPage.tsx index 23bca6c..5aa5033 100644 --- a/src/pages/setting/SettingPage.tsx +++ b/src/pages/setting/SettingPage.tsx @@ -1,5 +1,5 @@ import BasicLayout from "../../layout/BasicLayout.tsx"; -import {useEffect, useState} from "react"; +import {useEffect, useRef, useState} from "react"; import PostSettingPage from "./PostSettingPage.tsx"; import ProfileSettingPage from "./ProfileSettingPage.tsx"; import FolderSettingPage from "./FolderSettingPage.tsx"; @@ -7,6 +7,8 @@ import {useNavigate, useParams} from "react-router-dom"; import SettingSideBar from "../../components/setting/SettingSideBar.tsx"; import {useSelector} from "react-redux"; import {RootState} from "../../store.tsx"; +import IconButton from "../../components/common/IconButton.tsx"; +import {MdMenu, MdOutlineExitToApp} from "react-icons/md"; function SettingPage() { @@ -15,6 +17,22 @@ function SettingPage() { const navigate = useNavigate(); const [selectedSection, setSelectedSection] = useState(section || "profile"); + const sideBarRef = useRef(null); + const [menuOpen, setMenuOpen] = useState(false); + + const handleClickOutside = (event: MouseEvent) => { + if (sideBarRef.current && !sideBarRef.current.contains(event.target as Node)) { + setMenuOpen(false); + } + }; + useEffect(() => { + document.addEventListener('mousedown', handleClickOutside); + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, []); + useEffect(() => { navigate(`/setting/${selectedSection}`); }, [selectedSection]); @@ -32,18 +50,39 @@ function SettingPage() { return ( -
- +
+ + +
+
+
+ +
+
+ } + onClick={() => setMenuOpen(prev => !prev)}/> +
{(selectedSection === "profile") && -
+
} {(selectedSection === "folder") && -
+
} {(selectedSection === "post") && -
+
}