Просмотр исходного кода

default render checkbox without label (not inside label)

221V 1 месяц назад
Родитель
Сommit
5362227342
2 измененных файлов с 14 добавлено и 9 удалено
  1. 1 1
      include/nitro.hrl
  2. 13 8
      src/elements/element_checkbox.erl

+ 1 - 1
include/nitro.hrl

@@ -70,7 +70,7 @@
 %% HTML Form inputs
 -record(input,         {?ELEMENT_BASE(element_input), required, autocomplete, autofocus, disabled, form, name, value, type = [], checked = false, placeholder, multiple, min, max, pattern, accept} ).
 -record(input_button,  {?ELEMENT_BASE(element_input_button), autofocus, disabled, form, name, value} ).
--record(checkbox,      {?ELEMENT_BASE(element_checkbox), autofocus, checked = false, disabled, form, name, required, value} ).
+-record(checkbox,      {?ELEMENT_BASE(element_checkbox), autofocus, checked = false, label = false, disabled, form, name, required, value} ). %% use label = true for got checkbox inside label
 -record(color,         {?ELEMENT_BASE(element_color), autocomplete, autofocus, disabled, form, list, name, value} ).
 -record(date,          {?ELEMENT_BASE(element_date), autocomplete, autofocus, disabled, form, list, max, min, name, step, readonly, required, value} ).
 -record(datetime,      {?ELEMENT_BASE(element_datetime), autocomplete, autofocus, disabled, form, list, max, min, name, step, readonly, required, value} ).

+ 13 - 8
src/elements/element_checkbox.erl

@@ -23,7 +23,8 @@ render_element(Record) ->
                             source = [Id | Record#checkbox.source],
                             delegate = Record#checkbox.delegate} )
   end,
-  Label = [ wf_tags:emit_tag(<<"input">>, [], [
+  
+  Checkbox = wf_tags:emit_tag(<<"input">>, [], [
     %% global
     {<<"accesskey">>, Record#checkbox.accesskey},
     {<<"class">>, Record#checkbox.class},
@@ -103,11 +104,15 @@ render_element(Record) ->
     {<<"value">>, Record#checkbox.value} | Record#checkbox.data_fields
   ]),
   
-  Record#checkbox.body ],
-  
-  wf_tags:emit_tag(<<"label">>, nitro:render(Label), [
-    {<<"class">>, Record#checkbox.class},
-    {<<"style">>, Record#checkbox.style},
-    {<<"for">>, Id}
-  ]).
+  case Record#checkbox.label of
+    true -> %% render checkbox inside label
+      wf_tags:emit_tag(<<"label">>, nitro:render([Checkbox, Record#checkbox.body]), [
+        {<<"class">>, Record#checkbox.class},
+        {<<"style">>, Record#checkbox.style},
+        {<<"for">>, Id}
+      ]);
+    
+    _ -> %% false = render checkbox without label
+      Checkbox
+  end.