Current section
Files
Jump to
Current section
Files
src/gbr@ui@form.erl
-module(gbr@ui@form).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\gbr\\ui\\form.gleam").
-export([new/1, class/2, at/1, at_inline/2, on_submit/2, render/1, eye/2]).
-export_type([u_i_form/0, u_i_form_render/1]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
"\n"
" Gleam UI form super element.\n"
"\n"
).
-opaque u_i_form() :: {u_i_form, gbr@ui@core@el:u_i_el()}.
-opaque u_i_form_render(QBK) :: {u_i_form_render,
u_i_form(),
list(lustre@vdom@vnode:element(QBK)),
gleam@option:option(fun((list({binary(), binary()})) -> QBK))}.
-file("src\\gbr\\ui\\form.gleam", 43).
?DOC(" New form super element.\n").
-spec new(binary()) -> u_i_form().
new(Id) ->
{u_i_form, gbr@ui@core@el:new(Id)}.
-file("src\\gbr\\ui\\form.gleam", 49).
?DOC(" Set form class styles.\n").
-spec class(u_i_form(), binary()) -> u_i_form().
class(In, Class) ->
El = gbr@ui@core@el:class(erlang:element(2, In), Class),
{u_i_form, El}.
-file("src\\gbr\\ui\\form.gleam", 57).
?DOC(" New form render at default behavior.\n").
-spec at(u_i_form()) -> u_i_form_render(any()).
at(In) ->
{u_i_form_render, In, [], none}.
-file("src\\gbr\\ui\\form.gleam", 63).
?DOC(" New form render at inline behavior.\n").
-spec at_inline(u_i_form(), list(lustre@vdom@vnode:element(QBQ))) -> u_i_form_render(QBQ).
at_inline(In, Inner) ->
{u_i_form_render, In, Inner, none}.
-file("src\\gbr\\ui\\form.gleam", 69).
?DOC(" Set form render on submit event.\n").
-spec on_submit(u_i_form_render(QBT), fun((list({binary(), binary()})) -> QBT)) -> u_i_form_render(QBT).
on_submit(In, Onsubmit) ->
{u_i_form_render,
erlang:element(2, In),
erlang:element(3, In),
{some, Onsubmit}}.
-file("src\\gbr\\ui\\form.gleam", 75).
?DOC(" Render form super element to `lustre/element/html.{form}`.\n").
-spec render(u_i_form_render(QBX)) -> lustre@vdom@vnode:element(QBX).
render(At) ->
{u_i_form_render, In, Inner, Onsubmit} = At,
{u_i_form, El} = In,
Attrs = gbr@ui@core@el:attrs(El),
Onsubmit@1 = begin
_pipe = Onsubmit,
_pipe@1 = gleam@option:map(_pipe, fun lustre@event:on_submit/1),
gleam@option:unwrap(_pipe@1, lustre@attribute:none())
end,
lustre@element@html:form([Onsubmit@1 | Attrs], Inner).
-file("src\\gbr\\ui\\form.gleam", 92).
?DOC(
" Render form input icon eye to password fields.\n"
" - open: True is open or close.\n"
" - attributes: `lustre/attribute.{*}` | `lustre.event.{*}`\n"
).
-spec eye(boolean(), list(lustre@vdom@vattr:attribute(QCA))) -> lustre@vdom@vnode:element(QCA).
eye(Open, Attributes) ->
Transform = case Open of
true ->
fun gbr@ui@svg@form:eye_open/1;
false ->
fun gbr@ui@svg@form:eye_close/1
end,
lustre@element@html:span(
Attributes,
[begin
_pipe = gbr@ui@svg:new(20, 20),
_pipe@1 = Transform(_pipe),
gbr@ui@svg:render(_pipe@1)
end]
).