Packages
formex
0.4.5
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.10
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.16
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Form library for Phoenix with Ecto support
Current section
Files
Jump to
Current section
Files
lib/formex/button.ex
defmodule Formex.Button do
alias __MODULE__
alias Formex.Field
@doc """
Defines the Formex.Button struct.
* `:name` - a field name. By default the same as `:type`
* `:type` - a type of a field that in most cases will be the name of a function from `Phoenix.HTML.Form`
* `:label` - the text label
* `:opts` - options
"""
defstruct name: nil,
type: nil,
label: "",
opts: [],
phoenix_opts: []
@type t :: %Button{}
@doc """
Creates a new button.
`type` - may be `:submit`, `:button` or `:reset`.
Example:
```
form
|> add(:save, :submit, label: "Save it!", phoenix_opts: [
class: "btn-primary"
])
```
```
<%= formex_row f, :save %>
```
"""
def create_button(type, name, opts \\ []) do
phoenix_opts = Field.prepare_phoenix_opts(opts)
{type, phoenix_opts} = if type == :button do
{:submit, Keyword.put(phoenix_opts, :type, :button)}
else
{type, phoenix_opts}
end
%Button{
name: name,
type: type,
label: Field.get_label(name, opts),
opts: Field.prepare_opts(opts),
phoenix_opts: phoenix_opts
}
end
end