Commit f8e5b6c2 authored by Jose Ivan Vargas's avatar Jose Ivan Vargas

Merge branch '240989-fix-group-level-milestones-fetch' into 'master'

Fix missing groupId for Milestone dropdown in Group contexts

Closes #240989

See merge request gitlab-org/gitlab!40432
parents 984c628e 47d6384f
...@@ -72,8 +72,8 @@ export default class MilestoneSelect { ...@@ -72,8 +72,8 @@ export default class MilestoneSelect {
return initDeprecatedJQueryDropdown($dropdown, { return initDeprecatedJQueryDropdown($dropdown, {
showMenuAbove, showMenuAbove,
data: (term, callback) => { data: (term, callback) => {
let contextId = $dropdown.get(0).dataset.projectId; let contextId = parseInt($dropdown.get(0).dataset.projectId, 10);
let getMilestones = Api.projectMilestones; let getMilestones = Api.projectMilestones.bind(Api);
const reqParams = { state: 'active', include_parent_milestones: true }; const reqParams = { state: 'active', include_parent_milestones: true };
if (term) { if (term) {
...@@ -83,7 +83,7 @@ export default class MilestoneSelect { ...@@ -83,7 +83,7 @@ export default class MilestoneSelect {
if (!contextId) { if (!contextId) {
contextId = $dropdown.get(0).dataset.groupId; contextId = $dropdown.get(0).dataset.groupId;
delete reqParams.include_parent_milestones; delete reqParams.include_parent_milestones;
getMilestones = Api.groupMilestones; getMilestones = Api.groupMilestones.bind(Api);
} }
// We don't use $.data() as it caches initial value and never updates! // We don't use $.data() as it caches initial value and never updates!
......
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
name: "issue[milestone_id]", name: "issue[milestone_id]",
"v-if" => "issue.milestone" } "v-if" => "issue.milestone" }
.dropdown .dropdown
%button.dropdown-menu-toggle.js-milestone-select.js-issue-board-sidebar{ type: "button", data: { toggle: "dropdown", show_no: "true", field_name: "issue[milestone_id]", milestones: milestones_filter_path(format: :json), ability_name: "issue", use_id: "true", default_no: "true" }, %button.dropdown-menu-toggle.js-milestone-select.js-issue-board-sidebar{ type: "button", data: { toggle: "dropdown", show_no: "true", field_name: "issue[milestone_id]", ability_name: "issue", use_id: "true", default_no: "true" },
":data-selected" => "milestoneTitle", ":data-selected" => "milestoneTitle",
":data-issuable-id" => "issue.iid", ":data-issuable-id" => "issue.iid",
":data-project-id" => "issue.project_id" } ":data-project-id" => "issue.project_id" }
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
.title .title
= _('Milestone') = _('Milestone')
.filter-item .filter-item
= dropdown_tag(_("Select milestone"), options: { title: _("Assign milestone"), toggle_class: "js-milestone-select js-extra-options js-filter-submit js-filter-bulk-update", filter: true, dropdown_class: "dropdown-menu-selectable dropdown-menu-milestone", placeholder: _("Search milestones"), data: { show_no: true, field_name: "update[milestone_id]", project_id: @project.id, milestones: project_milestones_path(@project, :json), use_id: true, default_label: _("Milestone") } }) = dropdown_tag(_("Select milestone"), options: { title: _("Assign milestone"), toggle_class: "js-milestone-select js-extra-options js-filter-submit js-filter-bulk-update", filter: true, dropdown_class: "dropdown-menu-selectable dropdown-menu-milestone", placeholder: _("Search milestones"), data: { show_no: true, field_name: "update[milestone_id]", project_id: @project.id, use_id: true, default_label: _("Milestone") } })
.block .block
.title .title
= _('Labels') = _('Labels')
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
- if selected.present? || params[:milestone_title].present? - if selected.present? || params[:milestone_title].present?
= hidden_field_tag(name, name == :milestone_title ? selected_text : selected.id) = hidden_field_tag(name, name == :milestone_title ? selected_text : selected.id)
= dropdown_tag(milestone_dropdown_label(selected_text), options: { title: dropdown_title, toggle_class: "qa-issuable-milestone-dropdown js-milestone-select js-filter-submit #{extra_class}", filter: true, dropdown_class: "qa-issuable-dropdown-menu-milestone dropdown-menu-selectable dropdown-menu-milestone", = dropdown_tag(milestone_dropdown_label(selected_text), options: { title: dropdown_title, toggle_class: "qa-issuable-milestone-dropdown js-milestone-select js-filter-submit #{extra_class}", filter: true, dropdown_class: "qa-issuable-dropdown-menu-milestone dropdown-menu-selectable dropdown-menu-milestone",
placeholder: "Search milestones", footer_content: project.present?, data: { show_no: true, show_menu_above: show_menu_above, show_any: show_any, show_upcoming: show_upcoming, show_started: show_started, field_name: name, selected: selected_text, project_id: project.try(:id), milestones: milestones_filter_dropdown_path, default_label: "Milestone" } }) do placeholder: "Search milestones", footer_content: project.present?, data: { show_no: true, show_menu_above: show_menu_above, show_any: show_any, show_upcoming: show_upcoming, show_started: show_started, field_name: name, selected: selected_text, project_id: project.try(:id), default_label: "Milestone" } }) do
- if project - if project
%ul.dropdown-footer-list %ul.dropdown-footer-list
- if can? current_user, :admin_milestone, project - if can? current_user, :admin_milestone, project
......
...@@ -53,7 +53,7 @@ ...@@ -53,7 +53,7 @@
.selectbox.hide-collapsed .selectbox.hide-collapsed
= f.hidden_field 'milestone_id', value: milestone[:id], id: nil = f.hidden_field 'milestone_id', value: milestone[:id], id: nil
= dropdown_tag('Milestone', options: { title: _('Assign milestone'), toggle_class: 'js-milestone-select js-extra-options', filter: true, dropdown_class: 'dropdown-menu-selectable', placeholder: _('Search milestones'), data: { show_no: true, field_name: "#{issuable_type}[milestone_id]", project_id: issuable_sidebar[:project_id], issuable_id: issuable_sidebar[:id], milestones: issuable_sidebar[:project_milestones_path], ability_name: issuable_type, issue_update: issuable_sidebar[:issuable_json_path], use_id: true, default_no: true, selected: milestone[:title], null_default: true, display: 'static' }}) = dropdown_tag('Milestone', options: { title: _('Assign milestone'), toggle_class: 'js-milestone-select js-extra-options', filter: true, dropdown_class: 'dropdown-menu-selectable', placeholder: _('Search milestones'), data: { show_no: true, field_name: "#{issuable_type}[milestone_id]", project_id: issuable_sidebar[:project_id], issuable_id: issuable_sidebar[:id], ability_name: issuable_type, issue_update: issuable_sidebar[:issuable_json_path], use_id: true, default_no: true, selected: milestone[:title], null_default: true, display: 'static' }})
- if @project.group.present? - if @project.group.present?
= render_if_exists 'shared/issuable/iteration_select', { can_edit: can_edit_issuable, group_path: @project.group.full_path, project_path: issuable_sidebar[:project_full_path], issue_iid: issuable_sidebar[:iid], issuable_type: issuable_type } = render_if_exists 'shared/issuable/iteration_select', { can_edit: can_edit_issuable, group_path: @project.group.full_path, project_path: issuable_sidebar[:project_full_path], issue_iid: issuable_sidebar[:iid], issuable_type: issuable_type }
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
.title .title
= _('Milestone') = _('Milestone')
.filter-item .filter-item
= dropdown_tag(_('Select milestone'), options: { title: _('Assign milestone'), toggle_class: 'js-milestone-select js-extra-options js-filter-submit js-filter-bulk-update', filter: true, dropdown_class: 'dropdown-menu-selectable dropdown-menu-milestone', placeholder: _('Search milestones'), data: { show_no: true, field_name: 'update[milestone_id]', milestones: milestones_filter_path(only_group_milestones: true, format: :json), use_id: true, default_label: _('Milestone') } }) = dropdown_tag(_('Select milestone'), options: { title: _('Assign milestone'), toggle_class: 'js-milestone-select js-extra-options js-filter-submit js-filter-bulk-update', filter: true, dropdown_class: 'dropdown-menu-selectable dropdown-menu-milestone', placeholder: _('Search milestones'), data: { show_no: true, field_name: 'update[milestone_id]', group_id: group&.id, use_id: true, default_label: _('Milestone') } })
.block .block
.title .title
= _('Labels') = _('Labels')
......
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'Group issues page' do
let(:group) { create(:group) }
let(:project) { create(:project, :public, group: group)}
context 'bulk editing', :js do
let(:user_in_group) { create(:group_member, :maintainer, user: create(:user), group: group ).user }
let!(:milestone) { create(:milestone, group: group) }
let!(:issue) { create(:issue, project: project) }
before do
sign_in(user_in_group)
visit issues_group_path(group)
end
it 'shows sidebar when clicked on "Edit issues"' do
find('.js-bulk-update-toggle').click
page.within('.js-right-sidebar') do
expect(page).to have_selector('.issuable-sidebar', visible: true)
end
end
it 'shows group milestones within "Milestone" dropdown' do
find('.js-bulk-update-toggle').click
page.within('.js-right-sidebar') do
find('button.js-milestone-select').click
wait_for_requests
page.within('.dropdown-menu-milestone .dropdown-content') do
expect(page).to have_content(milestone.title)
end
end
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment