import { curryImportPath } from "../utils/utils.js"; export async function multiformTemplate( action_name: string, newfilefullpath: string ): Promise { const rel = curryImportPath(newfilefullpath); return `import { Context } from "koa"; import html from "${rel("src/back/html.js")}"; import { Controls, Fields, Form, FormMessage, Multiform } from "@sealcode/sealgen"; import { FlatTemplatable } from "tempstream"; export const actionName = "${action_name}"; const fields1 = { email: new Fields.TextBasedSimpleField(true), password: new Fields.TextBasedSimpleField(true), }; const form1 = new (class extends Form { defaultSuccessMessage = "Form1 done!"; controls = [ new Controls.FormHeader("form1"), new Controls.SimpleInput(fields1.email), ]; fields = fields1; onSubmit() { console.log("form1 submit"); } })(); const fields2 = { name: new Fields.TextBasedSimpleField(true), surname: new Fields.TextBasedSimpleField(true), }; const form2 = new (class extends Form { defaultSuccessMessage = "Form2 done!"; controls = [new Controls.FormHeader("form2"), new Controls.SimpleInput(fields2.name)]; fields = fields2; onSubmit() { console.log("form2 submit"); } })(); export default new (class extends Multiform { name = "multiform_test"; forms = { form1, form2 }; async render( ctx: Context, messages: FormMessage[], prerenderedForms?: Record ): Promise { return html( ctx, "${action_name}", await super.render(ctx, messages, prerenderedForms, false) ); } })(); `; }