namespace formgen.input { /** */ type type_field = { name : string; input : interface_input; }; /** */ export class class_input_group implements interface_input> { /** */ private fields : Array>; /** */ private label : (null | string); /** */ public constructor( fields : Array>, { "label": label = null, } : { label ?: (null | string); } = { } ) { this.fields = fields; this.label = label; } /** * [implementation] */ public async setup( element_target : Element ) : Promise { const element_container : Element = document.createElement("div"); element_container.classList.add("formgen-input"); element_container.classList.add("formgen-input-group"); for (const field of this.fields) { const element_field : Element = document.createElement("div"); element_field.classList.add("formgen-input-group-field"); element_field.setAttribute("rel", field.name); await field.input.setup(element_field); element_container.appendChild(element_field); } element_target.appendChild(element_container); return Promise.resolve(undefined); } /** * [implementation] */ public async read( ) : Promise> { let result : Record = {}; for (const field of this.fields) { result[field.name] = await field.input.read(); } return result; } /** * [implementation] */ public write( value : Record ) : Promise { return Promise.reject(new Error("not implemented")); } } }