Commit 4ce9f2fd authored by Marin Jankovski's avatar Marin Jankovski

Merge branch 'upgrade-eslint' into 'master'

Upgrade eslint to v5.x

See merge request gitlab-org/gitlab-ce!21825
parents 17a4f24c aef686d4
...@@ -56,6 +56,10 @@ rules: ...@@ -56,6 +56,10 @@ rules:
component: always component: always
svg: always svg: always
math: always math: always
camelcase:
- error
- properties: never
ignoreDestructuring: true
## Conflicting rules with prettier: ## Conflicting rules with prettier:
space-before-function-paren: off space-before-function-paren: off
curly: off curly: off
...@@ -63,7 +67,7 @@ rules: ...@@ -63,7 +67,7 @@ rules:
function-paren-newline: off function-paren-newline: off
object-curly-newline: off object-curly-newline: off
padded-blocks: off padded-blocks: off
# Disabled for now, to make the eslint 3 -> eslint 4 update smoother # Disabled for now, to make the eslint 3 -> eslint 5 update smoother
## Indent rule. We are using the old for now: https://eslint.org/docs/user-guide/migrating-to-4.0.0#indent-rewrite ## Indent rule. We are using the old for now: https://eslint.org/docs/user-guide/migrating-to-4.0.0#indent-rewrite
indent: off indent: off
indent-legacy: indent-legacy:
...@@ -78,3 +82,18 @@ rules: ...@@ -78,3 +82,18 @@ rules:
FunctionExpression: FunctionExpression:
parameters: 1 parameters: 1
body: 1 body: 1
# Disabled for now, to make the airbnb-base 12.1.0 -> 13.1.0 update smoother
operator-linebreak: off
implicit-arrow-linebreak: off
no-else-return:
- error
- allowElseIf: true
import/no-useless-path-segments: off
lines-between-class-members: off
# Disabled for now, to make the plugin-vue 4.5 -> 5.0 update smoother
vue/html-closing-bracket-newline: off
vue/html-closing-bracket-spacing: off
vue/no-confusing-v-for-v-if: error
vue/no-unused-components: off
vue/no-use-v-if-with-v-for: off
vue/no-v-html: off
...@@ -103,8 +103,8 @@ export default { ...@@ -103,8 +103,8 @@ export default {
</div> </div>
<button <button
v-tooltip
v-show="hasError" v-show="hasError"
v-tooltip
:title="s__('Badges|Reload badge image')" :title="s__('Badges|Reload badge image')"
class="btn btn-transparent btn-sm text-primary" class="btn btn-transparent btn-sm text-primary"
type="button" type="button"
......
...@@ -231,14 +231,14 @@ export default { ...@@ -231,14 +231,14 @@ export default {
<board-card <board-card
v-for="(issue, index) in issues" v-for="(issue, index) in issues"
ref="issue" ref="issue"
:key="issue.id"
:index="index" :index="index"
:list="list" :list="list"
:issue="issue" :issue="issue"
:issue-link-base="issueLinkBase" :issue-link-base="issueLinkBase"
:group-id="groupId" :group-id="groupId"
:root-path="rootPath" :root-path="rootPath"
:disabled="disabled" :disabled="disabled" />
:key="issue.id" />
<li <li
v-if="showCount" v-if="showCount"
class="board-list-count text-center" class="board-list-count text-center"
......
...@@ -110,9 +110,9 @@ export default { ...@@ -110,9 +110,9 @@ export default {
Title Title
</label> </label>
<input <input
:id="list.id + '-title'"
ref="input" ref="input"
v-model="title" v-model="title"
:id="list.id + '-title'"
class="form-control" class="form-control"
type="text" type="text"
name="issue_title" name="issue_title"
......
...@@ -170,8 +170,8 @@ ...@@ -170,8 +170,8 @@
tooltip-placement="bottom" tooltip-placement="bottom"
/> />
<span <span
v-tooltip
v-if="shouldRenderCounter" v-if="shouldRenderCounter"
v-tooltip
:title="assigneeCounterTooltip" :title="assigneeCounterTooltip"
class="avatar-counter" class="avatar-counter"
> >
...@@ -184,10 +184,10 @@ ...@@ -184,10 +184,10 @@
class="board-card-footer" class="board-card-footer"
> >
<button <button
v-tooltip
v-for="label in issue.labels" v-for="label in issue.labels"
v-if="showLabel(label)" v-if="showLabel(label)"
:key="label.id" :key="label.id"
v-tooltip
:style="labelStyle(label)" :style="labelStyle(label)"
:title="label.description" :title="label.description"
class="badge color-label" class="badge color-label"
......
...@@ -9,7 +9,7 @@ import '~/vue_shared/models/assignee'; ...@@ -9,7 +9,7 @@ import '~/vue_shared/models/assignee';
import FilteredSearchBoards from './filtered_search_boards'; import FilteredSearchBoards from './filtered_search_boards';
import eventHub from './eventhub'; import eventHub from './eventhub';
import sidebarEventHub from '~/sidebar/event_hub'; // eslint-disable-line import/first import sidebarEventHub from '~/sidebar/event_hub';
import './models/issue'; import './models/issue';
import './models/list'; import './models/list';
import './models/milestone'; import './models/milestone';
...@@ -24,7 +24,7 @@ import './components/board'; ...@@ -24,7 +24,7 @@ import './components/board';
import './components/board_sidebar'; import './components/board_sidebar';
import './components/new_list_dropdown'; import './components/new_list_dropdown';
import BoardAddIssuesModal from './components/modal/index.vue'; import BoardAddIssuesModal from './components/modal/index.vue';
import '~/vue_shared/vue_resource_interceptor'; // eslint-disable-line import/first import '~/vue_shared/vue_resource_interceptor';
export default () => { export default () => {
const $boardApp = document.getElementById('board-app'); const $boardApp = document.getElementById('board-app');
......
...@@ -145,8 +145,8 @@ export default { ...@@ -145,8 +145,8 @@ export default {
<icon :name="firstProject.can_push ? 'lock-open' : 'lock'"/> <icon :name="firstProject.can_push ? 'lock-open' : 'lock'"/>
</a> </a>
<a <a
v-tooltip
v-if="isExpandable" v-if="isExpandable"
v-tooltip
:title="restProjectsTooltip" :title="restProjectsTooltip"
class="label deploy-project-label" class="label deploy-project-label"
@click="toggleExpanded" @click="toggleExpanded"
...@@ -154,10 +154,10 @@ export default { ...@@ -154,10 +154,10 @@ export default {
<span>{{ restProjectsLabel }}</span> <span>{{ restProjectsLabel }}</span>
</a> </a>
<a <a
v-tooltip
v-for="deployKeysProject in restProjects" v-for="deployKeysProject in restProjects"
v-else-if="isExpanded" v-else-if="isExpanded"
:key="deployKeysProject.project.full_path" :key="deployKeysProject.project.full_path"
v-tooltip
:href="deployKeysProject.project.full_path" :href="deployKeysProject.project.full_path"
:title="projectTooltipTitle(deployKeysProject)" :title="projectTooltipTitle(deployKeysProject)"
class="label deploy-project-label" class="label deploy-project-label"
...@@ -198,8 +198,8 @@ export default { ...@@ -198,8 +198,8 @@ export default {
{{ __('Enable') }} {{ __('Enable') }}
</action-btn> </action-btn>
<a <a
v-tooltip
v-if="deployKey.can_edit" v-if="deployKey.can_edit"
v-tooltip
:href="editDeployKeyPath" :href="editDeployKeyPath"
:title="__('Edit')" :title="__('Edit')"
class="btn btn-default text-secondary" class="btn btn-default text-secondary"
...@@ -208,8 +208,8 @@ export default { ...@@ -208,8 +208,8 @@ export default {
<icon name="pencil"/> <icon name="pencil"/>
</a> </a>
<action-btn <action-btn
v-tooltip
v-if="isRemovable" v-if="isRemovable"
v-tooltip
:deploy-key="deployKey" :deploy-key="deployKey"
:title="__('Remove')" :title="__('Remove')"
btn-css-class="btn-danger" btn-css-class="btn-danger"
...@@ -219,8 +219,8 @@ export default { ...@@ -219,8 +219,8 @@ export default {
<icon name="remove"/> <icon name="remove"/>
</action-btn> </action-btn>
<action-btn <action-btn
v-tooltip
v-else-if="isEnabled" v-else-if="isEnabled"
v-tooltip
:deploy-key="deployKey" :deploy-key="deployKey"
:title="__('Disable')" :title="__('Disable')"
btn-css-class="btn-warning" btn-css-class="btn-warning"
......
...@@ -181,8 +181,8 @@ export default { ...@@ -181,8 +181,8 @@ export default {
</span> </span>
<strong <strong
v-tooltip
v-else v-else
v-tooltip
:title="filePath" :title="filePath"
class="file-title-name" class="file-title-name"
data-container="body" data-container="body"
...@@ -255,8 +255,8 @@ export default { ...@@ -255,8 +255,8 @@ export default {
</a> </a>
<a <a
v-tooltip
v-if="diffFile.externalUrl" v-if="diffFile.externalUrl"
v-tooltip
:href="diffFile.externalUrl" :href="diffFile.externalUrl"
:title="`View on ${diffFile.formattedExternalUrl}`" :title="`View on ${diffFile.formattedExternalUrl}`"
target="_blank" target="_blank"
......
...@@ -87,8 +87,8 @@ export default { ...@@ -87,8 +87,8 @@ export default {
@click.native="toggleDiscussions" @click.native="toggleDiscussions"
/> />
<span <span
v-gl-tooltip
v-if="moreText" v-if="moreText"
v-gl-tooltip
:title="moreText" :title="moreText"
class="diff-comments-more-count js-diff-comment-avatar js-diff-comment-plus" class="diff-comments-more-count js-diff-comment-avatar js-diff-comment-plus"
data-container="body" data-container="body"
......
...@@ -43,18 +43,18 @@ export default { ...@@ -43,18 +43,18 @@ export default {
v-for="(line, index) in diffLines" v-for="(line, index) in diffLines"
> >
<inline-diff-table-row <inline-diff-table-row
:key="line.lineCode"
:file-hash="diffFile.fileHash" :file-hash="diffFile.fileHash"
:context-lines-path="diffFile.contextLinesPath" :context-lines-path="diffFile.contextLinesPath"
:line="line" :line="line"
:is-bottom="index + 1 === diffLinesLength" :is-bottom="index + 1 === diffLinesLength"
:key="line.lineCode"
/> />
<inline-diff-comment-row <inline-diff-comment-row
v-if="shouldRenderInlineCommentRow(line)" v-if="shouldRenderInlineCommentRow(line)"
:key="index"
:diff-file-hash="diffFile.fileHash" :diff-file-hash="diffFile.fileHash"
:line="line" :line="line"
:line-index="index" :line-index="index"
:key="index"
/> />
</template> </template>
</tbody> </tbody>
......
...@@ -45,11 +45,11 @@ export default { ...@@ -45,11 +45,11 @@ export default {
v-for="(line, index) in diffLines" v-for="(line, index) in diffLines"
> >
<parallel-diff-table-row <parallel-diff-table-row
:key="index"
:file-hash="diffFile.fileHash" :file-hash="diffFile.fileHash"
:context-lines-path="diffFile.contextLinesPath" :context-lines-path="diffFile.contextLinesPath"
:line="line" :line="line"
:is-bottom="index + 1 === diffLinesLength" :is-bottom="index + 1 === diffLinesLength"
:key="index"
/> />
<parallel-diff-comment-row <parallel-diff-comment-row
v-if="shouldRenderParallelCommentRow(line)" v-if="shouldRenderParallelCommentRow(line)"
......
...@@ -83,10 +83,10 @@ export default { ...@@ -83,10 +83,10 @@ export default {
:model="model"> :model="model">
<div <div
is="environment-item" is="environment-item"
:key="`environment-item-${i}`"
:model="model" :model="model"
:can-create-deployment="canCreateDeployment" :can-create-deployment="canCreateDeployment"
:can-read-environment="canReadEnvironment" :can-read-environment="canReadEnvironment"
:key="`environment-item-${i}`"
/> />
<template <template
...@@ -102,10 +102,10 @@ export default { ...@@ -102,10 +102,10 @@ export default {
<div <div
is="environment-item" is="environment-item"
v-for="(children, index) in model.children" v-for="(children, index) in model.children"
:key="`env-item-${i}-${index}`"
:model="children" :model="children"
:can-create-deployment="canCreateDeployment" :can-create-deployment="canCreateDeployment"
:can-read-environment="canReadEnvironment" :can-read-environment="canReadEnvironment"
:key="`env-item-${i}-${index}`"
/> />
<div :key="`sub-div-${i}`"> <div :key="`sub-div-${i}`">
......
...@@ -72,8 +72,8 @@ export default { ...@@ -72,8 +72,8 @@ export default {
@click="onItemActivated(item.text)"> @click="onItemActivated(item.text)">
<span> <span>
<span <span
v-for="(token, index) in item.tokens" v-for="(token, tokenIndex) in item.tokens"
:key="`dropdown-token-${index}`" :key="`dropdown-token-${tokenIndex}`"
class="filtered-search-history-dropdown-token" class="filtered-search-history-dropdown-token"
> >
<span class="name">{{ token.prefix }}</span> <span class="name">{{ token.prefix }}</span>
......
<script> <script>
/* eslint-disable vue/require-default-prop, vue/require-prop-types */ /* eslint-disable vue/require-default-prop */
import Identicon from '../../vue_shared/components/identicon.vue'; import Identicon from '../../vue_shared/components/identicon.vue';
export default { export default {
......
...@@ -46,8 +46,8 @@ export default { ...@@ -46,8 +46,8 @@ export default {
<template> <template>
<div class="controls"> <div class="controls">
<a <a
v-tooltip
v-if="group.canEdit" v-if="group.canEdit"
v-tooltip
:href="group.editPath" :href="group.editPath"
:title="editBtnTitle" :title="editBtnTitle"
:aria-label="editBtnTitle" :aria-label="editBtnTitle"
...@@ -57,8 +57,8 @@ export default { ...@@ -57,8 +57,8 @@ export default {
<icon name="settings"/> <icon name="settings"/>
</a> </a>
<a <a
v-tooltip
v-if="group.canLeave" v-if="group.canLeave"
v-tooltip
:href="group.leavePath" :href="group.leavePath"
:title="leaveBtnTitle" :title="leaveBtnTitle"
:aria-label="leaveBtnTitle" :aria-label="leaveBtnTitle"
......
...@@ -60,8 +60,8 @@ export default { ...@@ -60,8 +60,8 @@ export default {
<div class="position-relative"> <div class="position-relative">
<input <input
ref="searchInput" ref="searchInput"
:placeholder="__('Search branches')"
v-model="search" v-model="search"
:placeholder="__('Search branches')"
type="search" type="search"
class="form-control dropdown-input-field" class="form-control dropdown-input-field"
@input="searchBranches" @input="searchBranches"
......
...@@ -113,8 +113,8 @@ export default { ...@@ -113,8 +113,8 @@ export default {
</strong> </strong>
<div class="d-flex ml-auto"> <div class="d-flex ml-auto">
<button <button
v-tooltip
ref="actionBtn" ref="actionBtn"
v-tooltip
:title="actionBtnText" :title="actionBtnText"
:aria-label="actionBtnText" :aria-label="actionBtnText"
:disabled="!filesLength" :disabled="!filesLength"
...@@ -135,8 +135,8 @@ export default { ...@@ -135,8 +135,8 @@ export default {
/> />
</button> </button>
<button <button
v-tooltip
v-if="!stagedList" v-if="!stagedList"
v-tooltip
:title="__('Discard all changes')" :title="__('Discard all changes')"
:aria-label="__('Discard all changes')" :aria-label="__('Discard all changes')"
:disabled="!filesLength" :disabled="!filesLength"
......
...@@ -174,8 +174,8 @@ export default { ...@@ -174,8 +174,8 @@ export default {
<div class="dropdown-input"> <div class="dropdown-input">
<input <input
ref="searchInput" ref="searchInput"
:placeholder="__('Search files')"
v-model="searchText" v-model="searchText"
:placeholder="__('Search files')"
type="search" type="search"
class="dropdown-input-field" class="dropdown-input-field"
autocomplete="off" autocomplete="off"
......
...@@ -78,10 +78,10 @@ export default { ...@@ -78,10 +78,10 @@ export default {
class="diff-changed-file-name" class="diff-changed-file-name"
> >
<span <span
v-for="(char, index) in file.name.split('')" v-for="(char, charIndex) in file.name.split('')"
:key="index + char" :key="charIndex + char"
:class="{ :class="{
highlighted: nameSearchTextOccurences.indexOf(index) >= 0, highlighted: nameSearchTextOccurences.indexOf(charIndex) >= 0,
}" }"
v-text="char" v-text="char"
> >
...@@ -91,10 +91,10 @@ export default { ...@@ -91,10 +91,10 @@ export default {
class="diff-changed-file-path prepend-top-5" class="diff-changed-file-path prepend-top-5"
> >
<span <span
v-for="(char, index) in pathWithEllipsis.split('')" v-for="(char, charIndex) in pathWithEllipsis.split('')"
:key="index + char" :key="charIndex + char"
:class="{ :class="{
highlighted: pathSearchTextOccurences.indexOf(index) >= 0, highlighted: pathSearchTextOccurences.indexOf(charIndex) >= 0,
}" }"
v-text="char" v-text="char"
> >
......
...@@ -69,8 +69,8 @@ export default { ...@@ -69,8 +69,8 @@ export default {
:size="24" :size="24"
/> />
<strong <strong
v-tooltip="showTooltip"
ref="stageTitle" ref="stageTitle"
v-tooltip="showTooltip"
:title="showTooltip ? stage.name : null" :title="showTooltip ? stage.name : null"
data-container="body" data-container="body"
class="prepend-left-8 ide-stage-title" class="prepend-left-8 ide-stage-title"
......
...@@ -26,8 +26,8 @@ export default { ...@@ -26,8 +26,8 @@ export default {
<template> <template>
<span <span
v-tooltip
v-if="file.file_lock" v-if="file.file_lock"
v-tooltip
:title="lockTooltip" :title="lockTooltip"
data-container="body" data-container="body"
> >
......
...@@ -76,8 +76,8 @@ export default { ...@@ -76,8 +76,8 @@ export default {
> >
</h2> </h2>
<button <button
v-tooltip
v-if="showInlineEditButton && canUpdate" v-if="showInlineEditButton && canUpdate"
v-tooltip
type="button" type="button"
class="btn btn-default btn-edit btn-svg js-issuable-edit" class="btn btn-default btn-edit btn-svg js-issuable-edit"
title="Edit title and description" title="Edit title and description"
......
...@@ -78,8 +78,8 @@ ...@@ -78,8 +78,8 @@
<div class="controllers float-right"> <div class="controllers float-right">
<!-- links --> <!-- links -->
<a <a
v-tooltip
v-if="rawTracePath" v-if="rawTracePath"
v-tooltip
:title="s__('Job|Show complete raw')" :title="s__('Job|Show complete raw')"
:href="rawTracePath" :href="rawTracePath"
class="js-raw-link-controller controllers-buttons" class="js-raw-link-controller controllers-buttons"
...@@ -89,8 +89,8 @@ ...@@ -89,8 +89,8 @@
</a> </a>
<button <button
v-tooltip
v-if="canEraseJob" v-if="canEraseJob"
v-tooltip
:title="s__('Job|Erase job log')" :title="s__('Job|Erase job log')"
type="button" type="button"
class="js-erase-link controllers-buttons" class="js-erase-link controllers-buttons"
......
...@@ -25,9 +25,9 @@ ...@@ -25,9 +25,9 @@
class="build-job" class="build-job"
> >
<a <a
v-tooltip
v-for="job in jobs" v-for="job in jobs"
:key="job.id" :key="job.id"
v-tooltip
:href="job.path" :href="job.path"
:title="job.tooltip" :title="job.tooltip"
:class="{ active: job.active, retried: job.retried }" :class="{ active: job.active, retried: job.retried }"
......
...@@ -115,8 +115,9 @@ export default class MergeRequestTabs { ...@@ -115,8 +115,9 @@ export default class MergeRequestTabs {
this.mergeRequestTabs && this.mergeRequestTabs &&
this.mergeRequestTabs.querySelector(`a[data-action='${action}']`) && this.mergeRequestTabs.querySelector(`a[data-action='${action}']`) &&
this.mergeRequestTabs.querySelector(`a[data-action='${action}']`).click this.mergeRequestTabs.querySelector(`a[data-action='${action}']`).click
) ) {
this.mergeRequestTabs.querySelector(`a[data-action='${action}']`).click(); this.mergeRequestTabs.querySelector(`a[data-action='${action}']`).click();
}
this.initAffix(); this.initAffix();
} }
......
...@@ -214,8 +214,8 @@ export default { ...@@ -214,8 +214,8 @@ export default {
:show-panels="showPanels" :show-panels="showPanels"
> >
<graph <graph
v-for="(graphData, index) in groupData.metrics" v-for="(graphData, graphIndex) in groupData.metrics"
:key="index" :key="graphIndex"
:graph-data="graphData" :graph-data="graphData"
:hover-data="hoverData" :hover-data="hoverData"
:update-aspect-ratio="updateAspectRatio" :update-aspect-ratio="updateAspectRatio"
......
...@@ -58,8 +58,8 @@ export default { ...@@ -58,8 +58,8 @@ export default {
</td> </td>
<template v-for="(track, trackIndex) in series.tracksLegend"> <template v-for="(track, trackIndex) in series.tracksLegend">
<track-line <track-line
:track="track" :key="`track-line-${trackIndex}`"
:key="`track-line-${trackIndex}`"/> :track="track"/>
<td :key="`track-info-${trackIndex}`"> <td :key="`track-info-${trackIndex}`">
<track-info <track-info
:track="track" :track="track"
......
...@@ -51,10 +51,10 @@ ...@@ -51,10 +51,10 @@
<template> <template>
<div v-if="hasNotebook"> <div v-if="hasNotebook">
<component <component
v-for="(cell, index) in cells"
:is="cellType(cell.cell_type)" :is="cellType(cell.cell_type)"
:cell="cell" v-for="(cell, index) in cells"
:key="index" :key="index"
:cell="cell"
:code-css-class="codeCssClass" /> :code-css-class="codeCssClass" />
</div> </div>
</template> </template>
......
...@@ -41,8 +41,8 @@ export default { ...@@ -41,8 +41,8 @@ export default {
</div> </div>
<template v-else> <template v-else>
<component <component
ref="titleWrapper"
:is="titleTag" :is="titleTag"
ref="titleWrapper"
:href="diffFile.discussionPath" :href="diffFile.discussionPath"
> >
<span v-html="diffFile.blobIcon"></span> <span v-html="diffFile.blobIcon"></span>
......
...@@ -182,9 +182,9 @@ export default { ...@@ -182,9 +182,9 @@ export default {
<div class="note-awards"> <div class="note-awards">
<div class="awards js-awards-block"> <div class="awards js-awards-block">
<button <button
v-tooltip
v-for="(awardList, awardName, index) in groupedAwards" v-for="(awardList, awardName, index) in groupedAwards"
:key="index" :key="index"
v-tooltip
:class="getAwardClassBindings(awardList)" :class="getAwardClassBindings(awardList)"
:title="awardTitle(awardList)" :title="awardTitle(awardList)"
class="btn award-control" class="btn award-control"
......
...@@ -171,8 +171,8 @@ export default { ...@@ -171,8 +171,8 @@ export default {
id="note_note" id="note_note"
ref="textarea" ref="textarea"
slot="textarea" slot="textarea"
:data-supports-quick-actions="!isEditing"
v-model="updatedNoteBody" v-model="updatedNoteBody"
:data-supports-quick-actions="!isEditing"
name="note[note]" name="note[note]"
class="note-textarea js-gfm-input js-note-text class="note-textarea js-gfm-input js-note-text
js-autosize markdown-area js-vue-issue-note-form js-vue-textarea" js-autosize markdown-area js-vue-issue-note-form js-vue-textarea"
......
...@@ -348,10 +348,10 @@ Please check your network connection and try again.`; ...@@ -348,10 +348,10 @@ Please check your network connection and try again.`;
<div class="discussion-notes"> <div class="discussion-notes">
<ul class="notes"> <ul class="notes">
<component <component
v-for="note in discussion.notes"
:is="componentName(note)" :is="componentName(note)"
:note="componentData(note)" v-for="note in discussion.notes"
:key="note.id" :key="note.id"
:note="componentData(note)"
@handleDeleteNote="deleteNoteHandler" @handleDeleteNote="deleteNoteHandler"
/> />
</ul> </ul>
......
...@@ -187,10 +187,10 @@ export default { ...@@ -187,10 +187,10 @@ export default {
class="notes main-notes-list timeline" class="notes main-notes-list timeline"
> >
<component <component
v-for="discussion in allDiscussions"
:is="getComponentName(discussion)" :is="getComponentName(discussion)"
v-bind="getComponentData(discussion)" v-for="discussion in allDiscussions"
:key="discussion.id" :key="discussion.id"
v-bind="getComponentData(discussion)"
/> />
</ul> </ul>
......
...@@ -155,10 +155,7 @@ ...@@ -155,10 +155,7 @@
/> />
</form> </form>
</template> </template>
<template <template slot="secondary-button">
slot="secondary-button"
slot-scope="props"
>
<button <button
:disabled="!canSubmit" :disabled="!canSubmit"
type="button" type="button"
......
...@@ -147,8 +147,8 @@ ...@@ -147,8 +147,8 @@
<div class="cron-interval-input-wrapper"> <div class="cron-interval-input-wrapper">
<input <input
id="schedule_cron" id="schedule_cron"
:placeholder="__('Define a custom pattern with cron syntax')"
v-model="cronInterval" v-model="cronInterval"
:placeholder="__('Define a custom pattern with cron syntax')"
:name="inputNameAttribute" :name="inputNameAttribute"
:disabled="!isEditable" :disabled="!isEditable"
class="form-control inline cron-interval-input" class="form-control inline cron-interval-input"
......
...@@ -240,8 +240,8 @@ ...@@ -240,8 +240,8 @@
help-text="Lightweight issue tracking system for this project" help-text="Lightweight issue tracking system for this project"
> >
<project-feature-setting <project-feature-setting
:options="featureAccessLevelOptions"
v-model="issuesAccessLevel" v-model="issuesAccessLevel"
:options="featureAccessLevelOptions"
name="project[project_feature_attributes][issues_access_level]" name="project[project_feature_attributes][issues_access_level]"
/> />
</project-setting-row> </project-setting-row>
...@@ -250,8 +250,8 @@ ...@@ -250,8 +250,8 @@
help-text="View and edit files in this project" help-text="View and edit files in this project"
> >
<project-feature-setting <project-feature-setting
:options="featureAccessLevelOptions"
v-model="repositoryAccessLevel" v-model="repositoryAccessLevel"
:options="featureAccessLevelOptions"
name="project[project_feature_attributes][repository_access_level]" name="project[project_feature_attributes][repository_access_level]"
/> />
</project-setting-row> </project-setting-row>
...@@ -261,8 +261,8 @@ ...@@ -261,8 +261,8 @@
help-text="Submit changes to be merged upstream" help-text="Submit changes to be merged upstream"
> >
<project-feature-setting <project-feature-setting
:options="repoFeatureAccessLevelOptions"
v-model="mergeRequestsAccessLevel" v-model="mergeRequestsAccessLevel"
:options="repoFeatureAccessLevelOptions"
:disabled-input="!repositoryEnabled" :disabled-input="!repositoryEnabled"
name="project[project_feature_attributes][merge_requests_access_level]" name="project[project_feature_attributes][merge_requests_access_level]"
/> />
...@@ -272,8 +272,8 @@ ...@@ -272,8 +272,8 @@
help-text="Build, test, and deploy your changes" help-text="Build, test, and deploy your changes"
> >
<project-feature-setting <project-feature-setting
:options="repoFeatureAccessLevelOptions"
v-model="buildsAccessLevel" v-model="buildsAccessLevel"
:options="repoFeatureAccessLevelOptions"
:disabled-input="!repositoryEnabled" :disabled-input="!repositoryEnabled"
name="project[project_feature_attributes][builds_access_level]" name="project[project_feature_attributes][builds_access_level]"
/> />
...@@ -308,8 +308,8 @@ ...@@ -308,8 +308,8 @@
help-text="Pages for project documentation" help-text="Pages for project documentation"
> >
<project-feature-setting <project-feature-setting
:options="featureAccessLevelOptions"
v-model="wikiAccessLevel" v-model="wikiAccessLevel"
:options="featureAccessLevelOptions"
name="project[project_feature_attributes][wiki_access_level]" name="project[project_feature_attributes][wiki_access_level]"
/> />
</project-setting-row> </project-setting-row>
...@@ -318,8 +318,8 @@ ...@@ -318,8 +318,8 @@
help-text="Share code pastes with others out of Git repository" help-text="Share code pastes with others out of Git repository"
> >
<project-feature-setting <project-feature-setting
:options="featureAccessLevelOptions"
v-model="snippetsAccessLevel" v-model="snippetsAccessLevel"
:options="featureAccessLevelOptions"
name="project[project_feature_attributes][snippets_access_level]" name="project[project_feature_attributes][snippets_access_level]"
/> />
</project-setting-row> </project-setting-row>
......
...@@ -130,8 +130,8 @@ export default { ...@@ -130,8 +130,8 @@ export default {
</div> </div>
<simple-metric <simple-metric
v-for="metric in $options.simpleMetrics" v-for="metric in $options.simpleMetrics"
:current-request="currentRequest"
:key="metric" :key="metric"
:current-request="currentRequest"
:metric="metric" :metric="metric"
/> />
<div <div
......
...@@ -68,9 +68,9 @@ export default { ...@@ -68,9 +68,9 @@ export default {
class="stage-column-list"> class="stage-column-list">
<stage-column-component <stage-column-component
v-for="(stage, index) in graph" v-for="(stage, index) in graph"
:key="stage.name"
:title="capitalizeStageName(stage.name)" :title="capitalizeStageName(stage.name)"
:jobs="stage.groups" :jobs="stage.groups"
:key="stage.name"
:stage-connector-class="stageConnectorClass(index, stage)" :stage-connector-class="stageConnectorClass(index, stage)"
:is-first-column="isFirstColumn(index)" :is-first-column="isFirstColumn(index)"
@refreshPipelineGraph="refreshPipelineGraph" @refreshPipelineGraph="refreshPipelineGraph"
......
...@@ -98,8 +98,8 @@ export default { ...@@ -98,8 +98,8 @@ export default {
<template> <template>
<div class="ci-job-component"> <div class="ci-job-component">
<a <a
v-tooltip
v-if="status.has_details" v-if="status.has_details"
v-tooltip
:href="status.details_path" :href="status.details_path"
:title="tooltipText" :title="tooltipText"
:class="cssClassJobName" :class="cssClassJobName"
...@@ -115,8 +115,8 @@ export default { ...@@ -115,8 +115,8 @@ export default {
</a> </a>
<div <div
v-tooltip
v-else v-else
v-tooltip
:title="tooltipText" :title="tooltipText"
:class="cssClassJobName" :class="cssClassJobName"
class="js-job-component-tooltip non-details-job-component" class="js-job-component-tooltip non-details-job-component"
......
...@@ -62,9 +62,9 @@ export default { ...@@ -62,9 +62,9 @@ export default {
<ul> <ul>
<li <li
v-for="(job, index) in jobs" v-for="(job, index) in jobs"
:id="jobId(job)"
:key="job.id" :key="job.id"
:class="buildConnnectorClass(index)" :class="buildConnnectorClass(index)"
:id="jobId(job)"
class="build" class="build"
> >
......
...@@ -67,29 +67,29 @@ export default { ...@@ -67,29 +67,29 @@ export default {
</span> </span>
<div class="label-container"> <div class="label-container">
<span <span
v-tooltip
v-if="pipeline.flags.latest" v-if="pipeline.flags.latest"
v-tooltip
class="js-pipeline-url-latest badge badge-success" class="js-pipeline-url-latest badge badge-success"
title="Latest pipeline for this branch"> title="Latest pipeline for this branch">
latest latest
</span> </span>
<span <span
v-tooltip
v-if="pipeline.flags.yaml_errors" v-if="pipeline.flags.yaml_errors"
v-tooltip
:title="pipeline.yaml_errors" :title="pipeline.yaml_errors"
class="js-pipeline-url-yaml badge badge-danger"> class="js-pipeline-url-yaml badge badge-danger">
yaml invalid yaml invalid
</span> </span>
<span <span
v-tooltip
v-if="pipeline.flags.failure_reason" v-if="pipeline.flags.failure_reason"
v-tooltip
:title="pipeline.failure_reason" :title="pipeline.failure_reason"
class="js-pipeline-url-failure badge badge-danger"> class="js-pipeline-url-failure badge badge-danger">
error error
</span> </span>
<a <a
v-popover="popoverOptions"
v-if="pipeline.flags.auto_devops" v-if="pipeline.flags.auto_devops"
v-popover="popoverOptions"
tabindex="0" tabindex="0"
class="js-pipeline-url-autodevops badge badge-info autodevops-badge" class="js-pipeline-url-autodevops badge badge-info autodevops-badge"
role="button"> role="button">
......
...@@ -155,9 +155,9 @@ export default { ...@@ -155,9 +155,9 @@ export default {
<template> <template>
<div class="dropdown"> <div class="dropdown">
<button <button
v-tooltip
id="stageDropdown" id="stageDropdown"
ref="dropdown" ref="dropdown"
v-tooltip
:class="triggerButtonClass" :class="triggerButtonClass"
:title="stage.title" :title="stage.title"
class="mini-pipeline-graph-dropdown-toggle js-builds-dropdown-button" class="mini-pipeline-graph-dropdown-toggle js-builds-dropdown-button"
......
...@@ -88,8 +88,8 @@ ...@@ -88,8 +88,8 @@
<div class="controls d-none d-sm-block float-right"> <div class="controls d-none d-sm-block float-right">
<button <button
v-tooltip
v-if="repo.canDelete" v-if="repo.canDelete"
v-tooltip
:title="s__('ContainerRegistry|Remove repository')" :title="s__('ContainerRegistry|Remove repository')"
:aria-label="s__('ContainerRegistry|Remove repository')" :aria-label="s__('ContainerRegistry|Remove repository')"
type="button" type="button"
......
...@@ -118,8 +118,8 @@ ...@@ -118,8 +118,8 @@
<td class="content"> <td class="content">
<button <button
v-tooltip
v-if="item.canDelete" v-if="item.canDelete"
v-tooltip
:title="s__('ContainerRegistry|Remove tag')" :title="s__('ContainerRegistry|Remove tag')"
:aria-label="s__('ContainerRegistry|Remove tag')" :aria-label="s__('ContainerRegistry|Remove tag')"
type="button" type="button"
......
...@@ -92,16 +92,16 @@ ...@@ -92,16 +92,16 @@
v-for="(report, i) in reports" v-for="(report, i) in reports"
> >
<summary-row <summary-row
:key="`summary-row-${i}`"
:summary="reportText(report)" :summary="reportText(report)"
:status-icon="getReportIcon(report)" :status-icon="getReportIcon(report)"
:key="`summary-row-${i}`"
/> />
<issues-list <issues-list
v-if="shouldRenderIssuesList(report)" v-if="shouldRenderIssuesList(report)"
:key="`issues-list-${i}`"
:unresolved-issues="report.existing_failures" :unresolved-issues="report.existing_failures"
:new-issues="report.new_failures" :new-issues="report.new_failures"
:resolved-issues="report.resolved_failures" :resolved-issues="report.resolved_failures"
:key="`issues-list-${i}`"
:component="$options.componentNames.TestIssueBody" :component="$options.componentNames.TestIssueBody"
class="report-block-group-list" class="report-block-group-list"
/> />
......
...@@ -37,8 +37,8 @@ export default { ...@@ -37,8 +37,8 @@ export default {
<ul class="report-block-list"> <ul class="report-block-list">
<li <li
v-for="(issue, index) in issues" v-for="(issue, index) in issues"
:class="{ 'is-dismissed': issue.isDismissed }"
:key="index" :key="index"
:class="{ 'is-dismissed': issue.isDismissed }"
class="report-block-list-issue" class="report-block-list-issue"
> >
<issue-status-icon <issue-status-icon
...@@ -47,8 +47,8 @@ export default { ...@@ -47,8 +47,8 @@ export default {
/> />
<component <component
v-if="component"
:is="component" :is="component"
v-if="component"
:issue="issue" :issue="issue"
:status="issue.status || status" :status="issue.status || status"
:is-new="isNew" :is-new="isNew"
......
...@@ -19,19 +19,23 @@ export default { ...@@ -19,19 +19,23 @@ export default {
TimeTrackingHelpState, TimeTrackingHelpState,
}, },
props: { props: {
// eslint-disable-next-line vue/prop-name-casing
time_estimate: { time_estimate: {
type: Number, type: Number,
required: true, required: true,
}, },
// eslint-disable-next-line vue/prop-name-casing
time_spent: { time_spent: {
type: Number, type: Number,
required: true, required: true,
}, },
// eslint-disable-next-line vue/prop-name-casing
human_time_estimate: { human_time_estimate: {
type: String, type: String,
required: false, required: false,
default: '', default: '',
}, },
// eslint-disable-next-line vue/prop-name-casing
human_time_spent: { human_time_spent: {
type: String, type: String,
required: false, required: false,
......
...@@ -106,8 +106,8 @@ export default { ...@@ -106,8 +106,8 @@ export default {
</tooltip-on-truncate> </tooltip-on-truncate>
</template> </template>
<span <span
v-tooltip
v-if="hasDeploymentTime" v-if="hasDeploymentTime"
v-tooltip
:title="deployment.deployed_at_formatted" :title="deployment.deployed_at_formatted"
class="js-deploy-time" class="js-deploy-time"
> >
......
...@@ -114,8 +114,8 @@ ...@@ -114,8 +114,8 @@
:date-readable="mr.metrics.readableMergedAt" :date-readable="mr.metrics.readableMergedAt"
/> />
<a <a
v-tooltip
v-if="mr.canRevertInCurrentMR" v-if="mr.canRevertInCurrentMR"
v-tooltip
:title="revertTitle" :title="revertTitle"
class="btn btn-close btn-sm" class="btn btn-close btn-sm"
href="#modal-revert-commit" href="#modal-revert-commit"
...@@ -125,8 +125,8 @@ ...@@ -125,8 +125,8 @@
{{ revertLabel }} {{ revertLabel }}
</a> </a>
<a <a
v-tooltip
v-else-if="mr.revertInForkPath" v-else-if="mr.revertInForkPath"
v-tooltip
:href="mr.revertInForkPath" :href="mr.revertInForkPath"
:title="revertTitle" :title="revertTitle"
class="btn btn-close btn-sm" class="btn btn-close btn-sm"
...@@ -135,8 +135,8 @@ ...@@ -135,8 +135,8 @@
{{ revertLabel }} {{ revertLabel }}
</a> </a>
<a <a
v-tooltip
v-if="mr.canCherryPickInCurrentMR" v-if="mr.canCherryPickInCurrentMR"
v-tooltip
:title="cherryPickTitle" :title="cherryPickTitle"
class="btn btn-default btn-sm" class="btn btn-default btn-sm"
href="#modal-cherry-pick-commit" href="#modal-cherry-pick-commit"
...@@ -146,8 +146,8 @@ ...@@ -146,8 +146,8 @@
{{ cherryPickLabel }} {{ cherryPickLabel }}
</a> </a>
<a <a
v-tooltip
v-else-if="mr.cherryPickInForkPath" v-else-if="mr.cherryPickInForkPath"
v-tooltip
:href="mr.cherryPickInForkPath" :href="mr.cherryPickInForkPath"
:title="cherryPickTitle" :title="cherryPickTitle"
class="btn btn-default btn-sm" class="btn btn-default btn-sm"
......
...@@ -37,8 +37,8 @@ export default { ...@@ -37,8 +37,8 @@ export default {
<div class="accept-control inline"> <div class="accept-control inline">
<label class="merge-param-checkbox"> <label class="merge-param-checkbox">
<input <input
:disabled="isMergeButtonDisabled"
v-model="squashBeforeMerge" v-model="squashBeforeMerge"
:disabled="isMergeButtonDisabled"
type="checkbox" type="checkbox"
name="squash" name="squash"
class="qa-squash-checkbox" class="qa-squash-checkbox"
......
...@@ -291,8 +291,8 @@ export default { ...@@ -291,8 +291,8 @@ export default {
<template <template
v-for="(data, index) in graphData"> v-for="(data, index) in graphData">
<rect <rect
v-tooltip
:key="index" :key="index"
v-tooltip
:width="xScale.bandwidth()" :width="xScale.bandwidth()"
:x="xScale(data.name)" :x="xScale(data.name)"
:y="yScale(data.value)" :y="yScale(data.value)"
......
...@@ -135,8 +135,8 @@ export default { ...@@ -135,8 +135,8 @@ export default {
{{ file.name }} {{ file.name }}
</span> </span>
<component <component
v-if="extraComponent"
:is="extraComponent" :is="extraComponent"
v-if="extraComponent"
:file="file" :file="file"
:mouse-over="mouseOver" :mouse-over="mouseOver"
/> />
......
...@@ -126,18 +126,18 @@ export default { ...@@ -126,18 +126,18 @@ export default {
> >
<a <a
v-if="action.type === 'link'" v-if="action.type === 'link'"
:key="i"
:href="action.path" :href="action.path"
:class="action.cssClass" :class="action.cssClass"
:key="i"
> >
{{ action.label }} {{ action.label }}
</a> </a>
<a <a
v-else-if="action.type === 'ujs-link'" v-else-if="action.type === 'ujs-link'"
:key="i"
:href="action.path" :href="action.path"
:class="action.cssClass" :class="action.cssClass"
:key="i"
data-method="post" data-method="post"
rel="nofollow" rel="nofollow"
> >
...@@ -146,9 +146,9 @@ export default { ...@@ -146,9 +146,9 @@ export default {
<button <button
v-else-if="action.type === 'button'" v-else-if="action.type === 'button'"
:key="i"
:disabled="action.isLoading" :disabled="action.isLoading"
:class="action.cssClass" :class="action.cssClass"
:key="i"
type="button" type="button"
@click="onClickAction(action)" @click="onClickAction(action)"
> >
......
...@@ -99,8 +99,8 @@ export default { ...@@ -99,8 +99,8 @@ export default {
{{ __("Not available") }} {{ __("Not available") }}
</span> </span>
<span <span
v-tooltip
v-if="successPercent" v-if="successPercent"
v-tooltip
:title="successTooltip" :title="successTooltip"
:style="successBarStyle" :style="successBarStyle"
class="status-green" class="status-green"
...@@ -109,8 +109,8 @@ export default { ...@@ -109,8 +109,8 @@ export default {
{{ successPercent }}% {{ successPercent }}%
</span> </span>
<span <span
v-tooltip
v-if="neutralPercent" v-if="neutralPercent"
v-tooltip
:title="neutralTooltip" :title="neutralTooltip"
:style="neutralBarStyle" :style="neutralBarStyle"
class="status-neutral" class="status-neutral"
...@@ -119,8 +119,8 @@ export default { ...@@ -119,8 +119,8 @@ export default {
{{ neutralPercent }}% {{ neutralPercent }}%
</span> </span>
<span <span
v-tooltip
v-if="failurePercent" v-if="failurePercent"
v-tooltip
:title="failureTooltip" :title="failureTooltip"
:style="failureBarStyle" :style="failureBarStyle"
class="status-red" class="status-red"
......
...@@ -51,8 +51,8 @@ export default { ...@@ -51,8 +51,8 @@ export default {
<template> <template>
<span <span
v-tooltip
v-if="showTooltip" v-if="showTooltip"
v-tooltip
:title="title" :title="title"
:data-placement="placement" :data-placement="placement"
class="js-show-tooltip" class="js-show-tooltip"
......
...@@ -94,8 +94,8 @@ export default { ...@@ -94,8 +94,8 @@ export default {
:tooltip-text="avatarTooltipText" :tooltip-text="avatarTooltipText"
:tooltip-placement="tooltipPlacement" :tooltip-placement="tooltipPlacement"
/><span /><span
v-tooltip
v-if="shouldShowUsername" v-if="shouldShowUsername"
v-tooltip
:title="tooltipText" :title="tooltipText"
:tooltip-placement="tooltipPlacement" :tooltip-placement="tooltipPlacement"
>{{ username }}</span> >{{ username }}</span>
......
...@@ -35,3 +35,9 @@ rules: ...@@ -35,3 +35,9 @@ rules:
- error - error
- ignore: - ignore:
- 'fixtures/blob' - 'fixtures/blob'
# Temporarily disabled to facilitate an upgrade to eslint-plugin-jasmine
jasmine/new-line-before-expect: off
jasmine/new-line-between-declarations: off
jasmine/no-promise-without-done-fail: off
jasmine/prefer-jasmine-matcher: off
jasmine/prefer-toHaveBeenCalledWith: off
/* eslint-disable jasmine/no-unsafe-spy */
import CloseReopenReportToggle from '~/close_reopen_report_toggle'; import CloseReopenReportToggle from '~/close_reopen_report_toggle';
import DropLab from '~/droplab/drop_lab'; import DropLab from '~/droplab/drop_lab';
......
/* eslint-disable jasmine/no-unsafe-spy */
import Poll from '~/lib/utils/poll'; import Poll from '~/lib/utils/poll';
import { successCodes } from '~/lib/utils/http_status'; import { successCodes } from '~/lib/utils/http_status';
......
/* eslint-disable no-var, one-var, one-var-declaration-per-line, no-return-assign, vars-on-top, max-len */ /* eslint-disable no-var, one-var, one-var-declaration-per-line, no-return-assign, vars-on-top, jasmine/no-unsafe-spy, max-len */
import $ from 'jquery'; import $ from 'jquery';
import MockAdapter from 'axios-mock-adapter'; import MockAdapter from 'axios-mock-adapter';
......
This diff is collapsed.
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