improvements - jscancer - Javascript crap (relatively small)
 (HTM) git clone git://git.codemadness.org/jscancer
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit d182ddbec3df3bd0bd98fa0e6ff3ae4afce761fd
 (DIR) parent 7f49cb4a96cdbcdd229ea47fa386c1290ef3330c
 (HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
       Date:   Mon, 29 May 2017 21:30:37 +0200
       
       improvements
       
       - fix bug when focus on an input then unfocus and clicking it: the
         list item would then be not selectable usign the mouse.
       - simplify some unimportant optimization.
       - kill some lines.
       
       Diffstat:
         M datalist/datalist.js                |      43 +++++++++++++------------------
       
       1 file changed, 18 insertions(+), 25 deletions(-)
       ---
 (DIR) diff --git a/datalist/datalist.js b/datalist/datalist.js
       @@ -97,7 +97,7 @@ function datalist_init(input) {
                                if (cursel)
                                        input.value = cursel.textContent || cursel.innerText;
                                if (!datalist_visible)
       -                                return datalist_show(false);
       +                                return;
                                datalist_show(false);
                                e.stopPropagation();
                                return !!e.preventDefault();
       @@ -154,30 +154,13 @@ function datalist_init(input) {
                                if (!hassel)
                                        datalist_setsel(null);
                        }
       -                // show list if it has matches.
       -                if (m.length) {
       -                        // only one match? select it.
       -                        if (m.length == 1)
       -                                datalist_setsel(m[0].el);
       -                        datalist_render(m);
       -                }
       +                // only one match? select it.
       +                if (m.length == 1)
       +                        datalist_setsel(m[0].el);
       +                datalist_render(m);
                        datalist_show(!!m.length);
                };
       -        var focuschange = function(e) {
       -                datalist_setsel(null);
       -                if (e.target === input) {
       -                        var m = datalist_match(input.value);
       -                        if (m.length)
       -                                datalist_render(m);
       -                        datalist_show(!!m.length);
       -                        dropdown.scrollTop = 0; // reset scroll.
       -                } else {
       -                        datalist_show(false);
       -                }
       -        };
       -        input.addEventListener("input", function() {
       -                onchange();
       -        });
       +        input.addEventListener("input", onchange);
                input.addEventListener("keyup", function(e) {
                        mouse = true;
                        switch (e.which) {
       @@ -192,8 +175,18 @@ function datalist_init(input) {
                        }
                        onchange();
                }, false);
       -        input.addEventListener("focus", focuschange, false);
       -        document.addEventListener("click", focuschange, false);
       +        input.addEventListener("focus", function() {
       +                datalist_setsel(null);
       +                var m = datalist_match(input.value);
       +                datalist_render(m);
       +                datalist_show(!!m.length);
       +                dropdown.scrollTop = 0; // reset scroll.
       +        }, false);
       +        input.addEventListener("blur", function() {
       +                mouse = true;
       +                datalist_setsel(null);
       +                datalist_show(false);
       +        }, false);
                document.body.appendChild(dropdown);
        }