Packages
surface
0.2.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
import Phoenix.HTML.Form, only: [submit: 2]
@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 "Triggered when the component loses focus"
prop blur, :event
@doc "Triggered when the component receives focus"
prop focus, :event
@doc "Triggered when the component receives click"
prop capture_click, :event
@doc "Triggered when a button on the keyboard is pressed"
prop keydown, :event
@doc "Triggered when a button on the keyboard is released"
prop keyup, :event
@doc "Slot used for having children other than plain text in the button"
slot default
def render(assigns) do
children = ~H"<slot>{{ @label }}</slot>"
~H"""
{{ submit prop_to_attr_opts(@class, :class) ++ @opts, do: children }}
"""
end
end