Files
expert-front/src/components/layouts/Dashboard/Content/index.jsx
AmirHossein Mahmoodi c5c28dcde5 Feature/show scroll bar
2024-11-17 10:36:14 +00:00

70 lines
2.4 KiB
JavaScript

import LoadingHardPage from "@/core/components/LoadingHardPage";
import RolePermissionMiddleware from "@/middlewares/RolePermission";
import BreadCrumbs from "@/components/layouts/Dashboard/Breadcrumbs";
import FullPageLayout from "@/layouts/FullPageLayout";
import { useEffect, useMemo, useState } from "react";
import sidebarMenu from "@/core/data/sidebarMenu";
import { useRouter } from "next/router";
import { useTranslations } from "next-intl";
const Content = (props) => {
const t = useTranslations();
const router = useRouter();
const [routing, setRouting] = useState(false);
const [routingItem, setRoutingItem] = useState({});
const pageList = useMemo(() => {
const list = [];
for (const menu of sidebarMenu) {
for (const item of menu) {
if (item.type === "menu") {
for (const subItem of item.subItem) {
list.push(subItem);
}
} else {
list.push(item);
}
}
}
return list;
}, []);
useEffect(() => {
const handlerStartRoute = (url) => {
setRoutingItem(pageList.find((page) => page.route === url));
setRouting(true);
};
const handlerCompleteRoute = () => {
setRouting(false);
};
router.events.on("routeChangeStart", handlerStartRoute);
router.events.on("routeChangeComplete", handlerCompleteRoute);
return () => {
router.events.off("routeChangeStart", handlerStartRoute);
router.events.off("routeChangeComplete", handlerCompleteRoute);
};
}, [router]);
return (
<FullPageLayout sx={{ mt: 3, position: "relative", overflowX: "hidden" }}>
<LoadingHardPage
icon={routingItem?.icon}
label={routingItem?.key ? `${t("routing_to")} ${t(routingItem?.key)}` : ""}
loading={routing}
width={100}
height={100}
sx={{ position: "absolute", bgcolor: "#fffc" }}
>
<RolePermissionMiddleware requiredPermissions={props.permissions}>
<BreadCrumbs isVisible={true} />
{props.children}
</RolePermissionMiddleware>
</LoadingHardPage>
</FullPageLayout>
);
};
export default Content;