element_url.erl 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. -module(element_url).
  2. %%-author('Vladimir Galunshchikov').
  3. -include_lib("nitro/include/nitro.hrl").
  4. -compile([export_all, nowarn_export_all]).
  5. render_element(Record) ->
  6. Id = case Record#url.postback of
  7. undefined -> Record#url.id;
  8. Postback ->
  9. ID0 = case Record#url.id of
  10. undefined -> nitro:temp_id();
  11. I -> I
  12. end,
  13. nitro:wire( #event{type = click, postback = Postback, target = ID0,
  14. source = Record#url.source, delegate = Record#url.delegate} ),
  15. ID0
  16. end,
  17. List = [
  18. %% global
  19. {<<"accesskey">>, Record#url.accesskey},
  20. {<<"class">>, Record#url.class},
  21. {<<"contenteditable">>,
  22. case Record#url.contenteditable of
  23. true -> "true";
  24. false -> "false";
  25. _ -> undefined
  26. end},
  27. {<<"contextmenu">>, Record#url.contextmenu},
  28. {<<"dir">>,
  29. case Record#url.dir of
  30. "ltr" -> "ltr";
  31. "rtl" -> "rtl";
  32. "auto" -> "auto";
  33. _ -> undefined
  34. end},
  35. {<<"draggable">>,
  36. case Record#url.draggable of
  37. true -> "true";
  38. false -> "false";
  39. _ -> undefined
  40. end},
  41. {<<"dropzone">>, Record#url.dropzone},
  42. {<<"hidden">>,
  43. case Record#url.hidden of
  44. "hidden" -> "hidden";
  45. _ -> undefined
  46. end},
  47. {<<"id">>, Id},
  48. {<<"lang">>, Record#url.lang},
  49. {<<"spellcheck">>,
  50. case Record#url.spellcheck of
  51. true -> "true";
  52. false -> "false";
  53. _ -> undefined
  54. end},
  55. {<<"style">>, Record#url.style},
  56. {<<"tabindex">>, Record#url.tabindex},
  57. {<<"title">>, Record#url.title},
  58. {<<"translate">>,
  59. case Record#url.contenteditable of
  60. "yes" -> "yes";
  61. "no" -> "no";
  62. _ -> undefined
  63. end},
  64. %% spec
  65. {<<"autocomplete">>,
  66. case Record#url.autocomplete of
  67. true -> "on";
  68. false -> "off";
  69. _ -> undefined
  70. end},
  71. {<<"autofocus">>,
  72. case Record#url.autofocus of
  73. true -> "autofocus";
  74. _ -> undefined
  75. end},
  76. {<<"disabled">>,
  77. case Record#url.disabled of
  78. true -> "disabled";
  79. _ -> undefined
  80. end},
  81. {<<"form">>, Record#url.form},
  82. {<<"list">>, Record#url.list},
  83. {<<"maxlength">>, Record#url.maxlength},
  84. {<<"name">>, Record#url.name},
  85. {<<"pattern">>, Record#url.pattern},
  86. {<<"placeholder">>, Record#url.placeholder},
  87. {<<"readonly">>,
  88. case Record#url.readonly of
  89. true -> "readonly";
  90. _ -> undefined
  91. end},
  92. {<<"required">>,
  93. case Record#url.required of
  94. true -> "required";
  95. _ -> undefined
  96. end},
  97. {<<"size">>,Record#url.size},
  98. {<<"type">>, <<"url">>},
  99. {<<"value">>, Record#url.value} | Record#url.data_fields
  100. ],
  101. wf_tags:emit_tag(<<"input">>, nitro:render(Record#url.body), List).