From 906b3b4b938b38813c44bad2d64eca05a03ff7f0 Mon Sep 17 00:00:00 2001 From: "Luke \"Jared\" Bennett" Date: Mon, 6 Nov 2017 12:03:32 +0000 Subject: Run filter method for filterable gl_dropdown instances --- app/assets/javascripts/gl_dropdown.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/assets/javascripts/gl_dropdown.js b/app/assets/javascripts/gl_dropdown.js index c4202f92443..bcfc9918315 100644 --- a/app/assets/javascripts/gl_dropdown.js +++ b/app/assets/javascripts/gl_dropdown.js @@ -543,6 +543,8 @@ GitLabDropdown = (function() { this.options.opened.call(this, e); } + if (this.options.filterable) this.filter.filter(); + return this.dropdown.trigger('shown.gl.dropdown'); }; -- cgit v1.2.1 From 8dc55ff35e4bfc46c9a5a9dd751648eb7ed73daf Mon Sep 17 00:00:00 2001 From: "Luke \"Jared\" Bennett" Date: Mon, 6 Nov 2017 13:12:06 +0000 Subject: add feature spec to assert no linked filter inputs --- spec/features/merge_requests/create_new_mr_spec.rb | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/spec/features/merge_requests/create_new_mr_spec.rb b/spec/features/merge_requests/create_new_mr_spec.rb index 5402d61da54..db5ce2d11a8 100644 --- a/spec/features/merge_requests/create_new_mr_spec.rb +++ b/spec/features/merge_requests/create_new_mr_spec.rb @@ -67,6 +67,28 @@ feature 'Create New Merge Request', :js do expect(page).to have_content 'git checkout -b orphaned-branch origin/orphaned-branch' end + it 'allows filtering multiple dropdowns' do + visit project_new_merge_request_path(project) + + first('.js-source-branch').click + + input = find('.dropdown-source-branch .dropdown-input-field') + input.click + input.send_keys('orphaned-branch') + + find('.dropdown-source-branch .dropdown-content li', match: :first) + source_items = all('.dropdown-source-branch .dropdown-content li') + + expect(source_items.count).to eq(1) + + first('.js-target-branch').click + + find('.dropdown-target-branch .dropdown-content li', match: :first) + target_items = all('.dropdown-target-branch .dropdown-content li') + + expect(target_items.count).to be > 1 + end + context 'when target project cannot be viewed by the current user' do it 'does not leak the private project name & namespace' do private_project = create(:project, :private, :repository) -- cgit v1.2.1 From fdf635c03c2621fe36eba5691c1ab8b1a51f1081 Mon Sep 17 00:00:00 2001 From: "Luke \"Jared\" Bennett" Date: Tue, 7 Nov 2017 14:16:49 +0000 Subject: Change fix, instead of hacking in a filter clear every time, fix the root cause by only selecting elements for that dropdown instance --- app/assets/javascripts/gl_dropdown.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/assets/javascripts/gl_dropdown.js b/app/assets/javascripts/gl_dropdown.js index bcfc9918315..4e7a6e54f90 100644 --- a/app/assets/javascripts/gl_dropdown.js +++ b/app/assets/javascripts/gl_dropdown.js @@ -331,7 +331,7 @@ GitLabDropdown = (function() { if (_this.dropdown.find('.dropdown-toggle-page').length) { selector = ".dropdown-page-one " + selector; } - return $(selector); + return $(selector, this.instance.dropdown); }; })(this), data: (function(_this) { @@ -543,8 +543,6 @@ GitLabDropdown = (function() { this.options.opened.call(this, e); } - if (this.options.filterable) this.filter.filter(); - return this.dropdown.trigger('shown.gl.dropdown'); }; -- cgit v1.2.1