Skip to content
Snippets Groups Projects
Commit 80f61b40 authored by GitLab Bot's avatar GitLab Bot
Browse files

Add latest changes from gitlab-org/gitlab@master

parent 4ab54c22
No related branches found
No related tags found
No related merge requests found
Showing
with 56 additions and 54 deletions
/* eslint-disable func-names, one-var, no-var, object-shorthand, no-else-return */
/* eslint-disable func-names, one-var, no-var, no-else-return */
 
import $ from 'jquery';
import { __ } from './locale';
Loading
Loading
@@ -15,7 +15,7 @@ export default function initCompareAutocomplete(limitTo = null, clickHandler = (
const $fieldInput = $(`input[name="${$dropdown.data('fieldName')}"]`, $dropdownContainer);
const $filterInput = $('input[type="search"]', $dropdownContainer);
$dropdown.glDropdown({
data: function(term, callback) {
data(term, callback) {
const params = {
ref: $dropdown.data('ref'),
search: term,
Loading
Loading
@@ -43,7 +43,7 @@ export default function initCompareAutocomplete(limitTo = null, clickHandler = (
filterRemote: Boolean($dropdown.data('refsUrl')),
fieldName: $dropdown.data('fieldName'),
filterInput: 'input[type="search"]',
renderRow: function(ref) {
renderRow(ref) {
var link;
if (ref.header != null) {
return $('<li />')
Loading
Loading
@@ -58,10 +58,10 @@ export default function initCompareAutocomplete(limitTo = null, clickHandler = (
return $('<li />').append(link);
}
},
id: function(obj, $el) {
id(obj, $el) {
return $el.attr('data-ref');
},
toggleLabel: function(obj, $el) {
toggleLabel(obj, $el) {
return $el.text().trim();
},
clicked: () => clickHandler($dropdown),
Loading
Loading
Loading
Loading
@@ -5,7 +5,7 @@ import bp from './breakpoints';
import { parseBoolean } from '~/lib/utils/common_utils';
 
// NOTE: at 1200px nav sidebar should not overlap the content
// https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/24555#note_134136110
// https://gitlab.com/gitlab-org/gitlab-foss/merge_requests/24555#note_134136110
const NAV_SIDEBAR_BREAKPOINT = 1200;
 
export const SIDEBAR_COLLAPSED_CLASS = 'js-sidebar-collapsed';
Loading
Loading
Loading
Loading
@@ -32,7 +32,7 @@ export default {
<div class="item-details">
<!-- FIXME: Pass an alt attribute here for accessibility -->
<user-avatar-image :img-src="mergeRequest.author.avatarUrl" />
<h5 class="item-title merge-merquest-title">
<h5 class="item-title merge-request-title">
<a :href="mergeRequest.url"> {{ mergeRequest.title }} </a>
</h5>
<a :href="mergeRequest.url" class="issue-link"> !{{ mergeRequest.iid }} </a> &middot;
Loading
Loading
Loading
Loading
@@ -34,7 +34,7 @@ export default {
<div class="item-details">
<!-- FIXME: Pass an alt attribute here for accessibility -->
<user-avatar-image :img-src="mergeRequest.author.avatarUrl" />
<h5 class="item-title merge-merquest-title">
<h5 class="item-title merge-request-title">
<a :href="mergeRequest.url"> {{ mergeRequest.title }} </a>
</h5>
<a :href="mergeRequest.url" class="issue-link">!{{ mergeRequest.iid }}</a> &middot;
Loading
Loading
Loading
Loading
@@ -74,7 +74,7 @@ export default () => {
// after a group is selected the cycle analyitcs data will be fetched). Once the
// old (current) page has been removed this entire created method as well as the
// variable itself can be completely removed.
// Follow up issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/64490
// Follow up issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/64490
if (cycleAnalyticsEl.dataset.requestPath) this.fetchCycleAnalyticsData();
},
methods: {
Loading
Loading
Loading
Loading
@@ -5,7 +5,7 @@ import { __ } from '~/locale';
import { getLocationHash } from './lib/utils/url_utility';
import FilesCommentButton from './files_comment_button';
import SingleFileDiff from './single_file_diff';
import imageDiffHelper from './image_diff/helpers/index';
import initImageDiffHelper from './image_diff/helpers/init_image_diff';
 
const UNFOLD_COUNT = 20;
let isBound = false;
Loading
Loading
@@ -28,7 +28,7 @@ export default class Diff {
.first()
.get(0);
const canCreateNote = firstFile && firstFile.hasAttribute('data-can-create-note');
$diffFile.each((index, file) => imageDiffHelper.initImageDiff(file, canCreateNote));
$diffFile.each((index, file) => initImageDiffHelper.initImageDiff(file, canCreateNote));
 
if (!isBound) {
$(document)
Loading
Loading
/* eslint-disable object-shorthand, func-names, no-else-return, no-lonely-if */
/* eslint-disable no-else-return, no-lonely-if */
/* global CommentsStore */
 
import $ from 'jquery';
Loading
Loading
@@ -19,17 +19,17 @@ const CommentAndResolveBtn = Vue.extend({
};
},
computed: {
showButton: function() {
showButton() {
if (this.discussion) {
return this.discussion.isResolvable();
} else {
return false;
}
},
isDiscussionResolved: function() {
isDiscussionResolved() {
return this.discussion.isResolved();
},
buttonText: function() {
buttonText() {
if (this.isDiscussionResolved) {
if (this.textareaIsEmpty) {
return __('Unresolve thread');
Loading
Loading
@@ -50,7 +50,7 @@ const CommentAndResolveBtn = Vue.extend({
this.discussion = CommentsStore.state[this.discussionId];
}
},
mounted: function() {
mounted() {
if (!this.discussionId) return;
 
const $textarea = $(
Loading
Loading
@@ -62,7 +62,7 @@ const CommentAndResolveBtn = Vue.extend({
this.textareaIsEmpty = $textarea.val() === '';
});
},
destroyed: function() {
destroyed() {
if (!this.discussionId) return;
 
$(`.js-discussion-note-form[data-discussion-id=${this.discussionId}] .note-textarea`).off(
Loading
Loading
/* eslint-disable object-shorthand, func-names, no-else-return, guard-for-in, no-restricted-syntax, no-lonely-if, no-continue */
/* eslint-disable func-names, no-else-return, guard-for-in, no-restricted-syntax, no-lonely-if, no-continue */
/* global CommentsStore */
 
import $ from 'jquery';
Loading
Loading
@@ -15,24 +15,24 @@ const JumpToDiscussion = Vue.extend({
required: true,
},
},
data: function() {
data() {
return {
discussions: CommentsStore.state,
discussion: {},
};
},
computed: {
buttonText: function() {
buttonText() {
if (this.discussionId) {
return __('Jump to next unresolved discussion');
} else {
return __('Jump to first unresolved discussion');
}
},
allResolved: function() {
allResolved() {
return this.unresolvedDiscussionCount === 0;
},
showButton: function() {
showButton() {
if (this.discussionId) {
if (this.unresolvedDiscussionCount > 1) {
return true;
Loading
Loading
@@ -43,7 +43,7 @@ const JumpToDiscussion = Vue.extend({
return this.unresolvedDiscussionCount >= 1;
}
},
lastResolvedId: function() {
lastResolvedId() {
let lastId;
for (const discussionId in this.discussions) {
const discussion = this.discussions[discussionId];
Loading
Loading
@@ -59,7 +59,7 @@ const JumpToDiscussion = Vue.extend({
this.discussion = this.discussions[this.discussionId];
},
methods: {
jumpToNextUnresolvedDiscussion: function() {
jumpToNextUnresolvedDiscussion() {
let discussionsSelector;
let discussionIdsInScope;
let firstUnresolvedDiscussionId;
Loading
Loading
/* eslint-disable object-shorthand, func-names */
/* global CommentsStore */
 
import Vue from 'vue';
Loading
Loading
@@ -13,13 +12,13 @@ window.ResolveCount = Vue.extend({
required: true,
},
},
data: function() {
data() {
return {
discussions: CommentsStore.state,
};
},
computed: {
allResolved: function() {
allResolved() {
return this.resolvedDiscussionCount === this.discussionCount;
},
resolvedCountText() {
Loading
Loading
/* eslint-disable object-shorthand, func-names, no-else-return */
/* eslint-disable no-else-return */
/* global CommentsStore */
/* global ResolveService */
 
Loading
Loading
@@ -20,34 +20,34 @@ const ResolveDiscussionBtn = Vue.extend({
required: true,
},
},
data: function() {
data() {
return {
discussion: {},
};
},
computed: {
showButton: function() {
showButton() {
if (this.discussion) {
return this.discussion.isResolvable();
} else {
return false;
}
},
isDiscussionResolved: function() {
isDiscussionResolved() {
if (this.discussion) {
return this.discussion.isResolved();
} else {
return false;
}
},
buttonText: function() {
buttonText() {
if (this.isDiscussionResolved) {
return __('Unresolve discussion');
} else {
return __('Resolve discussion');
}
},
loading: function() {
loading() {
if (this.discussion) {
return this.discussion.loading;
} else {
Loading
Loading
@@ -55,13 +55,13 @@ const ResolveDiscussionBtn = Vue.extend({
}
},
},
created: function() {
created() {
CommentsStore.createDiscussion(this.discussionId, this.canResolve);
 
this.discussion = CommentsStore.state[this.discussionId];
},
methods: {
resolve: function() {
resolve() {
ResolveService.toggleResolveForDiscussion(this.mergeRequestId, this.discussionId);
},
},
Loading
Loading
/* eslint-disable object-shorthand, func-names, guard-for-in, no-restricted-syntax, */
/* eslint-disable guard-for-in, no-restricted-syntax, */
 
const DiscussionMixins = {
computed: {
discussionCount: function() {
discussionCount() {
return Object.keys(this.discussions).length;
},
resolvedDiscussionCount: function() {
resolvedDiscussionCount() {
let resolvedCount = 0;
 
for (const discussionId in this.discussions) {
Loading
Loading
@@ -18,7 +18,7 @@ const DiscussionMixins = {
 
return resolvedCount;
},
unresolvedDiscussionCount: function() {
unresolvedDiscussionCount() {
let unresolvedCount = 0;
 
for (const discussionId in this.discussions) {
Loading
Loading
/* eslint-disable object-shorthand, func-names, camelcase, no-restricted-syntax, guard-for-in */
/* eslint-disable camelcase, no-restricted-syntax, guard-for-in */
/* global DiscussionModel */
 
import Vue from 'vue';
 
window.CommentsStore = {
state: {},
get: function(discussionId, noteId) {
get(discussionId, noteId) {
return this.state[discussionId].getNote(noteId);
},
createDiscussion: function(discussionId, canResolve) {
createDiscussion(discussionId, canResolve) {
let discussion = this.state[discussionId];
if (!this.state[discussionId]) {
discussion = new DiscussionModel(discussionId);
Loading
Loading
@@ -21,18 +21,18 @@ window.CommentsStore = {
 
return discussion;
},
create: function(noteObj) {
create(noteObj) {
const discussion = this.createDiscussion(noteObj.discussionId);
 
discussion.createNote(noteObj);
},
update: function(discussionId, noteId, resolved, resolved_by) {
update(discussionId, noteId, resolved, resolved_by) {
const discussion = this.state[discussionId];
const note = discussion.getNote(noteId);
note.resolved = resolved;
note.resolved_by = resolved_by;
},
delete: function(discussionId, noteId) {
delete(discussionId, noteId) {
const discussion = this.state[discussionId];
discussion.deleteNote(noteId);
 
Loading
Loading
@@ -40,7 +40,7 @@ window.CommentsStore = {
Vue.delete(this.state, discussionId);
}
},
unresolvedDiscussionIds: function() {
unresolvedDiscussionIds() {
const ids = [];
 
for (const discussionId in this.state) {
Loading
Loading
Loading
Loading
@@ -17,7 +17,7 @@ import initUserPopovers from '../../user_popovers';
*
* This Component was cloned from a HAML view. For the time being they
* coexist, but there is an issue to remove the duplication.
* https://gitlab.com/gitlab-org/gitlab-ce/issues/51613
* https://gitlab.com/gitlab-org/gitlab-foss/issues/51613
*
*/
export default {
Loading
Loading
Loading
Loading
@@ -11,7 +11,7 @@ import CommitItem from './commit_item.vue';
*
* This Component was cloned from a HAML view. For the time being,
* they coexist, but there is an issue to remove the duplication.
* https://gitlab.com/gitlab-org/gitlab-ce/issues/51613
* https://gitlab.com/gitlab-org/gitlab-foss/issues/51613
*
*/
export default {
Loading
Loading
Loading
Loading
@@ -45,7 +45,6 @@ export default {
computed: {
...mapState({
projectPath: state => state.diffs.projectPath,
endpoint: state => state.diffs.endpoint,
}),
...mapGetters('diffs', ['isInlineView', 'isParallelView']),
...mapGetters('diffs', ['getCommentFormForDiffFile']),
Loading
Loading
Loading
Loading
@@ -40,7 +40,7 @@ export default {
),
{ jobName: action.name },
);
// https://gitlab.com/gitlab-org/gitlab-ce/issues/52156
// https://gitlab.com/gitlab-org/gitlab-foss/issues/52156
// eslint-disable-next-line no-alert
if (!window.confirm(confirmationMessage)) {
return;
Loading
Loading
Loading
Loading
@@ -278,7 +278,7 @@ export default {
*/
isLastDeployment() {
// name: 'last?' is a false positive: https://gitlab.com/gitlab-org/frontend/eslint-plugin-i18n/issues/26#possible-false-positives
// Vue i18n ESLint rules issue: https://gitlab.com/gitlab-org/gitlab-ce/issues/63560
// Vue i18n ESLint rules issue: https://gitlab.com/gitlab-org/gitlab-foss/issues/63560
// eslint-disable-next-line @gitlab/i18n/no-non-i18n-strings
return this.model && this.model.last_deployment && this.model.last_deployment['last?'];
},
Loading
Loading
Loading
Loading
@@ -474,7 +474,7 @@ export default class FilteredSearchManager {
}
})
.catch(() => {
// https://gitlab.com/gitlab-org/gitlab-ce/issues/30821
// https://gitlab.com/gitlab-org/gitlab-foss/issues/30821
});
}
 
Loading
Loading
import { spriteIcon } from '~/lib/utils/common_utils';
export function createImageBadge(noteId, { x, y }, classNames = []) {
const buttonEl = document.createElement('button');
const classList = classNames.concat(['js-image-badge']);
Loading
Loading
@@ -20,7 +22,7 @@ export function addImageBadge(containerEl, { coordinate, badgeText, noteId }) {
 
export function addImageCommentBadge(containerEl, { coordinate, noteId }) {
const buttonEl = createImageBadge(noteId, coordinate, ['image-comment-badge']);
buttonEl.innerHTML = gl.utils.spriteIcon('image-comment-dark');
buttonEl.innerHTML = spriteIcon('image-comment-dark');
 
containerEl.appendChild(buttonEl);
}
Loading
Loading
import { spriteIcon } from '~/lib/utils/common_utils';
export function addCommentIndicator(containerEl, { x, y }) {
const buttonEl = document.createElement('button');
buttonEl.classList.add('btn-transparent');
Loading
Loading
@@ -6,7 +8,7 @@ export function addCommentIndicator(containerEl, { x, y }) {
buttonEl.style.left = `${x}px`;
buttonEl.style.top = `${y}px`;
 
buttonEl.innerHTML = gl.utils.spriteIcon('image-comment-dark');
buttonEl.innerHTML = spriteIcon('image-comment-dark');
 
containerEl.appendChild(buttonEl);
}
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment