All notable changes to this project are documented here. For releases before 0.19.0, see the git history.
0.20.0
Added
DynamicForm.form_data/1: inside a<:field>slot body, the whole form's current values as a map — the same shape aspayload.data. Always form-level, so a control inside one nested form can read another's entries.
Fixed
- The Usage guide's
type="custom"example bound:let={field}and readfield.form. That body receives the form itself, so the example raisedKeyErroras written.
0.19.0
Breaking
- Parent LiveView messages carry the lifecycle event:
{:dynamic_form, payload}is now{:dynamic_form, event, payload}. Update existing handlers tohandle_info({:dynamic_form, :success, payload}, socket)— an unmatched message raisesFunctionClauseErrorrather than failing quietly. :changeand:submitpayloads can be invalid. The previous guarantee that the parent only ever hears about valid submissions holds for:successonly.
Added
send_message_onattribute: the lifecycle events that message the parent LiveView, any of[:success, :change, :submit](default:[:success]). Listing:successalongsideon_successraises, sinceon_successreplaces that message.change_debounce_in_msattribute: milliseconds of quiet before a change runson_changeand sends its:changemessage. The built-in validations still render on every change, and submitting always runs the change pass inline.
Changed
- Adding or removing a nested entry now runs the change pass —
on_changeand the:changemessage — like any other change to the form's data.