summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Schatz <jschatz@gitlab.com>2016-08-23 13:27:24 +0000
committerJacob Schatz <jschatz@gitlab.com>2016-08-23 13:27:24 +0000
commit9b079219730516ae971a4cdc0d68f75b99ff4de1 (patch)
tree443c76032247c3bdc92ff1335b57d503a705f175
parentf633f7db66d4ff42abbe764c21f9da4e49045f91 (diff)
parent86f03e175042afe551cf95c195c043fa92b58ea7 (diff)
downloadgitlab-ce-9b079219730516ae971a4cdc0d68f75b99ff4de1.tar.gz
Merge branch 'gl-dropdown-enter' into 'master'
Fixed enter key in search input not working ## What does this MR do? Fixes a bug where the enter key wouldn't search in the top nav search input Closes #20627 See merge request !5888
-rw-r--r--app/assets/javascripts/gl_dropdown.js31
-rw-r--r--spec/features/search_spec.rb10
2 files changed, 32 insertions, 9 deletions
diff --git a/app/assets/javascripts/gl_dropdown.js b/app/assets/javascripts/gl_dropdown.js
index 24abea0d30d..0179b320a3b 100644
--- a/app/assets/javascripts/gl_dropdown.js
+++ b/app/assets/javascripts/gl_dropdown.js
@@ -31,8 +31,8 @@
this.input
.on('keydown', function (e) {
var keyCode = e.which;
- if (keyCode === 13) {
- e.preventDefault();
+ if (keyCode === 13 && !options.elIsInput) {
+ e.preventDefault()
}
})
.on('keyup', function(e) {
@@ -46,7 +46,7 @@
} else if (this.input.val() === "" && $inputContainer.hasClass(HAS_VALUE_CLASS)) {
$inputContainer.removeClass(HAS_VALUE_CLASS);
}
- if (keyCode === 13) {
+ if (keyCode === 13 && !options.elIsInput) {
return false;
}
if (this.options.remote) {
@@ -238,6 +238,7 @@
}
if (this.options.filterable) {
this.filter = new GitLabDropdownFilter(this.filterInput, {
+ elIsInput: $(this.el).is('input'),
filterInputBlur: this.filterInputBlur,
filterByText: this.options.filterByText,
onFilter: this.options.onFilter,
@@ -266,8 +267,12 @@
if (_this.dropdown.find('.dropdown-toggle-page').length) {
selector = ".dropdown-page-one " + selector;
}
- $(selector, _this.dropdown).first().find('a').addClass('is-focused');
- return currentIndex = 0;
+ if ($(_this.el).is('input')) {
+ currentIndex = -1;
+ } else {
+ $(selector, _this.dropdown).first().find('a').addClass('is-focused');
+ currentIndex = 0;
+ }
}
};
})(this)
@@ -613,15 +618,23 @@
GitLabDropdown.prototype.selectRowAtIndex = function(index) {
var $el, selector;
- selector = SELECTABLE_CLASSES + ":eq(" + index + ") a";
+ // If we pass an option index
+ if (typeof index !== "undefined") {
+ selector = SELECTABLE_CLASSES + ":eq(" + index + ") a";
+ } else {
+ selector = ".dropdown-content .is-focused";
+ }
if (this.dropdown.find(".dropdown-toggle-page").length) {
selector = ".dropdown-page-one " + selector;
}
$el = $(selector, this.dropdown);
if ($el.length) {
- $el.first().trigger('click');
var href = $el.attr('href');
- if (href && href !== '#') Turbolinks.visit(href);
+ if (href && href !== '#') {
+ Turbolinks.visit(href);
+ } else {
+ $el.first().trigger('click');
+ }
}
};
@@ -657,7 +670,7 @@
return false;
}
if (currentKeyCode === 13 && currentIndex !== -1) {
- return _this.selectRowAtIndex(currentIndex);
+ _this.selectRowAtIndex();
}
};
})(this));
diff --git a/spec/features/search_spec.rb b/spec/features/search_spec.rb
index b7a25d80fec..dcd3a2f17b0 100644
--- a/spec/features/search_spec.rb
+++ b/spec/features/search_spec.rb
@@ -71,6 +71,16 @@ describe "Search", feature: true do
end
describe 'Right header search field', feature: true do
+ it 'allows enter key to search', js: true do
+ visit namespace_project_path(project.namespace, project)
+ fill_in 'search', with: 'gitlab'
+ find('#search').native.send_keys(:enter)
+
+ page.within '.title' do
+ expect(page).to have_content 'Search'
+ end
+ end
+
describe 'Search in project page' do
before do
visit namespace_project_path(project.namespace, project)