diff --git a/frontend/src/pages/TargetsPage.jsx b/frontend/src/pages/TargetsPage.jsx index 6923bc0..eef8651 100644 --- a/frontend/src/pages/TargetsPage.jsx +++ b/frontend/src/pages/TargetsPage.jsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from "react"; +import React, { useEffect, useRef, useState } from "react"; import { Link } from "react-router-dom"; import { apiFetch } from "../api"; import { useAuth } from "../state"; @@ -34,13 +34,25 @@ function toggleOwner(ids, userId) { } function OwnerPicker({ candidates, selectedIds, onToggle, query, onQueryChange }) { + const pickerRef = useRef(null); + const [open, setOpen] = useState(false); const filtered = candidates.filter((item) => item.email.toLowerCase().includes(query.trim().toLowerCase()) ); const selected = candidates.filter((item) => selectedIds.includes(item.user_id)); + useEffect(() => { + const onPointerDown = (event) => { + if (!pickerRef.current?.contains(event.target)) { + setOpen(false); + } + }; + document.addEventListener("mousedown", onPointerDown); + return () => document.removeEventListener("mousedown", onPointerDown); + }, []); + return ( -