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 successSvg from 'icons/_icon_status_success.svg';
|
||||||
import warningSvg from 'icons/_icon_status_warning.svg';
|
import warningSvg from 'icons/_icon_status_warning.svg';
|
||||||
import simplePoll from '~/lib/utils/simple_poll';
|
import simplePoll from '~/lib/utils/simple_poll';
|
||||||
|
|
@ -7,7 +8,10 @@ import statusIcon from '../mr_widget_status_icon.vue';
|
||||||
import eventHub from '../../event_hub';
|
import eventHub from '../../event_hub';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'MRWidgetReadyToMerge',
|
name: 'ReadyToMerge',
|
||||||
|
components: {
|
||||||
|
statusIcon,
|
||||||
|
},
|
||||||
props: {
|
props: {
|
||||||
mr: { type: Object, required: true },
|
mr: { type: Object, required: true },
|
||||||
service: { type: Object, required: true },
|
service: { type: Object, required: true },
|
||||||
|
|
@ -26,9 +30,6 @@ export default {
|
||||||
warningSvg,
|
warningSvg,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
components: {
|
|
||||||
statusIcon,
|
|
||||||
},
|
|
||||||
computed: {
|
computed: {
|
||||||
shouldShowMergeWhenPipelineSucceedsText() {
|
shouldShowMergeWhenPipelineSucceedsText() {
|
||||||
return this.mr.isPipelineActive;
|
return this.mr.isPipelineActive;
|
||||||
|
|
@ -217,136 +218,146 @@ export default {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
template: `
|
};
|
||||||
<div class="mr-widget-body media">
|
</script>
|
||||||
<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>
|
|
||||||
|
|
||||||
<!-- Placeholder for EE extension of this component -->
|
<template>
|
||||||
<squash-before-merge
|
<div class="mr-widget-body media">
|
||||||
v-if="shouldShowSquashBeforeMerge"
|
<status-icon :status="iconClass" />
|
||||||
:mr="mr"
|
<div class="media-body">
|
||||||
:is-merge-button-disabled="isMergeButtonDisabled" />
|
<div class="mr-widget-body-controls media space-children">
|
||||||
|
<span class="btn-group append-bottom-5">
|
||||||
<span
|
<button
|
||||||
v-if="mr.ffOnlyEnabled"
|
@click="handleMergeButtonClick()"
|
||||||
class="js-fast-forward-message">
|
:disabled="isMergeButtonDisabled"
|
||||||
Fast-forward merge without a merge commit
|
:class="mergeButtonClass"
|
||||||
</span>
|
type="button"
|
||||||
<button
|
class="qa-merge-button">
|
||||||
v-else
|
<i
|
||||||
@click="toggleCommitMessageEditor"
|
v-if="isMakingRequest"
|
||||||
:disabled="isMergeButtonDisabled"
|
class="fa fa-spinner fa-spin"
|
||||||
class="js-modify-commit-message-button btn btn-default btn-xs"
|
aria-hidden="true"
|
||||||
type="button">
|
></i>
|
||||||
Modify commit message
|
{{ mergeButtonText }}
|
||||||
</button>
|
</button>
|
||||||
</template>
|
<button
|
||||||
<template v-else>
|
v-if="shouldShowMergeOptionsDropdown"
|
||||||
<span class="bold js-resolve-mr-widget-items-message">
|
:disabled="isMergeButtonDisabled"
|
||||||
You can only merge once the items above are resolved
|
type="button"
|
||||||
</span>
|
class="btn btn-sm btn-info dropdown-toggle js-merge-moment"
|
||||||
</template>
|
data-toggle="dropdown"
|
||||||
</div>
|
aria-label="Select merge moment">
|
||||||
</div>
|
<i
|
||||||
<div
|
class="fa fa-chevron-down"
|
||||||
v-if="showCommitMessageEditor"
|
aria-hidden="true"
|
||||||
class="prepend-top-default commit-message-editor">
|
></i>
|
||||||
<div class="form-group clearfix">
|
</button>
|
||||||
<label
|
<ul
|
||||||
class="control-label"
|
v-if="shouldShowMergeOptionsDropdown"
|
||||||
for="commit-message">
|
class="dropdown-menu dropdown-menu-right"
|
||||||
Commit message
|
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>
|
</label>
|
||||||
<div class="col-sm-10">
|
|
||||||
<div class="commit-message-container">
|
<!-- Placeholder for EE extension of this component -->
|
||||||
<div class="max-width-marker"></div>
|
<squash-before-merge
|
||||||
<textarea
|
v-if="shouldShowSquashBeforeMerge"
|
||||||
v-model="commitMessage"
|
:mr="mr"
|
||||||
class="form-control js-commit-message"
|
:is-merge-button-disabled="isMergeButtonDisabled" />
|
||||||
required="required"
|
|
||||||
rows="14"
|
<span
|
||||||
name="Commit message"></textarea>
|
v-if="mr.ffOnlyEnabled"
|
||||||
</div>
|
class="js-fast-forward-message">
|
||||||
<p class="hint">Try to keep the first line under 52 characters and the others under 72</p>
|
Fast-forward merge without a merge commit
|
||||||
<div class="hint">
|
</span>
|
||||||
<a
|
<button
|
||||||
@click.prevent="updateCommitMessage"
|
v-else
|
||||||
href="#">{{commitMessageLinkTitle}}</a>
|
@click="toggleCommitMessageEditor"
|
||||||
</div>
|
: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>
|
||||||
</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 NothingToMergeState } from './components/states/nothing_to_merge.vue';
|
||||||
export { default as MissingBranchState } from './components/states/mr_widget_missing_branch.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 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 ShaMismatchState } from './components/states/sha_mismatch.vue';
|
||||||
export { default as UnresolvedDiscussionsState } from './components/states/unresolved_discussions.vue';
|
export { default as UnresolvedDiscussionsState } from './components/states/unresolved_discussions.vue';
|
||||||
export { default as PipelineBlockedState } from './components/states/mr_widget_pipeline_blocked.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 Page
|
||||||
module MergeRequest
|
module MergeRequest
|
||||||
class Show < Page::Base
|
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 :merge_button
|
||||||
element :fast_forward_message, 'Fast-forward merge without a merge commit'
|
element :fast_forward_message, 'Fast-forward merge without a merge commit'
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
import Vue from 'vue';
|
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 eventHub from '~/vue_merge_request_widget/event_hub';
|
||||||
import * as simplePoll from '~/lib/utils/simple_poll';
|
import * as simplePoll from '~/lib/utils/simple_poll';
|
||||||
|
|
||||||
const commitMessage = 'This is the commit message';
|
const commitMessage = 'This is the commit message';
|
||||||
const commitMessageWithDescription = 'This is the commit message description';
|
const commitMessageWithDescription = 'This is the commit message description';
|
||||||
const createComponent = (customConfig = {}) => {
|
const createComponent = (customConfig = {}) => {
|
||||||
const Component = Vue.extend(readyToMergeComponent);
|
const Component = Vue.extend(ReadyToMerge);
|
||||||
const mr = {
|
const mr = {
|
||||||
isPipelineActive: false,
|
isPipelineActive: false,
|
||||||
pipeline: null,
|
pipeline: null,
|
||||||
|
|
@ -36,7 +36,7 @@ const createComponent = (customConfig = {}) => {
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
describe('MRWidgetReadyToMerge', () => {
|
describe('ReadyToMerge', () => {
|
||||||
let vm;
|
let vm;
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
|
|
@ -49,7 +49,7 @@ describe('MRWidgetReadyToMerge', () => {
|
||||||
|
|
||||||
describe('props', () => {
|
describe('props', () => {
|
||||||
it('should have props', () => {
|
it('should have props', () => {
|
||||||
const { mr, service } = readyToMergeComponent.props;
|
const { mr, service } = ReadyToMerge.props;
|
||||||
|
|
||||||
expect(mr.type instanceof Object).toBeTruthy();
|
expect(mr.type instanceof Object).toBeTruthy();
|
||||||
expect(mr.required).toBeTruthy();
|
expect(mr.required).toBeTruthy();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue