@@ -2,7 +2,7 @@ import { yupResolver } from "@hookform/resolvers/yup";
22import { Stack } from "@mui/material" ;
33import { FormProvider , useForm } from "react-hook-form" ;
44import DrawerTitleBar from "@/components/Shared/Drawer/DrawerTitleBar" ;
5- import { useCallback , useMemo , useState } from "react" ;
5+ import { useCallback , useEffect , useState } from "react" ;
66import { useMenuStore } from "@/store/menuStore" ;
77import DrawerActionBarTop from "@/components/Shared/Drawer/DrawerActionBarTop" ;
88import DrawerActionBarBottom from "@/components/Shared/Drawer/DrawerActionBarBottom" ;
@@ -52,6 +52,9 @@ const RequirementDrawer: React.FC<RequirementDrawerProps> = ({
5252 index,
5353} ) => {
5454 const { appHeaderHeight } = useMenuStore ( ) ;
55+ const [ inspectionRequirementData , setInspectionRequirementData ] = useState <
56+ InspectionRequirementFormData | undefined
57+ > ( undefined ) ;
5558 const [ requirementSourceList , setRequirementSourceList ] = useState <
5659 RequirementSourceFormData [ ]
5760 > ( [ ] ) ;
@@ -60,18 +63,17 @@ const RequirementDrawer: React.FC<RequirementDrawerProps> = ({
6063 const { data : complianceFindingsList } = useComplianceFindingsData ( ) ;
6164 const { data : topicsList } = useTopicsData ( ) ;
6265
63- const defaultValues = useMemo < InspectionRequirementFormData > ( ( ) => {
64- return requirement ? formatRequirementFormData ( requirement ) : initFormData ;
65- } , [ requirement ] ) ;
66-
6766 const methods = useForm < RequirementSchemaType > ( {
6867 resolver : yupResolver ( RequirementFormSchema ) ,
6968 mode : "onBlur" ,
70- defaultValues : defaultValues ,
7169 } ) ;
7270
7371 const { handleSubmit, reset } = methods ;
7472
73+ useEffect ( ( ) => {
74+ reset ( inspectionRequirementData ?? initFormData ) ;
75+ } , [ inspectionRequirementData , reset ] ) ;
76+
7577 const onSuccess = useCallback ( ( ) => {
7678 onSubmit ( "Changes saved successfully!" ) ;
7779 } , [ onSubmit ] ) ;
@@ -81,10 +83,34 @@ const RequirementDrawer: React.FC<RequirementDrawerProps> = ({
8183 reset ( ) ;
8284 } , [ onSubmit , reset ] ) ;
8385
84- const { mutate : createInspectionRequirement } =
85- useCreateInspectionRequirement ( onSuccess ) ;
86- const { mutate : updateInspectionRequirement } =
87- useUpdateInspectionRequirement ( onSuccess ) ;
86+ const {
87+ mutate : createInspectionRequirement ,
88+ data : inspectionRequirementCreateData ,
89+ } = useCreateInspectionRequirement ( onSuccess ) ;
90+ const {
91+ mutate : updateInspectionRequirement ,
92+ data : inspectionRequirementUpdateData ,
93+ } = useUpdateInspectionRequirement ( onSuccess ) ;
94+
95+ useEffect ( ( ) => {
96+ const inspectionRequirement : InspectionRequirement =
97+ inspectionRequirementUpdateData ??
98+ inspectionRequirementCreateData ??
99+ requirement ;
100+ if ( inspectionRequirement ) {
101+ const inspectionRequirementFormData = formatRequirementFormData (
102+ inspectionRequirement
103+ ) ;
104+ setInspectionRequirementData ( inspectionRequirementFormData ) ;
105+ setRequirementSourceList (
106+ inspectionRequirementFormData . requirementSourceDetails ?? [ ]
107+ ) ;
108+ }
109+ } , [
110+ inspectionRequirementUpdateData ,
111+ inspectionRequirementCreateData ,
112+ requirement ,
113+ ] ) ;
88114
89115 const { mutate : deleteInspectionRequirement } =
90116 useDeleteInspectionRequirement ( onDeleteSuccess ) ;
@@ -106,10 +132,10 @@ const RequirementDrawer: React.FC<RequirementDrawerProps> = ({
106132 requirementSourceList
107133 ) ;
108134
109- if ( requirement ) {
135+ if ( inspectionRequirementData ) {
110136 updateInspectionRequirement ( {
111137 inspectionId : inspectionData . id ,
112- requirementId : requirement . id ,
138+ requirementId : inspectionRequirementData . id ?? 0 ,
113139 inspectionRequirement : inspectionRequirementPayload ,
114140 } ) ;
115141 } else {
@@ -122,7 +148,7 @@ const RequirementDrawer: React.FC<RequirementDrawerProps> = ({
122148 [
123149 inspectionData ,
124150 requirementSourceList ,
125- requirement ,
151+ inspectionRequirementData ,
126152 updateInspectionRequirement ,
127153 createInspectionRequirement ,
128154 ]
@@ -140,14 +166,15 @@ const RequirementDrawer: React.FC<RequirementDrawerProps> = ({
140166 < form onSubmit = { handleSubmit ( onSubmitHandler ) } >
141167 < DrawerTitleBar
142168 title = {
143- requirement
169+ inspectionRequirementData
144170 ? `Edit Requirement ${ index !== undefined ? `#${ index + 1 } ` : "" } `
145171 : "Create Requirement"
146172 }
147173 isFormDirtyCheck
148174 />
149- < DrawerActionBarTop isShowActionBar = { ! requirement } />
175+ < DrawerActionBarTop isShowActionBar = { ! inspectionRequirementData } />
150176 < Stack
177+ key = { JSON . stringify ( inspectionRequirementData ) }
151178 height = { `calc(100vh - ${ appHeaderHeight + 129 } px)` } // 64px (DrawerTitleBar height) + 65px (DrawerActionBar height)
152179 direction = { "row" }
153180 >
@@ -159,16 +186,15 @@ const RequirementDrawer: React.FC<RequirementDrawerProps> = ({
159186 />
160187 < RequirementFormRight
161188 onDataChange = { onRequirementSourceListDataChange }
162- requirementSourceFormDataList = {
163- defaultValues . requirementSourceDetails ?? [ ]
164- }
189+ requirementSourceFormDataList = { requirementSourceList }
165190 />
166191 </ Stack >
167192 < DrawerActionBarBottom
168- isShowActionBar = { ! ! requirement }
193+ isShowActionBar = { ! ! inspectionRequirementData }
169194 onDeleteAction = { onDeleteRequirement }
170195 onDeleteTitle = "Delete Requirement"
171196 onDeleteDescription = "You are about to delete this Requirement. Are you sure?"
197+ dirtyCheck = { false }
172198 />
173199 </ form >
174200 </ FormProvider >
0 commit comments