diff --git a/src/components/Project/ProjectSetting.jsx b/src/components/Project/ProjectSetting.jsx index 35e334bf..8f5d2cf8 100644 --- a/src/components/Project/ProjectSetting.jsx +++ b/src/components/Project/ProjectSetting.jsx @@ -1,6 +1,8 @@ import React, { useState } from "react"; import { ComingSoonPage } from "../../pages/Misc/ComingSoonPage"; import ProjectPermission from "./ProjectPermission"; +import ListViewContact_1 from "./services/Services"; +import ServiceListView from "./services/Services"; const ProjectSetting = () => { const [activePill, setActivePill] = useState("Permissions") @@ -9,7 +11,7 @@ const ProjectSetting = () => { // }); const projectSettingTab = [ { key: "Permissions", label: "Permissions" }, - { key: "Notification", label: "Notification" }, + { key: "services", label: "Services" }, { key: "SeparatedLink", label: "Separated link", isButton: true }, ]; const handlePillClick = (pillKey) => { @@ -22,8 +24,8 @@ const ProjectSetting = () => { case "Permissions": return ; - case "Notification": - return ; + case "services": + return ; default: return ; @@ -33,7 +35,7 @@ const ProjectSetting = () => { return (
- {/*
+
-
*/} +
{renderContent()}
diff --git a/src/components/Project/services/Services.jsx b/src/components/Project/services/Services.jsx new file mode 100644 index 00000000..a8e46ff1 --- /dev/null +++ b/src/components/Project/services/Services.jsx @@ -0,0 +1,105 @@ +import React from "react"; +import { useProjectAssignedServices } from "../../../hooks/useProjects"; +import { useSelectedProject } from "../../../slices/apiDataManager"; + +const ServiceListView = () => { + const projectId = useSelectedProject(); + const { data, isLoading, error } = useProjectAssignedServices(projectId); + + const serviceColumns = [ + { + key: "name", + label: "Service Name", + getValue: (service) => ( + + {service?.name || "N/A"} + + ), + align: "text-start", + }, + { + key: "description", + label: "Description", + getValue: (service) => ( + + {service?.description || "N/A"} + + ), + align: "text-start", + }, + { + key: "isActive", + label: "Status", + getValue: (service) => ( + + {service?.isActive ? "Active" : "Inactive"} + + ), + align: "text-center", + }, + ]; + + if (isLoading) + return
Loading services...
; + if (error) + return ( +
+ Failed to load services: {error.message} +
+ ); + + const services = data || []; + + return ( +
+
+ + + + + {serviceColumns.map((col) => ( + + ))} + + + + {Array.isArray(services) && services.length > 0 ? ( + services.map((row, i) => ( + + {serviceColumns.map((col) => ( + + ))} + + )) + ) : ( + + + + )} + +
+ {col.label} +
+ {col.getValue(row)} +
+ No services found +
+
+
+ ); +}; + +export default ServiceListView;