Packages

🎨 Gleam UI lustre library by @gleam-br

Current section

Files

Jump to
gbr_ui src gbr@ui@admin@user@dropdown.erl
Raw

src/gbr@ui@admin@user@dropdown.erl

-module(gbr@ui@admin@user@dropdown).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src\\gbr\\ui\\admin\\user\\dropdown.gleam").
-export([new/1, add_menu_icon/4, add_menu/3, is_visible/1, toggle/1, in_menus/2, in_buttons/2]).
-export_type([item/0, u_i_dropdown/0]).
-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"
"\n"
"\n"
).
-type item() :: {item,
binary(),
binary(),
gleam@option:option(fun((gbr@ui@svg@core:svg()) -> gbr@ui@svg@core:svg()))}.
-opaque u_i_dropdown() :: {u_i_dropdown, boolean(), list(item()), list(item())}.
-file("src\\gbr\\ui\\admin\\user\\dropdown.gleam", 25).
-spec new(boolean()) -> u_i_dropdown().
new(Visible) ->
{u_i_dropdown, Visible, [], []}.
-file("src\\gbr\\ui\\admin\\user\\dropdown.gleam", 29).
-spec add_menu_icon(
u_i_dropdown(),
binary(),
binary(),
fun((gbr@ui@svg@core:svg()) -> gbr@ui@svg@core:svg())
) -> u_i_dropdown().
add_menu_icon(In, Id, Text, Icon) ->
{u_i_dropdown, _, Menus, _} = In,
Menu = {item, Id, Text, {some, Icon}},
{u_i_dropdown, erlang:element(2, In), [Menu | Menus], erlang:element(4, In)}.
-file("src\\gbr\\ui\\admin\\user\\dropdown.gleam", 41).
-spec add_menu(u_i_dropdown(), binary(), binary()) -> u_i_dropdown().
add_menu(In, Id, Text) ->
add_menu_icon(In, Id, Text, fun gleam@function:identity/1).
-file("src\\gbr\\ui\\admin\\user\\dropdown.gleam", 45).
-spec is_visible(u_i_dropdown()) -> boolean().
is_visible(In) ->
erlang:element(2, In).
-file("src\\gbr\\ui\\admin\\user\\dropdown.gleam", 49).
-spec toggle(u_i_dropdown()) -> u_i_dropdown().
toggle(In) ->
{u_i_dropdown, Visible, _, _} = In,
{u_i_dropdown, not Visible, erlang:element(3, In), erlang:element(4, In)}.
-file("src\\gbr\\ui\\admin\\user\\dropdown.gleam", 55).
-spec in_menus(
u_i_dropdown(),
fun((binary(), binary(), gleam@option:option(fun((gbr@ui@svg@core:svg()) -> gbr@ui@svg@core:svg()))) -> PCO)
) -> list(PCO).
in_menus(In, Callback) ->
gleam@list:map(
erlang:element(3, In),
fun(Menu) ->
{item, Id, Text, Icon} = Menu,
Callback(Id, Text, Icon)
end
).
-file("src\\gbr\\ui\\admin\\user\\dropdown.gleam", 62).
-spec in_buttons(
u_i_dropdown(),
fun((binary(), binary(), gleam@option:option(fun((gbr@ui@svg@core:svg()) -> gbr@ui@svg@core:svg()))) -> PCR)
) -> list(PCR).
in_buttons(In, Callback) ->
gleam@list:map(
erlang:element(4, In),
fun(Btn) ->
{item, Id, Text, Icon} = Btn,
Callback(Id, Text, Icon)
end
).