docs/docs/reference/dashboard/detail-views/use-generated-form.mdx
This hook is used to create a form from a document and an entity. It will create a form with the fields defined in the document's input type. It will also create a submit handler that will submit the form to the server.
This hook is mostly used internally by the higher-level useDetailPage hook, but can in some cases be useful to use directly.
Example
const { form, submitHandler } = useGeneratedForm({
document: setDraftOrderCustomFieldsDocument,
varName: undefined,
entity: entity,
setValues: entity => {
return {
orderId: entity.id,
input: {
customFields: entity.customFields,
},
};
},
});
function useGeneratedForm<T extends TypedDocumentNode<any, any>, VarName extends keyof VariablesOf<T> | undefined, E extends Record<string, any> = Record<string, any>>(options: GeneratedFormOptions<T, VarName, E>): void
Parameters
<MemberInfo kind="parameter" type={<a href='/reference/dashboard/detail-views/use-generated-form#generatedformoptions'>GeneratedFormOptions</a><T, VarName, E>} />
Options for the useGeneratedForm hook.
interface GeneratedFormOptions<T extends TypedDocumentNode<any, any>, VarName extends keyof VariablesOf<T> | undefined = 'input', E extends Record<string, any> = Record<string, any>> {
document?: T;
varName?: VarName;
entity: E | null | undefined;
customFieldConfig?: any[];
setValues: (
entity: NonNullable<E>,
) => WithLooseCustomFields<
VarName extends keyof VariablesOf<T> ? VariablesOf<T>[VarName] : VariablesOf<T>
>;
onSubmit?: (
values: VarName extends keyof VariablesOf<T> ? VariablesOf<T>[VarName] : VariablesOf<T>,
) => void;
}
<MemberInfo kind="property" type={T} />
The document to use to generate the form.
<MemberInfo kind="property" type={VarName} />
The name of the variable to use in the document.
<MemberInfo kind="property" type={E | null | undefined} />
The entity to use to generate the form.
<MemberInfo kind="property" type={any[]} />
<MemberInfo kind="property" type={( entity: NonNullable<E>, ) => WithLooseCustomFields< VarName extends keyof VariablesOf<T> ? VariablesOf<T>[VarName] : VariablesOf<T> >} />
<MemberInfo kind="property" type={( values: VarName extends keyof VariablesOf<T> ? VariablesOf<T>[VarName] : VariablesOf<T>, ) => void} />