Repeater
A list of nested field schemas — line items, speakers, “add another.”
Standalone
Section titled “Standalone”from almasix.orbit.forms import Form, Repeater, TextInput
form = Form.make("demo").schema([ Repeater.make("links") .schema([ TextInput.make("label").required(), TextInput.make("url").url().required(), ]) .cloneable() .collapsible() .reorderable() .item_label(lambda index, **_: f"Link {index + 1}") .min_items(1) .max_items(5)])In a Resource
Section titled “In a Resource”from almasix.orbit import Resourcefrom almasix.orbit.forms import Form, Repeater, TextInput
class PostResource(Resource): @classmethod def form(cls, form: Form) -> Form: return form.schema([ Repeater.make("speakers").schema([ TextInput.make("name").required(), TextInput.make("title"), ]), ])Key methods
Section titled “Key methods”.schema([...])— nested fields / layouts.cloneable()/.collapsible()/.reorderable()— item action buttons.item_label(str | callable)— per-item header.min_items(n)/.max_items(n)— limits (data-min-items/data-max-items)- Wire actions:
addRepeaterItem,removeRepeaterItem,cloneRepeaterItem,moveRepeaterItem
Closures work on .label(), .helper_text(), .placeholder(), .visible(), .disabled(), and .required() — see Form closures.
Import nested fields from almasix.orbit.forms as usual.
Preview
Section titled “Preview”
