Browse Source

eliminate undefined replace by []

Namdak Tonpa 6 years ago
parent
commit
c071dbb618
70 changed files with 588 additions and 581 deletions
  1. 11 9
      include/nitro.hrl
  2. 7 7
      src/elements/element_area.erl
  3. 12 12
      src/elements/element_audio.erl
  4. 3 3
      src/elements/element_button.erl
  5. 19 19
      src/elements/element_calendar.erl
  6. 7 7
      src/elements/element_canvas.erl
  7. 12 12
      src/elements/element_checkbox.erl
  8. 7 7
      src/elements/element_col.erl
  9. 7 7
      src/elements/element_colgroup.erl
  10. 11 11
      src/elements/element_color.erl
  11. 8 8
      src/elements/element_command.erl
  12. 13 13
      src/elements/element_date.erl
  13. 13 13
      src/elements/element_datetime.erl
  14. 13 13
      src/elements/element_datetime_local.erl
  15. 7 7
      src/elements/element_del.erl
  16. 8 8
      src/elements/element_details.erl
  17. 5 5
      src/elements/element_dropdown.erl
  18. 14 14
      src/elements/element_email.erl
  19. 6 6
      src/elements/element_embed.erl
  20. 9 9
      src/elements/element_fieldset.erl
  21. 12 12
      src/elements/element_file.erl
  22. 11 11
      src/elements/element_form.erl
  23. 7 7
      src/elements/element_hidden.erl
  24. 7 7
      src/elements/element_html.erl
  25. 7 7
      src/elements/element_iframe.erl
  26. 10 10
      src/elements/element_input.erl
  27. 9 9
      src/elements/element_input_button.erl
  28. 10 10
      src/elements/element_input_image.erl
  29. 13 13
      src/elements/element_input_time.erl
  30. 7 7
      src/elements/element_ins.erl
  31. 10 10
      src/elements/element_keygen.erl
  32. 8 8
      src/elements/element_link.erl
  33. 7 7
      src/elements/element_map.erl
  34. 8 8
      src/elements/element_menu.erl
  35. 6 6
      src/elements/element_meta.erl
  36. 6 6
      src/elements/element_meta_base.erl
  37. 6 6
      src/elements/element_meta_link.erl
  38. 7 7
      src/elements/element_meter.erl
  39. 12 12
      src/elements/element_month.erl
  40. 13 13
      src/elements/element_number.erl
  41. 7 7
      src/elements/element_object.erl
  42. 7 7
      src/elements/element_output.erl
  43. 6 6
      src/elements/element_param.erl
  44. 13 13
      src/elements/element_password.erl
  45. 7 7
      src/elements/element_progress.erl
  46. 7 7
      src/elements/element_q.erl
  47. 3 3
      src/elements/element_radio.erl
  48. 11 11
      src/elements/element_range.erl
  49. 10 10
      src/elements/element_reset.erl
  50. 9 9
      src/elements/element_script.erl
  51. 13 13
      src/elements/element_search.erl
  52. 8 8
      src/elements/element_select.erl
  53. 6 6
      src/elements/element_source.erl
  54. 8 8
      src/elements/element_style.erl
  55. 3 3
      src/elements/element_submit.erl
  56. 7 7
      src/elements/element_summary.erl
  57. 5 5
      src/elements/element_table.erl
  58. 13 13
      src/elements/element_tel.erl
  59. 12 12
      src/elements/element_textarea.erl
  60. 3 3
      src/elements/element_textbox.erl
  61. 6 6
      src/elements/element_time.erl
  62. 2 2
      src/elements/element_tr.erl
  63. 8 8
      src/elements/element_track.erl
  64. 1 1
      src/elements/element_upload.erl
  65. 13 13
      src/elements/element_url.erl
  66. 12 12
      src/elements/element_video.erl
  67. 13 13
      src/elements/element_week.erl
  68. 1 0
      src/render/wf_event.erl
  69. 2 0
      src/render/wf_render.erl
  70. 4 2
      src/render/wf_render_elements.erl

+ 11 - 9
include/nitro.hrl

@@ -5,17 +5,19 @@
 -define(CTX, (get(context))).
 -define(CTX, (get(context))).
 -endif.
 -endif.
 
 
--define(DEFAULT_BASE, {?ELEMENT_BASE(undefined)}).
--define(DEFAULT_BASE_TAG(Tag), {?ELEMENT_BASE(undefined,Tag,undefined)}).
--define(ELEMENT_BASE(Module), ?ELEMENT_BASE(Module,undefined,undefined)).
+-define(DEFAULT_BASE, {?ELEMENT_BASE([])}).
+-define(DEFAULT_BASE_TAG(Tag), {?ELEMENT_BASE([],Tag,[])}).
+-define(ELEMENT_BASE(Module), ?ELEMENT_BASE(Module,[],[])).
 -define(ELEMENT_BASE(Module,Tag,Delegate),
 -define(ELEMENT_BASE(Module,Tag,Delegate),
-        ancestor=element, id=[], module=Module, delegate=Delegate, validation=[], validate=[], actions=[], class=[], style=[], source=[], onmouseover=[], onkeypress=[],
-        onchange=[], onkeyup=[], onkeydown=[], onclick=[],
-        data_fields=[], aria_states=[], body=[], role=[], tabindex=[], show_if=true, html_tag=Tag, title=[], postback=[],
-        accesskey=[], contenteditable=[], contextmenu=[], dir=[], draggable=[], dropzone=[],
-        hidden=[], lang=[], spellcheck=[], translate=[], onblur=[], onerror=[], onfocus=[], onmessage=[], onresize=[]).
+        ancestor=element, id=[], module=Module, delegate=Delegate, validation=[],
+        validate=[], actions=[], class=[], style=[], source=[], onmouseover=[],
+        onkeypress=[], onchange=[], onkeyup=[], onkeydown=[], onclick=[],
+        data_fields=[], aria_states=[], body=[], role=[], tabindex=[], show_if=true,
+        html_tag=Tag, title=[], postback=[], accesskey=[], contenteditable=[],
+        contextmenu=[], dir=[], draggable=[], dropzone=[], hidden=[], lang=[],
+        spellcheck=[], translate=[], onblur=[], onerror=[], onfocus=[], onmessage=[], onresize=[]).
 -define(ACTION_BASE(Module), ancestor=action, trigger=[], target=[], module=Module, actions=[], source=[]).
 -define(ACTION_BASE(Module), ancestor=action, trigger=[], target=[], module=Module, actions=[], source=[]).
--define(CTRL_BASE(Module), ?ELEMENT_BASE(Module,undefined,Module)).
+-define(CTRL_BASE(Module), ?ELEMENT_BASE(Module,[],Module)).
 
 
 -record(element, {?ELEMENT_BASE(undefined)}).
 -record(element, {?ELEMENT_BASE(undefined)}).
 -record(literal, {?ELEMENT_BASE(element_literal), html_encode=true }).
 -record(literal, {?ELEMENT_BASE(element_literal), html_encode=true }).

+ 7 - 7
src/elements/element_area.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#area.accesskey},
       {<<"accesskey">>, Record#area.accesskey},
       {<<"class">>, Record#area.class},
       {<<"class">>, Record#area.class},
-      {<<"contenteditable">>, case Record#area.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#area.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#area.contextmenu},
       {<<"contextmenu">>, Record#area.contextmenu},
-      {<<"dir">>, case Record#area.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#area.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#area.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#area.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#area.dropzone},
       {<<"dropzone">>, Record#area.dropzone},
-      {<<"hidden">>, case Record#area.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#area.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#area.id},
       {<<"id">>, Record#area.id},
       {<<"lang">>, Record#area.lang},
       {<<"lang">>, Record#area.lang},
-      {<<"spellcheck">>, case Record#area.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#area.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#area.style},
       {<<"style">>, Record#area.style},
       {<<"tabindex">>, Record#area.tabindex},
       {<<"tabindex">>, Record#area.tabindex},
       {<<"title">>, Record#area.title},
       {<<"title">>, Record#area.title},
-      {<<"translate">>, case Record#area.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#area.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"alt">>,Record#area.alt},
       {<<"alt">>,Record#area.alt},
       {<<"coords">>,Record#area.coords},
       {<<"coords">>,Record#area.coords},
@@ -28,7 +28,7 @@ render_element(Record) ->
       {<<"hreflang">>,Record#area.hreflang},
       {<<"hreflang">>,Record#area.hreflang},
       {<<"media">>,Record#area.media},
       {<<"media">>,Record#area.media},
       {<<"rel">>,Record#area.rel},
       {<<"rel">>,Record#area.rel},
-      {<<"shape">>, case Record#area.shape of "rect" -> "rect"; "circle" -> "circle"; "poly" -> "poly"; "default" -> "default"; _ -> undefined end},
+      {<<"shape">>, case Record#area.shape of "rect" -> "rect"; "circle" -> "circle"; "poly" -> "poly"; "default" -> "default"; _ -> [] end},
       {<<"target">>,Record#area.target},
       {<<"target">>,Record#area.target},
       {<<"type">>,Record#area.type} | Record#area.data_fields
       {<<"type">>,Record#area.type} | Record#area.data_fields
     ],
     ],

+ 12 - 12
src/elements/element_audio.erl

@@ -8,27 +8,27 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#audio.accesskey},
       {<<"accesskey">>, Record#audio.accesskey},
       {<<"class">>, Record#audio.class},
       {<<"class">>, Record#audio.class},
-      {<<"contenteditable">>, case Record#audio.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#audio.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#audio.contextmenu},
       {<<"contextmenu">>, Record#audio.contextmenu},
-      {<<"dir">>, case Record#audio.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#audio.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#audio.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#audio.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#audio.dropzone},
       {<<"dropzone">>, Record#audio.dropzone},
-      {<<"hidden">>, case Record#audio.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#audio.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#audio.id},
       {<<"id">>, Record#audio.id},
       {<<"lang">>, Record#audio.lang},
       {<<"lang">>, Record#audio.lang},
-      {<<"spellcheck">>, case Record#audio.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#audio.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#audio.style},
       {<<"style">>, Record#audio.style},
       {<<"tabindex">>, Record#audio.tabindex},
       {<<"tabindex">>, Record#audio.tabindex},
       {<<"title">>, Record#audio.title},
       {<<"title">>, Record#audio.title},
-      {<<"translate">>, case Record#audio.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#audio.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autoplay">>, case Record#audio.autoplay of true -> "autoplay"; _ -> undefined end},      
-      {<<"controls">>, case Record#audio.controls of true -> "controls"; _ -> undefined end},      
-      {<<"loop">>, case Record#audio.loop of true -> "loop"; _ -> undefined end},            
+      {<<"autoplay">>, case Record#audio.autoplay of true -> "autoplay"; _ -> [] end},      
+      {<<"controls">>, case Record#audio.controls of true -> "controls"; _ -> [] end},      
+      {<<"loop">>, case Record#audio.loop of true -> "loop"; _ -> [] end},            
       {<<"mediagroup">>, Record#audio.mediagroup},      
       {<<"mediagroup">>, Record#audio.mediagroup},      
-      {<<"muted">>, case Record#audio.muted of true -> "muted"; _ -> undefined end},
-      {<<"preload">>, case Record#audio.preload of "auto" -> "auto"; "none" -> "none"; "metadata" -> "metadata"; _ -> undefined end},
+      {<<"muted">>, case Record#audio.muted of true -> "muted"; _ -> [] end},
+      {<<"preload">>, case Record#audio.preload of "auto" -> "auto"; "none" -> "none"; "metadata" -> "metadata"; _ -> [] end},
       {<<"src">>, Record#audio.src},
       {<<"src">>, Record#audio.src},
       {<<"width">>, Record#audio.width} | Record#audio.data_fields
       {<<"width">>, Record#audio.width} | Record#audio.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"audio">>, nitro:render(case Record#audio.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"audio">>, nitro:render(case Record#audio.body of [] -> []; B -> B end), List).

+ 3 - 3
src/elements/element_button.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#button.postback of
     Id = case Record#button.postback of
-        undefined -> Record#button.id;
+        [] -> Record#button.id;
         [] -> Record#button.id;
         [] -> Record#button.id;
         Postback ->
         Postback ->
-          ID = case Record#button.id of undefined -> nitro:temp_id(); I -> I end,
+          ID = case Record#button.id of [] -> nitro:temp_id(); I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#button.source, delegate=Record#button.delegate }),
                   source=Record#button.source, delegate=Record#button.delegate }),
           ID end,
           ID end,
@@ -20,5 +20,5 @@ render_element(Record) ->
         {<<"style">>, Record#button.style},
         {<<"style">>, Record#button.style},
         {<<"onchange">>, Record#button.onchange},
         {<<"onchange">>, Record#button.onchange},
         {<<"onclick">>, Record#button.onclick},
         {<<"onclick">>, Record#button.onclick},
-        {<<"disabled">>, if Record#button.disabled == true -> "disabled"; true -> undefined end},
+        {<<"disabled">>, if Record#button.disabled == true -> "disabled"; true -> [] end},
         {<<"value">>, Record#button.value}  | Record#button.data_fields ]).
         {<<"value">>, Record#button.value}  | Record#button.data_fields ]).

+ 19 - 19
src/elements/element_calendar.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#calendar.postback of
     Id = case Record#calendar.postback of
-        undefined -> Record#calendar.id;
+        [] -> Record#calendar.id;
         Postback ->
         Postback ->
           ID = case Record#calendar.id of
           ID = case Record#calendar.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#calendar.source, delegate=Record#calendar.delegate }),
                   source=Record#calendar.source, delegate=Record#calendar.delegate }),
@@ -20,27 +20,27 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#calendar.accesskey},
       {<<"accesskey">>, Record#calendar.accesskey},
       {<<"class">>, Record#calendar.class},
       {<<"class">>, Record#calendar.class},
-      {<<"contenteditable">>, case Record#calendar.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#calendar.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#calendar.contextmenu},
       {<<"contextmenu">>, Record#calendar.contextmenu},
-      {<<"dir">>, case Record#calendar.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#calendar.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#calendar.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#calendar.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#calendar.dropzone},
       {<<"dropzone">>, Record#calendar.dropzone},
-      {<<"hidden">>, case Record#calendar.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#calendar.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
-      {<<"spellcheck">>, case Record#calendar.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#calendar.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#calendar.style},
       {<<"style">>, Record#calendar.style},
       {<<"tabindex">>, Record#calendar.tabindex},
       {<<"tabindex">>, Record#calendar.tabindex},
       {<<"title">>, Record#calendar.title},
       {<<"title">>, Record#calendar.title},
-      {<<"translate">>, case Record#calendar.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},
+      {<<"translate">>, case Record#calendar.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},
       % spec
       % spec
-      {<<"autocomplete">>, case Record#calendar.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#calendar.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#calendar.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#calendar.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#calendar.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#calendar.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#calendar.form},
       {<<"form">>,Record#calendar.form},
       {<<"list">>,Record#calendar.list},
       {<<"list">>,Record#calendar.list},
       {<<"name">>,Record#calendar.name},
       {<<"name">>,Record#calendar.name},
-      {<<"readonly">>,if Record#calendar.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#calendar.required == true -> "required"; true -> undefined end},
+      {<<"readonly">>,if Record#calendar.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#calendar.required == true -> "required"; true -> [] end},
       {<<"step">>,Record#calendar.step},
       {<<"step">>,Record#calendar.step},
       {<<"type">>, <<"calendar">>},
       {<<"type">>, <<"calendar">>},
       {<<"pattern">>,Record#calendar.pattern},
       {<<"pattern">>,Record#calendar.pattern},
@@ -51,15 +51,15 @@ render_element(Record) ->
 
 
 init(Id,#calendar{minDate=Min,maxDate=Max,lang=Lang,format=Form,value=Value,onSelect=SelectFn,disableDayFn=DisDayFn, position=Pos,reposition=Repos,yearRange=YearRange}) ->
 init(Id,#calendar{minDate=Min,maxDate=Max,lang=Lang,format=Form,value=Value,onSelect=SelectFn,disableDayFn=DisDayFn, position=Pos,reposition=Repos,yearRange=YearRange}) ->
     ID = nitro:to_list(Id),
     ID = nitro:to_list(Id),
-    I18n =        case Lang  of undefined  -> "clLangs.ua"; Lang -> "clLangs."++nitro:to_list(Lang) end,
-    Format =      case Form  of undefined  -> "YYYY-MM-DD"; Form -> Form end,
+    I18n =        case Lang  of []  -> "clLangs.ua"; Lang -> "clLangs."++nitro:to_list(Lang) end,
+    Format =      case Form  of []  -> "YYYY-MM-DD"; Form -> Form end,
     DefaultDate = case Value of {Yv,Mv,Dv} -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Yv),nitro:to_list(Mv-1),nitro:to_list(Dv)]);  _ -> "null" end,
     DefaultDate = case Value of {Yv,Mv,Dv} -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Yv),nitro:to_list(Mv-1),nitro:to_list(Dv)]);  _ -> "null" end,
     MinDate =     case Min   of {Y,M,D}    -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Y), nitro:to_list(M-1), nitro:to_list(D)]);   _ -> "new Date(2000, 0, 1)" end,
     MinDate =     case Min   of {Y,M,D}    -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Y), nitro:to_list(M-1), nitro:to_list(D)]);   _ -> "new Date(2000, 0, 1)" end,
     MaxDate =     case Max   of {Y1,M1,D1} -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Y1),nitro:to_list(M1-1),nitro:to_list(D1)]);  _ -> "new Date(2087, 4, 13)" end,
     MaxDate =     case Max   of {Y1,M1,D1} -> nitro:f("new Date(~s,~s,~s)",[nitro:to_list(Y1),nitro:to_list(M1-1),nitro:to_list(D1)]);  _ -> "new Date(2087, 4, 13)" end,
-    OnSelect =    case SelectFn of undefined -> "null"; _ -> SelectFn end,
-    DisDay =      case DisDayFn of undefined -> "null"; _ -> nitro:f("function(thisDate){return ~s(thisDate);}",[DisDayFn]) end,
-    Position =    case Pos of undefined -> "bottom left"; _ -> nitro:to_list(Pos) end,
-    Reposition =  case Repos of undefined -> "true"; _ -> nitro:to_list(Repos) end,
+    OnSelect =    case SelectFn of [] -> "null"; _ -> SelectFn end,
+    DisDay =      case DisDayFn of [] -> "null"; _ -> nitro:f("function(thisDate){return ~s(thisDate);}",[DisDayFn]) end,
+    Position =    case Pos of [] -> "bottom left"; _ -> nitro:to_list(Pos) end,
+    Reposition =  case Repos of [] -> "true"; _ -> nitro:to_list(Repos) end,
     nitro:wire(nitro:f(
     nitro:wire(nitro:f(
         "pickers['~s'] = new Pikaday({
         "pickers['~s'] = new Pikaday({
             field: document.getElementById('~s'),
             field: document.getElementById('~s'),

+ 7 - 7
src/elements/element_canvas.erl

@@ -8,21 +8,21 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#canvas.accesskey},
       {<<"accesskey">>, Record#canvas.accesskey},
       {<<"class">>, Record#canvas.class},
       {<<"class">>, Record#canvas.class},
-      {<<"contenteditable">>, case Record#canvas.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#canvas.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#canvas.contextmenu},
       {<<"contextmenu">>, Record#canvas.contextmenu},
-      {<<"dir">>, case Record#canvas.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#canvas.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#canvas.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#canvas.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#canvas.dropzone},
       {<<"dropzone">>, Record#canvas.dropzone},
-      {<<"hidden">>, case Record#canvas.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#canvas.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#canvas.id},
       {<<"id">>, Record#canvas.id},
       {<<"lang">>, Record#canvas.lang},
       {<<"lang">>, Record#canvas.lang},
-      {<<"spellcheck">>, case Record#canvas.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#canvas.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#canvas.style},
       {<<"style">>, Record#canvas.style},
       {<<"tabindex">>, Record#canvas.tabindex},
       {<<"tabindex">>, Record#canvas.tabindex},
       {<<"title">>, Record#canvas.title},
       {<<"title">>, Record#canvas.title},
-      {<<"translate">>, case Record#canvas.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#canvas.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"height">>,Record#canvas.height},
       {<<"height">>,Record#canvas.height},
       {<<"width">>,Record#canvas.width} | Record#canvas.data_fields
       {<<"width">>,Record#canvas.width} | Record#canvas.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"canvas">>, nitro:render(case Record#canvas.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"canvas">>, nitro:render(case Record#canvas.body of [] -> []; B -> B end), List).

+ 12 - 12
src/elements/element_checkbox.erl

@@ -4,40 +4,40 @@
 -compile(export_all).
 -compile(export_all).
 
 
 render_element(Record) -> 
 render_element(Record) -> 
-    Id = case Record#checkbox.id of undefined -> nitro:temp_id(); I->I end,
+    Id = case Record#checkbox.id of [] -> nitro:temp_id(); I->I end,
     case Record#checkbox.postback of
     case Record#checkbox.postback of
-        undefined -> ignore;
+        [] -> ignore;
         Postback -> nitro:wire(#event { type=change, postback=Postback, target=Id, source=Record#checkbox.source, delegate=Record#checkbox.delegate })
         Postback -> nitro:wire(#event { type=change, postback=Postback, target=Id, source=Record#checkbox.source, delegate=Record#checkbox.delegate })
     end,
     end,
    Label = [ wf_tags:emit_tag(<<"input">>, [], [
    Label = [ wf_tags:emit_tag(<<"input">>, [], [
       % global
       % global
       {<<"accesskey">>, Record#checkbox.accesskey},
       {<<"accesskey">>, Record#checkbox.accesskey},
       {<<"class">>, Record#checkbox.class},
       {<<"class">>, Record#checkbox.class},
-      {<<"contenteditable">>, case Record#checkbox.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#checkbox.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#checkbox.contextmenu},
       {<<"contextmenu">>, Record#checkbox.contextmenu},
-      {<<"dir">>, case Record#checkbox.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#checkbox.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#checkbox.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#checkbox.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#checkbox.dropzone},
       {<<"dropzone">>, Record#checkbox.dropzone},
-      {<<"hidden">>, case Record#checkbox.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#checkbox.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#checkbox.lang},
       {<<"lang">>, Record#checkbox.lang},
-      {<<"spellcheck">>, case Record#checkbox.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#checkbox.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#checkbox.style},
       {<<"style">>, Record#checkbox.style},
       {<<"tabindex">>, Record#checkbox.tabindex},
       {<<"tabindex">>, Record#checkbox.tabindex},
       {<<"title">>, Record#checkbox.title},
       {<<"title">>, Record#checkbox.title},
-      {<<"translate">>, case Record#checkbox.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#checkbox.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"autofocus">>,Record#checkbox.autofocus},
       {<<"autofocus">>,Record#checkbox.autofocus},
-      {<<"checked">>, if Record#checkbox.checked==true -> <<"checked">>; true -> undefined end},
+      {<<"checked">>, if Record#checkbox.checked==true -> <<"checked">>; true -> [] end},
       {<<"data-toggle">>, <<"checkbox">>},
       {<<"data-toggle">>, <<"checkbox">>},
-      {<<"disabled">>, if Record#checkbox.disabled == true -> "disabled"; true -> undefined end},
+      {<<"disabled">>, if Record#checkbox.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>, Record#checkbox.form},
       {<<"form">>, Record#checkbox.form},
       {<<"name">>, Record#checkbox.name},            
       {<<"name">>, Record#checkbox.name},            
-      {<<"required">>, if Record#checkbox.required == true -> "required"; true -> undefined end},
+      {<<"required">>, if Record#checkbox.required == true -> "required"; true -> [] end},
       {<<"type">>, <<"checkbox">>},
       {<<"type">>, <<"checkbox">>},
       {<<"value">>, Record#checkbox.value} | Record#checkbox.data_fields
       {<<"value">>, Record#checkbox.value} | Record#checkbox.data_fields
       ]),
       ]),
-      case Record#checkbox.body of undefined -> []; B -> B end ],
+      case Record#checkbox.body of [] -> []; B -> B end ],
     wf_tags:emit_tag(<<"label">>, nitro:render(Label), [
     wf_tags:emit_tag(<<"label">>, nitro:render(Label), [
         {<<"class">>, Record#checkbox.class},
         {<<"class">>, Record#checkbox.class},
         {<<"style">>, Record#checkbox.style},
         {<<"style">>, Record#checkbox.style},

+ 7 - 7
src/elements/element_col.erl

@@ -8,20 +8,20 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#col.accesskey},
       {<<"accesskey">>, Record#col.accesskey},
       {<<"class">>, Record#col.class},
       {<<"class">>, Record#col.class},
-      {<<"contenteditable">>, case Record#col.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#col.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#col.contextmenu},
       {<<"contextmenu">>, Record#col.contextmenu},
-      {<<"dir">>, case Record#col.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#col.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#col.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#col.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#col.dropzone},
       {<<"dropzone">>, Record#col.dropzone},
-      {<<"hidden">>, case Record#col.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#col.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#col.id},
       {<<"id">>, Record#col.id},
       {<<"lang">>, Record#col.lang},
       {<<"lang">>, Record#col.lang},
-      {<<"spellcheck">>, case Record#col.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#col.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#col.style},
       {<<"style">>, Record#col.style},
       {<<"tabindex">>, Record#col.tabindex},
       {<<"tabindex">>, Record#col.tabindex},
       {<<"title">>, Record#col.title},
       {<<"title">>, Record#col.title},
-      {<<"translate">>, case Record#col.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#col.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"span">>,Record#col.span} | Record#col.data_fields
       {<<"span">>,Record#col.span} | Record#col.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"col">>, nitro:render(case Record#col.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"col">>, nitro:render(case Record#col.body of [] -> []; B -> B end), List).

+ 7 - 7
src/elements/element_colgroup.erl

@@ -8,20 +8,20 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#colgroup.accesskey},
       {<<"accesskey">>, Record#colgroup.accesskey},
       {<<"class">>, Record#colgroup.class},
       {<<"class">>, Record#colgroup.class},
-      {<<"contenteditable">>, case Record#colgroup.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#colgroup.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#colgroup.contextmenu},
       {<<"contextmenu">>, Record#colgroup.contextmenu},
-      {<<"dir">>, case Record#colgroup.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#colgroup.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#colgroup.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#colgroup.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#colgroup.dropzone},
       {<<"dropzone">>, Record#colgroup.dropzone},
-      {<<"hidden">>, case Record#colgroup.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#colgroup.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#colgroup.id},
       {<<"id">>, Record#colgroup.id},
       {<<"lang">>, Record#colgroup.lang},
       {<<"lang">>, Record#colgroup.lang},
-      {<<"spellcheck">>, case Record#colgroup.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#colgroup.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#colgroup.style},
       {<<"style">>, Record#colgroup.style},
       {<<"tabindex">>, Record#colgroup.tabindex},
       {<<"tabindex">>, Record#colgroup.tabindex},
       {<<"title">>, Record#colgroup.title},
       {<<"title">>, Record#colgroup.title},
-      {<<"translate">>, case Record#colgroup.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#colgroup.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"span">>,Record#colgroup.span} | Record#colgroup.data_fields
       {<<"span">>,Record#colgroup.span} | Record#colgroup.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"colgroup">>, nitro:render(case Record#colgroup.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"colgroup">>, nitro:render(case Record#colgroup.body of [] -> []; B -> B end), List).

+ 11 - 11
src/elements/element_color.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#color.postback of
     Id = case Record#color.postback of
-        undefined -> Record#color.id;
+        [] -> Record#color.id;
         Postback ->
         Postback ->
           ID = case Record#color.id of
           ID = case Record#color.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#color.source, delegate=Record#color.delegate }),
                   source=Record#color.source, delegate=Record#color.delegate }),
@@ -17,23 +17,23 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#color.accesskey},
       {<<"accesskey">>, Record#color.accesskey},
       {<<"class">>, Record#color.class},
       {<<"class">>, Record#color.class},
-      {<<"contenteditable">>, case Record#color.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#color.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#color.contextmenu},
       {<<"contextmenu">>, Record#color.contextmenu},
-      {<<"dir">>, case Record#color.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#color.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#color.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#color.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#color.dropzone},
       {<<"dropzone">>, Record#color.dropzone},
-      {<<"hidden">>, case Record#color.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#color.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#color.lang},
       {<<"lang">>, Record#color.lang},
-      {<<"spellcheck">>, case Record#color.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#color.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#color.style},
       {<<"style">>, Record#color.style},
       {<<"tabindex">>, Record#color.tabindex},
       {<<"tabindex">>, Record#color.tabindex},
       {<<"title">>, Record#color.title},
       {<<"title">>, Record#color.title},
-      {<<"translate">>, case Record#color.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#color.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>,case Record#color.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#color.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#color.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>,case Record#color.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#color.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#color.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#color.form},
       {<<"form">>,Record#color.form},
       {<<"list">>,Record#color.list},      
       {<<"list">>,Record#color.list},      
       {<<"name">>,Record#color.name},
       {<<"name">>,Record#color.name},

+ 8 - 8
src/elements/element_command.erl

@@ -8,24 +8,24 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#command.accesskey},
       {<<"accesskey">>, Record#command.accesskey},
       {<<"class">>, Record#command.class},
       {<<"class">>, Record#command.class},
-      {<<"contenteditable">>, case Record#command.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#command.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#command.contextmenu},
       {<<"contextmenu">>, Record#command.contextmenu},
-      {<<"dir">>, case Record#command.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#command.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#command.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#command.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#command.dropzone},
       {<<"dropzone">>, Record#command.dropzone},
-      {<<"hidden">>, case Record#command.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#command.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#command.id},
       {<<"id">>, Record#command.id},
       {<<"lang">>, Record#command.lang},
       {<<"lang">>, Record#command.lang},
-      {<<"spellcheck">>, case Record#command.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#command.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#command.style},
       {<<"style">>, Record#command.style},
       {<<"tabindex">>, Record#command.tabindex},
       {<<"tabindex">>, Record#command.tabindex},
       {<<"title">>, Record#command.title},
       {<<"title">>, Record#command.title},
-      {<<"translate">>, case Record#command.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},
+      {<<"translate">>, case Record#command.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},
       % spec
       % spec
-      {<<"disabled">>, if Record#command.disabled == true -> "disabled"; true -> undefined end},
+      {<<"disabled">>, if Record#command.disabled == true -> "disabled"; true -> [] end},
       {<<"icon">>, Record#command.icon},
       {<<"icon">>, Record#command.icon},
       {<<"label">>, Record#command.label},
       {<<"label">>, Record#command.label},
       {<<"radiogroup">>, Record#command.radiogroup},
       {<<"radiogroup">>, Record#command.radiogroup},
-      {<<"type">>, case Record#command.type of "command" -> "command"; "radio" -> "radio"; "checkbox" -> "checkbox"; _ -> undefined end} | Record#command.data_fields
+      {<<"type">>, case Record#command.type of "command" -> "command"; "radio" -> "radio"; "checkbox" -> "checkbox"; _ -> [] end} | Record#command.data_fields
     ],
     ],
     wf_tags:emit_tag(<<"command">>, List).
     wf_tags:emit_tag(<<"command">>, List).

+ 13 - 13
src/elements/element_date.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#date.postback of
     Id = case Record#date.postback of
-        undefined -> Record#date.id;
+        [] -> Record#date.id;
         Postback ->
         Postback ->
           ID = case Record#date.id of
           ID = case Record#date.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#date.source, delegate=Record#date.delegate }),
                   source=Record#date.source, delegate=Record#date.delegate }),
@@ -17,30 +17,30 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#date.accesskey},
       {<<"accesskey">>, Record#date.accesskey},
       {<<"class">>, Record#date.class},
       {<<"class">>, Record#date.class},
-      {<<"contenteditable">>, case Record#date.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#date.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#date.contextmenu},
       {<<"contextmenu">>, Record#date.contextmenu},
-      {<<"dir">>, case Record#date.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#date.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#date.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#date.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#date.dropzone},
       {<<"dropzone">>, Record#date.dropzone},
-      {<<"hidden">>, case Record#date.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#date.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#date.lang},
       {<<"lang">>, Record#date.lang},
-      {<<"spellcheck">>, case Record#date.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#date.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#date.style},
       {<<"style">>, Record#date.style},
       {<<"tabindex">>, Record#date.tabindex},
       {<<"tabindex">>, Record#date.tabindex},
       {<<"title">>, Record#date.title},
       {<<"title">>, Record#date.title},
-      {<<"translate">>, case Record#date.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#date.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#date.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#date.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#date.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#date.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#date.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#date.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#date.form},
       {<<"form">>,Record#date.form},
       {<<"list">>,Record#date.list},
       {<<"list">>,Record#date.list},
       {<<"max">>,Record#date.max},
       {<<"max">>,Record#date.max},
       {<<"min">>,Record#date.min},
       {<<"min">>,Record#date.min},
       {<<"name">>,Record#date.name},
       {<<"name">>,Record#date.name},
-      {<<"readonly">>,if Record#date.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#date.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#date.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#date.required == true -> "required"; true -> [] end},      
       {<<"step">>,Record#date.step},
       {<<"step">>,Record#date.step},
       {<<"type">>, <<"date">>},
       {<<"type">>, <<"date">>},
       {<<"value">>, Record#date.value} | Record#date.data_fields
       {<<"value">>, Record#date.value} | Record#date.data_fields

+ 13 - 13
src/elements/element_datetime.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#datetime.postback of
     Id = case Record#datetime.postback of
-        undefined -> Record#datetime.id;
+        [] -> Record#datetime.id;
         Postback ->
         Postback ->
           ID = case Record#datetime.id of
           ID = case Record#datetime.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#datetime.source, delegate=Record#datetime.delegate }),
                   source=Record#datetime.source, delegate=Record#datetime.delegate }),
@@ -17,30 +17,30 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#datetime.accesskey},
       {<<"accesskey">>, Record#datetime.accesskey},
       {<<"class">>, Record#datetime.class},
       {<<"class">>, Record#datetime.class},
-      {<<"contenteditable">>, case Record#datetime.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#datetime.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#datetime.contextmenu},
       {<<"contextmenu">>, Record#datetime.contextmenu},
-      {<<"dir">>, case Record#datetime.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#datetime.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#datetime.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#datetime.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#datetime.dropzone},
       {<<"dropzone">>, Record#datetime.dropzone},
-      {<<"hidden">>, case Record#datetime.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#datetime.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#datetime.lang},
       {<<"lang">>, Record#datetime.lang},
-      {<<"spellcheck">>, case Record#datetime.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#datetime.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#datetime.style},
       {<<"style">>, Record#datetime.style},
       {<<"tabindex">>, Record#datetime.tabindex},
       {<<"tabindex">>, Record#datetime.tabindex},
       {<<"title">>, Record#datetime.title},
       {<<"title">>, Record#datetime.title},
-      {<<"translate">>, case Record#datetime.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#datetime.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#datetime.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#datetime.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#datetime.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#datetime.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#datetime.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#datetime.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#datetime.form},
       {<<"form">>,Record#datetime.form},
       {<<"list">>,Record#datetime.list},
       {<<"list">>,Record#datetime.list},
       {<<"max">>,Record#datetime.max},
       {<<"max">>,Record#datetime.max},
       {<<"min">>,Record#datetime.min},
       {<<"min">>,Record#datetime.min},
       {<<"name">>,Record#datetime.name},
       {<<"name">>,Record#datetime.name},
-      {<<"readonly">>,if Record#datetime.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#datetime.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#datetime.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#datetime.required == true -> "required"; true -> [] end},      
       {<<"step">>,Record#datetime.step},
       {<<"step">>,Record#datetime.step},
       {<<"type">>, <<"datetime">>},
       {<<"type">>, <<"datetime">>},
       {<<"value">>, Record#datetime.value} | Record#datetime.data_fields
       {<<"value">>, Record#datetime.value} | Record#datetime.data_fields

+ 13 - 13
src/elements/element_datetime_local.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#datetime_local.postback of
     Id = case Record#datetime_local.postback of
-        undefined -> Record#datetime_local.id;
+        [] -> Record#datetime_local.id;
         Postback ->
         Postback ->
           ID = case Record#datetime_local.id of
           ID = case Record#datetime_local.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#datetime_local.source, delegate=Record#datetime_local.delegate }),
                   source=Record#datetime_local.source, delegate=Record#datetime_local.delegate }),
@@ -17,30 +17,30 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#datetime_local.accesskey},
       {<<"accesskey">>, Record#datetime_local.accesskey},
       {<<"class">>, Record#datetime_local.class},
       {<<"class">>, Record#datetime_local.class},
-      {<<"contenteditable">>, case Record#datetime_local.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#datetime_local.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#datetime_local.contextmenu},
       {<<"contextmenu">>, Record#datetime_local.contextmenu},
-      {<<"dir">>, case Record#datetime_local.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#datetime_local.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#datetime_local.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#datetime_local.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#datetime_local.dropzone},
       {<<"dropzone">>, Record#datetime_local.dropzone},
-      {<<"hidden">>, case Record#datetime_local.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#datetime_local.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#datetime_local.lang},
       {<<"lang">>, Record#datetime_local.lang},
-      {<<"spellcheck">>, case Record#datetime_local.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#datetime_local.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#datetime_local.style},
       {<<"style">>, Record#datetime_local.style},
       {<<"tabindex">>, Record#datetime_local.tabindex},
       {<<"tabindex">>, Record#datetime_local.tabindex},
       {<<"title">>, Record#datetime_local.title},
       {<<"title">>, Record#datetime_local.title},
-      {<<"translate">>, case Record#datetime_local.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#datetime_local.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#datetime_local.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#datetime_local.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#datetime_local.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#datetime_local.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#datetime_local.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#datetime_local.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#datetime_local.form},
       {<<"form">>,Record#datetime_local.form},
       {<<"list">>,Record#datetime_local.list},
       {<<"list">>,Record#datetime_local.list},
       {<<"max">>,Record#datetime_local.max},
       {<<"max">>,Record#datetime_local.max},
       {<<"min">>,Record#datetime_local.min},
       {<<"min">>,Record#datetime_local.min},
       {<<"name">>,Record#datetime_local.name},
       {<<"name">>,Record#datetime_local.name},
-      {<<"readonly">>,if Record#datetime_local.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#datetime_local.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#datetime_local.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#datetime_local.required == true -> "required"; true -> [] end},      
       {<<"step">>,Record#datetime_local.step},
       {<<"step">>,Record#datetime_local.step},
       {<<"type">>, <<"datetime-local">>},
       {<<"type">>, <<"datetime-local">>},
       {<<"value">>, Record#datetime_local.value} | Record#datetime_local.data_fields
       {<<"value">>, Record#datetime_local.value} | Record#datetime_local.data_fields

+ 7 - 7
src/elements/element_del.erl

@@ -8,21 +8,21 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#del.accesskey},
       {<<"accesskey">>, Record#del.accesskey},
       {<<"class">>, Record#del.class},
       {<<"class">>, Record#del.class},
-      {<<"contenteditable">>, case Record#del.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#del.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#del.contextmenu},
       {<<"contextmenu">>, Record#del.contextmenu},
-      {<<"dir">>, case Record#del.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#del.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#del.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#del.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#del.dropzone},
       {<<"dropzone">>, Record#del.dropzone},
-      {<<"hidden">>, case Record#del.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#del.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#del.id},
       {<<"id">>, Record#del.id},
       {<<"lang">>, Record#del.lang},
       {<<"lang">>, Record#del.lang},
-      {<<"spellcheck">>, case Record#del.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#del.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#del.style},
       {<<"style">>, Record#del.style},
       {<<"tabindex">>, Record#del.tabindex},
       {<<"tabindex">>, Record#del.tabindex},
       {<<"title">>, Record#del.title},
       {<<"title">>, Record#del.title},
-      {<<"translate">>, case Record#del.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#del.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"cite">>, Record#del.cite},
       {<<"cite">>, Record#del.cite},
       {<<"datetime">>, Record#del.datetime} | Record#del.data_fields
       {<<"datetime">>, Record#del.datetime} | Record#del.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"del">>, nitro:render(case Record#del.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"del">>, nitro:render(case Record#del.body of [] -> []; B -> B end), List).

+ 8 - 8
src/elements/element_details.erl

@@ -8,20 +8,20 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#details.accesskey},
       {<<"accesskey">>, Record#details.accesskey},
       {<<"class">>, Record#details.class},
       {<<"class">>, Record#details.class},
-      {<<"contenteditable">>, case Record#details.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#details.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#details.contextmenu},
       {<<"contextmenu">>, Record#details.contextmenu},
-      {<<"dir">>, case Record#details.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#details.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#details.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#details.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#details.dropzone},
       {<<"dropzone">>, Record#details.dropzone},
-      {<<"hidden">>, case Record#details.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#details.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#details.id},
       {<<"id">>, Record#details.id},
       {<<"lang">>, Record#details.lang},
       {<<"lang">>, Record#details.lang},
-      {<<"spellcheck">>, case Record#details.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#details.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#details.style},
       {<<"style">>, Record#details.style},
       {<<"tabindex">>, Record#details.tabindex},
       {<<"tabindex">>, Record#details.tabindex},
       {<<"title">>, Record#details.title},
       {<<"title">>, Record#details.title},
-      {<<"translate">>, case Record#details.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#details.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"open">>, case Record#details.open of true -> "open"; _ -> undefined end} | Record#details.data_fields
+      {<<"open">>, case Record#details.open of true -> "open"; _ -> [] end} | Record#details.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"details">>, nitro:render(case Record#details.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"details">>, nitro:render(case Record#details.body of [] -> []; B -> B end), List).

+ 5 - 5
src/elements/element_dropdown.erl

@@ -3,16 +3,16 @@
 -compile(export_all).
 -compile(export_all).
 
 
 render_element(Record = #dropdown{}) -> 
 render_element(Record = #dropdown{}) -> 
-    ID = case Record#dropdown.id of undefined -> nitro:temp_id(); I->I end,
+    ID = case Record#dropdown.id of [] -> nitro:temp_id(); I->I end,
     case Record#dropdown.postback of
     case Record#dropdown.postback of
-         undefined -> skip;
+         [] -> skip;
          Postback -> nitro:wire(#event { type=change, postback=Postback, target=ID,
          Postback -> nitro:wire(#event { type=change, postback=Postback, target=ID,
                         source=Record#dropdown.source, delegate=Record#dropdown.delegate } ) end,
                         source=Record#dropdown.source, delegate=Record#dropdown.delegate } ) end,
 
 
     Opts = [wf_tags:emit_tag(<<"option">>, [O#option.label], [
     Opts = [wf_tags:emit_tag(<<"option">>, [O#option.label], [
       {<<"disabled">>, O#option.disabled},
       {<<"disabled">>, O#option.disabled},
       {<<"label">>, O#option.label},
       {<<"label">>, O#option.label},
-      {<<"selected">>, case O#option.selected of true -> <<"selected">>; _-> undefined end},
+      {<<"selected">>, case O#option.selected of true -> <<"selected">>; _-> [] end},
       {<<"value">>, O#option.value}
       {<<"value">>, O#option.value}
     ])|| O = #option{show_if=Visible} <- Record#dropdown.options, Visible == true],
     ])|| O = #option{show_if=Visible} <- Record#dropdown.options, Visible == true],
 
 
@@ -21,7 +21,7 @@ render_element(Record = #dropdown{}) ->
         {<<"class">>, Record#dropdown.class},
         {<<"class">>, Record#dropdown.class},
         {<<"style">>, Record#dropdown.style},
         {<<"style">>, Record#dropdown.style},
         {<<"name">>, Record#dropdown.name},
         {<<"name">>, Record#dropdown.name},
-        {<<"disabled">>, case Record#dropdown.disabled of true -> <<"disabled">>; _-> undefined end},
-        {<<"multiple">>, case Record#dropdown.multiple of true -> <<"multiple">>; _-> undefined end}|
+        {<<"disabled">>, case Record#dropdown.disabled of true -> <<"disabled">>; _-> [] end},
+        {<<"multiple">>, case Record#dropdown.multiple of true -> <<"multiple">>; _-> [] end}|
         Record#dropdown.data_fields
         Record#dropdown.data_fields
     ]).
     ]).

+ 14 - 14
src/elements/element_email.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#email.postback of
     Id = case Record#email.postback of
-        undefined -> Record#email.id;
+        [] -> Record#email.id;
         Postback ->
         Postback ->
           ID = case Record#email.id of
           ID = case Record#email.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#email.source, delegate=Record#email.delegate }),
                   source=Record#email.source, delegate=Record#email.delegate }),
@@ -17,32 +17,32 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#email.accesskey},
       {<<"accesskey">>, Record#email.accesskey},
       {<<"class">>, Record#email.class},
       {<<"class">>, Record#email.class},
-      {<<"contenteditable">>, case Record#email.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#email.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#email.contextmenu},
       {<<"contextmenu">>, Record#email.contextmenu},
-      {<<"dir">>, case Record#email.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#email.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#email.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#email.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#email.dropzone},
       {<<"dropzone">>, Record#email.dropzone},
-      {<<"hidden">>, case Record#email.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#email.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#email.lang},
       {<<"lang">>, Record#email.lang},
-      {<<"spellcheck">>, case Record#email.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#email.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#email.style},
       {<<"style">>, Record#email.style},
       {<<"tabindex">>, Record#email.tabindex},
       {<<"tabindex">>, Record#email.tabindex},
       {<<"title">>, Record#email.title},
       {<<"title">>, Record#email.title},
-      {<<"translate">>, case Record#email.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#email.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#email.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#email.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#email.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#email.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#email.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#email.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#email.form},
       {<<"form">>,Record#email.form},
       {<<"list">>,Record#email.list},
       {<<"list">>,Record#email.list},
       {<<"maxlength">>,Record#email.maxlength},
       {<<"maxlength">>,Record#email.maxlength},
-      {<<"multiple">>,if Record#email.multiple == true -> "multiple"; true -> undefined end},
+      {<<"multiple">>,if Record#email.multiple == true -> "multiple"; true -> [] end},
       {<<"name">>,Record#email.name},
       {<<"name">>,Record#email.name},
       {<<"pattern">>,Record#email.pattern},
       {<<"pattern">>,Record#email.pattern},
       {<<"placeholder">>,Record#email.placeholder},
       {<<"placeholder">>,Record#email.placeholder},
-      {<<"readonly">>,if Record#email.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#email.required == true -> "required"; true -> undefined end}, 
+      {<<"readonly">>,if Record#email.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#email.required == true -> "required"; true -> [] end}, 
       {<<"size">>,Record#email.size},
       {<<"size">>,Record#email.size},
       {<<"type">>, <<"email">>},
       {<<"type">>, <<"email">>},
       {<<"value">>, Record#email.value} | Record#email.data_fields
       {<<"value">>, Record#email.value} | Record#email.data_fields

+ 6 - 6
src/elements/element_embed.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#embed.accesskey},
       {<<"accesskey">>, Record#embed.accesskey},
       {<<"class">>, Record#embed.class},
       {<<"class">>, Record#embed.class},
-      {<<"contenteditable">>, case Record#embed.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#embed.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#embed.contextmenu},
       {<<"contextmenu">>, Record#embed.contextmenu},
-      {<<"dir">>, case Record#embed.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#embed.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#embed.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#embed.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#embed.dropzone},
       {<<"dropzone">>, Record#embed.dropzone},
-      {<<"hidden">>, case Record#embed.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#embed.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#embed.id},
       {<<"id">>, Record#embed.id},
       {<<"lang">>, Record#embed.lang},
       {<<"lang">>, Record#embed.lang},
-      {<<"spellcheck">>, case Record#embed.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#embed.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#embed.style},
       {<<"style">>, Record#embed.style},
       {<<"tabindex">>, Record#embed.tabindex},
       {<<"tabindex">>, Record#embed.tabindex},
       {<<"title">>, Record#embed.title},
       {<<"title">>, Record#embed.title},
-      {<<"translate">>, case Record#embed.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#embed.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"height">>,Record#embed.height},      
       {<<"height">>,Record#embed.height},      
       {<<"src">>,Record#embed.src},
       {<<"src">>,Record#embed.src},

+ 9 - 9
src/elements/element_fieldset.erl

@@ -8,21 +8,21 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#fieldset.accesskey},
       {<<"accesskey">>, Record#fieldset.accesskey},
       {<<"class">>, Record#fieldset.class},
       {<<"class">>, Record#fieldset.class},
-      {<<"contenteditable">>, case Record#fieldset.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#fieldset.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#fieldset.contextmenu},
       {<<"contextmenu">>, Record#fieldset.contextmenu},
-      {<<"dir">>, case Record#fieldset.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#fieldset.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#fieldset.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#fieldset.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#fieldset.dropzone},
       {<<"dropzone">>, Record#fieldset.dropzone},
-      {<<"hidden">>, case Record#fieldset.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#fieldset.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#fieldset.id},
       {<<"id">>, Record#fieldset.id},
       {<<"lang">>, Record#fieldset.lang},
       {<<"lang">>, Record#fieldset.lang},
-      {<<"spellcheck">>, case Record#fieldset.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#fieldset.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#fieldset.style},
       {<<"style">>, Record#fieldset.style},
       {<<"tabindex">>, Record#fieldset.tabindex},
       {<<"tabindex">>, Record#fieldset.tabindex},
       {<<"title">>, Record#fieldset.title},
       {<<"title">>, Record#fieldset.title},
-      {<<"translate">>, case Record#fieldset.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#fieldset.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"disabled">>, if Record#fieldset.disabled == true -> "disabled"; true -> undefined end},
+      {<<"disabled">>, if Record#fieldset.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#fieldset.form},
       {<<"form">>,Record#fieldset.form},
       {<<"name">>,Record#fieldset.name} | Record#fieldset.data_fields
       {<<"name">>,Record#fieldset.name} | Record#fieldset.data_fields
     ],
     ],
@@ -30,9 +30,9 @@ render_element(Record) ->
       <<"fieldset">>,
       <<"fieldset">>,
       [
       [
         case Record#fieldset.legend of 
         case Record#fieldset.legend of 
-          undefined -> [];
+          [] -> [];
           B -> wf_tags:emit_tag(<<"legend">>, nitro:render(B), [])
           B -> wf_tags:emit_tag(<<"legend">>, nitro:render(B), [])
         end, 
         end, 
-        nitro:render(case Record#fieldset.body of undefined -> []; B -> B end)
+        nitro:render(case Record#fieldset.body of [] -> []; B -> B end)
       ], 
       ], 
       List).
       List).

+ 12 - 12
src/elements/element_file.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#file.postback of
     Id = case Record#file.postback of
-        undefined -> Record#file.id;
+        [] -> Record#file.id;
         Postback ->
         Postback ->
           ID = case Record#file.id of
           ID = case Record#file.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#file.source, delegate=Record#file.delegate }),
                   source=Record#file.source, delegate=Record#file.delegate }),
@@ -17,27 +17,27 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#file.accesskey},
       {<<"accesskey">>, Record#file.accesskey},
       {<<"class">>, Record#file.class},
       {<<"class">>, Record#file.class},
-      {<<"contenteditable">>, case Record#file.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#file.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#file.contextmenu},
       {<<"contextmenu">>, Record#file.contextmenu},
-      {<<"dir">>, case Record#file.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#file.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#file.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#file.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#file.dropzone},
       {<<"dropzone">>, Record#file.dropzone},
-      {<<"hidden">>, case Record#file.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#file.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#file.lang},
       {<<"lang">>, Record#file.lang},
-      {<<"spellcheck">>, case Record#file.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#file.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#file.style},
       {<<"style">>, Record#file.style},
       {<<"tabindex">>, Record#file.tabindex},
       {<<"tabindex">>, Record#file.tabindex},
       {<<"title">>, Record#file.title},
       {<<"title">>, Record#file.title},
-      {<<"translate">>, case Record#file.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#file.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"accept">>,Record#file.accept},
       {<<"accept">>,Record#file.accept},
-      {<<"autofocus">>,if Record#file.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#file.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autofocus">>,if Record#file.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#file.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#file.form},
       {<<"form">>,Record#file.form},
-      {<<"multiple">>,if Record#file.multiple == true -> "multiple"; true -> undefined end},
+      {<<"multiple">>,if Record#file.multiple == true -> "multiple"; true -> [] end},
       {<<"name">>,Record#file.name},
       {<<"name">>,Record#file.name},
-      {<<"required">>,if Record#file.required == true -> "required"; true -> undefined end}, 
+      {<<"required">>,if Record#file.required == true -> "required"; true -> [] end}, 
       {<<"type">>, <<"file">>} | Record#file.data_fields
       {<<"type">>, <<"file">>} | Record#file.data_fields
     ],
     ],
     wf_tags:emit_tag(<<"input">>, nitro:render(Record#file.body), List).
     wf_tags:emit_tag(<<"input">>, nitro:render(Record#file.body), List).

+ 11 - 11
src/elements/element_form.erl

@@ -4,9 +4,9 @@
 -compile(export_all).
 -compile(export_all).
 
 
 render_element(Record) ->
 render_element(Record) ->
-    ID = case Record#form.id of undefined -> nitro:temp_id(); I->I end,
+    ID = case Record#form.id of [] -> nitro:temp_id(); I->I end,
     case Record#form.postback of
     case Record#form.postback of
-         undefined -> skip;
+         [] -> skip;
          Postback -> nitro:wire(#event { type=submit,
          Postback -> nitro:wire(#event { type=submit,
                                          target=ID,
                                          target=ID,
                                          postback=Postback,
                                          postback=Postback,
@@ -15,27 +15,27 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#form.accesskey},
       {<<"accesskey">>, Record#form.accesskey},
       {<<"class">>, Record#form.class},
       {<<"class">>, Record#form.class},
-      {<<"contenteditable">>, case Record#form.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#form.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#form.contextmenu},
       {<<"contextmenu">>, Record#form.contextmenu},
-      {<<"dir">>, case Record#form.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#form.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#form.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#form.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#form.dropzone},
       {<<"dropzone">>, Record#form.dropzone},
-      {<<"hidden">>, case Record#form.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#form.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, ID},
       {<<"id">>, ID},
       {<<"lang">>, Record#form.lang},
       {<<"lang">>, Record#form.lang},
-      {<<"spellcheck">>, case Record#form.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#form.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#form.style},
       {<<"style">>, Record#form.style},
       {<<"tabindex">>, Record#form.tabindex},
       {<<"tabindex">>, Record#form.tabindex},
       {<<"title">>, Record#form.title},
       {<<"title">>, Record#form.title},
-      {<<"translate">>, case Record#form.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},
+      {<<"translate">>, case Record#form.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},
       % spec
       % spec
       {<<"accept-charset">>, Record#form.accept_charset},
       {<<"accept-charset">>, Record#form.accept_charset},
       {<<"action">>, Record#form.action},
       {<<"action">>, Record#form.action},
-      {<<"autocomplete">>, case Record#form.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"enctype">>, case Record#form.enctype of "application/x-www-form-urlencoded" -> "application/x-www-form-urlencoded"; "multipart/form-data" -> "multipart/form-data"; "text/plain" -> "text/plain"; _ -> undefined end},
+      {<<"autocomplete">>, case Record#form.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"enctype">>, case Record#form.enctype of "application/x-www-form-urlencoded" -> "application/x-www-form-urlencoded"; "multipart/form-data" -> "multipart/form-data"; "text/plain" -> "text/plain"; _ -> [] end},
       {<<"method">>, case Record#form.method of "post" -> "post"; _ -> "get" end},
       {<<"method">>, case Record#form.method of "post" -> "post"; _ -> "get" end},
       {<<"name">>,Record#form.name},
       {<<"name">>,Record#form.name},
-      {<<"novalidate">>, case Record#form.novalidate of true -> "novalidate"; _ -> undefined end},
+      {<<"novalidate">>, case Record#form.novalidate of true -> "novalidate"; _ -> [] end},
       {<<"target">>, Record#form.target} | Record#form.data_fields
       {<<"target">>, Record#form.target} | Record#form.data_fields
     ],
     ],
     wf_tags:emit_tag(<<"form">>, nitro:render(Record#form.body), List).
     wf_tags:emit_tag(<<"form">>, nitro:render(Record#form.body), List).

+ 7 - 7
src/elements/element_hidden.erl

@@ -8,21 +8,21 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#hidden.accesskey},
       {<<"accesskey">>, Record#hidden.accesskey},
       {<<"class">>, Record#hidden.class},
       {<<"class">>, Record#hidden.class},
-      {<<"contenteditable">>, case Record#hidden.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#hidden.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#hidden.contextmenu},
       {<<"contextmenu">>, Record#hidden.contextmenu},
-      {<<"dir">>, case Record#hidden.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#hidden.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#hidden.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#hidden.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#hidden.dropzone},
       {<<"dropzone">>, Record#hidden.dropzone},
-      {<<"hidden">>, case Record#hidden.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#hidden.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#hidden.id},
       {<<"id">>, Record#hidden.id},
       {<<"lang">>, Record#hidden.lang},
       {<<"lang">>, Record#hidden.lang},
-      {<<"spellcheck">>, case Record#hidden.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#hidden.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#hidden.style},
       {<<"style">>, Record#hidden.style},
       {<<"tabindex">>, Record#hidden.tabindex},
       {<<"tabindex">>, Record#hidden.tabindex},
       {<<"title">>, Record#hidden.title},
       {<<"title">>, Record#hidden.title},
-      {<<"translate">>, case Record#hidden.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#hidden.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"disabled">>, if Record#hidden.disabled == true -> "disabled"; true -> undefined end},
+      {<<"disabled">>, if Record#hidden.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#hidden.form},
       {<<"form">>,Record#hidden.form},
       {<<"name">>,Record#hidden.name},
       {<<"name">>,Record#hidden.name},
       {<<"type">>, <<"hidden">>},
       {<<"type">>, <<"hidden">>},

+ 7 - 7
src/elements/element_html.erl

@@ -8,20 +8,20 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#html.accesskey},
       {<<"accesskey">>, Record#html.accesskey},
       {<<"class">>, Record#html.class},
       {<<"class">>, Record#html.class},
-      {<<"contenteditable">>, case Record#html.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#html.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#html.contextmenu},
       {<<"contextmenu">>, Record#html.contextmenu},
-      {<<"dir">>, case Record#html.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#html.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#html.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#html.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#html.dropzone},
       {<<"dropzone">>, Record#html.dropzone},
-      {<<"hidden">>, case Record#html.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#html.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#html.id},
       {<<"id">>, Record#html.id},
       {<<"lang">>, Record#html.lang},
       {<<"lang">>, Record#html.lang},
-      {<<"spellcheck">>, case Record#html.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#html.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#html.style},
       {<<"style">>, Record#html.style},
       {<<"tabindex">>, Record#html.tabindex},
       {<<"tabindex">>, Record#html.tabindex},
       {<<"title">>, Record#html.title},
       {<<"title">>, Record#html.title},
-      {<<"translate">>, case Record#html.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#html.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"manifest">>, Record#html.manifest} | Record#html.data_fields
       {<<"manifest">>, Record#html.manifest} | Record#html.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"html">>, nitro:render(case Record#html.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"html">>, nitro:render(case Record#html.body of [] -> []; B -> B end), List).

+ 7 - 7
src/elements/element_iframe.erl

@@ -8,23 +8,23 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#iframe.accesskey},
       {<<"accesskey">>, Record#iframe.accesskey},
       {<<"class">>, Record#iframe.class},
       {<<"class">>, Record#iframe.class},
-      {<<"contenteditable">>, case Record#iframe.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#iframe.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#iframe.contextmenu},
       {<<"contextmenu">>, Record#iframe.contextmenu},
-      {<<"dir">>, case Record#iframe.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#iframe.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#iframe.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#iframe.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#iframe.dropzone},
       {<<"dropzone">>, Record#iframe.dropzone},
-      {<<"hidden">>, case Record#iframe.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#iframe.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#iframe.id},
       {<<"id">>, Record#iframe.id},
       {<<"lang">>, Record#iframe.lang},
       {<<"lang">>, Record#iframe.lang},
-      {<<"spellcheck">>, case Record#iframe.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#iframe.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#iframe.style},
       {<<"style">>, Record#iframe.style},
       {<<"tabindex">>, Record#iframe.tabindex},
       {<<"tabindex">>, Record#iframe.tabindex},
       {<<"title">>, Record#iframe.title},
       {<<"title">>, Record#iframe.title},
-      {<<"translate">>, case Record#iframe.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#iframe.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"height">>,Record#iframe.height},      
       {<<"height">>,Record#iframe.height},      
       {<<"sandbox">>,Record#iframe.sandbox},      
       {<<"sandbox">>,Record#iframe.sandbox},      
-      {<<"seamless">>, if Record#iframe.seamless == true -> "seamless"; true -> undefined end},
+      {<<"seamless">>, if Record#iframe.seamless == true -> "seamless"; true -> [] end},
       {<<"src">>,Record#iframe.src},
       {<<"src">>,Record#iframe.src},
       {<<"srcdoc">>,Record#iframe.srcdoc},            
       {<<"srcdoc">>,Record#iframe.srcdoc},            
       {<<"name">>,Record#iframe.name},
       {<<"name">>,Record#iframe.name},

+ 10 - 10
src/elements/element_input.erl

@@ -4,11 +4,11 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#input.postback of
     Id = case Record#input.postback of
-        undefined -> Record#input.id;
+        [] -> Record#input.id;
         [] -> Record#input.id;
         [] -> Record#input.id;
         Postback ->
         Postback ->
           ID = case Record#input.id of
           ID = case Record#input.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#input.source, delegate=Record#input.delegate }),
                   source=Record#input.source, delegate=Record#input.delegate }),
@@ -17,22 +17,22 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#input.accesskey},
       {<<"accesskey">>, Record#input.accesskey},
       {<<"class">>, Record#input.class},
       {<<"class">>, Record#input.class},
-      {<<"contenteditable">>, case Record#input.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#input.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#input.contextmenu},
       {<<"contextmenu">>, Record#input.contextmenu},
-      {<<"dir">>, case Record#input.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#input.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#input.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#input.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#input.dropzone},
       {<<"dropzone">>, Record#input.dropzone},
-      {<<"hidden">>, case Record#input.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#input.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#input.lang},
       {<<"lang">>, Record#input.lang},
-      {<<"spellcheck">>, case Record#input.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#input.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#input.style},
       {<<"style">>, Record#input.style},
       {<<"tabindex">>, Record#input.tabindex},
       {<<"tabindex">>, Record#input.tabindex},
       {<<"title">>, Record#input.title},
       {<<"title">>, Record#input.title},
-      {<<"translate">>, case Record#input.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#input.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"autofocus">>,Record#input.autofocus},
       {<<"autofocus">>,Record#input.autofocus},
-      {<<"disabled">>, if Record#input.disabled == true -> "disabled"; true -> undefined end},
+      {<<"disabled">>, if Record#input.disabled == true -> "disabled"; true -> [] end},
       {<<"name">>,Record#input.name},
       {<<"name">>,Record#input.name},
       {<<"type">>, Record#input.type},
       {<<"type">>, Record#input.type},
       {<<"accept">>, Record#input.accept},
       {<<"accept">>, Record#input.accept},
@@ -46,7 +46,7 @@ render_element(Record) ->
       {<<"onkeyup">>, Record#input.onkeyup},
       {<<"onkeyup">>, Record#input.onkeyup},
       {<<"onkeydown">>, Record#input.onkeydown},
       {<<"onkeydown">>, Record#input.onkeydown},
       {<<"onclick">>, Record#input.onclick},
       {<<"onclick">>, Record#input.onclick},
-      {<<"required">>, if Record#input.required == true -> "required"; true -> undefined end},
+      {<<"required">>, if Record#input.required == true -> "required"; true -> [] end},
       {<<"onchange">>, Record#input.onchange} | Record#input.data_fields
       {<<"onchange">>, Record#input.onchange} | Record#input.data_fields
     ],
     ],
     wf_tags:emit_tag(<<"input">>, nitro:render(Record#input.body), List).
     wf_tags:emit_tag(<<"input">>, nitro:render(Record#input.body), List).

+ 9 - 9
src/elements/element_input_button.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#input_button.postback of
     Id = case Record#input_button.postback of
-        undefined -> Record#input_button.id;
+        [] -> Record#input_button.id;
         Postback ->
         Postback ->
           ID = case Record#input_button.id of
           ID = case Record#input_button.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#input_button.source, delegate=Record#input_button.delegate }),
                   source=Record#input_button.source, delegate=Record#input_button.delegate }),
@@ -17,22 +17,22 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#input_button.accesskey},
       {<<"accesskey">>, Record#input_button.accesskey},
       {<<"class">>, Record#input_button.class},
       {<<"class">>, Record#input_button.class},
-      {<<"contenteditable">>, case Record#input_button.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#input_button.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#input_button.contextmenu},
       {<<"contextmenu">>, Record#input_button.contextmenu},
-      {<<"dir">>, case Record#input_button.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#input_button.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#input_button.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#input_button.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#input_button.dropzone},
       {<<"dropzone">>, Record#input_button.dropzone},
-      {<<"hidden">>, case Record#input_button.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#input_button.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#input_button.lang},
       {<<"lang">>, Record#input_button.lang},
-      {<<"spellcheck">>, case Record#input_button.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#input_button.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#input_button.style},
       {<<"style">>, Record#input_button.style},
       {<<"tabindex">>, Record#input_button.tabindex},
       {<<"tabindex">>, Record#input_button.tabindex},
       {<<"title">>, Record#input_button.title},
       {<<"title">>, Record#input_button.title},
-      {<<"translate">>, case Record#input_button.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#input_button.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"autofocus">>,Record#input_button.autofocus},
       {<<"autofocus">>,Record#input_button.autofocus},
-      {<<"disabled">>, if Record#input_button.disabled == true -> "disabled"; true -> undefined end},
+      {<<"disabled">>, if Record#input_button.disabled == true -> "disabled"; true -> [] end},
       {<<"name">>,Record#input_button.name},
       {<<"name">>,Record#input_button.name},
       {<<"type">>, <<"button">>},
       {<<"type">>, <<"button">>},
       {<<"value">>, Record#input_button.value} | Record#input_button.data_fields
       {<<"value">>, Record#input_button.value} | Record#input_button.data_fields

+ 10 - 10
src/elements/element_input_image.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#input_image.postback of
     Id = case Record#input_image.postback of
-        undefined -> Record#input_image.id;
+        [] -> Record#input_image.id;
         Postback ->
         Postback ->
           ID = case Record#input_image.id of
           ID = case Record#input_image.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#input_image.source, delegate=Record#input_image.delegate }),
                   source=Record#input_image.source, delegate=Record#input_image.delegate }),
@@ -17,23 +17,23 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#input_image.accesskey},
       {<<"accesskey">>, Record#input_image.accesskey},
       {<<"class">>, Record#input_image.class},
       {<<"class">>, Record#input_image.class},
-      {<<"contenteditable">>, case Record#input_image.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#input_image.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#input_image.contextmenu},
       {<<"contextmenu">>, Record#input_image.contextmenu},
-      {<<"dir">>, case Record#input_image.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#input_image.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#input_image.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#input_image.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#input_image.dropzone},
       {<<"dropzone">>, Record#input_image.dropzone},
-      {<<"hidden">>, case Record#input_image.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#input_image.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#input_image.lang},
       {<<"lang">>, Record#input_image.lang},
-      {<<"spellcheck">>, case Record#input_image.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#input_image.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#input_image.style},
       {<<"style">>, Record#input_image.style},
       {<<"tabindex">>, Record#input_image.tabindex},
       {<<"tabindex">>, Record#input_image.tabindex},
       {<<"title">>, Record#input_image.title},
       {<<"title">>, Record#input_image.title},
-      {<<"translate">>, case Record#input_image.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#input_image.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"alt">>,Record#input_image.alt},
       {<<"alt">>,Record#input_image.alt},
-      {<<"autofocus">>,if Record#input_image.autofocus == true -> "autofocus"; true -> undefined end},      
-      {<<"disabled">>, if Record#input_image.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autofocus">>,if Record#input_image.autofocus == true -> "autofocus"; true -> [] end},      
+      {<<"disabled">>, if Record#input_image.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#input_image.form},
       {<<"form">>,Record#input_image.form},
       {<<"formaction">>,Record#input_image.formaction},
       {<<"formaction">>,Record#input_image.formaction},
       {<<"formenctype">>,Record#input_image.formenctype},
       {<<"formenctype">>,Record#input_image.formenctype},

+ 13 - 13
src/elements/element_input_time.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#input_time.postback of
     Id = case Record#input_time.postback of
-        undefined -> Record#input_time.id;
+        [] -> Record#input_time.id;
         Postback ->
         Postback ->
           ID = case Record#input_time.id of
           ID = case Record#input_time.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#input_time.source, delegate=Record#input_time.delegate }),
                   source=Record#input_time.source, delegate=Record#input_time.delegate }),
@@ -17,30 +17,30 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#input_time.accesskey},
       {<<"accesskey">>, Record#input_time.accesskey},
       {<<"class">>, Record#input_time.class},
       {<<"class">>, Record#input_time.class},
-      {<<"contenteditable">>, case Record#input_time.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#input_time.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#input_time.contextmenu},
       {<<"contextmenu">>, Record#input_time.contextmenu},
-      {<<"dir">>, case Record#input_time.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#input_time.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#input_time.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#input_time.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#input_time.dropzone},
       {<<"dropzone">>, Record#input_time.dropzone},
-      {<<"hidden">>, case Record#input_time.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#input_time.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#input_time.lang},
       {<<"lang">>, Record#input_time.lang},
-      {<<"spellcheck">>, case Record#input_time.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#input_time.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#input_time.style},
       {<<"style">>, Record#input_time.style},
       {<<"tabindex">>, Record#input_time.tabindex},
       {<<"tabindex">>, Record#input_time.tabindex},
       {<<"title">>, Record#input_time.title},
       {<<"title">>, Record#input_time.title},
-      {<<"translate">>, case Record#input_time.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#input_time.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#input_time.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#input_time.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#input_time.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#input_time.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#input_time.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#input_time.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#input_time.form},
       {<<"form">>,Record#input_time.form},
       {<<"list">>,Record#input_time.list},
       {<<"list">>,Record#input_time.list},
       {<<"max">>,Record#input_time.max},
       {<<"max">>,Record#input_time.max},
       {<<"min">>,Record#input_time.min},
       {<<"min">>,Record#input_time.min},
       {<<"name">>,Record#input_time.name},
       {<<"name">>,Record#input_time.name},
-      {<<"readonly">>,if Record#input_time.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#input_time.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#input_time.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#input_time.required == true -> "required"; true -> [] end},      
       {<<"step">>,Record#input_time.step},
       {<<"step">>,Record#input_time.step},
       {<<"type">>, <<"time">>},
       {<<"type">>, <<"time">>},
       {<<"value">>, Record#input_time.value} | Record#input_time.data_fields
       {<<"value">>, Record#input_time.value} | Record#input_time.data_fields

+ 7 - 7
src/elements/element_ins.erl

@@ -8,21 +8,21 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#ins.accesskey},
       {<<"accesskey">>, Record#ins.accesskey},
       {<<"class">>, Record#ins.class},
       {<<"class">>, Record#ins.class},
-      {<<"contenteditable">>, case Record#ins.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#ins.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#ins.contextmenu},
       {<<"contextmenu">>, Record#ins.contextmenu},
-      {<<"dir">>, case Record#ins.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#ins.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#ins.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#ins.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#ins.dropzone},
       {<<"dropzone">>, Record#ins.dropzone},
-      {<<"hidden">>, case Record#ins.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#ins.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#ins.id},
       {<<"id">>, Record#ins.id},
       {<<"lang">>, Record#ins.lang},
       {<<"lang">>, Record#ins.lang},
-      {<<"spellcheck">>, case Record#ins.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#ins.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#ins.style},
       {<<"style">>, Record#ins.style},
       {<<"tabindex">>, Record#ins.tabindex},
       {<<"tabindex">>, Record#ins.tabindex},
       {<<"title">>, Record#ins.title},
       {<<"title">>, Record#ins.title},
-      {<<"translate">>, case Record#ins.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#ins.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"cite">>, Record#ins.cite},
       {<<"cite">>, Record#ins.cite},
       {<<"datetime">>, Record#ins.datetime} | Record#ins.data_fields
       {<<"datetime">>, Record#ins.datetime} | Record#ins.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"ins">>, nitro:render(case Record#ins.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"ins">>, nitro:render(case Record#ins.body of [] -> []; B -> B end), List).

+ 10 - 10
src/elements/element_keygen.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#keygen.postback of
     Id = case Record#keygen.postback of
-        undefined -> Record#keygen.id;
+        [] -> Record#keygen.id;
         Postback ->
         Postback ->
           ID = case Record#keygen.id of
           ID = case Record#keygen.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#keygen.source, delegate=Record#keygen.delegate }),
                   source=Record#keygen.source, delegate=Record#keygen.delegate }),
@@ -17,23 +17,23 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#keygen.accesskey},
       {<<"accesskey">>, Record#keygen.accesskey},
       {<<"class">>, Record#keygen.class},
       {<<"class">>, Record#keygen.class},
-      {<<"contenteditable">>, case Record#keygen.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#keygen.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#keygen.contextmenu},
       {<<"contextmenu">>, Record#keygen.contextmenu},
-      {<<"dir">>, case Record#keygen.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#keygen.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#keygen.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#keygen.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#keygen.dropzone},
       {<<"dropzone">>, Record#keygen.dropzone},
-      {<<"hidden">>, case Record#keygen.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#keygen.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#keygen.lang},
       {<<"lang">>, Record#keygen.lang},
-      {<<"spellcheck">>, case Record#keygen.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#keygen.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#keygen.style},
       {<<"style">>, Record#keygen.style},
       {<<"tabindex">>, Record#keygen.tabindex},
       {<<"tabindex">>, Record#keygen.tabindex},
       {<<"title">>, Record#keygen.title},
       {<<"title">>, Record#keygen.title},
-      {<<"translate">>, case Record#keygen.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#keygen.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autofocus">>,if Record#keygen.autofocus == true -> "autofocus"; true -> undefined end},
+      {<<"autofocus">>,if Record#keygen.autofocus == true -> "autofocus"; true -> [] end},
       {<<"challenge">>,Record#keygen.challenge},      
       {<<"challenge">>,Record#keygen.challenge},      
-      {<<"disabled">>, if Record#keygen.disabled == true -> "disabled"; true -> undefined end},
+      {<<"disabled">>, if Record#keygen.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#keygen.form},
       {<<"form">>,Record#keygen.form},
       {<<"keytype">>,<<"rsa">>},
       {<<"keytype">>,<<"rsa">>},
       {<<"name">>,Record#keygen.name} | Record#keygen.data_fields
       {<<"name">>,Record#keygen.name} | Record#keygen.data_fields

+ 8 - 8
src/elements/element_link.erl

@@ -5,9 +5,9 @@
 
 
 render_element(Record) -> 
 render_element(Record) -> 
     Id = case Record#link.postback of
     Id = case Record#link.postback of
-        undefined -> Record#link.id;
+        [] -> Record#link.id;
         Postback ->
         Postback ->
-            ID = case Record#link.id of undefined -> nitro:temp_id(); I -> I end,
+            ID = case Record#link.id of [] -> nitro:temp_id(); I -> I end,
             nitro:wire(#event{ type=click,postback=Postback,target=ID,
             nitro:wire(#event{ type=click,postback=Postback,target=ID,
                             source=Record#link.source,delegate=Record#link.delegate,validation=Record#link.validate}),
                             source=Record#link.source,delegate=Record#link.delegate,validation=Record#link.validate}),
             ID end,
             ID end,
@@ -15,19 +15,19 @@ render_element(Record) ->
       % global
       % global
       {<<"accesskey">>, Record#link.accesskey},
       {<<"accesskey">>, Record#link.accesskey},
       {<<"class">>, Record#link.class},
       {<<"class">>, Record#link.class},
-      {<<"contenteditable">>, case Record#link.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#link.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#link.contextmenu},
       {<<"contextmenu">>, Record#link.contextmenu},
-      {<<"dir">>, case Record#link.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#link.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#link.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#link.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#link.dropzone},
       {<<"dropzone">>, Record#link.dropzone},
-      {<<"hidden">>, case Record#link.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#link.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#link.lang},
       {<<"lang">>, Record#link.lang},
-      {<<"spellcheck">>, case Record#link.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#link.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#link.style},
       {<<"style">>, Record#link.style},
       {<<"tabindex">>, Record#link.tabindex},
       {<<"tabindex">>, Record#link.tabindex},
       {<<"title">>, Record#link.title},
       {<<"title">>, Record#link.title},
-      {<<"translate">>, case Record#link.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#link.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"href">>, nitro:coalesce([Record#link.href,Record#link.url])},
       {<<"href">>, nitro:coalesce([Record#link.href,Record#link.url])},
       {<<"hreflang">>, Record#link.hreflang},
       {<<"hreflang">>, Record#link.hreflang},

+ 7 - 7
src/elements/element_map.erl

@@ -8,20 +8,20 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#map.accesskey},
       {<<"accesskey">>, Record#map.accesskey},
       {<<"class">>, Record#map.class},
       {<<"class">>, Record#map.class},
-      {<<"contenteditable">>, case Record#map.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#map.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#map.contextmenu},
       {<<"contextmenu">>, Record#map.contextmenu},
-      {<<"dir">>, case Record#map.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#map.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#map.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#map.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#map.dropzone},
       {<<"dropzone">>, Record#map.dropzone},
-      {<<"hidden">>, case Record#map.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#map.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#map.id},
       {<<"id">>, Record#map.id},
       {<<"lang">>, Record#map.lang},
       {<<"lang">>, Record#map.lang},
-      {<<"spellcheck">>, case Record#map.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#map.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#map.style},
       {<<"style">>, Record#map.style},
       {<<"tabindex">>, Record#map.tabindex},
       {<<"tabindex">>, Record#map.tabindex},
       {<<"title">>, Record#map.title},
       {<<"title">>, Record#map.title},
-      {<<"translate">>, case Record#map.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#map.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"name">>,Record#map.name} | Record#map.data_fields
       {<<"name">>,Record#map.name} | Record#map.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"map">>, nitro:render(case Record#map.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"map">>, nitro:render(case Record#map.body of [] -> []; B -> B end), List).

+ 8 - 8
src/elements/element_menu.erl

@@ -8,21 +8,21 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#menu.accesskey},
       {<<"accesskey">>, Record#menu.accesskey},
       {<<"class">>, Record#menu.class},
       {<<"class">>, Record#menu.class},
-      {<<"contenteditable">>, case Record#menu.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#menu.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#menu.contextmenu},
       {<<"contextmenu">>, Record#menu.contextmenu},
-      {<<"dir">>, case Record#menu.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#menu.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#menu.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#menu.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#menu.dropzone},
       {<<"dropzone">>, Record#menu.dropzone},
-      {<<"hidden">>, case Record#menu.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#menu.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#menu.id},
       {<<"id">>, Record#menu.id},
       {<<"lang">>, Record#menu.lang},
       {<<"lang">>, Record#menu.lang},
-      {<<"spellcheck">>, case Record#menu.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#menu.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#menu.style},
       {<<"style">>, Record#menu.style},
       {<<"tabindex">>, Record#menu.tabindex},
       {<<"tabindex">>, Record#menu.tabindex},
       {<<"title">>, Record#menu.title},
       {<<"title">>, Record#menu.title},
-      {<<"translate">>, case Record#menu.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#menu.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"label">>, Record#menu.label},
       {<<"label">>, Record#menu.label},
-      {<<"type">>, case Record#menu.type of "toolbar" -> "toolbar"; "context" -> "context"; _ -> undefined end} | Record#menu.data_fields
+      {<<"type">>, case Record#menu.type of "toolbar" -> "toolbar"; "context" -> "context"; _ -> [] end} | Record#menu.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"menu">>, nitro:render(case Record#menu.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"menu">>, nitro:render(case Record#menu.body of [] -> []; B -> B end), List).

+ 6 - 6
src/elements/element_meta.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#meta.accesskey},
       {<<"accesskey">>, Record#meta.accesskey},
       {<<"class">>, Record#meta.class},
       {<<"class">>, Record#meta.class},
-      {<<"contenteditable">>, case Record#meta.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#meta.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#meta.contextmenu},
       {<<"contextmenu">>, Record#meta.contextmenu},
-      {<<"dir">>, case Record#meta.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#meta.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#meta.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#meta.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#meta.dropzone},
       {<<"dropzone">>, Record#meta.dropzone},
-      {<<"hidden">>, case Record#meta.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#meta.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#meta.id},
       {<<"id">>, Record#meta.id},
       {<<"lang">>, Record#meta.lang},
       {<<"lang">>, Record#meta.lang},
-      {<<"spellcheck">>, case Record#meta.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#meta.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#meta.style},
       {<<"style">>, Record#meta.style},
       {<<"tabindex">>, Record#meta.tabindex},
       {<<"tabindex">>, Record#meta.tabindex},
       {<<"title">>, Record#meta.title},
       {<<"title">>, Record#meta.title},
-      {<<"translate">>, case Record#meta.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#meta.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"charset">>, Record#meta.charset},
       {<<"charset">>, Record#meta.charset},
       {<<"content">>, Record#meta.content},
       {<<"content">>, Record#meta.content},

+ 6 - 6
src/elements/element_meta_base.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#base.accesskey},
       {<<"accesskey">>, Record#base.accesskey},
       {<<"class">>, Record#base.class},
       {<<"class">>, Record#base.class},
-      {<<"contenteditable">>, case Record#base.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#base.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#base.contextmenu},
       {<<"contextmenu">>, Record#base.contextmenu},
-      {<<"dir">>, case Record#base.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#base.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#base.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#base.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#base.dropzone},
       {<<"dropzone">>, Record#base.dropzone},
-      {<<"hidden">>, case Record#base.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#base.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#base.id},
       {<<"id">>, Record#base.id},
       {<<"lang">>, Record#base.lang},
       {<<"lang">>, Record#base.lang},
-      {<<"spellcheck">>, case Record#base.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#base.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#base.style},
       {<<"style">>, Record#base.style},
       {<<"tabindex">>, Record#base.tabindex},
       {<<"tabindex">>, Record#base.tabindex},
       {<<"title">>, Record#base.title},
       {<<"title">>, Record#base.title},
-      {<<"translate">>, case Record#base.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#base.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"href">>,Record#base.href},
       {<<"href">>,Record#base.href},
       {<<"target">>,Record#base.target} | Record#base.data_fields
       {<<"target">>,Record#base.target} | Record#base.data_fields

+ 6 - 6
src/elements/element_meta_link.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#meta_link.accesskey},
       {<<"accesskey">>, Record#meta_link.accesskey},
       {<<"class">>, Record#meta_link.class},
       {<<"class">>, Record#meta_link.class},
-      {<<"contenteditable">>, case Record#meta_link.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#meta_link.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#meta_link.contextmenu},
       {<<"contextmenu">>, Record#meta_link.contextmenu},
-      {<<"dir">>, case Record#meta_link.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#meta_link.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#meta_link.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#meta_link.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#meta_link.dropzone},
       {<<"dropzone">>, Record#meta_link.dropzone},
-      {<<"hidden">>, case Record#meta_link.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#meta_link.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#meta_link.id},
       {<<"id">>, Record#meta_link.id},
       {<<"lang">>, Record#meta_link.lang},
       {<<"lang">>, Record#meta_link.lang},
-      {<<"spellcheck">>, case Record#meta_link.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#meta_link.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#meta_link.style},
       {<<"style">>, Record#meta_link.style},
       {<<"tabindex">>, Record#meta_link.tabindex},
       {<<"tabindex">>, Record#meta_link.tabindex},
       {<<"title">>, Record#meta_link.title},
       {<<"title">>, Record#meta_link.title},
-      {<<"translate">>, case Record#meta_link.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#meta_link.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"href">>,Record#meta_link.href},
       {<<"href">>,Record#meta_link.href},
       {<<"hreflang">>,Record#meta_link.hreflang},
       {<<"hreflang">>,Record#meta_link.hreflang},

+ 7 - 7
src/elements/element_meter.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#meter.accesskey},
       {<<"accesskey">>, Record#meter.accesskey},
       {<<"class">>, Record#meter.class},
       {<<"class">>, Record#meter.class},
-      {<<"contenteditable">>, case Record#meter.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#meter.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#meter.contextmenu},
       {<<"contextmenu">>, Record#meter.contextmenu},
-      {<<"dir">>, case Record#meter.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#meter.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#meter.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#meter.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#meter.dropzone},
       {<<"dropzone">>, Record#meter.dropzone},
-      {<<"hidden">>, case Record#meter.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#meter.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#meter.id},
       {<<"id">>, Record#meter.id},
       {<<"lang">>, Record#meter.lang},
       {<<"lang">>, Record#meter.lang},
-      {<<"spellcheck">>, case Record#meter.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#meter.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#meter.style},
       {<<"style">>, Record#meter.style},
       {<<"tabindex">>, Record#meter.tabindex},
       {<<"tabindex">>, Record#meter.tabindex},
       {<<"title">>, Record#meter.title},
       {<<"title">>, Record#meter.title},
-      {<<"translate">>, case Record#meter.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#meter.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"high">>,Record#meter.high},
       {<<"high">>,Record#meter.high},
       {<<"low">>,Record#meter.low},
       {<<"low">>,Record#meter.low},
@@ -29,4 +29,4 @@ render_element(Record) ->
       {<<"optimum">>,Record#meter.optimum},
       {<<"optimum">>,Record#meter.optimum},
       {<<"value">>, Record#meter.value} | Record#meter.data_fields
       {<<"value">>, Record#meter.value} | Record#meter.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"meter">>, nitro:render(case Record#meter.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"meter">>, nitro:render(case Record#meter.body of [] -> []; B -> B end), List).

+ 12 - 12
src/elements/element_month.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#month.postback of
     Id = case Record#month.postback of
-        undefined -> Record#month.id;
+        [] -> Record#month.id;
         Postback ->
         Postback ->
           ID = case Record#month.id of
           ID = case Record#month.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#month.source, delegate=Record#month.delegate }),
                   source=Record#month.source, delegate=Record#month.delegate }),
@@ -17,29 +17,29 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#month.accesskey},
       {<<"accesskey">>, Record#month.accesskey},
       {<<"class">>, Record#month.class},
       {<<"class">>, Record#month.class},
-      {<<"contenteditable">>, case Record#month.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#month.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#month.contextmenu},
       {<<"contextmenu">>, Record#month.contextmenu},
-      {<<"dir">>, case Record#month.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#month.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#month.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#month.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#month.dropzone},
       {<<"dropzone">>, Record#month.dropzone},
-      {<<"hidden">>, case Record#month.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#month.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#month.lang},
       {<<"lang">>, Record#month.lang},
-      {<<"spellcheck">>, case Record#month.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#month.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#month.style},
       {<<"style">>, Record#month.style},
       {<<"tabindex">>, Record#month.tabindex},
       {<<"tabindex">>, Record#month.tabindex},
       {<<"title">>, Record#month.title},
       {<<"title">>, Record#month.title},
-      {<<"translate">>, case Record#month.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#month.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"alt">>,Record#month.alt},
       {<<"alt">>,Record#month.alt},
-      {<<"autofocus">>,if Record#month.autofocus == true -> "autofocus"; true -> undefined end},            
-      {<<"disabled">>, if Record#month.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autofocus">>,if Record#month.autofocus == true -> "autofocus"; true -> [] end},            
+      {<<"disabled">>, if Record#month.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#month.form},
       {<<"form">>,Record#month.form},
       {<<"max">>,Record#month.max},
       {<<"max">>,Record#month.max},
       {<<"min">>,Record#month.min},      
       {<<"min">>,Record#month.min},      
       {<<"name">>,Record#month.name},
       {<<"name">>,Record#month.name},
-      {<<"readonly">>,if Record#month.readonly == true -> "readonly"; true -> undefined end},      
-      {<<"required">>,if Record#month.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#month.readonly == true -> "readonly"; true -> [] end},      
+      {<<"required">>,if Record#month.required == true -> "required"; true -> [] end},      
       {<<"step">>,Record#month.step},
       {<<"step">>,Record#month.step},
       {<<"type">>, <<"month">>},
       {<<"type">>, <<"month">>},
       {<<"value">>, Record#month.value} | Record#month.data_fields
       {<<"value">>, Record#month.value} | Record#month.data_fields

+ 13 - 13
src/elements/element_number.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#number.postback of
     Id = case Record#number.postback of
-        undefined -> Record#number.id;
+        [] -> Record#number.id;
         Postback ->
         Postback ->
           ID = case Record#number.id of
           ID = case Record#number.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#number.source, delegate=Record#number.delegate }),
                   source=Record#number.source, delegate=Record#number.delegate }),
@@ -17,31 +17,31 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#number.accesskey},
       {<<"accesskey">>, Record#number.accesskey},
       {<<"class">>, Record#number.class},
       {<<"class">>, Record#number.class},
-      {<<"contenteditable">>, case Record#number.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#number.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#number.contextmenu},
       {<<"contextmenu">>, Record#number.contextmenu},
-      {<<"dir">>, case Record#number.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#number.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#number.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#number.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#number.dropzone},
       {<<"dropzone">>, Record#number.dropzone},
-      {<<"hidden">>, case Record#number.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#number.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#number.lang},
       {<<"lang">>, Record#number.lang},
-      {<<"spellcheck">>, case Record#number.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#number.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#number.style},
       {<<"style">>, Record#number.style},
       {<<"tabindex">>, Record#number.tabindex},
       {<<"tabindex">>, Record#number.tabindex},
       {<<"title">>, Record#number.title},
       {<<"title">>, Record#number.title},
-      {<<"translate">>, case Record#number.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#number.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec      
       % spec      
-      {<<"autocomplete">>, case Record#number.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#number.autofocus == true -> "autofocus"; true -> undefined end},            
-      {<<"disabled">>, if Record#number.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#number.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#number.autofocus == true -> "autofocus"; true -> [] end},            
+      {<<"disabled">>, if Record#number.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#number.form},
       {<<"form">>,Record#number.form},
       {<<"list">>,Record#number.list},
       {<<"list">>,Record#number.list},
       {<<"max">>,Record#number.max},
       {<<"max">>,Record#number.max},
       {<<"min">>,Record#number.min},      
       {<<"min">>,Record#number.min},      
       {<<"name">>,Record#number.name},
       {<<"name">>,Record#number.name},
       {<<"placeholder">>,Record#number.placeholder},
       {<<"placeholder">>,Record#number.placeholder},
-      {<<"readonly">>,if Record#number.readonly == true -> "readonly"; true -> undefined end},      
-      {<<"required">>,if Record#number.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#number.readonly == true -> "readonly"; true -> [] end},      
+      {<<"required">>,if Record#number.required == true -> "required"; true -> [] end},      
       {<<"step">>,Record#number.step},
       {<<"step">>,Record#number.step},
       {<<"type">>, <<"number">>},
       {<<"type">>, <<"number">>},
       {<<"value">>, Record#number.value} | Record#number.data_fields
       {<<"value">>, Record#number.value} | Record#number.data_fields

+ 7 - 7
src/elements/element_object.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#object.accesskey},
       {<<"accesskey">>, Record#object.accesskey},
       {<<"class">>, Record#object.class},
       {<<"class">>, Record#object.class},
-      {<<"contenteditable">>, case Record#object.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#object.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#object.contextmenu},
       {<<"contextmenu">>, Record#object.contextmenu},
-      {<<"dir">>, case Record#object.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#object.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#object.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#object.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#object.dropzone},
       {<<"dropzone">>, Record#object.dropzone},
-      {<<"hidden">>, case Record#object.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#object.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#object.id},
       {<<"id">>, Record#object.id},
       {<<"lang">>, Record#object.lang},
       {<<"lang">>, Record#object.lang},
-      {<<"spellcheck">>, case Record#object.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#object.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#object.style},
       {<<"style">>, Record#object.style},
       {<<"tabindex">>, Record#object.tabindex},
       {<<"tabindex">>, Record#object.tabindex},
       {<<"title">>, Record#object.title},
       {<<"title">>, Record#object.title},
-      {<<"translate">>, case Record#object.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#object.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"data">>,Record#object.data},      
       {<<"data">>,Record#object.data},      
       {<<"form">>,Record#object.form},      
       {<<"form">>,Record#object.form},      
@@ -30,4 +30,4 @@ render_element(Record) ->
       {<<"usemap">>,Record#object.usemap},            
       {<<"usemap">>,Record#object.usemap},            
       {<<"width">>,Record#object.width} | Record#object.data_fields
       {<<"width">>,Record#object.width} | Record#object.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"object">>, nitro:render(case Record#object.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"object">>, nitro:render(case Record#object.body of [] -> []; B -> B end), List).

+ 7 - 7
src/elements/element_output.erl

@@ -8,22 +8,22 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#output.accesskey},
       {<<"accesskey">>, Record#output.accesskey},
       {<<"class">>, Record#output.class},
       {<<"class">>, Record#output.class},
-      {<<"contenteditable">>, case Record#output.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#output.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#output.contextmenu},
       {<<"contextmenu">>, Record#output.contextmenu},
-      {<<"dir">>, case Record#output.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#output.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#output.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#output.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#output.dropzone},
       {<<"dropzone">>, Record#output.dropzone},
-      {<<"hidden">>, case Record#output.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#output.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#output.id},
       {<<"id">>, Record#output.id},
       {<<"lang">>, Record#output.lang},
       {<<"lang">>, Record#output.lang},
-      {<<"spellcheck">>, case Record#output.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#output.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#output.style},
       {<<"style">>, Record#output.style},
       {<<"tabindex">>, Record#output.tabindex},
       {<<"tabindex">>, Record#output.tabindex},
       {<<"title">>, Record#output.title},
       {<<"title">>, Record#output.title},
-      {<<"translate">>, case Record#output.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#output.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"for">>,Record#output.for},
       {<<"for">>,Record#output.for},
       {<<"form">>,Record#output.form},
       {<<"form">>,Record#output.form},
       {<<"name">>,Record#output.name} | Record#output.data_fields
       {<<"name">>,Record#output.name} | Record#output.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"output">>, nitro:render(case Record#output.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"output">>, nitro:render(case Record#output.body of [] -> []; B -> B end), List).

+ 6 - 6
src/elements/element_param.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#param.accesskey},
       {<<"accesskey">>, Record#param.accesskey},
       {<<"class">>, Record#param.class},
       {<<"class">>, Record#param.class},
-      {<<"contenteditable">>, case Record#param.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#param.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#param.contextmenu},
       {<<"contextmenu">>, Record#param.contextmenu},
-      {<<"dir">>, case Record#param.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#param.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#param.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#param.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#param.dropzone},
       {<<"dropzone">>, Record#param.dropzone},
-      {<<"hidden">>, case Record#param.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#param.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#param.id},
       {<<"id">>, Record#param.id},
       {<<"lang">>, Record#param.lang},
       {<<"lang">>, Record#param.lang},
-      {<<"spellcheck">>, case Record#param.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#param.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#param.style},
       {<<"style">>, Record#param.style},
       {<<"tabindex">>, Record#param.tabindex},
       {<<"tabindex">>, Record#param.tabindex},
       {<<"title">>, Record#param.title},
       {<<"title">>, Record#param.title},
-      {<<"translate">>, case Record#param.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#param.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"name">>,Record#param.name},
       {<<"name">>,Record#param.name},
       {<<"value">>,Record#param.value} | Record#param.data_fields
       {<<"value">>,Record#param.value} | Record#param.data_fields

+ 13 - 13
src/elements/element_password.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#password.postback of
     Id = case Record#password.postback of
-        undefined -> Record#password.id;
+        [] -> Record#password.id;
         Postback ->
         Postback ->
           ID = case Record#password.id of
           ID = case Record#password.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#password.source, delegate=Record#password.delegate }),
                   source=Record#password.source, delegate=Record#password.delegate }),
@@ -17,30 +17,30 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#password.accesskey},
       {<<"accesskey">>, Record#password.accesskey},
       {<<"class">>, Record#password.class},
       {<<"class">>, Record#password.class},
-      {<<"contenteditable">>, case Record#password.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#password.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#password.contextmenu},
       {<<"contextmenu">>, Record#password.contextmenu},
-      {<<"dir">>, case Record#password.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#password.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#password.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#password.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#password.dropzone},
       {<<"dropzone">>, Record#password.dropzone},
-      {<<"hidden">>, case Record#password.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#password.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#password.lang},
       {<<"lang">>, Record#password.lang},
-      {<<"spellcheck">>, case Record#password.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#password.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#password.style},
       {<<"style">>, Record#password.style},
       {<<"tabindex">>, Record#password.tabindex},
       {<<"tabindex">>, Record#password.tabindex},
       {<<"title">>, Record#password.title},
       {<<"title">>, Record#password.title},
-      {<<"translate">>, case Record#password.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#password.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec 
       % spec 
-      {<<"autocomplete">>, case Record#password.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},      
-      {<<"autofocus">>,if Record#password.autofocus == true -> "autofocus"; true -> undefined end},            
-      {<<"disabled">>, if Record#password.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#password.autocomplete of true -> "on"; false -> "off"; _ -> [] end},      
+      {<<"autofocus">>,if Record#password.autofocus == true -> "autofocus"; true -> [] end},            
+      {<<"disabled">>, if Record#password.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#password.form},
       {<<"form">>,Record#password.form},
       {<<"maxlength">>,Record#password.maxlength},
       {<<"maxlength">>,Record#password.maxlength},
       {<<"name">>,Record#password.name},
       {<<"name">>,Record#password.name},
       {<<"pattern">>,Record#password.pattern},
       {<<"pattern">>,Record#password.pattern},
       {<<"placeholder">>, Record#password.placeholder},
       {<<"placeholder">>, Record#password.placeholder},
-      {<<"readonly">>,if Record#password.readonly == true -> "readonly"; true -> undefined end},      
-      {<<"required">>,if Record#password.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#password.readonly == true -> "readonly"; true -> [] end},      
+      {<<"required">>,if Record#password.required == true -> "required"; true -> [] end},      
       {<<"size">>,Record#password.size},
       {<<"size">>,Record#password.size},
       {<<"type">>, <<"password">>},
       {<<"type">>, <<"password">>},
       {<<"value">>, Record#password.value} | Record#password.data_fields
       {<<"value">>, Record#password.value} | Record#password.data_fields

+ 7 - 7
src/elements/element_progress.erl

@@ -8,21 +8,21 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#progress.accesskey},
       {<<"accesskey">>, Record#progress.accesskey},
       {<<"class">>, Record#progress.class},
       {<<"class">>, Record#progress.class},
-      {<<"contenteditable">>, case Record#progress.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#progress.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#progress.contextmenu},
       {<<"contextmenu">>, Record#progress.contextmenu},
-      {<<"dir">>, case Record#progress.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#progress.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#progress.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#progress.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#progress.dropzone},
       {<<"dropzone">>, Record#progress.dropzone},
-      {<<"hidden">>, case Record#progress.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#progress.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#progress.id},
       {<<"id">>, Record#progress.id},
       {<<"lang">>, Record#progress.lang},
       {<<"lang">>, Record#progress.lang},
-      {<<"spellcheck">>, case Record#progress.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#progress.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#progress.style},
       {<<"style">>, Record#progress.style},
       {<<"tabindex">>, Record#progress.tabindex},
       {<<"tabindex">>, Record#progress.tabindex},
       {<<"title">>, Record#progress.title},
       {<<"title">>, Record#progress.title},
-      {<<"translate">>, case Record#progress.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#progress.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"max">>,Record#progress.max},
       {<<"max">>,Record#progress.max},
       {<<"value">>,Record#progress.value} | Record#progress.data_fields
       {<<"value">>,Record#progress.value} | Record#progress.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"progress">>, nitro:render(case Record#progress.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"progress">>, nitro:render(case Record#progress.body of [] -> []; B -> B end), List).

+ 7 - 7
src/elements/element_q.erl

@@ -8,20 +8,20 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#q.accesskey},
       {<<"accesskey">>, Record#q.accesskey},
       {<<"class">>, Record#q.class},
       {<<"class">>, Record#q.class},
-      {<<"contenteditable">>, case Record#q.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#q.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#q.contextmenu},
       {<<"contextmenu">>, Record#q.contextmenu},
-      {<<"dir">>, case Record#q.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#q.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#q.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#q.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#q.dropzone},
       {<<"dropzone">>, Record#q.dropzone},
-      {<<"hidden">>, case Record#q.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#q.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#q.id},
       {<<"id">>, Record#q.id},
       {<<"lang">>, Record#q.lang},
       {<<"lang">>, Record#q.lang},
-      {<<"spellcheck">>, case Record#q.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#q.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#q.style},
       {<<"style">>, Record#q.style},
       {<<"tabindex">>, Record#q.tabindex},
       {<<"tabindex">>, Record#q.tabindex},
       {<<"title">>, Record#q.title},
       {<<"title">>, Record#q.title},
-      {<<"translate">>, case Record#q.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#q.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"cite">>,Record#q.cite} | Record#q.data_fields
       {<<"cite">>,Record#q.cite} | Record#q.data_fields
     ],
     ],
-    wf_tags:emit_tag( <<"q">>, nitro:render(case Record#q.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag( <<"q">>, nitro:render(case Record#q.body of [] -> []; B -> B end), List).

+ 3 - 3
src/elements/element_radio.erl

@@ -5,12 +5,12 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     ID = case Record#radio.id of
     ID = case Record#radio.id of
-        undefined -> nitro:temp_id();
+        [] -> nitro:temp_id();
         RadioID -> RadioID
         RadioID -> RadioID
     end,
     end,
 
 
     case Record#radio.postback of
     case Record#radio.postback of
-        undefined -> ignore;
+        [] -> ignore;
         Postback -> nitro:wire(#event{type=change, postback=Postback, target=ID, delegate=Record#radio.delegate })
         Postback -> nitro:wire(#event{type=change, postback=Postback, target=ID, delegate=Record#radio.delegate })
     end,
     end,
 
 
@@ -29,7 +29,7 @@ render_element(Record) ->
             {<<"class">>, Record#radio.class},
             {<<"class">>, Record#radio.class},
             {<<"style">>, Record#radio.style},
             {<<"style">>, Record#radio.style},
             {<<"onclick">>, Record#radio.onclick},
             {<<"onclick">>, Record#radio.onclick},
-            {<<"required">>,if Record#radio.required == true -> "required"; true -> undefined end}
+            {<<"required">>,if Record#radio.required == true -> "required"; true -> [] end}
         ])
         ])
 
 
     ].
     ].

+ 11 - 11
src/elements/element_range.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#range.postback of
     Id = case Record#range.postback of
-        undefined -> Record#range.id;
+        [] -> Record#range.id;
         Postback ->
         Postback ->
           ID = case Record#range.id of
           ID = case Record#range.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#range.source, delegate=Record#range.delegate }),
                   source=Record#range.source, delegate=Record#range.delegate }),
@@ -17,23 +17,23 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#range.accesskey},
       {<<"accesskey">>, Record#range.accesskey},
       {<<"class">>, Record#range.class},
       {<<"class">>, Record#range.class},
-      {<<"contenteditable">>, case Record#range.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#range.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#range.contextmenu},
       {<<"contextmenu">>, Record#range.contextmenu},
-      {<<"dir">>, case Record#range.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#range.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#range.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#range.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#range.dropzone},
       {<<"dropzone">>, Record#range.dropzone},
-      {<<"hidden">>, case Record#range.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#range.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#range.lang},
       {<<"lang">>, Record#range.lang},
-      {<<"spellcheck">>, case Record#range.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#range.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#range.style},
       {<<"style">>, Record#range.style},
       {<<"tabindex">>, Record#range.tabindex},
       {<<"tabindex">>, Record#range.tabindex},
       {<<"title">>, Record#range.title},
       {<<"title">>, Record#range.title},
-      {<<"translate">>, case Record#range.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#range.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#range.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#range.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#range.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#range.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#range.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#range.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#range.form},
       {<<"form">>,Record#range.form},
       {<<"list">>,Record#range.list},
       {<<"list">>,Record#range.list},
       {<<"max">>,Record#range.max},
       {<<"max">>,Record#range.max},

+ 10 - 10
src/elements/element_reset.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#reset.postback of
     Id = case Record#reset.postback of
-        undefined -> Record#reset.id;
+        [] -> Record#reset.id;
         Postback ->
         Postback ->
           ID = case Record#reset.id of
           ID = case Record#reset.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#reset.source, delegate=Record#reset.delegate }),
                   source=Record#reset.source, delegate=Record#reset.delegate }),
@@ -17,22 +17,22 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#reset.accesskey},
       {<<"accesskey">>, Record#reset.accesskey},
       {<<"class">>, Record#reset.class},
       {<<"class">>, Record#reset.class},
-      {<<"contenteditable">>, case Record#reset.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#reset.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#reset.contextmenu},
       {<<"contextmenu">>, Record#reset.contextmenu},
-      {<<"dir">>, case Record#reset.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#reset.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#reset.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#reset.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#reset.dropzone},
       {<<"dropzone">>, Record#reset.dropzone},
-      {<<"hidden">>, case Record#reset.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#reset.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#reset.lang},
       {<<"lang">>, Record#reset.lang},
-      {<<"spellcheck">>, case Record#reset.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#reset.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#reset.style},
       {<<"style">>, Record#reset.style},
       {<<"tabindex">>, Record#reset.tabindex},
       {<<"tabindex">>, Record#reset.tabindex},
       {<<"title">>, Record#reset.title},
       {<<"title">>, Record#reset.title},
-      {<<"translate">>, case Record#reset.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#reset.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autofocus">>,if Record#reset.autofocus == true -> "autofocus"; true -> undefined end},            
-      {<<"disabled">>, if Record#reset.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autofocus">>,if Record#reset.autofocus == true -> "autofocus"; true -> [] end},            
+      {<<"disabled">>, if Record#reset.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#reset.form},
       {<<"form">>,Record#reset.form},
       {<<"name">>,Record#reset.name},
       {<<"name">>,Record#reset.name},
       {<<"type">>, <<"reset">>},
       {<<"type">>, <<"reset">>},

+ 9 - 9
src/elements/element_script.erl

@@ -8,27 +8,27 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#script.accesskey},
       {<<"accesskey">>, Record#script.accesskey},
       {<<"class">>, Record#script.class},
       {<<"class">>, Record#script.class},
-      {<<"contenteditable">>, case Record#script.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#script.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#script.contextmenu},
       {<<"contextmenu">>, Record#script.contextmenu},
-      {<<"dir">>, case Record#script.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#script.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#script.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#script.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#script.dropzone},
       {<<"dropzone">>, Record#script.dropzone},
-      {<<"hidden">>, case Record#script.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#script.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#script.id},
       {<<"id">>, Record#script.id},
       {<<"lang">>, Record#script.lang},
       {<<"lang">>, Record#script.lang},
-      {<<"spellcheck">>, case Record#script.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#script.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#script.style},
       {<<"style">>, Record#script.style},
       {<<"tabindex">>, Record#script.tabindex},
       {<<"tabindex">>, Record#script.tabindex},
       {<<"title">>, Record#script.title},
       {<<"title">>, Record#script.title},
-      {<<"translate">>, case Record#script.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#script.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"async">>, if Record#script.async == true -> "async"; true -> undefined end},
+      {<<"async">>, if Record#script.async == true -> "async"; true -> [] end},
       {<<"charset">>,Record#script.charset},
       {<<"charset">>,Record#script.charset},
-      {<<"defer">>, if Record#script.defer == true -> "defer"; true -> undefined end},
+      {<<"defer">>, if Record#script.defer == true -> "defer"; true -> [] end},
       {<<"src">>,Record#script.src},
       {<<"src">>,Record#script.src},
       {<<"type">>,Record#script.type} | Record#script.data_fields
       {<<"type">>,Record#script.type} | Record#script.data_fields
     ],
     ],
     wf_tags:emit_tag(<<"script">>,
     wf_tags:emit_tag(<<"script">>,
       case Record#script.src of
       case Record#script.src of
-           [] -> nitro:render(case Record#script.body of undefined -> []; B -> B end);
+           [] -> nitro:render(case Record#script.body of [] -> []; B -> B end);
            _ -> [] end, List).
            _ -> [] end, List).

+ 13 - 13
src/elements/element_search.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#search.postback of
     Id = case Record#search.postback of
-        undefined -> Record#search.id;
+        [] -> Record#search.id;
         Postback ->
         Postback ->
           ID = case Record#search.id of
           ID = case Record#search.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#search.source, delegate=Record#search.delegate }),
                   source=Record#search.source, delegate=Record#search.delegate }),
@@ -17,32 +17,32 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#search.accesskey},
       {<<"accesskey">>, Record#search.accesskey},
       {<<"class">>, Record#search.class},
       {<<"class">>, Record#search.class},
-      {<<"contenteditable">>, case Record#search.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#search.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#search.contextmenu},
       {<<"contextmenu">>, Record#search.contextmenu},
-      {<<"dir">>, case Record#search.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#search.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#search.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#search.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#search.dropzone},
       {<<"dropzone">>, Record#search.dropzone},
-      {<<"hidden">>, case Record#search.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#search.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#search.lang},
       {<<"lang">>, Record#search.lang},
-      {<<"spellcheck">>, case Record#search.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#search.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#search.style},
       {<<"style">>, Record#search.style},
       {<<"tabindex">>, Record#search.tabindex},
       {<<"tabindex">>, Record#search.tabindex},
       {<<"title">>, Record#search.title},
       {<<"title">>, Record#search.title},
-      {<<"translate">>, case Record#search.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#search.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#search.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#search.autofocus == true -> "autofocus"; true -> undefined end},
+      {<<"autocomplete">>, case Record#search.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#search.autofocus == true -> "autofocus"; true -> [] end},
       {<<"dirname">>,Record#search.dirname},
       {<<"dirname">>,Record#search.dirname},
-      {<<"disabled">>, if Record#search.disabled == true -> "disabled"; true -> undefined end},
+      {<<"disabled">>, if Record#search.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#search.form},
       {<<"form">>,Record#search.form},
       {<<"list">>,Record#search.list},
       {<<"list">>,Record#search.list},
       {<<"maxlength">>,Record#search.maxlength},
       {<<"maxlength">>,Record#search.maxlength},
       {<<"name">>,Record#search.name},
       {<<"name">>,Record#search.name},
       {<<"pattern">>,Record#search.pattern},
       {<<"pattern">>,Record#search.pattern},
       {<<"placeholder">>,Record#search.placeholder},
       {<<"placeholder">>,Record#search.placeholder},
-      {<<"readonly">>,if Record#search.readonly == true -> "readonly"; true -> undefined end},      
-      {<<"required">>,if Record#search.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#search.readonly == true -> "readonly"; true -> [] end},      
+      {<<"required">>,if Record#search.required == true -> "required"; true -> [] end},      
       {<<"size">>,Record#search.size},
       {<<"size">>,Record#search.size},
       {<<"type">>, <<"search">>},
       {<<"type">>, <<"search">>},
       {<<"value">>, Record#search.value} | Record#search.data_fields
       {<<"value">>, Record#search.value} | Record#search.data_fields

+ 8 - 8
src/elements/element_select.erl

@@ -3,9 +3,9 @@
 -compile(export_all).
 -compile(export_all).
 
 
 render_element(Record = #select{}) ->
 render_element(Record = #select{}) ->
-  ID = case Record#select.id of undefined -> nitro:temp_id(); I->I end,
+  ID = case Record#select.id of [] -> nitro:temp_id(); I->I end,
   case Record#select.postback of
   case Record#select.postback of
-    undefined -> skip;
+    [] -> skip;
     Postback -> nitro:wire(#event{ type=change,
     Postback -> nitro:wire(#event{ type=change,
                                 target=ID,
                                 target=ID,
                                 postback=Postback,
                                 postback=Postback,
@@ -18,22 +18,22 @@ render_element(Record = #select{}) ->
     {<<"name">>, Record#select.name},
     {<<"name">>, Record#select.name},
     {<<"onchange">>, Record#select.onchange},
     {<<"onchange">>, Record#select.onchange},
     {<<"title">>, Record#select.title},
     {<<"title">>, Record#select.title},
-    {<<"required">>, case Record#select.required of true -> <<"required">>; _-> undefined end},
-    {<<"disabled">>, case Record#select.disabled of true -> <<"disabled">>; _-> undefined end},
-    {<<"multiple">>, case Record#select.multiple of true -> <<"multiple">>; _-> undefined end} | Record#select.data_fields
+    {<<"required">>, case Record#select.required of true -> <<"required">>; _-> [] end},
+    {<<"disabled">>, case Record#select.disabled of true -> <<"disabled">>; _-> [] end},
+    {<<"multiple">>, case Record#select.multiple of true -> <<"multiple">>; _-> [] end} | Record#select.data_fields
   ],
   ],
   wf_tags:emit_tag(<<"select">>, nitro:render(Record#select.body),
   wf_tags:emit_tag(<<"select">>, nitro:render(Record#select.body),
                                   Props);
                                   Props);
 render_element(Group = #optgroup{}) ->
 render_element(Group = #optgroup{}) ->
   wf_tags:emit_tag(<<"optgroup">>, nitro:render(Group#optgroup.body), [
   wf_tags:emit_tag(<<"optgroup">>, nitro:render(Group#optgroup.body), [
-    {<<"disabled">>, case Group#optgroup.disabled of true-> <<"disabled">>; _-> undefined end},
+    {<<"disabled">>, case Group#optgroup.disabled of true-> <<"disabled">>; _-> [] end},
     {<<"label">>, Group#optgroup.label}
     {<<"label">>, Group#optgroup.label}
   ]);
   ]);
 render_element(O = #option{}) ->
 render_element(O = #option{}) ->
   wf_tags:emit_tag(<<"option">>, nitro:render(O#option.body), [
   wf_tags:emit_tag(<<"option">>, nitro:render(O#option.body), [
     {<<"id">>, O#option.id},
     {<<"id">>, O#option.id},
-    {<<"disabled">>, case O#option.disabled of true -> <<"disabled">>; _-> undefined end},
+    {<<"disabled">>, case O#option.disabled of true -> <<"disabled">>; _-> [] end},
     {<<"label">>, O#option.label},
     {<<"label">>, O#option.label},
     {<<"title">>, O#option.title},
     {<<"title">>, O#option.title},
-    {<<"selected">>, case O#option.selected of true -> <<"selected">>; _-> undefined end},
+    {<<"selected">>, case O#option.selected of true -> <<"selected">>; _-> [] end},
     {<<"value">>, O#option.value} | O#option.data_fields]).
     {<<"value">>, O#option.value} | O#option.data_fields]).

+ 6 - 6
src/elements/element_source.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#source.accesskey},
       {<<"accesskey">>, Record#source.accesskey},
       {<<"class">>, Record#source.class},
       {<<"class">>, Record#source.class},
-      {<<"contenteditable">>, case Record#source.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#source.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#source.contextmenu},
       {<<"contextmenu">>, Record#source.contextmenu},
-      {<<"dir">>, case Record#source.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#source.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#source.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#source.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#source.dropzone},
       {<<"dropzone">>, Record#source.dropzone},
-      {<<"hidden">>, case Record#source.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#source.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#source.id},
       {<<"id">>, Record#source.id},
       {<<"lang">>, Record#source.lang},
       {<<"lang">>, Record#source.lang},
-      {<<"spellcheck">>, case Record#source.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#source.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#source.style},
       {<<"style">>, Record#source.style},
       {<<"tabindex">>, Record#source.tabindex},
       {<<"tabindex">>, Record#source.tabindex},
       {<<"title">>, Record#source.title},
       {<<"title">>, Record#source.title},
-      {<<"translate">>, case Record#source.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#source.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"media">>,Record#source.media},
       {<<"media">>,Record#source.media},
       {<<"type">>,Record#source.type},
       {<<"type">>,Record#source.type},

+ 8 - 8
src/elements/element_style.erl

@@ -8,22 +8,22 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#style.accesskey},
       {<<"accesskey">>, Record#style.accesskey},
       {<<"class">>, Record#style.class},
       {<<"class">>, Record#style.class},
-      {<<"contenteditable">>, case Record#style.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#style.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#style.contextmenu},
       {<<"contextmenu">>, Record#style.contextmenu},
-      {<<"dir">>, case Record#style.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#style.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#style.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#style.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#style.dropzone},
       {<<"dropzone">>, Record#style.dropzone},
-      {<<"hidden">>, case Record#style.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#style.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#style.id},
       {<<"id">>, Record#style.id},
       {<<"lang">>, Record#style.lang},
       {<<"lang">>, Record#style.lang},
-      {<<"spellcheck">>, case Record#style.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#style.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#style.style},
       {<<"style">>, Record#style.style},
       {<<"tabindex">>, Record#style.tabindex},
       {<<"tabindex">>, Record#style.tabindex},
       {<<"title">>, Record#style.title},
       {<<"title">>, Record#style.title},
-      {<<"translate">>, case Record#style.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#style.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"media">>, Record#style.media},
       {<<"media">>, Record#style.media},
-      {<<"scoped">>, case Record#style.scoped of true -> "scoped"; _ -> undefined end},      
+      {<<"scoped">>, case Record#style.scoped of true -> "scoped"; _ -> [] end},      
       {<<"type">>, Record#style.type} | Record#style.data_fields
       {<<"type">>, Record#style.type} | Record#style.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"style">>, nitro:render(case Record#style.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"style">>, nitro:render(case Record#style.body of [] -> []; B -> B end), List).

+ 3 - 3
src/elements/element_submit.erl

@@ -4,15 +4,15 @@
 -compile(export_all).
 -compile(export_all).
 
 
 render_element(Record) ->
 render_element(Record) ->
-    ID = case Record#submit.id of undefined -> nitro:temp_id(); I->I end,
+    ID = case Record#submit.id of [] -> nitro:temp_id(); I->I end,
     case Record#submit.postback of
     case Record#submit.postback of
-         undefined -> skip;
+         [] -> skip;
          Postback -> nitro:wire(#event { type=click, 
          Postback -> nitro:wire(#event { type=click, 
                                       target=ID,
                                       target=ID,
                                       postback=Postback,
                                       postback=Postback,
                                       source=Record#submit.source }) end,
                                       source=Record#submit.source }) end,
     case Record#submit.click of
     case Record#submit.click of
-         undefined -> ignore;
+         [] -> ignore;
          ClickActions -> nitro:wire(#event { target=ID, type=click, actions=ClickActions }) end,
          ClickActions -> nitro:wire(#event { target=ID, type=click, actions=ClickActions }) end,
   wf_tags:emit_tag(<<"input">>, [
   wf_tags:emit_tag(<<"input">>, [
       {<<"id">>, ID},
       {<<"id">>, ID},

+ 7 - 7
src/elements/element_summary.erl

@@ -8,18 +8,18 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#summary.accesskey},
       {<<"accesskey">>, Record#summary.accesskey},
       {<<"class">>, Record#summary.class},
       {<<"class">>, Record#summary.class},
-      {<<"contenteditable">>, case Record#summary.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#summary.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#summary.contextmenu},
       {<<"contextmenu">>, Record#summary.contextmenu},
-      {<<"dir">>, case Record#summary.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#summary.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#summary.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#summary.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#summary.dropzone},
       {<<"dropzone">>, Record#summary.dropzone},
-      {<<"hidden">>, case Record#summary.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#summary.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#summary.id},
       {<<"id">>, Record#summary.id},
       {<<"lang">>, Record#summary.lang},
       {<<"lang">>, Record#summary.lang},
-      {<<"spellcheck">>, case Record#summary.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#summary.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#summary.style},
       {<<"style">>, Record#summary.style},
       {<<"tabindex">>, Record#summary.tabindex},
       {<<"tabindex">>, Record#summary.tabindex},
       {<<"title">>, Record#summary.title},
       {<<"title">>, Record#summary.title},
-      {<<"translate">>, case Record#summary.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end} | Record#summary.data_fields
+      {<<"translate">>, case Record#summary.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end} | Record#summary.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"summary">>, nitro:render(case Record#summary.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"summary">>, nitro:render(case Record#summary.body of [] -> []; B -> B end), List).

+ 5 - 5
src/elements/element_table.erl

@@ -4,26 +4,26 @@
 
 
 render_element(Record = #table{}) -> 
 render_element(Record = #table{}) -> 
   Header = case Record#table.header of
   Header = case Record#table.header of
-    undefined -> "";
+    [] -> "";
     H when is_tuple(H) -> H;
     H when is_tuple(H) -> H;
     _ -> wf_tags:emit_tag(<<"thead">>, nitro:render(Record#table.header), [])
     _ -> wf_tags:emit_tag(<<"thead">>, nitro:render(Record#table.header), [])
   end,
   end,
   Footer = case Record#table.footer of
   Footer = case Record#table.footer of
-    undefined -> "";
+    [] -> "";
     _ -> wf_tags:emit_tag(<<"tfoot">>, nitro:render(Record#table.footer), [])
     _ -> wf_tags:emit_tag(<<"tfoot">>, nitro:render(Record#table.footer), [])
   end,
   end,
   Bodies = case Record#table.body of
   Bodies = case Record#table.body of
     #tbody{} = B -> B;
     #tbody{} = B -> B;
-    undefined -> #tbody{};
+    [] -> #tbody{};
     [] -> #tbody{};
     [] -> #tbody{};
     Rows -> [case B of #tbody{}=B1 -> B1; _-> #tbody{body=B} end  || B <- Rows]
     Rows -> [case B of #tbody{}=B1 -> B1; _-> #tbody{body=B} end  || B <- Rows]
   end,
   end,
   Caption = case Record#table.caption of
   Caption = case Record#table.caption of
-    undefined -> "";
+    [] -> "";
     _ -> wf_tags:emit_tag(<<"caption">>, nitro:render(Record#table.caption), [])
     _ -> wf_tags:emit_tag(<<"caption">>, nitro:render(Record#table.caption), [])
   end,
   end,
   Colgroup = case Record#table.colgroup of
   Colgroup = case Record#table.colgroup of
-    undefined -> "";
+    [] -> "";
     _ -> wf_tags:emit_tag(<<"colgroup">>, nitro:render(Record#table.colgroup), [])
     _ -> wf_tags:emit_tag(<<"colgroup">>, nitro:render(Record#table.colgroup), [])
   end,
   end,
   wf_tags:emit_tag( <<"table">>, nitro:render([Caption, Colgroup, Header, Footer, Bodies]), [
   wf_tags:emit_tag( <<"table">>, nitro:render([Caption, Colgroup, Header, Footer, Bodies]), [

+ 13 - 13
src/elements/element_tel.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#tel.postback of
     Id = case Record#tel.postback of
-        undefined -> Record#tel.id;
+        [] -> Record#tel.id;
         Postback ->
         Postback ->
           ID = case Record#tel.id of
           ID = case Record#tel.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#tel.source, delegate=Record#tel.delegate }),
                   source=Record#tel.source, delegate=Record#tel.delegate }),
@@ -17,31 +17,31 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#tel.accesskey},
       {<<"accesskey">>, Record#tel.accesskey},
       {<<"class">>, Record#tel.class},
       {<<"class">>, Record#tel.class},
-      {<<"contenteditable">>, case Record#tel.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#tel.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#tel.contextmenu},
       {<<"contextmenu">>, Record#tel.contextmenu},
-      {<<"dir">>, case Record#tel.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#tel.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#tel.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#tel.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#tel.dropzone},
       {<<"dropzone">>, Record#tel.dropzone},
-      {<<"hidden">>, case Record#tel.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#tel.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#tel.lang},
       {<<"lang">>, Record#tel.lang},
-      {<<"spellcheck">>, case Record#tel.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#tel.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#tel.style},
       {<<"style">>, Record#tel.style},
       {<<"tabindex">>, Record#tel.tabindex},
       {<<"tabindex">>, Record#tel.tabindex},
       {<<"title">>, Record#tel.title},
       {<<"title">>, Record#tel.title},
-      {<<"translate">>, case Record#tel.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#tel.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#tel.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#tel.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#tel.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#tel.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#tel.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#tel.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#tel.form},
       {<<"form">>,Record#tel.form},
       {<<"list">>,Record#tel.list},
       {<<"list">>,Record#tel.list},
       {<<"maxlength">>,Record#tel.maxlength},
       {<<"maxlength">>,Record#tel.maxlength},
       {<<"name">>,Record#tel.name},
       {<<"name">>,Record#tel.name},
       {<<"pattern">>,Record#tel.pattern},
       {<<"pattern">>,Record#tel.pattern},
       {<<"placeholder">>,Record#tel.placeholder},
       {<<"placeholder">>,Record#tel.placeholder},
-      {<<"readonly">>,if Record#tel.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#tel.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#tel.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#tel.required == true -> "required"; true -> [] end},      
       {<<"size">>,Record#tel.size},
       {<<"size">>,Record#tel.size},
       {<<"type">>, <<"tel">>},
       {<<"type">>, <<"tel">>},
       {<<"value">>, Record#tel.value} | Record#tel.data_fields
       {<<"value">>, Record#tel.value} | Record#tel.data_fields

+ 12 - 12
src/elements/element_textarea.erl

@@ -8,33 +8,33 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#textarea.accesskey},
       {<<"accesskey">>, Record#textarea.accesskey},
       {<<"class">>, Record#textarea.class},
       {<<"class">>, Record#textarea.class},
-      {<<"contenteditable">>, case Record#textarea.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#textarea.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#textarea.contextmenu},
       {<<"contextmenu">>, Record#textarea.contextmenu},
-      {<<"dir">>, case Record#textarea.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#textarea.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#textarea.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#textarea.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#textarea.dropzone},
       {<<"dropzone">>, Record#textarea.dropzone},
-      {<<"hidden">>, case Record#textarea.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#textarea.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#textarea.id},
       {<<"id">>, Record#textarea.id},
       {<<"lang">>, Record#textarea.lang},
       {<<"lang">>, Record#textarea.lang},
-      {<<"spellcheck">>, case Record#textarea.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#textarea.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#textarea.style},
       {<<"style">>, Record#textarea.style},
       {<<"tabindex">>, Record#textarea.tabindex},
       {<<"tabindex">>, Record#textarea.tabindex},
       {<<"title">>, Record#textarea.title},
       {<<"title">>, Record#textarea.title},
-      {<<"translate">>, case Record#textarea.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#textarea.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autofocus">>,if Record#textarea.autofocus == true -> "autofocus"; true -> undefined end},
+      {<<"autofocus">>,if Record#textarea.autofocus == true -> "autofocus"; true -> [] end},
       {<<"cols">>,Record#textarea.cols},
       {<<"cols">>,Record#textarea.cols},
       {<<"dirname">>,Record#textarea.dirname},      
       {<<"dirname">>,Record#textarea.dirname},      
-      {<<"disabled">>, if Record#textarea.disabled == true -> "disabled"; true -> undefined end},
+      {<<"disabled">>, if Record#textarea.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#textarea.form},
       {<<"form">>,Record#textarea.form},
       {<<"maxlength">>,Record#textarea.maxlength},      
       {<<"maxlength">>,Record#textarea.maxlength},      
       {<<"name">>,Record#textarea.name},
       {<<"name">>,Record#textarea.name},
       {<<"placeholder">>,Record#textarea.placeholder},
       {<<"placeholder">>,Record#textarea.placeholder},
-      {<<"readonly">>,if Record#textarea.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#textarea.required == true -> "required"; true -> undefined end},
+      {<<"readonly">>,if Record#textarea.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#textarea.required == true -> "required"; true -> [] end},
       {<<"rows">>,Record#textarea.rows},      
       {<<"rows">>,Record#textarea.rows},      
       {<<"form">>,Record#textarea.wrap},
       {<<"form">>,Record#textarea.wrap},
       {<<"value">>,Record#textarea.value},
       {<<"value">>,Record#textarea.value},
-      {<<"wrap">>, case Record#textarea.wrap of "hard" -> "hard"; "soft" -> "soft"; _ -> undefined end} | Record#textarea.data_fields
+      {<<"wrap">>, case Record#textarea.wrap of "hard" -> "hard"; "soft" -> "soft"; _ -> [] end} | Record#textarea.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"textarea">>, nitro:render(case Record#textarea.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"textarea">>, nitro:render(case Record#textarea.body of [] -> []; B -> B end), List).

+ 3 - 3
src/elements/element_textbox.erl

@@ -14,9 +14,9 @@ render_element(Record) ->
       {<<"value">>, Record#textbox.value},
       {<<"value">>, Record#textbox.value},
       {<<"disabled">>,Record#textbox.disabled},
       {<<"disabled">>,Record#textbox.disabled},
       {<<"autofocus">>,Record#textbox.autofocus},
       {<<"autofocus">>,Record#textbox.autofocus},
-      {<<"readonly">>,if Record#textbox.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#textbox.required == true -> "required"; true -> undefined end}, 
+      {<<"readonly">>,if Record#textbox.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#textbox.required == true -> "required"; true -> [] end}, 
       {<<"class">>,Record#textbox.class} | Record#textbox.data_fields
       {<<"class">>,Record#textbox.class} | Record#textbox.data_fields
-  ] ++ case Record#textbox.disabled of undefined -> []; _ -> [{<<"disabled">>,<<"disabled">>}] end,
+  ] ++ case Record#textbox.disabled of [] -> []; _ -> [{<<"disabled">>,<<"disabled">>}] end,
   wf_tags:emit_tag(<<"input">>, nitro:render(Record#textbox.body), List).
   wf_tags:emit_tag(<<"input">>, nitro:render(Record#textbox.body), List).
 
 

+ 6 - 6
src/elements/element_time.erl

@@ -8,19 +8,19 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#time.accesskey},
       {<<"accesskey">>, Record#time.accesskey},
       {<<"class">>, Record#time.class},
       {<<"class">>, Record#time.class},
-      {<<"contenteditable">>, case Record#time.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#time.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#time.contextmenu},
       {<<"contextmenu">>, Record#time.contextmenu},
-      {<<"dir">>, case Record#time.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#time.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#time.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#time.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#time.dropzone},
       {<<"dropzone">>, Record#time.dropzone},
-      {<<"hidden">>, case Record#time.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#time.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#time.id},
       {<<"id">>, Record#time.id},
       {<<"lang">>, Record#time.lang},
       {<<"lang">>, Record#time.lang},
-      {<<"spellcheck">>, case Record#time.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#time.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#time.style},
       {<<"style">>, Record#time.style},
       {<<"tabindex">>, Record#time.tabindex},
       {<<"tabindex">>, Record#time.tabindex},
       {<<"title">>, Record#time.title},
       {<<"title">>, Record#time.title},
-      {<<"translate">>, case Record#time.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#time.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
       {<<"datetime">>,Record#time.datetime} | Record#time.data_fields
       {<<"datetime">>,Record#time.datetime} | Record#time.data_fields
     ],
     ],

+ 2 - 2
src/elements/element_tr.erl

@@ -3,8 +3,8 @@
 -compile(export_all).
 -compile(export_all).
 
 
 render_element(Record = #tr{postback= Postback}) ->
 render_element(Record = #tr{postback= Postback}) ->
-  Id = case Record#tr.id of undefined -> nitro:temp_id(); I->I end,
-  Cursor = case Postback of undefined -> "";
+  Id = case Record#tr.id of [] -> nitro:temp_id(); I->I end,
+  Cursor = case Postback of [] -> "";
     P -> nitro:wire(#event {type=click, postback=P, target=Id, delegate=Record#tr.delegate}), "cursor:pointer;"
     P -> nitro:wire(#event {type=click, postback=P, target=Id, delegate=Record#tr.delegate}), "cursor:pointer;"
   end,
   end,
   wf_tags:emit_tag(<<"tr">>, nitro:render(Record#tr.cells), [
   wf_tags:emit_tag(<<"tr">>, nitro:render(Record#tr.cells), [

+ 8 - 8
src/elements/element_track.erl

@@ -8,22 +8,22 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#track.accesskey},
       {<<"accesskey">>, Record#track.accesskey},
       {<<"class">>, Record#track.class},
       {<<"class">>, Record#track.class},
-      {<<"contenteditable">>, case Record#track.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#track.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#track.contextmenu},
       {<<"contextmenu">>, Record#track.contextmenu},
-      {<<"dir">>, case Record#track.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#track.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#track.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#track.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#track.dropzone},
       {<<"dropzone">>, Record#track.dropzone},
-      {<<"hidden">>, case Record#track.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#track.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#track.id},
       {<<"id">>, Record#track.id},
       {<<"lang">>, Record#track.lang},
       {<<"lang">>, Record#track.lang},
-      {<<"spellcheck">>, case Record#track.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#track.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#track.style},
       {<<"style">>, Record#track.style},
       {<<"tabindex">>, Record#track.tabindex},
       {<<"tabindex">>, Record#track.tabindex},
       {<<"title">>, Record#track.title},
       {<<"title">>, Record#track.title},
-      {<<"translate">>, case Record#track.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#track.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"default">>, case Record#track.default of true -> "default"; _ -> undefined end},
-      {<<"kind">>, case Record#track.kind of "subtitles" -> "subtitles"; "captions" -> "captions"; "descriptions" -> "descriptions"; "chapters" -> "chapters"; "metadata" -> "metadata"; _ -> undefined end},
+      {<<"default">>, case Record#track.default of true -> "default"; _ -> [] end},
+      {<<"kind">>, case Record#track.kind of "subtitles" -> "subtitles"; "captions" -> "captions"; "descriptions" -> "descriptions"; "chapters" -> "chapters"; "metadata" -> "metadata"; _ -> [] end},
       {<<"label">>, Record#track.label},
       {<<"label">>, Record#track.label},
       {<<"src">>, Record#track.src},
       {<<"src">>, Record#track.src},
       {<<"srclang">>, Record#track.srclang} | Record#track.data_fields
       {<<"srclang">>, Record#track.srclang} | Record#track.data_fields

+ 1 - 1
src/elements/element_upload.erl

@@ -3,7 +3,7 @@
 -include_lib("nitro/include/nitro.hrl").
 -include_lib("nitro/include/nitro.hrl").
 
 
 render_element(#upload{id=Id}) ->
 render_element(#upload{id=Id}) ->
-    Uid = case Id of undefined -> nitro:temp_id(); I -> I end,
+    Uid = case Id of [] -> nitro:temp_id(); I -> I end,
     nitro:wire("ftp_file=undefined;"),
     nitro:wire("ftp_file=undefined;"),
     bind(ftp_open,  click,  nitro:f("qi('~s').click(); event.preventDefault();", [nitro:to_list(Uid)])),
     bind(ftp_open,  click,  nitro:f("qi('~s').click(); event.preventDefault();", [nitro:to_list(Uid)])),
     bind(ftp_start, click,  "ftp.start(ftp_file);"),
     bind(ftp_start, click,  "ftp.start(ftp_file);"),

+ 13 - 13
src/elements/element_url.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#url.postback of
     Id = case Record#url.postback of
-        undefined -> Record#url.id;
+        [] -> Record#url.id;
         Postback ->
         Postback ->
           ID = case Record#url.id of
           ID = case Record#url.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#url.source, delegate=Record#url.delegate }),
                   source=Record#url.source, delegate=Record#url.delegate }),
@@ -17,31 +17,31 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#url.accesskey},
       {<<"accesskey">>, Record#url.accesskey},
       {<<"class">>, Record#url.class},
       {<<"class">>, Record#url.class},
-      {<<"contenteditable">>, case Record#url.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#url.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#url.contextmenu},
       {<<"contextmenu">>, Record#url.contextmenu},
-      {<<"dir">>, case Record#url.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#url.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#url.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#url.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#url.dropzone},
       {<<"dropzone">>, Record#url.dropzone},
-      {<<"hidden">>, case Record#url.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#url.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#url.lang},
       {<<"lang">>, Record#url.lang},
-      {<<"spellcheck">>, case Record#url.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#url.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#url.style},
       {<<"style">>, Record#url.style},
       {<<"tabindex">>, Record#url.tabindex},
       {<<"tabindex">>, Record#url.tabindex},
       {<<"title">>, Record#url.title},
       {<<"title">>, Record#url.title},
-      {<<"translate">>, case Record#url.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#url.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#url.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#url.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#url.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#url.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#url.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#url.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#url.form},
       {<<"form">>,Record#url.form},
       {<<"list">>,Record#url.list},
       {<<"list">>,Record#url.list},
       {<<"maxlength">>,Record#url.maxlength},
       {<<"maxlength">>,Record#url.maxlength},
       {<<"name">>,Record#url.name},
       {<<"name">>,Record#url.name},
       {<<"pattern">>,Record#url.pattern},      
       {<<"pattern">>,Record#url.pattern},      
       {<<"placeholder">>,Record#url.placeholder},      
       {<<"placeholder">>,Record#url.placeholder},      
-      {<<"readonly">>,if Record#url.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#url.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#url.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#url.required == true -> "required"; true -> [] end},      
       {<<"size">>,Record#url.size},
       {<<"size">>,Record#url.size},
       {<<"type">>, <<"url">>},
       {<<"type">>, <<"url">>},
       {<<"value">>, Record#url.value} | Record#url.data_fields
       {<<"value">>, Record#url.value} | Record#url.data_fields

+ 12 - 12
src/elements/element_video.erl

@@ -8,29 +8,29 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#video.accesskey},
       {<<"accesskey">>, Record#video.accesskey},
       {<<"class">>, Record#video.class},
       {<<"class">>, Record#video.class},
-      {<<"contenteditable">>, case Record#video.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#video.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#video.contextmenu},
       {<<"contextmenu">>, Record#video.contextmenu},
-      {<<"dir">>, case Record#video.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#video.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#video.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#video.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#video.dropzone},
       {<<"dropzone">>, Record#video.dropzone},
-      {<<"hidden">>, case Record#video.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#video.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Record#video.id},
       {<<"id">>, Record#video.id},
       {<<"lang">>, Record#video.lang},
       {<<"lang">>, Record#video.lang},
-      {<<"spellcheck">>, case Record#video.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#video.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#video.style},
       {<<"style">>, Record#video.style},
       {<<"tabindex">>, Record#video.tabindex},
       {<<"tabindex">>, Record#video.tabindex},
       {<<"title">>, Record#video.title},
       {<<"title">>, Record#video.title},
-      {<<"translate">>, case Record#video.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#video.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autoplay">>, case Record#video.autoplay of true -> "autoplay"; _ -> undefined end},      
-      {<<"controls">>, case Record#video.controls of true -> "controls"; _ -> undefined end},      
+      {<<"autoplay">>, case Record#video.autoplay of true -> "autoplay"; _ -> [] end},      
+      {<<"controls">>, case Record#video.controls of true -> "controls"; _ -> [] end},      
       {<<"height">>, Record#video.height},      
       {<<"height">>, Record#video.height},      
-      {<<"loop">>, case Record#video.loop of true -> "loop"; _ -> undefined end},            
+      {<<"loop">>, case Record#video.loop of true -> "loop"; _ -> [] end},            
       {<<"mediagroup">>, Record#video.mediagroup},      
       {<<"mediagroup">>, Record#video.mediagroup},      
-      {<<"muted">>, case Record#video.muted of true -> "muted"; _ -> undefined end},
+      {<<"muted">>, case Record#video.muted of true -> "muted"; _ -> [] end},
       {<<"poster">>, Record#video.poster},      
       {<<"poster">>, Record#video.poster},      
-      {<<"preload">>, case Record#video.preload of "auto" -> "auto"; "none" -> "none"; "metadata" -> "metadata"; _ -> undefined end},
+      {<<"preload">>, case Record#video.preload of "auto" -> "auto"; "none" -> "none"; "metadata" -> "metadata"; _ -> [] end},
       {<<"src">>, Record#video.src},     
       {<<"src">>, Record#video.src},     
       {<<"width">>, Record#video.width} | Record#video.data_fields
       {<<"width">>, Record#video.width} | Record#video.data_fields
     ],
     ],
-    wf_tags:emit_tag(<<"video">>, nitro:render(case Record#video.body of undefined -> []; B -> B end), List).
+    wf_tags:emit_tag(<<"video">>, nitro:render(case Record#video.body of [] -> []; B -> B end), List).

+ 13 - 13
src/elements/element_week.erl

@@ -5,10 +5,10 @@
 
 
 render_element(Record) ->
 render_element(Record) ->
     Id = case Record#week.postback of
     Id = case Record#week.postback of
-        undefined -> Record#week.id;
+        [] -> Record#week.id;
         Postback ->
         Postback ->
           ID = case Record#week.id of
           ID = case Record#week.id of
-            undefined -> nitro:temp_id();
+            [] -> nitro:temp_id();
             I -> I end,
             I -> I end,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
           nitro:wire(#event{type=click, postback=Postback, target=ID,
                   source=Record#week.source, delegate=Record#week.delegate }),
                   source=Record#week.source, delegate=Record#week.delegate }),
@@ -17,30 +17,30 @@ render_element(Record) ->
       %global
       %global
       {<<"accesskey">>, Record#week.accesskey},
       {<<"accesskey">>, Record#week.accesskey},
       {<<"class">>, Record#week.class},
       {<<"class">>, Record#week.class},
-      {<<"contenteditable">>, case Record#week.contenteditable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"contenteditable">>, case Record#week.contenteditable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"contextmenu">>, Record#week.contextmenu},
       {<<"contextmenu">>, Record#week.contextmenu},
-      {<<"dir">>, case Record#week.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> undefined end},
-      {<<"draggable">>, case Record#week.draggable of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"dir">>, case Record#week.dir of "ltr" -> "ltr"; "rtl" -> "rtl"; "auto" -> "auto"; _ -> [] end},
+      {<<"draggable">>, case Record#week.draggable of true -> "true"; false -> "false"; _ -> [] end},
       {<<"dropzone">>, Record#week.dropzone},
       {<<"dropzone">>, Record#week.dropzone},
-      {<<"hidden">>, case Record#week.hidden of "hidden" -> "hidden"; _ -> undefined end},
+      {<<"hidden">>, case Record#week.hidden of "hidden" -> "hidden"; _ -> [] end},
       {<<"id">>, Id},
       {<<"id">>, Id},
       {<<"lang">>, Record#week.lang},
       {<<"lang">>, Record#week.lang},
-      {<<"spellcheck">>, case Record#week.spellcheck of true -> "true"; false -> "false"; _ -> undefined end},
+      {<<"spellcheck">>, case Record#week.spellcheck of true -> "true"; false -> "false"; _ -> [] end},
       {<<"style">>, Record#week.style},
       {<<"style">>, Record#week.style},
       {<<"tabindex">>, Record#week.tabindex},
       {<<"tabindex">>, Record#week.tabindex},
       {<<"title">>, Record#week.title},
       {<<"title">>, Record#week.title},
-      {<<"translate">>, case Record#week.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> undefined end},      
+      {<<"translate">>, case Record#week.contenteditable of "yes" -> "yes"; "no" -> "no"; _ -> [] end},      
       % spec
       % spec
-      {<<"autocomplete">>, case Record#week.autocomplete of true -> "on"; false -> "off"; _ -> undefined end},
-      {<<"autofocus">>,if Record#week.autofocus == true -> "autofocus"; true -> undefined end},
-      {<<"disabled">>, if Record#week.disabled == true -> "disabled"; true -> undefined end},
+      {<<"autocomplete">>, case Record#week.autocomplete of true -> "on"; false -> "off"; _ -> [] end},
+      {<<"autofocus">>,if Record#week.autofocus == true -> "autofocus"; true -> [] end},
+      {<<"disabled">>, if Record#week.disabled == true -> "disabled"; true -> [] end},
       {<<"form">>,Record#week.form},
       {<<"form">>,Record#week.form},
       {<<"list">>,Record#week.list},
       {<<"list">>,Record#week.list},
       {<<"max">>,Record#week.max},
       {<<"max">>,Record#week.max},
       {<<"min">>,Record#week.min},
       {<<"min">>,Record#week.min},
       {<<"name">>,Record#week.name},
       {<<"name">>,Record#week.name},
-      {<<"readonly">>,if Record#week.readonly == true -> "readonly"; true -> undefined end},
-      {<<"required">>,if Record#week.required == true -> "required"; true -> undefined end},      
+      {<<"readonly">>,if Record#week.readonly == true -> "readonly"; true -> [] end},
+      {<<"required">>,if Record#week.required == true -> "required"; true -> [] end},      
       {<<"step">>,Record#week.step},
       {<<"step">>,Record#week.step},
       {<<"type">>, <<"week">>},
       {<<"type">>, <<"week">>},
       {<<"value">>, Record#week.value} | Record#week.data_fields
       {<<"value">>, Record#week.value} | Record#week.data_fields

+ 1 - 0
src/render/wf_event.erl

@@ -15,6 +15,7 @@ target(Id)     -> ["qi('",nitro:js_escape(?L(Id)),"')"].
 new(P,E,D,N,Data,Source) -> new(P,E,D,N,Data,Source,<<>>).
 new(P,E,D,N,Data,Source) -> new(P,E,D,N,Data,Source,<<>>).
 
 
 new(bin,Data) -> <<"ws.send(enc(tuple(atom('bin'),bin('",(nitro:pickle(Data))/binary,"'))));">>.
 new(bin,Data) -> <<"ws.send(enc(tuple(atom('bin'),bin('",(nitro:pickle(Data))/binary,"'))));">>.
+new([], _, _, _, _, _, _) -> <<>>;
 new(undefined, _, _, _, _, _, _) -> <<>>;
 new(undefined, _, _, _, _, _, _) -> <<>>;
 new(Postback, Element, Delegate, Name, Data, Source, Validation) ->
 new(Postback, Element, Delegate, Name, Data, Source, Validation) ->
     Module = nitro:coalesce([Delegate, ?CTX#cx.module]),
     Module = nitro:coalesce([Delegate, ?CTX#cx.module]),

+ 2 - 0
src/render/wf_render.erl

@@ -2,6 +2,7 @@
 -include_lib("nitro/include/nitro.hrl").
 -include_lib("nitro/include/nitro.hrl").
 -compile(export_all).
 -compile(export_all).
 
 
+render_item([]) -> <<>>;
 render_item(undefined) -> <<>>;
 render_item(undefined) -> <<>>;
 render_item(E) when element(2,E) =:= element -> wf_render_elements:render_element(E);
 render_item(E) when element(2,E) =:= element -> wf_render_elements:render_element(E);
 render_item(E) when element(2,E) =:= action  ->
 render_item(E) when element(2,E) =:= action  ->
@@ -11,6 +12,7 @@ render_item(E) ->
 %    io:format("Render Item: ~p~n",[E]),
 %    io:format("Render Item: ~p~n",[E]),
     E.
     E.
 
 
+render([]) -> <<>>;
 render(undefined) -> <<>>;
 render(undefined) -> <<>>;
 render(<<E/binary>>) -> E;
 render(<<E/binary>>) -> E;
 render(Elements) when is_list(Elements) ->
 render(Elements) when is_list(Elements) ->

+ 4 - 2
src/render/wf_render_elements.erl

@@ -6,11 +6,12 @@
 render_element(E) when is_list(E) -> E;
 render_element(E) when is_list(E) -> E;
 render_element(Element) when is_tuple(Element) ->
 render_element(Element) when is_tuple(Element) ->
     Id = case element(#element.id,Element) of
     Id = case element(#element.id,Element) of
+        [] -> [];
         undefined -> undefined;
         undefined -> undefined;
         L when is_list(L) -> L;
         L when is_list(L) -> L;
         Other -> nitro:to_list(Other) end,
         Other -> nitro:to_list(Other) end,
-    case element(#element.actions,Element) of undefined -> skip; Actions -> nitro:wire(Actions) end,
-    Tag = case element(#element.html_tag,Element) of undefined -> nitro:to_binary(element(1, Element)); T -> T end,
+    case element(#element.actions,Element) of [] -> skip; Actions -> nitro:wire(Actions) end,
+    Tag = case element(#element.html_tag,Element) of [] -> nitro:to_binary(element(1, Element)); T -> T end,
     case element(#element.validation,Element) of
     case element(#element.validation,Element) of
          [] -> skip;
          [] -> skip;
          Code ->
          Code ->
@@ -19,6 +20,7 @@ render_element(Element) when is_tuple(Element) ->
               "function(e) { if (!(~s)) e.preventDefault(); });"
               "function(e) { if (!(~s)) e.preventDefault(); });"
               "qi(name).validation = true;}",[Id,Code])) end,
               "qi(name).validation = true;}",[Id,Code])) end,
     case element(#element.module,Element) of
     case element(#element.module,Element) of
+        [] -> default_render(Tag, Element);
         undefined -> default_render(Tag, Element);
         undefined -> default_render(Tag, Element);
         Module -> nitro:to_binary(Module:render_element(setelement(#element.id,Element,Id))) end;
         Module -> nitro:to_binary(Module:render_element(setelement(#element.id,Element,Id))) end;
 render_element(Element) -> io:format("Unknown Element: ~p~n\r",[Element]).
 render_element(Element) -> io:format("Unknown Element: ~p~n\r",[Element]).