@@ -17,12 +17,14 @@ export interface FormProviderProps {
1717
1818export interface FormContextProps extends FormProviderProps {
1919 triggerFormChange : ( name : string , changedFields : FieldData [ ] ) => void ;
20- registerForm : ( name : string , form : FormInstance ) => ( ) => void ;
20+ registerForm : ( name : string , form : FormInstance ) => void ;
21+ unregisterForm : ( name : string ) => void ;
2122}
2223
2324const FormContext = React . createContext < FormContextProps > ( {
2425 triggerFormChange : ( ) => { } ,
25- registerForm : ( ) => ( ) => { } ,
26+ registerForm : ( ) => { } ,
27+ unregisterForm : ( ) => { } ,
2628} ) ;
2729
2830const FormProvider : React . FunctionComponent < FormProviderProps > = ( {
@@ -38,7 +40,7 @@ const FormProvider: React.FunctionComponent<FormProviderProps> = ({
3840 < FormContext . Provider
3941 value = { {
4042 ...formContext ,
41- validateMessages,
43+ validateMessages : { ... formContext . validateMessages , ... validateMessages } ,
4244
4345 // =========================================================
4446 // = Global Form Control =
@@ -50,6 +52,8 @@ const FormProvider: React.FunctionComponent<FormProviderProps> = ({
5052 forms : formsRef . current ,
5153 } ) ;
5254 }
55+
56+ formContext . triggerFormChange ( name , changedFields ) ;
5357 } ,
5458 registerForm : ( name , form ) => {
5559 if ( name ) {
@@ -59,11 +63,14 @@ const FormProvider: React.FunctionComponent<FormProviderProps> = ({
5963 } ;
6064 }
6165
62- return ( ) => {
63- const newForms = { ...formsRef . current } ;
64- delete newForms [ name ] ;
65- formsRef . current = newForms ;
66- } ;
66+ formContext . registerForm ( name , form ) ;
67+ } ,
68+ unregisterForm : name => {
69+ const newForms = { ...formsRef . current } ;
70+ delete newForms [ name ] ;
71+ formsRef . current = newForms ;
72+
73+ formContext . unregisterForm ( name ) ;
6774 } ,
6875 } }
6976 >
0 commit comments