|
1 | 1 | import * as React from "react"; |
2 | 2 |
|
3 | | -import { Box, Button } from "@mui/material"; |
| 3 | +import { Button, Stack } from "@mui/material"; |
4 | 4 |
|
5 | 5 | import { BackendTestPage } from '../../debug/page/backend_test'; |
6 | 6 | import { MdiTestPage } from "../../debug/page/mdi_test"; |
7 | 7 | import { ShopTestPage } from "../../debug/page/shop_test"; |
8 | 8 |
|
| 9 | +const LOCAL_STORAGE_KEY = "selectedTab"; |
9 | 10 | type SelectedTabType = "shop" | "mdi" | "backend"; |
10 | 11 |
|
| 12 | +const getTabFromLocalStorage = (): SelectedTabType => localStorage.getItem(LOCAL_STORAGE_KEY) as SelectedTabType || "shop"; |
| 13 | + |
| 14 | +const setTabToLocalStorage = (tab: SelectedTabType) => { |
| 15 | + localStorage.setItem(LOCAL_STORAGE_KEY, tab); |
| 16 | + return tab; |
| 17 | +}; |
| 18 | + |
| 19 | +const TabList: { [key in SelectedTabType]: React.ReactNode } = { |
| 20 | + shop: <ShopTestPage />, |
| 21 | + mdi: <MdiTestPage />, |
| 22 | + backend: <BackendTestPage />, |
| 23 | +}; |
| 24 | + |
11 | 25 | export const Test: React.FC = () => { |
12 | | - const [selectedTab, setSelectedTab] = React.useState<SelectedTabType>("mdi"); |
13 | | - |
14 | | - return ( |
15 | | - <Box> |
16 | | - <Button variant="contained" onClick={() => setSelectedTab("shop")}> |
17 | | - Shop Test |
18 | | - </Button> |
19 | | - <Button variant="contained" onClick={() => setSelectedTab("mdi")}> |
20 | | - MDI Test |
21 | | - </Button> |
22 | | - <Button variant="contained" onClick={() => setSelectedTab("backend")}> |
23 | | - Backend Test |
24 | | - </Button> |
25 | | - {selectedTab === "shop" && <ShopTestPage />} |
26 | | - {selectedTab === "mdi" && <MdiTestPage />} |
27 | | - {selectedTab === "backend" && <BackendTestPage />} |
28 | | - </Box> |
29 | | - ); |
| 26 | + const [selectedTab, setSelectedTab] = React.useState<SelectedTabType>(getTabFromLocalStorage()); |
| 27 | + const selectTab = (tab: SelectedTabType) => setSelectedTab(setTabToLocalStorage(tab)); |
| 28 | + const TabButton: React.FC<{ tab: SelectedTabType }> = ({ tab }) => <Button variant={selectedTab === tab ? "contained" : "outlined"} onClick={() => selectTab(tab)}>{tab} Test</Button>; |
| 29 | + |
| 30 | + return <Stack> |
| 31 | + <Stack direction="row" spacing={2} sx={{ width: "100%", justifyContent: "center" }}> |
| 32 | + {Object.keys(TabList).map((tab) => <TabButton key={tab} tab={tab as SelectedTabType} />)} |
| 33 | + </Stack> |
| 34 | + {TabList[selectedTab]} |
| 35 | + </Stack>; |
30 | 36 | }; |
0 commit comments