Merge branch 'main' into 'feature/admin-view'

# Conflicts:
#   client/src/components/Sidebar/Sidebar.jsx
#   client/src/constants/viewKeys.js
This commit is contained in:
Dan Hansen
2025-08-13 22:42:56 +00:00
3 changed files with 22 additions and 20 deletions
@@ -3,7 +3,7 @@ import { chakra, useSlotRecipe } from "@chakra-ui/react";
export default function Tooltip ({tooltipkey, content, sidebarIsOpen, children}) { export default function Tooltip ({tooltipkey, content, sidebarIsOpen, children}) {
const [isVisible, setIsVisible] = useState(!sidebarIsOpen); const [isVisible, setIsVisible] = useState(false);
const recipe = useSlotRecipe({ key: "sidebar" }); const recipe = useSlotRecipe({ key: "sidebar" });
const styles = recipe(); const styles = recipe();
const timeoutId = useRef(null); const timeoutId = useRef(null);
@@ -41,7 +41,7 @@ export default function Tooltip ({tooltipkey, content, sidebarIsOpen, children})
py={1} py={1}
borderRadius="md" borderRadius="md"
whiteSpace="nowrap" whiteSpace="nowrap"
zIndex={10} zIndex="overlay" // zIndex = 1300
> >
{content} {content}
</chakra.div> </chakra.div>
+16 -17
View File
@@ -9,7 +9,7 @@ import { HiUsers } from "react-icons/hi2";
import { VscThreeBars } from "react-icons/vsc"; import { VscThreeBars } from "react-icons/vsc";
import { MdOutlineSecurity } from "react-icons/md"; import { MdOutlineSecurity } from "react-icons/md";
import { IoPersonCircleSharp } from "react-icons/io5"; import { IoPersonCircleSharp } from "react-icons/io5";
import { useState, useEffect } from "react"; import { useState, useEffect, useMemo } from "react";
import { DASHBOARD_VIEWS } from "@/constants/viewKeys"; import { DASHBOARD_VIEWS } from "@/constants/viewKeys";
export default function Sidebar({ view, onChangeView, darkMode, setDarkMode }) { export default function Sidebar({ view, onChangeView, darkMode, setDarkMode }) {
@@ -19,22 +19,21 @@ export default function Sidebar({ view, onChangeView, darkMode, setDarkMode }) {
const styles = recipe(); const styles = recipe();
const { toggleColorMode } = useColorMode(); const { toggleColorMode } = useColorMode();
// this list of btns will come from the db (not every usr will have access to admin) const buttons = useMemo(() => {
let buttons = [ if (["settings", "personal", "security"].includes(view)) {
{icon: FaHome, name: "Home", view: "mydashboard"}, return [
{icon: FaGlobeAmericas, name: "Global Map", view: "global"}, {icon: IoPersonCircleSharp, name: "Personal Info", view: "personal"},
{icon: FaMapMarkerAlt, name: "Regional Map", view: "regional"}, {icon: MdOutlineSecurity, name: "Security", view: "security"},
{icon: FaVolcano, name: "Volcano", view: "volcano"}, ];
{icon: HiUsers, name: "Admin", view: "medataentry"} }
]; return [
{icon: FaHome, name: "Home", view: "mydashboard"},
// Different Sidebar Button Options for Settings View {icon: FaGlobeAmericas, name: "Global Map", view: "global"},
if (view === "settings" || view === "personal" || view === "security") { {icon: FaMapMarkerAlt, name: "Regional Map", view: "regional"},
buttons = [ {icon: FaVolcano, name: "Volcano", view: "volcano"},
{icon: IoPersonCircleSharp, name: "Personal Info", view: "personal"}, {icon: HiUsers, name: "Admin", view: "admin"}
{icon: MdOutlineSecurity, name: "Security", view: "security"}, ];
] }, [view]);
};
const toggleSidebar = () => { const toggleSidebar = () => {
if (isOpen) setIsOpen(false); if (isOpen) setIsOpen(false);
+4 -1
View File
@@ -18,5 +18,8 @@ export const VIEW_LABELS = {
medataentry: "M&E Data Entry", medataentry: "M&E Data Entry",
projectcollector: "Project Collector", projectcollector: "Project Collector",
nasapplication: "NAS Application", nasapplication: "NAS Application",
ivans: "IVANS" ivans: "IVANS",
settings: "Settings",
personal: "Personal Info",
security: "Security",
}; };