element_link.erl 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. -module(element_link).
  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#link.show_if == false -> [<<>>];
  9. render_element(Record) ->
  10. Id = case Record#link.postback of
  11. [] -> Record#link.id;
  12. Postback ->
  13. ID0 = case Record#link.id of
  14. [] -> nitro:temp_id();
  15. I -> I
  16. end,
  17. nitro:wire( #event{ type = click, postback = Postback, target = ID0,
  18. source = Record#link.source,
  19. delegate = Record#link.delegate,
  20. validation = Record#link.validate} ),
  21. ID0
  22. end,
  23. List = [
  24. %% global
  25. {<<"accesskey">>, Record#link.accesskey},
  26. {<<"class">>, Record#link.class},
  27. {<<"contenteditable">>,
  28. case Record#link.contenteditable of
  29. true -> "true";
  30. false -> "false";
  31. _ -> []
  32. end},
  33. {<<"contextmenu">>, Record#link.contextmenu},
  34. {<<"dir">>,
  35. case Record#link.dir of
  36. ltr -> "ltr";
  37. rtl -> "rtl";
  38. auto -> "auto";
  39. _ -> []
  40. end},
  41. {<<"draggable">>,
  42. case Record#link.draggable of
  43. true -> "true";
  44. false -> "false";
  45. _ -> []
  46. end},
  47. {<<"dropzone">>, Record#link.dropzone},
  48. {<<"hidden">>,
  49. case Record#link.hidden of
  50. true -> "hidden";
  51. _ -> []
  52. end},
  53. {<<"id">>, Id},
  54. {<<"lang">>, Record#link.lang},
  55. {<<"spellcheck">>,
  56. case Record#link.spellcheck of
  57. true -> "true";
  58. false -> "false";
  59. _ -> []
  60. end},
  61. {<<"style">>, Record#link.style},
  62. {<<"tabindex">>, Record#link.tabindex},
  63. {<<"title">>, Record#link.title},
  64. {<<"translate">>,
  65. case Record#link.contenteditable of
  66. true -> "yes";
  67. false -> "no";
  68. _ -> []
  69. end},
  70. %% spec
  71. {<<"href">>, nitro:coalesce( [Record#link.href,Record#link.url] ) },
  72. {<<"hreflang">>, Record#link.hreflang},
  73. {<<"target">>, Record#link.target},
  74. {<<"media">>, Record#link.media},
  75. {<<"rel">>, Record#link.rel},
  76. {<<"type">>, Record#link.type},
  77. {<<"download">>, Record#link.download},
  78. {<<"name">>, Record#link.name},
  79. {<<"onclick">>, Record#link.onclick},
  80. {<<"onmouseover">>, Record#link.onmouseover} | Record#link.data_fields
  81. ],
  82. wf_tags:emit_tag(<<"a">>, nitro:render(Record#link.body), List).