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
Props are whatever your field component accepts.
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
Props are whatever your field component accepts.
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
Props are whatever your field component accepts.
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
Props are whatever your field component accepts.
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)