@bimetal/forms-headless
v0.39.0
Published
Canonical, framework-agnostic forms controllers on @bimetal/headless-core. createFormBuilderController edits the schema (add/reorder/edit fields, undo); createFormRendererController fills the form (transient values, live validation from the schema, submit
Maintainers
Readme
@bimetal/forms-headless
The canonical, framework-agnostic forms controllers — instance #9 of the BIMETAL component family, and the only one that ships two:
createFormBuilderController— edits the SCHEMA (add/reorder/edit/remove fields, drag reorder, undo). Event-sourced through@bimetal/forms-data.createFormRendererController— FILLS the form: transient values, live validation from the schema,submit → onSubmit. It also owns an embedded picker controller perselectfield — creating, syncing and destroying it, so no binding builds a picker lifecycle.
Both share the identity-stable getSnapshot/subscribe contract from
@bimetal/headless-core, and both surface failures as state (lastAction)
rather than throwing into the binding.
RendererFieldView carries the derived a11y facts — required, invalid and
which satellite texts describe the field — so the five bindings agree on what a
screen reader is told.
