Packages
surface
0.5.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/submit.ex
defmodule Surface.Components.Form.Submit do
@moduledoc """
Defines a submit button to send the form.
All options are forwarded to the underlying `Phoenix.HTML.Form.submit/3`
"""
use Surface.Component
use Surface.Components.Events
import Surface.Components.Utils, only: [events_to_opts: 1, opts_to_attrs: 1]
@doc "The label to be used in the button"
prop label, :string
@doc "Class or classes to apply to the button"
prop class, :css_class
@doc "Keyword list with options to be passed down to `submit/3`"
prop opts, :keyword, default: []
@doc "Slot used for having children other than plain text in the button"
slot default
def render(assigns) do
~F"""
<button type="submit" :attrs={to_attrs(assigns)}><#slot>{@label}</#slot></button>
"""
end
defp to_attrs(assigns) do
(prop_to_attr_opts(assigns.class, :class) ++ assigns.opts ++ events_to_opts(assigns))
|> opts_to_attrs()
end
end