summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Mishunov <dmishunov@gitlab.com>2019-07-26 18:21:11 +0200
committerDenys Mishunov <dmishunov@gitlab.com>2019-07-29 09:16:05 +0200
commit7d07603d0e34ae4efc1e868e91ee0b2ef71f45bd (patch)
tree88ebe91298d1dfe60e5cae092e44698ccbb99135
parent995d8e6c5e52afc294573e016f86f2a429b85d8e (diff)
downloadgitlab-ce-28804-applied-label-at-the-top.tar.gz
WIP: applied labels at top of dropdown28804-applied-label-at-the-top
-rw-r--r--app/assets/javascripts/gl_dropdown.js15
-rw-r--r--app/helpers/labels_helper.rb3
-rw-r--r--app/views/search/_filter.html.haml4
-rw-r--r--app/views/shared/issuable/_sidebar.html.haml2
4 files changed, 20 insertions, 4 deletions
diff --git a/app/assets/javascripts/gl_dropdown.js b/app/assets/javascripts/gl_dropdown.js
index bdb50606a53..61c4446f09c 100644
--- a/app/assets/javascripts/gl_dropdown.js
+++ b/app/assets/javascripts/gl_dropdown.js
@@ -545,6 +545,21 @@ GitLabDropdown = (function() {
if (group == null) {
group = false;
}
+ if (this.el.dataset.selected) {
+ const selectedAll = this.el.dataset.selected.split(',');
+ let i = 0;
+ data.forEach((entry, index) => {
+ if (
+ selectedAll.indexOf(entry.title) !== -1 ||
+ selectedAll.indexOf(entry.name_with_namespace) !== -1
+ ) {
+ data.splice(i, 0, entry);
+ data.splice(index + 1, 1);
+ i += 1;
+ }
+ });
+ data.splice(i, 0, 'divider');
+ }
return data.map(
(function(_this) {
return function(obj, index) {
diff --git a/app/helpers/labels_helper.rb b/app/helpers/labels_helper.rb
index 2ed016beea4..b5c02f0ea49 100644
--- a/app/helpers/labels_helper.rb
+++ b/app/helpers/labels_helper.rb
@@ -225,7 +225,7 @@ module LabelsHelper
}.merge(opts)
end
- def sidebar_label_dropdown_data(issuable_type, issuable_sidebar)
+ def sidebar_label_dropdown_data(issuable_type, issuable_sidebar, selected_labels = nil)
label_dropdown_data(nil, {
default_label: "Labels",
field_name: "#{issuable_type}[label_names][]",
@@ -234,6 +234,7 @@ module LabelsHelper
project_path: issuable_sidebar[:project_path],
issue_update: issuable_sidebar[:issuable_json_path],
labels: issuable_sidebar[:project_labels_path],
+ selected: selected_labels ? selected_labels.map { |label| label.fetch(:title) }.join(",") : nil,
display: 'static'
})
end
diff --git a/app/views/search/_filter.html.haml b/app/views/search/_filter.html.haml
index c8b6a3258ab..733c5e77375 100644
--- a/app/views/search/_filter.html.haml
+++ b/app/views/search/_filter.html.haml
@@ -3,7 +3,7 @@
- if params[:project_id].present?
= hidden_field_tag :project_id, params[:project_id]
.dropdown
- %button.dropdown-menu-toggle.js-search-group-dropdown{ type: "button", data: { toggle: "dropdown", default_label: _('Group:'), group_id: params[:group_id] } }
+ %button.dropdown-menu-toggle.js-search-group-dropdown{ type: "button", data: { toggle: "dropdown", default_label: _('Group:'), group_id: params[:group_id], selected: (@group ? @group.name : nil) } }
%span.dropdown-toggle-text
= _("Group:")
- if @group.present?
@@ -18,7 +18,7 @@
= dropdown_loading
.dropdown.project-filter
- %button.dropdown-menu-toggle.js-search-project-dropdown{ type: "button", data: { toggle: "dropdown", default_label: _('Project:') } }
+ %button.dropdown-menu-toggle.js-search-project-dropdown{ type: "button", data: { toggle: "dropdown", default_label: _('Project:'), selected: (@project ? @project.full_name : nil) } }
%span.dropdown-toggle-text
= _("Project:")
- if @project.present?
diff --git a/app/views/shared/issuable/_sidebar.html.haml b/app/views/shared/issuable/_sidebar.html.haml
index b4f8377c008..01410ecfb7f 100644
--- a/app/views/shared/issuable/_sidebar.html.haml
+++ b/app/views/shared/issuable/_sidebar.html.haml
@@ -114,7 +114,7 @@
- selected_labels.each do |label|
= hidden_field_tag "#{issuable_type}[label_names][]", label[:id], id: nil
.dropdown
- %button.dropdown-menu-toggle.js-label-select.js-multiselect.js-label-sidebar-dropdown{ type: "button", data: sidebar_label_dropdown_data(issuable_type, issuable_sidebar) }
+ %button.dropdown-menu-toggle.js-label-select.js-multiselect.js-label-sidebar-dropdown{ type: "button", data: sidebar_label_dropdown_data(issuable_type, issuable_sidebar, selected_labels) }
%span.dropdown-toggle-text{ class: ("is-default" if selected_labels.empty?) }
= multi_label_name(selected_labels, "Labels")
= icon('chevron-down', 'aria-hidden': 'true')