import { Class, Database, HTMLWidget, SVGWidget, WidgetArray } from "@hpcc-js/common"; import * as form from "@hpcc-js/form"; // tslint:disable-next-line: no-duplicate-imports import { Button, CheckBox, ColorInput, FieldForm, Form, Input, InputRange, OnOff, Radio, Range, Select, Slider, TextArea } from "@hpcc-js/form"; import { expect } from "chai"; import { classDef, data, render } from "../../test-data/src/index"; const urlSearch: string = window.location.href.split("?")[1]; describe("@hpcc-js/form", () => { for (const key in form) { const item = (form as any)[key]; if (item) { if (!urlSearch || urlSearch === item.prototype.constructor.name) { describe(`${item.prototype.constructor.name}`, () => { if (item.prototype instanceof Class) { classDef("form", item); } if (item.prototype instanceof HTMLWidget || item.prototype instanceof SVGWidget) { switch (item.prototype.constructor) { case Button: render(new Button() .name("button-test") .value("Button Test") ); break; case ColorInput: break; case Radio: break; case CheckBox: break; case FieldForm: render(new FieldForm() .fields([ new Database.Field().id("fname").label("First Name"), new Database.Field().id("lname").label("Last Name"), new Database.Field().id("age").label("Age") ]) .data([["Joe", "Bloggs", 42]]) ); break; case Form: render(new Form() .inputs([ new Input() .name("textbox-test") .label("Alphanumeric") .type("text") .validate("^[A-Za-z0-9]+$") .value("SomeString123"), new InputRange() .name("textbox-range-test") .label("Range") .value(["SomeString001", "SomeString100"]), new Input() .name("number-test") .label("Number Test") .type("number") .validate("\\d+") .value(123), new Select() .name("select-test") .label("Select Test") .selectOptions(["A", "B", "C"]) .value("B"), new WidgetArray() .content([ new Input() .name("textbox-test") .label("Only Alpha") .type("text") .validate("^[A-Za-z]+$") .value("SomeString"), new CheckBox() .name("checkbox-test") .label("Checkbox Test") .value(true), new Radio() .name("radio-test") .label("Radio Test") .value(true), new Button() .name("button-test") .value("Button Test") ]), new TextArea() .minHeight(64) .rows(10) .name("textarea-test") .label("Textarea Test") .value("Textarea Text") , new ColorInput() .name("color-input-test") .label("Color Input Test"), new Slider() .columns(data.Slider.simple.columns) .data(data.Slider.simple.data) ] )); break; case Input: break; case InputRange: break; case OnOff: break; case Range: break; case Select: break; case TextArea: break; case Slider: break; default: it("Has render test", () => { expect(false).to.be.true; }); } } }); } } } });