From 867ee921516cedcc32dc27666fa504616f7e8275 Mon Sep 17 00:00:00 2001 From: Kartik Sharma Date: Tue, 11 Nov 2025 11:11:13 +0530 Subject: [PATCH] Adding popup in employees for ManageReporting. --- src/components/Employee/EmployeeSchema.jsx | 71 ++++++++++--------- src/components/Employee/ManageReporting.jsx | 77 +++++++++++++++++++++ src/pages/employee/EmployeeList.jsx | 36 +++++++++- 3 files changed, 151 insertions(+), 33 deletions(-) create mode 100644 src/components/Employee/ManageReporting.jsx diff --git a/src/components/Employee/EmployeeSchema.jsx b/src/components/Employee/EmployeeSchema.jsx index ba540ef4..ba1da9e1 100644 --- a/src/components/Employee/EmployeeSchema.jsx +++ b/src/components/Employee/EmployeeSchema.jsx @@ -3,8 +3,8 @@ import { z } from "zod" const mobileNumberRegex = /^[0-9]\d{9}$/; -export const employeeSchema = - z.object({ +export const employeeSchema = + z.object({ firstName: z.string().min(1, { message: "First Name is required" }), middleName: z.string().optional(), lastName: z.string().min(1, { message: "Last Name is required" }), @@ -90,35 +90,44 @@ export const employeeSchema = .min(1, { message: "Phone Number is required" }) .regex(mobileNumberRegex, { message: "Invalid phone number " }), jobRoleId: z.string().min(1, { message: "Role is required" }), - organizationId:z.string().min(1,{message:"Organization is required"}), - hasApplicationAccess:z.boolean().default(false), + organizationId: z.string().min(1, { message: "Organization is required" }), + hasApplicationAccess: z.boolean().default(false), }).refine((data) => { - if (data.hasApplicationAccess) { - return data.email && data.email.trim() !== ""; - } - return true; -}, { - message: "Email is required when employee has access", - path: ["email"], -}); + if (data.hasApplicationAccess) { + return data.email && data.email.trim() !== ""; + } + return true; + }, { + message: "Email is required when employee has access", + path: ["email"], + }); + - export const defatEmployeeObj = { - firstName: "", - middleName: "", - lastName: "", - email: "", - currentAddress: "", - birthDate: "", - joiningDate: "", - emergencyPhoneNumber: "", - emergencyContactPerson: "", - aadharNumber: "", - gender: "", - panNumber: "", - permanentAddress: "", - phoneNumber: "", - jobRoleId: null, - organizationId:"", - hasApplicationAccess:false - } \ No newline at end of file + firstName: "", + middleName: "", + lastName: "", + email: "", + currentAddress: "", + birthDate: "", + joiningDate: "", + emergencyPhoneNumber: "", + emergencyContactPerson: "", + aadharNumber: "", + gender: "", + panNumber: "", + permanentAddress: "", + phoneNumber: "", + jobRoleId: null, + organizationId: "", + hasApplicationAccess: false +} + +export const ManageReportingSchema = { + +} + +export const defaultManageRportion = { + +} + diff --git a/src/components/Employee/ManageReporting.jsx b/src/components/Employee/ManageReporting.jsx new file mode 100644 index 00000000..cc79137a --- /dev/null +++ b/src/components/Employee/ManageReporting.jsx @@ -0,0 +1,77 @@ +import React from 'react' +import { useForm } from 'react-hook-form' +import Label from '../common/Label' +import PmsEmployeeInputTag from '../common/PmsEmployeeInputTag' + +const ManageReporting = ({ onClosed }) => { + const { handleSubmit, control, watch, reset } = useForm() + + const handleClose = () => { + reset(); + onClosed(); + }; + + return ( +
+
+
Manage Reporting
+ + {/* Primary */} +
+
+
+ +
+ +
+
+
+
+ + {/* Secondary */} +
+
+
+ +
+ +
+
+
+
+ +
+ + + +
+
+
+ ) +} + +export default ManageReporting diff --git a/src/pages/employee/EmployeeList.jsx b/src/pages/employee/EmployeeList.jsx index d675d5d2..35011bcf 100644 --- a/src/pages/employee/EmployeeList.jsx +++ b/src/pages/employee/EmployeeList.jsx @@ -40,6 +40,7 @@ import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import Pagination from "../../components/common/Pagination"; import handleEmployeeExport from "../../components/Employee/handleEmployeeExport"; import { SpinnerLoader } from "../../components/common/Loader"; +import ManageReporting from "../../components/Employee/ManageReporting"; const EmployeeList = () => { const selectedProjectId = useSelector( @@ -68,9 +69,10 @@ const EmployeeList = () => { const [searchText, setSearchText] = useState(""); const [filteredData, setFilteredData] = useState([]); const [showModal, setShowModal] = useState(false); - const [selectedEmployeeId, setSelecedEmployeeId] = useState(null); + const [selectedEmployeeId, setSelectedEmployeeId] = useState(null); const [IsDeleteModalOpen, setIsDeleteModalOpen] = useState(false); const [selectedEmpFordelete, setSelectedEmpFordelete] = useState(null); + const [showManageReportingModal, setShowManageReportingModal] = useState(false); const [employeeLodaing, setemployeeLodaing] = useState(false); const ViewTeamMember = useHasUserPermission(VIEW_TEAM_MEMBERS); const { mutate: suspendEmployee, isPending: empLodaing } = useSuspendEmployee( @@ -148,10 +150,15 @@ const EmployeeList = () => { }; const handleEmployeeModel = (id) => { - setSelecedEmployeeId(id); + setSelectedEmployeeId(id); setShowModal(true); }; + const handleManageReporting = (id) => { + setSelectedEmployeeId(id); + setShowManageReportingModal(true); + }; + const handleOpenDelete = (employee) => { setSelectedEmpFordelete(employee); setIsDeleteModalOpen(true); @@ -234,6 +241,19 @@ const EmployeeList = () => { )} + {showManageReportingModal && ( + setShowManageReportingModal(false)} + > + setShowManageReportingModal(false)} + /> + + )} + {IsDeleteModalOpen && ( { {" "} Manage Role + )}