Packages
surface
0.3.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/radio_button.ex
defmodule Surface.Components.Form.RadioButton do
@moduledoc """
Defines a radio button.
Provides a wrapper for Phoenix.HTML.Form's `radio_button/4` function.
All options passed via `opts` will be sent to `radio_button/4`, `value` and
`class` can be set directly and will override anything in `opts`.
## Examples
```
<RadioButton form="user" field="color" opts={{ autofocus: "autofocus" }}>
```
"""
use Surface.Components.Form.Input
import Phoenix.HTML.Form, only: [radio_button: 4]
import Surface.Components.Form.Utils
@doc "Indicates whether or not the radio button is the selected item in the group"
prop checked, :boolean
def render(assigns) do
helper_opts = props_to_opts(assigns)
attr_opts = props_to_attr_opts(assigns, [:checked, class: get_config(:default_class)])
event_opts = events_to_opts(assigns)
~H"""
<InputContext assigns={{ assigns }} :let={{ form: form, field: field }}>
{{ radio_button(form, field, assigns[:value], helper_opts ++ attr_opts ++ @opts ++ event_opts) }}
</InputContext>
"""
end
end