@@ -44,9 +44,6 @@ export const usePrecognitionForm = <T extends Payload>(
44
44
const _originalPayload : T = cloneDeep ( payload )
45
45
const _originalPayloadKeys : PayloadKey < T > [ ] = Object . keys ( _originalPayload )
46
46
47
- const _payload = reactive < T > ( payload )
48
- const _errors = reactive < PayloadErrors < T > > ( { } )
49
-
50
47
const _validated = ref < PayloadKey < T > [ ] > ( [ ] ) as Ref < PayloadKey < T > [ ] >
51
48
const _touched = ref < PayloadKey < T > [ ] > ( [ ] ) as Ref < PayloadKey < T > [ ] >
52
49
@@ -131,29 +128,28 @@ export const usePrecognitionForm = <T extends Payload>(
131
128
return Promise . reject ( response )
132
129
}
133
130
134
- const form : PrecognitionForm < T > = {
135
- fields : _payload ,
136
- errors : _errors ,
131
+ const form = reactive ( {
132
+ fields : payload ,
133
+ errors : { } ,
137
134
138
- // TODO: make them accessible without '.value', use reactive() & PrecognitionForm<T> on the 'form' object
139
- processing : ref ( false ) ,
140
- validating : ref ( false ) ,
141
- hasErrors : computed ( ( ) => Object . keys ( form . errors ) . length > 0 ) ,
135
+ processing : false ,
136
+ validating : false ,
137
+ hasErrors : computed ( ( ) => Object . keys ( form . errors ) . length > 0 ) as unknown as boolean ,
142
138
143
139
touched : ( name : PayloadKey < T > ) : boolean => _touched . value . includes ( name ) ,
144
140
valid : ( name : PayloadKey < T > ) : boolean => _validated . value . includes ( name ) && ! form . invalid ( name ) ,
145
- invalid : ( name : PayloadKey < T > ) : boolean => typeof ( form . errors as PayloadErrors < T > ) [ name ] !== 'undefined' ,
141
+ invalid : ( name : PayloadKey < T > ) : boolean => typeof form . errors [ name ] !== 'undefined' ,
146
142
147
143
data ( ) : T {
148
- return toRaw ( _payload ) as T
144
+ return toRaw ( form . fields ) as T
149
145
} ,
150
146
151
147
setData ( data : PayloadData < T > ) : PrecognitionForm < T > {
152
148
Object
153
149
. keys ( data )
154
150
. forEach ( ( key : PayloadKey < T > ) => {
155
151
// @ts -expect-error: assign property value on reactive object
156
- _payload [ key ] = data [ key ]
152
+ form . fields [ key ] = data [ key ]
157
153
} )
158
154
159
155
return form
@@ -179,7 +175,7 @@ export const usePrecognitionForm = <T extends Payload>(
179
175
reset ( ...keys : PayloadKey < T > [ ] ) : PrecognitionForm < T > {
180
176
const resetField = ( fieldName : string ) => {
181
177
// @ts -expect-error: assign property value on reactive object
182
- _payload [ fieldName ] = _originalPayload [ fieldName ]
178
+ form . fields [ fieldName ] = _originalPayload [ fieldName ]
183
179
form . forgetError ( fieldName )
184
180
}
185
181
@@ -212,7 +208,7 @@ export const usePrecognitionForm = <T extends Payload>(
212
208
213
209
setErrors ( entries : PayloadErrors < T > ) : PrecognitionForm < T > {
214
210
if ( ! isEqual ( form . errors , entries ) ) {
215
- form . errors = reactive ( entries )
211
+ form . errors = entries
216
212
}
217
213
218
214
return form
@@ -234,7 +230,7 @@ export const usePrecognitionForm = <T extends Payload>(
234
230
235
231
const fields = Array . isArray ( name ) ? name : [ name ]
236
232
237
- form . validating . value = true
233
+ form . validating = true
238
234
239
235
process ( { precognitive : true , fields, options } )
240
236
. then ( ( response : ResponseType ) => {
@@ -260,18 +256,18 @@ export const usePrecognitionForm = <T extends Payload>(
260
256
261
257
options . onError ( response )
262
258
} )
263
- . finally ( ( ) => form . validating . value = false )
259
+ . finally ( ( ) => form . validating = false )
264
260
265
261
return form
266
262
} ,
267
263
268
264
async submit ( ) : Promise < ResponseType > {
269
- form . processing . value = true
265
+ form . processing = true
270
266
271
267
return await process ( )
272
- . finally ( ( ) => form . processing . value = false )
268
+ . finally ( ( ) => form . processing = false )
273
269
} ,
274
- }
270
+ } ) as PrecognitionForm < T >
275
271
276
272
form . validate = debounce ( form . validate , _config . validationTimeout ) as typeof form . validate
277
273
0 commit comments