Packages
surface
0.9.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/telephone_input.ex
defmodule Surface.Components.Form.TelephoneInput do
@moduledoc """
An input field that let the user enter a **telephone number**.
Provides a wrapper for Phoenix.HTML.Form's `telephone_input/3` function.
All options passed via `opts` will be sent to `telephone_input/3`, `value`,
`pattern` and `class` can be set directly and will override anything in `opts`.
## Examples
```
<TelephoneInput form="user" field="phone" opts={autofocus: "autofocus"} />
```
"""
use Surface.Components.Form.Input
import Phoenix.HTML.Form, only: [telephone_input: 3]
import Surface.Components.Utils, only: [events_to_opts: 1]
import Surface.Components.Form.Utils
@doc "A regular expression to validate the entered value"
prop pattern, :string
def render(assigns) do
helper_opts = props_to_opts(assigns)
attr_opts = props_to_attr_opts(assigns, [:value, :pattern, class: get_default_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[{telephone_input(@form, @field, @opts)}]
end
end