Browse Source

navigator修正

develop
sosuke.iwabuchi 1 year ago
parent
commit
e110423cda
1 changed files with 89 additions and 86 deletions
  1. +89
    -86
      src/layouts/dashbord/navigator.tsx

+ 89
- 86
src/layouts/dashbord/navigator.tsx View File

@@ -18,6 +18,12 @@ import usePage from "hooks/usePage";
import { PageID, TabID } from "pages";
import * as React from "react";
import { PathKey, PathOption, getPageId, getPath } from "routes/path";
import PersonIcon from "@mui/icons-material/Person";
import LocalParkingIcon from "@mui/icons-material/LocalParking";
import StoreIcon from "@mui/icons-material/Store";
import LogoutIcon from "@mui/icons-material/Logout";
import UndoIcon from "@mui/icons-material/Undo";

type Group = {
label: string;
children: SubGroup[];
@@ -75,79 +81,74 @@ export default function Navigator(props: DrawerProps) {
const categories: Group[] = [
{
label: "管理メニュー",
children: [],
},
{
label: "ログインユーザ管理",
children: [
{
label: "顧客一覧",
icon: <ArticleIcon />,
id: PageID.ログインユーザ_顧客一覧,
},
{
label: "顧客新規登録",
icon: <ArticleIcon />,
id: PageID.ログインユーザ_顧客新規登録,
},
{
label: "店舗一覧",
icon: <ArticleIcon />,
id: PageID.ログインユーザ_店舗一覧,
},
{
label: "店舗新規登録",
icon: <ArticleIcon />,
id: PageID.ログインユーザ_店舗新規登録,
},
],
},
{
label: "店舗管理",
children: [
{
label: "店舗一覧",
icon: <ArticleIcon />,
id: PageID.店舗一覧,
},
{
label: "店舗新規登録",
icon: <ArticleIcon />,
id: PageID.店舗新規登録,
label: "店舗管理",
icon: <StoreIcon />,
children: [
{
label: "店舗一覧",
id: PageID.店舗一覧,
},
{
label: "店舗新規登録",
id: PageID.店舗新規登録,
},
],
},
],
},
{
label: "駐車場管理",
children: [
{
// label: "QRサービス券駐車場グループ管理",
label: (
<Box>
<Typography variant="body2">QRサービス券</Typography>
<Typography variant="body2">駐車場グループ管理</Typography>
</Box>
),
icon: <ArticleIcon />,
id: [
PageID.QRサービス券駐車場グループ管理,
TabID.QRサービス券駐車場グループ管理_一覧,
label: "駐車場管理",
icon: <LocalParkingIcon />,
children: [
{
label: (
<Box>
<Typography variant="body2">QRサービス券</Typography>
<Typography variant="body2">駐車場グループ管理</Typography>
</Box>
),
id: [
PageID.QRサービス券駐車場グループ管理,
TabID.QRサービス券駐車場グループ管理_一覧,
],
},
],
},
],
},
{
label: "QRサービス券",
children: [
{
label: "サービス券発行",
label: "QRサービス券",
icon: <ArticleIcon />,
id: PageID.サービス券発行用QRコード,
children: [
{
label: "サービス券発行",
id: PageID.サービス券発行用QRコード,
},
{
label: "利用履歴",
id: PageID.利用履歴,
},
],
},
{
label: "利用履歴",
icon: <ArticleIcon />,
id: PageID.利用履歴,
label: "ログインユーザ管理",
icon: <PersonIcon />,
children: [
{
label: "顧客一覧",
id: PageID.ログインユーザ_顧客一覧,
},
{
label: "顧客新規登録",
id: PageID.ログインユーザ_顧客新規登録,
},
{
label: "店舗一覧",
id: PageID.ログインユーザ_店舗一覧,
},
{
label: "店舗新規登録",
id: PageID.ログインユーザ_店舗新規登録,
},
],
},
],
},
@@ -156,11 +157,11 @@ export default function Navigator(props: DrawerProps) {
children: [
{
label: "成り代わり終了",
icon: <SettingsIcon />,
icon: <UndoIcon />,
id: PageID.成り代わり終了,
whenIsSwitched: true,
},
{ label: "ログアウト", icon: <SettingsIcon />, id: PageID.LOGOUT },
{ label: "ログアウト", icon: <LogoutIcon />, id: PageID.LOGOUT },
],
},
];
@@ -272,34 +273,36 @@ function SubGroup({ icon, label, id, children, option }: SubGroup) {
function useContents(children: Child[]) {
const { pageId } = usePage();
const { navigateWhenChanged } = useNavigateCustom();
const { initialized } = useAuth();
const { initialized, currentRole } = useAuth();

const [shouldOpen, setShouldOpen] = React.useState(false);

const elements = React.useMemo(() => {
setShouldOpen(false);
return children.map(({ label, id, option }, index) => {
const selected = getPageId(id) === pageId;
if (selected) {
setShouldOpen(true);
}
return children
.filter(({ id }) => ページアクセス許可判定(currentRole, getPageId(id)))
.map(({ label, id, option }, index) => {
const selected = getPageId(id) === pageId;
if (selected) {
setShouldOpen(true);
}

const handleClick = () => {
const path = getPath(id, option);
navigateWhenChanged(path, undefined, { reload: true });
};
const handleClick = () => {
const path = getPath(id, option);
navigateWhenChanged(path, undefined, { reload: true });
};

return (
<ListItemButton
selected={selected}
sx={{ ...item, pl: 4 }}
key={index}
onClick={handleClick}
>
<ListItemText primary={label} />
</ListItemButton>
);
});
return (
<ListItemButton
selected={selected}
sx={{ ...item, pl: 4 }}
key={index}
onClick={handleClick}
>
<ListItemText primary={label} />
</ListItemButton>
);
});
}, [pageId, initialized]);

return {


Loading…
Cancel
Save