Action fields for form submission, multi-step navigation, and array manipulation.
All button types share the same adapter-specific props for styling (color, variant, size, etc.). The props listed under Adapter Props apply to every button type on this page.
submit
Renders a submit button that triggers form submission. Automatically disabled when the form is invalid.
{
key: 'submit',
type: 'submit',
label: 'Create Account',
props: {
color: 'primary', // adapter-specific
}
}Core Props:
label: Button text (also set via top-levellabel)disabled: Whether the button is disabled
Adapter Props
| Prop | Type | Description |
|---|---|---|
color | 'primary' | 'accent' | 'warn' | Material theme color |
Example
button
Generic action button for custom event handling.
{
key: 'resetBtn',
type: 'button',
label: 'Reset',
props: {
onClick: (context) => context.form.reset(),
}
}Core Props:
label: Button textonClick: Callback invoked when the button is clicked, receives the form context
Adapter Props
| Prop | Type | Description |
|---|---|---|
color | 'primary' | 'accent' | 'warn' | Material theme color |
next
Advances to the next page in a multi-step form. Only valid inside a page container. Validates the current page before advancing.
{
key: 'nextBtn',
type: 'next',
label: 'Continue',
}This field type only makes sense inside a Form Pages container. It is ignored at the root level.
Adapter Props
| Prop | Type | Description |
|---|---|---|
color | 'primary' | 'accent' | 'warn' | Material theme color |
previous
Navigates back to the previous page in a multi-step form. Only valid inside a page container. Does not trigger validation.
{
key: 'prevBtn',
type: 'previous',
label: 'Back',
}This field type only makes sense inside a Form Pages container. It is ignored at the root level.
Adapter Props
| Prop | Type | Description |
|---|---|---|
color | 'primary' | 'accent' | 'warn' | Material theme color |
Array Buttons
Button types for declarative array manipulation. See Form Arrays (Complete) for full usage details and interactive examples.
addArrayItem
Appends a new item to the end of the target array.
{
key: 'addContact',
type: 'addArrayItem',
label: 'Add Contact',
arrayKey: 'contacts',
template: [
{ key: 'name', type: 'input', label: 'Name' },
{ key: 'email', type: 'input', label: 'Email' },
],
}Core Properties:
arrayKey: Key of the target array field (required if placed outside the array)template: Field definition(s) for the new item — singleFieldDeffor primitive items, array ofFieldDeffor object items (required)
prependArrayItem
Inserts a new item at the beginning of the target array.
{
key: 'prependContact',
type: 'prependArrayItem',
label: 'Add to Top',
arrayKey: 'contacts',
template: [
{ key: 'name', type: 'input', label: 'Name' },
],
}Core Properties:
arrayKey: Key of the target array field (required if placed outside the array)template: Field definition(s) for the new item (required)
insertArrayItem
Inserts a new item at a specific index in the target array.
{
key: 'insertContact',
type: 'insertArrayItem',
label: 'Insert at Position 1',
arrayKey: 'contacts',
index: 1,
template: [
{ key: 'name', type: 'input', label: 'Name' },
],
}Core Properties:
arrayKey: Key of the target array field (required if placed outside the array)template: Field definition(s) for the new item (required)index: Position at which to insert the new item (required)
removeArrayItem
Removes the current item from the array. Typically placed inside each array item.
{
key: 'remove',
type: 'removeArrayItem',
label: 'Remove',
props: { color: 'warn' },
}Core Properties:
arrayKey: Key of the target array field (optional when placed inside the array — automatically inferred)
popArrayItem
Removes the last item from the target array.
{
key: 'removeLast',
type: 'popArrayItem',
label: 'Remove Last',
arrayKey: 'contacts',
}Core Properties:
arrayKey: Key of the target array field (required)
shiftArrayItem
Removes the first item from the target array.
{
key: 'removeFirst',
type: 'shiftArrayItem',
label: 'Remove First',
arrayKey: 'contacts',
}Core Properties:
arrayKey: Key of the target array field (required)