Skip to content
Snippets Groups Projects
Unverified Commit 4b81b6a1 authored by Phil Hughes's avatar Phil Hughes
Browse files

Improved performance of merge requests target branch dropdown

parent b94b8aae
No related branches found
No related tags found
No related merge requests found
Loading
Loading
@@ -30,7 +30,6 @@ import MiniPipelineGraph from './mini_pipeline_graph_dropdown';
import UserCallout from './user_callout';
import ShortcutsWiki from './shortcuts_wiki';
import BlobViewer from './blob/viewer/index';
import AutoWidthDropdownSelect from './issuable/auto_width_dropdown_select';
import UsersSelect from './users_select';
import GfmAutoComplete from './gfm_auto_complete';
import Star from './star';
Loading
Loading
@@ -253,7 +252,6 @@ import { fetchCommitMergeRequests } from './commit_merge_requests';
new LabelsSelect();
new MilestoneSelect();
new IssuableTemplateSelectors();
new AutoWidthDropdownSelect($('.js-target-branch-select')).init();
break;
case 'projects:tags:new':
import('./pages/projects/tags/new')
Loading
Loading
Loading
Loading
@@ -46,6 +46,12 @@ export default class IssuableForm {
});
calendar.setDate(parsePikadayDate($issuableDueDate.val()));
}
this.$targetBranchSelect = $('.js-target-branch-select', this.form);
if (this.$targetBranchSelect.length) {
this.initTargetBranchDropdown();
}
}
 
initAutosave() {
Loading
Loading
@@ -104,4 +110,52 @@ export default class IssuableForm {
addWip() {
this.titleField.val(`WIP: ${(this.titleField.val())}`);
}
initTargetBranchDropdown() {
this.$targetBranchSelect.select2({
ajax: {
url: this.$targetBranchSelect.data('endpoint'),
dataType: 'JSON',
quietMillis: 250,
data(search) {
return {
search,
};
},
results(data) {
return {
results: data[Object.keys(data)[0]].map(name => ({
id: name,
text: name,
})),
};
}
},
initSelection(el, callback) {
const val = el.val();
callback({
id: val,
text: val,
});
},
dropdownCss: () => {
let resultantWidth = 'auto';
// We have to look at the parent because
// `offsetParent` on a `display: none;` is `null`
const offsetParentWidth = this.$targetBranchSelect.parent().offsetParent().width();
// Reset any width to let it naturally flow
this.$targetBranchSelect.css('width', 'auto');
if (this.$targetBranchSelect.outerWidth(false) > offsetParentWidth) {
resultantWidth = offsetParentWidth;
}
return {
width: resultantWidth,
maxWidth: offsetParentWidth,
};
},
});
}
}
Loading
Loading
@@ -15,11 +15,10 @@
= form.label :target_branch, class: 'control-label'
.col-sm-10.target-branch-select-dropdown-container
.issuable-form-select-holder
= form.select(:target_branch, issuable.target_branches,
{ include_blank: true },
= form.hidden_field(:target_branch,
{ class: 'target_branch js-target-branch-select ref-name',
disabled: issuable.new_record?,
data: { placeholder: "Select branch" }})
data: { placeholder: "Select branch", endpoint: refs_project_path(@project, sort: 'updated_desc') }})
- if issuable.new_record?
 
= link_to 'Change branches', mr_change_branches_path(issuable)
---
title: Improve performance of target branch dropdown
merge_request:
author:
type: performance
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment