From 5f9857113ec5a00d31cff8a743a7b94a2ae5f586 Mon Sep 17 00:00:00 2001
From: Phil Hughes <me@iamphill.com>
Date: Wed, 6 Jul 2016 14:48:25 +0100
Subject: [PATCH] Fixed enter submitting form in dropdown

Closes #19549
---
 app/assets/javascripts/gl_dropdown.js.coffee | 55 ++++++++++----------
 app/assets/javascripts/project.js.coffee     |  7 ++-
 2 files changed, 34 insertions(+), 28 deletions(-)

diff --git a/app/assets/javascripts/gl_dropdown.js.coffee b/app/assets/javascripts/gl_dropdown.js.coffee
index 1b0d0db8954..bfed7e438c4 100644
--- a/app/assets/javascripts/gl_dropdown.js.coffee
+++ b/app/assets/javascripts/gl_dropdown.js.coffee
@@ -24,33 +24,34 @@ class GitLabDropdownFilter
 
     # Key events
     timeout = ""
-    @input.on "keyup", (e) =>
-      keyCode = e.which
-
-      return if ARROW_KEY_CODES.indexOf(keyCode) >= 0
-
-      if @input.val() isnt "" and !$inputContainer.hasClass HAS_VALUE_CLASS
-        $inputContainer.addClass HAS_VALUE_CLASS
-      else if @input.val() is "" and $inputContainer.hasClass HAS_VALUE_CLASS
-        $inputContainer.removeClass HAS_VALUE_CLASS
-
-      if keyCode is 13
-        return false
-
-      # Only filter asynchronously only if option remote is set
-      if @options.remote
-        clearTimeout timeout
-        timeout = setTimeout =>
-          blur_field = @shouldBlur keyCode
-
-          if blur_field and @filterInputBlur
-            @input.blur()
-
-          @options.query @input.val(), (data) =>
-            @options.callback(data)
-        , 250
-      else
-        @filter @input.val()
+    @input
+      .on 'keydown', (e) ->
+        keyCode = e.which
+        e.preventDefault() if keyCode is 13
+      .on 'keyup', (e) =>
+        keyCode = e.which
+
+        return if ARROW_KEY_CODES.indexOf(keyCode) >= 0
+
+        if @input.val() isnt '' and !$inputContainer.hasClass HAS_VALUE_CLASS
+          $inputContainer.addClass HAS_VALUE_CLASS
+        else if @input.val() is '' and $inputContainer.hasClass HAS_VALUE_CLASS
+          $inputContainer.removeClass HAS_VALUE_CLASS
+
+        # Only filter asynchronously only if option remote is set
+        if @options.remote
+          clearTimeout timeout
+          timeout = setTimeout =>
+            blur_field = @shouldBlur keyCode
+
+            if blur_field and @filterInputBlur
+              @input.blur()
+
+            @options.query @input.val(), (data) =>
+              @options.callback(data)
+          , 250
+        else
+          @filter @input.val()
 
   shouldBlur: (keyCode) ->
     return BLUR_KEYCODES.indexOf(keyCode) >= 0
diff --git a/app/assets/javascripts/project.js.coffee b/app/assets/javascripts/project.js.coffee
index 3288c801388..80ea179948d 100644
--- a/app/assets/javascripts/project.js.coffee
+++ b/app/assets/javascripts/project.js.coffee
@@ -87,5 +87,10 @@ class @Project
         toggleLabel: (obj, $el) ->
           $el.text().trim()
         clicked: (e) ->
-          $dropdown.closest('form').submit()
+          if $('input[name="ref"]').length
+            $form = $dropdown.closest('form')
+            action = $form.attr('action')
+            divider = if action.indexOf('?') < 0 then '?' else '&'
+
+            Turbolinks.visit "#{action}#{divider}#{$form.serialize()}"
       )
-- 
GitLab