import { FlatTemplatable, tempstream } from "tempstream"; import { FormField } from "../fields/field.js"; import { FormControlContext } from "./form-control.js"; import { FormFieldControl } from "./form-field-control.js"; export class BigRadioGroup extends FormFieldControl { constructor( public field: FormField, public options: Record< string, { description: | FlatTemplatable | ((fctx: FormControlContext) => FlatTemplatable); } > ) { super([field]); } async render(fctx: FormControlContext): Promise { const { raw: current_value } = await this.field.getParsedValue( fctx.ctx, fctx.data.raw_values ); return tempstream /* HTML */ `
${Object.entries(this.options).map(([key, { description }]) => { const id = `${this.field.name}-radio-${key}`; return tempstream /* HTML */ `
${typeof description == "function" ? description(fctx) : description}
`; })}
`; } }