11import React , { useEffect } from 'react' ;
2+ import { useNavigate } from 'react-router-dom' ;
23
3- import { mergeSession } from '@flexion/forms-core' ;
4+ import { applyPromptResponse , mergeSession } from '@flexion/forms-core' ;
45
56import Form from '../../Form/Form.js' ;
67import { useRouteParams } from '../hooks.js' ;
@@ -12,7 +13,8 @@ export const FormPreview = () => {
1213 setSession : state . setSession ,
1314 } ) ) ;
1415 const session = useFormManagerStore ( state => state . session ) ;
15- const { routeParams } = useRouteParams ( ) ;
16+ const { routeParams, pathname } = useRouteParams ( ) ;
17+ const navigate = useNavigate ( ) ;
1618
1719 useEffect ( ( ) => {
1820 if ( routeParams . page !== session . route ?. params . page ) {
@@ -27,5 +29,37 @@ export const FormPreview = () => {
2729 }
2830 } , [ routeParams . page ] ) ;
2931
30- return < Form isPreview = { true } context = { context } session = { session } /> ;
32+ const handleSubmit = ( data : Record < string , string > ) => {
33+ // Validate and update session with form data
34+ const result = applyPromptResponse ( context . config , session , {
35+ action : 'submit' ,
36+ data,
37+ } ) ;
38+
39+ if ( ! result . success ) {
40+ console . warn ( 'Error applying prompt response in preview...' , result . error ) ;
41+ return ;
42+ }
43+
44+ // Update session with validated data
45+ setSession ( result . data ) ;
46+
47+ // Navigate to next page
48+ const currentPage = Number ( routeParams . page ) || 0 ;
49+ const nextPage = currentPage + 1 ;
50+ const newParams = new URLSearchParams ( {
51+ ...routeParams ,
52+ page : nextPage . toString ( ) ,
53+ } ) ;
54+ navigate ( `${ pathname } ?${ newParams . toString ( ) } ` ) ;
55+ } ;
56+
57+ return (
58+ < Form
59+ isPreview = { true }
60+ context = { context }
61+ session = { session }
62+ onSubmit = { handleSubmit }
63+ />
64+ ) ;
3165} ;
0 commit comments