Safe jobRoleId filter in AssignRoleModel and ensure onClose works in form submit

This commit is contained in:
Pramod Mahajan 2025-04-30 16:08:44 +05:30 committed by Vikas Nale
parent 655967746f
commit 047fcc3222

View File

@ -53,16 +53,21 @@ const AssignRoleModel = ({ assignData, onClose }) => {
}, },
}); });
const handleRoleChange = (event) => { const handleRoleChange = ( event ) =>
setSelectedRole(event.plannedTask.value); {
reset()
setSelectedEmployees( [] )
setSelectedRole(event.target.value);
}; };
const filteredEmployees = const filteredEmployees =
selectedRole === "all" selectedRole === "all"
? employees ? employees
: employees.filter((emp) => emp.JobRoleId.toString() === selectedRole); : employees.filter((emp) =>
String(emp.jobRoleId || "") === selectedRole
);
// not need currently for this fun
const handleEmployeeSelection = (employeeId, field) => { const handleEmployeeSelection = (employeeId, field) => {
setSelectedEmployees((prevSelected) => { setSelectedEmployees((prevSelected) => {
let updatedSelection; let updatedSelection;
@ -97,8 +102,7 @@ const AssignRoleModel = ({ assignData, onClose }) => {
showToast( "Task Successfully Assigend", "success" ); showToast( "Task Successfully Assigend", "success" );
setSelectedEmployees([]) setSelectedEmployees([])
reset(); reset();
closeModal() onClose();
} catch (error) { } catch (error) {
showToast("something wrong", "error"); showToast("something wrong", "error");
} }
@ -109,7 +113,18 @@ const AssignRoleModel = ({ assignData, onClose }) => {
}, [dispatch]); }, [dispatch]);
return ( return (
<> <div
className="modal-dialog modal-lg modal-simple mx-sm-auto mx-1 edit-project-modal"
role="document"
>
<div className="modal-content">
<div className="modal-body p-sm-4 p-0">
<button
type="button"
className="btn-close"
onClick={onClose}
aria-label="Close"
></button>
<div className="container my-1"> <div className="container my-1">
<div className="mb-"> <div className="mb-">
<p className="fs-sm-5 fs-6 text-dark text-start d-flex align-items-center flex-wrap"> <p className="fs-sm-5 fs-6 text-dark text-start d-flex align-items-center flex-wrap">
@ -161,6 +176,7 @@ const AssignRoleModel = ({ assignData, onClose }) => {
<div className="divider text-start"> <div className="divider text-start">
<div className="divider-text">Employee</div> <div className="divider-text">Employee</div>
</div> </div>
{( filteredEmployees?.length === 0 && employees ) && <div>No employees found</div>}
<div className="row"> <div className="row">
<div className="col-12 col-md-8 h-sm-25 overflow-auto"> <div className="col-12 col-md-8 h-sm-25 overflow-auto">
@ -168,9 +184,9 @@ const AssignRoleModel = ({ assignData, onClose }) => {
<div className="row mb-2"> <div className="row mb-2">
<div className="col-sm-12"> <div className="col-sm-12">
<div className="row"> <div className="row">
{filteredEmployees.map((emp) => { {filteredEmployees?.map((emp) => {
const jobRole = jobRoleData?.find( const jobRole = jobRoleData?.find(
(role) => role.id === emp.jobRoleId (role) => role?.id === emp?.jobRoleId
); );
return ( return (
@ -188,9 +204,9 @@ const AssignRoleModel = ({ assignData, onClose }) => {
{...field} {...field}
className="form-check-input mx-2" className="form-check-input mx-2"
type="checkbox" type="checkbox"
id={`employee-${emp.id}`} id={`employee-${emp?.id}`}
value={emp.id} value={emp.id}
checked={field.value.includes(emp.id)} // Ensure the checkbox reflects the current form state checked={field.value.includes(emp.id)}
onChange={() => { onChange={() => {
handleEmployeeSelection(emp.id, field); handleEmployeeSelection(emp.id, field);
}} }}
@ -326,7 +342,7 @@ const AssignRoleModel = ({ assignData, onClose }) => {
className="btn btn-sm btn-label-secondary" className="btn btn-sm btn-label-secondary"
data-bs-dismiss="modal" data-bs-dismiss="modal"
aria-label="Close" aria-label="Close"
onClick={closeModal} onClick={onClose}
> >
Cancel Cancel
</button> </button>
@ -334,7 +350,9 @@ const AssignRoleModel = ({ assignData, onClose }) => {
</form> </form>
</div> </div>
</div> </div>
</> </div>
</div>
</div>
); );
}; };
export default AssignRoleModel; export default AssignRoleModel;