5. Form APIs
FormRow(props FormRowProps) Node
- Required:
props.ID must be non-empty; otherwise render error node.
props.Control must be non-nil; otherwise render error node.
- Behavior:
- optional label, required marker (
*), description, error row.
- when
props.Error exists, internally renders FieldError.
FieldError(props FieldErrorProps) Node
- Empty
Message => returns empty Raw("").
- Non-empty message requires non-empty
ID; empty ID => render error node.
TextField(props TextFieldProps) Node
- Defaults:
Type defaults to "text" when blank.
- Behavior:
- applies
aria-describedby from description/error presence.
- sets
aria-invalid=true when error exists.
- supports
required, disabled, readonly, data-ref.
Textarea(props TextareaProps) Node
Rows > 0 adds rows attribute; otherwise omitted.
- Same accessibility/error behavior as
TextField.
Select(props SelectFieldProps) Node
- Renders
<option value="..."> list from Options.
SelectOption.Selected sets selected="selected".
- Same accessibility/error behavior as text controls.
Checkbox(props CheckboxProps) Node
- Renders label + checkbox input.
Checked=true sets checked="checked".
- Supports
disabled, readonly, data-ref, error aria attrs.
RadioGroup(props RadioGroupProps) Node
- Required: non-empty
props.ID; empty ID => render error node.
- Generates child IDs as
<groupID>-<index>.
- Marks checked option where
props.Value == option.Value.
Switch(props SwitchProps) Node
- Implemented as checkbox input with switch class.
Checked=true sets checked="checked".
- Supports same checkable attrs as checkbox/radio.