Package-level declarations

Types

Link copied to clipboard
data class Button(val label: String, val description: String = label, val id: String = UUID.randomUUID().toString()) : Control
Link copied to clipboard
data class Checkbox(val label: String, val checked: Boolean = false, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
sealed interface Control
Link copied to clipboard
Link copied to clipboard
sealed class ControlValue
Link copied to clipboard
data class DatePicker(val label: String, val value: String? = null, val minDate: String? = null, val maxDate: String? = null, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
Link copied to clipboard
class DoubleRangeValidator(min: Double, max: Double, errorMessage: String) : Validator
Link copied to clipboard
data class Dropdown(val label: String, val options: List<DropdownOption>, val placeholder: String = "", val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class DropdownOption(val label: String, val value: String = label)
Link copied to clipboard
class DropDownValidator(options: List<String>, errorMessage: String) : Validator
Link copied to clipboard
data class FileUpload(val label: String, val acceptedFileTypes: List<String> = listOf("*/*"), val maxFileSize: Long? = null, val maxFiles: Int = 1, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class Form(val title: String, val controls: List<Control>, val id: String = UUID.randomUUID().toString())

UX-independent form definition. Controls, not data.

Link copied to clipboard
class FormBinder<T : Any>(targetClass: KClass<T>)

Form binder system that maps form submission values to Kotlin data classes and Java classes

Link copied to clipboard

Indicates that this is a form field. Only necessary for renaming and other customization. IMPORTANT: In Kotlin this annotation must be on the property, as in @property:FormField("controlId") myProperty: String

Link copied to clipboard
interface FormGenerator

Generate forms from JVM types.

Link copied to clipboard
interface FormProcessor
Link copied to clipboard
data class FormSubmission(val formId: String, val values: Map<String, Any>, val submissionId: String = UUID.randomUUID().toString(), val timestamp: Instant = Instant.now())

Raw data from the user

Link copied to clipboard
data class FormSubmissionResult(val submission: FormSubmission, val values: Map<String, ControlValue>, val valid: Boolean = true, val validationErrors: Map<String, String> = emptyMap())
Link copied to clipboard

Indicates that this is not a form field

Link copied to clipboard
class PatternValidator(pattern: String, errorMessage: String) : Validator
Link copied to clipboard
data class RadioGroup(val label: String, val options: List<RadioOption>, val selectedValue: String? = null, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class RadioOption(val label: String, val value: String = label)
Link copied to clipboard
sealed interface RequirableControl : Control
Link copied to clipboard
Link copied to clipboard

Simple form generator that uses FormField annotations

Link copied to clipboard
data class Slider(val label: String, val min: Double = 0.0, val max: Double = 100.0, val step: Double = 1.0, val value: Double = min, val showMarkers: Boolean = false, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
annotation class Text(val label: String, val placeholder: String = "")

Annotation for a text field

Link copied to clipboard
data class TextArea(val label: String, val placeholder: String = "", val value: String = "", val rows: Int = 3, val maxLength: Int? = null, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class TextField(val label: String, val placeholder: String = "", val value: String = "", val maxLength: Int? = null, val required: Boolean = true, val disabled: Boolean = false, val validationPattern: String? = null, val validationMessage: String? = null, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class TimePicker(val label: String, val value: String? = null, val is24Hour: Boolean = false, val required: Boolean = true, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : RequirableControl
Link copied to clipboard
data class Toggle(val label: String, val enabled: Boolean = false, val disabled: Boolean = false, val id: String = UUID.randomUUID().toString()) : Control
Link copied to clipboard
data class ValidationResult(val isValid: Boolean, val errorMessage: String? = null)
Link copied to clipboard
fun interface Validator

Functions

Link copied to clipboard
inline fun <T : Any> FormSubmissionResult.bindTo(): T

Extension function to make binding more convenient

fun <T : Any> FormSubmissionResult.bindTo(javaClass: Class<T>): T

Extension function for Java class binding

Link copied to clipboard
inline fun <T : Any> FormGenerator.generateForm(title: String): Form

Generate a form from any class with FormField annotations