diff --git a/app/assets/javascripts/labels_select.js.coffee b/app/assets/javascripts/labels_select.js.coffee index d37d17e086daca20f86121e95553dcb9a4e00d08..2a497c2e804a39d8b322db6e91207d5835d284d9 100644 --- a/app/assets/javascripts/labels_select.js.coffee +++ b/app/assets/javascripts/labels_select.js.coffee @@ -306,7 +306,7 @@ class @LabelsSelect $labelInputs = $dropdownParent.find "input[name='#{@fieldName}']" # Find the label by its attribute according the dropdown settings - if $dropdown.hasClass 'js-issuable-form-dropdown' + if $dropdown.hasClass('js-issuable-form-dropdown') or $dropdown.hasClass('js-filter-bulk-update') # When settings labels to a issuable we find the label for its ID whereQuery = { id: parseInt $labelInputs.first().val() } else diff --git a/app/helpers/issuables_helper.rb b/app/helpers/issuables_helper.rb index 114cf804d6fe0512e1f71dedfa06c6aa894b26eb..305ec71bd6cff15bdab0f432b72be4263f6ee595 100644 --- a/app/helpers/issuables_helper.rb +++ b/app/helpers/issuables_helper.rb @@ -7,7 +7,7 @@ module IssuablesHelper "right-sidebar-#{sidebar_gutter_collapsed? ? 'collapsed' : 'expanded'}" end - def multi_label_name(current_labels, default_label) + def multi_label_name(current_labels, param, default_label) # current_labels may be a string from before if current_labels.is_a?(Array) && current_labels.any? title = current_labels[0].try(:title) || current_labels[0] @@ -23,7 +23,11 @@ module IssuablesHelper current_labels end else - default_label + if !param.empty? + param + else + default_label + end end end @@ -73,6 +77,10 @@ module IssuablesHelper end end + def selected_labels(project, labelQuery) + Label.where(labelQuery.merge(project_id: project)) + end + private def sidebar_gutter_collapsed? diff --git a/app/views/shared/issuable/_label_dropdown.html.haml b/app/views/shared/issuable/_label_dropdown.html.haml index 113447d48b773414e6e7592dc754c2b7b01573ba..dc8f09b09c8316e208ff2246029f61cda7e9c7b0 100644 --- a/app/views/shared/issuable/_label_dropdown.html.haml +++ b/app/views/shared/issuable/_label_dropdown.html.haml @@ -1,4 +1,4 @@ -- project = @target_project || @project +- project = @target_project || @project || @projects - show_create = local_assigns.fetch(:show_create, true) - extra_options = local_assigns.fetch(:extra_options, true) - filter_submit = local_assigns.fetch(:filter_submit, true) @@ -18,15 +18,15 @@ - if selected_toggle.present? - labelQuery = { title: selected_toggle } - if labelQuery - - selected = project.labels.where(labelQuery) + - selected = selected_labels(project, labelQuery) - selected.each do |label| - id = label.try(:id) || label - title = label.try(:title) || label = hidden_field_tag data_options[:field_name], useId ? id : title, id: nil, data: { title: title } .dropdown %button.dropdown-menu-toggle.js-label-select.js-multiselect{class: classes.join(' '), type: "button", data: dropdown_data} - %span.dropdown-toggle-text{ class: ("is-default" if selected.nil?) } - = h(multi_label_name(selected.to_a, "Label")) + %span.dropdown-toggle-text{ class: ("is-default" if selected.nil? || selected.to_a.size == 0) } + = h(multi_label_name(selected.to_a, h(selected_toggle.to_a[0]), "Label")) = icon('chevron-down') .dropdown-menu.dropdown-select.dropdown-menu-paging.dropdown-menu-labels.dropdown-menu-selectable = render partial: "shared/issuable/label_page_default", locals: { title: "Filter by label", show_footer: show_footer, show_create: show_create }