Packages
surface
0.7.2
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.1
0.1.0
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha.0
A component based library for Phoenix LiveView
Current section
Files
Jump to
Current section
Files
lib/surface/components/form/field.ex
defmodule Surface.Components.Form.Field do
@moduledoc """
Defines a form field.
The `Field` component sets the provided field name into the context so child
components like input fields and labels can retrieve it and use it as
the default field.
"""
use Surface.Component
@doc "The field name"
prop name, :any, required: true
@doc "The CSS class for the generated `<div>` element"
prop class, :css_class
@doc """
The content for the field
"""
slot default, required: true
def render(assigns) do
~F"""
<div class={class_value(@class)}>
<Context put={__MODULE__, field: @name}>
<#slot/>
</Context>
</div>
"""
end
defp class_value(class) do
class || get_config(:default_class) || ""
end
end