diff --git a/src/components/setting-item.tsx b/src/components/setting-item.tsx deleted file mode 100644 index 52a05843579988faf19758f733413fd0da3448d4..0000000000000000000000000000000000000000 --- a/src/components/setting-item.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import { ListItem, styled } from "@mui/material"; - -const SettingItem = styled(ListItem)(() => ({ - paddingTop: 5, - paddingBottom: 5, -})); - -export default SettingItem; diff --git a/src/components/setting-clash.tsx b/src/components/setting/setting-clash.tsx similarity index 86% rename from src/components/setting-clash.tsx rename to src/components/setting/setting-clash.tsx index d3fc013c649dd39d9e78888af11ff9e04918caa5..97d5b8b554d60c239384e520b6fa42b8a9855d68 100644 --- a/src/components/setting-clash.tsx +++ b/src/components/setting/setting-clash.tsx @@ -1,18 +1,16 @@ import useSWR, { useSWRConfig } from "swr"; import { - List, ListItemText, - ListSubheader, TextField, Switch, Select, MenuItem, } from "@mui/material"; -import { getClashConfig, updateConfigs } from "../services/api"; -import { patchClashConfig } from "../services/cmds"; -import { ApiType } from "../services/types"; -import GuardState from "./guard-state"; -import SettingItem from "./setting-item"; +import { getClashConfig, updateConfigs } from "../../services/api"; +import { SettingList, SettingItem } from "./setting"; +import { patchClashConfig } from "../../services/cmds"; +import { ApiType } from "../../services/types"; +import GuardState from "../guard-state"; interface Props { onError?: (err: Error) => void; @@ -30,22 +28,16 @@ const SettingClash = ({ onError }: Props) => { } = clashConfig ?? {}; const onSwitchFormat = (_e: any, value: boolean) => value; - const onChangeData = (patch: Partial<ApiType.ConfigData>) => { mutate("getClashConfig", { ...clashConfig, ...patch }, false); }; - const onUpdateData = async (patch: Partial<ApiType.ConfigData>) => { await updateConfigs(patch); await patchClashConfig(patch); }; return ( - <List> - <ListSubheader sx={{ background: "transparent" }}> - Clash Setting - </ListSubheader> - + <SettingList title="Clash Setting"> <SettingItem> <ListItemText primary="Allow Lan" /> <GuardState @@ -102,7 +94,7 @@ const SettingClash = ({ onError }: Props) => { disabled /> </SettingItem> - </List> + </SettingList> ); }; diff --git a/src/components/setting-verge.tsx b/src/components/setting/setting-verge.tsx similarity index 82% rename from src/components/setting-verge.tsx rename to src/components/setting/setting-verge.tsx index 3a15bf95ba20c10a315cf11a0dc9807c131d7ff5..e3d51bb655094ca55d95d8d26463e873098ae27e 100644 --- a/src/components/setting-verge.tsx +++ b/src/components/setting/setting-verge.tsx @@ -1,19 +1,12 @@ import useSWR, { useSWRConfig } from "swr"; -import { - Box, - List, - ListItemText, - ListSubheader, - Switch, - Typography, -} from "@mui/material"; -import { getVergeConfig, patchVergeConfig } from "../services/cmds"; -import { CmdType } from "../services/types"; -import { version } from "../../package.json"; -import GuardState from "./guard-state"; -import SettingItem from "./setting-item"; -import PaletteSwitch from "./palette-switch"; -import SysproxyTooltip from "./sysproxy-tooltip"; +import { Box, ListItemText, Switch, Typography } from "@mui/material"; +import { getVergeConfig, patchVergeConfig } from "../../services/cmds"; +import { SettingList, SettingItem } from "./setting"; +import { CmdType } from "../../services/types"; +import { version } from "../../../package.json"; +import GuardState from "../guard-state"; +import PaletteSwitch from "../palette-switch"; +import SysproxyTooltip from "../sysproxy-tooltip"; interface Props { onError?: (err: Error) => void; @@ -36,11 +29,7 @@ const SettingVerge = ({ onError }: Props) => { }; return ( - <List> - <ListSubheader sx={{ background: "transparent" }}> - Common Setting - </ListSubheader> - + <SettingList title="Common Setting"> <SettingItem> <ListItemText primary="Theme Mode" /> <GuardState @@ -110,7 +99,7 @@ const SettingVerge = ({ onError }: Props) => { <ListItemText primary="Version" /> <Typography sx={{ py: "6px" }}>v{version}</Typography> </SettingItem> - </List> + </SettingList> ); }; diff --git a/src/components/setting/setting.tsx b/src/components/setting/setting.tsx new file mode 100644 index 0000000000000000000000000000000000000000..49e9a22cfd547a9e555cc50a2696ce37a49c2a06 --- /dev/null +++ b/src/components/setting/setting.tsx @@ -0,0 +1,19 @@ +import React from "react"; +import { List, ListItem, ListSubheader, styled } from "@mui/material"; + +export const SettingItem = styled(ListItem)(() => ({ + paddingTop: 5, + paddingBottom: 5, +})); + +export const SettingList: React.FC<{ + title: string; +}> = (props) => ( + <List> + <ListSubheader sx={{ background: "transparent" }} disableSticky> + {props.title} + </ListSubheader> + + {props.children} + </List> +); diff --git a/src/pages/setting.tsx b/src/pages/setting.tsx index 98c02563b2e95c547cb37c5fb8026481fec169cc..f4e32b6bc598a55389369298177eef5332d5950a 100644 --- a/src/pages/setting.tsx +++ b/src/pages/setting.tsx @@ -1,7 +1,7 @@ import { Paper } from "@mui/material"; import BasePage from "../components/base-page"; -import SettingVerge from "../components/setting-verge"; -import SettingClash from "../components/setting-clash"; +import SettingVerge from "../components/setting/setting-verge"; +import SettingClash from "../components/setting/setting-clash"; const SettingPage = () => { return (