Namdak Tonpa 5 years ago
parent
commit
402edda28d

+ 1 - 0
include/comboLookup.hrl

@@ -4,6 +4,7 @@
 -include_lib("nitro/include/nitro.hrl").
 
 -record(comboKeyup,  { value=[], dom=[], feed=[], delegate=[]}).
+-record(comboSelect,  { value=[], dom=[], feed=[], delegate=[] }).
 -record(comboNext,   { pos=[],  count=[], feed=[]}).
 -record(comboLookup, { ?ELEMENT_BASE(element_comboLookup),
     value=[],

+ 1 - 1
mix.exs

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

+ 13 - 6
src/elements/form/element_select.erl

@@ -11,7 +11,7 @@ render_element(Record = #select{}) ->
     Postback -> nitro:wire(#event{ type=change,
                                 target=ID,
                                 postback=Postback,
-                                source=[nitro:to_atom(ID)],
+                                source=[nitro:to_atom(ID)|Record#select.source],
                                 delegate=Record#select.delegate }) end,
   Props = [
     {<<"id">>, ID},
@@ -32,10 +32,17 @@ render_element(Group = #optgroup{}) ->
     {<<"label">>, Group#optgroup.label}
   ]);
 render_element(O = #option{}) ->
-  wf_tags:emit_tag(<<"option">>, nitro:render(O#option.body), [
-    {<<"id">>, O#option.id},
-    {<<"disabled">>, case O#option.disabled of true -> <<"disabled">>; _-> [] end},
+  wf_tags:emit_tag(<<"option">>, nitro:render(O#option.body), lists:flatten([get_attrs(O) | O#option.data_fields])).
+
+get_attrs(O) ->
+  ValueAttr = case {O#option.selected, O#option.disabled} of
+                {true, _} -> <<"selected value">>;
+                {true, true} -> <<"selected disabled value">>;
+                {_, true} -> <<"disabled value">>;
+                _ -> <<"value">>
+              end,
+  [{<<"id">>, O#option.id},
     {<<"label">>, O#option.label},
     {<<"title">>, O#option.title},
-    {<<"selected">>, case O#option.selected of true -> <<"selected">>; _-> [] end},
-    {<<"value">>, O#option.value} | O#option.data_fields]).
+    {ValueAttr, O#option.value}
+  ].

+ 3 - 0
src/elements/input/element_comboLookup.erl

@@ -5,8 +5,11 @@
 -export([render_element/1,proto/1]).
 
 proto(#comboKeyup{delegate=Module}=Msg) ->
+  Module:proto(Msg);
+proto(#comboSelect{delegate=Module}=Msg) ->
   Module:proto(Msg).
 
+
 render_element(#comboLookup{id=Id, style=Style, value = Val, feed = Feed, disabled = Disabled, delegate = Module} = Data) ->
   nitro:render(
     #panel{id=form:atom([lookup, Id]), class=[dropdown],

+ 1 - 1
src/nitro.app.src

@@ -1,6 +1,6 @@
 {application, nitro, [
     {description,  "NITRO Nitrogen Web Framework"},
-    {vsn,          "4.11.12"},
+    {vsn,          "4.12.0"},
     {applications, [kernel, stdlib]},
     {modules, []},
     {registered,   []},