From 2fb9c9489555220ea96cf823b9193cf7d2f5b1b6 Mon Sep 17 00:00:00 2001 From: Nicolas Mowen Date: Sun, 31 Mar 2024 07:20:00 -0600 Subject: [PATCH] Convert settings on mobile to drawer --- web/src/components/navigation/Sidebar.tsx | 1 - .../components/settings/GeneralSettings.tsx | 193 ++++++++++++------ 2 files changed, 132 insertions(+), 62 deletions(-) diff --git a/web/src/components/navigation/Sidebar.tsx b/web/src/components/navigation/Sidebar.tsx index 7e0ad3660..61ad84a38 100644 --- a/web/src/components/navigation/Sidebar.tsx +++ b/web/src/components/navigation/Sidebar.tsx @@ -1,6 +1,5 @@ import Logo from "../Logo"; import { navbarLinks } from "@/pages/site-navigation"; -import SettingsNavItems from "../settings/SettingsNavItems"; import NavItem from "./NavItem"; import { CameraGroupSelector } from "../filter/CameraGroupSelector"; import { useLocation } from "react-router-dom"; diff --git a/web/src/components/settings/GeneralSettings.tsx b/web/src/components/settings/GeneralSettings.tsx index 1da8a33c2..f0db24edc 100644 --- a/web/src/components/settings/GeneralSettings.tsx +++ b/web/src/components/settings/GeneralSettings.tsx @@ -57,6 +57,11 @@ import { TooltipTrigger, } from "@/components/ui/tooltip"; import ActivityIndicator from "../indicators/activity-indicator"; +import { isDesktop } from "react-device-detect"; +import { Drawer, DrawerContent, DrawerTrigger } from "../ui/drawer"; +import { Popover, PopoverContent, PopoverTrigger } from "../ui/popover"; +import { PopoverPortal } from "@radix-ui/react-popover"; +import { DialogClose } from "../ui/dialog"; type GeneralSettings = { className?: string; @@ -93,11 +98,20 @@ export default function GeneralSettings({ className }: GeneralSettings) { window.location.href = "/"; }; + const Container = isDesktop ? DropdownMenu : Drawer; + const Trigger = isDesktop ? DropdownMenuTrigger : DrawerTrigger; + const Content = isDesktop ? DropdownMenuContent : DrawerContent; + const MenuItem = isDesktop ? DropdownMenuItem : DialogClose; + const SubItem = isDesktop ? DropdownMenuSub : Popover; + const SubItemTrigger = isDesktop ? DropdownMenuSubTrigger : PopoverTrigger; + const SubItemContent = isDesktop ? DropdownMenuSubContent : PopoverContent; + const Portal = isDesktop ? DropdownMenuPortal : PopoverPortal; + return ( <>
- - + + @@ -110,28 +124,40 @@ export default function GeneralSettings({ className }: GeneralSettings) { - - + + System - + - - + + Storage - + - - + + System metrics - + - - + + System logs - + @@ -140,74 +166,108 @@ export default function GeneralSettings({ className }: GeneralSettings) { - - + + Settings - + - - + + Configuration editor - + Appearance - - - + + + Dark Mode - - - - setTheme("light")}> + + + + setTheme("light")} + > {theme === "light" ? ( <> - + Light ) : ( Light )} - - setTheme("dark")}> + + setTheme("dark")} + > {theme === "dark" ? ( <> - + Dark ) : ( Dark )} - - setTheme("system")}> + + setTheme("system")} + > {theme === "system" ? ( <> - + System ) : ( System )} - - - - - - - + + + + + + + Theme - - - + + + {colorSchemes.map((scheme) => ( - setColorScheme(scheme)} > {scheme === colorScheme ? ( <> - + {friendlyColorSchemeName(scheme)} ) : ( @@ -215,33 +275,44 @@ export default function GeneralSettings({ className }: GeneralSettings) { {friendlyColorSchemeName(scheme)} )} - + ))} - - - + + + Help - - + + Documentation - + - - + + GitHub - + - setRestartDialogOpen(true)}> - + setRestartDialogOpen(true)} + > + Restart Frigate - - - + + +
{restartDialogOpen && (