11'use client' ;
22
33import { PydanticForm } from 'pydantic-forms' ;
4- import type { PydanticFormProvider } from 'pydantic-forms' ;
4+ import type {
5+ PydanticFormApiProvider ,
6+ PydanticFormCustomDataProvider ,
7+ PydanticFormLabelProvider ,
8+ } from 'pydantic-forms' ;
59
610import styles from './page.module.css' ;
711
812export default function Home ( ) {
9- const pydanticFormProvider : PydanticFormProvider = async ( {
13+ const pydanticFormApiProvider : PydanticFormApiProvider = async ( {
1014 requestBody,
1115 } ) => {
1216 const fetchResult = await fetch ( 'http://localhost:8000/form' , {
@@ -20,17 +24,65 @@ export default function Home() {
2024 return jsonResult ;
2125 } ;
2226
27+ const pydanticLabelProvider : PydanticFormLabelProvider = async ( ) => {
28+ return new Promise ( ( resolve ) => {
29+ resolve ( {
30+ labels : {
31+ name : 'LABEL NAAM' ,
32+ name_info : 'DESCRIPTION NAAM' ,
33+ } ,
34+ data : {
35+ name : 'VALUE NAAM' ,
36+ } ,
37+ } ) ;
38+ } ) ;
39+ } ;
40+
41+ const pydanticCustomDataProvider : PydanticFormCustomDataProvider = ( ) => {
42+ return new Promise ( ( resolve ) => {
43+ resolve ( {
44+ name : 'CUSTOM VALUE NAAM' ,
45+ } ) ;
46+ } ) ;
47+ } ;
48+
49+ const ResetButtonAlternative = ( ) => (
50+ < button type = "button" > Alternative reset</ button >
51+ ) ;
52+
53+ const CancelButtonAlternative = ( ) => (
54+ < button type = "button" > Alternative cancel</ button >
55+ ) ;
56+
2357 return (
2458 < div className = { styles . page } >
2559 < h1 > Pydantic Form</ h1 >
2660
2761 < PydanticForm
2862 id = "theForm"
63+ title = "The form title"
64+ sendLabel = "Send label"
65+ successNotice = "Custom success notice"
2966 onSuccess = { ( ) => {
67+ // console.log(fieldValues, summaryData, response);
3068 alert ( 'Form submitted successfully' ) ;
3169 } }
70+ onCancel = { ( ) => {
71+ alert ( 'Form cancelled' ) ;
72+ } }
73+ onChange = { ( ) => {
74+ // console.log('onChange', fieldValues);
75+ } }
3276 config = { {
33- formProvider : pydanticFormProvider ,
77+ apiProvider : pydanticFormApiProvider ,
78+ labelProvider : pydanticLabelProvider ,
79+ customDataProvider : pydanticCustomDataProvider ,
80+ resetButtonAlternative : ResetButtonAlternative ( ) ,
81+ cancelButton : CancelButtonAlternative ( ) ,
82+ allowUntouchedSubmit : true ,
83+ onFieldChangeHandler : ( ) => {
84+ // console.log('calling onFieldChangeHandler', field);
85+ } ,
3486 } }
3587 headerComponent = { < div > HEADER COMPONENT</ div > }
3688 footerComponent = { < div > FOOTER COMPONENT</ div > }
0 commit comments