summaryrefslogtreecommitdiff
path: root/app/views/projects/merge_requests
diff options
context:
space:
mode:
Diffstat (limited to 'app/views/projects/merge_requests')
-rw-r--r--app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml42
-rw-r--r--app/views/projects/merge_requests/_code_dropdown.html.haml34
-rw-r--r--app/views/projects/merge_requests/_page.html.haml114
-rw-r--r--app/views/projects/merge_requests/creations/_new_compare.html.haml27
-rw-r--r--app/views/projects/merge_requests/diffs.html.haml1
-rw-r--r--app/views/projects/merge_requests/index.html.haml1
-rw-r--r--app/views/projects/merge_requests/show.html.haml114
7 files changed, 170 insertions, 163 deletions
diff --git a/app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml b/app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml
index 78fce3f7087..fb950611f81 100644
--- a/app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml
+++ b/app/views/projects/merge_requests/_close_reopen_draft_report_toggle.html.haml
@@ -1,53 +1,53 @@
- display_issuable_type = issuable_display_type(@merge_request)
-.btn-group.gl-md-ml-3.gl-display-flex.dropdown.gl-new-dropdown.gl-md-w-auto.gl-w-full
+.btn-group.gl-md-ml-3.gl-display-flex.dropdown.gl-dropdown.gl-md-w-auto.gl-w-full
= button_tag type: 'button', class: "btn dropdown-toggle btn-default btn-md gl-button gl-dropdown-toggle btn-default-tertiary dropdown-icon-only dropdown-toggle-no-caret has-tooltip gl-display-none! gl-md-display-inline-flex!", data: { toggle: 'dropdown', title: _('Merge request actions'), testid: 'merge-request-actions', 'aria-label': _('Merge request actions') } do
= sprite_icon "ellipsis_v", size: 16, css_class: "dropdown-icon gl-icon"
= button_tag type: 'button', class: "btn dropdown-toggle btn-default btn-md btn-block gl-button gl-dropdown-toggle gl-md-display-none!", data: { 'toggle' => 'dropdown' } do
- %span.gl-new-dropdown-button-text= _('Merge request actions')
+ %span.gl-dropdown-button-text= _('Merge request actions')
= sprite_icon "chevron-down", size: 16, css_class: "dropdown-icon gl-icon"
.dropdown-menu.dropdown-menu-right
- .gl-new-dropdown-inner
- .gl-new-dropdown-contents
+ .gl-dropdown-inner
+ .gl-dropdown-contents
%ul
- if current_user && moved_mr_sidebar_enabled?
- %li.gl-new-dropdown-item.js-sidebar-subscriptions-widget-root
- %li.gl-new-dropdown-divider
+ %li.gl-dropdown-item.js-sidebar-subscriptions-widget-root
+ %li.gl-dropdown-divider
%hr.dropdown-divider
- if can?(current_user, :update_merge_request, @merge_request)
- %li.gl-new-dropdown-item{ class: "gl-md-display-none!" }
+ %li.gl-dropdown-item{ class: "gl-md-display-none!" }
= link_to edit_project_merge_request_path(@project, @merge_request), class: 'dropdown-item' do
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= _('Edit')
- if @merge_request.open?
- %li.gl-new-dropdown-item
+ %li.gl-dropdown-item
= link_to toggle_draft_merge_request_path(@merge_request), method: :put, class: 'dropdown-item js-draft-toggle-button' do
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= @merge_request.draft? ? _('Mark as ready') : _('Mark as draft')
- %li.gl-new-dropdown-item.js-close-item
+ %li.gl-dropdown-item.js-close-item
= link_to close_issuable_path(@merge_request), method: :put, class: 'dropdown-item' do
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= _('Close')
= display_issuable_type
- elsif !@merge_request.source_project_missing? && @merge_request.closed?
- %li.gl-new-dropdown-item
+ %li.gl-dropdown-item
= link_to reopen_issuable_path(@merge_request), method: :put, class: 'dropdown-item' do
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= _('Reopen')
= display_issuable_type
- if moved_mr_sidebar_enabled?
- %li.gl-new-dropdown-item.js-sidebar-lock-root
- %li.gl-new-dropdown-item
+ %li.gl-dropdown-item.js-sidebar-lock-root
+ %li.gl-dropdown-item
%button.dropdown-item.js-copy-reference{ type: "button", data: { 'clipboard-text': @merge_request.to_reference(full: true) } }
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= _('Copy reference')
- unless current_controller?('conflicts')
- unless issuable_author_is_current_user(@merge_request)
- if moved_mr_sidebar_enabled?
- %li.gl-new-dropdown-divider
+ %li.gl-dropdown-divider
%hr.dropdown-divider
- %li.gl-new-dropdown-item
+ %li.gl-dropdown-item
= link_to new_abuse_report_path(user_id: @merge_request.author.id, ref_url: merge_request_url(@merge_request)), class: 'dropdown-item' do
- .gl-new-dropdown-item-text-wrapper
- = _('Report abuse')
+ .gl-dropdown-item-text-wrapper
+ = _('Report abuse to administrator')
diff --git a/app/views/projects/merge_requests/_code_dropdown.html.haml b/app/views/projects/merge_requests/_code_dropdown.html.haml
index 5c7fe56095c..2ef89a7bf04 100644
--- a/app/views/projects/merge_requests/_code_dropdown.html.haml
+++ b/app/views/projects/merge_requests/_code_dropdown.html.haml
@@ -1,39 +1,39 @@
-.gl-md-ml-3.dropdown.gl-new-dropdown{ class: "gl-display-none! gl-md-display-flex!" }
+.gl-md-ml-3.dropdown.gl-dropdown{ class: "gl-display-none! gl-md-display-flex!" }
#js-check-out-modal{ data: how_merge_modal_data(@merge_request) }
= button_tag type: 'button', class: "btn dropdown-toggle btn-confirm gl-button gl-dropdown-toggle", data: { toggle: 'dropdown', qa_selector: 'mr_code_dropdown' } do
- %span.gl-new-dropdown-button-text= _('Code')
+ %span.gl-dropdown-button-text= _('Code')
= sprite_icon "chevron-down", size: 16, css_class: "dropdown-icon gl-icon gl-ml-2 gl-mr-0!"
.dropdown-menu.dropdown-menu-right
- .gl-new-dropdown-inner
- .gl-new-dropdown-contents
+ .gl-dropdown-inner
+ .gl-dropdown-contents
%ul
- %li.gl-new-dropdown-section-header
+ %li.gl-dropdown-section-header
%header.dropdown-header
= _('Review changes')
- %li.gl-new-dropdown-item
+ %li.gl-dropdown-item
%button.dropdown-item.js-check-out-modal-trigger{ type: 'button' }
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= _('Check out branch')
- if current_user
- %li.gl-new-dropdown-item
+ %li.gl-dropdown-item
= link_to ide_merge_request_path(@merge_request), class: 'dropdown-item', target: '_blank', data: { qa_selector: 'open_in_web_ide_button' } do
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= _('Open in Web IDE')
- if Gitlab::CurrentSettings.gitpod_enabled && current_user&.gitpod_enabled
- %li.gl-new-dropdown-item
+ %li.gl-dropdown-item
= link_to "#{Gitlab::CurrentSettings.gitpod_url}##{merge_request_url(@merge_request)}", target: '_blank', class: 'dropdown-item' do
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= _('Open in Gitpod')
- %li.gl-new-dropdown-divider
+ %li.gl-dropdown-divider
%hr.dropdown-divider
- %li.gl-new-dropdown-section-header
+ %li.gl-dropdown-section-header
%header.dropdown-header
= _('Download')
- %li.gl-new-dropdown-item
+ %li.gl-dropdown-item
= link_to merge_request_path(@merge_request, format: :patch), class: 'dropdown-item', download: '', data: { qa_selector: 'download_email_patches_menu_item' } do
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= _('Email patches')
- %li.gl-new-dropdown-item
+ %li.gl-dropdown-item
= link_to merge_request_path(@merge_request, format: :diff), class: 'dropdown-item', download: '', data: { qa_selector: 'download_plain_diff_menu_item' } do
- .gl-new-dropdown-item-text-wrapper
+ .gl-dropdown-item-text-wrapper
= _('Plain diff')
diff --git a/app/views/projects/merge_requests/_page.html.haml b/app/views/projects/merge_requests/_page.html.haml
new file mode 100644
index 00000000000..9d79352659c
--- /dev/null
+++ b/app/views/projects/merge_requests/_page.html.haml
@@ -0,0 +1,114 @@
+- @gfm_form = true
+- unless moved_mr_sidebar_enabled?
+ - @content_class = "merge-request-container#{' limit-container-width' unless fluid_layout}"
+- add_to_breadcrumbs _("Merge requests"), project_merge_requests_path(@project)
+- breadcrumb_title @merge_request.to_reference
+- page_title "#{@merge_request.title} (#{@merge_request.to_reference})", _("Merge requests")
+- page_description @merge_request.description_html
+- page_card_attributes @merge_request.card_attributes
+- suggest_changes_help_path = help_page_path('user/project/merge_requests/reviews/suggestions.md')
+- mr_action = j(params[:tab].presence || 'show')
+- add_page_specific_style 'page_bundles/issuable'
+- add_page_specific_style 'page_bundles/design_management'
+- add_page_specific_style 'page_bundles/merge_requests'
+- add_page_specific_style 'page_bundles/pipelines'
+- add_page_specific_style 'page_bundles/reports'
+- add_page_specific_style 'page_bundles/ci_status'
+
+- add_page_startup_api_call @endpoint_metadata_url
+- if mr_action == 'diffs'
+ - add_page_startup_api_call @endpoint_diff_batch_url
+
+.merge-request{ data: { mr_action: mr_action, url: merge_request_path(@merge_request, format: :json), project_path: project_path(@merge_request.project), lock_version: @merge_request.lock_version } }
+ - if moved_mr_sidebar_enabled?
+ #js-merge-sticky-header{ data: { data: sticky_header_data.to_json } }
+ = render "projects/merge_requests/mr_title"
+
+ .merge-request-details.issuable-details{ data: { id: @merge_request.project.id } }
+ = render "projects/merge_requests/mr_box"
+ .merge-request-tabs-holder{ class: "#{'js-tabs-affix' unless ENV['RAILS_ENV'] == 'test'} #{'gl-static' if moved_mr_sidebar_enabled?}" }
+ .merge-request-tabs-container.gl-display-flex.gl-justify-content-space-between{ class: "#{'is-merge-request' if Feature.enabled?(:moved_mr_sidebar, @project) && !fluid_layout}" }
+ %ul.merge-request-tabs.nav-tabs.nav.nav-links.gl-display-flex.gl-flex-nowrap.gl-m-0.gl-p-0{ class: "#{'gl-w-full gl-lg-w-auto!' if Feature.enabled?(:moved_mr_sidebar, @project)}" }
+ = render "projects/merge_requests/tabs/tab", class: "notes-tab", qa_selector: "notes_tab" do
+ = tab_link_for @merge_request, :show, force_link: @commit.present? do
+ = _("Overview")
+ = gl_badge_tag @merge_request.related_notes.user.count, { size: :sm }, { class: 'js-discussions-count' }
+ - if @merge_request.source_project
+ = render "projects/merge_requests/tabs/tab", name: "commits", class: "commits-tab", qa_selector: "commits_tab" do
+ = tab_link_for @merge_request, :commits do
+ = _("Commits")
+ = gl_badge_tag @commits_count, { size: :sm }
+ - if @project.builds_enabled?
+ = render "projects/merge_requests/tabs/tab", name: "pipelines", class: "pipelines-tab" do
+ = tab_link_for @merge_request, :pipelines do
+ = _("Pipelines")
+ = gl_badge_tag @number_of_pipelines, { size: :sm }, { class: 'js-pipelines-mr-count' }
+ = render "projects/merge_requests/tabs/tab", name: "diffs", class: "diffs-tab js-diffs-tab", id: "diffs-tab", qa_selector: "diffs_tab" do
+ = tab_link_for @merge_request, :diffs do
+ = _("Changes")
+ = gl_badge_tag @diffs_count, { size: :sm }
+ .d-flex.flex-wrap.align-items-center.justify-content-lg-end
+ #js-vue-discussion-counter{ data: { blocks_merge: @project.only_allow_merge_if_all_discussions_are_resolved?.to_s } }
+ - if moved_mr_sidebar_enabled?
+ - if !!@issuable_sidebar.dig(:current_user, :id)
+ .js-sidebar-todo-widget-root{ data: { project_path: @issuable_sidebar[:project_full_path], iid: @issuable_sidebar[:iid], id: @issuable_sidebar[:id] } }
+ .gl-ml-auto.gl-align-items-center.gl-display-none.gl-md-display-flex.gl-ml-3.js-expand-sidebar.gl-absolute.gl-right-5{ class: "gl-lg-display-none!" }
+ = render Pajamas::ButtonComponent.new(icon: 'chevron-double-lg-left',
+ button_options: { class: 'js-sidebar-toggle' }) do
+ = _('Expand')
+ .tab-content#diff-notes-app
+ #js-diff-file-finder
+ #js-code-navigation
+ = render "projects/merge_requests/tabs/pane", id: "notes", class: "notes voting_notes" do
+ %div{ class: "#{'merge-request-overview' if moved_mr_sidebar_enabled?}" }
+ %section
+ .issuable-discussion.js-vue-notes-event
+ - if @merge_request.description.present?
+ .detail-page-description.gl-pb-0
+ = render "projects/merge_requests/description"
+ = render "projects/merge_requests/awards_block"
+ = render "projects/merge_requests/widget"
+ - if mr_action === "show"
+ - add_page_startup_api_call Feature.enabled?(:paginated_mr_discussions, @project) ? discussions_path(@merge_request, per_page: 20) : discussions_path(@merge_request)
+ - add_page_startup_api_call widget_project_json_merge_request_path(@project, @merge_request, format: :json)
+ - add_page_startup_api_call cached_widget_project_json_merge_request_path(@project, @merge_request, format: :json)
+ #js-vue-mr-discussions{ data: { notes_data: notes_data(@merge_request).to_json,
+ endpoint_metadata: @endpoint_metadata_url,
+ noteable_data: serialize_issuable(@merge_request, serializer: 'noteable'),
+ noteable_type: 'MergeRequest',
+ notes_filters: UserPreference.notes_filters.to_json,
+ notes_filter_value: current_user&.notes_filter_for(@merge_request),
+ target_type: 'merge_request',
+ help_page_path: suggest_changes_help_path,
+ current_user_data: @current_user_data,
+ is_locked: @merge_request.discussion_locked.to_s } }
+ - if moved_mr_sidebar_enabled?
+ = render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, reviewers: @merge_request.reviewers, source_branch: @merge_request.source_branch
+
+ = render "projects/merge_requests/tabs/pane", name: "commits", id: "commits", class: "commits" do
+ -# This tab is always loaded via AJAX
+ = render "projects/merge_requests/tabs/pane", name: "pipelines", id: "pipelines", class: "pipelines" do
+ - if @project.builds_enabled?
+ = render 'projects/commit/pipelines_list', disable_initialization: true, endpoint: pipelines_project_merge_request_path(@project, @merge_request)
+ - params = request.query_parameters.merge(diff_head: true)
+ = render "projects/merge_requests/tabs/pane", name: "diffs", id: "js-diffs-app", class: "diffs", data: diffs_tab_pane_data(@project, @merge_request, params)
+
+ .mr-loading-status
+ .loading.hide
+ = gl_loading_icon(size: 'lg')
+
+- unless moved_mr_sidebar_enabled?
+ = render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, reviewers: @merge_request.reviewers, source_branch: @merge_request.source_branch
+
+- if @merge_request.can_be_reverted?(current_user)
+ = render "projects/commit/change", type: 'revert', commit: @merge_request.merge_commit
+- if @merge_request.can_be_cherry_picked?
+ = render "projects/commit/change", type: 'cherry-pick', commit: @merge_request.merge_commit
+
+#js-review-bar
+
+- if current_user && Feature.enabled?(:mr_experience_survey, current_user)
+ #js-mr-experience-survey{ data: { account_age: current_user.account_age_in_days } }
+
+= render 'projects/invite_members_modal', project: @project
+= render 'shared/web_ide_path'
diff --git a/app/views/projects/merge_requests/creations/_new_compare.html.haml b/app/views/projects/merge_requests/creations/_new_compare.html.haml
index 17b1e5a757c..48334023cf0 100644
--- a/app/views/projects/merge_requests/creations/_new_compare.html.haml
+++ b/app/views/projects/merge_requests/creations/_new_compare.html.haml
@@ -1,7 +1,7 @@
%h1.page-title.gl-font-size-h-display
= _('New merge request')
-= form_for [@project, @merge_request], url: project_new_merge_request_path(@project), method: :get, html: { class: "merge-request-form js-requires-input" } do |f|
+= gitlab_ui_form_for [@project, @merge_request], url: project_new_merge_request_path(@project), method: :get, html: { class: "merge-request-form js-requires-input" } do |f|
- if params[:nav_source].present?
= hidden_field_tag(:nav_source, params[:nav_source])
.js-merge-request-new-compare.row{ 'data-source-branch-url': project_new_merge_request_branch_from_path(@source_project), 'data-target-branch-url': project_new_merge_request_branch_to_path(@source_project) }
@@ -40,17 +40,20 @@
%h2.gl-font-size-h2
= _('Target branch')
.clearfix
- - projects = target_projects(@project)
.merge-request-select.dropdown
- = f.hidden_field :target_project_id
- = dropdown_toggle f.object.target_project.full_path, { toggle: "dropdown", 'field-name': "#{f.object_name}[target_project_id]", disabled: @merge_request.persisted?, default_text: _("Select target project") }, { toggle_class: "js-compare-dropdown js-target-project" }
- .dropdown-menu.dropdown-menu-selectable.dropdown-target-project
- = dropdown_title(_("Select target project"))
- = dropdown_filter(_("Search projects"))
- = dropdown_content do
- = render 'projects/merge_requests/dropdowns/project',
- projects: projects,
- selected: f.object.target_project_id
+ - if Feature.enabled?(:mr_compare_dropdowns, @project)
+ #js-target-project-dropdown{ data: { target_projects_path: project_new_merge_request_json_target_projects_path(@project), current_project: { value: f.object.target_project_id.to_s, text: f.object.target_project.full_path }.to_json } }
+ - else
+ - projects = target_projects(@project)
+ = f.hidden_field :target_project_id
+ = dropdown_toggle f.object.target_project.full_path, { toggle: "dropdown", 'field-name': "#{f.object_name}[target_project_id]", disabled: @merge_request.persisted?, default_text: _("Select target project") }, { toggle_class: "js-compare-dropdown js-target-project" }
+ .dropdown-menu.dropdown-menu-selectable.dropdown-target-project
+ = dropdown_title(_("Select target project"))
+ = dropdown_filter(_("Search projects"))
+ = dropdown_content do
+ = render 'projects/merge_requests/dropdowns/project',
+ projects: projects,
+ selected: f.object.target_project_id
.merge-request-select.dropdown
= f.hidden_field :target_branch
= dropdown_toggle f.object.target_branch.presence || _("Select target branch"), { toggle: "dropdown", 'field-name': "#{f.object_name}[target_branch]", 'refs-url': refs_project_path(f.object.target_project), selected: f.object.target_branch, default_text: _("Select target branch") }, { toggle_class: "js-compare-dropdown js-target-branch monospace" }
@@ -68,4 +71,4 @@
- if @merge_request.errors.any?
= form_errors(@merge_request)
- = f.submit _('Compare branches and continue'), class: "gl-button btn btn-confirm mr-compare-btn gl-mt-4", data: { qa_selector: "compare_branches_button" }
+ = f.submit _('Compare branches and continue'), data: { qa_selector: 'compare_branches_button' }, pajamas_button: true
diff --git a/app/views/projects/merge_requests/diffs.html.haml b/app/views/projects/merge_requests/diffs.html.haml
new file mode 100644
index 00000000000..1ef212ee5ce
--- /dev/null
+++ b/app/views/projects/merge_requests/diffs.html.haml
@@ -0,0 +1 @@
+= render 'page'
diff --git a/app/views/projects/merge_requests/index.html.haml b/app/views/projects/merge_requests/index.html.haml
index a3f40207d20..79da09c5205 100644
--- a/app/views/projects/merge_requests/index.html.haml
+++ b/app/views/projects/merge_requests/index.html.haml
@@ -5,6 +5,7 @@
- page_title _("Merge requests")
- new_merge_request_email = @project.new_issuable_address(current_user, 'merge_request')
+- add_page_specific_style 'page_bundles/issuable_list'
= content_for :meta_tags do
= auto_discovery_link_tag(:atom, safe_params.merge(rss_url_options).to_h, title: "#{@project.name} merge requests")
diff --git a/app/views/projects/merge_requests/show.html.haml b/app/views/projects/merge_requests/show.html.haml
index 203724fc1f1..1ef212ee5ce 100644
--- a/app/views/projects/merge_requests/show.html.haml
+++ b/app/views/projects/merge_requests/show.html.haml
@@ -1,113 +1 @@
-- @gfm_form = true
-- unless moved_mr_sidebar_enabled?
- - @content_class = "merge-request-container#{' limit-container-width' unless fluid_layout}"
-- add_to_breadcrumbs _("Merge requests"), project_merge_requests_path(@project)
-- breadcrumb_title @merge_request.to_reference
-- page_title "#{@merge_request.title} (#{@merge_request.to_reference})", _("Merge requests")
-- page_description @merge_request.description_html
-- page_card_attributes @merge_request.card_attributes
-- suggest_changes_help_path = help_page_path('user/project/merge_requests/reviews/suggestions.md')
-- mr_action = j(params[:tab].presence || 'show')
-- add_page_specific_style 'page_bundles/design_management'
-- add_page_specific_style 'page_bundles/merge_requests'
-- add_page_specific_style 'page_bundles/pipelines'
-- add_page_specific_style 'page_bundles/reports'
-- add_page_specific_style 'page_bundles/ci_status'
-
-- add_page_startup_api_call @endpoint_metadata_url
-- if mr_action == 'diffs'
- - add_page_startup_api_call @endpoint_diff_batch_url
-
-.merge-request{ data: { mr_action: mr_action, url: merge_request_path(@merge_request, format: :json), project_path: project_path(@merge_request.project), lock_version: @merge_request.lock_version } }
- - if moved_mr_sidebar_enabled?
- #js-merge-sticky-header{ data: { data: sticky_header_data.to_json } }
- = render "projects/merge_requests/mr_title"
-
- .merge-request-details.issuable-details{ data: { id: @merge_request.project.id } }
- = render "projects/merge_requests/mr_box"
- .merge-request-tabs-holder{ class: "#{'js-tabs-affix' unless ENV['RAILS_ENV'] == 'test'} #{'gl-static' if moved_mr_sidebar_enabled?}" }
- .merge-request-tabs-container.gl-display-flex.gl-justify-content-space-between{ class: "#{'is-merge-request' if Feature.enabled?(:moved_mr_sidebar, @project) && !fluid_layout}" }
- %ul.merge-request-tabs.nav-tabs.nav.nav-links.gl-display-flex.gl-flex-nowrap.gl-m-0.gl-p-0{ class: "#{'gl-w-full gl-lg-w-auto!' if Feature.enabled?(:moved_mr_sidebar, @project)}" }
- = render "projects/merge_requests/tabs/tab", class: "notes-tab", qa_selector: "notes_tab" do
- = tab_link_for @merge_request, :show, force_link: @commit.present? do
- = _("Overview")
- = gl_badge_tag @merge_request.related_notes.user.count, { size: :sm }
- - if @merge_request.source_project
- = render "projects/merge_requests/tabs/tab", name: "commits", class: "commits-tab", qa_selector: "commits_tab" do
- = tab_link_for @merge_request, :commits do
- = _("Commits")
- = gl_badge_tag @commits_count, { size: :sm }
- - if @project.builds_enabled?
- = render "projects/merge_requests/tabs/tab", name: "pipelines", class: "pipelines-tab" do
- = tab_link_for @merge_request, :pipelines do
- = _("Pipelines")
- = gl_badge_tag @number_of_pipelines, { size: :sm }, { class: 'js-pipelines-mr-count' }
- = render "projects/merge_requests/tabs/tab", name: "diffs", class: "diffs-tab js-diffs-tab", id: "diffs-tab", qa_selector: "diffs_tab" do
- = tab_link_for @merge_request, :diffs do
- = _("Changes")
- = gl_badge_tag @diffs_count, { size: :sm }
- .d-flex.flex-wrap.align-items-center.justify-content-lg-end
- #js-vue-discussion-counter{ data: { blocks_merge: @project.only_allow_merge_if_all_discussions_are_resolved?.to_s } }
- - if moved_mr_sidebar_enabled?
- - if !!@issuable_sidebar.dig(:current_user, :id)
- .js-sidebar-todo-widget-root{ data: { project_path: @issuable_sidebar[:project_full_path], iid: @issuable_sidebar[:iid], id: @issuable_sidebar[:id] } }
- .gl-ml-auto.gl-align-items-center.gl-display-none.gl-md-display-flex.gl-ml-3.js-expand-sidebar{ class: "gl-lg-display-none!" }
- = render Pajamas::ButtonComponent.new(icon: 'chevron-double-lg-left',
- button_options: { class: 'js-sidebar-toggle' }) do
- = _('Expand')
- .tab-content#diff-notes-app
- #js-diff-file-finder
- #js-code-navigation
- = render "projects/merge_requests/tabs/pane", id: "notes", class: "notes voting_notes" do
- %div{ class: "#{'merge-request-overview' if moved_mr_sidebar_enabled?}" }
- %section
- .issuable-discussion.js-vue-notes-event
- - if @merge_request.description.present?
- .detail-page-description.gl-pb-0
- = render "projects/merge_requests/description"
- = render "projects/merge_requests/awards_block"
- = render "projects/merge_requests/widget"
- - if mr_action === "show"
- - add_page_startup_api_call Feature.enabled?(:paginated_mr_discussions, @project) ? discussions_path(@merge_request, per_page: 20) : discussions_path(@merge_request)
- - add_page_startup_api_call widget_project_json_merge_request_path(@project, @merge_request, format: :json)
- - add_page_startup_api_call cached_widget_project_json_merge_request_path(@project, @merge_request, format: :json)
- #js-vue-mr-discussions{ data: { notes_data: notes_data(@merge_request).to_json,
- endpoint_metadata: @endpoint_metadata_url,
- noteable_data: serialize_issuable(@merge_request, serializer: 'noteable'),
- noteable_type: 'MergeRequest',
- notes_filters: UserPreference.notes_filters.to_json,
- notes_filter_value: current_user&.notes_filter_for(@merge_request),
- target_type: 'merge_request',
- help_page_path: suggest_changes_help_path,
- current_user_data: @current_user_data,
- is_locked: @merge_request.discussion_locked.to_s } }
- - if moved_mr_sidebar_enabled?
- = render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, reviewers: @merge_request.reviewers, source_branch: @merge_request.source_branch
-
- = render "projects/merge_requests/tabs/pane", name: "commits", id: "commits", class: "commits" do
- -# This tab is always loaded via AJAX
- = render "projects/merge_requests/tabs/pane", name: "pipelines", id: "pipelines", class: "pipelines" do
- - if @project.builds_enabled?
- = render 'projects/commit/pipelines_list', disable_initialization: true, endpoint: pipelines_project_merge_request_path(@project, @merge_request)
- - params = request.query_parameters.merge(diff_head: true)
- = render "projects/merge_requests/tabs/pane", name: "diffs", id: "js-diffs-app", class: "diffs", data: diffs_tab_pane_data(@project, @merge_request, params)
-
- .mr-loading-status
- .loading.hide
- = gl_loading_icon(size: 'lg')
-
-- unless moved_mr_sidebar_enabled?
- = render 'shared/issuable/sidebar', issuable_sidebar: @issuable_sidebar, assignees: @merge_request.assignees, reviewers: @merge_request.reviewers, source_branch: @merge_request.source_branch
-
-- if @merge_request.can_be_reverted?(current_user)
- = render "projects/commit/change", type: 'revert', commit: @merge_request.merge_commit
-- if @merge_request.can_be_cherry_picked?
- = render "projects/commit/change", type: 'cherry-pick', commit: @merge_request.merge_commit
-
-#js-review-bar
-
-- if current_user && Feature.enabled?(:mr_experience_survey, current_user)
- #js-mr-experience-survey{ data: { account_age: current_user.account_age_in_days } }
-
-= render 'projects/invite_members_modal', project: @project
-= render 'shared/web_ide_path'
+= render 'page'