summaryrefslogtreecommitdiff
path: root/api/pl.treksoft.kvision.form/-form
diff options
context:
space:
mode:
authorRobert Jaros <rjaros@finn.pl>2018-10-22 00:01:39 +0200
committerRobert Jaros <rjaros@finn.pl>2018-10-22 00:01:39 +0200
commiteb930482e9972a21d39f2aea8b813acf58ff5b64 (patch)
tree1c64052b39527aca51793860894baa37791cc94f /api/pl.treksoft.kvision.form/-form
parent7c2850063697f94a0d8b8d8f8588136dd4b3d05e (diff)
downloadkvision-eb930482e9972a21d39f2aea8b813acf58ff5b64.tar.gz
kvision-eb930482e9972a21d39f2aea8b813acf58ff5b64.tar.bz2
kvision-eb930482e9972a21d39f2aea8b813acf58ff5b64.zip
API documentation for KVision 0.0.19
Diffstat (limited to 'api/pl.treksoft.kvision.form/-form')
-rw-r--r--api/pl.treksoft.kvision.form/-form/-init-.html24
-rw-r--r--api/pl.treksoft.kvision.form/-form/add.html102
-rw-r--r--api/pl.treksoft.kvision.form/-form/clear-data.html15
-rw-r--r--api/pl.treksoft.kvision.form/-form/create.html14
-rw-r--r--api/pl.treksoft.kvision.form/-form/get-control.html20
-rw-r--r--api/pl.treksoft.kvision.form/-form/get-data-json.html17
-rw-r--r--api/pl.treksoft.kvision.form/-form/get-data.html17
-rw-r--r--api/pl.treksoft.kvision.form/-form/get.html20
-rw-r--r--api/pl.treksoft.kvision.form/-form/index.html143
-rw-r--r--api/pl.treksoft.kvision.form/-form/remove-all.html17
-rw-r--r--api/pl.treksoft.kvision.form/-form/remove.html20
-rw-r--r--api/pl.treksoft.kvision.form/-form/set-data.html18
-rw-r--r--api/pl.treksoft.kvision.form/-form/validate.html17
13 files changed, 444 insertions, 0 deletions
diff --git a/api/pl.treksoft.kvision.form/-form/-init-.html b/api/pl.treksoft.kvision.form/-form/-init-.html
new file mode 100644
index 00000000..d2e40cfd
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/-init-.html
@@ -0,0 +1,24 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.<init> - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./-init-.html">&lt;init&gt;</a><br/>
+<br/>
+<h1>&lt;init&gt;</h1>
+<a name="pl.treksoft.kvision.form.Form$&lt;init&gt;(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.K)), kotlinx.serialization.KSerializer((pl.treksoft.kvision.form.Form.K)))"></a>
+<code><span class="identifier">Form</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$<init>(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.K)), kotlinx.serialization.KSerializer((pl.treksoft.kvision.form.Form.K)))/panel">panel</span><span class="symbol">:</span>&nbsp;<a href="../-form-panel/index.html"><span class="identifier">FormPanel</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$<init>(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.K)), kotlinx.serialization.KSerializer((pl.treksoft.kvision.form.Form.K)))/serializer">serializer</span><span class="symbol">:</span>&nbsp;<span class="identifier">KSerializer</span><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span><span class="symbol">)</span></code>
+<p>Creates a form with a given modelFactory function</p>
+<h3>Parameters</h3>
+<p><a name="K"></a>
+<code>K</code> - model class type</p>
+<p><a name="panel"></a>
+<code>panel</code> - optional instance of <a href="../-form-panel/index.html">FormPanel</a></p>
+<p><a name="serializer"></a>
+<code>serializer</code> - a serializer for model type</p>
+<p><strong>Constructor</strong><br/>
+Creates a form with a given modelFactory function</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/add.html b/api/pl.treksoft.kvision.form/-form/add.html
new file mode 100644
index 00000000..d1322272
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/add.html
@@ -0,0 +1,102 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.add - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./add.html">add</a><br/>
+<br/>
+<h1>add</h1>
+<a name="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))"></a>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-string-form-control/index.html"><span class="identifier">StringFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a string control to the form.</p>
+<h3>Parameters</h3>
+<p><a name="key"></a>
+<code>key</code> - key identifier of the control</p>
+<p><a name="control"></a>
+<code>control</code> - the string form control</p>
+<p><a name="required"></a>
+<code>required</code> - determines if the control is required</p>
+<p><a name="requiredMessage"></a>
+<code>requiredMessage</code> - optional required validation message</p>
+<p><a name="validatorMessage"></a>
+<code>validatorMessage</code> - optional function returning validation message</p>
+<p><a name="validator"></a>
+<code>validator</code> - optional validation function</p>
+<p><strong>Return</strong><br/>
+current form</p>
+<a name="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))"></a>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-bool-form-control/index.html"><span class="identifier">BoolFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a boolean control to the form.</p>
+<h3>Parameters</h3>
+<p><a name="key"></a>
+<code>key</code> - key identifier of the control</p>
+<p><a name="control"></a>
+<code>control</code> - the boolean form control</p>
+<p><a name="required"></a>
+<code>required</code> - determines if the control is required</p>
+<p><a name="requiredMessage"></a>
+<code>requiredMessage</code> - optional required validation message</p>
+<p><a name="validatorMessage"></a>
+<code>validatorMessage</code> - optional function returning validation message</p>
+<p><a name="validator"></a>
+<code>validator</code> - optional validation function</p>
+<p><strong>Return</strong><br/>
+current form</p>
+<a name="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))"></a>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-number-form-control/index.html"><span class="identifier">NumberFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-number/index.html"><span class="identifier">Number</span></a><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a number control to the form.</p>
+<h3>Parameters</h3>
+<p><a name="key"></a>
+<code>key</code> - key identifier of the control</p>
+<p><a name="control"></a>
+<code>control</code> - the number form control</p>
+<p><a name="required"></a>
+<code>required</code> - determines if the control is required</p>
+<p><a name="requiredMessage"></a>
+<code>requiredMessage</code> - optional required validation message</p>
+<p><a name="validatorMessage"></a>
+<code>validatorMessage</code> - optional function returning validation message</p>
+<p><a name="validator"></a>
+<code>validator</code> - optional validation function</p>
+<p><strong>Return</strong><br/>
+current form</p>
+<a name="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))"></a>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-date-form-control/index.html"><span class="identifier">DateFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-date/index.html"><span class="identifier">Date</span></a><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a date control to the form.</p>
+<h3>Parameters</h3>
+<p><a name="key"></a>
+<code>key</code> - key identifier of the control</p>
+<p><a name="control"></a>
+<code>control</code> - the date form control</p>
+<p><a name="required"></a>
+<code>required</code> - determines if the control is required</p>
+<p><a name="requiredMessage"></a>
+<code>requiredMessage</code> - optional required validation message</p>
+<p><a name="validatorMessage"></a>
+<code>validatorMessage</code> - optional function returning validation message</p>
+<p><a name="validator"></a>
+<code>validator</code> - optional validation function</p>
+<p><strong>Return</strong><br/>
+current form</p>
+<a name="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))"></a>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-k-files-form-control/index.html"><span class="identifier">KFilesFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.types/-k-file/index.html"><span class="identifier">KFile</span></a><span class="symbol">&gt;</span><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a files control to the form.</p>
+<h3>Parameters</h3>
+<p><a name="key"></a>
+<code>key</code> - key identifier of the control</p>
+<p><a name="control"></a>
+<code>control</code> - the files form control</p>
+<p><a name="required"></a>
+<code>required</code> - determines if the control is required</p>
+<p><a name="requiredMessage"></a>
+<code>requiredMessage</code> - optional required validation message</p>
+<p><a name="validatorMessage"></a>
+<code>validatorMessage</code> - optional function returning validation message</p>
+<p><a name="validator"></a>
+<code>validator</code> - optional validation function</p>
+<p><strong>Return</strong><br/>
+current form</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/clear-data.html b/api/pl.treksoft.kvision.form/-form/clear-data.html
new file mode 100644
index 00000000..cc02df05
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/clear-data.html
@@ -0,0 +1,15 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.clearData - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./clear-data.html">clearData</a><br/>
+<br/>
+<h1>clearData</h1>
+<a name="pl.treksoft.kvision.form.Form$clearData()"></a>
+<code><span class="keyword">fun </span><span class="identifier">clearData</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Sets the values of all controls to null.</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/create.html b/api/pl.treksoft.kvision.form/-form/create.html
new file mode 100644
index 00000000..6db5df89
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/create.html
@@ -0,0 +1,14 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.create - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./create.html">create</a><br/>
+<br/>
+<h1>create</h1>
+<a name="pl.treksoft.kvision.form.Form.Companion$create(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Function1((pl.treksoft.kvision.form.Form((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Unit)))"></a>
+<code><span class="keyword">inline</span> <span class="keyword">fun </span><span class="symbol">&lt;</span><span class="keyword">reified</span>&nbsp;<span class="identifier">K</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html"><span class="identifier">Any</span></a><span class="symbol">&gt;</span> <span class="identifier">create</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form.Companion$create(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Function1((pl.treksoft.kvision.form.Form((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Unit)))/panel">panel</span><span class="symbol">:</span>&nbsp;<a href="../-form-panel/index.html"><span class="identifier">FormPanel</span></a><span class="symbol">&lt;</span><a href="create.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="keyword">noinline</span> <span class="identifier" id="pl.treksoft.kvision.form.Form.Companion$create(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Function1((pl.treksoft.kvision.form.Form((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="create.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="create.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/get-control.html b/api/pl.treksoft.kvision.form/-form/get-control.html
new file mode 100644
index 00000000..83ad285f
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/get-control.html
@@ -0,0 +1,20 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.getControl - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./get-control.html">getControl</a><br/>
+<br/>
+<h1>getControl</h1>
+<a name="pl.treksoft.kvision.form.Form$getControl(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Any)))"></a>
+<code><span class="keyword">fun </span><span class="identifier">getControl</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$getControl(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Any)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<span class="identifier">*</span><span class="symbol">&gt;</span><span class="symbol">)</span><span class="symbol">: </span><a href="../-form-control/index.html"><span class="identifier">FormControl</span></a><span class="symbol">?</span></code>
+<p>Returns a control of given key.</p>
+<h3>Parameters</h3>
+<p><a name="key"></a>
+<code>key</code> - key identifier of the control</p>
+<p><strong>Return</strong><br/>
+selected control</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/get-data-json.html b/api/pl.treksoft.kvision.form/-form/get-data-json.html
new file mode 100644
index 00000000..4c327ae8
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/get-data-json.html
@@ -0,0 +1,17 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.getDataJson - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./get-data-json.html">getDataJson</a><br/>
+<br/>
+<h1>getDataJson</h1>
+<a name="pl.treksoft.kvision.form.Form$getDataJson()"></a>
+<code><span class="keyword">fun </span><span class="identifier">getDataJson</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-json/index.html"><span class="identifier">Json</span></a></code>
+<p>Returns current data model as JSON.</p>
+<p><strong>Return</strong><br/>
+data model as JSON</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/get-data.html b/api/pl.treksoft.kvision.form/-form/get-data.html
new file mode 100644
index 00000000..bc3e0f12
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/get-data.html
@@ -0,0 +1,17 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.getData - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./get-data.html">getData</a><br/>
+<br/>
+<h1>getData</h1>
+<a name="pl.treksoft.kvision.form.Form$getData()"></a>
+<code><span class="keyword">fun </span><span class="identifier">getData</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="index.html#K"><span class="identifier">K</span></a></code>
+<p>Returns current data model.</p>
+<p><strong>Return</strong><br/>
+data model</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/get.html b/api/pl.treksoft.kvision.form/-form/get.html
new file mode 100644
index 00000000..e03bdc45
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/get.html
@@ -0,0 +1,20 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.get - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./get.html">get</a><br/>
+<br/>
+<h1>get</h1>
+<a name="pl.treksoft.kvision.form.Form$get(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Any)))"></a>
+<code><span class="keyword">operator</span> <span class="keyword">fun </span><span class="identifier">get</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$get(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Any)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<span class="identifier">*</span><span class="symbol">&gt;</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html"><span class="identifier">Any</span></a><span class="symbol">?</span></code>
+<p>Returns a value of the control of given key.</p>
+<h3>Parameters</h3>
+<p><a name="key"></a>
+<code>key</code> - key identifier of the control</p>
+<p><strong>Return</strong><br/>
+value of the control</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/index.html b/api/pl.treksoft.kvision.form/-form/index.html
new file mode 100644
index 00000000..693f2c30
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/index.html
@@ -0,0 +1,143 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="./index.html">Form</a><br/>
+<br/>
+<h1>Form</h1>
+<code><span class="keyword">class </span><span class="identifier">Form</span><span class="symbol">&lt;</span><span class="identifier">K</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html"><span class="identifier">Any</span></a><span class="symbol">&gt;</span></code>
+<p>The form definition class. Can be used directly or indirectly inside a <a href="../-form-panel/index.html">FormPanel</a>.</p>
+<h3>Constructors</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="-init-.html">&lt;init&gt;</a></p>
+</td>
+<td>
+<code><span class="identifier">Form</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$<init>(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.K)), kotlinx.serialization.KSerializer((pl.treksoft.kvision.form.Form.K)))/panel">panel</span><span class="symbol">:</span>&nbsp;<a href="../-form-panel/index.html"><span class="identifier">FormPanel</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$<init>(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.K)), kotlinx.serialization.KSerializer((pl.treksoft.kvision.form.Form.K)))/serializer">serializer</span><span class="symbol">:</span>&nbsp;<span class="identifier">KSerializer</span><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span><span class="symbol">)</span></code>
+<p>Creates a form with a given modelFactory function</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="add.html">add</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-string-form-control/index.html"><span class="identifier">StringFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.String)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a string control to the form.</p>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-bool-form-control/index.html"><span class="identifier">BoolFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Boolean)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a boolean control to the form.</p>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-number-form-control/index.html"><span class="identifier">NumberFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-number/index.html"><span class="identifier">Number</span></a><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Number)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a number control to the form.</p>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-date-form-control/index.html"><span class="identifier">DateFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-date/index.html"><span class="identifier">Date</span></a><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.js.Date)), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a date control to the form.</p>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">C</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="../-k-files-form-control/index.html"><span class="identifier">KFilesFormControl</span></a><span class="symbol">&gt;</span> <span class="identifier">add</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.collections/-list/index.html"><span class="identifier">List</span></a><span class="symbol">&lt;</span><a href="../../pl.treksoft.kvision.types/-k-file/index.html"><span class="identifier">KFile</span></a><span class="symbol">&gt;</span><span class="symbol">?</span><span class="symbol">&gt;</span><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/control">control</span><span class="symbol">:</span>&nbsp;<a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/required">required</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a>&nbsp;<span class="symbol">=</span>&nbsp;false<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/requiredMessage">requiredMessage</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validatorMessage">validatorMessage</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-string/index.html"><span class="identifier">String</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form$add(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.collections.List((pl.treksoft.kvision.types.KFile)))), pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean, kotlin.String, kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.String)), kotlin.Function1((pl.treksoft.kvision.form.Form.add.C, kotlin.Boolean)))/validator">validator</span><span class="symbol">:</span>&nbsp;<span class="symbol">(</span><a href="add.html#C"><span class="identifier">C</span></a><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Adds a files control to the form.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="clear-data.html">clearData</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">clearData</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Sets the values of all controls to null.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="get.html">get</a></p>
+</td>
+<td>
+<code><span class="keyword">operator</span> <span class="keyword">fun </span><span class="identifier">get</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$get(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Any)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<span class="identifier">*</span><span class="symbol">&gt;</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html"><span class="identifier">Any</span></a><span class="symbol">?</span></code>
+<p>Returns a value of the control of given key.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="get-control.html">getControl</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">getControl</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$getControl(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Any)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<span class="identifier">*</span><span class="symbol">&gt;</span><span class="symbol">)</span><span class="symbol">: </span><a href="../-form-control/index.html"><span class="identifier">FormControl</span></a><span class="symbol">?</span></code>
+<p>Returns a control of given key.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="get-data.html">getData</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">getData</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="index.html#K"><span class="identifier">K</span></a></code>
+<p>Returns current data model.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="get-data-json.html">getDataJson</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">getDataJson</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-json/index.html"><span class="identifier">Json</span></a></code>
+<p>Returns current data model as JSON.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="remove.html">remove</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">remove</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$remove(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Any)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<span class="identifier">*</span><span class="symbol">&gt;</span><span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Removes a control from the form.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="remove-all.html">removeAll</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">removeAll</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Removes all controls from the form.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="set-data.html">setData</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">setData</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$setData(pl.treksoft.kvision.form.Form.K)/model">model</span><span class="symbol">:</span>&nbsp;<a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Sets the values of all the controls from the model.</p>
+</td>
+</tr>
+<tr>
+<td>
+<p><a href="validate.html">validate</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="identifier">validate</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Invokes validator function and validates the form.</p>
+</td>
+</tr>
+</tbody>
+</table>
+<h3>Companion Object Functions</h3>
+<table>
+<tbody>
+<tr>
+<td>
+<p><a href="create.html">create</a></p>
+</td>
+<td>
+<code><span class="keyword">fun </span><span class="symbol">&lt;</span><span class="identifier">K</span>&nbsp;<span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html"><span class="identifier">Any</span></a><span class="symbol">&gt;</span> <span class="identifier">create</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form.Companion$create(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Function1((pl.treksoft.kvision.form.Form((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Unit)))/panel">panel</span><span class="symbol">:</span>&nbsp;<a href="../-form-panel/index.html"><span class="identifier">FormPanel</span></a><span class="symbol">&lt;</span><a href="create.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span><span class="symbol">?</span>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">, </span><span class="identifier" id="pl.treksoft.kvision.form.Form.Companion$create(pl.treksoft.kvision.form.FormPanel((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Function1((pl.treksoft.kvision.form.Form((pl.treksoft.kvision.form.Form.Companion.create.K)), kotlin.Unit)))/init">init</span><span class="symbol">:</span>&nbsp;<a href="./index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="create.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span><span class="symbol">.</span><span class="symbol">(</span><span class="symbol">)</span>&nbsp;<span class="symbol">-&gt;</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a>&nbsp;<span class="symbol">=</span>&nbsp;null<span class="symbol">)</span><span class="symbol">: </span><a href="./index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="create.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code></td>
+</tr>
+</tbody>
+</table>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/remove-all.html b/api/pl.treksoft.kvision.form/-form/remove-all.html
new file mode 100644
index 00000000..1b454ea5
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/remove-all.html
@@ -0,0 +1,17 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.removeAll - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./remove-all.html">removeAll</a><br/>
+<br/>
+<h1>removeAll</h1>
+<a name="pl.treksoft.kvision.form.Form$removeAll()"></a>
+<code><span class="keyword">fun </span><span class="identifier">removeAll</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Removes all controls from the form.</p>
+<p><strong>Return</strong><br/>
+current form</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/remove.html b/api/pl.treksoft.kvision.form/-form/remove.html
new file mode 100644
index 00000000..8fa37f2c
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/remove.html
@@ -0,0 +1,20 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.remove - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./remove.html">remove</a><br/>
+<br/>
+<h1>remove</h1>
+<a name="pl.treksoft.kvision.form.Form$remove(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Any)))"></a>
+<code><span class="keyword">fun </span><span class="identifier">remove</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$remove(kotlin.reflect.KProperty1((pl.treksoft.kvision.form.Form.K, kotlin.Any)))/key">key</span><span class="symbol">:</span>&nbsp;<a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.reflect/-k-property1/index.html"><span class="identifier">KProperty1</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">,</span>&nbsp;<span class="identifier">*</span><span class="symbol">&gt;</span><span class="symbol">)</span><span class="symbol">: </span><a href="index.html"><span class="identifier">Form</span></a><span class="symbol">&lt;</span><a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">&gt;</span></code>
+<p>Removes a control from the form.</p>
+<h3>Parameters</h3>
+<p><a name="key"></a>
+<code>key</code> - key identifier of the control</p>
+<p><strong>Return</strong><br/>
+current form</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/set-data.html b/api/pl.treksoft.kvision.form/-form/set-data.html
new file mode 100644
index 00000000..c4c01463
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/set-data.html
@@ -0,0 +1,18 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.setData - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./set-data.html">setData</a><br/>
+<br/>
+<h1>setData</h1>
+<a name="pl.treksoft.kvision.form.Form$setData(pl.treksoft.kvision.form.Form.K)"></a>
+<code><span class="keyword">fun </span><span class="identifier">setData</span><span class="symbol">(</span><span class="identifier" id="pl.treksoft.kvision.form.Form$setData(pl.treksoft.kvision.form.Form.K)/model">model</span><span class="symbol">:</span>&nbsp;<a href="index.html#K"><span class="identifier">K</span></a><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-unit/index.html"><span class="identifier">Unit</span></a></code>
+<p>Sets the values of all the controls from the model.</p>
+<h3>Parameters</h3>
+<p><a name="model"></a>
+<code>model</code> - data model</p>
+</BODY>
+</HTML>
diff --git a/api/pl.treksoft.kvision.form/-form/validate.html b/api/pl.treksoft.kvision.form/-form/validate.html
new file mode 100644
index 00000000..7bfbbd87
--- /dev/null
+++ b/api/pl.treksoft.kvision.form/-form/validate.html
@@ -0,0 +1,17 @@
+<HTML>
+<HEAD>
+<meta charset="UTF-8">
+<title>Form.validate - kvision</title>
+<link rel="stylesheet" href="../../../style.css">
+</HEAD>
+<BODY>
+<a href="../../index.html">kvision</a>&nbsp;/&nbsp;<a href="../index.html">pl.treksoft.kvision.form</a>&nbsp;/&nbsp;<a href="index.html">Form</a>&nbsp;/&nbsp;<a href="./validate.html">validate</a><br/>
+<br/>
+<h1>validate</h1>
+<a name="pl.treksoft.kvision.form.Form$validate()"></a>
+<code><span class="keyword">fun </span><span class="identifier">validate</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html"><span class="identifier">Boolean</span></a></code>
+<p>Invokes validator function and validates the form.</p>
+<p><strong>Return</strong><br/>
+validation result</p>
+</BODY>
+</HTML>