LiveComponent for MishkaGervaz admin forms.
This is a thin orchestrator that delegates to specialized modules:
State- State managementDataLoader- Record loading and relation optionsEvents- Event handlingRenderer- Template rendering
Usage
Create mode (new record):
<.live_component
module={MishkaGervaz.Form.Web.Live}
id="post-form"
resource={MyApp.Post}
current_user={@current_user}
/>Edit mode (existing record):
<.live_component
module={MishkaGervaz.Form.Web.Live}
id="post-form"
resource={MyApp.Post}
current_user={@current_user}
record_id={@post_id}
/>Required Assigns
id- Unique component IDresource- Ash resource module withMishkaGervaz.Resourceextensioncurrent_user- Current user for authorization
Optional Assigns
record_id- ID of record to edit (nil for create mode)defaults- Map of default field values for create mode (e.g.,%{workspace_id: @workspace_id})
Parent LiveView Integration
The component sends messages to the parent for certain actions:
def handle_info({:form_saved, :create, result}, socket), do: ...
def handle_info({:form_saved, :update, result}, socket), do: ...
def handle_info({:form_cancelled, resource}, socket), do: ...
def handle_info({:form_event, event, params}, socket), do: ...
def handle_info({:add_nested_field, field_name}, socket), do: ...
def handle_info({:remove_nested_field, field_name, index}, socket), do: ...See MishkaGervaz.Form.Web.State (state shape + override surface),
MishkaGervaz.Form.Web.DataLoader (record + relation loading),
MishkaGervaz.Form.Web.Events (event handling),
MishkaGervaz.Form.Web.Renderer (template dispatch),
MishkaGervaz.Form.Web.UploadHelpers, and
MishkaGervaz.Form.Behaviours.Template.