@@ -48,6 +48,11 @@ function JobFormBuilder() {
4848
4949 const jobPositions = [ 'Software Developer' , 'Project Manager' , 'Analyst' ] ;
5050
51+ const markAsSaved = fields => {
52+ setInitialFormFields ( structuredClone ( fields ) ) ;
53+ setHasUnsavedChanges ( false ) ;
54+ } ;
55+
5156 // Prevent refresh while unsaved changes exist
5257 useEffect ( ( ) => {
5358 const handler = event => {
@@ -73,13 +78,10 @@ function JobFormBuilder() {
7378
7479 setCurrentFormId ( id ) ;
7580 setFormFields ( form . questions || [ ] ) ;
76- setInitialFormFields ( form . questions || [ ] ) ;
77-
81+ markAsSaved ( form . questions || [ ] ) ;
7882 setNewField ( initialNewField ) ;
79- setHasUnsavedChanges ( false ) ;
8083 }
8184 } catch ( error ) {
82- // still allowed logging
8385 console . error ( error ) ;
8486 }
8587 } ;
@@ -101,7 +103,6 @@ function JobFormBuilder() {
101103 // Clone field
102104 const cloneField = async ( field , index ) => {
103105 const clone = structuredClone ( field ) ;
104-
105106 const updated = [ ...formFields . slice ( 0 , index + 1 ) , clone , ...formFields . slice ( index + 1 ) ] ;
106107 setFormFields ( updated ) ;
107108
@@ -111,6 +112,7 @@ function JobFormBuilder() {
111112 question : clone ,
112113 position : index + 1 ,
113114 } ) ;
115+ markAsSaved ( updated ) ;
114116 } catch ( error ) {
115117 console . error ( error ) ;
116118 }
@@ -132,6 +134,7 @@ function JobFormBuilder() {
132134 fromIndex : index ,
133135 toIndex : newIndex ,
134136 } ) ;
137+ markAsSaved ( updated ) ;
135138 } catch ( error ) {
136139 console . error ( error ) ;
137140 }
@@ -147,6 +150,7 @@ function JobFormBuilder() {
147150 if ( currentFormId ) {
148151 try {
149152 await axios . delete ( ENDPOINTS . DELETE_QUESTION ( currentFormId , index ) ) ;
153+ markAsSaved ( updated ) ;
150154 } catch ( error ) {
151155 console . error ( error ) ;
152156 }
@@ -187,6 +191,7 @@ function JobFormBuilder() {
187191 ENDPOINTS . UPDATE_QUESTION ( currentFormId , editingIndex ) ,
188192 updated [ editingIndex ] ,
189193 ) ;
194+ markAsSaved ( updated ) ;
190195 } catch ( error ) {
191196 console . error ( error ) ;
192197 }
@@ -236,6 +241,7 @@ function JobFormBuilder() {
236241 question : newField ,
237242 position : formFields . length ,
238243 } ) ;
244+ markAsSaved ( updated ) ;
239245 } catch ( error ) {
240246 console . error ( error ) ;
241247 }
@@ -301,7 +307,13 @@ function JobFormBuilder() {
301307 < QuestionSetManager
302308 formFields = { formFields }
303309 setFormFields = { setFormFields }
304- onImportQuestions = { setFormFields }
310+ onImportQuestions = { fields => {
311+ setFormFields ( fields ) ;
312+ markAsSaved ( fields ) ;
313+ } }
314+ onTemplateSaved = { ( ) => {
315+ markAsSaved ( formFields ) ;
316+ } }
305317 darkMode = { darkMode }
306318 templateName = { templateName }
307319 setTemplateName = { setTemplateName }
0 commit comments