11import { useState } from "react" ;
22
3+ import { useFormContext } from "react-hook-form" ;
4+ import type { MemberFormValues } from "../Validator/AddMember.Validator" ;
5+
36type MembershipStatus = "Active" | "Inactive" | "Pending" | "Suspended" | "On Boarding" ;
47
58const MemberShip_Status = ( ) => {
6- const [ membershipStatus , setMembershipStatus ] = useState < MembershipStatus > ( "Active" ) ;
7-
89 const statusColorMap : Record < MembershipStatus , string > = {
910 Active : "bg-green-500" ,
1011 Inactive : "bg-gray-400" ,
@@ -13,10 +14,12 @@ const MemberShip_Status = () => {
1314 "On Boarding" : "bg-blue-400" ,
1415 } ;
1516
17+ const { watch, setValue , formState} = useFormContext < MemberFormValues > ( ) ;
18+ const { errors} = formState
19+ const membershipStatus = ( watch ( "membershipStatus" ) ?? "On Boarding" ) as MembershipStatus ;
20+
1621 return (
1722 < div className = "MemberShip_Status flex flex-col gap-2 mt-4 text-lg" >
18- < p className = "text-md font-semibold" > Membership Status</ p >
19-
2023 { /* Active */ }
2124 < div className = "flex items-center gap-4" >
2225 < input
@@ -25,7 +28,7 @@ const MemberShip_Status = () => {
2528 id = "Active"
2629 value = "Active"
2730 checked = { membershipStatus === "Active" }
28- onChange = { ( ) => setMembershipStatus ( " Active") }
31+ onChange = { ( ) => setValue ( "membershipStatus" , " Active", { shouldDirty : true } ) }
2932 />
3033
3134 < span
@@ -34,15 +37,20 @@ const MemberShip_Status = () => {
3437 < label htmlFor = "Active" > Active</ label >
3538 </ div >
3639
40+ { errors . membershipStatus && (
41+ < p className = "text-red-500 text-sm" > { errors . membershipStatus . message } </ p >
42+ ) }
43+
3744 { /* Inactive */ }
3845 < div className = "flex items-center gap-4" >
3946 < input
4047 type = "radio"
4148 id = "Inactive"
4249 name = "membershipStatus"
50+
4351 value = "Inactive"
4452 checked = { membershipStatus === "Inactive" }
45- onChange = { ( ) => setMembershipStatus ( " Inactive") }
53+ onChange = { ( ) => setValue ( "membershipStatus" , " Inactive", { shouldDirty : true } ) }
4654 />
4755
4856 < span
@@ -60,7 +68,7 @@ const MemberShip_Status = () => {
6068 value = "Pending"
6169 id = "Pending"
6270 checked = { membershipStatus === "Pending" }
63- onChange = { ( ) => setMembershipStatus ( " Pending") }
71+ onChange = { ( ) => setValue ( "membershipStatus" , " Pending", { shouldDirty : true } ) }
6472 />
6573
6674 < span
@@ -77,7 +85,7 @@ const MemberShip_Status = () => {
7785 id = "OnBoarding"
7886 value = "On Boarding"
7987 checked = { membershipStatus === "On Boarding" }
80- onChange = { ( ) => setMembershipStatus ( " On Boarding") }
88+ onChange = { ( ) => setValue ( "membershipStatus" , " On Boarding", { shouldDirty : true } ) }
8189 />
8290 < span
8391 className = { `w-4 h-4 rounded-full ${ statusColorMap [ "On Boarding" ] } border border-gray-300` }
@@ -93,7 +101,7 @@ const MemberShip_Status = () => {
93101 id = "Suspended"
94102 value = "Suspended"
95103 checked = { membershipStatus === "Suspended" }
96- onChange = { ( ) => setMembershipStatus ( " Suspended") }
104+ onChange = { ( ) => setValue ( "membershipStatus" , " Suspended", { shouldDirty : true } ) }
97105 />
98106
99107 < span
0 commit comments