From 7d07603d0e34ae4efc1e868e91ee0b2ef71f45bd Mon Sep 17 00:00:00 2001 From: Denys Mishunov Date: Fri, 26 Jul 2019 18:21:11 +0200 Subject: WIP: applied labels at top of dropdown --- app/assets/javascripts/gl_dropdown.js | 15 +++++++++++++++ app/helpers/labels_helper.rb | 3 ++- app/views/search/_filter.html.haml | 4 ++-- app/views/shared/issuable/_sidebar.html.haml | 2 +- 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') -- cgit v1.2.3