Browse Source

fix validation for comboLookupEdit

SunRiseGC 4 years ago
parent
commit
8dfd77090d
2 changed files with 27 additions and 3 deletions
  1. 1 1
      mix.exs
  2. 26 2
      src/render/wf_render_elements.erl

+ 1 - 1
mix.exs

@@ -4,7 +4,7 @@ defmodule NITRO.Mixfile do
   def project do
     [
       app: :nitro,
-      version: "5.12.4",
+      version: "5.4.0",
       description: "NITRO Nitrogen Web Framework",
       package: package(),
       deps: deps()

+ 26 - 2
src/render/wf_render_elements.erl

@@ -1,6 +1,7 @@
 -module (wf_render_elements).
 -author('Maxim Sokhatsky').
 -include_lib ("nitro/include/nitro.hrl").
+-include_lib ("nitro/include/comboLookupEdit.hrl").
 -compile(export_all).
 
 render_element(E) when is_list(E) -> E;
@@ -12,12 +13,35 @@ render_element(Element) when is_tuple(Element) ->
         Other -> nitro:to_list(Other) 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(1, Element) of
+      comboLookupEdit ->
+        lists:map(fun (El) ->
+          Input =
+            case element(#element.body, El) of
+              Body when not (Body == []) and is_list(Body) ->
+                case element(#element.body, hd(lists:flatten(tl(Body)))) of
+                  X when is_tuple(X)-> X;
+                  _ -> El
+                end;
+              _ -> El
+            end,
+          InputId = element(#element.id, Input),
+          case element(#element.validation, Input) of
+            [] -> skip;
+            InputCode ->
+              nitro:wire(nitro:f("{var name='~s'; qi(name).addEventListener('validation',"
+                                "function(e) { if (!(~s)) e.preventDefault(); });"
+                                "qi(name).validation = true;}",[InputId,InputCode]))
+          end
+        end, lists:flatten(tl(element(#element.body, element(#comboLookupEdit.form, Element)))));
+      _ ->
+        case element(#element.validation,Element) of
          [] -> skip;
          Code ->
          nitro:wire(nitro:f("{var name='~s'; qi(name).addEventListener('validation',"
                                 "function(e) { if (!(~s)) e.preventDefault(); });"
-                                "qi(name).validation = true;}",[Id,Code])) end,
+                                "qi(name).validation = true;}",[Id,Code])) end
+    end,
     case element(#element.module,Element) of
         [] -> default_render(Tag, Element);
         undefined -> default_render(Tag, Element);