Pārlūkot izejas kodu

HUE-6922 [fb] When typing in the search box, last 1 or few characters get deleted when the list is refreshed

Enrico Berti 8 gadi atpakaļ
vecāks
revīzija
d6a9ce6

+ 1 - 1
apps/filebrowser/src/filebrowser/templates/listdir.mako

@@ -49,7 +49,7 @@ ${ fb_components.menubar() }
     <div class="actionbar">
     <%actionbar:render>
       <%def name="search()">
-        <input type="text" class="input-large search-query" placeholder="${_('Search for file name')}" data-bind="clearable: searchQuery, valueUpdate: 'afterkeydown'">
+        <input type="text" class="input-large search-query" placeholder="${_('Search for file name')}" data-bind="clearable: searchQuery, valueUpdateDelay: 500">
       </%def>
 
       <%def name="actions()">

+ 0 - 1
apps/filebrowser/src/filebrowser/templates/listdir_components.mako

@@ -1017,7 +1017,6 @@ from filebrowser.conf import ENABLE_EXTRACT_UPLOADED_ARCHIVE
       self.sortBy = ko.observable("name");
       self.sortDescending = ko.observable(false);
       self.searchQuery = ko.observable("");
-      self.searchQuery.extend({ rateLimit: 500 });
       self.skipTrash = ko.observable(false);
       self.enableFilterAfterSearch = true;
       self.isCurrentDirSentryManaged = ko.observable(false);

+ 12 - 0
desktop/core/src/desktop/static/desktop/js/ko.hue-bindings.js

@@ -2420,6 +2420,18 @@
             valueObservable($element.val());
           });
         }
+
+        if (allBindingsAccessor()['valueUpdateDelay'] != null) {
+          var _timeout = -1;
+          $element.on("keyup", function (e) {
+            if (!([13, 37, 38, 39, 40].indexOf(e.keyCode) > -1)) {
+              window.clearTimeout(_timeout);
+              _timeout = window.setTimeout(function () {
+                valueObservable($element.val());
+              }, allBindingsAccessor()['valueUpdateDelay']);
+            }
+          });
+        }
       }
 
     },