diff --git a/web/src/components/overlay/detail/ReviewDetailDialog.tsx b/web/src/components/overlay/detail/ReviewDetailDialog.tsx index 0bfae33bc..d34ae2333 100644 --- a/web/src/components/overlay/detail/ReviewDetailDialog.tsx +++ b/web/src/components/overlay/detail/ReviewDetailDialog.tsx @@ -6,13 +6,6 @@ import { SheetHeader, SheetTitle, } from "../../ui/sheet"; -import { - Drawer, - DrawerContent, - DrawerDescription, - DrawerHeader, - DrawerTitle, -} from "../../ui/drawer"; import useSWR from "swr"; import { FrigateConfig } from "@/types/frigateConfig"; import { useFormattedTimestamp } from "@/hooks/use-date-utils"; @@ -20,7 +13,7 @@ import { getIconForLabel } from "@/utils/iconUtil"; import { useApiHost } from "@/api"; import { ReviewDetailPaneType, ReviewSegment } from "@/types/review"; import { Event } from "@/types/event"; -import { useMemo, useRef, useState } from "react"; +import { useEffect, useMemo, useRef, useState } from "react"; import { cn } from "@/lib/utils"; import { FrigatePlusDialog } from "../dialog/FrigatePlusDialog"; import ObjectLifecycle from "./ObjectLifecycle"; @@ -37,6 +30,13 @@ import { useNavigate } from "react-router-dom"; import { Button } from "@/components/ui/button"; import { baseUrl } from "@/api/baseUrl"; import { shareOrCopy } from "@/utils/browserUtil"; +import { + MobilePage, + MobilePageContent, + MobilePageDescription, + MobilePageHeader, + MobilePageTitle, +} from "@/components/mobile/MobilePage"; type ReviewDetailDialogProps = { review?: ReviewSegment; @@ -80,11 +80,19 @@ export default function ReviewDetailDialog({ const [selectedEvent, setSelectedEvent] = useState(); const [pane, setPane] = useState("overview"); - const Overlay = isDesktop ? Sheet : Drawer; - const Content = isDesktop ? SheetContent : DrawerContent; - const Header = isDesktop ? SheetHeader : DrawerHeader; - const Title = isDesktop ? SheetTitle : DrawerTitle; - const Description = isDesktop ? SheetDescription : DrawerDescription; + // dialog and mobile page + + const [isOpen, setIsOpen] = useState(review != undefined); + + useEffect(() => { + setIsOpen(review != undefined); + }, [review]); + + const Overlay = isDesktop ? Sheet : MobilePage; + const Content = isDesktop ? SheetContent : MobilePageContent; + const Header = isDesktop ? SheetHeader : MobilePageHeader; + const Title = isDesktop ? SheetTitle : MobilePageTitle; + const Description = isDesktop ? SheetDescription : MobilePageDescription; if (!review) { return; @@ -93,7 +101,7 @@ export default function ReviewDetailDialog({ return ( <> { if (!open) { setReview(undefined); @@ -114,19 +122,43 @@ export default function ReviewDetailDialog({ -
- Review Item Details - Review item details -
+ {pane == "overview" && ( -
+
setIsOpen(false)}> + Review Item Details + Review item details +
+ + + + + Share this review item + +
+
+ )} + {pane == "overview" && ( +
@@ -139,21 +171,11 @@ export default function ReviewDetailDialog({
Timestamp
{formattedDate}
-
Objects
-
+
{events?.map((event) => { return (
("details"); const [pageToggle, setPageToggle] = useOptimisticState(page, setPage, 100); + // dialog and mobile page + + const [isOpen, setIsOpen] = useState(search != undefined); + + useEffect(() => { + setIsOpen(search != undefined); + }, [search]); + const searchTabs = useMemo(() => { if (!config || !search) { return []; @@ -102,15 +110,15 @@ export default function SearchDetailDialog({ // content - const Overlay = isDesktop ? Dialog : Drawer; - const Content = isDesktop ? DialogContent : DrawerContent; - const Header = isDesktop ? DialogHeader : DrawerHeader; - const Title = isDesktop ? DialogTitle : DrawerTitle; - const Description = isDesktop ? DialogDescription : DrawerDescription; + const Overlay = isDesktop ? Dialog : MobilePage; + const Content = isDesktop ? DialogContent : MobilePageContent; + const Header = isDesktop ? DialogHeader : MobilePageHeader; + const Title = isDesktop ? DialogTitle : MobilePageTitle; + const Description = isDesktop ? DialogDescription : MobilePageDescription; return ( { if (!open) { setSearch(undefined); @@ -118,15 +126,16 @@ export default function SearchDetailDialog({ }} > -
+
setIsOpen(false)}> Tracked Object Details - Tracked object details + Tracked object details
+
@@ -302,7 +311,7 @@ function ObjectDetailsTab({
{formattedDate}
-
+