namespace formgen.input { /** */ export class class_input_checkbox implements interface_input { /** */ private additional_classes : Array; /** */ private label : (null | string); /** */ private element_input : (null | Element); /** */ public constructor( { "additional_classes": additional_classes = [], "label": label = null, } : { additional_classes ?: Array, label ?: (null | string); } = { } ) { this.additional_classes = ["formgen-input-checkbox"].concat(additional_classes); this.label = label; this.element_input = null; } /** * [implementation] */ public setup( target : Element ) : Promise { const id : string = formgen.helpers.string.generate(); const element_container : Element = document.createElement("div"); element_container.classList.add("formgen-input"); for (const class_ of this.additional_classes) { element_container.classList.add(class_); } // label { if (this.label === null) { // do nothing } else { const element_label : Element = document.createElement("label"); element_label.setAttribute("for", id); element_label.textContent = this.label; element_container.appendChild(element_label); } } // input { const element_input : Element = document.createElement("input"); element_input.setAttribute("type", "checkbox"); element_input.setAttribute("id", id); element_container.appendChild(element_input); this.element_input = element_input; } target.appendChild(element_container); return Promise.resolve(undefined); } /** * [implementation] */ public read( ) : Promise { const value : boolean = (this.element_input as HTMLInputElement).checked; return Promise.resolve(value); } /** * [implementation] */ public write( value : boolean ) : Promise { (this.element_input as HTMLInputElement).checked = value; return Promise.resolve(undefined); } } }