@@ -37,6 +37,12 @@ export interface FormObjectAdditionalProps<
3737 $onChange : EventHookOn < FormObjectChanged < TData > >
3838}
3939
40+ export type FormObject <
41+ TData extends Record < string , any > ,
42+ TSchema extends StandardSchemaV1 = StandardSchemaV1 ,
43+ TAdditionalProps = Record < string , never > ,
44+ > = FormObjectBase < TData , TSchema > & FormObjectAdditionalProps < TData > & TAdditionalProps & Partial < TData > & ( ( ) => Promise < TData > )
45+
4046export function createFormObject <
4147 TData extends Record < string , any > = Record < string , any > ,
4248 TSchema extends StandardSchemaV1 = StandardSchemaV1 ,
@@ -134,7 +140,9 @@ export function createFormObject<
134140 } )
135141 }
136142
137- const proxy = new Proxy ( form , {
143+ const base = form . $submit
144+
145+ const proxy = new Proxy ( base , {
138146 set ( target , key , value ) {
139147 if ( typeof key === 'string' && ! key . startsWith ( '$' ) ) {
140148 const oldValue = initialData [ key as keyof typeof initialData ]
@@ -147,17 +155,20 @@ export function createFormObject<
147155 }
148156 queueChange ( )
149157 }
150- return Reflect . set ( target , key , value )
158+ return Reflect . set ( form , key , value )
159+ } ,
160+ get ( target , key ) {
161+ return Reflect . get ( form , key )
151162 } ,
152- ownKeys ( target ) {
153- return Reflect . ownKeys ( target ) . filter ( key => typeof key !== 'string' || ! key . startsWith ( '$' ) )
163+ ownKeys ( ) {
164+ return Reflect . ownKeys ( form ) . filter ( key => typeof key !== 'string' || ! key . startsWith ( '$' ) )
154165 } ,
155166 } )
156167
157168 // Validate initially (don't await for it)
158169 queueChange ( )
159170
160- return proxy as FormObjectBase < TData , TSchema > & FormObjectAdditionalProps < TData > & TAdditionalProps & Partial < TData >
171+ return proxy as FormObject < TData , TSchema , TAdditionalProps >
161172}
162173
163174/**
0 commit comments