Packages
ckeditor5_phoenix
1.12.0
1.28.2
1.28.1
1.28.0
1.27.2
1.27.1
1.27.0
1.26.0
1.25.1
1.25.0
1.24.2
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.0
1.18.0
1.17.2
1.17.1
1.17.0
1.16.1
1.16.0
1.15.8
1.15.7
1.15.6
1.15.5
1.15.4
1.15.3
1.15.2
1.15.1
1.15.0
1.14.2
1.14.1
1.14.0
1.13.0
1.12.0
1.11.0
1.10.2
1.10.1
1.10.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.0
1.4.1
1.4.0
1.3.0
1.2.1
1.2.0
1.1.0
1.0.8
1.0.7
CKEditor 5 integration for Phoenix Framework
Current section
Files
Jump to
Current section
Files
lib/components/helpers/form_attrs.ex
defmodule CKEditor5.Components.FormAttrs do
@moduledoc """
Common helper functions for CKEditor5 form components.
"""
alias Phoenix.HTML
@doc """
Assigns form fields if the `form` and `field` attributes are provided.
This function checks if the `form` is present and if the `field` is an atom.
It then retrieves the input name and value from the form and assigns them to the assigns map.
"""
def assign_form_fields(%{field: nil} = assigns), do: assigns
def assign_form_fields(%{field: %HTML.FormField{} = field} = assigns) do
assigns
|> Map.put(:name, field.name)
|> Map.put(:value, field.value || "")
end
@doc """
Defines form-related attributes that are commonly used in CKEditor5 components.
This includes name, form, field, value, and required attributes for form integration.
"""
defmacro form_attrs do
quote do
attr :name, :string,
required: false,
default: nil,
doc: """
The name of the input field that will be used to submit the content.
If not provided, it will be derived from the `:field` attribute when available.
This is useful for form integration, allowing the content to be submitted as part of a form.
"""
attr :field, Phoenix.HTML.FormField,
required: false,
default: nil,
doc: "The `Phoenix.HTML.FormField` for form integration."
attr :value, :string,
required: false,
default: "",
doc: """
The initial value for the content. This will be set when the component is initialized.
If not specified, it will default to an empty string.
"""
attr :required, :boolean,
default: false,
doc: """
Marks the input as required. This will be used to validate the content when the form is submitted.
"""
end
end
end