|
|
|
@ -1,3 +1,4 @@ |
|
|
|
import type { Recordable } from '@vben-core/typings'; |
|
|
|
import type { |
|
|
|
FormState, |
|
|
|
GenericObject, |
|
|
|
@ -41,11 +42,14 @@ function getDefaultState(): VbenFormProps { |
|
|
|
} |
|
|
|
|
|
|
|
export class FormApi { |
|
|
|
// 最后一次点击提交时的表单值
|
|
|
|
private latestSubmissionValues: null | Recordable<any> = null; |
|
|
|
private prevState: null | VbenFormProps = null; |
|
|
|
|
|
|
|
// private api: Pick<VbenFormProps, 'handleReset' | 'handleSubmit'>;
|
|
|
|
public form = {} as FormActions; |
|
|
|
|
|
|
|
isMounted = false; |
|
|
|
|
|
|
|
public state: null | VbenFormProps = null; |
|
|
|
|
|
|
|
stateHandler: StateHandler; |
|
|
|
@ -110,6 +114,10 @@ export class FormApi { |
|
|
|
this.store.batch(cb); |
|
|
|
} |
|
|
|
|
|
|
|
getLatestSubmissionValues() { |
|
|
|
return this.latestSubmissionValues || {}; |
|
|
|
} |
|
|
|
|
|
|
|
getState() { |
|
|
|
return this.state; |
|
|
|
} |
|
|
|
@ -164,6 +172,7 @@ export class FormApi { |
|
|
|
if (!this.isMounted) { |
|
|
|
Object.assign(this.form, formActions); |
|
|
|
this.stateHandler.setConditionTrue(); |
|
|
|
this.setLatestSubmissionValues({ ...toRaw(this.form.values) }); |
|
|
|
this.isMounted = true; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -207,6 +216,10 @@ export class FormApi { |
|
|
|
form.setFieldValue(field, value, shouldValidate); |
|
|
|
} |
|
|
|
|
|
|
|
setLatestSubmissionValues(values: null | Recordable<any>) { |
|
|
|
this.latestSubmissionValues = { ...toRaw(values) }; |
|
|
|
} |
|
|
|
|
|
|
|
setState( |
|
|
|
stateOrFn: |
|
|
|
| ((prev: VbenFormProps) => Partial<VbenFormProps>) |
|
|
|
@ -249,12 +262,14 @@ export class FormApi { |
|
|
|
await form.submitForm(); |
|
|
|
const rawValues = toRaw(form.values || {}); |
|
|
|
await this.state?.handleSubmit?.(rawValues); |
|
|
|
|
|
|
|
return rawValues; |
|
|
|
} |
|
|
|
|
|
|
|
unmount() { |
|
|
|
this.form?.resetForm?.(); |
|
|
|
// this.state = null;
|
|
|
|
this.latestSubmissionValues = null; |
|
|
|
this.isMounted = false; |
|
|
|
this.stateHandler.reset(); |
|
|
|
} |
|
|
|
|