Filter dropdown in Assign Task popup does not close on outside click #396

Merged
pramod.mahajan merged 1 commits from Kartik_Bug#1123 into Issues_Sep_1W_V2 2025-09-15 11:52:15 +00:00

View File

@ -47,6 +47,20 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
}, },
}); });
const dropdownRef = useRef(null);
const [open, setOpen] = useState(false);
// Close dropdown on outside click
useEffect(() => {
const handleClickOutside = (event) => {
if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
setOpen(false);
}
};
document.addEventListener("mousedown", handleClickOutside);
return () => document.removeEventListener("mousedown", handleClickOutside);
}, []);
const infoRef = useRef(null); const infoRef = useRef(null);
const infoRef1 = useRef(null); const infoRef1 = useRef(null);
@ -255,7 +269,10 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
<div className="row mb-1"> <div className="row mb-1">
<div className="col-12"> <div className="col-12">
<div className="form-text text-start"> <div className="form-text text-start">
<div className="d-flex align-items-center form-text fs-7"> <div
className="d-flex align-items-center form-text fs-7"
ref={dropdownRef}
>
<span className="text-dark">Select Team</span> <span className="text-dark">Select Team</span>
{/* Dropdown */} {/* Dropdown */}
@ -265,9 +282,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
? "text-secondary" ? "text-secondary"
: "text-primary" : "text-primary"
}`} }`}
data-bs-toggle="dropdown" onClick={() => setOpen(!open)}
role="button"
aria-expanded="false"
> >
<i className="bx bx-slider-alt ms-2"></i> <i className="bx bx-slider-alt ms-2"></i>
</a> </a>
@ -290,9 +305,10 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
</span> </span>
)} )}
{/* Dropdown Menu with Scroll */} {/* Dropdown Menu */}
{open && (
<ul <ul
className="dropdown-menu p-2 text-capitalize" className="dropdown-menu show p-2 text-capitalize"
style={{ maxHeight: "300px", overflowY: "auto" }} style={{ maxHeight: "300px", overflowY: "auto" }}
> >
{/* All Roles */} {/* All Roles */}
@ -304,9 +320,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
id="checkboxAllRoles" id="checkboxAllRoles"
value="all" value="all"
checked={selectedRoles.includes("all")} checked={selectedRoles.includes("all")}
onChange={(e) => onChange={(e) => handleRoleChange(e, e.target.value)}
handleRoleChange(e, e.target.value)
}
/> />
<label <label
className="form-check-label ms-2" className="form-check-label ms-2"
@ -327,9 +341,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
id={`checkboxRole-${role.id}`} id={`checkboxRole-${role.id}`}
value={role.id} value={role.id}
checked={selectedRoles.includes(String(role.id))} checked={selectedRoles.includes(String(role.id))}
onChange={(e) => onChange={(e) => handleRoleChange(e, e.target.value)}
handleRoleChange(e, e.target.value)
}
/> />
<label <label
className="form-check-label ms-2" className="form-check-label ms-2"
@ -341,6 +353,7 @@ const AssignTask = ({ assignData, onClose, setAssigned }) => {
</li> </li>
))} ))}
</ul> </ul>
)}
</div> </div>
{/* Search Box */} {/* Search Box */}