verou1
2025-03-10 50f4e2c3a3c5c9d4edafab346c58e3862b7610eb
rsf-admin/src/layout/MyMenu.jsx
@@ -6,15 +6,15 @@
    Menu,
    useSidebarState,
    usePermissions,
} from 'react-admin';
import { useLocation } from 'react-router-dom';
import { Box } from '@mui/material';
import SubMenu from './SubMenu';
import SettingsIcon from '@mui/icons-material/Settings';
import DashboardIcon from '@mui/icons-material/Dashboard';
import HorizontalRuleIcon from '@mui/icons-material/HorizontalRule';
import PersonIcon from '@mui/icons-material/Person';
import * as Icons from '@mui/icons-material';
} from "react-admin";
import { useLocation } from "react-router-dom";
import { Box } from "@mui/material";
import SubMenu from "./SubMenu";
import SettingsIcon from "@mui/icons-material/Settings";
import DashboardIcon from "@mui/icons-material/Dashboard";
import HorizontalRuleIcon from "@mui/icons-material/HorizontalRule";
import PersonIcon from "@mui/icons-material/Person";
import * as Icons from "@mui/icons-material";
const getIconComponent = (iconStr) => {
    return Icons[iconStr] || HorizontalRuleIcon;
@@ -29,10 +29,14 @@
    useEffect(() => {
        // default open sub menu
        const defaultExpandMenu = ["menu.system", "menu.dispatcher", "menu.equipment"];
        permissions?.forEach(item => {
    const defaultExpandMenu = [
      "menu.system",
      "menu.dispatcher",
      "menu.equipment",
    ];
    permissions?.forEach((item) => {
            if (defaultExpandMenu.includes(item.name)) {
                setState(state => ({ ...state, [item.route]: true }));
        setState((state) => ({ ...state, [item.route]: true }));
            }
        });
    }, [permissions]);
@@ -40,15 +44,14 @@
    useEffect(() => {
        // expand this parent menu
        const currentPath = location.pathname;
        const parentRoutes = findParentRoutes(currentPath, permissions)
    const parentRoutes = findParentRoutes(currentPath, permissions);
        for (const parentRoute of parentRoutes) {
            setState(state => ({ ...state, [parentRoute]: true }));
      setState((state) => ({ ...state, [parentRoute]: true }));
        }
    }, [location.pathname]);
    const handleToggle = (menu) => {
        setState(state => ({ ...state, [menu]: !state[menu] }));
    setState((state) => ({ ...state, [menu]: !state[menu] }));
    };
    const getIcon = (iconStr) => {
@@ -93,16 +96,16 @@
        });
    };
    return isPending
        ? (<div>Waiting for permissions...</div>) :
        (
  return isPending ? (
    <div>Waiting for permissions...</div>
  ) : (
            <Box
                sx={{
                    width: sidebarIsOpen ? 200 : 50,
                    marginTop: 1,
                    marginBottom: 1,
                    transition: theme =>
                        theme.transitions.create('width', {
        transition: (theme) =>
          theme.transitions.create("width", {
                            easing: theme.transitions.easing.sharp,
                            duration: theme.transitions.duration.leavingScreen,
                        }),
@@ -113,7 +116,7 @@
                    primaryText="menu.dashboard"
                    leftIcon={<DashboardIcon />}
                />
                {permissions && (generateMenu(permissions))}
      {permissions && generateMenu(permissions)}
                {/* <Menu.ResourceItems /> */}
                <Menu.Item
                    to="/settings"
@@ -121,8 +124,8 @@
                    leftIcon={<PersonIcon />}
                />
            </Box>
        )
}
  );
};
const findParentRoutes = (pathname, permissions) => {
    if (!pathname || !permissions) {
@@ -147,7 +150,9 @@
        const parentRoutes = [];
        let current = item;
        while (current && current.parentId) {
            const parent = allPermissions.find(permission => permission.id === current.parentId);
      const parent = allPermissions.find(
        (permission) => permission.id === current.parentId,
      );
            if (parent) {
                parentRoutes.push(parent.route);
                current = parent;