# DynamicForm v1.0.0 - Table of Contents

> Dynamic forms for Phoenix LiveView with built-in validation - defined declaratively in HEEx or as (SurveyJS-compatible) data

## Pages

- [DynamicForm](readme.md)
- [Changelog](changelog.md)
- [MIT License](license.md)

- Guides
  - [Usage](usage.md)
  - [Nested Forms](nested-forms.md)
  - [SurveyJS Compatibility](surveyjs.md)
  - [Lifecycle Events](lifecycle.md)
  - [Styling](styling.md)
  - [Reference](reference.md)
  - [Development](development.md)

## Modules

- [DynamicForm](DynamicForm.md): DynamicForm - A Phoenix LiveView library for creating dynamic forms with full
server-side validation using changesets. Also supports building forms
through a WYSIWYG interface.
- [DynamicForm.CarryForward](DynamicForm.CarryForward.md): SurveyJS "carry forward": a question whose choices come from another
question — one choice per entry of a nested form, or another choice
question's own choices, optionally narrowed by `choicesFromQuestionMode`.
- [DynamicForm.Changeset](DynamicForm.Changeset.md): Helper functions for creating dynamic changesets from DynamicForm.Instance configurations.
- [DynamicForm.ComponentResolver](DynamicForm.ComponentResolver.md): Resolution and dispatch for the pluggable components module.
- [DynamicForm.CoreComponents](DynamicForm.CoreComponents.md): Provides core UI components.
- [DynamicForm.DirectUpload](DynamicForm.DirectUpload.md): A LiveView component for handling direct-to-storage file uploads in dynamic forms.
- [DynamicForm.FieldTypes](DynamicForm.FieldTypes.md): Resolution for custom field types.
- [DynamicForm.Gettext](DynamicForm.Gettext.md): A module providing Internationalization with a gettext-based API.
- [DynamicForm.Helpers.Form](DynamicForm.Helpers.Form.md): Plumbing for the `Phoenix.HTML.Form` structs the library renders against.
- [DynamicForm.Helpers.Map](DynamicForm.Helpers.Map.md): Generic map utilities shared across the library.
- [DynamicForm.Instance](DynamicForm.Instance.md): Configuration struct that defines the complete form structure using SurveyJS-compatible format.
- [DynamicForm.Instance.Element](DynamicForm.Instance.Element.md): Represents a non-input element in a form using SurveyJS-compatible format.
- [DynamicForm.Instance.Elements](DynamicForm.Instance.Elements.md): Queries over a form definition's element tree.
- [DynamicForm.Instance.Question](DynamicForm.Instance.Question.md): Represents a form question (input field) using SurveyJS-compatible format.
- [DynamicForm.Instance.Validator](DynamicForm.Instance.Validator.md): Represents a validation rule for a form question using SurveyJS-compatible format.
- [DynamicForm.Lifecycle.Debounce](DynamicForm.Lifecycle.Debounce.md): Timer and token mechanics for debouncing `DynamicForm.Renderer.LiveComponent`'s
change pass (`change_debounce_in_ms`).
- [DynamicForm.Lifecycle.Uploads](DynamicForm.Lifecycle.Uploads.md): LiveView upload wiring for `file` questions using direct-to-cloud uploads.
- [DynamicForm.NestedForms](DynamicForm.NestedForms.md): Nested/repeating child forms — the SurveyJS `paneldynamic` question type.
- [DynamicForm.Parser.FromComponent](DynamicForm.Parser.FromComponent.md): Parses `<:field>`, `<:group>`, and `<:nested>` slot entries from
`DynamicForm.form/1` into a `DynamicForm.Instance` struct.
- [DynamicForm.Parser.FromComponent.Validator](DynamicForm.Parser.FromComponent.Validator.md): Validates the slot declarations handed to `DynamicForm.form/1` before
`DynamicForm.Parser.FromComponent` builds an `Instance` from them, raising
`ArgumentError` with a specific message for each definition mistake.
- [DynamicForm.Parser.FromData](DynamicForm.Parser.FromData.md): Decodes SurveyJS-compatible JSON data or maps into DynamicForm.Instance structs.
- [DynamicForm.Payload](DynamicForm.Payload.md): The value threaded through the form lifecycle.
- [DynamicForm.Renderer.Component](DynamicForm.Renderer.Component.md): A pure functional form component
- [DynamicForm.Renderer.Components.ContentElements](DynamicForm.Renderer.Components.ContentElements.md): Rendering for non-question elements: `html` and `image` content blocks,
fully custom slot elements, and `panel` containers (whose members render
back through `DynamicForm.Renderer.Component`).
- [DynamicForm.Renderer.Components.NestedEntries](DynamicForm.Renderer.Components.NestedEntries.md): Rendering for `paneldynamic` questions: the repeating nested-form section —
its header and add button, one namespaced child form per entry with its
remove button, and the section-level errors.
- [DynamicForm.Renderer.Components.ValidationSummary](DynamicForm.Renderer.Components.ValidationSummary.md): A summary of a changeset's validation errors, rendered above the form when
the `validation_summary` attribute of `DynamicForm.form/1` is set.
- [DynamicForm.Renderer.LiveComponent](DynamicForm.Renderer.LiveComponent.md): A LiveComponent version of the DynamicForm renderer with automatic state management.

