]> source.dussan.org Git - redmine.git/commitdiff
Jump to project autocomplete: focus selected project (#26395).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 22 Jul 2017 06:41:48 +0000 (06:41 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 22 Jul 2017 06:41:48 +0000 (06:41 +0000)
Patch by Gabriel Cardoso.

git-svn-id: http://svn.redmine.org/redmine/trunk@16842 e93f8b46-1217-0410-a6f0-8f06a7374b81

public/javascripts/application.js

index ac8c388629af847075fe19d3b8b4213b4976274a..b6352fd2aa07bb9b68b48209373bcae4dd9681e1 100644 (file)
@@ -120,7 +120,7 @@ function initFilters() {
 function addFilter(field, operator, values) {
   var fieldId = field.replace('.', '_');
   var tr = $('#tr_'+fieldId);
-  
+
   var filterOptions = availableFilters[field];
   if (!filterOptions) return;
 
@@ -587,6 +587,8 @@ function observeSearchfield(fieldId, targetId, url) {
 $(document).ready(function(){
   $(".drdn .autocomplete").val('');
 
+  // This variable is used to focus selected project
+  var selected;
   $(".drdn-trigger").click(function(e){
     var drdn = $(this).closest(".drdn");
     if (drdn.hasClass("expanded")) {
@@ -594,6 +596,8 @@ $(document).ready(function(){
     } else {
       $(".drdn").removeClass("expanded");
       drdn.addClass("expanded");
+      selected = $('.drdn-items a.selected'); // Store selected project
+      selected.focus(); // Calling focus to scroll to selected project
       if (!isMobile()) {
         drdn.find(".autocomplete").focus();
       }
@@ -603,14 +607,22 @@ $(document).ready(function(){
   $(document).click(function(e){
     if ($(e.target).closest(".drdn").length < 1) {
       $(".drdn.expanded").removeClass("expanded");
-    } 
+    }
   });
 
   observeSearchfield('projects-quick-search', null, $('#projects-quick-search').data('automcomplete-url'));
 
   $(".drdn-content").keydown(function(event){
     var items = $(this).find(".drdn-items");
-    var focused = items.find("a:focus");
+
+    // If a project is selected set focused to selected only once
+    if (selected && selected.length > 0) {
+      var focused = selected;
+      selected = undefined;
+    }
+    else {
+      var focused = items.find("a:focus");
+    }
     switch (event.which) {
     case 40: //down
       if (focused.length > 0) {