element_radio.erl 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. -module(element_radio).
  2. %%-author('Rusty Klophaus').
  3. -include_lib("nitro/include/nitro.hrl").
  4. -include_lib("nitro/include/event.hrl").
  5. -export([
  6. render_element/1
  7. ]).
  8. render_element(Record) when Record#radio.show_if == false -> [<<>>];
  9. render_element(Record) ->
  10. ID = case Record#radio.id of
  11. [] -> nitro:temp_id();
  12. RadioID -> RadioID
  13. end,
  14. case Record#radio.postback of
  15. [] -> skip;
  16. Postback ->
  17. nitro:wire( #event{type = change, postback = Postback, target = ID,
  18. delegate = Record#radio.delegate} )
  19. end,
  20. TypeChecked = case Record#radio.checked of
  21. true -> [{<<"checked">>, <<"">>}, {<<"type">>, <<"radio">>}];
  22. _ -> [{<<"type">>, <<"radio">>}]
  23. end ++ case Record#radio.disabled of
  24. true -> [{<<"disabled">>, <<"disabled">>}];
  25. _ -> []
  26. end,
  27. [wf_tags:emit_tag(<<"input">>, nitro:render(Record#radio.body), TypeChecked ++ [
  28. {<<"id">>, ID},
  29. {<<"value">>, Record#radio.value},
  30. {<<"name">>, nitro:coalesce( [Record#radio.html_name, Record#radio.name] )},
  31. {<<"class">>, Record#radio.class},
  32. {<<"style">>, Record#radio.style},
  33. {<<"onclick">>, Record#radio.onclick},
  34. {<<"required">>,
  35. case Record#radio.required of
  36. true -> "required";
  37. _ -> []
  38. end}
  39. ]) ].