From 822ff1a7e4c25f5efa40fc95e1bf133f39b2ee80 Mon Sep 17 00:00:00 2001 From: Kartik Sharma Date: Tue, 25 Nov 2025 11:20:19 +0530 Subject: [PATCH] UI Alignment in Service Card view. --- .../ServiceProjectTeam/ServiceProjectCard.jsx | 4 +- src/pages/project/ProjectPage.jsx | 116 ++++++++++++------ 2 files changed, 78 insertions(+), 42 deletions(-) diff --git a/src/components/ServiceProject/ServiceProjectTeam/ServiceProjectCard.jsx b/src/components/ServiceProject/ServiceProjectTeam/ServiceProjectCard.jsx index 21f77a4a..2bba2c36 100644 --- a/src/components/ServiceProject/ServiceProjectTeam/ServiceProjectCard.jsx +++ b/src/components/ServiceProject/ServiceProjectTeam/ServiceProjectCard.jsx @@ -57,7 +57,7 @@ const ServiceProjectCard = ({ project, isCore = true }) => { DeleteProject(projectId, false); }; - + return ( <> @@ -89,7 +89,7 @@ const ServiceProjectCard = ({ project, isCore = true }) => { > {project?.shortName ? project?.shortName : project?.name} -
+
{project?.shortName ? project?.name : ""}
diff --git a/src/pages/project/ProjectPage.jsx b/src/pages/project/ProjectPage.jsx index f72b995c..234e3838 100644 --- a/src/pages/project/ProjectPage.jsx +++ b/src/pages/project/ProjectPage.jsx @@ -1,4 +1,4 @@ -import React, { createContext, useContext, useEffect, useState } from "react"; +import React, { createContext, useContext, useEffect, useRef, useState } from "react"; import Breadcrumb from "../../components/common/Breadcrumb"; import { ITEMS_PER_PAGE, @@ -36,7 +36,7 @@ const ProjectPage = () => { isOpen: false, project: null, }); - + const dropdownRef = useRef(null); const [projectList, setProjectList] = useState([]); const [listView, setListView] = useState(false); const [searchTerm, setSearchTerm] = useState(""); @@ -46,6 +46,7 @@ const ProjectPage = () => { }); const HasManageProject = useHasUserPermission(MANAGE_PROJECT); const [currentPage, setCurrentPage] = useState(1); + const [open, setOpen] = useState(false); const [selectedStatuses, setSelectedStatuses] = useState( PROJECT_STATUS.map((s) => s.id) @@ -70,6 +71,16 @@ const ProjectPage = () => { sessionStorage.setItem("whichProjectDisplay", String(value)); }; + useEffect(() => { + const handleClickOutside = (event) => { + if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { + setOpen(false); + } + }; + document.addEventListener("mousedown", handleClickOutside); + return () => document.removeEventListener("mousedown", handleClickOutside); + }, []); + return (
@@ -89,9 +100,8 @@ const ProjectPage = () => { {/* Service Project Button */}
{/* Dropdown Filter */} -
-
+ -
    - {PROJECT_STATUS.map(({ id, label }) => ( -
  • -
    - handleStatusChange(id)} - /> - -
    -
  • - ))} -
+ {selectedStatuses.length !== PROJECT_STATUS.length && ( + + {PROJECT_STATUS.length - selectedStatuses.length} + + )} +
+ + {open && ( +
    e.stopPropagation()} // IMPORTANT + > + {PROJECT_STATUS.map(({ id, label }) => ( +
  • +
    + e.stopPropagation()} // IMPORTANT + onChange={() => handleStatusChange(id)} + /> + +
    +
  • + ))} +
+ )}
+ + + {HasManageProject && (