Commit eaa0ad1f authored by Mark Florian's avatar Mark Florian

Enable vue/no-mutating-props rule

Existing violations of this rule have been specifically ignored, as
fixing each one requires non-trivial work to fix.

Addresses https://gitlab.com/gitlab-org/gitlab/-/issues/297222, part of
https://gitlab.com/groups/gitlab-org/-/epics/5168.
parent e35cc79a
...@@ -43,15 +43,6 @@ rules: ...@@ -43,15 +43,6 @@ rules:
promise/always-return: off promise/always-return: off
promise/no-callback-in-promise: off promise/no-callback-in-promise: off
"@gitlab/no-global-event-off": error "@gitlab/no-global-event-off": error
# BEGIN eslint-plugin-vue@7 overrides
# TODO: Remove these rules as part of
# https://gitlab.com/groups/gitlab-org/-/epics/5142. These are setting
# various vue lint rules as they were in eslint-plugin-vue@6, or disabling
# new ones, to ease migration to v7, so violations of each can be fixed
# separately.
vue/no-mutating-props: off
# END eslint-plugin-vue@7 overrides
overrides: overrides:
- files: - files:
- '**/spec/**/*' - '**/spec/**/*'
......
...@@ -46,6 +46,7 @@ export default { ...@@ -46,6 +46,7 @@ export default {
watch: { watch: {
filter: { filter: {
handler() { handler() {
// eslint-disable-next-line vue/no-mutating-props
this.list.page = 1; this.list.page = 1;
this.list.getIssues(true).catch(() => { this.list.getIssues(true).catch(() => {
// TODO: handle request error // TODO: handle request error
......
...@@ -63,6 +63,7 @@ export default { ...@@ -63,6 +63,7 @@ export default {
watch: { watch: {
filters: { filters: {
handler() { handler() {
// eslint-disable-next-line vue/no-mutating-props
this.list.loadingMore = false; this.list.loadingMore = false;
this.$refs.list.scrollTop = 0; this.$refs.list.scrollTop = 0;
}, },
...@@ -75,6 +76,7 @@ export default { ...@@ -75,6 +76,7 @@ export default {
this.list.issuesSize > this.list.issues.length && this.list.issuesSize > this.list.issues.length &&
this.list.isExpanded this.list.isExpanded
) { ) {
// eslint-disable-next-line vue/no-mutating-props
this.list.page += 1; this.list.page += 1;
this.list.getIssues(false).catch(() => { this.list.getIssues(false).catch(() => {
// TODO: handle request error // TODO: handle request error
...@@ -283,6 +285,7 @@ export default { ...@@ -283,6 +285,7 @@ export default {
* issue indexes are far apart, this logic should ever kick in. * issue indexes are far apart, this logic should ever kick in.
*/ */
setTimeout(() => { setTimeout(() => {
// eslint-disable-next-line vue/no-mutating-props
this.list.issues.splice(i, 1); this.list.issues.splice(i, 1);
}, 0); }, 0);
}); });
...@@ -386,10 +389,12 @@ export default { ...@@ -386,10 +389,12 @@ export default {
loadNextPage() { loadNextPage() {
const getIssues = this.list.nextPage(); const getIssues = this.list.nextPage();
const loadingDone = () => { const loadingDone = () => {
// eslint-disable-next-line vue/no-mutating-props
this.list.loadingMore = false; this.list.loadingMore = false;
}; };
if (getIssues) { if (getIssues) {
// eslint-disable-next-line vue/no-mutating-props
this.list.loadingMore = true; this.list.loadingMore = true;
getIssues.then(loadingDone).catch(loadingDone); getIssues.then(loadingDone).catch(loadingDone);
} }
......
...@@ -147,6 +147,7 @@ export default { ...@@ -147,6 +147,7 @@ export default {
eventHub.$emit(`toggle-issue-form-${this.list.id}`); eventHub.$emit(`toggle-issue-form-${this.list.id}`);
}, },
toggleExpanded() { toggleExpanded() {
// eslint-disable-next-line vue/no-mutating-props
this.list.collapsed = !this.list.collapsed; this.list.collapsed = !this.list.collapsed;
if (!this.isLoggedIn) { if (!this.isLoggedIn) {
......
...@@ -131,6 +131,7 @@ export default { ...@@ -131,6 +131,7 @@ export default {
eventHub.$emit(`toggle-issue-form-${this.list.id}`); eventHub.$emit(`toggle-issue-form-${this.list.id}`);
}, },
toggleExpanded() { toggleExpanded() {
// eslint-disable-next-line vue/no-mutating-props
this.list.isExpanded = !this.list.isExpanded; this.list.isExpanded = !this.list.isExpanded;
if (!this.isLoggedIn) { if (!this.isLoggedIn) {
......
...@@ -349,6 +349,7 @@ export default { ...@@ -349,6 +349,7 @@ export default {
{{ s__('ClusterIntegration|Issuer Email') }} {{ s__('ClusterIntegration|Issuer Email') }}
</label> </label>
<div class="input-group"> <div class="input-group">
<!-- eslint-disable vue/no-mutating-props -->
<input <input
id="cert-manager-issuer-email" id="cert-manager-issuer-email"
v-model="applications.cert_manager.email" v-model="applications.cert_manager.email"
...@@ -356,6 +357,7 @@ export default { ...@@ -356,6 +357,7 @@ export default {
type="text" type="text"
class="form-control js-email" class="form-control js-email"
/> />
<!-- eslint-enable vue/no-mutating-props -->
</div> </div>
<p class="form-text text-muted"> <p class="form-text text-muted">
{{ {{
...@@ -522,6 +524,7 @@ export default { ...@@ -522,6 +524,7 @@ export default {
<label for="jupyter-hostname">{{ s__('ClusterIntegration|Jupyter Hostname') }}</label> <label for="jupyter-hostname">{{ s__('ClusterIntegration|Jupyter Hostname') }}</label>
<div class="input-group"> <div class="input-group">
<!-- eslint-disable vue/no-mutating-props -->
<input <input
id="jupyter-hostname" id="jupyter-hostname"
v-model="applications.jupyter.hostname" v-model="applications.jupyter.hostname"
...@@ -529,6 +532,7 @@ export default { ...@@ -529,6 +532,7 @@ export default {
type="text" type="text"
class="form-control js-hostname" class="form-control js-hostname"
/> />
<!-- eslint-enable vue/no-mutating-props -->
<span class="input-group-append"> <span class="input-group-append">
<clipboard-button <clipboard-button
:text="jupyterHostname" :text="jupyterHostname"
......
...@@ -130,9 +130,11 @@ export default { ...@@ -130,9 +130,11 @@ export default {
}, },
resetStatus() { resetStatus() {
if (this.initialMode !== null) { if (this.initialMode !== null) {
// eslint-disable-next-line vue/no-mutating-props
this.ingress.modsecurity_mode = this.initialMode; this.ingress.modsecurity_mode = this.initialMode;
} }
if (this.initialValue !== null) { if (this.initialValue !== null) {
// eslint-disable-next-line vue/no-mutating-props
this.ingress.modsecurity_enabled = this.initialValue; this.ingress.modsecurity_enabled = this.initialValue;
} }
this.initialValue = null; this.initialValue = null;
......
...@@ -78,6 +78,7 @@ export default { ...@@ -78,6 +78,7 @@ export default {
this.visitPath(this.path); this.visitPath(this.path);
}, },
visitPath(path) { visitPath(path) {
// eslint-disable-next-line vue/no-mutating-props
this.manager.iframe.src = `${this.manager.bundlerURL}${path}`; this.manager.iframe.src = `${this.manager.bundlerURL}${path}`;
}, },
}, },
......
...@@ -154,6 +154,7 @@ export default { ...@@ -154,6 +154,7 @@ export default {
}" }"
class="md" class="md"
></div> ></div>
<!-- eslint-disable vue/no-mutating-props -->
<textarea <textarea
v-if="descriptionText" v-if="descriptionText"
ref="textarea" ref="textarea"
...@@ -163,6 +164,7 @@ export default { ...@@ -163,6 +164,7 @@ export default {
dir="auto" dir="auto"
> >
</textarea> </textarea>
<!-- eslint-enable vue/no-mutating-props -->
<recaptcha-modal v-show="showRecaptcha" :html="recaptchaHTML" @close="closeRecaptcha" /> <recaptcha-modal v-show="showRecaptcha" :html="recaptchaHTML" @close="closeRecaptcha" />
</div> </div>
......
...@@ -49,6 +49,7 @@ export default { ...@@ -49,6 +49,7 @@ export default {
:textarea-value="formState.description" :textarea-value="formState.description"
> >
<template #textarea> <template #textarea>
<!-- eslint-disable vue/no-mutating-props -->
<textarea <textarea
id="issue-description" id="issue-description"
ref="textarea" ref="textarea"
...@@ -62,6 +63,7 @@ export default { ...@@ -62,6 +63,7 @@ export default {
@keydown.ctrl.enter="updateIssuable" @keydown.ctrl.enter="updateIssuable"
> >
</textarea> </textarea>
<!-- eslint-enable vue/no-mutating-props -->
</template> </template>
</markdown-field> </markdown-field>
</div> </div>
......
...@@ -35,6 +35,7 @@ export default { ...@@ -35,6 +35,7 @@ export default {
// Create the editor for the template // Create the editor for the template
const editor = document.querySelector('.detail-page-description .note-textarea') || {}; const editor = document.querySelector('.detail-page-description .note-textarea') || {};
editor.setValue = (val) => { editor.setValue = (val) => {
// eslint-disable-next-line vue/no-mutating-props
this.formState.description = val; this.formState.description = val;
}; };
editor.getValue = () => this.formState.description; editor.getValue = () => this.formState.description;
......
...@@ -15,6 +15,7 @@ export default { ...@@ -15,6 +15,7 @@ export default {
<template> <template>
<fieldset> <fieldset>
<label class="sr-only" for="issuable-title">{{ __('Title') }}</label> <label class="sr-only" for="issuable-title">{{ __('Title') }}</label>
<!-- eslint-disable vue/no-mutating-props -->
<input <input
id="issuable-title" id="issuable-title"
ref="input" ref="input"
...@@ -27,5 +28,6 @@ export default { ...@@ -27,5 +28,6 @@ export default {
@keydown.meta.enter="updateIssuable" @keydown.meta.enter="updateIssuable"
@keydown.ctrl.enter="updateIssuable" @keydown.ctrl.enter="updateIssuable"
/> />
<!-- eslint-enable vue/no-mutating-props -->
</fieldset> </fieldset>
</template> </template>
...@@ -90,9 +90,11 @@ import { __ } from '~/locale'; ...@@ -90,9 +90,11 @@ import { __ } from '~/locale';
this.saved = true; this.saved = true;
// This probably be better placed in the data provider // This probably be better placed in the data provider
/* eslint-disable vue/no-mutating-props */
this.file.content = this.editor.getValue(); this.file.content = this.editor.getValue();
this.file.resolveEditChanged = this.file.content !== this.originalContent; this.file.resolveEditChanged = this.file.content !== this.originalContent;
this.file.promptDiscardConfirmation = false; this.file.promptDiscardConfirmation = false;
/* eslint-enable vue/no-mutating-props */
}, },
resetEditorContent() { resetEditorContent() {
if (this.fileLoaded) { if (this.fileLoaded) {
......
...@@ -156,6 +156,7 @@ export default { ...@@ -156,6 +156,7 @@ export default {
@handleFormUpdate="handleFormUpdate" @handleFormUpdate="handleFormUpdate"
@cancelForm="formCancelHandler" @cancelForm="formCancelHandler"
/> />
<!-- eslint-disable vue/no-mutating-props -->
<textarea <textarea
v-if="canEdit" v-if="canEdit"
v-model="note.note" v-model="note.note"
...@@ -163,6 +164,7 @@ export default { ...@@ -163,6 +164,7 @@ export default {
class="hidden js-task-list-field" class="hidden js-task-list-field"
dir="auto" dir="auto"
></textarea> ></textarea>
<!-- eslint-enable vue/no-mutating-props -->
<note-edited-text <note-edited-text
v-if="note.last_edited_at" v-if="note.last_edited_at"
:edited-at="note.last_edited_at" :edited-at="note.last_edited_at"
......
...@@ -289,6 +289,7 @@ export default { ...@@ -289,6 +289,7 @@ export default {
}; };
this.isRequesting = true; this.isRequesting = true;
this.oldContent = this.note.note_html; this.oldContent = this.note.note_html;
// eslint-disable-next-line vue/no-mutating-props
this.note.note_html = escape(noteText); this.note.note_html = escape(noteText);
this.updateNote(data) this.updateNote(data)
...@@ -321,6 +322,7 @@ export default { ...@@ -321,6 +322,7 @@ export default {
} }
this.$refs.noteBody.resetAutoSave(); this.$refs.noteBody.resetAutoSave();
if (this.oldContent) { if (this.oldContent) {
// eslint-disable-next-line vue/no-mutating-props
this.note.note_html = this.oldContent; this.note.note_html = this.oldContent;
this.oldContent = null; this.oldContent = null;
} }
...@@ -330,6 +332,7 @@ export default { ...@@ -330,6 +332,7 @@ export default {
recoverNoteContent(noteText) { recoverNoteContent(noteText) {
// we need to do this to prevent noteForm inconsistent content warning // we need to do this to prevent noteForm inconsistent content warning
// this is something we intentionally do so we need to recover the content // this is something we intentionally do so we need to recover the content
// eslint-disable-next-line vue/no-mutating-props
this.note.note = noteText; this.note.note = noteText;
const { noteBody } = this.$refs; const { noteBody } = this.$refs;
if (noteBody) { if (noteBody) {
......
...@@ -48,11 +48,11 @@ export default { ...@@ -48,11 +48,11 @@ export default {
/* /*
In issue list, "time-tracking-collapsed-state" is always rendered even if the sidebar isn't collapsed. In issue list, "time-tracking-collapsed-state" is always rendered even if the sidebar isn't collapsed.
The actual hiding is controlled with css classes: The actual hiding is controlled with css classes:
Hide "time-tracking-collapsed-state" Hide "time-tracking-collapsed-state"
if .right-sidebar .right-sidebar-collapsed .sidebar-collapsed-icon if .right-sidebar .right-sidebar-collapsed .sidebar-collapsed-icon
Show "time-tracking-collapsed-state" Show "time-tracking-collapsed-state"
if .right-sidebar .right-sidebar-expanded .sidebar-collapsed-icon if .right-sidebar .right-sidebar-expanded .sidebar-collapsed-icon
In Swimlanes sidebar, we do not use collapsed state at all. In Swimlanes sidebar, we do not use collapsed state at all.
*/ */
showCollapsed: { showCollapsed: {
...@@ -99,10 +99,12 @@ export default { ...@@ -99,10 +99,12 @@ export default {
update(data) { update(data) {
const { timeEstimate, timeSpent, humanTimeEstimate, humanTimeSpent } = data; const { timeEstimate, timeSpent, humanTimeEstimate, humanTimeSpent } = data;
/* eslint-disable vue/no-mutating-props */
this.timeEstimate = timeEstimate; this.timeEstimate = timeEstimate;
this.timeSpent = timeSpent; this.timeSpent = timeSpent;
this.humanTimeEstimate = humanTimeEstimate; this.humanTimeEstimate = humanTimeEstimate;
this.humanTimeSpent = humanTimeSpent; this.humanTimeSpent = humanTimeSpent;
/* eslint-enable vue/no-mutating-props */
}, },
}, },
}; };
......
...@@ -31,8 +31,10 @@ export default { ...@@ -31,8 +31,10 @@ export default {
}, },
result() { result() {
if (this.activeViewerType === RICH_BLOB_VIEWER) { if (this.activeViewerType === RICH_BLOB_VIEWER) {
// eslint-disable-next-line vue/no-mutating-props
this.blob.richViewer.renderError = null; this.blob.richViewer.renderError = null;
} else { } else {
// eslint-disable-next-line vue/no-mutating-props
this.blob.simpleViewer.renderError = null; this.blob.simpleViewer.renderError = null;
} }
}, },
......
...@@ -97,6 +97,7 @@ export default { ...@@ -97,6 +97,7 @@ export default {
:invalid-feedback="fieldErrorMessage('name')" :invalid-feedback="fieldErrorMessage('name')"
:data-testid="`custom-stage-name-${index}`" :data-testid="`custom-stage-name-${index}`"
> >
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-input <gl-form-input
v-model.trim="stage.name" v-model.trim="stage.name"
:name="`custom-stage-name-${index}`" :name="`custom-stage-name-${index}`"
...@@ -104,6 +105,7 @@ export default { ...@@ -104,6 +105,7 @@ export default {
required required
@input="$emit('input', { field: 'name', value: $event })" @input="$emit('input', { field: 'name', value: $event })"
/> />
<!-- eslint-enable vue/no-mutating-props -->
</gl-form-group> </gl-form-group>
<stage-field-actions <stage-field-actions
v-if="hasMultipleStages" v-if="hasMultipleStages"
......
...@@ -69,6 +69,7 @@ export default { ...@@ -69,6 +69,7 @@ export default {
:state="isValid('name')" :state="isValid('name')"
:invalid-feedback="renderError('name')" :invalid-feedback="renderError('name')"
> >
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-input <gl-form-input
v-model.trim="stage.name" v-model.trim="stage.name"
:name="`create-value-stream-stage-${index}`" :name="`create-value-stream-stage-${index}`"
...@@ -76,6 +77,7 @@ export default { ...@@ -76,6 +77,7 @@ export default {
required required
@input="$emit('input', $event)" @input="$emit('input', $event)"
/> />
<!-- eslint-enable vue/no-mutating-props -->
</gl-form-group> </gl-form-group>
<stage-field-actions <stage-field-actions
:index="index" :index="index"
......
...@@ -37,7 +37,9 @@ export default { ...@@ -37,7 +37,9 @@ export default {
}, },
methods: { methods: {
setDateRange({ startDate, endDate }) { setDateRange({ startDate, endDate }) {
// eslint-disable-next-line vue/no-mutating-props
this.startDate = startDate; this.startDate = startDate;
// eslint-disable-next-line vue/no-mutating-props
this.endDate = endDate; this.endDate = endDate;
}, },
}, },
......
...@@ -89,7 +89,9 @@ export default { ...@@ -89,7 +89,9 @@ export default {
id: undefined, id: undefined,
}; };
} }
// eslint-disable-next-line vue/no-mutating-props
this.board.assignee_id = assignee.id; this.board.assignee_id = assignee.id;
// eslint-disable-next-line vue/no-mutating-props
this.board.assignee = assignee; this.board.assignee = assignee;
}, },
}, },
......
...@@ -74,8 +74,10 @@ export default { ...@@ -74,8 +74,10 @@ export default {
methods: { methods: {
handleLabelClick(label) { handleLabelClick(label) {
if (label.isAny) { if (label.isAny) {
// eslint-disable-next-line vue/no-mutating-props
this.board.labels = []; this.board.labels = [];
} else if (!this.board.labels.find((l) => l.id === label.id)) { } else if (!this.board.labels.find((l) => l.id === label.id)) {
// eslint-disable-next-line vue/no-mutating-props
this.board.labels.push( this.board.labels.push(
new ListLabel({ new ListLabel({
id: label.id, id: label.id,
...@@ -87,6 +89,7 @@ export default { ...@@ -87,6 +89,7 @@ export default {
} else { } else {
let { labels } = this.board; let { labels } = this.board;
labels = labels.filter((selected) => selected.id !== label.id); labels = labels.filter((selected) => selected.id !== label.id);
// eslint-disable-next-line vue/no-mutating-props
this.board.labels = labels; this.board.labels = labels;
} }
}, },
...@@ -145,12 +148,14 @@ export default { ...@@ -145,12 +148,14 @@ export default {
wrapper-class="assignee" wrapper-class="assignee"
/> />
<!-- eslint-disable vue/no-mutating-props -->
<board-weight-select <board-weight-select
v-model="board.weight" v-model="board.weight"
:board="board" :board="board"
:weights="weights" :weights="weights"
:can-edit="canAdminBoard" :can-edit="canAdminBoard"
/> />
<!-- eslint-enable vue/no-mutating-props -->
</div> </div>
</div> </div>
</template> </template>
...@@ -65,7 +65,9 @@ export default { ...@@ -65,7 +65,9 @@ export default {
} else if (milestone.title === NO_MILESTONE) { } else if (milestone.title === NO_MILESTONE) {
id = 0; id = 0;
} }
// eslint-disable-next-line vue/no-mutating-props
this.board.milestone_id = id; this.board.milestone_id = id;
// eslint-disable-next-line vue/no-mutating-props
this.board.milestone = { this.board.milestone = {
...milestone, ...milestone,
id, id,
......
...@@ -50,6 +50,7 @@ export default { ...@@ -50,6 +50,7 @@ export default {
this.$refs.dropdown.$children[0].show(); this.$refs.dropdown.$children[0].show();
}, },
selectWeight(weight) { selectWeight(weight) {
// eslint-disable-next-line vue/no-mutating-props
this.board.weight = this.weightInt(weight); this.board.weight = this.weightInt(weight);
this.dropdownHidden = true; this.dropdownHidden = true;
}, },
......
...@@ -105,6 +105,7 @@ export default { ...@@ -105,6 +105,7 @@ export default {
:state="Boolean(formErrors[formGroup.key])" :state="Boolean(formErrors[formGroup.key])"
:invalid-feedback="formErrors[formGroup.key]" :invalid-feedback="formErrors[formGroup.key]"
> >
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-input <gl-form-input
:id="formGroup.id" :id="formGroup.id"
v-model="nodeData[formGroup.key]" v-model="nodeData[formGroup.key]"
...@@ -113,6 +114,7 @@ export default { ...@@ -113,6 +114,7 @@ export default {
type="number" type="number"
@update="checkCapacity(formGroup)" @update="checkCapacity(formGroup)"
/> />
<!-- eslint-enable vue/no-mutating-props -->
</gl-form-group> </gl-form-group>
</div> </div>
</template> </template>
...@@ -72,6 +72,7 @@ export default { ...@@ -72,6 +72,7 @@ export default {
:class="{ 'is-invalid': Boolean(formErrors.name) }" :class="{ 'is-invalid': Boolean(formErrors.name) }"
class="gl-display-flex gl-align-items-center" class="gl-display-flex gl-align-items-center"
> >
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-input <gl-form-input
id="node-name-field" id="node-name-field"
v-model="nodeData.name" v-model="nodeData.name"
...@@ -81,6 +82,7 @@ export default { ...@@ -81,6 +82,7 @@ export default {
type="text" type="text"
@update="checkName" @update="checkName"
/> />
<!-- eslint-enable vue/no-mutating-props -->
<span class="gl-text-gray-500 m-n5 gl-z-index-2">{{ 255 - nodeData.name.length }}</span> <span class="gl-text-gray-500 m-n5 gl-z-index-2">{{ 255 - nodeData.name.length }}</span>
</div> </div>
</gl-form-group> </gl-form-group>
...@@ -109,6 +111,7 @@ export default { ...@@ -109,6 +111,7 @@ export default {
:class="{ 'is-invalid': Boolean(formErrors.url) }" :class="{ 'is-invalid': Boolean(formErrors.url) }"
class="gl-display-flex gl-align-items-center" class="gl-display-flex gl-align-items-center"
> >
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-input <gl-form-input
id="node-url-field" id="node-url-field"
v-model="nodeData.url" v-model="nodeData.url"
...@@ -118,6 +121,7 @@ export default { ...@@ -118,6 +121,7 @@ export default {
type="text" type="text"
@update="checkUrl" @update="checkUrl"
/> />
<!-- eslint-enable vue/no-mutating-props -->
<span class="gl-text-gray-500 m-n5 gl-z-index-2">{{ 255 - nodeData.url.length }}</span> <span class="gl-text-gray-500 m-n5 gl-z-index-2">{{ 255 - nodeData.url.length }}</span>
</div> </div>
</gl-form-group> </gl-form-group>
...@@ -149,12 +153,14 @@ export default { ...@@ -149,12 +153,14 @@ export default {
</gl-sprintf> </gl-sprintf>
</template> </template>
<div class="gl-display-flex gl-align-items-center"> <div class="gl-display-flex gl-align-items-center">
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-input <gl-form-input
id="node-internal-url-field" id="node-internal-url-field"
v-model="nodeData.internalUrl" v-model="nodeData.internalUrl"
class="gl-pr-8!" class="gl-pr-8!"
type="text" type="text"
/> />
<!-- eslint-enable vue/no-mutating-props -->
<span class="gl-text-gray-500 m-n5 gl-z-index-2">{{ <span class="gl-text-gray-500 m-n5 gl-z-index-2">{{
255 - nodeData.internalUrl.length 255 - nodeData.internalUrl.length
}}</span> }}</span>
......
...@@ -67,6 +67,7 @@ export default { ...@@ -67,6 +67,7 @@ export default {
label-for="node-selective-synchronization-field" label-for="node-selective-synchronization-field"
:description="__('Choose specific groups or storage shards')" :description="__('Choose specific groups or storage shards')"
> >
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-select <gl-form-select
id="node-selective-synchronization-field" id="node-selective-synchronization-field"
v-model="nodeData.selectiveSyncType" v-model="nodeData.selectiveSyncType"
...@@ -75,6 +76,7 @@ export default { ...@@ -75,6 +76,7 @@ export default {
text-field="label" text-field="label"
class="col-sm-3" class="col-sm-3"
/> />
<!-- eslint-enable vue/no-mutating-props -->
</gl-form-group> </gl-form-group>
<gl-form-group <gl-form-group
v-if="selectiveSyncNamespaces" v-if="selectiveSyncNamespaces"
...@@ -120,9 +122,11 @@ export default { ...@@ -120,9 +122,11 @@ export default {
</template> </template>
</gl-sprintf> </gl-sprintf>
</template> </template>
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-checkbox id="node-object-storage-field" v-model="nodeData.syncObjectStorage">{{ <gl-form-checkbox id="node-object-storage-field" v-model="nodeData.syncObjectStorage">{{
__('Allow this secondary node to replicate content on Object Storage') __('Allow this secondary node to replicate content on Object Storage')
}}</gl-form-checkbox> }}</gl-form-checkbox>
<!-- eslint-enable vue/no-mutating-props -->
</gl-form-group> </gl-form-group>
</div> </div>
</template> </template>
...@@ -31,6 +31,8 @@ export default { ...@@ -31,6 +31,8 @@ export default {
}, },
methods: { methods: {
handleColumnClick(columnName) { handleColumnClick(columnName) {
// This is probably a false positive.
// eslint-disable-next-line vue/no-mutating-props
this.store.sortMembers(columnName); this.store.sortMembers(columnName);
}, },
}, },
......
...@@ -115,6 +115,7 @@ export default { ...@@ -115,6 +115,7 @@ export default {
if (this.epic.newEpic) { if (this.epic.newEpic) {
this.$nextTick(() => { this.$nextTick(() => {
delay(() => { delay(() => {
// eslint-disable-next-line vue/no-mutating-props
this.epic.newEpic = false; this.epic.newEpic = false;
}, EPIC_HIGHLIGHT_REMOVE_AFTER); }, EPIC_HIGHLIGHT_REMOVE_AFTER);
}); });
...@@ -142,7 +143,7 @@ export default { ...@@ -142,7 +143,7 @@ export default {
class="epic-timeline-cell" class="epic-timeline-cell"
data-qa-selector="epic_timeline_cell" data-qa-selector="epic_timeline_cell"
> >
<!-- <!--
CurrentDayIndicator internally checks if a given timeframeItem is for today. CurrentDayIndicator internally checks if a given timeframeItem is for today.
However, we are doing a duplicate check (index === todaysIndex) here - However, we are doing a duplicate check (index === todaysIndex) here -
so that the the indicator is rendered once. so that the the indicator is rendered once.
......
...@@ -83,6 +83,7 @@ export default { ...@@ -83,6 +83,7 @@ export default {
}, },
set(value) { set(value) {
const { field } = this.currentRuleComponent; const { field } = this.currentRuleComponent;
// eslint-disable-next-line vue/no-mutating-props
this.rule[field] = value; this.rule[field] = value;
}, },
}, },
...@@ -158,12 +159,14 @@ export default { ...@@ -158,12 +159,14 @@ export default {
</template> </template>
<template #ruleDirection> <template #ruleDirection>
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-select <gl-form-select
id="direction" id="direction"
v-model="rule.direction" v-model="rule.direction"
class="gl-mr-4 gl-mb-5" class="gl-mr-4 gl-mb-5"
:options="$options.trafficDirections" :options="$options.trafficDirections"
/> />
<!-- eslint-enable vue/no-mutating-props -->
</template> </template>
<template #ruleSelector> <template #ruleSelector>
...@@ -212,6 +215,7 @@ export default { ...@@ -212,6 +215,7 @@ export default {
</template> </template>
<template #ports> <template #ports>
<!-- eslint-disable vue/no-mutating-props -->
<gl-form-select <gl-form-select
id="portMatch" id="portMatch"
v-model="rule.portMatchMode" v-model="rule.portMatchMode"
...@@ -228,6 +232,7 @@ export default { ...@@ -228,6 +232,7 @@ export default {
placeholder="80/tcp" placeholder="80/tcp"
/> />
<!-- eslint-enable @gitlab/vue-require-i18n-attribute-strings --> <!-- eslint-enable @gitlab/vue-require-i18n-attribute-strings -->
<!-- eslint-enable vue/no-mutating-props -->
</template> </template>
</gl-sprintf> </gl-sprintf>
</gl-form> </gl-form>
......
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