Packages
surface
0.8.1
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/reset.ex
defmodule Surface.Components.Form.Reset do
@moduledoc """
Defines a reset button.
Provides a wrapper for Phoenix.HTML.Form's `reset/2` function.
All options passed via `opts` will be sent to `reset/2`, `value` and
`class` can be set directly and will override anything in `opts`.
## Examples
```
<Reset value="Reset" opts={autofocus: "autofocus"} />
```
"""
use Surface.Component
use Surface.Components.Events
import Phoenix.HTML.Form, only: [reset: 2]
import Surface.Components.Utils, only: [events_to_opts: 1]
import Surface.Components.Form.Utils
@doc "The id of the corresponding input field"
prop id, :string
@doc "The name of the corresponding input field"
prop name, :string
@doc "Value to pre-populated the input"
prop value, :string, default: "Reset"
@doc "Class or classes to apply to the input"
prop class, :css_class
@doc "Keyword list with options to be passed down to `reset/2`"
prop opts, :keyword, default: []
def render(assigns) do
helper_opts = props_to_opts(assigns)
attr_opts = props_to_attr_opts(assigns, [:class])
event_opts = events_to_opts(assigns)
opts =
assigns.opts
|> Keyword.merge(helper_opts)
|> Keyword.merge(attr_opts)
|> Keyword.merge(event_opts)
assigns = assign(assigns, opts: opts)
~F"""
{reset(assigns[:value], @opts)}
"""
end
end