Packages
surface
0.1.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/file_input.ex
defmodule Surface.Components.Form.FileInput do
@moduledoc """
Generates a file input.
It requires the given form to be configured with `multipart: true`.
All options passed via `opts` will be sent to `file_input/3`, `value` and
`class` can be set directly and will override anything in `opts`.
## Examples
```
<FileInput form="user" field="picture" />
<Form for={{ :user }} opts={{ multipart: true }}>
<FileInput field={{ :picture }} />
</Form>
```
"""
use Surface.Components.Form.Input
import Phoenix.HTML.Form, only: [file_input: 3]
import Surface.Components.Form.Utils
def render(assigns) do
props = get_non_nil_props(assigns, [:value, class: @default_class])
event_opts = get_events_to_opts(assigns)
~H"""
<InputContext assigns={{ assigns }} :let={{ form: form, field: field }}>
{{ file_input(form, field, props ++ @opts ++ event_opts) }}
</InputContext>
"""
end
end