Merge branch 'refactor/move-mr-widget-ready-to-merge-vue-component' into 'master'
Move ReadyToMerge vue component See merge request gitlab-org/gitlab-ce!17545
This commit is contained in:
commit
08083f43cb
|
|
@ -1,3 +1,4 @@
|
|||
<script>
|
||||
import successSvg from 'icons/_icon_status_success.svg';
|
||||
import warningSvg from 'icons/_icon_status_warning.svg';
|
||||
import simplePoll from '~/lib/utils/simple_poll';
|
||||
|
|
@ -7,7 +8,10 @@ import statusIcon from '../mr_widget_status_icon.vue';
|
|||
import eventHub from '../../event_hub';
|
||||
|
||||
export default {
|
||||
name: 'MRWidgetReadyToMerge',
|
||||
name: 'ReadyToMerge',
|
||||
components: {
|
||||
statusIcon,
|
||||
},
|
||||
props: {
|
||||
mr: { type: Object, required: true },
|
||||
service: { type: Object, required: true },
|
||||
|
|
@ -26,9 +30,6 @@ export default {
|
|||
warningSvg,
|
||||
};
|
||||
},
|
||||
components: {
|
||||
statusIcon,
|
||||
},
|
||||
computed: {
|
||||
shouldShowMergeWhenPipelineSucceedsText() {
|
||||
return this.mr.isPipelineActive;
|
||||
|
|
@ -217,136 +218,146 @@ export default {
|
|||
});
|
||||
},
|
||||
},
|
||||
template: `
|
||||
<div class="mr-widget-body media">
|
||||
<status-icon :status="iconClass" />
|
||||
<div class="media-body">
|
||||
<div class="mr-widget-body-controls media space-children">
|
||||
<span class="btn-group append-bottom-5">
|
||||
<button
|
||||
@click="handleMergeButtonClick()"
|
||||
:disabled="isMergeButtonDisabled"
|
||||
:class="mergeButtonClass"
|
||||
type="button"
|
||||
class="qa-merge-button">
|
||||
<i
|
||||
v-if="isMakingRequest"
|
||||
class="fa fa-spinner fa-spin"
|
||||
aria-hidden="true" />
|
||||
{{mergeButtonText}}
|
||||
</button>
|
||||
<button
|
||||
v-if="shouldShowMergeOptionsDropdown"
|
||||
:disabled="isMergeButtonDisabled"
|
||||
type="button"
|
||||
class="btn btn-sm btn-info dropdown-toggle js-merge-moment"
|
||||
data-toggle="dropdown"
|
||||
aria-label="Select merge moment">
|
||||
<i
|
||||
class="fa fa-chevron-down"
|
||||
aria-hidden="true" />
|
||||
</button>
|
||||
<ul
|
||||
v-if="shouldShowMergeOptionsDropdown"
|
||||
class="dropdown-menu dropdown-menu-right"
|
||||
role="menu">
|
||||
<li>
|
||||
<a
|
||||
@click.prevent="handleMergeButtonClick(true)"
|
||||
class="merge_when_pipeline_succeeds"
|
||||
href="#">
|
||||
<span class="media">
|
||||
<span
|
||||
v-html="successSvg"
|
||||
class="merge-opt-icon"
|
||||
aria-hidden="true"></span>
|
||||
<span class="media-body merge-opt-title">Merge when pipeline succeeds</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
@click.prevent="handleMergeButtonClick(false, true)"
|
||||
class="accept-merge-request"
|
||||
href="#">
|
||||
<span class="media">
|
||||
<span
|
||||
v-html="warningSvg"
|
||||
class="merge-opt-icon"
|
||||
aria-hidden="true"></span>
|
||||
<span class="media-body merge-opt-title">Merge immediately</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
<div class="media-body-wrap space-children">
|
||||
<template v-if="shouldShowMergeControls()">
|
||||
<label v-if="mr.canRemoveSourceBranch">
|
||||
<input
|
||||
id="remove-source-branch-input"
|
||||
v-model="removeSourceBranch"
|
||||
class="js-remove-source-branch-checkbox"
|
||||
:disabled="isRemoveSourceBranchButtonDisabled"
|
||||
type="checkbox"/> Remove source branch
|
||||
</label>
|
||||
};
|
||||
</script>
|
||||
|
||||
<!-- Placeholder for EE extension of this component -->
|
||||
<squash-before-merge
|
||||
v-if="shouldShowSquashBeforeMerge"
|
||||
:mr="mr"
|
||||
:is-merge-button-disabled="isMergeButtonDisabled" />
|
||||
|
||||
<span
|
||||
v-if="mr.ffOnlyEnabled"
|
||||
class="js-fast-forward-message">
|
||||
Fast-forward merge without a merge commit
|
||||
</span>
|
||||
<button
|
||||
v-else
|
||||
@click="toggleCommitMessageEditor"
|
||||
:disabled="isMergeButtonDisabled"
|
||||
class="js-modify-commit-message-button btn btn-default btn-xs"
|
||||
type="button">
|
||||
Modify commit message
|
||||
</button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="bold js-resolve-mr-widget-items-message">
|
||||
You can only merge once the items above are resolved
|
||||
</span>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="showCommitMessageEditor"
|
||||
class="prepend-top-default commit-message-editor">
|
||||
<div class="form-group clearfix">
|
||||
<label
|
||||
class="control-label"
|
||||
for="commit-message">
|
||||
Commit message
|
||||
<template>
|
||||
<div class="mr-widget-body media">
|
||||
<status-icon :status="iconClass" />
|
||||
<div class="media-body">
|
||||
<div class="mr-widget-body-controls media space-children">
|
||||
<span class="btn-group append-bottom-5">
|
||||
<button
|
||||
@click="handleMergeButtonClick()"
|
||||
:disabled="isMergeButtonDisabled"
|
||||
:class="mergeButtonClass"
|
||||
type="button"
|
||||
class="qa-merge-button">
|
||||
<i
|
||||
v-if="isMakingRequest"
|
||||
class="fa fa-spinner fa-spin"
|
||||
aria-hidden="true"
|
||||
></i>
|
||||
{{ mergeButtonText }}
|
||||
</button>
|
||||
<button
|
||||
v-if="shouldShowMergeOptionsDropdown"
|
||||
:disabled="isMergeButtonDisabled"
|
||||
type="button"
|
||||
class="btn btn-sm btn-info dropdown-toggle js-merge-moment"
|
||||
data-toggle="dropdown"
|
||||
aria-label="Select merge moment">
|
||||
<i
|
||||
class="fa fa-chevron-down"
|
||||
aria-hidden="true"
|
||||
></i>
|
||||
</button>
|
||||
<ul
|
||||
v-if="shouldShowMergeOptionsDropdown"
|
||||
class="dropdown-menu dropdown-menu-right"
|
||||
role="menu">
|
||||
<li>
|
||||
<a
|
||||
@click.prevent="handleMergeButtonClick(true)"
|
||||
class="merge_when_pipeline_succeeds"
|
||||
href="#">
|
||||
<span class="media">
|
||||
<span
|
||||
v-html="successSvg"
|
||||
class="merge-opt-icon"
|
||||
aria-hidden="true"></span>
|
||||
<span class="media-body merge-opt-title">Merge when pipeline succeeds</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a
|
||||
@click.prevent="handleMergeButtonClick(false, true)"
|
||||
class="accept-merge-request"
|
||||
href="#">
|
||||
<span class="media">
|
||||
<span
|
||||
v-html="warningSvg"
|
||||
class="merge-opt-icon"
|
||||
aria-hidden="true"></span>
|
||||
<span class="media-body merge-opt-title">Merge immediately</span>
|
||||
</span>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</span>
|
||||
<div class="media-body-wrap space-children">
|
||||
<template v-if="shouldShowMergeControls()">
|
||||
<label v-if="mr.canRemoveSourceBranch">
|
||||
<input
|
||||
id="remove-source-branch-input"
|
||||
v-model="removeSourceBranch"
|
||||
class="js-remove-source-branch-checkbox"
|
||||
:disabled="isRemoveSourceBranchButtonDisabled"
|
||||
type="checkbox"/> Remove source branch
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="commit-message-container">
|
||||
<div class="max-width-marker"></div>
|
||||
<textarea
|
||||
v-model="commitMessage"
|
||||
class="form-control js-commit-message"
|
||||
required="required"
|
||||
rows="14"
|
||||
name="Commit message"></textarea>
|
||||
</div>
|
||||
<p class="hint">Try to keep the first line under 52 characters and the others under 72</p>
|
||||
<div class="hint">
|
||||
<a
|
||||
@click.prevent="updateCommitMessage"
|
||||
href="#">{{commitMessageLinkTitle}}</a>
|
||||
</div>
|
||||
|
||||
<!-- Placeholder for EE extension of this component -->
|
||||
<squash-before-merge
|
||||
v-if="shouldShowSquashBeforeMerge"
|
||||
:mr="mr"
|
||||
:is-merge-button-disabled="isMergeButtonDisabled" />
|
||||
|
||||
<span
|
||||
v-if="mr.ffOnlyEnabled"
|
||||
class="js-fast-forward-message">
|
||||
Fast-forward merge without a merge commit
|
||||
</span>
|
||||
<button
|
||||
v-else
|
||||
@click="toggleCommitMessageEditor"
|
||||
:disabled="isMergeButtonDisabled"
|
||||
class="js-modify-commit-message-button btn btn-default btn-xs"
|
||||
type="button">
|
||||
Modify commit message
|
||||
</button>
|
||||
</template>
|
||||
<template v-else>
|
||||
<span class="bold js-resolve-mr-widget-items-message">
|
||||
You can only merge once the items above are resolved
|
||||
</span>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
<div
|
||||
v-if="showCommitMessageEditor"
|
||||
class="prepend-top-default commit-message-editor">
|
||||
<div class="form-group clearfix">
|
||||
<label
|
||||
class="control-label"
|
||||
for="commit-message">
|
||||
Commit message
|
||||
</label>
|
||||
<div class="col-sm-10">
|
||||
<div class="commit-message-container">
|
||||
<div class="max-width-marker"></div>
|
||||
<textarea
|
||||
id="commit-message"
|
||||
v-model="commitMessage"
|
||||
class="form-control js-commit-message"
|
||||
required="required"
|
||||
rows="14"
|
||||
name="Commit message"></textarea>
|
||||
</div>
|
||||
<p class="hint">
|
||||
Try to keep the first line under 52 characters and the others under 72
|
||||
</p>
|
||||
<div class="hint">
|
||||
<a
|
||||
@click.prevent="updateCommitMessage"
|
||||
href="#"
|
||||
>
|
||||
{{ commitMessageLinkTitle }}
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
};
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -27,7 +27,7 @@ export { default as ConflictsState } from './components/states/mr_widget_conflic
|
|||
export { default as NothingToMergeState } from './components/states/nothing_to_merge.vue';
|
||||
export { default as MissingBranchState } from './components/states/mr_widget_missing_branch.vue';
|
||||
export { default as NotAllowedState } from './components/states/mr_widget_not_allowed.vue';
|
||||
export { default as ReadyToMergeState } from './components/states/mr_widget_ready_to_merge';
|
||||
export { default as ReadyToMergeState } from './components/states/ready_to_merge.vue';
|
||||
export { default as ShaMismatchState } from './components/states/sha_mismatch.vue';
|
||||
export { default as UnresolvedDiscussionsState } from './components/states/unresolved_discussions.vue';
|
||||
export { default as PipelineBlockedState } from './components/states/mr_widget_pipeline_blocked.vue';
|
||||
|
|
|
|||
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Move ReadyToMerge vue component
|
||||
merge_request: 17545
|
||||
author: George Tsiolis
|
||||
type: performance
|
||||
|
|
@ -2,7 +2,7 @@ module QA
|
|||
module Page
|
||||
module MergeRequest
|
||||
class Show < Page::Base
|
||||
view 'app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_ready_to_merge.js' do
|
||||
view 'app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue' do
|
||||
element :merge_button
|
||||
element :fast_forward_message, 'Fast-forward merge without a merge commit'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,12 +1,12 @@
|
|||
import Vue from 'vue';
|
||||
import readyToMergeComponent from '~/vue_merge_request_widget/components/states/mr_widget_ready_to_merge';
|
||||
import ReadyToMerge from '~/vue_merge_request_widget/components/states/ready_to_merge.vue';
|
||||
import eventHub from '~/vue_merge_request_widget/event_hub';
|
||||
import * as simplePoll from '~/lib/utils/simple_poll';
|
||||
|
||||
const commitMessage = 'This is the commit message';
|
||||
const commitMessageWithDescription = 'This is the commit message description';
|
||||
const createComponent = (customConfig = {}) => {
|
||||
const Component = Vue.extend(readyToMergeComponent);
|
||||
const Component = Vue.extend(ReadyToMerge);
|
||||
const mr = {
|
||||
isPipelineActive: false,
|
||||
pipeline: null,
|
||||
|
|
@ -36,7 +36,7 @@ const createComponent = (customConfig = {}) => {
|
|||
});
|
||||
};
|
||||
|
||||
describe('MRWidgetReadyToMerge', () => {
|
||||
describe('ReadyToMerge', () => {
|
||||
let vm;
|
||||
|
||||
beforeEach(() => {
|
||||
|
|
@ -49,7 +49,7 @@ describe('MRWidgetReadyToMerge', () => {
|
|||
|
||||
describe('props', () => {
|
||||
it('should have props', () => {
|
||||
const { mr, service } = readyToMergeComponent.props;
|
||||
const { mr, service } = ReadyToMerge.props;
|
||||
|
||||
expect(mr.type instanceof Object).toBeTruthy();
|
||||
expect(mr.required).toBeTruthy();
|
||||
|
|
|
|||
Loading…
Reference in New Issue