サイドバーの作成

dev-frontend-with-api
Haru.Kusano 5 months ago
parent b3aad60800
commit 45040b7880
  1. 25
      frontend/src/App.tsx
  2. 29
      frontend/src/components/Layout.tsx
  3. 16
      frontend/src/pages/StockPage.tsx

@ -9,6 +9,7 @@ import Layout from './components/Layout';
import LoginPage from './pages/LoginPage'; import LoginPage from './pages/LoginPage';
import RegisterPage from './pages/RegisterPage'; import RegisterPage from './pages/RegisterPage';
import TaskListPage from './pages/TaskListPage'; import TaskListPage from './pages/TaskListPage';
import StockPage from './pages/StockPage';
import './App.css'; import './App.css';
/** /**
@ -93,6 +94,30 @@ const App: React.FC = () => {
} }
/> />
</Route> </Route>
<Route path="/" element={<Layout />}>
{/* ルートパスへのアクセスはタスク一覧にリダイレクト */}
<Route index element={<Navigate to="/stock" replace />} />
{/* タスク一覧は認証が必要なため、PrivateRouteでラップ */}
<Route
path="stock"
element={
<PrivateRoute>
<StockPage />
</PrivateRoute>
}
/>
{/* テストページへのルートを追加 */}
<Route
path="stock"
element={
<PrivateRoute>
<StockPage />
</PrivateRoute>
}
/>
</Route>
</Routes> </Routes>
</BrowserRouter> </BrowserRouter>
</Box> </Box>

@ -3,13 +3,13 @@
* AppBar * AppBar
*/ */
import React, { useState } from 'react'; import React, { useState } from 'react';
import { import {
AppBar, AppBar,
Toolbar, Toolbar,
Typography, Typography,
Container, Container,
Box, Box,
Button, Button,
Drawer, Drawer,
List, List,
ListItemText, ListItemText,
@ -18,9 +18,10 @@ import {
Divider, Divider,
IconButton IconButton
} from '@mui/material'; } from '@mui/material';
import { import {
Menu as MenuIcon, Menu as MenuIcon,
ListAlt as ListAltIcon, ListAlt as ListAltIcon,
Inventory as InventoryIcon, // テストページ用のアイコン
} from '@mui/icons-material'; } from '@mui/icons-material';
import { useNavigate, Outlet, useLocation } from 'react-router-dom'; import { useNavigate, Outlet, useLocation } from 'react-router-dom';
@ -91,13 +92,21 @@ const Layout: React.FC = () => {
role="presentation" role="presentation"
> >
<List> <List>
<ListItemButton <ListItemButton
onClick={() => handleNavigate('/tasks')} onClick={() => handleNavigate('/tasks')}
selected={isSelected('/tasks')} selected={isSelected('/tasks')}
> >
<ListItemIcon><ListAltIcon /></ListItemIcon> <ListItemIcon><ListAltIcon /></ListItemIcon>
<ListItemText primary="タスク一覧" /> <ListItemText primary="タスク一覧" />
</ListItemButton> </ListItemButton>
{/* テストページへのリンクを追加 */}
<ListItemButton
onClick={() => handleNavigate('/stock')}
selected={isSelected('/stock')}
>
<ListItemIcon><InventoryIcon /></ListItemIcon>
<ListItemText primary="在庫管理" />
</ListItemButton>
<Divider /> <Divider />
</List> </List>
</Box> </Box>

@ -0,0 +1,16 @@
/**
*
*
*/
import React from 'react';
import { Box } from '@mui/material';
const StockPage: React.FC = () => {
return (
<Box>
{/* 白紙のページ - 何も表示しない */}
</Box>
);
};
export default StockPage;
Loading…
Cancel
Save