Packages
surface
0.4.0
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/checkbox.ex
defmodule Surface.Components.Form.Checkbox do
@moduledoc """
Defines a checkbox.
Provides a wrapper for Phoenix.HTML.Form's `checkbox/3` function.
All options passed via `opts` will be sent to `checkbox/3`, `value` and
`class` can be set directly and will override anything in `opts`.
## Examples
```
<Checkbox form="user" field="color" opts={{ autofocus: "autofocus" }}>
```
"""
use Surface.Components.Form.Input
import Phoenix.HTML.Form, only: [checkbox: 3]
import Surface.Components.Utils, only: [events_to_opts: 1]
import Surface.Components.Form.Utils
@doc "The value to be sent when the checkbox is checked. Defaults to \"true\""
prop checked_value, :any, default: true
@doc "Controls if this function will generate a hidden input to submit the unchecked value or not, defaults to \"true\"."
prop hidden_input, :boolean, default: true
@doc "The value to be sent when the checkbox is unchecked, defaults to \"false\"."
prop unchecked_value, :any, default: false
def render(assigns) do
helper_opts =
props_to_opts(assigns, [
:checked_value,
:hidden_input,
:unchecked_value,
:value
])
attr_opts = props_to_attr_opts(assigns, class: get_config(:default_class))
event_opts = events_to_opts(assigns)
~H"""
<InputContext assigns={{ assigns }} :let={{ form: form, field: field }}>
{{ checkbox(form, field, helper_opts ++ attr_opts ++ @opts ++ event_opts) }}
</InputContext>
"""
end
end