import Router from "@koa/router"; import { Context } from "koa"; import { FlatTemplatable } from "tempstream"; import { FormField } from "../fields/field.js"; import { Table as TableField } from "../fields/table.js"; import { Form } from "../form.js"; import { FormControl, FormControlContext } from "./form-control.js"; export type TableControlOptions> = { subfield_controls: { [field_name in keyof F]: FormControl; }; allow_removing?: boolean; allow_reordering?: boolean; label_add?: string; label: string; label_remove?: string; } & ({ allow_adding: false; } | { allow_adding: true; make_new_row: (ctx: Context) => Promise<{ [field_name in keyof F]: unknown; }>; }); export declare const TABLE_COLUMN_FIELD_INDEX_PLACEHOLDER = "TABLE_ROW_INDEX________________"; export declare class Table> extends FormControl { table_field: TableField; options: TableControlOptions; role: "input"; constructor(table_field: TableField, options: TableControlOptions); render(fctx: FormControlContext): Promise; getFrameID(): string; getActionURL(field_name: string, action: Record): string; mount(router: Router, form: Form): void; setAllowRemoving(value: boolean): this; setAllowAdding(value: boolean): this; setLabel(value: string): this; setRemoveLabel(value: string): this; setAddLabel(value: string): this; setAllowReordering(value: boolean): this; }