@hpcc-js/form 3.5.4 → 3.5.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.umd.cjs +1 -1
- package/dist/index.umd.cjs.map +1 -1
- package/package.json +7 -7
package/dist/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { IInput as e } from "@hpcc-js/api";
|
|
2
2
|
import { HTMLWidget as t, SVGWidget as n, WidgetArray as r, d3Event as i, drag as a, format as o, rgb as s, scaleLinear as c, select as l, timeFormat as u, timeParse as d } from "@hpcc-js/common";
|
|
3
3
|
//#region \0rolldown/runtime.js
|
|
4
|
-
var f = "@hpcc-js/form", p = "3.5.
|
|
4
|
+
var f = "@hpcc-js/form", p = "3.5.6", m = "3.29.1", Button = class extends t {
|
|
5
5
|
_inputElement = [];
|
|
6
6
|
constructor() {
|
|
7
7
|
super(), e.call(this), this._tag = "div";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/__package__.ts","../src/Button.ts","../src/CheckBox.ts","../src/ColorInput.ts","../src/Form.ts","../src/Input.ts","../src/FieldForm.ts","../src/InputRange.ts","../src/OnOff.ts","../src/Radio.ts","../src/Range.ts","../src/Select.ts","../src/Slider.ts","../src/TextArea.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Button extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._inputElement[0] = element.append(\"button\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].text(this.value());\n }\n}\nButton.prototype._class += \" form_Button\";\nButton.prototype.implements(IInput.prototype);\n\nexport interface Button {\n name(): string;\n name(_: string): Button;\n label(): string;\n label(_: string): Button;\n value(): any;\n value(_: any): Button;\n validate(): string;\n validate(_: string): Button;\n}\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class CheckBox extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n const checkboxContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = checkboxContainer.append(\"li\").append(\"input\").attr(\"type\", \"checkbox\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nCheckBox.prototype._class += \" form_CheckBox\";\nCheckBox.prototype.implements(IInput.prototype);\n\nexport interface CheckBox {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nCheckBox.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class ColorInput extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"text\");\n this._inputElement[0].classed(\"color-text\", true);\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"color\");\n\n this._inputElement.forEach(function (e, idx) {\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n this._inputElement.forEach(function (e) {\n e.attr(\"name\", context.name());\n });\n\n this._inputElement[0].attr(\"type\", \"text\");\n this._inputElement[1].attr(\"type\", \"color\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[1].property(\"value\", d3Rgb(this.value()).toString());\n\n const bbox = this._inputElement[0].node().getBoundingClientRect();\n this._inputElement[1].style(\"height\", (bbox.height - 2) + \"px\");\n\n }\n}\nColorInput.prototype._class += \" form_ColorInput\";\nColorInput.prototype.implements(IInput.prototype);\n\nexport interface ColorInput {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n}\n","import { d3Event, HTMLWidget, select as d3Select, SVGWidget, Widget, WidgetArray } from \"@hpcc-js/common\";\nimport { Button } from \"./Button.ts\";\n\nimport \"../src/Form.css\";\n\nexport class Form extends HTMLWidget {\n tbody;\n tfoot;\n btntd;\n _controls;\n _maxCols;\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) {\n const retVal = [];\n this.inputsForEach(function (input) {\n retVal.push(input.value());\n });\n return retVal;\n } else {\n this.inputsForEach(function (input, idx) {\n if (_ && _.length > idx) {\n input.value(_[idx]).render();\n }\n });\n }\n return this;\n }\n\n inputsForEach(callback, scope?) {\n let idx = 0;\n this.inputs().forEach(function (inp) {\n const inpArray = inp instanceof WidgetArray ? inp.content() : [inp];\n inpArray.forEach(function (inp2) {\n if (scope) {\n callback.call(scope, inp2, idx++);\n } else {\n callback(inp2, idx++);\n }\n });\n });\n }\n\n inputsMap(): { [name: string]: Widget } {\n const retVal: { [name: string]: Widget } = {};\n this.inputs().forEach(function (inp) {\n retVal[inp.name()] = inp;\n });\n return retVal;\n }\n\n calcMaxColumns() {\n let retVal = 0;\n this.inputs().forEach(function (inputWidget) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n if (inputWidgetArray.length > retVal) {\n retVal = inputWidgetArray.length;\n }\n });\n return retVal;\n }\n\n values(): any;\n values(_: any): this;\n values(_?: any): any | this {\n if (!arguments.length) {\n const dataArr = {};\n this.inputsForEach(function (inp) {\n const type = inp.type ? inp.type() : \"text\";\n const value = inp.value();\n if (value || !this.omitBlank()) {\n switch (type) {\n case \"checkbox\":\n dataArr[inp.name()] = inp.value_exists() ? !!inp.value() : undefined;\n break;\n case \"number\":\n const v = inp.value();\n dataArr[inp.name()] = v === \"\" ? undefined : +v;\n break;\n case \"text\":\n default:\n dataArr[inp.name()] = inp.value_exists() ? inp.value() : undefined;\n break;\n }\n }\n }, this);\n return dataArr;\n } else {\n this.inputsForEach(function (inp) {\n if (_[inp.name()]) {\n inp.value(_[inp.name()]);\n } else if (this.omitBlank()) {\n inp.value(\"\");\n }\n }, this);\n }\n return this;\n }\n\n submit() {\n let isValid = true;\n if (this.validate()) {\n isValid = this.checkValidation();\n }\n if (!this.allowEmptyRequest() && !this.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n })) {\n return;\n }\n this.click(isValid ? this.values() : null, null, isValid);\n }\n\n clear() {\n this.inputsForEach(function (inp) {\n switch (inp.classID()) {\n case \"form_Slider\":\n if (inp.allowRange()) {\n inp.value([inp.low(), inp.low()]).render();\n } else {\n inp.value(inp.low()).render();\n }\n break;\n case \"form_CheckBox\":\n inp.value(false).render();\n break;\n case \"form_Button\":\n /* skip */\n break;\n default:\n inp.value(undefined).render();\n break;\n }\n });\n }\n\n checkValidation() {\n let ret = true;\n const msgArr = [];\n this.inputsForEach(function (inp) {\n if (!inp.isValid()) {\n msgArr.push(\"'\" + inp.label() + \"'\" + \" value is invalid.\");\n }\n });\n if (msgArr.length > 0) {\n alert(msgArr.join(\"\\n\"));\n ret = false;\n }\n return ret;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.on(\"submit\", function () {\n d3Event().preventDefault();\n });\n\n this._placeholderElement.style(\"overflow\", \"auto\");\n const table = element\n .append(\"table\")\n ;\n this.tbody = table.append(\"tbody\");\n this.tfoot = table.append(\"tfoot\");\n this.btntd = this.tfoot.append(\"tr\").append(\"td\")\n .attr(\"colspan\", 2)\n ;\n\n const context = this;\n this._controls = [\n new Button()\n .classed({ default: true })\n .value(\"Submit\")\n .on(\"click\", function () {\n context.submit();\n }, true),\n new Button()\n .value(\"Clear\")\n .on(\"click\", function () {\n context.clear();\n }, true)\n ];\n const rightJust = context.btntd\n .append(\"div\")\n .style(\"float\", \"right\")\n ;\n this._controls.forEach(function (w) {\n const leftJust = rightJust\n .append(\"span\")\n .style(\"float\", \"left\")\n ;\n w.target(leftJust.node()).render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._maxCols = this.calcMaxColumns();\n\n const context = this;\n const rows = this.tbody.selectAll(\"tr\").data(this.inputs());\n rows.enter().append(\"tr\")\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.append(\"td\")\n .attr(\"class\", \"prompt\")\n ;\n const input = element2.append(\"td\")\n .attr(\"class\", \"input\")\n ;\n if (idx === inputWidgetArray.length - 1 && inputWidgetArray.length < context._maxCols) {\n input.attr(\"colspan\", (context._maxCols - inputWidgetArray.length + 1) * 2);\n }\n inputWidget2.target(input.node()).render();\n if (inputWidget2 instanceof SVGWidget) {\n const bbox = inputWidget2.element().node().getBBox();\n input.style(\"height\", bbox.height + \"px\");\n inputWidget2.resize().render();\n }\n\n if (inputWidget2._inputElement instanceof Array) {\n inputWidget2._inputElement.forEach(function (e) {\n e.on(\"keyup.form\", function (w) {\n setTimeout(function () {\n\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w2) {\n if (w2._class.indexOf(\"WidgetArray\") !== -1) {\n return w2.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w2.hasValue();\n }));\n }, 100);\n });\n });\n }\n });\n })\n .merge(rows)\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.select(\"td.prompt\")\n .text(inputWidget2.label() + \":\")\n ;\n });\n })\n ;\n rows.each(function (inputWidget, i) {\n if (i === 0 && inputWidget.setFocus) {\n inputWidget.setFocus();\n }\n });\n rows.exit()\n .each(function (inputWidget, i) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n inputWidget2.target(null);\n });\n })\n .remove()\n ;\n\n this.tfoot\n .style(\"display\", this.showSubmit() ? \"table-footer-group\" : \"none\")\n ;\n this.btntd\n .attr(\"colspan\", this._maxCols * 2)\n ;\n\n // Disable Submit unless there is data\n if (!this.allowEmptyRequest()) {\n setTimeout(function () {\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n }));\n }, 100);\n }\n\n }\n\n exit(domNode, element) {\n this.inputsForEach(input => input.target(null));\n super.exit(domNode, element);\n }\n\n click(row, col, sel) {\n }\n}\nForm.prototype._class += \" form_Form\";\n\nexport interface Form {\n validate(): boolean;\n validate(_: boolean): this;\n validate_exists(): boolean;\n inputs(): any[];\n inputs(_: any[]): this;\n inputs_exists(): boolean;\n inputs_reset(): void;\n showSubmit(): boolean;\n showSubmit(_: boolean): this;\n showSubmit_exists(): boolean;\n omitBlank(): boolean;\n omitBlank(_: boolean): this;\n omitBlank_exists(): boolean;\n allowEmptyRequest(): boolean;\n allowEmptyRequest(_: boolean): this;\n allowEmptyRequest_exists(): boolean;\n}\n\nForm.prototype.publish(\"validate\", true, \"boolean\", \"Enable/Disable input validation\");\nForm.prototype.publish(\"inputs\", [], \"widgetArray\", \"Array of input widgets\", null, { render: false });\nForm.prototype.publish(\"showSubmit\", true, \"boolean\", \"Show Submit/Cancel Controls\");\nForm.prototype.publish(\"omitBlank\", false, \"boolean\", \"Drop Blank Fields From Submit\");\nForm.prototype.publish(\"allowEmptyRequest\", false, \"boolean\", \"Allow Blank Form to be Submitted\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Input extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n checked(_) {\n if (!arguments.length) return this._inputElement[0] ? this._inputElement[0].property(\"checked\") : false;\n if (this._inputElement[0]) {\n this._inputElement[0].property(\"checked\", _);\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n const context = this;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0] = element.append(\"button\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n case \"textarea\":\n this._inputElement[0] = element.append(\"textarea\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n default:\n this._inputElement[0] = element.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"type\", this.type())\n ;\n break;\n }\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w: Input) {\n w.click(w);\n });\n e.on(\"blur\", function (w: Input) {\n w.blur(w);\n });\n e.on(\"change\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n e.on(\"keyup\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, false);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0].text(this.value());\n break;\n case \"textarea\":\n this._inputElement[0].property(\"value\", this.value());\n break;\n default:\n this._inputElement[0].attr(\"type\", this.type());\n this._inputElement[0].property(\"value\", this.value());\n break;\n }\n }\n\n // IInput Events ---\n blur(w: Input) {\n }\n keyup(w: Input) {\n }\n focus(w: Input) {\n }\n click(w: Input) {\n }\n dblclick(w: Input) {\n }\n change(w: Input, complete: boolean) {\n }\n}\nInput.prototype._class += \" form_Input\";\nInput.prototype.implements(IInput.prototype);\n\nexport interface Input {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\";\n type(_: Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\"): this;\n type_exists(): boolean;\n type_default(): string;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInput.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\", \"button\", \"checkbox\", \"text\", \"textarea\", \"search\", \"email\", \"datetime\"]);\nInput.prototype.publish(\"inlineLabel\", null, \"string\", \"Input Label\", null, { optional: true });\n","import { Database } from \"@hpcc-js/common\";\nimport { Form } from \"./Form.ts\";\nimport { Input } from \"./Input.ts\";\n\nimport \"../src/Form.css\";\n\nexport class FieldForm extends Form {\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (arguments.length) {\n const inpMap = this.inputsMap();\n this.inputs(_.map(f => inpMap[f.id()] || new Input()\n .name(f.id())\n .label(f.label())\n .type(f.type())\n ));\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return super.data();\n super.data(_[0]);\n if (_[0]) {\n // Update input \"name\" with the __lparam ids ---\n const inputs = this.inputs();\n const __lparam = _[0][this.columns().length];\n let i = 0;\n for (const key in __lparam) {\n inputs[i].name(key);\n ++i;\n }\n }\n return this;\n }\n\n}\nFieldForm.prototype._class += \" form_FieldForm\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class InputRange extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n _rangeData = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_min\")\n .attr(\"type\", this.type()));\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_max\")\n .attr(\"type\", this.type()));\n\n const context = this;\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context._rangeData[idx] = e.property(\"value\");\n context.value(context._rangeData);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n\n this._rangeData = this.value();\n this._inputElement.forEach(function (e, idx) {\n e\n .attr(\"type\", this.type())\n .property(\"value\", this._rangeData.length > idx ? this._rangeData[idx] : \"\");\n }, this);\n }\n}\nInputRange.prototype._class += \" form_InputRange\";\nInputRange.prototype.implements(IInput.prototype);\n\nexport interface InputRange {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any[];\n value(_: any[]): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInputRange.prototype.publish(\"type\", \"text\", \"set\", \"InputRange type\", [\"number\", \"date\", \"text\", \"time\", \"datetime\", \"hidden\"]);\nInputRange.prototype.publish(\"inlineLabel\", null, \"string\", \"InputRange Label\", null, { optional: true });\nInputRange.prototype.publish(\"value\", [\"\", \"\"], \"array\", \"Input Current Value\", null, { override: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/OnOff.css\";\n\nexport class OnOff extends HTMLWidget {\n _inputElement = [];\n _input;\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.classed(\"onoffswitch\", true);\n const context = this;\n this._input = element.append(\"input\")\n .attr(\"class\", \"onoffswitch-checkbox\")\n .attr(\"type\", \"checkbox\")\n .attr(\"id\", this.id() + \"_onOff\")\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d, idx) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n })\n ;\n const label = element.append(\"label\")\n .attr(\"class\", \"onoffswitch-label\")\n .attr(\"for\", this.id() + \"_onOff\")\n ;\n const inner = label.append(\"div\")\n .attr(\"class\", \"onoffswitch-inner\")\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-offText\")\n .style(\"padding-right\", (this.containerRadius() / 2) + \"px\")\n .text(this.offText())\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-onText\")\n .style(\"padding-left\", (this.containerRadius() / 2) + \"px\")\n .style(\"width\", `calc(100% - ${(this.containerRadius() / 2)}px)`)\n .text(this.onText())\n ;\n label.append(\"div\")\n .attr(\"class\", \"onoffswitch-switch\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._input\n .attr(\"name\", this.name())\n ;\n element\n .style(\"margin-left\", this.marginLeft() + \"px\")\n .style(\"margin-bottom\", this.marginBottom() + \"px\")\n .style(\"width\", this.minWidth() + \"px\")\n ;\n\n const _switch_size = this.minHeight() - (this.gutter() * 4);\n\n element.select(\".onoffswitch-switch\")\n .style(\"height\", _switch_size + \"px\")\n .style(\"width\", _switch_size + \"px\")\n .style(\"top\", (this.gutter() * 2) + 1 + \"px\")\n .style(\"border-radius\", this.switchRadius() + \"px\")\n ;\n element.select(\".onoffswitch-inner\")\n .style(\"min-height\", this.minHeight() + \"px\")\n ;\n element.select(\".onoffswitch-label\")\n .style(\"border-radius\", this.containerRadius() + \"px\")\n ;\n element.select(\".onoffswitch-offText\")\n .style(\"color\", this.offFontColor())\n .style(\"background-color\", this.offColor())\n ;\n element.select(\".onoffswitch-onText\")\n .style(\"color\", this.onFontColor())\n .style(\"background-color\", this.onColor())\n ;\n }\n}\nOnOff.prototype._class += \" form_OnOff\";\nexport interface OnOff {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n marginLeft(): number;\n marginLeft(_: number): this;\n marginBottom(): number;\n marginBottom(_: number): this;\n minWidth(): number;\n minWidth(_: number): this;\n minHeight(): number;\n minHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n offText(): string;\n offText(_: string): this;\n onText(): string;\n onText(_: string): this;\n switchRadius(): number;\n switchRadius(_: number): this;\n containerRadius(): number;\n containerRadius(_: number): this;\n offColor(): string;\n offColor(_: string): this;\n onColor(): string;\n onColor(_: string): this;\n offFontColor(): string;\n offFontColor(_: string): this;\n onFontColor(): string;\n onFontColor(_: string): this;\n\n}\nOnOff.prototype.implements(IInput.prototype);\n\nOnOff.prototype.publish(\"marginLeft\", 0, \"number\", \"Margin left of OnOff\");\nOnOff.prototype.publish(\"marginBottom\", 0, \"number\", \"Margin bottom of OnOff\");\nOnOff.prototype.publish(\"minWidth\", 100, \"number\", \"Minimum width of OnOff (pixels)\");\nOnOff.prototype.publish(\"minHeight\", 20, \"number\", \"Minimum height of OnOff (pixels)\");\nOnOff.prototype.publish(\"gutter\", 1, \"number\", \"Space between switch and border of OnOff (pixels)\");\nOnOff.prototype.publish(\"onText\", \"Save\", \"string\", \"Text to display when 'ON'\");\nOnOff.prototype.publish(\"offText\", \"Properties\", \"string\", \"Text to display when 'OFF'\");\nOnOff.prototype.publish(\"switchRadius\", 10, \"number\", \"Border radius of switch (pixels)\");\nOnOff.prototype.publish(\"containerRadius\", 10, \"number\", \"Border radius of OnOff (pixels)\");\nOnOff.prototype.publish(\"onColor\", \"#2ecc71\", \"html-color\", \"Background color when 'ON'\");\nOnOff.prototype.publish(\"offColor\", \"#ecf0f1\", \"html-color\", \"Background color when 'OFF'\");\nOnOff.prototype.publish(\"onFontColor\", \"#2c3e50\", \"html-color\", \"Font color when 'ON'\");\nOnOff.prototype.publish(\"offFontColor\", \"#7f8c8d\", \"html-color\", \"Font color when 'OFF'\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Radio extends HTMLWidget {\n _inputElement = [];\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n const radioContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = radioContainer.append(\"li\").append(\"input\").attr(\"type\", \"radio\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n}\nRadio.prototype._class += \" form_Radio\";\nRadio.prototype.implements(IInput.prototype);\n\nexport interface Radio {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nRadio.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class Range extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"range\");\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"number\");\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].attr(\"type\", \"range\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[0].attr(\"min\", this.low());\n this._inputElement[0].attr(\"max\", this.high());\n this._inputElement[0].attr(\"step\", this.step());\n this._inputElement[1].attr(\"type\", \"number\");\n this._inputElement[1].property(\"value\", this.value());\n this._inputElement[1].attr(\"min\", this.low());\n this._inputElement[1].attr(\"max\", this.high());\n this._inputElement[1].attr(\"step\", this.step());\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nRange.prototype._class += \" form_Range\";\nRange.prototype.implements(IInput.prototype);\n\nexport interface Range {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n low(): number;\n low(_: number): this;\n low_exists(): boolean;\n high(): number;\n high(_: number): this;\n high_exists(): boolean;\n step(): number;\n step(_: number): this;\n step_exists(): boolean;\n}\n\nRange.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"html-color\", \"number\", \"checkbox\", \"button\", \"select\", \"textarea\", \"date\", \"text\", \"range\", \"search\", \"email\", \"time\", \"datetime\"]);\nRange.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nRange.prototype.publish(\"low\", null, \"number\", \"Minimum value for Range input\");\nRange.prototype.publish(\"high\", null, \"number\", \"Maximum value for Range input\");\nRange.prototype.publish(\"step\", null, \"number\", \"Step value for Range input\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Select extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"select\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.insertSelectOptions(this.selectOptions());\n this._inputElement[0]\n .property(\"value\", this.value())\n .style(\"max-width\", this.maxWidth_exists() ? this.maxWidth() + \"px\" : null)\n ;\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nSelect.prototype._class += \" form_Select\";\nSelect.prototype.implements(IInput.prototype);\n\nexport interface Select {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n maxWidth(): number;\n maxWidth(_: number): this;\n maxWidth_exists(): boolean;\n}\n\nSelect.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nSelect.prototype.publish(\"maxWidth\", 120, \"number\", \"Width\", null, { optional: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Slider.css\";\n\nexport class Slider extends SVGWidget {\n xScale;\n\n moveMode: \"both\" | \"left\" | \"right\";\n moveStartPos: number;\n\n prevValue;\n\n slider;\n\n handleLeft;\n handleLeftPos: number = 0;\n handleLeftStartPos: number;\n\n handleRight;\n handleRightPos: number = 0;\n handleRightStartPos: number;\n\n constructor() {\n super();\n IInput.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.resize({ width: this.width(), height: 50 });\n\n this.xScale = d3ScaleLinear()\n .clamp(true);\n\n this.slider = element.append(\"g\")\n .attr(\"class\", \"slider\")\n ;\n if (this.low() === null && this.high() === null) {\n if (this.lowDatetime() !== null && this.highDatetime() !== null) {\n const time_parser = d3TimeParse(this.timePattern() ? this.timePattern() : \"%Q\");\n this.low(time_parser(this.lowDatetime()).getTime());\n this.high(time_parser(this.highDatetime()).getTime());\n }\n }\n this.slider.append(\"line\")\n .attr(\"class\", \"track\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-inset\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-overlay\")\n .call(d3Drag()\n .on(\"start\", () => {\n const event = d3Event();\n this.moveStartPos = event.x;\n this.handleLeftStartPos = this.handleLeftPos;\n this.handleRightStartPos = this.handleRightPos;\n if (this.allowRange() && this.handleLeftPos <= event.x && event.x <= this.handleRightPos) {\n this.moveMode = \"both\";\n } else if (Math.abs(event.x - this.handleLeftPos) < Math.abs(event.x - this.handleRightPos)) {\n this.moveMode = \"left\";\n } else {\n this.moveMode = \"right\";\n }\n this.moveHandleTo(event.x);\n })\n .on(\"drag\", () => {\n this.moveHandleTo(d3Event().x);\n })\n .on(\"end\", () => {\n this.moveHandleTo(d3Event().x);\n this.data([[this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)]]);\n this.checkChangedValue();\n }));\n\n this.slider.insert(\"g\", \".track-overlay\")\n .attr(\"class\", \"ticks\")\n .attr(\"transform\", `translate(0, ${this.fontSize() + (this.tickHeight() / 2)})`)\n ;\n\n this.handleRight = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n\n this.handleLeft = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this.xScale\n .domain([this.low(), this.high()])\n .range([0, this.width() - this.padding() * 2])\n ;\n\n this.slider\n .attr(\"transform\", \"translate(\" + (-this.width() / 2 + this.padding()) + \",\" + 0 + \")\");\n\n this.slider.selectAll(\"line.track,line.track-inset,line.track-overlay\")\n .attr(\"x1\", this.xScale.range()[0])\n .attr(\"x2\", this.xScale.range()[1])\n ;\n\n const x_distance = (this.width() - (this.padding() * 2)) / (this.tickCount() - 1);\n\n const tick_text_arr = [];\n if (this.tickDateFormat() !== null && this.timePattern() !== null) {\n const Q_parser = d3TimeParse(\"%Q\");\n const time_formatter = d3TimeFormat(this.tickDateFormat());\n const time_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const date_to_parse = \"\" + (this.low() + (time_segment * i));\n const parsed_date = Q_parser(date_to_parse);\n tick_text_arr.push(time_formatter(parsed_date));\n }\n } else {\n const value_formatter = d3Format(this.tickValueFormat());\n const value_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const tick_value = this.low() + (value_segment * i);\n tick_text_arr.push(value_formatter(tick_value));\n }\n }\n const tickText = this.slider.selectAll(\"g.tick\").data(tick_text_arr);\n const tickTextEnter = tickText.enter().append(\"g\").attr(\"class\", \"tick\");\n\n tickTextEnter.append(\"text\").attr(\"class\", \"tick-text\");\n tickTextEnter.append(\"line\").attr(\"class\", \"tick-line\");\n tickTextEnter\n .merge(tickText)\n .each(function (d, i) {\n const x = x_distance * i;\n\n d3Select(this).select(\"text.tick-text\")\n .style(\"font-size\", context.fontSize())\n .attr(\"x\", function () {\n if (i === 0) return x - 2;\n return i === context.tickCount() - 1 ? x + 2 : x;\n })\n .attr(\"y\", context.tickHeight() + (context.tickOffset() / 2) + context.fontSize())\n .attr(\"text-basline\", \"text-before-edge\")\n .attr(\"text-anchor\", function () {\n if (i === 0) return \"start\";\n return i === context.tickCount() - 1 ? \"end\" : \"middle\";\n })\n .text(() => d)\n ;\n\n d3Select(this).select(\"line.tick-line\")\n .attr(\"x1\", x)\n .attr(\"x2\", x)\n .attr(\"y1\", context.tickOffset() - 1)\n .attr(\"y2\", context.tickOffset() + context.tickHeight())\n .style(\"stroke\", \"#000\")\n .style(\"stroke-width\", 1)\n ;\n });\n this.slider.node().appendChild(this.handleRight.node());\n this.slider.node().appendChild(this.handleLeft.node());\n this.handleLeftPos = this.lowPos();\n this.handleRightPos = this.highPos();\n this.updateHandles();\n this.checkChangedValue();\n }\n\n checkChangedValue() {\n if (this.prevValue !== this.value() && typeof this.prevValue !== \"undefined\") {\n this.change(this);\n }\n this.prevValue = this.value();\n }\n\n updateHandles() {\n this.handleLeft\n .attr(\"transform\", `translate(${this.handleLeftPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"l\"))\n ;\n this.handleRight\n .attr(\"transform\", `translate(${this.handleRightPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"r\"))\n ;\n }\n\n lowPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][0]);\n }\n\n highPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][this.allowRange() ? 1 : 0]);\n }\n\n moveHandleTo(pos) {\n if (this.allowRange()) {\n switch (this.moveMode) {\n case \"both\":\n this.handleLeftPos = this.handleLeftStartPos + pos - this.moveStartPos;\n this.handleRightPos = this.handleRightStartPos + pos - this.moveStartPos;\n break;\n case \"left\":\n this.handleLeftPos = pos;\n if (this.handleLeftPos > this.handleRightPos) {\n this.handleRightPos = this.handleLeftPos;\n }\n break;\n case \"right\":\n this.handleRightPos = pos;\n if (this.handleRightPos < this.handleLeftPos) {\n this.handleLeftPos = this.handleRightPos;\n }\n break;\n }\n } else {\n this.handleLeftPos = this.handleRightPos = pos;\n }\n\n this.handleLeftPos = this.constrain(this.handleLeftPos);\n this.handleRightPos = this.constrain(this.handleRightPos);\n this.value(this.allowRange() ? [this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)] : this.xScale.invert(this.handleLeftPos));\n this.updateHandles();\n }\n\n constrain(pos: number): number {\n const range = this.xScale.range();\n if (pos < range[0]) pos = range[0];\n if (pos > range[1]) pos = range[1];\n return this.nearestStep(pos);\n }\n\n nearestStep(pos) {\n const value = this.xScale.invert(pos);\n return this.xScale(this.low() + Math.round((value - this.low()) / this.step()) * this.step());\n }\n\n handlePath = function (d) {\n const e = +(d === \"r\");\n const x = e ? 1 : -1;\n const xOffset = this.allowRange() ? 0.5 : 0.0;\n const y = 18;\n let retVal = \"M\" + (xOffset * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (xOffset * x) + \",\" + (2 * y)\n ;\n if (this.allowRange()) {\n retVal += \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n } else {\n retVal += \"M\" + (1 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n }\n return retVal;\n };\n\n}\nSlider.prototype._class += \" form_Slider\";\nSlider.prototype.implements(IInput.prototype);\n\nexport interface Slider {\n // IInput ---\n name(): string;\n name(_: string): this;\n change(_: Slider): void;\n\n // Properties ---\n padding(): number;\n padding(_: number): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n allowRange(): boolean;\n allowRange(_: boolean): this;\n low(): number;\n low(_: number): this;\n high(): number;\n high(_: number): this;\n step(): number;\n step(_: number): this;\n lowDatetime(): string;\n lowDatetime(_: string): this;\n highDatetime(): string;\n highDatetime(_: string): this;\n stepDatetime(): number;\n stepDatetime(_: number): this;\n selectionLabel(): string;\n selectionLabel(_: string): this;\n label(): string;\n label(_: string): this;\n value(): any;\n value(_: any): this;\n validate(): string;\n validate(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickOffset(): number;\n tickOffset(_: number): this;\n tickHeight(): number;\n tickHeight(_: number): this;\n tickDateFormat(): string;\n tickDateFormat(_: string): this;\n tickValueFormat(): string;\n tickValueFormat(_: string): this;\n timePattern(): string;\n timePattern(_: string): this;\n\n padding_exists(): boolean;\n fontSize_exists(): boolean;\n fontFamily_exists(): boolean;\n fontColor_exists(): boolean;\n allowRange_exists(): boolean;\n low_exists(): boolean;\n step_exists(): boolean;\n high_exists(): boolean;\n selectionLabel_exists(): boolean;\n name_exists(): boolean;\n label_exists(): boolean;\n value_exists(): boolean;\n validate_exists(): boolean;\n}\n\nSlider.prototype.publish(\"padding\", 16, \"number\", \"Outer Padding\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontSize\", 12, \"number\", \"Font Size\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontFamily\", null, \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontColor\", null, \"html-color\", \"Font Color\", null, { tags: [\"Basic\"] });\n\nSlider.prototype.publish(\"allowRange\", false, \"boolean\", \"Allow Range Selection\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"low\", null, \"number\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"high\", null, \"number\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"step\", 10, \"number\", \"Step\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"lowDatetime\", null, \"string\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"highDatetime\", null, \"string\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"selectionLabel\", \"\", \"string\", \"Selection Label\", null, { tags: [\"Intermediate\"] });\n\nSlider.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\");\n\nSlider.prototype.publish(\"tickCount\", 10, \"number\");\nSlider.prototype.publish(\"tickOffset\", 5, \"number\");\nSlider.prototype.publish(\"tickHeight\", 8, \"number\");\nSlider.prototype.publish(\"tickDateFormat\", null, \"string\");\nSlider.prototype.publish(\"tickValueFormat\", \",.0f\", \"string\");\n\nconst name = Slider.prototype.name;\nSlider.prototype.name = function (_?: any): any {\n const retVal = name.apply(this, arguments);\n if (arguments.length) {\n const val = _ instanceof Array ? _ : [_];\n SVGWidget.prototype.columns.call(this, val);\n }\n return retVal;\n};\n\nconst value = Slider.prototype.value;\nSlider.prototype.value = function (_?: any): any {\n const retVal = value.apply(this, arguments);\n if (!arguments.length) {\n if (!this.allowRange()) {\n return SVGWidget.prototype.data.call(this)[0][0];\n }\n return SVGWidget.prototype.data.call(this)[0];\n } else {\n SVGWidget.prototype.data.call(this, [this.allowRange() ? _ : [_, _]]);\n }\n return retVal;\n};\n","import { Input } from \"./Input.ts\";\n\nexport class TextArea extends Input {\n constructor() {\n super();\n\n this._tag = \"div\";\n this.type(\"textarea\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n calcHeight() {\n return Math.max(this.minHeight_exists() ? this.minHeight() : 0, this.height());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._inputElement[0]\n .attr(\"rows\", this.rows())\n .attr(\"cols\", this.cols())\n .attr(\"wrap\", this.wrap())\n .attr(\"spellcheck\", this.spellcheck())\n .style(\"height\", this.calcHeight() + \"px\")\n ;\n }\n\n}\nTextArea.prototype._class += \" form_TextArea\";\n\nexport interface TextArea {\n rows(): number;\n rows(_: number): this;\n rows_exists(): boolean;\n cols(): number;\n cols(_: number): this;\n cols_exists(): boolean;\n wrap(): string;\n wrap(_: string): this;\n wrap_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n spellcheck(): boolean;\n spellcheck(_: boolean): this;\n spellcheck_exists(): boolean;\n}\n\nTextArea.prototype.publish(\"rows\", null, \"number\", \"Rows\", null, { optional: true });\nTextArea.prototype.publish(\"cols\", null, \"number\", \"Columns\", null, { optional: true });\nTextArea.prototype.publish(\"wrap\", \"off\", \"set\", \"Wrap\", [\"off\", \"on\"]);\nTextArea.prototype.publish(\"minHeight\", null, \"number\", \"Minimum Height\", null, { optional: true });\nTextArea.prototype.publish(\"spellcheck\", null, \"boolean\", \"Input spell checking\", { optional: true });\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/__package__.ts","../src/Button.ts","../src/CheckBox.ts","../src/ColorInput.ts","../src/Form.ts","../src/Input.ts","../src/FieldForm.ts","../src/InputRange.ts","../src/OnOff.ts","../src/Radio.ts","../src/Range.ts","../src/Select.ts","../src/Slider.ts","../src/TextArea.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/form\";\nexport const PKG_VERSION = \"3.5.6\";\nexport const BUILD_VERSION = \"3.29.1\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Button extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._inputElement[0] = element.append(\"button\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].text(this.value());\n }\n}\nButton.prototype._class += \" form_Button\";\nButton.prototype.implements(IInput.prototype);\n\nexport interface Button {\n name(): string;\n name(_: string): Button;\n label(): string;\n label(_: string): Button;\n value(): any;\n value(_: any): Button;\n validate(): string;\n validate(_: string): Button;\n}\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class CheckBox extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n const checkboxContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = checkboxContainer.append(\"li\").append(\"input\").attr(\"type\", \"checkbox\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nCheckBox.prototype._class += \" form_CheckBox\";\nCheckBox.prototype.implements(IInput.prototype);\n\nexport interface CheckBox {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nCheckBox.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class ColorInput extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"text\");\n this._inputElement[0].classed(\"color-text\", true);\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"color\");\n\n this._inputElement.forEach(function (e, idx) {\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n this._inputElement.forEach(function (e) {\n e.attr(\"name\", context.name());\n });\n\n this._inputElement[0].attr(\"type\", \"text\");\n this._inputElement[1].attr(\"type\", \"color\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[1].property(\"value\", d3Rgb(this.value()).toString());\n\n const bbox = this._inputElement[0].node().getBoundingClientRect();\n this._inputElement[1].style(\"height\", (bbox.height - 2) + \"px\");\n\n }\n}\nColorInput.prototype._class += \" form_ColorInput\";\nColorInput.prototype.implements(IInput.prototype);\n\nexport interface ColorInput {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n}\n","import { d3Event, HTMLWidget, select as d3Select, SVGWidget, Widget, WidgetArray } from \"@hpcc-js/common\";\nimport { Button } from \"./Button.ts\";\n\nimport \"../src/Form.css\";\n\nexport class Form extends HTMLWidget {\n tbody;\n tfoot;\n btntd;\n _controls;\n _maxCols;\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) {\n const retVal = [];\n this.inputsForEach(function (input) {\n retVal.push(input.value());\n });\n return retVal;\n } else {\n this.inputsForEach(function (input, idx) {\n if (_ && _.length > idx) {\n input.value(_[idx]).render();\n }\n });\n }\n return this;\n }\n\n inputsForEach(callback, scope?) {\n let idx = 0;\n this.inputs().forEach(function (inp) {\n const inpArray = inp instanceof WidgetArray ? inp.content() : [inp];\n inpArray.forEach(function (inp2) {\n if (scope) {\n callback.call(scope, inp2, idx++);\n } else {\n callback(inp2, idx++);\n }\n });\n });\n }\n\n inputsMap(): { [name: string]: Widget } {\n const retVal: { [name: string]: Widget } = {};\n this.inputs().forEach(function (inp) {\n retVal[inp.name()] = inp;\n });\n return retVal;\n }\n\n calcMaxColumns() {\n let retVal = 0;\n this.inputs().forEach(function (inputWidget) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n if (inputWidgetArray.length > retVal) {\n retVal = inputWidgetArray.length;\n }\n });\n return retVal;\n }\n\n values(): any;\n values(_: any): this;\n values(_?: any): any | this {\n if (!arguments.length) {\n const dataArr = {};\n this.inputsForEach(function (inp) {\n const type = inp.type ? inp.type() : \"text\";\n const value = inp.value();\n if (value || !this.omitBlank()) {\n switch (type) {\n case \"checkbox\":\n dataArr[inp.name()] = inp.value_exists() ? !!inp.value() : undefined;\n break;\n case \"number\":\n const v = inp.value();\n dataArr[inp.name()] = v === \"\" ? undefined : +v;\n break;\n case \"text\":\n default:\n dataArr[inp.name()] = inp.value_exists() ? inp.value() : undefined;\n break;\n }\n }\n }, this);\n return dataArr;\n } else {\n this.inputsForEach(function (inp) {\n if (_[inp.name()]) {\n inp.value(_[inp.name()]);\n } else if (this.omitBlank()) {\n inp.value(\"\");\n }\n }, this);\n }\n return this;\n }\n\n submit() {\n let isValid = true;\n if (this.validate()) {\n isValid = this.checkValidation();\n }\n if (!this.allowEmptyRequest() && !this.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n })) {\n return;\n }\n this.click(isValid ? this.values() : null, null, isValid);\n }\n\n clear() {\n this.inputsForEach(function (inp) {\n switch (inp.classID()) {\n case \"form_Slider\":\n if (inp.allowRange()) {\n inp.value([inp.low(), inp.low()]).render();\n } else {\n inp.value(inp.low()).render();\n }\n break;\n case \"form_CheckBox\":\n inp.value(false).render();\n break;\n case \"form_Button\":\n /* skip */\n break;\n default:\n inp.value(undefined).render();\n break;\n }\n });\n }\n\n checkValidation() {\n let ret = true;\n const msgArr = [];\n this.inputsForEach(function (inp) {\n if (!inp.isValid()) {\n msgArr.push(\"'\" + inp.label() + \"'\" + \" value is invalid.\");\n }\n });\n if (msgArr.length > 0) {\n alert(msgArr.join(\"\\n\"));\n ret = false;\n }\n return ret;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.on(\"submit\", function () {\n d3Event().preventDefault();\n });\n\n this._placeholderElement.style(\"overflow\", \"auto\");\n const table = element\n .append(\"table\")\n ;\n this.tbody = table.append(\"tbody\");\n this.tfoot = table.append(\"tfoot\");\n this.btntd = this.tfoot.append(\"tr\").append(\"td\")\n .attr(\"colspan\", 2)\n ;\n\n const context = this;\n this._controls = [\n new Button()\n .classed({ default: true })\n .value(\"Submit\")\n .on(\"click\", function () {\n context.submit();\n }, true),\n new Button()\n .value(\"Clear\")\n .on(\"click\", function () {\n context.clear();\n }, true)\n ];\n const rightJust = context.btntd\n .append(\"div\")\n .style(\"float\", \"right\")\n ;\n this._controls.forEach(function (w) {\n const leftJust = rightJust\n .append(\"span\")\n .style(\"float\", \"left\")\n ;\n w.target(leftJust.node()).render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._maxCols = this.calcMaxColumns();\n\n const context = this;\n const rows = this.tbody.selectAll(\"tr\").data(this.inputs());\n rows.enter().append(\"tr\")\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.append(\"td\")\n .attr(\"class\", \"prompt\")\n ;\n const input = element2.append(\"td\")\n .attr(\"class\", \"input\")\n ;\n if (idx === inputWidgetArray.length - 1 && inputWidgetArray.length < context._maxCols) {\n input.attr(\"colspan\", (context._maxCols - inputWidgetArray.length + 1) * 2);\n }\n inputWidget2.target(input.node()).render();\n if (inputWidget2 instanceof SVGWidget) {\n const bbox = inputWidget2.element().node().getBBox();\n input.style(\"height\", bbox.height + \"px\");\n inputWidget2.resize().render();\n }\n\n if (inputWidget2._inputElement instanceof Array) {\n inputWidget2._inputElement.forEach(function (e) {\n e.on(\"keyup.form\", function (w) {\n setTimeout(function () {\n\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w2) {\n if (w2._class.indexOf(\"WidgetArray\") !== -1) {\n return w2.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w2.hasValue();\n }));\n }, 100);\n });\n });\n }\n });\n })\n .merge(rows)\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.select(\"td.prompt\")\n .text(inputWidget2.label() + \":\")\n ;\n });\n })\n ;\n rows.each(function (inputWidget, i) {\n if (i === 0 && inputWidget.setFocus) {\n inputWidget.setFocus();\n }\n });\n rows.exit()\n .each(function (inputWidget, i) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n inputWidget2.target(null);\n });\n })\n .remove()\n ;\n\n this.tfoot\n .style(\"display\", this.showSubmit() ? \"table-footer-group\" : \"none\")\n ;\n this.btntd\n .attr(\"colspan\", this._maxCols * 2)\n ;\n\n // Disable Submit unless there is data\n if (!this.allowEmptyRequest()) {\n setTimeout(function () {\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n }));\n }, 100);\n }\n\n }\n\n exit(domNode, element) {\n this.inputsForEach(input => input.target(null));\n super.exit(domNode, element);\n }\n\n click(row, col, sel) {\n }\n}\nForm.prototype._class += \" form_Form\";\n\nexport interface Form {\n validate(): boolean;\n validate(_: boolean): this;\n validate_exists(): boolean;\n inputs(): any[];\n inputs(_: any[]): this;\n inputs_exists(): boolean;\n inputs_reset(): void;\n showSubmit(): boolean;\n showSubmit(_: boolean): this;\n showSubmit_exists(): boolean;\n omitBlank(): boolean;\n omitBlank(_: boolean): this;\n omitBlank_exists(): boolean;\n allowEmptyRequest(): boolean;\n allowEmptyRequest(_: boolean): this;\n allowEmptyRequest_exists(): boolean;\n}\n\nForm.prototype.publish(\"validate\", true, \"boolean\", \"Enable/Disable input validation\");\nForm.prototype.publish(\"inputs\", [], \"widgetArray\", \"Array of input widgets\", null, { render: false });\nForm.prototype.publish(\"showSubmit\", true, \"boolean\", \"Show Submit/Cancel Controls\");\nForm.prototype.publish(\"omitBlank\", false, \"boolean\", \"Drop Blank Fields From Submit\");\nForm.prototype.publish(\"allowEmptyRequest\", false, \"boolean\", \"Allow Blank Form to be Submitted\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Input extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n checked(_) {\n if (!arguments.length) return this._inputElement[0] ? this._inputElement[0].property(\"checked\") : false;\n if (this._inputElement[0]) {\n this._inputElement[0].property(\"checked\", _);\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n const context = this;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0] = element.append(\"button\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n case \"textarea\":\n this._inputElement[0] = element.append(\"textarea\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n default:\n this._inputElement[0] = element.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"type\", this.type())\n ;\n break;\n }\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w: Input) {\n w.click(w);\n });\n e.on(\"blur\", function (w: Input) {\n w.blur(w);\n });\n e.on(\"change\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n e.on(\"keyup\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, false);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0].text(this.value());\n break;\n case \"textarea\":\n this._inputElement[0].property(\"value\", this.value());\n break;\n default:\n this._inputElement[0].attr(\"type\", this.type());\n this._inputElement[0].property(\"value\", this.value());\n break;\n }\n }\n\n // IInput Events ---\n blur(w: Input) {\n }\n keyup(w: Input) {\n }\n focus(w: Input) {\n }\n click(w: Input) {\n }\n dblclick(w: Input) {\n }\n change(w: Input, complete: boolean) {\n }\n}\nInput.prototype._class += \" form_Input\";\nInput.prototype.implements(IInput.prototype);\n\nexport interface Input {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\";\n type(_: Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\"): this;\n type_exists(): boolean;\n type_default(): string;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInput.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\", \"button\", \"checkbox\", \"text\", \"textarea\", \"search\", \"email\", \"datetime\"]);\nInput.prototype.publish(\"inlineLabel\", null, \"string\", \"Input Label\", null, { optional: true });\n","import { Database } from \"@hpcc-js/common\";\nimport { Form } from \"./Form.ts\";\nimport { Input } from \"./Input.ts\";\n\nimport \"../src/Form.css\";\n\nexport class FieldForm extends Form {\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (arguments.length) {\n const inpMap = this.inputsMap();\n this.inputs(_.map(f => inpMap[f.id()] || new Input()\n .name(f.id())\n .label(f.label())\n .type(f.type())\n ));\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return super.data();\n super.data(_[0]);\n if (_[0]) {\n // Update input \"name\" with the __lparam ids ---\n const inputs = this.inputs();\n const __lparam = _[0][this.columns().length];\n let i = 0;\n for (const key in __lparam) {\n inputs[i].name(key);\n ++i;\n }\n }\n return this;\n }\n\n}\nFieldForm.prototype._class += \" form_FieldForm\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class InputRange extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n _rangeData = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_min\")\n .attr(\"type\", this.type()));\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_max\")\n .attr(\"type\", this.type()));\n\n const context = this;\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context._rangeData[idx] = e.property(\"value\");\n context.value(context._rangeData);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n\n this._rangeData = this.value();\n this._inputElement.forEach(function (e, idx) {\n e\n .attr(\"type\", this.type())\n .property(\"value\", this._rangeData.length > idx ? this._rangeData[idx] : \"\");\n }, this);\n }\n}\nInputRange.prototype._class += \" form_InputRange\";\nInputRange.prototype.implements(IInput.prototype);\n\nexport interface InputRange {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any[];\n value(_: any[]): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInputRange.prototype.publish(\"type\", \"text\", \"set\", \"InputRange type\", [\"number\", \"date\", \"text\", \"time\", \"datetime\", \"hidden\"]);\nInputRange.prototype.publish(\"inlineLabel\", null, \"string\", \"InputRange Label\", null, { optional: true });\nInputRange.prototype.publish(\"value\", [\"\", \"\"], \"array\", \"Input Current Value\", null, { override: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/OnOff.css\";\n\nexport class OnOff extends HTMLWidget {\n _inputElement = [];\n _input;\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.classed(\"onoffswitch\", true);\n const context = this;\n this._input = element.append(\"input\")\n .attr(\"class\", \"onoffswitch-checkbox\")\n .attr(\"type\", \"checkbox\")\n .attr(\"id\", this.id() + \"_onOff\")\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d, idx) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n })\n ;\n const label = element.append(\"label\")\n .attr(\"class\", \"onoffswitch-label\")\n .attr(\"for\", this.id() + \"_onOff\")\n ;\n const inner = label.append(\"div\")\n .attr(\"class\", \"onoffswitch-inner\")\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-offText\")\n .style(\"padding-right\", (this.containerRadius() / 2) + \"px\")\n .text(this.offText())\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-onText\")\n .style(\"padding-left\", (this.containerRadius() / 2) + \"px\")\n .style(\"width\", `calc(100% - ${(this.containerRadius() / 2)}px)`)\n .text(this.onText())\n ;\n label.append(\"div\")\n .attr(\"class\", \"onoffswitch-switch\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._input\n .attr(\"name\", this.name())\n ;\n element\n .style(\"margin-left\", this.marginLeft() + \"px\")\n .style(\"margin-bottom\", this.marginBottom() + \"px\")\n .style(\"width\", this.minWidth() + \"px\")\n ;\n\n const _switch_size = this.minHeight() - (this.gutter() * 4);\n\n element.select(\".onoffswitch-switch\")\n .style(\"height\", _switch_size + \"px\")\n .style(\"width\", _switch_size + \"px\")\n .style(\"top\", (this.gutter() * 2) + 1 + \"px\")\n .style(\"border-radius\", this.switchRadius() + \"px\")\n ;\n element.select(\".onoffswitch-inner\")\n .style(\"min-height\", this.minHeight() + \"px\")\n ;\n element.select(\".onoffswitch-label\")\n .style(\"border-radius\", this.containerRadius() + \"px\")\n ;\n element.select(\".onoffswitch-offText\")\n .style(\"color\", this.offFontColor())\n .style(\"background-color\", this.offColor())\n ;\n element.select(\".onoffswitch-onText\")\n .style(\"color\", this.onFontColor())\n .style(\"background-color\", this.onColor())\n ;\n }\n}\nOnOff.prototype._class += \" form_OnOff\";\nexport interface OnOff {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n marginLeft(): number;\n marginLeft(_: number): this;\n marginBottom(): number;\n marginBottom(_: number): this;\n minWidth(): number;\n minWidth(_: number): this;\n minHeight(): number;\n minHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n offText(): string;\n offText(_: string): this;\n onText(): string;\n onText(_: string): this;\n switchRadius(): number;\n switchRadius(_: number): this;\n containerRadius(): number;\n containerRadius(_: number): this;\n offColor(): string;\n offColor(_: string): this;\n onColor(): string;\n onColor(_: string): this;\n offFontColor(): string;\n offFontColor(_: string): this;\n onFontColor(): string;\n onFontColor(_: string): this;\n\n}\nOnOff.prototype.implements(IInput.prototype);\n\nOnOff.prototype.publish(\"marginLeft\", 0, \"number\", \"Margin left of OnOff\");\nOnOff.prototype.publish(\"marginBottom\", 0, \"number\", \"Margin bottom of OnOff\");\nOnOff.prototype.publish(\"minWidth\", 100, \"number\", \"Minimum width of OnOff (pixels)\");\nOnOff.prototype.publish(\"minHeight\", 20, \"number\", \"Minimum height of OnOff (pixels)\");\nOnOff.prototype.publish(\"gutter\", 1, \"number\", \"Space between switch and border of OnOff (pixels)\");\nOnOff.prototype.publish(\"onText\", \"Save\", \"string\", \"Text to display when 'ON'\");\nOnOff.prototype.publish(\"offText\", \"Properties\", \"string\", \"Text to display when 'OFF'\");\nOnOff.prototype.publish(\"switchRadius\", 10, \"number\", \"Border radius of switch (pixels)\");\nOnOff.prototype.publish(\"containerRadius\", 10, \"number\", \"Border radius of OnOff (pixels)\");\nOnOff.prototype.publish(\"onColor\", \"#2ecc71\", \"html-color\", \"Background color when 'ON'\");\nOnOff.prototype.publish(\"offColor\", \"#ecf0f1\", \"html-color\", \"Background color when 'OFF'\");\nOnOff.prototype.publish(\"onFontColor\", \"#2c3e50\", \"html-color\", \"Font color when 'ON'\");\nOnOff.prototype.publish(\"offFontColor\", \"#7f8c8d\", \"html-color\", \"Font color when 'OFF'\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Radio extends HTMLWidget {\n _inputElement = [];\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n const radioContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = radioContainer.append(\"li\").append(\"input\").attr(\"type\", \"radio\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n}\nRadio.prototype._class += \" form_Radio\";\nRadio.prototype.implements(IInput.prototype);\n\nexport interface Radio {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nRadio.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class Range extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"range\");\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"number\");\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].attr(\"type\", \"range\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[0].attr(\"min\", this.low());\n this._inputElement[0].attr(\"max\", this.high());\n this._inputElement[0].attr(\"step\", this.step());\n this._inputElement[1].attr(\"type\", \"number\");\n this._inputElement[1].property(\"value\", this.value());\n this._inputElement[1].attr(\"min\", this.low());\n this._inputElement[1].attr(\"max\", this.high());\n this._inputElement[1].attr(\"step\", this.step());\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nRange.prototype._class += \" form_Range\";\nRange.prototype.implements(IInput.prototype);\n\nexport interface Range {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n low(): number;\n low(_: number): this;\n low_exists(): boolean;\n high(): number;\n high(_: number): this;\n high_exists(): boolean;\n step(): number;\n step(_: number): this;\n step_exists(): boolean;\n}\n\nRange.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"html-color\", \"number\", \"checkbox\", \"button\", \"select\", \"textarea\", \"date\", \"text\", \"range\", \"search\", \"email\", \"time\", \"datetime\"]);\nRange.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nRange.prototype.publish(\"low\", null, \"number\", \"Minimum value for Range input\");\nRange.prototype.publish(\"high\", null, \"number\", \"Maximum value for Range input\");\nRange.prototype.publish(\"step\", null, \"number\", \"Step value for Range input\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Select extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"select\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.insertSelectOptions(this.selectOptions());\n this._inputElement[0]\n .property(\"value\", this.value())\n .style(\"max-width\", this.maxWidth_exists() ? this.maxWidth() + \"px\" : null)\n ;\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nSelect.prototype._class += \" form_Select\";\nSelect.prototype.implements(IInput.prototype);\n\nexport interface Select {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n maxWidth(): number;\n maxWidth(_: number): this;\n maxWidth_exists(): boolean;\n}\n\nSelect.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nSelect.prototype.publish(\"maxWidth\", 120, \"number\", \"Width\", null, { optional: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Slider.css\";\n\nexport class Slider extends SVGWidget {\n xScale;\n\n moveMode: \"both\" | \"left\" | \"right\";\n moveStartPos: number;\n\n prevValue;\n\n slider;\n\n handleLeft;\n handleLeftPos: number = 0;\n handleLeftStartPos: number;\n\n handleRight;\n handleRightPos: number = 0;\n handleRightStartPos: number;\n\n constructor() {\n super();\n IInput.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.resize({ width: this.width(), height: 50 });\n\n this.xScale = d3ScaleLinear()\n .clamp(true);\n\n this.slider = element.append(\"g\")\n .attr(\"class\", \"slider\")\n ;\n if (this.low() === null && this.high() === null) {\n if (this.lowDatetime() !== null && this.highDatetime() !== null) {\n const time_parser = d3TimeParse(this.timePattern() ? this.timePattern() : \"%Q\");\n this.low(time_parser(this.lowDatetime()).getTime());\n this.high(time_parser(this.highDatetime()).getTime());\n }\n }\n this.slider.append(\"line\")\n .attr(\"class\", \"track\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-inset\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-overlay\")\n .call(d3Drag()\n .on(\"start\", () => {\n const event = d3Event();\n this.moveStartPos = event.x;\n this.handleLeftStartPos = this.handleLeftPos;\n this.handleRightStartPos = this.handleRightPos;\n if (this.allowRange() && this.handleLeftPos <= event.x && event.x <= this.handleRightPos) {\n this.moveMode = \"both\";\n } else if (Math.abs(event.x - this.handleLeftPos) < Math.abs(event.x - this.handleRightPos)) {\n this.moveMode = \"left\";\n } else {\n this.moveMode = \"right\";\n }\n this.moveHandleTo(event.x);\n })\n .on(\"drag\", () => {\n this.moveHandleTo(d3Event().x);\n })\n .on(\"end\", () => {\n this.moveHandleTo(d3Event().x);\n this.data([[this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)]]);\n this.checkChangedValue();\n }));\n\n this.slider.insert(\"g\", \".track-overlay\")\n .attr(\"class\", \"ticks\")\n .attr(\"transform\", `translate(0, ${this.fontSize() + (this.tickHeight() / 2)})`)\n ;\n\n this.handleRight = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n\n this.handleLeft = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this.xScale\n .domain([this.low(), this.high()])\n .range([0, this.width() - this.padding() * 2])\n ;\n\n this.slider\n .attr(\"transform\", \"translate(\" + (-this.width() / 2 + this.padding()) + \",\" + 0 + \")\");\n\n this.slider.selectAll(\"line.track,line.track-inset,line.track-overlay\")\n .attr(\"x1\", this.xScale.range()[0])\n .attr(\"x2\", this.xScale.range()[1])\n ;\n\n const x_distance = (this.width() - (this.padding() * 2)) / (this.tickCount() - 1);\n\n const tick_text_arr = [];\n if (this.tickDateFormat() !== null && this.timePattern() !== null) {\n const Q_parser = d3TimeParse(\"%Q\");\n const time_formatter = d3TimeFormat(this.tickDateFormat());\n const time_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const date_to_parse = \"\" + (this.low() + (time_segment * i));\n const parsed_date = Q_parser(date_to_parse);\n tick_text_arr.push(time_formatter(parsed_date));\n }\n } else {\n const value_formatter = d3Format(this.tickValueFormat());\n const value_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const tick_value = this.low() + (value_segment * i);\n tick_text_arr.push(value_formatter(tick_value));\n }\n }\n const tickText = this.slider.selectAll(\"g.tick\").data(tick_text_arr);\n const tickTextEnter = tickText.enter().append(\"g\").attr(\"class\", \"tick\");\n\n tickTextEnter.append(\"text\").attr(\"class\", \"tick-text\");\n tickTextEnter.append(\"line\").attr(\"class\", \"tick-line\");\n tickTextEnter\n .merge(tickText)\n .each(function (d, i) {\n const x = x_distance * i;\n\n d3Select(this).select(\"text.tick-text\")\n .style(\"font-size\", context.fontSize())\n .attr(\"x\", function () {\n if (i === 0) return x - 2;\n return i === context.tickCount() - 1 ? x + 2 : x;\n })\n .attr(\"y\", context.tickHeight() + (context.tickOffset() / 2) + context.fontSize())\n .attr(\"text-basline\", \"text-before-edge\")\n .attr(\"text-anchor\", function () {\n if (i === 0) return \"start\";\n return i === context.tickCount() - 1 ? \"end\" : \"middle\";\n })\n .text(() => d)\n ;\n\n d3Select(this).select(\"line.tick-line\")\n .attr(\"x1\", x)\n .attr(\"x2\", x)\n .attr(\"y1\", context.tickOffset() - 1)\n .attr(\"y2\", context.tickOffset() + context.tickHeight())\n .style(\"stroke\", \"#000\")\n .style(\"stroke-width\", 1)\n ;\n });\n this.slider.node().appendChild(this.handleRight.node());\n this.slider.node().appendChild(this.handleLeft.node());\n this.handleLeftPos = this.lowPos();\n this.handleRightPos = this.highPos();\n this.updateHandles();\n this.checkChangedValue();\n }\n\n checkChangedValue() {\n if (this.prevValue !== this.value() && typeof this.prevValue !== \"undefined\") {\n this.change(this);\n }\n this.prevValue = this.value();\n }\n\n updateHandles() {\n this.handleLeft\n .attr(\"transform\", `translate(${this.handleLeftPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"l\"))\n ;\n this.handleRight\n .attr(\"transform\", `translate(${this.handleRightPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"r\"))\n ;\n }\n\n lowPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][0]);\n }\n\n highPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][this.allowRange() ? 1 : 0]);\n }\n\n moveHandleTo(pos) {\n if (this.allowRange()) {\n switch (this.moveMode) {\n case \"both\":\n this.handleLeftPos = this.handleLeftStartPos + pos - this.moveStartPos;\n this.handleRightPos = this.handleRightStartPos + pos - this.moveStartPos;\n break;\n case \"left\":\n this.handleLeftPos = pos;\n if (this.handleLeftPos > this.handleRightPos) {\n this.handleRightPos = this.handleLeftPos;\n }\n break;\n case \"right\":\n this.handleRightPos = pos;\n if (this.handleRightPos < this.handleLeftPos) {\n this.handleLeftPos = this.handleRightPos;\n }\n break;\n }\n } else {\n this.handleLeftPos = this.handleRightPos = pos;\n }\n\n this.handleLeftPos = this.constrain(this.handleLeftPos);\n this.handleRightPos = this.constrain(this.handleRightPos);\n this.value(this.allowRange() ? [this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)] : this.xScale.invert(this.handleLeftPos));\n this.updateHandles();\n }\n\n constrain(pos: number): number {\n const range = this.xScale.range();\n if (pos < range[0]) pos = range[0];\n if (pos > range[1]) pos = range[1];\n return this.nearestStep(pos);\n }\n\n nearestStep(pos) {\n const value = this.xScale.invert(pos);\n return this.xScale(this.low() + Math.round((value - this.low()) / this.step()) * this.step());\n }\n\n handlePath = function (d) {\n const e = +(d === \"r\");\n const x = e ? 1 : -1;\n const xOffset = this.allowRange() ? 0.5 : 0.0;\n const y = 18;\n let retVal = \"M\" + (xOffset * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (xOffset * x) + \",\" + (2 * y)\n ;\n if (this.allowRange()) {\n retVal += \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n } else {\n retVal += \"M\" + (1 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n }\n return retVal;\n };\n\n}\nSlider.prototype._class += \" form_Slider\";\nSlider.prototype.implements(IInput.prototype);\n\nexport interface Slider {\n // IInput ---\n name(): string;\n name(_: string): this;\n change(_: Slider): void;\n\n // Properties ---\n padding(): number;\n padding(_: number): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n allowRange(): boolean;\n allowRange(_: boolean): this;\n low(): number;\n low(_: number): this;\n high(): number;\n high(_: number): this;\n step(): number;\n step(_: number): this;\n lowDatetime(): string;\n lowDatetime(_: string): this;\n highDatetime(): string;\n highDatetime(_: string): this;\n stepDatetime(): number;\n stepDatetime(_: number): this;\n selectionLabel(): string;\n selectionLabel(_: string): this;\n label(): string;\n label(_: string): this;\n value(): any;\n value(_: any): this;\n validate(): string;\n validate(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickOffset(): number;\n tickOffset(_: number): this;\n tickHeight(): number;\n tickHeight(_: number): this;\n tickDateFormat(): string;\n tickDateFormat(_: string): this;\n tickValueFormat(): string;\n tickValueFormat(_: string): this;\n timePattern(): string;\n timePattern(_: string): this;\n\n padding_exists(): boolean;\n fontSize_exists(): boolean;\n fontFamily_exists(): boolean;\n fontColor_exists(): boolean;\n allowRange_exists(): boolean;\n low_exists(): boolean;\n step_exists(): boolean;\n high_exists(): boolean;\n selectionLabel_exists(): boolean;\n name_exists(): boolean;\n label_exists(): boolean;\n value_exists(): boolean;\n validate_exists(): boolean;\n}\n\nSlider.prototype.publish(\"padding\", 16, \"number\", \"Outer Padding\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontSize\", 12, \"number\", \"Font Size\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontFamily\", null, \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontColor\", null, \"html-color\", \"Font Color\", null, { tags: [\"Basic\"] });\n\nSlider.prototype.publish(\"allowRange\", false, \"boolean\", \"Allow Range Selection\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"low\", null, \"number\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"high\", null, \"number\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"step\", 10, \"number\", \"Step\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"lowDatetime\", null, \"string\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"highDatetime\", null, \"string\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"selectionLabel\", \"\", \"string\", \"Selection Label\", null, { tags: [\"Intermediate\"] });\n\nSlider.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\");\n\nSlider.prototype.publish(\"tickCount\", 10, \"number\");\nSlider.prototype.publish(\"tickOffset\", 5, \"number\");\nSlider.prototype.publish(\"tickHeight\", 8, \"number\");\nSlider.prototype.publish(\"tickDateFormat\", null, \"string\");\nSlider.prototype.publish(\"tickValueFormat\", \",.0f\", \"string\");\n\nconst name = Slider.prototype.name;\nSlider.prototype.name = function (_?: any): any {\n const retVal = name.apply(this, arguments);\n if (arguments.length) {\n const val = _ instanceof Array ? _ : [_];\n SVGWidget.prototype.columns.call(this, val);\n }\n return retVal;\n};\n\nconst value = Slider.prototype.value;\nSlider.prototype.value = function (_?: any): any {\n const retVal = value.apply(this, arguments);\n if (!arguments.length) {\n if (!this.allowRange()) {\n return SVGWidget.prototype.data.call(this)[0][0];\n }\n return SVGWidget.prototype.data.call(this)[0];\n } else {\n SVGWidget.prototype.data.call(this, [this.allowRange() ? _ : [_, _]]);\n }\n return retVal;\n};\n","import { Input } from \"./Input.ts\";\n\nexport class TextArea extends Input {\n constructor() {\n super();\n\n this._tag = \"div\";\n this.type(\"textarea\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n calcHeight() {\n return Math.max(this.minHeight_exists() ? this.minHeight() : 0, this.height());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._inputElement[0]\n .attr(\"rows\", this.rows())\n .attr(\"cols\", this.cols())\n .attr(\"wrap\", this.wrap())\n .attr(\"spellcheck\", this.spellcheck())\n .style(\"height\", this.calcHeight() + \"px\")\n ;\n }\n\n}\nTextArea.prototype._class += \" form_TextArea\";\n\nexport interface TextArea {\n rows(): number;\n rows(_: number): this;\n rows_exists(): boolean;\n cols(): number;\n cols(_: number): this;\n cols_exists(): boolean;\n wrap(): string;\n wrap(_: string): this;\n wrap_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n spellcheck(): boolean;\n spellcheck(_: boolean): this;\n spellcheck_exists(): boolean;\n}\n\nTextArea.prototype.publish(\"rows\", null, \"number\", \"Rows\", null, { optional: true });\nTextArea.prototype.publish(\"cols\", null, \"number\", \"Columns\", null, { optional: true });\nTextArea.prototype.publish(\"wrap\", \"off\", \"set\", \"Wrap\", [\"off\", \"on\"]);\nTextArea.prototype.publish(\"minHeight\", null, \"number\", \"Minimum Height\", null, { optional: true });\nTextArea.prototype.publish(\"spellcheck\", null, \"boolean\", \"Input spell checking\", { optional: true });\n"],"mappings":"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"}
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@hpcc-js/api"),require("@hpcc-js/common")):typeof define==`function`&&define.amd?define([`exports`,`@hpcc-js/api`,`@hpcc-js/common`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`@hpcc-js/form`]={},e[`@hpcc-js/api`],e[`@hpcc-js/common`]))})(this,function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var r=`@hpcc-js/form`,i=`3.5.
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require("@hpcc-js/api"),require("@hpcc-js/common")):typeof define==`function`&&define.amd?define([`exports`,`@hpcc-js/api`,`@hpcc-js/common`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e[`@hpcc-js/form`]={},e[`@hpcc-js/api`],e[`@hpcc-js/common`]))})(this,function(e,t,n){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var r=`@hpcc-js/form`,i=`3.5.6`,a=`3.29.1`,Button=class extends n.HTMLWidget{_inputElement=[];constructor(){super(),t.IInput.call(this),this._tag=`div`}enter(e,t){super.enter(e,t);let n=this;this._inputElement[0]=t.append(`button`).attr(`name`,this.name()).on(`click`,function(e){e.click(e)}).on(`blur`,function(e){e.blur(e)}).on(`change`,function(e){n.value([n._inputElement[0].property(`value`)]),e.change(e,!0)})}update(e,t){super.update(e,t),this._inputElement[0].text(this.value())}};Button.prototype._class+=` form_Button`,Button.prototype.implements(t.IInput.prototype);var CheckBox=class extends n.HTMLWidget{_inputElement=[];constructor(){super(),t.IInput.call(this),this._tag=`div`}enter(e,t){super.enter(e,t);let n=this,r=t.append(`ul`);this.selectOptions().length||this.selectOptions().push(``),this.selectOptions().forEach(function(e,t){n._inputElement[t]=r.append(`li`).append(`input`).attr(`type`,`checkbox`),n._inputElement[t].node().insertAdjacentHTML(`afterend`,`<text>`+e+`</text>`)}),this._inputElement.forEach(function(e,t){e.attr(`name`,n.name()),e.on(`click`,function(e){e.click(e)}),e.on(`blur`,function(e){e.blur(e)}),e.on(`change`,function(e){let t=[];n._inputElement.forEach(function(e){e.property(`checked`)&&t.push(e.property(`value`))}),n.value(t),e.change(e,!0)})})}update(e,t){super.update(e,t);let n=this;this._inputElement.forEach(function(e,t){e.property(`value`,n.selectOptions()[t]),n.value().indexOf(n.selectOptions()[t])!==-1&&n.value()!==`false`?e.property(`checked`,!0):e.property(`checked`,!1)})}insertSelectOptions(e){let t=``;e.length>0?e.forEach(function(e){let n=e instanceof Array?e[0]:e,r=e instanceof Array?e[1]?e[1]:e[0]:e;t+=`<option value='`+n+`'>`+r+`</option>`}):t+=`<option>selectOptions not set</option>`,this._inputElement[0].html(t)}};CheckBox.prototype._class+=` form_CheckBox`,CheckBox.prototype.implements(t.IInput.prototype),CheckBox.prototype.publish(`selectOptions`,[],`array`,`Array of options used to fill a dropdown list`);var ColorInput=class extends n.HTMLWidget{_inputElement=[];constructor(){super(),t.IInput.call(this),this._tag=`div`}enter(e,t){super.enter(e,t);let r=this;this._inputElement[0]=t.append(`input`).attr(`type`,`text`),this._inputElement[0].classed(`color-text`,!0),this._inputElement[1]=t.append(`input`).attr(`type`,`color`),this._inputElement.forEach(function(e,t){e.on(`click`,function(e){e.click(e)}),e.on(`blur`,function(e){e.blur(e)}),e.on(`change`,function(e){t===0?(r._inputElement[1].property(`value`,(0,n.rgb)(r._inputElement[0].property(`value`)).toString()),r.value(r._inputElement[0].property(`value`))):(r._inputElement[0].property(`value`,r._inputElement[1].property(`value`)),r.value((0,n.rgb)(r._inputElement[1].property(`value`)).toString())),e.change(e,!0)})})}update(e,t){super.update(e,t);let r=this;this._inputElement.forEach(function(e){e.attr(`name`,r.name())}),this._inputElement[0].attr(`type`,`text`),this._inputElement[1].attr(`type`,`color`),this._inputElement[0].property(`value`,this.value()),this._inputElement[1].property(`value`,(0,n.rgb)(this.value()).toString());let i=this._inputElement[0].node().getBoundingClientRect();this._inputElement[1].style(`height`,i.height-2+`px`)}};ColorInput.prototype._class+=` form_ColorInput`,ColorInput.prototype.implements(t.IInput.prototype);var Form=class extends n.HTMLWidget{tbody;tfoot;btntd;_controls;_maxCols;constructor(){super(),this._tag=`form`}data(e){if(arguments.length)this.inputsForEach(function(t,n){e&&e.length>n&&t.value(e[n]).render()});else{let e=[];return this.inputsForEach(function(t){e.push(t.value())}),e}return this}inputsForEach(e,t){let r=0;this.inputs().forEach(function(i){(i instanceof n.WidgetArray?i.content():[i]).forEach(function(n){t?e.call(t,n,r++):e(n,r++)})})}inputsMap(){let e={};return this.inputs().forEach(function(t){e[t.name()]=t}),e}calcMaxColumns(){let e=0;return this.inputs().forEach(function(t){let r=t instanceof n.WidgetArray?t.content():[t];r.length>e&&(e=r.length)}),e}values(e){if(arguments.length)this.inputsForEach(function(t){e[t.name()]?t.value(e[t.name()]):this.omitBlank()&&t.value(``)},this);else{let e={};return this.inputsForEach(function(t){let n=t.type?t.type():`text`;if(t.value()||!this.omitBlank())switch(n){case`checkbox`:e[t.name()]=t.value_exists()?!!t.value():void 0;break;case`number`:let n=t.value();e[t.name()]=n===``?void 0:+n;break;default:e[t.name()]=t.value_exists()?t.value():void 0;break}},this),e}return this}submit(){let e=!0;this.validate()&&(e=this.checkValidation()),!(!this.allowEmptyRequest()&&!this.inputs().some(function(e){return e._class.indexOf(`WidgetArray`)===-1?e.hasValue():e.content().some(function(e){return e.hasValue()})}))&&this.click(e?this.values():null,null,e)}clear(){this.inputsForEach(function(e){switch(e.classID()){case`form_Slider`:e.allowRange()?e.value([e.low(),e.low()]).render():e.value(e.low()).render();break;case`form_CheckBox`:e.value(!1).render();break;case`form_Button`:break;default:e.value(void 0).render();break}})}checkValidation(){let e=!0,t=[];return this.inputsForEach(function(e){e.isValid()||t.push(`'`+e.label()+`' value is invalid.`)}),t.length>0&&(alert(t.join(`
|
|
2
2
|
`)),e=!1),e}enter(e,t){super.enter(e,t),t.on(`submit`,function(){(0,n.d3Event)().preventDefault()}),this._placeholderElement.style(`overflow`,`auto`);let r=t.append(`table`);this.tbody=r.append(`tbody`),this.tfoot=r.append(`tfoot`),this.btntd=this.tfoot.append(`tr`).append(`td`).attr(`colspan`,2);let i=this;this._controls=[new Button().classed({default:!0}).value(`Submit`).on(`click`,function(){i.submit()},!0),new Button().value(`Clear`).on(`click`,function(){i.clear()},!0)];let a=i.btntd.append(`div`).style(`float`,`right`);this._controls.forEach(function(e){let t=a.append(`span`).style(`float`,`left`);e.target(t.node()).render()})}update(e,t){super.update(e,t),this._maxCols=this.calcMaxColumns();let r=this,i=this.tbody.selectAll(`tr`).data(this.inputs());i.enter().append(`tr`).each(function(e,t){let i=(0,n.select)(this),a=e instanceof n.WidgetArray?e.content():[e];a.forEach(function(e,t){i.append(`td`).attr(`class`,`prompt`);let o=i.append(`td`).attr(`class`,`input`);if(t===a.length-1&&a.length<r._maxCols&&o.attr(`colspan`,(r._maxCols-a.length+1)*2),e.target(o.node()).render(),e instanceof n.SVGWidget){let t=e.element().node().getBBox();o.style(`height`,t.height+`px`),e.resize().render()}e._inputElement instanceof Array&&e._inputElement.forEach(function(e){e.on(`keyup.form`,function(e){setTimeout(function(){r._controls[0].disable(!r.allowEmptyRequest()&&!r.inputs().some(function(e){return e._class.indexOf(`WidgetArray`)===-1?e.hasValue():e.content().some(function(e){return e.hasValue()})}))},100)})})})}).merge(i).each(function(e,t){let r=(0,n.select)(this);(e instanceof n.WidgetArray?e.content():[e]).forEach(function(e,t){r.select(`td.prompt`).text(e.label()+`:`)})}),i.each(function(e,t){t===0&&e.setFocus&&e.setFocus()}),i.exit().each(function(e,t){(e instanceof n.WidgetArray?e.content():[e]).forEach(function(e,t){e.target(null)})}).remove(),this.tfoot.style(`display`,this.showSubmit()?`table-footer-group`:`none`),this.btntd.attr(`colspan`,this._maxCols*2),this.allowEmptyRequest()||setTimeout(function(){r._controls[0].disable(!r.allowEmptyRequest()&&!r.inputs().some(function(e){return e._class.indexOf(`WidgetArray`)===-1?e.hasValue():e.content().some(function(e){return e.hasValue()})}))},100)}exit(e,t){this.inputsForEach(e=>e.target(null)),super.exit(e,t)}click(e,t,n){}};Form.prototype._class+=` form_Form`,Form.prototype.publish(`validate`,!0,`boolean`,`Enable/Disable input validation`),Form.prototype.publish(`inputs`,[],`widgetArray`,`Array of input widgets`,null,{render:!1}),Form.prototype.publish(`showSubmit`,!0,`boolean`,`Show Submit/Cancel Controls`),Form.prototype.publish(`omitBlank`,!1,`boolean`,`Drop Blank Fields From Submit`),Form.prototype.publish(`allowEmptyRequest`,!1,`boolean`,`Allow Blank Form to be Submitted`);var Input=class extends n.HTMLWidget{_inputElement=[];_labelElement=[];constructor(){super(),t.IInput.call(this),this._tag=`div`}checked(e){return arguments.length?(this._inputElement[0]&&this._inputElement[0].property(`checked`,e),this):this._inputElement[0]?this._inputElement[0].property(`checked`):!1}enter(e,t){super.enter(e,t),this._labelElement[0]=t.append(`label`).attr(`for`,this.id()+`_input`).style(`visibility`,this.inlineLabel_exists()?`visible`:`hidden`);let n=this;switch(this.type()){case`button`:this._inputElement[0]=t.append(`button`).attr(`id`,this.id()+`_input`);break;case`textarea`:this._inputElement[0]=t.append(`textarea`).attr(`id`,this.id()+`_input`);break;default:this._inputElement[0]=t.append(`input`).attr(`id`,this.id()+`_input`).attr(`type`,this.type());break}this._inputElement.forEach(function(e,t){e.attr(`name`,n.name()),e.on(`click`,function(e){e.click(e)}),e.on(`blur`,function(e){e.blur(e)}),e.on(`change`,function(t){n.value([e.property(`value`)]),t.change(t,!0)}),e.on(`keyup`,function(t){n.value([e.property(`value`)]),t.change(t,!1)})})}update(e,t){switch(super.update(e,t),this._labelElement[0].style(`visibility`,this.inlineLabel_exists()?`visible`:`hidden`).text(this.inlineLabel()),this.type()){case`button`:this._inputElement[0].text(this.value());break;case`textarea`:this._inputElement[0].property(`value`,this.value());break;default:this._inputElement[0].attr(`type`,this.type()),this._inputElement[0].property(`value`,this.value());break}}blur(e){}keyup(e){}focus(e){}click(e){}dblclick(e){}change(e,t){}};Input.prototype._class+=` form_Input`,Input.prototype.implements(t.IInput.prototype),Input.prototype.publish(`type`,`text`,`set`,`Input type`,[`string`,`number`,`boolean`,`date`,`time`,`hidden`,`nested`,`button`,`checkbox`,`text`,`textarea`,`search`,`email`,`datetime`]),Input.prototype.publish(`inlineLabel`,null,`string`,`Input Label`,null,{optional:!0});var FieldForm=class extends Form{constructor(){super(),this._tag=`form`}fields(e){let t=super.fields.apply(this,arguments);if(arguments.length){let t=this.inputsMap();this.inputs(e.map(e=>t[e.id()]||new Input().name(e.id()).label(e.label()).type(e.type())))}return t}data(e){if(!arguments.length)return super.data();if(super.data(e[0]),e[0]){let t=this.inputs(),n=e[0][this.columns().length],r=0;for(let e in n)t[r].name(e),++r}return this}};FieldForm.prototype._class+=` form_FieldForm`;var InputRange=class extends n.HTMLWidget{_inputElement=[];_labelElement=[];_rangeData=[];constructor(){super(),t.IInput.call(this),this._tag=`div`}enter(e,t){super.enter(e,t),this._labelElement[0]=t.append(`label`).attr(`for`,this.id()+`_input`).style(`visibility`,this.inlineLabel_exists()?`visible`:`hidden`),this._inputElement.push(t.append(`input`).attr(`id`,this.id()+`_input_min`).attr(`type`,this.type())),this._inputElement.push(t.append(`input`).attr(`id`,this.id()+`_input_max`).attr(`type`,this.type()));let n=this;this._inputElement.forEach(function(e,t){e.attr(`name`,n.name()),e.on(`click`,function(e){e.click(e)}),e.on(`blur`,function(e){e.blur(e)}),e.on(`change`,function(r){n._rangeData[t]=e.property(`value`),n.value(n._rangeData),r.change(r,!0)})})}update(e,t){super.update(e,t),this._labelElement[0].style(`visibility`,this.inlineLabel_exists()?`visible`:`hidden`).text(this.inlineLabel()),this._rangeData=this.value(),this._inputElement.forEach(function(e,t){e.attr(`type`,this.type()).property(`value`,this._rangeData.length>t?this._rangeData[t]:``)},this)}};InputRange.prototype._class+=` form_InputRange`,InputRange.prototype.implements(t.IInput.prototype),InputRange.prototype.publish(`type`,`text`,`set`,`InputRange type`,[`number`,`date`,`text`,`time`,`datetime`,`hidden`]),InputRange.prototype.publish(`inlineLabel`,null,`string`,`InputRange Label`,null,{optional:!0}),InputRange.prototype.publish(`value`,[``,``],`array`,`Input Current Value`,null,{override:!0});var OnOff=class extends n.HTMLWidget{_inputElement=[];_input;constructor(){super(),t.IInput.call(this),this._tag=`div`}enter(e,t){super.enter(e,t),t.classed(`onoffswitch`,!0);let n=this;this._input=t.append(`input`).attr(`class`,`onoffswitch-checkbox`).attr(`type`,`checkbox`).attr(`id`,this.id()+`_onOff`).on(`click`,function(e){e.click(e)}).on(`blur`,function(e){e.blur(e)}).on(`change`,function(e){let t=[];n._inputElement.forEach(function(e,n){e.property(`checked`)&&t.push(e.property(`value`))}),n.value(t),e.change(e,!0)});let r=t.append(`label`).attr(`class`,`onoffswitch-label`).attr(`for`,this.id()+`_onOff`),i=r.append(`div`).attr(`class`,`onoffswitch-inner`);i.append(`div`).attr(`class`,`onoffswitch-offText`).style(`padding-right`,this.containerRadius()/2+`px`).text(this.offText()),i.append(`div`).attr(`class`,`onoffswitch-onText`).style(`padding-left`,this.containerRadius()/2+`px`).style(`width`,`calc(100% - ${this.containerRadius()/2}px)`).text(this.onText()),r.append(`div`).attr(`class`,`onoffswitch-switch`)}update(e,t){super.update(e,t),this._input.attr(`name`,this.name()),t.style(`margin-left`,this.marginLeft()+`px`).style(`margin-bottom`,this.marginBottom()+`px`).style(`width`,this.minWidth()+`px`);let n=this.minHeight()-this.gutter()*4;t.select(`.onoffswitch-switch`).style(`height`,n+`px`).style(`width`,n+`px`).style(`top`,this.gutter()*2+1+`px`).style(`border-radius`,this.switchRadius()+`px`),t.select(`.onoffswitch-inner`).style(`min-height`,this.minHeight()+`px`),t.select(`.onoffswitch-label`).style(`border-radius`,this.containerRadius()+`px`),t.select(`.onoffswitch-offText`).style(`color`,this.offFontColor()).style(`background-color`,this.offColor()),t.select(`.onoffswitch-onText`).style(`color`,this.onFontColor()).style(`background-color`,this.onColor())}};OnOff.prototype._class+=` form_OnOff`,OnOff.prototype.implements(t.IInput.prototype),OnOff.prototype.publish(`marginLeft`,0,`number`,`Margin left of OnOff`),OnOff.prototype.publish(`marginBottom`,0,`number`,`Margin bottom of OnOff`),OnOff.prototype.publish(`minWidth`,100,`number`,`Minimum width of OnOff (pixels)`),OnOff.prototype.publish(`minHeight`,20,`number`,`Minimum height of OnOff (pixels)`),OnOff.prototype.publish(`gutter`,1,`number`,`Space between switch and border of OnOff (pixels)`),OnOff.prototype.publish(`onText`,`Save`,`string`,`Text to display when 'ON'`),OnOff.prototype.publish(`offText`,`Properties`,`string`,`Text to display when 'OFF'`),OnOff.prototype.publish(`switchRadius`,10,`number`,`Border radius of switch (pixels)`),OnOff.prototype.publish(`containerRadius`,10,`number`,`Border radius of OnOff (pixels)`),OnOff.prototype.publish(`onColor`,`#2ecc71`,`html-color`,`Background color when 'ON'`),OnOff.prototype.publish(`offColor`,`#ecf0f1`,`html-color`,`Background color when 'OFF'`),OnOff.prototype.publish(`onFontColor`,`#2c3e50`,`html-color`,`Font color when 'ON'`),OnOff.prototype.publish(`offFontColor`,`#7f8c8d`,`html-color`,`Font color when 'OFF'`);var Radio=class extends n.HTMLWidget{_inputElement=[];constructor(){super(),t.IInput.call(this),this._tag=`div`}enter(e,t){super.enter(e,t);let n=this,r=t.append(`ul`);this.selectOptions().length||this.selectOptions().push(``),this.selectOptions().forEach(function(e,t){n._inputElement[t]=r.append(`li`).append(`input`).attr(`type`,`radio`),n._inputElement[t].node().insertAdjacentHTML(`afterend`,`<text>`+e+`</text>`)}),this._inputElement.forEach(function(e,t){e.attr(`name`,n.name()),e.on(`click`,function(e){e.click(e)}),e.on(`blur`,function(e){e.blur(e)}),e.on(`change`,function(t){n.value([e.property(`value`)]),t.change(t,!0)})})}update(e,t){super.update(e,t);let n=this;this._inputElement.forEach(function(e,t){e.property(`value`,n.selectOptions()[t]),n.value().indexOf(n.selectOptions()[t])!==-1&&n.value()!==`false`?e.property(`checked`,!0):e.property(`checked`,!1)})}};Radio.prototype._class+=` form_Radio`,Radio.prototype.implements(t.IInput.prototype),Radio.prototype.publish(`selectOptions`,[],`array`,`Array of options used to fill a dropdown list`);var Range=class extends n.HTMLWidget{_inputElement=[];constructor(){super(),t.IInput.call(this),this._tag=`div`}enter(e,t){super.enter(e,t);let r=this;this._inputElement[0]=t.append(`input`).attr(`type`,`range`),this._inputElement[1]=t.append(`input`).attr(`type`,`number`),this._inputElement.forEach(function(e,t){e.attr(`name`,r.name()),e.on(`click`,function(e){e.click(e)}),e.on(`blur`,function(e){e.blur(e)}),e.on(`change`,function(e){t===0?(r._inputElement[1].property(`value`,(0,n.rgb)(r._inputElement[0].property(`value`)).toString()),r.value(r._inputElement[0].property(`value`))):(r._inputElement[0].property(`value`,r._inputElement[1].property(`value`)),r.value((0,n.rgb)(r._inputElement[1].property(`value`)).toString())),e.change(e,!0)})})}update(e,t){super.update(e,t),this._inputElement[0].attr(`type`,`range`),this._inputElement[0].property(`value`,this.value()),this._inputElement[0].attr(`min`,this.low()),this._inputElement[0].attr(`max`,this.high()),this._inputElement[0].attr(`step`,this.step()),this._inputElement[1].attr(`type`,`number`),this._inputElement[1].property(`value`,this.value()),this._inputElement[1].attr(`min`,this.low()),this._inputElement[1].attr(`max`,this.high()),this._inputElement[1].attr(`step`,this.step())}insertSelectOptions(e){let t=``;e.length>0?e.forEach(function(e){let n=e instanceof Array?e[0]:e,r=e instanceof Array?e[1]?e[1]:e[0]:e;t+=`<option value='`+n+`'>`+r+`</option>`}):t+=`<option>selectOptions not set</option>`,this._inputElement[0].html(t)}};Range.prototype._class+=` form_Range`,Range.prototype.implements(t.IInput.prototype),Range.prototype.publish(`type`,`text`,`set`,`Input type`,[`html-color`,`number`,`checkbox`,`button`,`select`,`textarea`,`date`,`text`,`range`,`search`,`email`,`time`,`datetime`]),Range.prototype.publish(`selectOptions`,[],`array`,`Array of options used to fill a dropdown list`),Range.prototype.publish(`low`,null,`number`,`Minimum value for Range input`),Range.prototype.publish(`high`,null,`number`,`Maximum value for Range input`),Range.prototype.publish(`step`,null,`number`,`Step value for Range input`);var Select=class extends n.HTMLWidget{_inputElement=[];constructor(){super(),t.IInput.call(this),this._tag=`div`}enter(e,t){super.enter(e,t);let n=this;this._inputElement[0]=t.append(`select`).attr(`name`,this.name()).on(`click`,function(e){e.click(e)}).on(`blur`,function(e){e.blur(e)}).on(`change`,function(e){n.value([n._inputElement[0].property(`value`)]),e.change(e,!0)})}update(e,t){super.update(e,t),this.insertSelectOptions(this.selectOptions()),this._inputElement[0].property(`value`,this.value()).style(`max-width`,this.maxWidth_exists()?this.maxWidth()+`px`:null)}insertSelectOptions(e){let t=``;e.length>0?e.forEach(function(e){let n=e instanceof Array?e[0]:e,r=e instanceof Array?e[1]?e[1]:e[0]:e;t+=`<option value='`+n+`'>`+r+`</option>`}):t+=`<option>selectOptions not set</option>`,this._inputElement[0].html(t)}};Select.prototype._class+=` form_Select`,Select.prototype.implements(t.IInput.prototype),Select.prototype.publish(`selectOptions`,[],`array`,`Array of options used to fill a dropdown list`),Select.prototype.publish(`maxWidth`,120,`number`,`Width`,null,{optional:!0});var Slider=class extends n.SVGWidget{xScale;moveMode;moveStartPos;prevValue;slider;handleLeft;handleLeftPos=0;handleLeftStartPos;handleRight;handleRightPos=0;handleRightStartPos;constructor(){super(),t.IInput.call(this)}enter(e,t){if(super.enter(e,t),this.resize({width:this.width(),height:50}),this.xScale=(0,n.scaleLinear)().clamp(!0),this.slider=t.append(`g`).attr(`class`,`slider`),this.low()===null&&this.high()===null&&this.lowDatetime()!==null&&this.highDatetime()!==null){let e=(0,n.timeParse)(this.timePattern()?this.timePattern():`%Q`);this.low(e(this.lowDatetime()).getTime()),this.high(e(this.highDatetime()).getTime())}this.slider.append(`line`).attr(`class`,`track`).select(function(){return this.parentNode.appendChild(this.cloneNode(!0))}).attr(`class`,`track-inset`).select(function(){return this.parentNode.appendChild(this.cloneNode(!0))}).attr(`class`,`track-overlay`).call((0,n.drag)().on(`start`,()=>{let e=(0,n.d3Event)();this.moveStartPos=e.x,this.handleLeftStartPos=this.handleLeftPos,this.handleRightStartPos=this.handleRightPos,this.allowRange()&&this.handleLeftPos<=e.x&&e.x<=this.handleRightPos?this.moveMode=`both`:Math.abs(e.x-this.handleLeftPos)<Math.abs(e.x-this.handleRightPos)?this.moveMode=`left`:this.moveMode=`right`,this.moveHandleTo(e.x)}).on(`drag`,()=>{this.moveHandleTo((0,n.d3Event)().x)}).on(`end`,()=>{this.moveHandleTo((0,n.d3Event)().x),this.data([[this.xScale.invert(this.handleLeftPos),this.xScale.invert(this.handleRightPos)]]),this.checkChangedValue()})),this.slider.insert(`g`,`.track-overlay`).attr(`class`,`ticks`).attr(`transform`,`translate(0, ${this.fontSize()+this.tickHeight()/2})`),this.handleRight=this.slider.insert(`path`,`.track-overlay`).attr(`class`,`handle`),this.handleLeft=this.slider.insert(`path`,`.track-overlay`).attr(`class`,`handle`)}update(e,t){super.update(e,t);let r=this;this.xScale.domain([this.low(),this.high()]).range([0,this.width()-this.padding()*2]),this.slider.attr(`transform`,`translate(`+(-this.width()/2+this.padding())+`,0)`),this.slider.selectAll(`line.track,line.track-inset,line.track-overlay`).attr(`x1`,this.xScale.range()[0]).attr(`x2`,this.xScale.range()[1]);let i=(this.width()-this.padding()*2)/(this.tickCount()-1),a=[];if(this.tickDateFormat()!==null&&this.timePattern()!==null){let e=(0,n.timeParse)(`%Q`),t=(0,n.timeFormat)(this.tickDateFormat()),r=(this.high()-this.low())/(this.tickCount()-1);for(let n=0;n<this.tickCount();n++){let i=e(``+(this.low()+r*n));a.push(t(i))}}else{let e=(0,n.format)(this.tickValueFormat()),t=(this.high()-this.low())/(this.tickCount()-1);for(let n=0;n<this.tickCount();n++){let r=this.low()+t*n;a.push(e(r))}}let o=this.slider.selectAll(`g.tick`).data(a),s=o.enter().append(`g`).attr(`class`,`tick`);s.append(`text`).attr(`class`,`tick-text`),s.append(`line`).attr(`class`,`tick-line`),s.merge(o).each(function(e,t){let a=i*t;(0,n.select)(this).select(`text.tick-text`).style(`font-size`,r.fontSize()).attr(`x`,function(){return t===0?a-2:t===r.tickCount()-1?a+2:a}).attr(`y`,r.tickHeight()+r.tickOffset()/2+r.fontSize()).attr(`text-basline`,`text-before-edge`).attr(`text-anchor`,function(){return t===0?`start`:t===r.tickCount()-1?`end`:`middle`}).text(()=>e),(0,n.select)(this).select(`line.tick-line`).attr(`x1`,a).attr(`x2`,a).attr(`y1`,r.tickOffset()-1).attr(`y2`,r.tickOffset()+r.tickHeight()).style(`stroke`,`#000`).style(`stroke-width`,1)}),this.slider.node().appendChild(this.handleRight.node()),this.slider.node().appendChild(this.handleLeft.node()),this.handleLeftPos=this.lowPos(),this.handleRightPos=this.highPos(),this.updateHandles(),this.checkChangedValue()}checkChangedValue(){this.prevValue!==this.value()&&this.prevValue!==void 0&&this.change(this),this.prevValue=this.value()}updateHandles(){this.handleLeft.attr(`transform`,`translate(${this.handleLeftPos}, -28)`).attr(`d`,e=>this.handlePath(`l`)),this.handleRight.attr(`transform`,`translate(${this.handleRightPos}, -28)`).attr(`d`,e=>this.handlePath(`r`))}lowPos(){let e=[[this.low(),this.high()]];return this.data().length>0&&typeof this.data()[0][0]==`number`&&typeof this.data()[0][1]==`number`&&(e=this.data()),this.xScale(e[0][0])}highPos(){let e=[[this.low(),this.high()]];return this.data().length>0&&typeof this.data()[0][0]==`number`&&typeof this.data()[0][1]==`number`&&(e=this.data()),this.xScale(e[0][+!!this.allowRange()])}moveHandleTo(e){if(this.allowRange())switch(this.moveMode){case`both`:this.handleLeftPos=this.handleLeftStartPos+e-this.moveStartPos,this.handleRightPos=this.handleRightStartPos+e-this.moveStartPos;break;case`left`:this.handleLeftPos=e,this.handleLeftPos>this.handleRightPos&&(this.handleRightPos=this.handleLeftPos);break;case`right`:this.handleRightPos=e,this.handleRightPos<this.handleLeftPos&&(this.handleLeftPos=this.handleRightPos);break}else this.handleLeftPos=this.handleRightPos=e;this.handleLeftPos=this.constrain(this.handleLeftPos),this.handleRightPos=this.constrain(this.handleRightPos),this.value(this.allowRange()?[this.xScale.invert(this.handleLeftPos),this.xScale.invert(this.handleRightPos)]:this.xScale.invert(this.handleLeftPos)),this.updateHandles()}constrain(e){let t=this.xScale.range();return e<t[0]&&(e=t[0]),e>t[1]&&(e=t[1]),this.nearestStep(e)}nearestStep(e){let t=this.xScale.invert(e);return this.xScale(this.low()+Math.round((t-this.low())/this.step())*this.step())}handlePath=function(e){let t=+(e===`r`),n=t?1:-1,r=this.allowRange()?.5:0,i=`M`+r*n+`,18A6,6 0 0 `+t+` `+6.5*n+`,24V30A6,6 0 0 `+t+` `+r*n+`,36`;return this.allowRange()?i+=`ZM`+2.5*n+`,26V28M`+4.5*n+`,26V28`:i+=`M`+1*n+`,26V28`,i}};Slider.prototype._class+=` form_Slider`,Slider.prototype.implements(t.IInput.prototype),Slider.prototype.publish(`padding`,16,`number`,`Outer Padding`,null,{tags:[`Basic`]}),Slider.prototype.publish(`fontSize`,12,`number`,`Font Size`,null,{tags:[`Basic`]}),Slider.prototype.publish(`fontFamily`,null,`string`,`Font Name`,null,{tags:[`Basic`]}),Slider.prototype.publish(`fontColor`,null,`html-color`,`Font Color`,null,{tags:[`Basic`]}),Slider.prototype.publish(`allowRange`,!1,`boolean`,`Allow Range Selection`,null,{tags:[`Intermediate`]}),Slider.prototype.publish(`low`,null,`number`,`Low`,null,{tags:[`Intermediate`]}),Slider.prototype.publish(`high`,null,`number`,`High`,null,{tags:[`Intermediate`]}),Slider.prototype.publish(`step`,10,`number`,`Step`,null,{tags:[`Intermediate`]}),Slider.prototype.publish(`lowDatetime`,null,`string`,`Low`,null,{tags:[`Intermediate`]}),Slider.prototype.publish(`highDatetime`,null,`string`,`High`,null,{tags:[`Intermediate`]}),Slider.prototype.publish(`selectionLabel`,``,`string`,`Selection Label`,null,{tags:[`Intermediate`]}),Slider.prototype.publish(`timePattern`,`%Y-%m-%d`,`string`),Slider.prototype.publish(`tickCount`,10,`number`),Slider.prototype.publish(`tickOffset`,5,`number`),Slider.prototype.publish(`tickHeight`,8,`number`),Slider.prototype.publish(`tickDateFormat`,null,`string`),Slider.prototype.publish(`tickValueFormat`,`,.0f`,`string`);var o=Slider.prototype.name;Slider.prototype.name=function(e){let t=o.apply(this,arguments);if(arguments.length){let t=e instanceof Array?e:[e];n.SVGWidget.prototype.columns.call(this,t)}return t};var s=Slider.prototype.value;Slider.prototype.value=function(e){let t=s.apply(this,arguments);if(arguments.length)n.SVGWidget.prototype.data.call(this,[this.allowRange()?e:[e,e]]);else return this.allowRange()?n.SVGWidget.prototype.data.call(this)[0]:n.SVGWidget.prototype.data.call(this)[0][0];return t};var TextArea=class extends Input{constructor(){super(),this._tag=`div`,this.type(`textarea`)}enter(e,t){super.enter(e,t)}calcHeight(){return Math.max(this.minHeight_exists()?this.minHeight():0,this.height())}update(e,t){super.update(e,t),this._inputElement[0].attr(`rows`,this.rows()).attr(`cols`,this.cols()).attr(`wrap`,this.wrap()).attr(`spellcheck`,this.spellcheck()).style(`height`,this.calcHeight()+`px`)}};TextArea.prototype._class+=` form_TextArea`,TextArea.prototype.publish(`rows`,null,`number`,`Rows`,null,{optional:!0}),TextArea.prototype.publish(`cols`,null,`number`,`Columns`,null,{optional:!0}),TextArea.prototype.publish(`wrap`,`off`,`set`,`Wrap`,[`off`,`on`]),TextArea.prototype.publish(`minHeight`,null,`number`,`Minimum Height`,null,{optional:!0}),TextArea.prototype.publish(`spellcheck`,null,`boolean`,`Input spell checking`,{optional:!0}),e.BUILD_VERSION=a,e.Button=Button,e.CheckBox=CheckBox,e.ColorInput=ColorInput,e.FieldForm=FieldForm,e.Form=Form,e.Input=Input,e.InputRange=InputRange,e.OnOff=OnOff,e.PKG_NAME=r,e.PKG_VERSION=i,e.Radio=Radio,e.Range=Range,e.Select=Select,e.Slider=Slider,e.TextArea=TextArea});
|
|
3
3
|
//# sourceMappingURL=index.umd.cjs.map
|
|
4
4
|
(function(){try{if(typeof document<`u`){var e=document.createElement(`style`);e.appendChild(document.createTextNode(`.form_Input input,.form_Input select,.form_Input button,.form_Input textarea{padding:2px}.form_Input button{cursor:pointer}.form_Input input.color-text{width:120px}.form_Input input.color-text+input{width:57px;position:absolute}.form_Input textarea,.form_Input input[type=textbox]{box-sizing:border-box;width:100%;display:block}.form_Input ul{float:left;margin:0;padding:0;list-style-type:none}.form_Input li{float:left;list-style-position:inside}.form_Form{color:#404040}.form_Form tbody td{white-space:nowrap;border:1px solid #e5e5e5}.form_Form td.prompt{vertical-align:middle;background-color:#e5e5e5;padding:2px}.form_Form td.input{vertical-align:middle;width:100%;padding:2px}.form_Form td.input .common_HTMLWidget ul{margin:0}.form_Form tfoot button{margin:5px}.form_Form tbody tr:hover{background-color:#fafafa}.form_Form .form_Button button{box-sizing:border-box;color:#24292e;cursor:pointer;overflow-wrap:break-word;vertical-align:middle;white-space:nowrap;word-wrap:break-word;column-rule-color:#24292e;perspective-origin:57.2938px 14px;transform-origin:57.2938px 14px;-webkit-user-select:none;user-select:none;background:#eff3f6 linear-gradient(-180deg,#fafbfc 0%,#eff3f6 90%) -1px -1px/110% 110% repeat-x;border:1px solid #1b1f2333;border-radius:3px;outline:0 #24292e;height:28px;padding:3px 10px;-webkit-text-decoration:none;text-decoration:none;position:relative;inset:0}.form_Form .form_Button button[disabled=disabled]{background:#dbdfe2}.form_Form .form_Button button:focus{box-shadow:0 0 0 .2em #0366d64d}.form_Form .form_Button button:hover{background:#dbdfe2}.form_Form .form_Button.default button{color:#fff;word-wrap:break-word;column-rule-color:#fff;perspective-origin:44.975px 17px;transform-origin:44.975px 17px;background:#28a745 linear-gradient(-180deg,#34d058 0%,#28a745 90%) -1px -1px/110% 110% repeat-x;outline:0 #fff;-webkit-text-decoration:none;text-decoration:none}.form_Form .form_Button.default button[disabled=disabled],.form_Form .form_Button.default button[disabled=disabled]:hover{background:#dbdfe2}.form_Form .form_Button.default button:hover{background:#149331}.onoffswitch-checkbox{display:none}.onoffswitch{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;width:100px;height:20px;position:relative}.onoffswitch-label{cursor:pointer;border:1px solid #999;height:20px;display:block;overflow:hidden}.onoffswitch-inner{transition:margin .3s ease-in;display:block;position:relative}.onoffswitch-inner>.onoffswitch-offText,.onoffswitch-inner>.onoffswitch-onText{height:100%}.onoffswitch-inner>.onoffswitch-offText{text-align:right;width:100%;font-weight:700;transition:all .3s ease-in;position:absolute;right:0}.onoffswitch-inner>.onoffswitch-onText{text-align:left;width:100%;font-weight:700;transition:all .3s ease-in;position:absolute;left:-100%}.onoffswitch-switch{background:#fff;border:1px solid #999;width:20px;margin:-1px;transition:all .3s ease-in;display:block;position:absolute;inset:0 78px 0 4px}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner>.onoffswitch-offText{right:-100%}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-inner>.onoffswitch-onText{left:0}.onoffswitch-checkbox:checked+.onoffswitch-label .onoffswitch-switch{left:calc(100% - 20px)}.form_Slider .ticks{font:10px sans-serif}.form_Slider .track,.form_Slider .track-inset,.form_Slider .track-overlay{stroke-linecap:round}.form_Slider .track{stroke:#000;stroke-opacity:.3;stroke-width:10px}.form_Slider .track-inset{stroke:#ddd;stroke-width:8px}.form_Slider .track-overlay{pointer-events:stroke;stroke-width:50px;stroke:#0000;cursor:crosshair}.form_Slider .handle{fill:#fff;stroke:#000;stroke-opacity:.5;stroke-width:1.25px}.form_Slider .tick-line{stroke:#000;stroke-opacity:.5;stroke-width:1px;shape-rendering:crispedges}/*$vite$:1*/`)),document.head.appendChild(e)}}catch(e){console.error(`vite-plugin-css-injected-by-js`,e)}})();
|
package/dist/index.umd.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.umd.cjs","names":[],"sources":["../src/__package__.ts","../src/Button.ts","../src/CheckBox.ts","../src/ColorInput.ts","../src/Form.ts","../src/Input.ts","../src/FieldForm.ts","../src/InputRange.ts","../src/OnOff.ts","../src/Radio.ts","../src/Range.ts","../src/Select.ts","../src/Slider.ts","../src/TextArea.ts"],"sourcesContent":["export const PKG_NAME = \"__PACKAGE_NAME__\";\nexport const PKG_VERSION = \"__PACKAGE_VERSION__\";\nexport const BUILD_VERSION = \"__BUILD_VERSION__\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Button extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._inputElement[0] = element.append(\"button\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].text(this.value());\n }\n}\nButton.prototype._class += \" form_Button\";\nButton.prototype.implements(IInput.prototype);\n\nexport interface Button {\n name(): string;\n name(_: string): Button;\n label(): string;\n label(_: string): Button;\n value(): any;\n value(_: any): Button;\n validate(): string;\n validate(_: string): Button;\n}\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class CheckBox extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n const checkboxContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = checkboxContainer.append(\"li\").append(\"input\").attr(\"type\", \"checkbox\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nCheckBox.prototype._class += \" form_CheckBox\";\nCheckBox.prototype.implements(IInput.prototype);\n\nexport interface CheckBox {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nCheckBox.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class ColorInput extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"text\");\n this._inputElement[0].classed(\"color-text\", true);\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"color\");\n\n this._inputElement.forEach(function (e, idx) {\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n this._inputElement.forEach(function (e) {\n e.attr(\"name\", context.name());\n });\n\n this._inputElement[0].attr(\"type\", \"text\");\n this._inputElement[1].attr(\"type\", \"color\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[1].property(\"value\", d3Rgb(this.value()).toString());\n\n const bbox = this._inputElement[0].node().getBoundingClientRect();\n this._inputElement[1].style(\"height\", (bbox.height - 2) + \"px\");\n\n }\n}\nColorInput.prototype._class += \" form_ColorInput\";\nColorInput.prototype.implements(IInput.prototype);\n\nexport interface ColorInput {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n}\n","import { d3Event, HTMLWidget, select as d3Select, SVGWidget, Widget, WidgetArray } from \"@hpcc-js/common\";\nimport { Button } from \"./Button.ts\";\n\nimport \"../src/Form.css\";\n\nexport class Form extends HTMLWidget {\n tbody;\n tfoot;\n btntd;\n _controls;\n _maxCols;\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) {\n const retVal = [];\n this.inputsForEach(function (input) {\n retVal.push(input.value());\n });\n return retVal;\n } else {\n this.inputsForEach(function (input, idx) {\n if (_ && _.length > idx) {\n input.value(_[idx]).render();\n }\n });\n }\n return this;\n }\n\n inputsForEach(callback, scope?) {\n let idx = 0;\n this.inputs().forEach(function (inp) {\n const inpArray = inp instanceof WidgetArray ? inp.content() : [inp];\n inpArray.forEach(function (inp2) {\n if (scope) {\n callback.call(scope, inp2, idx++);\n } else {\n callback(inp2, idx++);\n }\n });\n });\n }\n\n inputsMap(): { [name: string]: Widget } {\n const retVal: { [name: string]: Widget } = {};\n this.inputs().forEach(function (inp) {\n retVal[inp.name()] = inp;\n });\n return retVal;\n }\n\n calcMaxColumns() {\n let retVal = 0;\n this.inputs().forEach(function (inputWidget) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n if (inputWidgetArray.length > retVal) {\n retVal = inputWidgetArray.length;\n }\n });\n return retVal;\n }\n\n values(): any;\n values(_: any): this;\n values(_?: any): any | this {\n if (!arguments.length) {\n const dataArr = {};\n this.inputsForEach(function (inp) {\n const type = inp.type ? inp.type() : \"text\";\n const value = inp.value();\n if (value || !this.omitBlank()) {\n switch (type) {\n case \"checkbox\":\n dataArr[inp.name()] = inp.value_exists() ? !!inp.value() : undefined;\n break;\n case \"number\":\n const v = inp.value();\n dataArr[inp.name()] = v === \"\" ? undefined : +v;\n break;\n case \"text\":\n default:\n dataArr[inp.name()] = inp.value_exists() ? inp.value() : undefined;\n break;\n }\n }\n }, this);\n return dataArr;\n } else {\n this.inputsForEach(function (inp) {\n if (_[inp.name()]) {\n inp.value(_[inp.name()]);\n } else if (this.omitBlank()) {\n inp.value(\"\");\n }\n }, this);\n }\n return this;\n }\n\n submit() {\n let isValid = true;\n if (this.validate()) {\n isValid = this.checkValidation();\n }\n if (!this.allowEmptyRequest() && !this.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n })) {\n return;\n }\n this.click(isValid ? this.values() : null, null, isValid);\n }\n\n clear() {\n this.inputsForEach(function (inp) {\n switch (inp.classID()) {\n case \"form_Slider\":\n if (inp.allowRange()) {\n inp.value([inp.low(), inp.low()]).render();\n } else {\n inp.value(inp.low()).render();\n }\n break;\n case \"form_CheckBox\":\n inp.value(false).render();\n break;\n case \"form_Button\":\n /* skip */\n break;\n default:\n inp.value(undefined).render();\n break;\n }\n });\n }\n\n checkValidation() {\n let ret = true;\n const msgArr = [];\n this.inputsForEach(function (inp) {\n if (!inp.isValid()) {\n msgArr.push(\"'\" + inp.label() + \"'\" + \" value is invalid.\");\n }\n });\n if (msgArr.length > 0) {\n alert(msgArr.join(\"\\n\"));\n ret = false;\n }\n return ret;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.on(\"submit\", function () {\n d3Event().preventDefault();\n });\n\n this._placeholderElement.style(\"overflow\", \"auto\");\n const table = element\n .append(\"table\")\n ;\n this.tbody = table.append(\"tbody\");\n this.tfoot = table.append(\"tfoot\");\n this.btntd = this.tfoot.append(\"tr\").append(\"td\")\n .attr(\"colspan\", 2)\n ;\n\n const context = this;\n this._controls = [\n new Button()\n .classed({ default: true })\n .value(\"Submit\")\n .on(\"click\", function () {\n context.submit();\n }, true),\n new Button()\n .value(\"Clear\")\n .on(\"click\", function () {\n context.clear();\n }, true)\n ];\n const rightJust = context.btntd\n .append(\"div\")\n .style(\"float\", \"right\")\n ;\n this._controls.forEach(function (w) {\n const leftJust = rightJust\n .append(\"span\")\n .style(\"float\", \"left\")\n ;\n w.target(leftJust.node()).render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._maxCols = this.calcMaxColumns();\n\n const context = this;\n const rows = this.tbody.selectAll(\"tr\").data(this.inputs());\n rows.enter().append(\"tr\")\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.append(\"td\")\n .attr(\"class\", \"prompt\")\n ;\n const input = element2.append(\"td\")\n .attr(\"class\", \"input\")\n ;\n if (idx === inputWidgetArray.length - 1 && inputWidgetArray.length < context._maxCols) {\n input.attr(\"colspan\", (context._maxCols - inputWidgetArray.length + 1) * 2);\n }\n inputWidget2.target(input.node()).render();\n if (inputWidget2 instanceof SVGWidget) {\n const bbox = inputWidget2.element().node().getBBox();\n input.style(\"height\", bbox.height + \"px\");\n inputWidget2.resize().render();\n }\n\n if (inputWidget2._inputElement instanceof Array) {\n inputWidget2._inputElement.forEach(function (e) {\n e.on(\"keyup.form\", function (w) {\n setTimeout(function () {\n\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w2) {\n if (w2._class.indexOf(\"WidgetArray\") !== -1) {\n return w2.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w2.hasValue();\n }));\n }, 100);\n });\n });\n }\n });\n })\n .merge(rows)\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.select(\"td.prompt\")\n .text(inputWidget2.label() + \":\")\n ;\n });\n })\n ;\n rows.each(function (inputWidget, i) {\n if (i === 0 && inputWidget.setFocus) {\n inputWidget.setFocus();\n }\n });\n rows.exit()\n .each(function (inputWidget, i) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n inputWidget2.target(null);\n });\n })\n .remove()\n ;\n\n this.tfoot\n .style(\"display\", this.showSubmit() ? \"table-footer-group\" : \"none\")\n ;\n this.btntd\n .attr(\"colspan\", this._maxCols * 2)\n ;\n\n // Disable Submit unless there is data\n if (!this.allowEmptyRequest()) {\n setTimeout(function () {\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n }));\n }, 100);\n }\n\n }\n\n exit(domNode, element) {\n this.inputsForEach(input => input.target(null));\n super.exit(domNode, element);\n }\n\n click(row, col, sel) {\n }\n}\nForm.prototype._class += \" form_Form\";\n\nexport interface Form {\n validate(): boolean;\n validate(_: boolean): this;\n validate_exists(): boolean;\n inputs(): any[];\n inputs(_: any[]): this;\n inputs_exists(): boolean;\n inputs_reset(): void;\n showSubmit(): boolean;\n showSubmit(_: boolean): this;\n showSubmit_exists(): boolean;\n omitBlank(): boolean;\n omitBlank(_: boolean): this;\n omitBlank_exists(): boolean;\n allowEmptyRequest(): boolean;\n allowEmptyRequest(_: boolean): this;\n allowEmptyRequest_exists(): boolean;\n}\n\nForm.prototype.publish(\"validate\", true, \"boolean\", \"Enable/Disable input validation\");\nForm.prototype.publish(\"inputs\", [], \"widgetArray\", \"Array of input widgets\", null, { render: false });\nForm.prototype.publish(\"showSubmit\", true, \"boolean\", \"Show Submit/Cancel Controls\");\nForm.prototype.publish(\"omitBlank\", false, \"boolean\", \"Drop Blank Fields From Submit\");\nForm.prototype.publish(\"allowEmptyRequest\", false, \"boolean\", \"Allow Blank Form to be Submitted\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Input extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n checked(_) {\n if (!arguments.length) return this._inputElement[0] ? this._inputElement[0].property(\"checked\") : false;\n if (this._inputElement[0]) {\n this._inputElement[0].property(\"checked\", _);\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n const context = this;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0] = element.append(\"button\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n case \"textarea\":\n this._inputElement[0] = element.append(\"textarea\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n default:\n this._inputElement[0] = element.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"type\", this.type())\n ;\n break;\n }\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w: Input) {\n w.click(w);\n });\n e.on(\"blur\", function (w: Input) {\n w.blur(w);\n });\n e.on(\"change\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n e.on(\"keyup\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, false);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0].text(this.value());\n break;\n case \"textarea\":\n this._inputElement[0].property(\"value\", this.value());\n break;\n default:\n this._inputElement[0].attr(\"type\", this.type());\n this._inputElement[0].property(\"value\", this.value());\n break;\n }\n }\n\n // IInput Events ---\n blur(w: Input) {\n }\n keyup(w: Input) {\n }\n focus(w: Input) {\n }\n click(w: Input) {\n }\n dblclick(w: Input) {\n }\n change(w: Input, complete: boolean) {\n }\n}\nInput.prototype._class += \" form_Input\";\nInput.prototype.implements(IInput.prototype);\n\nexport interface Input {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\";\n type(_: Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\"): this;\n type_exists(): boolean;\n type_default(): string;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInput.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\", \"button\", \"checkbox\", \"text\", \"textarea\", \"search\", \"email\", \"datetime\"]);\nInput.prototype.publish(\"inlineLabel\", null, \"string\", \"Input Label\", null, { optional: true });\n","import { Database } from \"@hpcc-js/common\";\nimport { Form } from \"./Form.ts\";\nimport { Input } from \"./Input.ts\";\n\nimport \"../src/Form.css\";\n\nexport class FieldForm extends Form {\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (arguments.length) {\n const inpMap = this.inputsMap();\n this.inputs(_.map(f => inpMap[f.id()] || new Input()\n .name(f.id())\n .label(f.label())\n .type(f.type())\n ));\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return super.data();\n super.data(_[0]);\n if (_[0]) {\n // Update input \"name\" with the __lparam ids ---\n const inputs = this.inputs();\n const __lparam = _[0][this.columns().length];\n let i = 0;\n for (const key in __lparam) {\n inputs[i].name(key);\n ++i;\n }\n }\n return this;\n }\n\n}\nFieldForm.prototype._class += \" form_FieldForm\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class InputRange extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n _rangeData = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_min\")\n .attr(\"type\", this.type()));\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_max\")\n .attr(\"type\", this.type()));\n\n const context = this;\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context._rangeData[idx] = e.property(\"value\");\n context.value(context._rangeData);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n\n this._rangeData = this.value();\n this._inputElement.forEach(function (e, idx) {\n e\n .attr(\"type\", this.type())\n .property(\"value\", this._rangeData.length > idx ? this._rangeData[idx] : \"\");\n }, this);\n }\n}\nInputRange.prototype._class += \" form_InputRange\";\nInputRange.prototype.implements(IInput.prototype);\n\nexport interface InputRange {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any[];\n value(_: any[]): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInputRange.prototype.publish(\"type\", \"text\", \"set\", \"InputRange type\", [\"number\", \"date\", \"text\", \"time\", \"datetime\", \"hidden\"]);\nInputRange.prototype.publish(\"inlineLabel\", null, \"string\", \"InputRange Label\", null, { optional: true });\nInputRange.prototype.publish(\"value\", [\"\", \"\"], \"array\", \"Input Current Value\", null, { override: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/OnOff.css\";\n\nexport class OnOff extends HTMLWidget {\n _inputElement = [];\n _input;\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.classed(\"onoffswitch\", true);\n const context = this;\n this._input = element.append(\"input\")\n .attr(\"class\", \"onoffswitch-checkbox\")\n .attr(\"type\", \"checkbox\")\n .attr(\"id\", this.id() + \"_onOff\")\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d, idx) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n })\n ;\n const label = element.append(\"label\")\n .attr(\"class\", \"onoffswitch-label\")\n .attr(\"for\", this.id() + \"_onOff\")\n ;\n const inner = label.append(\"div\")\n .attr(\"class\", \"onoffswitch-inner\")\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-offText\")\n .style(\"padding-right\", (this.containerRadius() / 2) + \"px\")\n .text(this.offText())\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-onText\")\n .style(\"padding-left\", (this.containerRadius() / 2) + \"px\")\n .style(\"width\", `calc(100% - ${(this.containerRadius() / 2)}px)`)\n .text(this.onText())\n ;\n label.append(\"div\")\n .attr(\"class\", \"onoffswitch-switch\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._input\n .attr(\"name\", this.name())\n ;\n element\n .style(\"margin-left\", this.marginLeft() + \"px\")\n .style(\"margin-bottom\", this.marginBottom() + \"px\")\n .style(\"width\", this.minWidth() + \"px\")\n ;\n\n const _switch_size = this.minHeight() - (this.gutter() * 4);\n\n element.select(\".onoffswitch-switch\")\n .style(\"height\", _switch_size + \"px\")\n .style(\"width\", _switch_size + \"px\")\n .style(\"top\", (this.gutter() * 2) + 1 + \"px\")\n .style(\"border-radius\", this.switchRadius() + \"px\")\n ;\n element.select(\".onoffswitch-inner\")\n .style(\"min-height\", this.minHeight() + \"px\")\n ;\n element.select(\".onoffswitch-label\")\n .style(\"border-radius\", this.containerRadius() + \"px\")\n ;\n element.select(\".onoffswitch-offText\")\n .style(\"color\", this.offFontColor())\n .style(\"background-color\", this.offColor())\n ;\n element.select(\".onoffswitch-onText\")\n .style(\"color\", this.onFontColor())\n .style(\"background-color\", this.onColor())\n ;\n }\n}\nOnOff.prototype._class += \" form_OnOff\";\nexport interface OnOff {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n marginLeft(): number;\n marginLeft(_: number): this;\n marginBottom(): number;\n marginBottom(_: number): this;\n minWidth(): number;\n minWidth(_: number): this;\n minHeight(): number;\n minHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n offText(): string;\n offText(_: string): this;\n onText(): string;\n onText(_: string): this;\n switchRadius(): number;\n switchRadius(_: number): this;\n containerRadius(): number;\n containerRadius(_: number): this;\n offColor(): string;\n offColor(_: string): this;\n onColor(): string;\n onColor(_: string): this;\n offFontColor(): string;\n offFontColor(_: string): this;\n onFontColor(): string;\n onFontColor(_: string): this;\n\n}\nOnOff.prototype.implements(IInput.prototype);\n\nOnOff.prototype.publish(\"marginLeft\", 0, \"number\", \"Margin left of OnOff\");\nOnOff.prototype.publish(\"marginBottom\", 0, \"number\", \"Margin bottom of OnOff\");\nOnOff.prototype.publish(\"minWidth\", 100, \"number\", \"Minimum width of OnOff (pixels)\");\nOnOff.prototype.publish(\"minHeight\", 20, \"number\", \"Minimum height of OnOff (pixels)\");\nOnOff.prototype.publish(\"gutter\", 1, \"number\", \"Space between switch and border of OnOff (pixels)\");\nOnOff.prototype.publish(\"onText\", \"Save\", \"string\", \"Text to display when 'ON'\");\nOnOff.prototype.publish(\"offText\", \"Properties\", \"string\", \"Text to display when 'OFF'\");\nOnOff.prototype.publish(\"switchRadius\", 10, \"number\", \"Border radius of switch (pixels)\");\nOnOff.prototype.publish(\"containerRadius\", 10, \"number\", \"Border radius of OnOff (pixels)\");\nOnOff.prototype.publish(\"onColor\", \"#2ecc71\", \"html-color\", \"Background color when 'ON'\");\nOnOff.prototype.publish(\"offColor\", \"#ecf0f1\", \"html-color\", \"Background color when 'OFF'\");\nOnOff.prototype.publish(\"onFontColor\", \"#2c3e50\", \"html-color\", \"Font color when 'ON'\");\nOnOff.prototype.publish(\"offFontColor\", \"#7f8c8d\", \"html-color\", \"Font color when 'OFF'\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Radio extends HTMLWidget {\n _inputElement = [];\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n const radioContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = radioContainer.append(\"li\").append(\"input\").attr(\"type\", \"radio\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n}\nRadio.prototype._class += \" form_Radio\";\nRadio.prototype.implements(IInput.prototype);\n\nexport interface Radio {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nRadio.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class Range extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"range\");\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"number\");\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].attr(\"type\", \"range\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[0].attr(\"min\", this.low());\n this._inputElement[0].attr(\"max\", this.high());\n this._inputElement[0].attr(\"step\", this.step());\n this._inputElement[1].attr(\"type\", \"number\");\n this._inputElement[1].property(\"value\", this.value());\n this._inputElement[1].attr(\"min\", this.low());\n this._inputElement[1].attr(\"max\", this.high());\n this._inputElement[1].attr(\"step\", this.step());\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nRange.prototype._class += \" form_Range\";\nRange.prototype.implements(IInput.prototype);\n\nexport interface Range {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n low(): number;\n low(_: number): this;\n low_exists(): boolean;\n high(): number;\n high(_: number): this;\n high_exists(): boolean;\n step(): number;\n step(_: number): this;\n step_exists(): boolean;\n}\n\nRange.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"html-color\", \"number\", \"checkbox\", \"button\", \"select\", \"textarea\", \"date\", \"text\", \"range\", \"search\", \"email\", \"time\", \"datetime\"]);\nRange.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nRange.prototype.publish(\"low\", null, \"number\", \"Minimum value for Range input\");\nRange.prototype.publish(\"high\", null, \"number\", \"Maximum value for Range input\");\nRange.prototype.publish(\"step\", null, \"number\", \"Step value for Range input\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Select extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"select\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.insertSelectOptions(this.selectOptions());\n this._inputElement[0]\n .property(\"value\", this.value())\n .style(\"max-width\", this.maxWidth_exists() ? this.maxWidth() + \"px\" : null)\n ;\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nSelect.prototype._class += \" form_Select\";\nSelect.prototype.implements(IInput.prototype);\n\nexport interface Select {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n maxWidth(): number;\n maxWidth(_: number): this;\n maxWidth_exists(): boolean;\n}\n\nSelect.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nSelect.prototype.publish(\"maxWidth\", 120, \"number\", \"Width\", null, { optional: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Slider.css\";\n\nexport class Slider extends SVGWidget {\n xScale;\n\n moveMode: \"both\" | \"left\" | \"right\";\n moveStartPos: number;\n\n prevValue;\n\n slider;\n\n handleLeft;\n handleLeftPos: number = 0;\n handleLeftStartPos: number;\n\n handleRight;\n handleRightPos: number = 0;\n handleRightStartPos: number;\n\n constructor() {\n super();\n IInput.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.resize({ width: this.width(), height: 50 });\n\n this.xScale = d3ScaleLinear()\n .clamp(true);\n\n this.slider = element.append(\"g\")\n .attr(\"class\", \"slider\")\n ;\n if (this.low() === null && this.high() === null) {\n if (this.lowDatetime() !== null && this.highDatetime() !== null) {\n const time_parser = d3TimeParse(this.timePattern() ? this.timePattern() : \"%Q\");\n this.low(time_parser(this.lowDatetime()).getTime());\n this.high(time_parser(this.highDatetime()).getTime());\n }\n }\n this.slider.append(\"line\")\n .attr(\"class\", \"track\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-inset\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-overlay\")\n .call(d3Drag()\n .on(\"start\", () => {\n const event = d3Event();\n this.moveStartPos = event.x;\n this.handleLeftStartPos = this.handleLeftPos;\n this.handleRightStartPos = this.handleRightPos;\n if (this.allowRange() && this.handleLeftPos <= event.x && event.x <= this.handleRightPos) {\n this.moveMode = \"both\";\n } else if (Math.abs(event.x - this.handleLeftPos) < Math.abs(event.x - this.handleRightPos)) {\n this.moveMode = \"left\";\n } else {\n this.moveMode = \"right\";\n }\n this.moveHandleTo(event.x);\n })\n .on(\"drag\", () => {\n this.moveHandleTo(d3Event().x);\n })\n .on(\"end\", () => {\n this.moveHandleTo(d3Event().x);\n this.data([[this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)]]);\n this.checkChangedValue();\n }));\n\n this.slider.insert(\"g\", \".track-overlay\")\n .attr(\"class\", \"ticks\")\n .attr(\"transform\", `translate(0, ${this.fontSize() + (this.tickHeight() / 2)})`)\n ;\n\n this.handleRight = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n\n this.handleLeft = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this.xScale\n .domain([this.low(), this.high()])\n .range([0, this.width() - this.padding() * 2])\n ;\n\n this.slider\n .attr(\"transform\", \"translate(\" + (-this.width() / 2 + this.padding()) + \",\" + 0 + \")\");\n\n this.slider.selectAll(\"line.track,line.track-inset,line.track-overlay\")\n .attr(\"x1\", this.xScale.range()[0])\n .attr(\"x2\", this.xScale.range()[1])\n ;\n\n const x_distance = (this.width() - (this.padding() * 2)) / (this.tickCount() - 1);\n\n const tick_text_arr = [];\n if (this.tickDateFormat() !== null && this.timePattern() !== null) {\n const Q_parser = d3TimeParse(\"%Q\");\n const time_formatter = d3TimeFormat(this.tickDateFormat());\n const time_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const date_to_parse = \"\" + (this.low() + (time_segment * i));\n const parsed_date = Q_parser(date_to_parse);\n tick_text_arr.push(time_formatter(parsed_date));\n }\n } else {\n const value_formatter = d3Format(this.tickValueFormat());\n const value_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const tick_value = this.low() + (value_segment * i);\n tick_text_arr.push(value_formatter(tick_value));\n }\n }\n const tickText = this.slider.selectAll(\"g.tick\").data(tick_text_arr);\n const tickTextEnter = tickText.enter().append(\"g\").attr(\"class\", \"tick\");\n\n tickTextEnter.append(\"text\").attr(\"class\", \"tick-text\");\n tickTextEnter.append(\"line\").attr(\"class\", \"tick-line\");\n tickTextEnter\n .merge(tickText)\n .each(function (d, i) {\n const x = x_distance * i;\n\n d3Select(this).select(\"text.tick-text\")\n .style(\"font-size\", context.fontSize())\n .attr(\"x\", function () {\n if (i === 0) return x - 2;\n return i === context.tickCount() - 1 ? x + 2 : x;\n })\n .attr(\"y\", context.tickHeight() + (context.tickOffset() / 2) + context.fontSize())\n .attr(\"text-basline\", \"text-before-edge\")\n .attr(\"text-anchor\", function () {\n if (i === 0) return \"start\";\n return i === context.tickCount() - 1 ? \"end\" : \"middle\";\n })\n .text(() => d)\n ;\n\n d3Select(this).select(\"line.tick-line\")\n .attr(\"x1\", x)\n .attr(\"x2\", x)\n .attr(\"y1\", context.tickOffset() - 1)\n .attr(\"y2\", context.tickOffset() + context.tickHeight())\n .style(\"stroke\", \"#000\")\n .style(\"stroke-width\", 1)\n ;\n });\n this.slider.node().appendChild(this.handleRight.node());\n this.slider.node().appendChild(this.handleLeft.node());\n this.handleLeftPos = this.lowPos();\n this.handleRightPos = this.highPos();\n this.updateHandles();\n this.checkChangedValue();\n }\n\n checkChangedValue() {\n if (this.prevValue !== this.value() && typeof this.prevValue !== \"undefined\") {\n this.change(this);\n }\n this.prevValue = this.value();\n }\n\n updateHandles() {\n this.handleLeft\n .attr(\"transform\", `translate(${this.handleLeftPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"l\"))\n ;\n this.handleRight\n .attr(\"transform\", `translate(${this.handleRightPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"r\"))\n ;\n }\n\n lowPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][0]);\n }\n\n highPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][this.allowRange() ? 1 : 0]);\n }\n\n moveHandleTo(pos) {\n if (this.allowRange()) {\n switch (this.moveMode) {\n case \"both\":\n this.handleLeftPos = this.handleLeftStartPos + pos - this.moveStartPos;\n this.handleRightPos = this.handleRightStartPos + pos - this.moveStartPos;\n break;\n case \"left\":\n this.handleLeftPos = pos;\n if (this.handleLeftPos > this.handleRightPos) {\n this.handleRightPos = this.handleLeftPos;\n }\n break;\n case \"right\":\n this.handleRightPos = pos;\n if (this.handleRightPos < this.handleLeftPos) {\n this.handleLeftPos = this.handleRightPos;\n }\n break;\n }\n } else {\n this.handleLeftPos = this.handleRightPos = pos;\n }\n\n this.handleLeftPos = this.constrain(this.handleLeftPos);\n this.handleRightPos = this.constrain(this.handleRightPos);\n this.value(this.allowRange() ? [this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)] : this.xScale.invert(this.handleLeftPos));\n this.updateHandles();\n }\n\n constrain(pos: number): number {\n const range = this.xScale.range();\n if (pos < range[0]) pos = range[0];\n if (pos > range[1]) pos = range[1];\n return this.nearestStep(pos);\n }\n\n nearestStep(pos) {\n const value = this.xScale.invert(pos);\n return this.xScale(this.low() + Math.round((value - this.low()) / this.step()) * this.step());\n }\n\n handlePath = function (d) {\n const e = +(d === \"r\");\n const x = e ? 1 : -1;\n const xOffset = this.allowRange() ? 0.5 : 0.0;\n const y = 18;\n let retVal = \"M\" + (xOffset * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (xOffset * x) + \",\" + (2 * y)\n ;\n if (this.allowRange()) {\n retVal += \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n } else {\n retVal += \"M\" + (1 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n }\n return retVal;\n };\n\n}\nSlider.prototype._class += \" form_Slider\";\nSlider.prototype.implements(IInput.prototype);\n\nexport interface Slider {\n // IInput ---\n name(): string;\n name(_: string): this;\n change(_: Slider): void;\n\n // Properties ---\n padding(): number;\n padding(_: number): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n allowRange(): boolean;\n allowRange(_: boolean): this;\n low(): number;\n low(_: number): this;\n high(): number;\n high(_: number): this;\n step(): number;\n step(_: number): this;\n lowDatetime(): string;\n lowDatetime(_: string): this;\n highDatetime(): string;\n highDatetime(_: string): this;\n stepDatetime(): number;\n stepDatetime(_: number): this;\n selectionLabel(): string;\n selectionLabel(_: string): this;\n label(): string;\n label(_: string): this;\n value(): any;\n value(_: any): this;\n validate(): string;\n validate(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickOffset(): number;\n tickOffset(_: number): this;\n tickHeight(): number;\n tickHeight(_: number): this;\n tickDateFormat(): string;\n tickDateFormat(_: string): this;\n tickValueFormat(): string;\n tickValueFormat(_: string): this;\n timePattern(): string;\n timePattern(_: string): this;\n\n padding_exists(): boolean;\n fontSize_exists(): boolean;\n fontFamily_exists(): boolean;\n fontColor_exists(): boolean;\n allowRange_exists(): boolean;\n low_exists(): boolean;\n step_exists(): boolean;\n high_exists(): boolean;\n selectionLabel_exists(): boolean;\n name_exists(): boolean;\n label_exists(): boolean;\n value_exists(): boolean;\n validate_exists(): boolean;\n}\n\nSlider.prototype.publish(\"padding\", 16, \"number\", \"Outer Padding\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontSize\", 12, \"number\", \"Font Size\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontFamily\", null, \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontColor\", null, \"html-color\", \"Font Color\", null, { tags: [\"Basic\"] });\n\nSlider.prototype.publish(\"allowRange\", false, \"boolean\", \"Allow Range Selection\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"low\", null, \"number\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"high\", null, \"number\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"step\", 10, \"number\", \"Step\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"lowDatetime\", null, \"string\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"highDatetime\", null, \"string\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"selectionLabel\", \"\", \"string\", \"Selection Label\", null, { tags: [\"Intermediate\"] });\n\nSlider.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\");\n\nSlider.prototype.publish(\"tickCount\", 10, \"number\");\nSlider.prototype.publish(\"tickOffset\", 5, \"number\");\nSlider.prototype.publish(\"tickHeight\", 8, \"number\");\nSlider.prototype.publish(\"tickDateFormat\", null, \"string\");\nSlider.prototype.publish(\"tickValueFormat\", \",.0f\", \"string\");\n\nconst name = Slider.prototype.name;\nSlider.prototype.name = function (_?: any): any {\n const retVal = name.apply(this, arguments);\n if (arguments.length) {\n const val = _ instanceof Array ? _ : [_];\n SVGWidget.prototype.columns.call(this, val);\n }\n return retVal;\n};\n\nconst value = Slider.prototype.value;\nSlider.prototype.value = function (_?: any): any {\n const retVal = value.apply(this, arguments);\n if (!arguments.length) {\n if (!this.allowRange()) {\n return SVGWidget.prototype.data.call(this)[0][0];\n }\n return SVGWidget.prototype.data.call(this)[0];\n } else {\n SVGWidget.prototype.data.call(this, [this.allowRange() ? _ : [_, _]]);\n }\n return retVal;\n};\n","import { Input } from \"./Input.ts\";\n\nexport class TextArea extends Input {\n constructor() {\n super();\n\n this._tag = \"div\";\n this.type(\"textarea\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n calcHeight() {\n return Math.max(this.minHeight_exists() ? this.minHeight() : 0, this.height());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._inputElement[0]\n .attr(\"rows\", this.rows())\n .attr(\"cols\", this.cols())\n .attr(\"wrap\", this.wrap())\n .attr(\"spellcheck\", this.spellcheck())\n .style(\"height\", this.calcHeight() + \"px\")\n ;\n }\n\n}\nTextArea.prototype._class += \" form_TextArea\";\n\nexport interface TextArea {\n rows(): number;\n rows(_: number): this;\n rows_exists(): boolean;\n cols(): number;\n cols(_: number): this;\n cols_exists(): boolean;\n wrap(): string;\n wrap(_: string): this;\n wrap_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n spellcheck(): boolean;\n spellcheck(_: boolean): this;\n spellcheck_exists(): boolean;\n}\n\nTextArea.prototype.publish(\"rows\", null, \"number\", \"Rows\", null, { optional: true });\nTextArea.prototype.publish(\"cols\", null, \"number\", \"Columns\", null, { optional: true });\nTextArea.prototype.publish(\"wrap\", \"off\", \"set\", \"Wrap\", [\"off\", \"on\"]);\nTextArea.prototype.publish(\"minHeight\", null, \"number\", \"Minimum Height\", null, { optional: true });\nTextArea.prototype.publish(\"spellcheck\", null, \"boolean\", \"Input spell checking\", { optional: true });\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.umd.cjs","names":[],"sources":["../src/__package__.ts","../src/Button.ts","../src/CheckBox.ts","../src/ColorInput.ts","../src/Form.ts","../src/Input.ts","../src/FieldForm.ts","../src/InputRange.ts","../src/OnOff.ts","../src/Radio.ts","../src/Range.ts","../src/Select.ts","../src/Slider.ts","../src/TextArea.ts"],"sourcesContent":["export const PKG_NAME = \"@hpcc-js/form\";\nexport const PKG_VERSION = \"3.5.6\";\nexport const BUILD_VERSION = \"3.29.1\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Button extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n this._inputElement[0] = element.append(\"button\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].text(this.value());\n }\n}\nButton.prototype._class += \" form_Button\";\nButton.prototype.implements(IInput.prototype);\n\nexport interface Button {\n name(): string;\n name(_: string): Button;\n label(): string;\n label(_: string): Button;\n value(): any;\n value(_: any): Button;\n validate(): string;\n validate(_: string): Button;\n}\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class CheckBox extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n const context = this;\n\n const checkboxContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = checkboxContainer.append(\"li\").append(\"input\").attr(\"type\", \"checkbox\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nCheckBox.prototype._class += \" form_CheckBox\";\nCheckBox.prototype.implements(IInput.prototype);\n\nexport interface CheckBox {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nCheckBox.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class ColorInput extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"text\");\n this._inputElement[0].classed(\"color-text\", true);\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"color\");\n\n this._inputElement.forEach(function (e, idx) {\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n this._inputElement.forEach(function (e) {\n e.attr(\"name\", context.name());\n });\n\n this._inputElement[0].attr(\"type\", \"text\");\n this._inputElement[1].attr(\"type\", \"color\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[1].property(\"value\", d3Rgb(this.value()).toString());\n\n const bbox = this._inputElement[0].node().getBoundingClientRect();\n this._inputElement[1].style(\"height\", (bbox.height - 2) + \"px\");\n\n }\n}\nColorInput.prototype._class += \" form_ColorInput\";\nColorInput.prototype.implements(IInput.prototype);\n\nexport interface ColorInput {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n}\n","import { d3Event, HTMLWidget, select as d3Select, SVGWidget, Widget, WidgetArray } from \"@hpcc-js/common\";\nimport { Button } from \"./Button.ts\";\n\nimport \"../src/Form.css\";\n\nexport class Form extends HTMLWidget {\n tbody;\n tfoot;\n btntd;\n _controls;\n _maxCols;\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) {\n const retVal = [];\n this.inputsForEach(function (input) {\n retVal.push(input.value());\n });\n return retVal;\n } else {\n this.inputsForEach(function (input, idx) {\n if (_ && _.length > idx) {\n input.value(_[idx]).render();\n }\n });\n }\n return this;\n }\n\n inputsForEach(callback, scope?) {\n let idx = 0;\n this.inputs().forEach(function (inp) {\n const inpArray = inp instanceof WidgetArray ? inp.content() : [inp];\n inpArray.forEach(function (inp2) {\n if (scope) {\n callback.call(scope, inp2, idx++);\n } else {\n callback(inp2, idx++);\n }\n });\n });\n }\n\n inputsMap(): { [name: string]: Widget } {\n const retVal: { [name: string]: Widget } = {};\n this.inputs().forEach(function (inp) {\n retVal[inp.name()] = inp;\n });\n return retVal;\n }\n\n calcMaxColumns() {\n let retVal = 0;\n this.inputs().forEach(function (inputWidget) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n if (inputWidgetArray.length > retVal) {\n retVal = inputWidgetArray.length;\n }\n });\n return retVal;\n }\n\n values(): any;\n values(_: any): this;\n values(_?: any): any | this {\n if (!arguments.length) {\n const dataArr = {};\n this.inputsForEach(function (inp) {\n const type = inp.type ? inp.type() : \"text\";\n const value = inp.value();\n if (value || !this.omitBlank()) {\n switch (type) {\n case \"checkbox\":\n dataArr[inp.name()] = inp.value_exists() ? !!inp.value() : undefined;\n break;\n case \"number\":\n const v = inp.value();\n dataArr[inp.name()] = v === \"\" ? undefined : +v;\n break;\n case \"text\":\n default:\n dataArr[inp.name()] = inp.value_exists() ? inp.value() : undefined;\n break;\n }\n }\n }, this);\n return dataArr;\n } else {\n this.inputsForEach(function (inp) {\n if (_[inp.name()]) {\n inp.value(_[inp.name()]);\n } else if (this.omitBlank()) {\n inp.value(\"\");\n }\n }, this);\n }\n return this;\n }\n\n submit() {\n let isValid = true;\n if (this.validate()) {\n isValid = this.checkValidation();\n }\n if (!this.allowEmptyRequest() && !this.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n })) {\n return;\n }\n this.click(isValid ? this.values() : null, null, isValid);\n }\n\n clear() {\n this.inputsForEach(function (inp) {\n switch (inp.classID()) {\n case \"form_Slider\":\n if (inp.allowRange()) {\n inp.value([inp.low(), inp.low()]).render();\n } else {\n inp.value(inp.low()).render();\n }\n break;\n case \"form_CheckBox\":\n inp.value(false).render();\n break;\n case \"form_Button\":\n /* skip */\n break;\n default:\n inp.value(undefined).render();\n break;\n }\n });\n }\n\n checkValidation() {\n let ret = true;\n const msgArr = [];\n this.inputsForEach(function (inp) {\n if (!inp.isValid()) {\n msgArr.push(\"'\" + inp.label() + \"'\" + \" value is invalid.\");\n }\n });\n if (msgArr.length > 0) {\n alert(msgArr.join(\"\\n\"));\n ret = false;\n }\n return ret;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.on(\"submit\", function () {\n d3Event().preventDefault();\n });\n\n this._placeholderElement.style(\"overflow\", \"auto\");\n const table = element\n .append(\"table\")\n ;\n this.tbody = table.append(\"tbody\");\n this.tfoot = table.append(\"tfoot\");\n this.btntd = this.tfoot.append(\"tr\").append(\"td\")\n .attr(\"colspan\", 2)\n ;\n\n const context = this;\n this._controls = [\n new Button()\n .classed({ default: true })\n .value(\"Submit\")\n .on(\"click\", function () {\n context.submit();\n }, true),\n new Button()\n .value(\"Clear\")\n .on(\"click\", function () {\n context.clear();\n }, true)\n ];\n const rightJust = context.btntd\n .append(\"div\")\n .style(\"float\", \"right\")\n ;\n this._controls.forEach(function (w) {\n const leftJust = rightJust\n .append(\"span\")\n .style(\"float\", \"left\")\n ;\n w.target(leftJust.node()).render();\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._maxCols = this.calcMaxColumns();\n\n const context = this;\n const rows = this.tbody.selectAll(\"tr\").data(this.inputs());\n rows.enter().append(\"tr\")\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.append(\"td\")\n .attr(\"class\", \"prompt\")\n ;\n const input = element2.append(\"td\")\n .attr(\"class\", \"input\")\n ;\n if (idx === inputWidgetArray.length - 1 && inputWidgetArray.length < context._maxCols) {\n input.attr(\"colspan\", (context._maxCols - inputWidgetArray.length + 1) * 2);\n }\n inputWidget2.target(input.node()).render();\n if (inputWidget2 instanceof SVGWidget) {\n const bbox = inputWidget2.element().node().getBBox();\n input.style(\"height\", bbox.height + \"px\");\n inputWidget2.resize().render();\n }\n\n if (inputWidget2._inputElement instanceof Array) {\n inputWidget2._inputElement.forEach(function (e) {\n e.on(\"keyup.form\", function (w) {\n setTimeout(function () {\n\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w2) {\n if (w2._class.indexOf(\"WidgetArray\") !== -1) {\n return w2.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w2.hasValue();\n }));\n }, 100);\n });\n });\n }\n });\n })\n .merge(rows)\n .each(function (inputWidget, i) {\n const element2 = d3Select(this);\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n element2.select(\"td.prompt\")\n .text(inputWidget2.label() + \":\")\n ;\n });\n })\n ;\n rows.each(function (inputWidget, i) {\n if (i === 0 && inputWidget.setFocus) {\n inputWidget.setFocus();\n }\n });\n rows.exit()\n .each(function (inputWidget, i) {\n const inputWidgetArray = inputWidget instanceof WidgetArray ? inputWidget.content() : [inputWidget];\n inputWidgetArray.forEach(function (inputWidget2, idx) {\n inputWidget2.target(null);\n });\n })\n .remove()\n ;\n\n this.tfoot\n .style(\"display\", this.showSubmit() ? \"table-footer-group\" : \"none\")\n ;\n this.btntd\n .attr(\"colspan\", this._maxCols * 2)\n ;\n\n // Disable Submit unless there is data\n if (!this.allowEmptyRequest()) {\n setTimeout(function () {\n context._controls[0].disable(!context.allowEmptyRequest() && !context.inputs().some(function (w) {\n if (w._class.indexOf(\"WidgetArray\") !== -1) {\n return w.content().some(function (wa) {\n return wa.hasValue();\n });\n }\n return w.hasValue();\n }));\n }, 100);\n }\n\n }\n\n exit(domNode, element) {\n this.inputsForEach(input => input.target(null));\n super.exit(domNode, element);\n }\n\n click(row, col, sel) {\n }\n}\nForm.prototype._class += \" form_Form\";\n\nexport interface Form {\n validate(): boolean;\n validate(_: boolean): this;\n validate_exists(): boolean;\n inputs(): any[];\n inputs(_: any[]): this;\n inputs_exists(): boolean;\n inputs_reset(): void;\n showSubmit(): boolean;\n showSubmit(_: boolean): this;\n showSubmit_exists(): boolean;\n omitBlank(): boolean;\n omitBlank(_: boolean): this;\n omitBlank_exists(): boolean;\n allowEmptyRequest(): boolean;\n allowEmptyRequest(_: boolean): this;\n allowEmptyRequest_exists(): boolean;\n}\n\nForm.prototype.publish(\"validate\", true, \"boolean\", \"Enable/Disable input validation\");\nForm.prototype.publish(\"inputs\", [], \"widgetArray\", \"Array of input widgets\", null, { render: false });\nForm.prototype.publish(\"showSubmit\", true, \"boolean\", \"Show Submit/Cancel Controls\");\nForm.prototype.publish(\"omitBlank\", false, \"boolean\", \"Drop Blank Fields From Submit\");\nForm.prototype.publish(\"allowEmptyRequest\", false, \"boolean\", \"Allow Blank Form to be Submitted\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { Database, HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Input extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n checked(_) {\n if (!arguments.length) return this._inputElement[0] ? this._inputElement[0].property(\"checked\") : false;\n if (this._inputElement[0]) {\n this._inputElement[0].property(\"checked\", _);\n }\n return this;\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n const context = this;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0] = element.append(\"button\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n case \"textarea\":\n this._inputElement[0] = element.append(\"textarea\")\n .attr(\"id\", this.id() + \"_input\")\n ;\n break;\n default:\n this._inputElement[0] = element.append(\"input\")\n .attr(\"id\", this.id() + \"_input\")\n .attr(\"type\", this.type())\n ;\n break;\n }\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w: Input) {\n w.click(w);\n });\n e.on(\"blur\", function (w: Input) {\n w.blur(w);\n });\n e.on(\"change\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n e.on(\"keyup\", function (w: Input) {\n context.value([e.property(\"value\")]);\n w.change(w, false);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n switch (this.type()) {\n case \"button\":\n this._inputElement[0].text(this.value());\n break;\n case \"textarea\":\n this._inputElement[0].property(\"value\", this.value());\n break;\n default:\n this._inputElement[0].attr(\"type\", this.type());\n this._inputElement[0].property(\"value\", this.value());\n break;\n }\n }\n\n // IInput Events ---\n blur(w: Input) {\n }\n keyup(w: Input) {\n }\n focus(w: Input) {\n }\n click(w: Input) {\n }\n dblclick(w: Input) {\n }\n change(w: Input, complete: boolean) {\n }\n}\nInput.prototype._class += \" form_Input\";\nInput.prototype.implements(IInput.prototype);\n\nexport interface Input {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\";\n type(_: Database.FieldType | \"button\" | \"checkbox\" | \"text\" | \"textarea\" | \"search\" | \"email\" | \"datetime\"): this;\n type_exists(): boolean;\n type_default(): string;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInput.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"string\", \"number\", \"boolean\", \"date\", \"time\", \"hidden\", \"nested\", \"button\", \"checkbox\", \"text\", \"textarea\", \"search\", \"email\", \"datetime\"]);\nInput.prototype.publish(\"inlineLabel\", null, \"string\", \"Input Label\", null, { optional: true });\n","import { Database } from \"@hpcc-js/common\";\nimport { Form } from \"./Form.ts\";\nimport { Input } from \"./Input.ts\";\n\nimport \"../src/Form.css\";\n\nexport class FieldForm extends Form {\n\n constructor() {\n super();\n\n this._tag = \"form\";\n }\n\n fields(): Database.Field[];\n fields(_: Database.Field[]): this;\n fields(_?: Database.Field[]): Database.Field[] | this {\n const retVal = super.fields.apply(this, arguments);\n if (arguments.length) {\n const inpMap = this.inputsMap();\n this.inputs(_.map(f => inpMap[f.id()] || new Input()\n .name(f.id())\n .label(f.label())\n .type(f.type())\n ));\n }\n return retVal;\n }\n\n data(): any;\n data(_: any): this;\n data(_?: any): any | this {\n if (!arguments.length) return super.data();\n super.data(_[0]);\n if (_[0]) {\n // Update input \"name\" with the __lparam ids ---\n const inputs = this.inputs();\n const __lparam = _[0][this.columns().length];\n let i = 0;\n for (const key in __lparam) {\n inputs[i].name(key);\n ++i;\n }\n }\n return this;\n }\n\n}\nFieldForm.prototype._class += \" form_FieldForm\";\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class InputRange extends HTMLWidget {\n _inputElement = [];\n _labelElement = [];\n _rangeData = [];\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n this._labelElement[0] = element.append(\"label\")\n .attr(\"for\", this.id() + \"_input\")\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n ;\n\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_min\")\n .attr(\"type\", this.type()));\n this._inputElement.push(element.append(\"input\")\n .attr(\"id\", this.id() + \"_input_max\")\n .attr(\"type\", this.type()));\n\n const context = this;\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context._rangeData[idx] = e.property(\"value\");\n context.value(context._rangeData);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._labelElement[0]\n .style(\"visibility\", this.inlineLabel_exists() ? \"visible\" : \"hidden\")\n .text(this.inlineLabel())\n ;\n\n this._rangeData = this.value();\n this._inputElement.forEach(function (e, idx) {\n e\n .attr(\"type\", this.type())\n .property(\"value\", this._rangeData.length > idx ? this._rangeData[idx] : \"\");\n }, this);\n }\n}\nInputRange.prototype._class += \" form_InputRange\";\nInputRange.prototype.implements(IInput.prototype);\n\nexport interface InputRange {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any[];\n value(_: any[]): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n inlineLabel(): string;\n inlineLabel(_: string): this;\n inlineLabel_exists(): boolean;\n}\n\nInputRange.prototype.publish(\"type\", \"text\", \"set\", \"InputRange type\", [\"number\", \"date\", \"text\", \"time\", \"datetime\", \"hidden\"]);\nInputRange.prototype.publish(\"inlineLabel\", null, \"string\", \"InputRange Label\", null, { optional: true });\nInputRange.prototype.publish(\"value\", [\"\", \"\"], \"array\", \"Input Current Value\", null, { override: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/OnOff.css\";\n\nexport class OnOff extends HTMLWidget {\n _inputElement = [];\n _input;\n\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n element.classed(\"onoffswitch\", true);\n const context = this;\n this._input = element.append(\"input\")\n .attr(\"class\", \"onoffswitch-checkbox\")\n .attr(\"type\", \"checkbox\")\n .attr(\"id\", this.id() + \"_onOff\")\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n const vals = [];\n context._inputElement.forEach(function (d, idx) {\n if (d.property(\"checked\")) {\n vals.push(d.property(\"value\"));\n }\n });\n context.value(vals);\n w.change(w, true);\n })\n ;\n const label = element.append(\"label\")\n .attr(\"class\", \"onoffswitch-label\")\n .attr(\"for\", this.id() + \"_onOff\")\n ;\n const inner = label.append(\"div\")\n .attr(\"class\", \"onoffswitch-inner\")\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-offText\")\n .style(\"padding-right\", (this.containerRadius() / 2) + \"px\")\n .text(this.offText())\n ;\n inner.append(\"div\")\n .attr(\"class\", \"onoffswitch-onText\")\n .style(\"padding-left\", (this.containerRadius() / 2) + \"px\")\n .style(\"width\", `calc(100% - ${(this.containerRadius() / 2)}px)`)\n .text(this.onText())\n ;\n label.append(\"div\")\n .attr(\"class\", \"onoffswitch-switch\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._input\n .attr(\"name\", this.name())\n ;\n element\n .style(\"margin-left\", this.marginLeft() + \"px\")\n .style(\"margin-bottom\", this.marginBottom() + \"px\")\n .style(\"width\", this.minWidth() + \"px\")\n ;\n\n const _switch_size = this.minHeight() - (this.gutter() * 4);\n\n element.select(\".onoffswitch-switch\")\n .style(\"height\", _switch_size + \"px\")\n .style(\"width\", _switch_size + \"px\")\n .style(\"top\", (this.gutter() * 2) + 1 + \"px\")\n .style(\"border-radius\", this.switchRadius() + \"px\")\n ;\n element.select(\".onoffswitch-inner\")\n .style(\"min-height\", this.minHeight() + \"px\")\n ;\n element.select(\".onoffswitch-label\")\n .style(\"border-radius\", this.containerRadius() + \"px\")\n ;\n element.select(\".onoffswitch-offText\")\n .style(\"color\", this.offFontColor())\n .style(\"background-color\", this.offColor())\n ;\n element.select(\".onoffswitch-onText\")\n .style(\"color\", this.onFontColor())\n .style(\"background-color\", this.onColor())\n ;\n }\n}\nOnOff.prototype._class += \" form_OnOff\";\nexport interface OnOff {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n marginLeft(): number;\n marginLeft(_: number): this;\n marginBottom(): number;\n marginBottom(_: number): this;\n minWidth(): number;\n minWidth(_: number): this;\n minHeight(): number;\n minHeight(_: number): this;\n gutter(): number;\n gutter(_: number): this;\n offText(): string;\n offText(_: string): this;\n onText(): string;\n onText(_: string): this;\n switchRadius(): number;\n switchRadius(_: number): this;\n containerRadius(): number;\n containerRadius(_: number): this;\n offColor(): string;\n offColor(_: string): this;\n onColor(): string;\n onColor(_: string): this;\n offFontColor(): string;\n offFontColor(_: string): this;\n onFontColor(): string;\n onFontColor(_: string): this;\n\n}\nOnOff.prototype.implements(IInput.prototype);\n\nOnOff.prototype.publish(\"marginLeft\", 0, \"number\", \"Margin left of OnOff\");\nOnOff.prototype.publish(\"marginBottom\", 0, \"number\", \"Margin bottom of OnOff\");\nOnOff.prototype.publish(\"minWidth\", 100, \"number\", \"Minimum width of OnOff (pixels)\");\nOnOff.prototype.publish(\"minHeight\", 20, \"number\", \"Minimum height of OnOff (pixels)\");\nOnOff.prototype.publish(\"gutter\", 1, \"number\", \"Space between switch and border of OnOff (pixels)\");\nOnOff.prototype.publish(\"onText\", \"Save\", \"string\", \"Text to display when 'ON'\");\nOnOff.prototype.publish(\"offText\", \"Properties\", \"string\", \"Text to display when 'OFF'\");\nOnOff.prototype.publish(\"switchRadius\", 10, \"number\", \"Border radius of switch (pixels)\");\nOnOff.prototype.publish(\"containerRadius\", 10, \"number\", \"Border radius of OnOff (pixels)\");\nOnOff.prototype.publish(\"onColor\", \"#2ecc71\", \"html-color\", \"Background color when 'ON'\");\nOnOff.prototype.publish(\"offColor\", \"#ecf0f1\", \"html-color\", \"Background color when 'OFF'\");\nOnOff.prototype.publish(\"onFontColor\", \"#2c3e50\", \"html-color\", \"Font color when 'ON'\");\nOnOff.prototype.publish(\"offFontColor\", \"#7f8c8d\", \"html-color\", \"Font color when 'OFF'\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Radio extends HTMLWidget {\n _inputElement = [];\n constructor() {\n super();\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n const radioContainer = element.append(\"ul\");\n if (!this.selectOptions().length) {\n this.selectOptions().push(\"\"); // create an empty radio if we using .value and not selectOptions array\n }\n this.selectOptions().forEach(function (val, idx) {\n context._inputElement[idx] = radioContainer.append(\"li\").append(\"input\").attr(\"type\", \"radio\");\n context._inputElement[idx].node().insertAdjacentHTML(\"afterend\", \"<text>\" + val + \"</text>\");\n });\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n context.value([e.property(\"value\")]);\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n const context = this;\n\n this._inputElement.forEach(function (e, idx) {\n e.property(\"value\", context.selectOptions()[idx]);\n if (context.value().indexOf(context.selectOptions()[idx]) !== -1 && context.value() !== \"false\") {\n e.property(\"checked\", true);\n } else {\n e.property(\"checked\", false);\n }\n });\n }\n}\nRadio.prototype._class += \" form_Radio\";\nRadio.prototype.implements(IInput.prototype);\n\nexport interface Radio {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n}\n\nRadio.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\nimport { rgb as d3Rgb } from \"d3-color\";\n\nimport \"../src/Input.css\";\n\nexport class Range extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"input\").attr(\"type\", \"range\");\n this._inputElement[1] = element.append(\"input\").attr(\"type\", \"number\");\n\n this._inputElement.forEach(function (e, idx) {\n e.attr(\"name\", context.name());\n e.on(\"click\", function (w) {\n w.click(w);\n });\n e.on(\"blur\", function (w) {\n w.blur(w);\n });\n e.on(\"change\", function (w) {\n if (idx === 0) {\n context._inputElement[1].property(\"value\", d3Rgb(context._inputElement[0].property(\"value\")).toString());\n context.value(context._inputElement[0].property(\"value\"));\n } else {\n context._inputElement[0].property(\"value\", context._inputElement[1].property(\"value\"));\n context.value(d3Rgb(context._inputElement[1].property(\"value\")).toString());\n }\n w.change(w, true);\n });\n });\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this._inputElement[0].attr(\"type\", \"range\");\n this._inputElement[0].property(\"value\", this.value());\n this._inputElement[0].attr(\"min\", this.low());\n this._inputElement[0].attr(\"max\", this.high());\n this._inputElement[0].attr(\"step\", this.step());\n this._inputElement[1].attr(\"type\", \"number\");\n this._inputElement[1].property(\"value\", this.value());\n this._inputElement[1].attr(\"min\", this.low());\n this._inputElement[1].attr(\"max\", this.high());\n this._inputElement[1].attr(\"step\", this.step());\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nRange.prototype._class += \" form_Range\";\nRange.prototype.implements(IInput.prototype);\n\nexport interface Range {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n type(): string;\n type(_: string): this;\n type_exists(): boolean;\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n low(): number;\n low(_: number): this;\n low_exists(): boolean;\n high(): number;\n high(_: number): this;\n high_exists(): boolean;\n step(): number;\n step(_: number): this;\n step_exists(): boolean;\n}\n\nRange.prototype.publish(\"type\", \"text\", \"set\", \"Input type\", [\"html-color\", \"number\", \"checkbox\", \"button\", \"select\", \"textarea\", \"date\", \"text\", \"range\", \"search\", \"email\", \"time\", \"datetime\"]);\nRange.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nRange.prototype.publish(\"low\", null, \"number\", \"Minimum value for Range input\");\nRange.prototype.publish(\"high\", null, \"number\", \"Maximum value for Range input\");\nRange.prototype.publish(\"step\", null, \"number\", \"Step value for Range input\");\n","import { IInput } from \"@hpcc-js/api\";\nimport { HTMLWidget } from \"@hpcc-js/common\";\n\nimport \"../src/Input.css\";\n\nexport class Select extends HTMLWidget {\n _inputElement = [];\n\n constructor() {\n super();\n\n IInput.call(this);\n\n this._tag = \"div\";\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n\n const context = this;\n\n this._inputElement[0] = element.append(\"select\")\n .attr(\"name\", this.name())\n .on(\"click\", function (w) {\n w.click(w);\n })\n .on(\"blur\", function (w) {\n w.blur(w);\n })\n .on(\"change\", function (w) {\n context.value([context._inputElement[0].property(\"value\")]);\n w.change(w, true);\n })\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n\n this.insertSelectOptions(this.selectOptions());\n this._inputElement[0]\n .property(\"value\", this.value())\n .style(\"max-width\", this.maxWidth_exists() ? this.maxWidth() + \"px\" : null)\n ;\n }\n\n insertSelectOptions(optionsArr) {\n let optionHTML = \"\";\n if (optionsArr.length > 0) {\n optionsArr.forEach(function (opt) {\n const val = (opt instanceof Array ? opt[0] : opt);\n const text = (opt instanceof Array ? (opt[1] ? opt[1] : opt[0]) : opt);\n optionHTML += \"<option value='\" + val + \"'>\" + text + \"</option>\";\n });\n } else {\n optionHTML += \"<option>selectOptions not set</option>\";\n }\n this._inputElement[0].html(optionHTML);\n }\n}\nSelect.prototype._class += \" form_Select\";\nSelect.prototype.implements(IInput.prototype);\n\nexport interface Select {\n // IInput ---\n name(): string;\n name(_: string): this;\n name_exists(): boolean;\n label(): string;\n label(_: string): this;\n label_exists(): boolean;\n value(): any;\n value(_: any): this;\n value_exists(): boolean;\n validate(): string;\n validate(_: string): this;\n validate_exists(): boolean;\n\n // Properties ---\n selectOptions(): any[];\n selectOptions(_: any[]): this;\n selectOptions_exists(): boolean;\n maxWidth(): number;\n maxWidth(_: number): this;\n maxWidth_exists(): boolean;\n}\n\nSelect.prototype.publish(\"selectOptions\", [], \"array\", \"Array of options used to fill a dropdown list\");\nSelect.prototype.publish(\"maxWidth\", 120, \"number\", \"Width\", null, { optional: true });\n","import { IInput } from \"@hpcc-js/api\";\nimport { d3Event, select as d3Select, SVGWidget } from \"@hpcc-js/common\";\nimport { drag as d3Drag } from \"d3-drag\";\nimport { format as d3Format } from \"d3-format\";\nimport { scaleLinear as d3ScaleLinear } from \"d3-scale\";\nimport { timeFormat as d3TimeFormat, timeParse as d3TimeParse } from \"d3-time-format\";\n\nimport \"../src/Slider.css\";\n\nexport class Slider extends SVGWidget {\n xScale;\n\n moveMode: \"both\" | \"left\" | \"right\";\n moveStartPos: number;\n\n prevValue;\n\n slider;\n\n handleLeft;\n handleLeftPos: number = 0;\n handleLeftStartPos: number;\n\n handleRight;\n handleRightPos: number = 0;\n handleRightStartPos: number;\n\n constructor() {\n super();\n IInput.call(this);\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n this.resize({ width: this.width(), height: 50 });\n\n this.xScale = d3ScaleLinear()\n .clamp(true);\n\n this.slider = element.append(\"g\")\n .attr(\"class\", \"slider\")\n ;\n if (this.low() === null && this.high() === null) {\n if (this.lowDatetime() !== null && this.highDatetime() !== null) {\n const time_parser = d3TimeParse(this.timePattern() ? this.timePattern() : \"%Q\");\n this.low(time_parser(this.lowDatetime()).getTime());\n this.high(time_parser(this.highDatetime()).getTime());\n }\n }\n this.slider.append(\"line\")\n .attr(\"class\", \"track\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-inset\")\n .select(function () { return this.parentNode.appendChild(this.cloneNode(true)); })\n .attr(\"class\", \"track-overlay\")\n .call(d3Drag()\n .on(\"start\", () => {\n const event = d3Event();\n this.moveStartPos = event.x;\n this.handleLeftStartPos = this.handleLeftPos;\n this.handleRightStartPos = this.handleRightPos;\n if (this.allowRange() && this.handleLeftPos <= event.x && event.x <= this.handleRightPos) {\n this.moveMode = \"both\";\n } else if (Math.abs(event.x - this.handleLeftPos) < Math.abs(event.x - this.handleRightPos)) {\n this.moveMode = \"left\";\n } else {\n this.moveMode = \"right\";\n }\n this.moveHandleTo(event.x);\n })\n .on(\"drag\", () => {\n this.moveHandleTo(d3Event().x);\n })\n .on(\"end\", () => {\n this.moveHandleTo(d3Event().x);\n this.data([[this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)]]);\n this.checkChangedValue();\n }));\n\n this.slider.insert(\"g\", \".track-overlay\")\n .attr(\"class\", \"ticks\")\n .attr(\"transform\", `translate(0, ${this.fontSize() + (this.tickHeight() / 2)})`)\n ;\n\n this.handleRight = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n\n this.handleLeft = this.slider.insert(\"path\", \".track-overlay\")\n .attr(\"class\", \"handle\")\n ;\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n const context = this;\n this.xScale\n .domain([this.low(), this.high()])\n .range([0, this.width() - this.padding() * 2])\n ;\n\n this.slider\n .attr(\"transform\", \"translate(\" + (-this.width() / 2 + this.padding()) + \",\" + 0 + \")\");\n\n this.slider.selectAll(\"line.track,line.track-inset,line.track-overlay\")\n .attr(\"x1\", this.xScale.range()[0])\n .attr(\"x2\", this.xScale.range()[1])\n ;\n\n const x_distance = (this.width() - (this.padding() * 2)) / (this.tickCount() - 1);\n\n const tick_text_arr = [];\n if (this.tickDateFormat() !== null && this.timePattern() !== null) {\n const Q_parser = d3TimeParse(\"%Q\");\n const time_formatter = d3TimeFormat(this.tickDateFormat());\n const time_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const date_to_parse = \"\" + (this.low() + (time_segment * i));\n const parsed_date = Q_parser(date_to_parse);\n tick_text_arr.push(time_formatter(parsed_date));\n }\n } else {\n const value_formatter = d3Format(this.tickValueFormat());\n const value_segment = (this.high() - this.low()) / (this.tickCount() - 1);\n for (let i = 0; i < this.tickCount(); i++) {\n const tick_value = this.low() + (value_segment * i);\n tick_text_arr.push(value_formatter(tick_value));\n }\n }\n const tickText = this.slider.selectAll(\"g.tick\").data(tick_text_arr);\n const tickTextEnter = tickText.enter().append(\"g\").attr(\"class\", \"tick\");\n\n tickTextEnter.append(\"text\").attr(\"class\", \"tick-text\");\n tickTextEnter.append(\"line\").attr(\"class\", \"tick-line\");\n tickTextEnter\n .merge(tickText)\n .each(function (d, i) {\n const x = x_distance * i;\n\n d3Select(this).select(\"text.tick-text\")\n .style(\"font-size\", context.fontSize())\n .attr(\"x\", function () {\n if (i === 0) return x - 2;\n return i === context.tickCount() - 1 ? x + 2 : x;\n })\n .attr(\"y\", context.tickHeight() + (context.tickOffset() / 2) + context.fontSize())\n .attr(\"text-basline\", \"text-before-edge\")\n .attr(\"text-anchor\", function () {\n if (i === 0) return \"start\";\n return i === context.tickCount() - 1 ? \"end\" : \"middle\";\n })\n .text(() => d)\n ;\n\n d3Select(this).select(\"line.tick-line\")\n .attr(\"x1\", x)\n .attr(\"x2\", x)\n .attr(\"y1\", context.tickOffset() - 1)\n .attr(\"y2\", context.tickOffset() + context.tickHeight())\n .style(\"stroke\", \"#000\")\n .style(\"stroke-width\", 1)\n ;\n });\n this.slider.node().appendChild(this.handleRight.node());\n this.slider.node().appendChild(this.handleLeft.node());\n this.handleLeftPos = this.lowPos();\n this.handleRightPos = this.highPos();\n this.updateHandles();\n this.checkChangedValue();\n }\n\n checkChangedValue() {\n if (this.prevValue !== this.value() && typeof this.prevValue !== \"undefined\") {\n this.change(this);\n }\n this.prevValue = this.value();\n }\n\n updateHandles() {\n this.handleLeft\n .attr(\"transform\", `translate(${this.handleLeftPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"l\"))\n ;\n this.handleRight\n .attr(\"transform\", `translate(${this.handleRightPos}, -28)`)\n .attr(\"d\", (d) => this.handlePath(\"r\"))\n ;\n }\n\n lowPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][0]);\n }\n\n highPos(): number {\n let data = [[this.low(), this.high()]];\n if (this.data().length > 0 && typeof this.data()[0][0] === \"number\" && typeof this.data()[0][1] === \"number\") {\n data = this.data();\n }\n return this.xScale(data[0][this.allowRange() ? 1 : 0]);\n }\n\n moveHandleTo(pos) {\n if (this.allowRange()) {\n switch (this.moveMode) {\n case \"both\":\n this.handleLeftPos = this.handleLeftStartPos + pos - this.moveStartPos;\n this.handleRightPos = this.handleRightStartPos + pos - this.moveStartPos;\n break;\n case \"left\":\n this.handleLeftPos = pos;\n if (this.handleLeftPos > this.handleRightPos) {\n this.handleRightPos = this.handleLeftPos;\n }\n break;\n case \"right\":\n this.handleRightPos = pos;\n if (this.handleRightPos < this.handleLeftPos) {\n this.handleLeftPos = this.handleRightPos;\n }\n break;\n }\n } else {\n this.handleLeftPos = this.handleRightPos = pos;\n }\n\n this.handleLeftPos = this.constrain(this.handleLeftPos);\n this.handleRightPos = this.constrain(this.handleRightPos);\n this.value(this.allowRange() ? [this.xScale.invert(this.handleLeftPos), this.xScale.invert(this.handleRightPos)] : this.xScale.invert(this.handleLeftPos));\n this.updateHandles();\n }\n\n constrain(pos: number): number {\n const range = this.xScale.range();\n if (pos < range[0]) pos = range[0];\n if (pos > range[1]) pos = range[1];\n return this.nearestStep(pos);\n }\n\n nearestStep(pos) {\n const value = this.xScale.invert(pos);\n return this.xScale(this.low() + Math.round((value - this.low()) / this.step()) * this.step());\n }\n\n handlePath = function (d) {\n const e = +(d === \"r\");\n const x = e ? 1 : -1;\n const xOffset = this.allowRange() ? 0.5 : 0.0;\n const y = 18;\n let retVal = \"M\" + (xOffset * x) + \",\" + y +\n \"A6,6 0 0 \" + e + \" \" + (6.5 * x) + \",\" + (y + 6) +\n \"V\" + (2 * y - 6) +\n \"A6,6 0 0 \" + e + \" \" + (xOffset * x) + \",\" + (2 * y)\n ;\n if (this.allowRange()) {\n retVal += \"Z\" +\n \"M\" + (2.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8) +\n \"M\" + (4.5 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n } else {\n retVal += \"M\" + (1 * x) + \",\" + (y + 8) +\n \"V\" + (2 * y - 8)\n ;\n }\n return retVal;\n };\n\n}\nSlider.prototype._class += \" form_Slider\";\nSlider.prototype.implements(IInput.prototype);\n\nexport interface Slider {\n // IInput ---\n name(): string;\n name(_: string): this;\n change(_: Slider): void;\n\n // Properties ---\n padding(): number;\n padding(_: number): this;\n fontSize(): number;\n fontSize(_: number): this;\n fontFamily(): string;\n fontFamily(_: string): this;\n fontColor(): string;\n fontColor(_: string): this;\n allowRange(): boolean;\n allowRange(_: boolean): this;\n low(): number;\n low(_: number): this;\n high(): number;\n high(_: number): this;\n step(): number;\n step(_: number): this;\n lowDatetime(): string;\n lowDatetime(_: string): this;\n highDatetime(): string;\n highDatetime(_: string): this;\n stepDatetime(): number;\n stepDatetime(_: number): this;\n selectionLabel(): string;\n selectionLabel(_: string): this;\n label(): string;\n label(_: string): this;\n value(): any;\n value(_: any): this;\n validate(): string;\n validate(_: string): this;\n tickCount(): number;\n tickCount(_: number): this;\n tickOffset(): number;\n tickOffset(_: number): this;\n tickHeight(): number;\n tickHeight(_: number): this;\n tickDateFormat(): string;\n tickDateFormat(_: string): this;\n tickValueFormat(): string;\n tickValueFormat(_: string): this;\n timePattern(): string;\n timePattern(_: string): this;\n\n padding_exists(): boolean;\n fontSize_exists(): boolean;\n fontFamily_exists(): boolean;\n fontColor_exists(): boolean;\n allowRange_exists(): boolean;\n low_exists(): boolean;\n step_exists(): boolean;\n high_exists(): boolean;\n selectionLabel_exists(): boolean;\n name_exists(): boolean;\n label_exists(): boolean;\n value_exists(): boolean;\n validate_exists(): boolean;\n}\n\nSlider.prototype.publish(\"padding\", 16, \"number\", \"Outer Padding\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontSize\", 12, \"number\", \"Font Size\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontFamily\", null, \"string\", \"Font Name\", null, { tags: [\"Basic\"] });\nSlider.prototype.publish(\"fontColor\", null, \"html-color\", \"Font Color\", null, { tags: [\"Basic\"] });\n\nSlider.prototype.publish(\"allowRange\", false, \"boolean\", \"Allow Range Selection\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"low\", null, \"number\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"high\", null, \"number\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"step\", 10, \"number\", \"Step\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"lowDatetime\", null, \"string\", \"Low\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"highDatetime\", null, \"string\", \"High\", null, { tags: [\"Intermediate\"] });\nSlider.prototype.publish(\"selectionLabel\", \"\", \"string\", \"Selection Label\", null, { tags: [\"Intermediate\"] });\n\nSlider.prototype.publish(\"timePattern\", \"%Y-%m-%d\", \"string\");\n\nSlider.prototype.publish(\"tickCount\", 10, \"number\");\nSlider.prototype.publish(\"tickOffset\", 5, \"number\");\nSlider.prototype.publish(\"tickHeight\", 8, \"number\");\nSlider.prototype.publish(\"tickDateFormat\", null, \"string\");\nSlider.prototype.publish(\"tickValueFormat\", \",.0f\", \"string\");\n\nconst name = Slider.prototype.name;\nSlider.prototype.name = function (_?: any): any {\n const retVal = name.apply(this, arguments);\n if (arguments.length) {\n const val = _ instanceof Array ? _ : [_];\n SVGWidget.prototype.columns.call(this, val);\n }\n return retVal;\n};\n\nconst value = Slider.prototype.value;\nSlider.prototype.value = function (_?: any): any {\n const retVal = value.apply(this, arguments);\n if (!arguments.length) {\n if (!this.allowRange()) {\n return SVGWidget.prototype.data.call(this)[0][0];\n }\n return SVGWidget.prototype.data.call(this)[0];\n } else {\n SVGWidget.prototype.data.call(this, [this.allowRange() ? _ : [_, _]]);\n }\n return retVal;\n};\n","import { Input } from \"./Input.ts\";\n\nexport class TextArea extends Input {\n constructor() {\n super();\n\n this._tag = \"div\";\n this.type(\"textarea\");\n }\n\n enter(domNode, element) {\n super.enter(domNode, element);\n }\n\n calcHeight() {\n return Math.max(this.minHeight_exists() ? this.minHeight() : 0, this.height());\n }\n\n update(domNode, element) {\n super.update(domNode, element);\n this._inputElement[0]\n .attr(\"rows\", this.rows())\n .attr(\"cols\", this.cols())\n .attr(\"wrap\", this.wrap())\n .attr(\"spellcheck\", this.spellcheck())\n .style(\"height\", this.calcHeight() + \"px\")\n ;\n }\n\n}\nTextArea.prototype._class += \" form_TextArea\";\n\nexport interface TextArea {\n rows(): number;\n rows(_: number): this;\n rows_exists(): boolean;\n cols(): number;\n cols(_: number): this;\n cols_exists(): boolean;\n wrap(): string;\n wrap(_: string): this;\n wrap_exists(): boolean;\n minHeight(): number;\n minHeight(_: number): this;\n minHeight_exists(): boolean;\n spellcheck(): boolean;\n spellcheck(_: boolean): this;\n spellcheck_exists(): boolean;\n}\n\nTextArea.prototype.publish(\"rows\", null, \"number\", \"Rows\", null, { optional: true });\nTextArea.prototype.publish(\"cols\", null, \"number\", \"Columns\", null, { optional: true });\nTextArea.prototype.publish(\"wrap\", \"off\", \"set\", \"Wrap\", [\"off\", \"on\"]);\nTextArea.prototype.publish(\"minHeight\", null, \"number\", \"Minimum Height\", null, { optional: true });\nTextArea.prototype.publish(\"spellcheck\", null, \"boolean\", \"Input spell checking\", { optional: true });\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hpcc-js/form",
|
|
3
|
-
"version": "3.5.
|
|
3
|
+
"version": "3.5.6",
|
|
4
4
|
"description": "hpcc-js - Viz Form",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.umd.cjs",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"bundle": "vite build",
|
|
26
26
|
"bundle-watch": "vite build --watch",
|
|
27
27
|
"bundle-serve": "vite --port 5508",
|
|
28
|
-
"gen-types": "
|
|
28
|
+
"gen-types": "tsc --project tsconfig.json",
|
|
29
29
|
"gen-types-watch": "npm run gen-types -- --watch",
|
|
30
30
|
"build": "run-p gen-types bundle",
|
|
31
31
|
"watch": "run-p gen-types-watch bundle-watch",
|
|
@@ -39,12 +39,12 @@
|
|
|
39
39
|
"update-major": "npx --yes npm-check-updates -u"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@hpcc-js/api": "^3.5.
|
|
43
|
-
"@hpcc-js/chart": "^3.8.
|
|
44
|
-
"@hpcc-js/common": "^3.
|
|
42
|
+
"@hpcc-js/api": "^3.5.6",
|
|
43
|
+
"@hpcc-js/chart": "^3.8.6",
|
|
44
|
+
"@hpcc-js/common": "^3.9.1"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@hpcc-js/esbuild-plugins": "^1.9.
|
|
47
|
+
"@hpcc-js/esbuild-plugins": "^1.9.6",
|
|
48
48
|
"d3-brush": "^1",
|
|
49
49
|
"d3-color": "3.1.0",
|
|
50
50
|
"d3-drag": "^1",
|
|
@@ -62,5 +62,5 @@
|
|
|
62
62
|
"url": "https://github.com/hpcc-systems/Visualization/issues"
|
|
63
63
|
},
|
|
64
64
|
"homepage": "https://github.com/hpcc-systems/Visualization",
|
|
65
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "0128487e97c3ca56f55697c40c340de2c5c61ff2"
|
|
66
66
|
}
|