Current section

Files

Jump to
surface_bulma priv catalogue form example04.ex
Raw

priv/catalogue/form/example04.ex

defmodule SurfaceBulma.Catalogue.Form.Example04 do
@moduledoc ""
use Surface.Catalogue.Example,
subject: SurfaceBulma.Form,
catalogue: SurfaceBulma.Catalogue,
title: "Various form controls",
height: "1000px"
alias SurfaceBulma.Form.{
ColorInput,
DateInput,
DateTimeLocalInput,
NumberInput,
PasswordInput,
RangeInput,
Select
}
alias SurfaceBulma.{Button}
alias Surface.Components.{Form}
alias SurfaceBulma.Catalogue.Form.SampleModel
data(changeset, :map,
default:
SampleModel.changeset(%SampleModel{}, %{
"username" => "bulma",
"email" => "hello@"
})
|> Map.put(:action, :insert)
)
def render(assigns) do
~F"""
<Form
for={@changeset}
change={"change"}
submit={"submit"}
opts={autocomplete: "off"}>
<ColorInput
field={:example_04_color}
label="Color"
placeholder="Text input"
value="#c33c3c">
<:right_addon>
<Button color="primary" >Select</Button>
</:right_addon>
</ColorInput>
<DateInput
field={:example_04_date}
label="Datetime local"/>
<DateTimeLocalInput
field={:example_04_datetime_local}
label="Date"
step="3600"
/>
<Select
field={:example_04_multiple_select}
options={
[
"Option 1",
"Option 2",
"Option 3"
]
}
multiple
expanded
rounded/>
<NumberInput
field={:example_04_number}
step="5"/>
<PasswordInput
field={:example_04_password}
placeholder="Your password"
icon_left="key"/>
<RangeInput
field={:example_04_range}
min="0"
max="10"
value="7"
label="Range"/>
</Form>
"""
end
def handle_event("change", %{"sample_model" => changes}, socket) do
cs =
SampleModel.changeset(%SampleModel{}, changes)
|> Map.put(:action, :insert)
socket = assign(socket, :changeset, cs)
{:noreply, socket}
end
end