From 8ed13c0b083825ae65dfee0edb64e804f8d13162 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Mon, 3 Nov 2025 14:58:44 -0600 Subject: [PATCH] add prev/next buttons on desktop --- .../overlay/detail/SearchDetailDialog.tsx | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/web/src/components/overlay/detail/SearchDetailDialog.tsx b/web/src/components/overlay/detail/SearchDetailDialog.tsx index ee63a0c50..4a3f6291a 100644 --- a/web/src/components/overlay/detail/SearchDetailDialog.tsx +++ b/web/src/components/overlay/detail/SearchDetailDialog.tsx @@ -28,6 +28,8 @@ import { FaArrowRight, FaCheckCircle, FaChevronDown, + FaChevronLeft, + FaChevronRight, FaDownload, FaHistory, FaImage, @@ -80,6 +82,7 @@ import { CgTranscript } from "react-icons/cg"; import { CameraNameLabel } from "@/components/camera/CameraNameLabel"; import { PiPath } from "react-icons/pi"; import Heading from "@/components/ui/heading"; +import { DialogPortal } from "@radix-ui/react-dialog"; const SEARCH_TABS = ["snapshot", "tracking_details"] as const; export type SearchTab = (typeof SEARCH_TABS)[number]; @@ -91,6 +94,8 @@ type SearchDetailDialogProps = { setSearchPage: (page: SearchTab) => void; setSimilarity?: () => void; setInputFocused: React.Dispatch>; + onPrevious?: () => void; + onNext?: () => void; }; export default function SearchDetailDialog({ search, @@ -99,6 +104,8 @@ export default function SearchDetailDialog({ setSearchPage, setSimilarity, setInputFocused, + onPrevious, + onNext, }: SearchDetailDialogProps) { const { t } = useTranslation(["views/explore", "views/faceLibrary"]); const { data: config } = useSWR("config", { @@ -227,6 +234,57 @@ export default function SearchDetailDialog({ onOpenChange={handleOpenChange} enableHistoryBack={true} > + {isDesktop && onPrevious && onNext && ( + +
+
+ + + + + + {t("searchResult.previousTrackedObject")} + + + + + + + + + {t("searchResult.nextTrackedObject")} + + +
+
+
+ )} { + const target = e.target as HTMLElement; + if (target.closest(".nav-button")) { + e.preventDefault(); + } + }} >
{t("trackedObjectDetails")} {t("trackedObjectDetails")} +
{isDesktop ? (