Packages
lustre
1.2.0
5.7.1
5.7.0
5.6.0
5.5.2
5.5.1
5.5.0
5.4.0
5.3.5
5.3.4
5.3.3
5.3.2
5.3.1
5.3.0
5.2.1
5.2.0
5.1.1
5.1.0
5.0.3
5.0.2
5.0.1
5.0.0
4.6.4
4.6.3
4.6.2
4.6.1
4.6.0
4.5.1
4.5.0
4.4.4
4.4.3
4.4.1
4.4.0
4.3.6
4.3.5
4.3.4
4.3.3
4.3.2
4.3.1
4.3.0
4.2.6
4.2.5
4.2.4
4.2.3
4.2.2
4.2.1
4.2.0
4.1.8
4.1.7
4.1.6
4.1.5
4.1.4
4.1.3
4.1.2
4.1.1
4.1.0
4.0.0
4.0.0-rc1
4.0.0-rc.2
3.1.4
3.1.3
3.1.2
3.1.1
3.1.0
3.0.12
3.0.11
3.0.10
3.0.9
3.0.8
3.0.7
3.0.6
3.0.5
3.0.4
3.0.3
3.0.2
3.0.1
3.0.0
3.0.0-rc.8
3.0.0-rc.7
3.0.0-rc.6
3.0.0-rc.5
3.0.0-rc.4
3.0.0-rc.3
3.0.0-rc.2
3.0.0-rc.1
2.0.1
2.0.0
1.3.0
1.2.0
1.1.0
1.0.0
Create HTML templates, single page applications, Web Components, and real-time server components in Gleam!
Current section
Files
Jump to
Current section
Files
src/lustre@attribute.erl
-module(lustre@attribute).
-compile(no_auto_import).
-export([attribute/2, property/2, event/2, style/1, class/1, classes/1, id/1, type_/1, value/1, checked/1, placeholder/1, selected/1, accept/1, accept_charset/1, action/1, autocomplete/1, autofocus/1, disabled/1, name/1, pattern/1, readonly/1, require/1, for/1, max/1, min/1, step/1, cols/1, rows/1, wrap/1, href/1, target/1, download/1, rel/1, src/1, height/1, width/1, alt/1, autoplay/1, controls/1, loop/1]).
-export_type([attribute/1]).
-opaque attribute(ECZ) :: {attribute, binary(), binary()} |
{property, binary(), gleam@dynamic:dynamic()} |
{event, binary(), fun((gleam@dynamic:dynamic(), fun((ECZ) -> nil)) -> nil)}.
-spec attribute(binary(), binary()) -> attribute(any()).
attribute(Name, Value) ->
{attribute, Name, Value}.
-spec property(binary(), gleam@dynamic:dynamic()) -> attribute(any()).
property(Name, Value) ->
{property, Name, Value}.
-spec event(binary(), fun((gleam@dynamic:dynamic(), fun((EDE) -> nil)) -> nil)) -> attribute(EDE).
event(Name, Handler) ->
{event, Name, Handler}.
-spec style(list({binary(), binary()})) -> attribute(any()).
style(Properties) ->
property(<<"style"/utf8>>, '../ffi.mjs':object(Properties)).
-spec class(binary()) -> attribute(any()).
class(Name) ->
attribute(<<"className"/utf8>>, Name).
-spec classes(list({binary(), boolean()})) -> attribute(any()).
classes(Names) ->
attribute(
<<"className"/utf8>>,
begin
_pipe = Names,
_pipe@1 = gleam@list:filter(_pipe, fun gleam@pair:second/1),
_pipe@2 = gleam@list:map(_pipe@1, fun gleam@pair:first/1),
gleam@string:join(_pipe@2, <<" "/utf8>>)
end
).
-spec id(binary()) -> attribute(any()).
id(Name) ->
attribute(<<"id"/utf8>>, Name).
-spec type_(binary()) -> attribute(any()).
type_(Name) ->
attribute(<<"type"/utf8>>, Name).
-spec value(gleam@dynamic:dynamic()) -> attribute(any()).
value(Val) ->
property(<<"value"/utf8>>, Val).
-spec checked(boolean()) -> attribute(any()).
checked(Is_checked) ->
property(<<"checked"/utf8>>, gleam@dynamic:from(Is_checked)).
-spec placeholder(binary()) -> attribute(any()).
placeholder(Text) ->
attribute(<<"placeholder"/utf8>>, Text).
-spec selected(boolean()) -> attribute(any()).
selected(Is_selected) ->
property(<<"selected"/utf8>>, gleam@dynamic:from(Is_selected)).
-spec accept(list(binary())) -> attribute(any()).
accept(Types) ->
attribute(<<"accept"/utf8>>, gleam@string:join(Types, <<" "/utf8>>)).
-spec accept_charset(list(binary())) -> attribute(any()).
accept_charset(Types) ->
attribute(<<"acceptCharset"/utf8>>, gleam@string:join(Types, <<" "/utf8>>)).
-spec action(binary()) -> attribute(any()).
action(Uri) ->
attribute(<<"action"/utf8>>, Uri).
-spec autocomplete(boolean()) -> attribute(any()).
autocomplete(Should_autocomplete) ->
property(<<"autocomplete"/utf8>>, gleam@dynamic:from(Should_autocomplete)).
-spec autofocus(boolean()) -> attribute(any()).
autofocus(Should_autofocus) ->
property(<<"autoFocus"/utf8>>, gleam@dynamic:from(Should_autofocus)).
-spec disabled(boolean()) -> attribute(any()).
disabled(Is_disabled) ->
property(<<"disabled"/utf8>>, gleam@dynamic:from(Is_disabled)).
-spec name(binary()) -> attribute(any()).
name(Name) ->
attribute(<<"name"/utf8>>, Name).
-spec pattern(binary()) -> attribute(any()).
pattern(Regex) ->
attribute(<<"pattern"/utf8>>, Regex).
-spec readonly(boolean()) -> attribute(any()).
readonly(Is_readonly) ->
property(<<"readonly"/utf8>>, gleam@dynamic:from(Is_readonly)).
-spec require(boolean()) -> attribute(any()).
require(Is_required) ->
property(<<"required"/utf8>>, gleam@dynamic:from(Is_required)).
-spec for(binary()) -> attribute(any()).
for(Id) ->
attribute(<<"for"/utf8>>, Id).
-spec max(binary()) -> attribute(any()).
max(Val) ->
attribute(<<"max"/utf8>>, Val).
-spec min(binary()) -> attribute(any()).
min(Val) ->
attribute(<<"min"/utf8>>, Val).
-spec step(binary()) -> attribute(any()).
step(Val) ->
attribute(<<"step"/utf8>>, Val).
-spec cols(integer()) -> attribute(any()).
cols(Val) ->
attribute(<<"cols"/utf8>>, gleam@int:to_string(Val)).
-spec rows(integer()) -> attribute(any()).
rows(Val) ->
attribute(<<"rows"/utf8>>, gleam@int:to_string(Val)).
-spec wrap(binary()) -> attribute(any()).
wrap(Mode) ->
attribute(<<"wrap"/utf8>>, Mode).
-spec href(binary()) -> attribute(any()).
href(Uri) ->
attribute(<<"href"/utf8>>, Uri).
-spec target(binary()) -> attribute(any()).
target(Target) ->
attribute(<<"target"/utf8>>, Target).
-spec download(binary()) -> attribute(any()).
download(Filename) ->
attribute(<<"download"/utf8>>, Filename).
-spec rel(binary()) -> attribute(any()).
rel(Relationship) ->
attribute(<<"rel"/utf8>>, Relationship).
-spec src(binary()) -> attribute(any()).
src(Uri) ->
attribute(<<"src"/utf8>>, Uri).
-spec height(integer()) -> attribute(any()).
height(Val) ->
attribute(<<"height"/utf8>>, gleam@int:to_string(Val)).
-spec width(integer()) -> attribute(any()).
width(Val) ->
attribute(<<"width"/utf8>>, gleam@int:to_string(Val)).
-spec alt(binary()) -> attribute(any()).
alt(Text) ->
attribute(<<"alt"/utf8>>, Text).
-spec autoplay(boolean()) -> attribute(any()).
autoplay(Should_autoplay) ->
property(<<"autoplay"/utf8>>, gleam@dynamic:from(Should_autoplay)).
-spec controls(boolean()) -> attribute(any()).
controls(Visible) ->
property(<<"controls"/utf8>>, gleam@dynamic:from(Visible)).
-spec loop(boolean()) -> attribute(any()).
loop(Should_loop) ->
property(<<"loop"/utf8>>, gleam@dynamic:from(Should_loop)).