From 1a7b40e665807f698e3f307f2826f4a5f00a0232 Mon Sep 17 00:00:00 2001 From: Dan Ditomaso Date: Wed, 15 Oct 2025 22:28:53 -0400 Subject: [PATCH] feat: indicate number of layers enabled. --- .../PageComponents/Map/Tools/MapLayerTool.tsx | 59 +++++++++++-------- 1 file changed, 33 insertions(+), 26 deletions(-) diff --git a/packages/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx b/packages/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx index 9a3557ff..65964056 100644 --- a/packages/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx +++ b/packages/web/src/components/PageComponents/Map/Tools/MapLayerTool.tsx @@ -6,7 +6,7 @@ import { } from "@components/UI/Popover.tsx"; import { cn } from "@core/utils/cn.ts"; import { LayersIcon } from "lucide-react"; -import type { ReactNode } from "react"; +import { type ReactNode, useMemo } from "react"; import { useTranslation } from "react-i18next"; export interface VisibilityState { @@ -62,13 +62,24 @@ export function MapLayerTool({ }: MapLayerToolProps): ReactNode { const { t } = useTranslation("map"); + const enabledCount = useMemo(() => { + return Object.values(visibilityState).filter(Boolean).length || 0; + }, [visibilityState]); + + const handleCheckboxChange = (key: keyof VisibilityState) => { + setVisibilityState({ + ...visibilityState, + [key]: !visibilityState[key], + }); + }; + return ( { - setVisibilityState({ ...visibilityState, nodeMarkers: checked }); - }} + onChange={() => handleCheckboxChange("nodeMarkers")} /> { - setVisibilityState({ ...visibilityState, waypoints: checked }); - }} + onChange={() => handleCheckboxChange("waypoints")} /> { - setVisibilityState({ - ...visibilityState, - directNeighbors: checked, - }); - }} + onChange={() => handleCheckboxChange("directNeighbors")} /> { - setVisibilityState({ - ...visibilityState, - remoteNeighbors: checked, - }); - }} + onChange={() => handleCheckboxChange("remoteNeighbors")} /> { - setVisibilityState({ - ...visibilityState, - positionPrecision: checked, - }); - }} + onChange={() => handleCheckboxChange("positionPrecision")} /> {/*