Browse Source

triangle for comboLookup

Che 5 years ago
parent
commit
1ce5796c00
4 changed files with 30 additions and 2 deletions
  1. 1 1
      mix.exs
  2. 7 0
      priv/css/sortable.css
  3. 16 1
      priv/js/comboLookup.js
  4. 6 0
      src/elements/combo/element_comboLookup.erl

+ 1 - 1
mix.exs

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

+ 7 - 0
priv/css/sortable.css

@@ -96,4 +96,11 @@ body {
 .list__item-close:hover {
   background-color: #f44336;
   color: white;
+}
+
+.triangle{
+  position: absolute;
+  top: 1px;
+  right: 5px;
+  cursor: default;
 }

+ 16 - 1
priv/js/comboLookup.js

@@ -23,6 +23,20 @@ function comboLookupChange(dom) {
   }
 }
 
+function comboLookupClick(dom, feed, mod) {
+  var char = event.which || event.keyCode;
+  if (char ==  1 && !activeCombo && qi(dom).value == '') {
+    activeCombo = dom;
+    currentItem = undefined;
+    direct(tuple(atom('comboKey'),
+                atom('all'),
+                string(dom),
+                string(feed),
+                atom(mod)));
+    return
+  } else if(char ==  1 && activeCombo == dom){comboClear(dom);}
+}
+
 function comboLookupKeydown(dom, feed, mod) {
     var char = event.which || event.keyCode;
     if (char == 40 && !activeCombo && qi(dom).value == '') {
@@ -80,7 +94,8 @@ function set_focus(elem, scroll) {
 }
 
 document.addEventListener("click", () => {
-  if (activeCombo && !event.target.closest('#comboContainer_' + activeCombo)) {
+  if (activeCombo && event.target.className != 'triangle' &&
+    !event.target.closest('#comboContainer_' + activeCombo)) {
     qi(activeCombo).value = '';
     comboClear(activeCombo);
   }

+ 6 - 0
src/elements/combo/element_comboLookup.erl

@@ -24,6 +24,12 @@ render_element(#comboLookup{id=Id, style=Style, value = Val, bind = Object,
                                ++ nitro:to_list(Id) ++ "')"),
                         bind = Object,
                         value = Val, style = Style, class = column},
+                 #panel{class=['triangle'],
+                        body="▾",
+                        onclick = nitro:jse("comboLookupClick('"
+                               ++ nitro:to_list(Id) ++ "','"
+                               ++ nitro:to_list(Feed) ++ "','"
+                               ++ nitro:to_list(Module) ++ "')")},
                  #panel{id=form:atom([comboContainer, Id]),
                         class = ['dropdown-content']}]}).