import { IInput } from "@hpcc-js/api"; import { HTMLWidget } from "@hpcc-js/common"; import "../src/Input.css"; export class CheckBox extends HTMLWidget { _inputElement = []; constructor() { super(); IInput.call(this); this._tag = "div"; } enter(domNode, element) { super.enter(domNode, element); const context = this; const checkboxContainer = element.append("ul"); if (!this.selectOptions().length) { this.selectOptions().push(""); // create an empty radio if we using .value and not selectOptions array } this.selectOptions().forEach(function (val, idx) { context._inputElement[idx] = checkboxContainer.append("li").append("input").attr("type", "checkbox"); context._inputElement[idx].node().insertAdjacentHTML("afterend", "" + val + ""); }); this._inputElement.forEach(function (e, idx) { e.attr("name", context.name()); e.on("click", function (w) { w.click(w); }); e.on("blur", function (w) { w.blur(w); }); e.on("change", function (w) { const vals = []; context._inputElement.forEach(function (d) { if (d.property("checked")) { vals.push(d.property("value")); } }); context.value(vals); w.change(w, true); }); }); } update(domNode, element) { super.update(domNode, element); const context = this; this._inputElement.forEach(function (e, idx) { e.property("value", context.selectOptions()[idx]); if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== "false") { e.property("checked", true); } else { e.property("checked", false); } }); } insertSelectOptions(optionsArr) { let optionHTML = ""; if (optionsArr.length > 0) { optionsArr.forEach(function (opt) { const val = (opt instanceof Array ? opt[0] : opt); const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt); optionHTML += ""; }); } else { optionHTML += ""; } this._inputElement[0].html(optionHTML); } selectOptions: { (): any[]; (_: any[]): CheckBox }; selectOptions_exists: () => boolean; // IInput --- name: { (): string; (_: string): CheckBox }; name_exists: () => boolean; label: { (): string; (_: string): CheckBox }; label_exists: () => boolean; value: { (): any; (_: any): CheckBox }; value_exists: () => boolean; validate: { (): string; (_: string): CheckBox }; validate_exists: () => boolean; } CheckBox.prototype._class += " form_CheckBox"; CheckBox.prototype.implements(IInput.prototype); CheckBox.prototype.publish("selectOptions", [], "array", "Array of options used to fill a dropdown list");