diff --git a/src/components/Dashboard/ProjectProgressChart.jsx b/src/components/Dashboard/ProjectProgressChart.jsx index 61747f6c..247dcfa5 100644 --- a/src/components/Dashboard/ProjectProgressChart.jsx +++ b/src/components/Dashboard/ProjectProgressChart.jsx @@ -1,6 +1,6 @@ import React, { useState } from "react"; import LineChart from "../Charts/LineChart"; -import { useProjects } from "../../hooks/useProjects"; +import { useProjectName } from "../../hooks/useProjects"; import { useDashboard_Data } from "../../hooks/useDashboard_Data"; import { useSelector } from "react-redux"; @@ -11,7 +11,7 @@ const ProjectProgressChart = ({ const selectedProject = useSelector( (store) => store.localVariables.projectId ); - const { projects } = useProjects(); + const { projectNames } = useProjectName(); const [range, setRange] = useState(DefaultRange); const [showAllEmployees, setShowAllEmployees] = useState(false); @@ -79,7 +79,9 @@ const ProjectProgressChart = ({ }) ); - const selectedProjectData = projects?.find((p) => p.id === selectedProject); + const selectedProjectData = projectNames?.find( + (p) => p.id === selectedProject + ); const selectedProjectName = selectedProjectData?.shortName?.trim() ? selectedProjectData.shortName : selectedProjectData?.name; diff --git a/src/components/Directory/BucketForm.jsx b/src/components/Directory/BucketForm.jsx index b45f17a0..8c228298 100644 --- a/src/components/Directory/BucketForm.jsx +++ b/src/components/Directory/BucketForm.jsx @@ -43,7 +43,7 @@ const BucketForm = ({ selectedBucket, mode, onSubmit, onCancel, isPending }) => Name {errors.name && ( @@ -51,12 +51,12 @@ const BucketForm = ({ selectedBucket, mode, onSubmit, onCancel, isPending }) => )} -
+
- {errors.description && ( -
{errors.description.message}
- )} -
+ {/* Description */} +
+ + + {errors.description && ( +
{errors.description.message}
+ )} +
- {/* Buttons */} -
- - -
- - -
+ {/* Buttons */} +
+ + +
+ + + + ); }; diff --git a/src/components/Employee/EmpActivities.jsx b/src/components/Employee/EmpActivities.jsx index 8d23b68a..55ea38cc 100644 --- a/src/components/Employee/EmpActivities.jsx +++ b/src/components/Employee/EmpActivities.jsx @@ -21,7 +21,7 @@ const EmpActivities = ({ employee }) => { if (isLoading) return
Loading...
return ( <> -
+
{ )} -
+
{
-
+
@@ -82,7 +82,7 @@ const EmpDashboard = ({ profile }) => {
-
+
{ - const {employeeId} = useParams() + const { employeeId } = useParams() return ( <> - +
+ +
); }; diff --git a/src/components/Employee/EmpOverview.jsx b/src/components/Employee/EmpOverview.jsx index cf4ce4af..79a7e423 100644 --- a/src/components/Employee/EmpOverview.jsx +++ b/src/components/Employee/EmpOverview.jsx @@ -5,7 +5,7 @@ const EmpOverview = ({ profile }) => { const { loggedInUserProfile } = useProfile(); return ( -
+
diff --git a/src/components/Employee/ManageEmployee.jsx b/src/components/Employee/ManageEmployee.jsx index 5ee82674..ebf632c5 100644 --- a/src/components/Employee/ManageEmployee.jsx +++ b/src/components/Employee/ManageEmployee.jsx @@ -17,6 +17,8 @@ import DatePicker from "../common/DatePicker"; import { defatEmployeeObj, employeeSchema } from "./EmployeeSchema"; import { useOrganizationsList } from "../../hooks/useOrganization"; import { ITEMS_PER_PAGE } from "../../utils/constants"; +import { AppFormController } from "../../hooks/appHooks/useAppForm"; +import SelectField from "../common/Forms/SelectField"; const ManageEmployee = ({ employeeId, onClosed }) => { const dispatch = useDispatch(); @@ -96,26 +98,26 @@ const ManageEmployee = ({ employeeId, onClosed }) => { reset( currentEmployee ? { - id: currentEmployee.id || null, - firstName: currentEmployee.firstName || "", - middleName: currentEmployee.middleName || "", - lastName: currentEmployee.lastName || "", - email: currentEmployee.email || "", - currentAddress: currentEmployee.currentAddress || "", - birthDate: formatDate(currentEmployee.birthDate) || "", - joiningDate: formatDate(currentEmployee.joiningDate) || "", - emergencyPhoneNumber: currentEmployee.emergencyPhoneNumber || "", - emergencyContactPerson: - currentEmployee.emergencyContactPerson || "", - aadharNumber: currentEmployee.aadharNumber || "", - gender: currentEmployee.gender || "", - panNumber: currentEmployee.panNumber || "", - permanentAddress: currentEmployee.permanentAddress || "", - phoneNumber: currentEmployee.phoneNumber || "", - jobRoleId: currentEmployee.jobRoleId?.toString() || "", - organizationId: currentEmployee.organizationId || "", - hasApplicationAccess: currentEmployee.hasApplicationAccess || false, - } + id: currentEmployee.id || null, + firstName: currentEmployee.firstName || "", + middleName: currentEmployee.middleName || "", + lastName: currentEmployee.lastName || "", + email: currentEmployee.email || "", + currentAddress: currentEmployee.currentAddress || "", + birthDate: formatDate(currentEmployee.birthDate) || "", + joiningDate: formatDate(currentEmployee.joiningDate) || "", + emergencyPhoneNumber: currentEmployee.emergencyPhoneNumber || "", + emergencyContactPerson: + currentEmployee.emergencyContactPerson || "", + aadharNumber: currentEmployee.aadharNumber || "", + gender: currentEmployee.gender || "", + panNumber: currentEmployee.panNumber || "", + permanentAddress: currentEmployee.permanentAddress || "", + phoneNumber: currentEmployee.phoneNumber || "", + jobRoleId: currentEmployee.jobRoleId?.toString() || "", + organizationId: currentEmployee.organizationId || "", + hasApplicationAccess: currentEmployee.hasApplicationAccess || false, + } : {} ); setCurrentAddressLength(currentEmployee?.currentAddress?.length || 0); @@ -147,7 +149,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => { message: "Only letters are allowed", }, })} - className="form-control form-control-sm" + className="form-control " id="firstName" placeholder="First Name" onInput={(e) => { @@ -173,7 +175,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => { message: "Only letters are allowed", }, })} - className="form-control form-control-sm" + className="form-control " id="middleName" placeholder="Middle Name" onInput={(e) => { @@ -201,7 +203,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => { message: "Only letters are allowed", }, })} - className="form-control form-control-sm" + className="form-control " id="lastName" placeholder="Last Name" onInput={(e) => { @@ -231,7 +233,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => { type="email" id="email" {...register("email")} - className="form-control form-control-sm" + className="form-control " placeholder="example@domain.com" maxLength={80} aria-describedby="Email" @@ -255,7 +257,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => { keyboardType="numeric" id="phoneNumber" {...register("phoneNumber")} - className="form-control form-control-sm" + className="form-control " placeholder="Phone Number" inputMode="numeric" maxLength={10} @@ -272,7 +274,7 @@ const ManageEmployee = ({ employeeId, onClosed }) => {
-
+ {/*
@@ -300,7 +302,44 @@ const ManageEmployee = ({ employeeId, onClosed }) => { {errors.gender.message}
)} +
*/} + +
+ + +
+ ( + + )} + /> +
+ + {errors.gender && ( +
+ {errors.gender.message} +
+ )}
+ +
-
+
diff --git a/src/components/master/Services/ServicesGroups.jsx b/src/components/master/Services/ServicesGroups.jsx index a89235ae..6af740a0 100644 --- a/src/components/master/Services/ServicesGroups.jsx +++ b/src/components/master/Services/ServicesGroups.jsx @@ -40,7 +40,7 @@ const ServiceGroups = ({ service }) => {
{/* Service Header */} -
+

{service.name}

-
+
diff --git a/src/components/purchase/DeliveryChallane.jsx b/src/components/purchase/DeliveryChallane.jsx index d3448977..eebcfad7 100644 --- a/src/components/purchase/DeliveryChallane.jsx +++ b/src/components/purchase/DeliveryChallane.jsx @@ -142,7 +142,7 @@ const DeliveryChallane = ({ purchaseId }) => { label="Select Document Type" options={data ?? []} placeholder="Choose Type" - labelKeyKey="name" + labelKey="name" valueKeyKey="id" value={field.value} onChange={field.onChange} diff --git a/src/components/purchase/PurchasePayment.jsx b/src/components/purchase/PurchasePayment.jsx index 121f77a5..f53b946b 100644 --- a/src/components/purchase/PurchasePayment.jsx +++ b/src/components/purchase/PurchasePayment.jsx @@ -111,7 +111,7 @@ const PurchasePayment = ({ onClose, purchaseId }) => { options={paymentTypes?.data ?? []} placeholder="Choose a Status" required - labelKeyKey="name" + labelKey="name" valueKeyKey="id" value={field.value} onChange={field.onChange} diff --git a/src/components/purchase/PurchasePaymentDetails.jsx b/src/components/purchase/PurchasePaymentDetails.jsx index 89805b43..093851aa 100644 --- a/src/components/purchase/PurchasePaymentDetails.jsx +++ b/src/components/purchase/PurchasePaymentDetails.jsx @@ -223,7 +223,7 @@ const PurchasePaymentDetails = ({ purchaseId = null }) => { label="Select Document Type" options={InvoiceDocTypes ?? []} placeholder="Choose Type" - labelKeyKey="name" + labelKey="name" valueKeyKey="id" value={field.value} onChange={field.onChange} diff --git a/src/pages/Activities/TaskPlannng.jsx b/src/pages/Activities/TaskPlannng.jsx index 41890b9d..b0b7d562 100644 --- a/src/pages/Activities/TaskPlannng.jsx +++ b/src/pages/Activities/TaskPlannng.jsx @@ -7,11 +7,20 @@ import { setProjectId } from "../../slices/localVariablesSlice"; import { useSelectedProject } from "../../slices/apiDataManager"; import { useProjectAssignedServices } from "../../hooks/useProjects"; import { setService } from "../../slices/globalVariablesSlice"; +import { AppFormController } from "../../hooks/appHooks/useAppForm"; +import SelectField from "../../components/common/Forms/SelectField"; +import { useForm } from "react-hook-form"; const TaskPlanning = () => { const selectedProject = useSelectedProject(); const selectedService = useCurrentService(); const dispatch = useDispatch(); + const { control } = useForm({ + defaultValues: { + serviceFilter: selectedService ?? "" + }, + }); + const { projectNames = [], loading: projectLoading } = useProjectName(); @@ -29,6 +38,7 @@ const TaskPlanning = () => { if (projectLoading) { return
Loading...
; } + return (
{ {data?.length === 0 ? (

Service not assigned

) : ( - + ( + { + field.onChange(val); + dispatch(setService(val)); + }} + className="m-0" + /> + )} + /> )}
+ + {/* Planning Component */} {selectedProject ? ( diff --git a/src/pages/DailyProgressReport/DailyProgrssReport.jsx b/src/pages/DailyProgressReport/DailyProgrssReport.jsx index 1985db38..e543895e 100644 --- a/src/pages/DailyProgressReport/DailyProgrssReport.jsx +++ b/src/pages/DailyProgressReport/DailyProgrssReport.jsx @@ -10,6 +10,9 @@ import { useFab } from "../../Context/FabContext"; import SubTask from "../../components/Activities/SubTask"; import { useProjectAssignedServices } from "../../hooks/useProjects"; import { useSelectedProject } from "../../slices/apiDataManager"; +import SelectField from "../../components/common/Forms/SelectField"; +import { AppFormController } from "../../hooks/appHooks/useAppForm"; +import { useForm } from "react-hook-form"; const DailyProgrssContext = createContext(); export const useDailyProgrssContext = () => { @@ -23,9 +26,9 @@ export const useDailyProgrssContext = () => { }; const DailyProgrssReport = () => { - const selectedProject = useSelectedProject() + const selectedProject = useSelectedProject() const [service, setService] = useState(""); - const [filter,setFilter] = useState('') + const [filter, setFilter] = useState('') const { setOffcanvasContent, setShowTrigger } = useFab(); const { data, isLoading, isError, error } = useProjectAssignedServices(selectedProject); @@ -41,8 +44,14 @@ const DailyProgrssReport = () => { filter, }; - const handleFilter = (filterObj)=>{ - setFilter(filterObj) + const { control } = useForm({ + defaultValues: { + serviceFilter: "" + } + }); + + const handleFilter = (filterObj) => { + setFilter(filterObj) } useEffect(() => { @@ -89,32 +98,38 @@ const DailyProgrssReport = () => { />
- {data?.length > 0 && (
- -
)} + {data?.length > 0 && ( +
+ ( + { + field.onChange(val); + setService(val); + }} + className="m-0" + /> + )} + /> +
+ )} +
+ +
); diff --git a/src/pages/authentication/ChangePassword.jsx b/src/pages/authentication/ChangePassword.jsx index 844ce97c..3e037521 100644 --- a/src/pages/authentication/ChangePassword.jsx +++ b/src/pages/authentication/ChangePassword.jsx @@ -71,8 +71,7 @@ const ChangePasswordPage = () => { const bodyContxt = ( -
- +
Change Password

@@ -86,7 +85,7 @@ const ChangePasswordPage = () => {

{
{
{ )}
-
+
Your password must have at least 8 characters and include a lower case letter, an uppercase letter, a number, and a special character.
{/* Action Buttons */} -
- +
+
diff --git a/src/pages/master/MasterPage.jsx b/src/pages/master/MasterPage.jsx index 31f14da4..ee6187fc 100644 --- a/src/pages/master/MasterPage.jsx +++ b/src/pages/master/MasterPage.jsx @@ -15,6 +15,9 @@ import { changeMaster } from "../../slices/localVariablesSlice"; import { useHasUserPermission } from "../../hooks/useHasUserPermission"; import { MANAGE_MASTER } from "../../utils/constants"; import GlobalModel from "../../components/common/GlobalModel"; +import { AppFormController } from "../../hooks/appHooks/useAppForm"; +import SelectField from "../../components/common/Forms/SelectField"; +import { useForm } from "react-hook-form"; export const MasterContext = createContext(); @@ -33,6 +36,11 @@ const MasterPage = () => { (store) => store.localVariables.selectedMaster ); const hasMasterPermission = useHasUserPermission(MANAGE_MASTER); + const { control, handleSubmit } = useForm({ + defaultValues: { + masterSelection: selectedMaster || "", + }, + }); const { data: menuData, @@ -46,9 +54,9 @@ const MasterPage = () => { isError: isMasterError, } = useMaster(); const { mutate: DeleteMaster, isPending: isDeleting } = useDeleteMasterItem(); - const [isDeleletingServiceItem,setDeleletingServiceItem] = useState({isOpen:false,ItemId:null,whichItem:null}) - const {mutate:DeleteSericeGroup,isPending:deletingGroup} =useDeleteServiceGroup() - const {mutate:DeleteAcivity,isPending:deletingActivity} = useDeleteActivity() + const [isDeleletingServiceItem, setDeleletingServiceItem] = useState({ isOpen: false, ItemId: null, whichItem: null }) + const { mutate: DeleteSericeGroup, isPending: deletingGroup } = useDeleteServiceGroup() + const { mutate: DeleteAcivity, isPending: deletingActivity } = useDeleteActivity() const [modalConfig, setModalConfig] = useState(null); const [deleteData, setDeleteData] = useState(null); @@ -89,15 +97,15 @@ const MasterPage = () => { }; - const handleDeleteServiceItem =()=>{ - if(!isDeleletingServiceItem.ItemId) return + const handleDeleteServiceItem = () => { + if (!isDeleletingServiceItem.ItemId) return debugger - if(isDeleletingServiceItem.whichItem === "activity"){ - DeleteAcivity(isDeleletingServiceItem.ItemId,{onSuccess:()=>setDeleletingServiceItem({isOpen:false,ItemId:null,whichItem:null})}) - }else{ - DeleteSericeGroup(isDeleletingServiceItem.ItemId,{onSuccess:()=>setDeleletingServiceItem({isOpen:false,ItemId:null,whichItem:null})}) + if (isDeleletingServiceItem.whichItem === "activity") { + DeleteAcivity(isDeleletingServiceItem.ItemId, { onSuccess: () => setDeleletingServiceItem({ isOpen: false, ItemId: null, whichItem: null }) }) + } else { + DeleteSericeGroup(isDeleletingServiceItem.ItemId, { onSuccess: () => setDeleletingServiceItem({ isOpen: false, ItemId: null, whichItem: null }) }) } - + } @@ -115,7 +123,7 @@ const MasterPage = () => { ); return ( - + {modalConfig && ( { /> )} - - { onSubmit={handleDeleteSubmit} onClose={() => setDeleteData(null)} /> - + setDeleletingServiceItem({isOpen:false,ItemId:null,whichItem:null})} + onSubmit={handleDeleteServiceItem} + onClose={() => setDeleletingServiceItem({ isOpen: false, ItemId: null, whichItem: null })} />
@@ -161,31 +167,37 @@ const MasterPage = () => { data={[{ label: "Home", link: "/dashboard" }, { label: "Masters" }]} /> -
-
+
+
-
- + />
+
{ } > Add{" "} - {selectedMaster} + {selectedMaster} )}
@@ -220,7 +232,7 @@ const MasterPage = () => {
- + ); }; diff --git a/src/pages/master/MasterTable.jsx b/src/pages/master/MasterTable.jsx index cb5fe881..a242f89a 100644 --- a/src/pages/master/MasterTable.jsx +++ b/src/pages/master/MasterTable.jsx @@ -80,7 +80,7 @@ const MasterTable = ({ data, columns, loading, handleModalData }) => { }; return ( -
+
{loading ? (

Loading...

) : ( @@ -92,14 +92,14 @@ const MasterTable = ({ data, columns, loading, handleModalData }) => { {" "} {selectedMaster === "Activity" ? "Activity" : "Name"} - + {" "} {selectedMaster === "Activity" ? "Unit" : selectedMaster === "Document Type" - ? "Content Type" - : "Description"} + ? "Content Type" + : "Description"} Actions @@ -109,15 +109,15 @@ const MasterTable = ({ data, columns, loading, handleModalData }) => { {currentItems.length > 0 ? ( currentItems.map((item, index) => ( - - + + {updatedColumns.map((col) => ( {col.key === "description" ? ( item[col.key] !== undefined && - item[col.key] !== null ? ( + item[col.key] !== null ? ( item[col.key].length > 80 ? ( <>{item[col.key].slice(0, 80)}... ) : ( @@ -137,7 +137,7 @@ const MasterTable = ({ data, columns, loading, handleModalData }) => { {(selectedMaster === "Application Role" || selectedMaster === "Work Category") && - item?.isSystem ? ( + item?.isSystem ? ( <>