diff --git a/src/app_modules/admin/_components_v3/comp_button_user_circle.tsx b/src/app_modules/admin/_components_v3/comp_button_user_circle.tsx index e18bebaf..30c0ab7d 100644 --- a/src/app_modules/admin/_components_v3/comp_button_user_circle.tsx +++ b/src/app_modules/admin/_components_v3/comp_button_user_circle.tsx @@ -14,7 +14,7 @@ import { SimpleGrid, Stack, Text, - Title + Title, } from "@mantine/core"; import { IconBell, @@ -22,7 +22,7 @@ import { IconLogout, IconReplaceUser, IconUser, - IconUserCircle + IconUserCircle, } from "@tabler/icons-react"; import { useRouter } from "next/navigation"; import { useState } from "react"; @@ -30,12 +30,24 @@ import { Admin_ComponentModal } from "../_admin_global/_component/comp_admin_mod export function Admin_V3_ComponentButtonUserCircle({ dataUser, + openPop, + setOpenPop, + setNavbarOpen, + setDrawerNotifikasi, }: { dataUser: MODEL_USER | null; + openPop: boolean; + setOpenPop: React.Dispatch>; + // setOpenPop: (open: boolean) => void; + setNavbarOpen: React.Dispatch>; + // setNavbarOpen: (open: boolean) => void; + setDrawerNotifikasi: React.Dispatch>; + // setDrawerNotifikasi: (open: boolean) => void; + }) { const router = useRouter(); const [isOpenMenuUser, setOpenMenuUser] = useState(false); - const [openPop, setOpenPop] = useState(false); + // const [openPop, setOpenPop] = useState(false); const [openModalLogout, setOpenModalLogout] = useState(false); const [openModalReplaceUser, setOpenModalReplaceUser] = useState(false); const [loadingLogout, setLoadingLogout] = useState(false); @@ -62,7 +74,7 @@ export function Admin_V3_ComponentButtonUserCircle({ icon: IconBell, label: "Notifikasi", color: "", - onClick: () => console.log("Notifikasi"), + onClick: () => setDrawerNotifikasi(true), }, { icon: IconReplaceUser, @@ -100,6 +112,7 @@ export function Admin_V3_ComponentButtonUserCircle({ variant="transparent" onClick={() => { setOpenPop((o) => !o); + setNavbarOpen(false); }} > @@ -116,7 +129,7 @@ export function Admin_V3_ComponentButtonUserCircle({ {listMenu.map((e, i) => ( - {e.label} + {e.label} ))} @@ -131,58 +144,10 @@ export function Admin_V3_ComponentButtonUserCircle({ ))} - - {/* - - - */} - {/* setOpenModal(false)} - centered - withCloseButton={false} - closeOnClickOutside={false} - > - - Anda yakin ingin keluar ? - - - - - - */} - setOpenModalLogout(false)} @@ -205,7 +170,7 @@ export function Admin_V3_ComponentButtonUserCircle({ diff --git a/src/app_modules/admin/_components_v3/main_layout.tsx b/src/app_modules/admin/_components_v3/main_layout.tsx index c1d5c244..2aa70eb2 100644 --- a/src/app_modules/admin/_components_v3/main_layout.tsx +++ b/src/app_modules/admin/_components_v3/main_layout.tsx @@ -6,38 +6,38 @@ import { MODEL_USER } from "@/app_modules/home/model/interface"; import { MODEL_NOTIFIKASI } from "@/app_modules/notifikasi/model/interface"; import { gs_admin_ntf } from "@/lib/global_state"; import { - AppShell, - Burger, - Divider, - Group, - Header, - MediaQuery, - Navbar, - ScrollArea, - Stack, - Text, - useMantineTheme + AppShell, + Burger, + Divider, + Drawer, + Group, + Header, + MediaQuery, + Navbar, + ScrollArea, + Stack, + Text, + useMantineTheme, } from "@mantine/core"; import { useDisclosure, useShallowEffect } from "@mantine/hooks"; import { - IconBriefcase, - IconCoin, - IconHome, - IconMessage, - IconUser + IconBriefcase, + IconCoin, + IconHome, + IconMessage, + IconUser, } from "@tabler/icons-react"; import { useAtom } from "jotai"; import { usePathname, useRouter } from "next/navigation"; import type React from "react"; import { useState } from "react"; +import { Admin_UiNavbar } from "../_admin_global"; import { - Admin_UiNavbar -} from "../_admin_global"; -import { - gs_admin_navbar_menu, - gs_admin_navbar_subMenu, + gs_admin_navbar_menu, + gs_admin_navbar_subMenu, } from "../_admin_global/new_global_state"; import { Admin_V3_ComponentButtonUserCircle } from "./comp_button_user_circle"; +import { Admin_V3_SkeletonNavbar } from "./skeleton_navbar"; export function Admin_V3_MainLayout({ children, @@ -52,7 +52,6 @@ export function Admin_V3_MainLayout({ listNotifikasi: MODEL_NOTIFIKASI[]; version: string; }) { - const router = useRouter(); const [dataUser, setDataUser] = useState(null); const userRoleId = dataUser?.masterUserRoleId; const [activeId, setActiveId] = useAtom(gs_admin_navbar_menu); @@ -61,7 +60,6 @@ export function Admin_V3_MainLayout({ useState(listNotifikasi); // Notifikasi - const [isDrawerNotifikasi, setDrawerNotifikasi] = useState(false); const [countNtf, setCountNtf] = useState(countNotifikasi); const [newAdminNtf, setNewAdminNtf] = useAtom(gs_admin_ntf); @@ -82,54 +80,74 @@ export function Admin_V3_MainLayout({ console.error("Error fetching user data", error); } } + const [openPop, setOpenPop] = useState(false); + const [opened, handlers] = useDisclosure(false); + const [openedDrawer, handlersDrawer] = useDisclosure(false); + const pathname = usePathname(); - const [opened, { toggle, close }] = useDisclosure(false); + const navLinks = [ + { icon: IconHome, label: "Home", path: "/" }, + { icon: IconBriefcase, label: "Portfolio", path: "/portfolio" }, + { icon: IconUser, label: "About Me", path: "/about" }, + { icon: IconCoin, label: "Price List", path: "/pricing" }, + { icon: IconMessage, label: "Contact", path: "/contact" }, + ]; + const isActive = (path: string) => { + if (path === "/" && pathname === "/") return true; + if (path !== "/" && pathname.startsWith(path)) return true; + return false; + }; return ( - + } + opened={openedDrawer} + onClose={handlersDrawer.toggle} + position="right" + size={"sm"} + > + On Maintenance . . . + {/* { + setActiveId(val.id as any); + setActiveChildId(val.childId); + }} + onToggleNavbar={(val: any) => { + setDrawerNotifikasi(val); + }} + onLoadCountNotif={(val: any) => { + setCountNtf(val); + }} + /> */} + + ); } diff --git a/src/app_modules/admin/_components_v3/skeleton_navbar.tsx b/src/app_modules/admin/_components_v3/skeleton_navbar.tsx new file mode 100644 index 00000000..e229cc86 --- /dev/null +++ b/src/app_modules/admin/_components_v3/skeleton_navbar.tsx @@ -0,0 +1,32 @@ +import { Box, NavLink, Text } from "@mantine/core"; +import _ from "lodash"; +import { newListAdminPage } from "../new_list_page"; + +export function Admin_V3_SkeletonNavbar() { + const listPage = newListAdminPage.slice(0, -1); + return ( + <> + {listPage.map((parent) => ( + + {parent.name}} + icon={parent.icon} + > + {!_.isEmpty(parent.child) && + parent.child.map((child) => )} + + + ))} + + ); +} diff --git a/src/app_modules/admin/main_dashboard/main/view.tsx b/src/app_modules/admin/main_dashboard/main/view.tsx index f16fdfe7..fbd2b575 100644 --- a/src/app_modules/admin/main_dashboard/main/view.tsx +++ b/src/app_modules/admin/main_dashboard/main/view.tsx @@ -16,18 +16,15 @@ export default function AdminMain() { const [countUser, setCountUser] = useState(null); const [countPortofolio, setCountPortofolio] = useState(null); - // useShallowEffect(() => { - // onLoadDataUser(); - // onLoadDataPortofolio(); - // }, []); + useShallowEffect(() => { + onLoadDataUser(); + onLoadDataPortofolio(); + }, []); async function onLoadDataUser() { try { const response = await apiGetCountUserActive(); if (response) { - // console.log(response.data); - // console.log(typeof response.data); - // console.log( response); setCountUser(response.data); }