Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
fb553bbc18
commit
2c49951e8c
174 changed files with 7122 additions and 415 deletions
|
@ -36,7 +36,7 @@ rules:
|
|||
# Disabled for now, to make the plugin-vue 4.5 -> 5.0 update smoother
|
||||
vue/no-confusing-v-for-v-if: error
|
||||
vue/no-use-v-if-with-v-for: off
|
||||
vue/no-v-html: off
|
||||
vue/no-v-html: error
|
||||
vue/use-v-on-exact: off
|
||||
# all offenses of no-jquery/no-animate-toggle are false positives ( $toast.show() )
|
||||
no-jquery/no-animate-toggle: off
|
||||
|
|
|
@ -7,7 +7,7 @@ scss_files:
|
|||
|
||||
exclude:
|
||||
- 'app/assets/stylesheets/pages/emojis.scss'
|
||||
- 'app/assets/stylesheets/startup/startup-general.scss'
|
||||
- 'app/assets/stylesheets/startup/startup-*.scss'
|
||||
|
||||
linters:
|
||||
# Reports when you use improper spacing around ! (the "bang") in !default,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import * as Sentry from '@sentry/browser';
|
||||
import {
|
||||
GlAlert,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import {
|
||||
GlLoadingIcon,
|
||||
GlTable,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import NoteHeader from '~/notes/components/note_header.vue';
|
||||
import { spriteIcon } from '~/lib/utils/common_utils';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { escape, debounce } from 'lodash';
|
||||
import { mapActions, mapState } from 'vuex';
|
||||
import { GlLoadingIcon, GlFormInput, GlFormGroup } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions, mapGetters, mapState } from 'vuex';
|
||||
import { GlButton } from '@gitlab/ui';
|
||||
import NoteableNote from '~/notes/components/noteable_note.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions, mapState, mapGetters } from 'vuex';
|
||||
import { GlModal, GlModalDirective, GlButton } from '@gitlab/ui';
|
||||
import { sprintf, s__ } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlPopover, GlSprintf, GlButton } from '@gitlab/ui';
|
||||
import { parseBoolean, scrollToElement, setCookie, getCookie } from '~/lib/utils/common_utils';
|
||||
import { s__ } from '~/locale';
|
||||
|
|
|
@ -1,9 +1,6 @@
|
|||
import Editor from '~/editor/editor_lite';
|
||||
|
||||
export function initEditorLite({ el, ...args }) {
|
||||
if (!el) {
|
||||
throw new Error(`"el" parameter is required to initialize Editor`);
|
||||
}
|
||||
const editor = new Editor({
|
||||
scrollbar: {
|
||||
alwaysConsumeMouseWheel: false,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { __, sprintf } from '~/locale';
|
||||
import ModalStore from '../../stores/modal_store';
|
||||
import modalMixin from '../../mixins/modal_mixins';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { escape } from 'lodash';
|
||||
import { GlModal, GlButton, GlDeprecatedButton, GlFormInput, GlSprintf } from '@gitlab/ui';
|
||||
import SplitButton from '~/vue_shared/components/split_button.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlModal } from '@gitlab/ui';
|
||||
import trackUninstallButtonClickMixin from 'ee_else_ce/clusters/mixins/track_uninstall_button_click';
|
||||
import { sprintf, s__ } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlModal } from '@gitlab/ui';
|
||||
import { sprintf, s__ } from '~/locale';
|
||||
import { ELASTIC_STACK } from '../constants';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { createNamespacedHelpers, mapState, mapActions, mapGetters } from 'vuex';
|
||||
import { escape } from 'lodash';
|
||||
import { GlFormInput, GlFormCheckbox } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlFormInput, GlButton } from '@gitlab/ui';
|
||||
import { escape } from 'lodash';
|
||||
import { mapState, mapActions } from 'vuex';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import iconCycleAnalyticsSplash from 'icons/_icon_cycle_analytics_splash.svg';
|
||||
import { GlIcon } from '@gitlab/ui';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlIcon } from '@gitlab/ui';
|
||||
import userAvatarImage from '../../vue_shared/components/user_avatar/user_avatar_image.vue';
|
||||
import iconBranch from '../svg/icon_branch.svg';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlIcon } from '@gitlab/ui';
|
||||
import iconBuildStatus from '../svg/icon_build_status.svg';
|
||||
import iconBranch from '../svg/icon_branch.svg';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { ApolloMutation } from 'vue-apollo';
|
||||
import { GlTooltipDirective, GlIcon } from '@gitlab/ui';
|
||||
import updateNoteMutation from '../../graphql/mutations/update_note.mutation.graphql';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { ApolloMutation } from 'vue-apollo';
|
||||
import { GlTooltipDirective, GlIcon } from '@gitlab/ui';
|
||||
import updateNoteMutation from '../../graphql/mutations/update_note.mutation.graphql';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions } from 'vuex';
|
||||
import { GlButtonGroup, GlButton, GlIcon, GlTooltipDirective } from '@gitlab/ui';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions, mapGetters, mapState } from 'vuex';
|
||||
import { escape } from 'lodash';
|
||||
import { GlLoadingIcon } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { escape } from 'lodash';
|
||||
import { mapActions, mapGetters } from 'vuex';
|
||||
import { GlDeprecatedButton, GlTooltipDirective, GlLoadingIcon, GlIcon } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions, mapGetters, mapState } from 'vuex';
|
||||
import { GlTooltipDirective } from '@gitlab/ui';
|
||||
import DiffTableCell from './diff_table_cell.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapGetters } from 'vuex';
|
||||
import { escape } from 'lodash';
|
||||
import { GlButton } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions, mapGetters, mapState } from 'vuex';
|
||||
import $ from 'jquery';
|
||||
import { GlTooltipDirective } from '@gitlab/ui';
|
||||
|
|
7
app/assets/javascripts/editor/constants.js
Normal file
7
app/assets/javascripts/editor/constants.js
Normal file
|
@ -0,0 +1,7 @@
|
|||
import { __ } from '~/locale';
|
||||
|
||||
export const EDITOR_LITE_INSTANCE_ERROR_NO_EL = __(
|
||||
'"el" parameter is required for createInstance()',
|
||||
);
|
||||
|
||||
export const URI_PREFIX = 'gitlab';
|
|
@ -5,13 +5,14 @@ import { defaultEditorOptions } from '~/ide/lib/editor_options';
|
|||
import { registerLanguages } from '~/ide/utils';
|
||||
import { joinPaths } from '~/lib/utils/url_utility';
|
||||
import { clearDomElement } from './utils';
|
||||
import { EDITOR_LITE_INSTANCE_ERROR_NO_EL, URI_PREFIX } from './constants';
|
||||
|
||||
export default class Editor {
|
||||
constructor(options = {}) {
|
||||
this.editorEl = null;
|
||||
this.blobContent = '';
|
||||
this.blobPath = '';
|
||||
this.instance = null;
|
||||
this.instances = [];
|
||||
this.model = null;
|
||||
this.options = {
|
||||
extraEditorClassName: 'gl-editor-lite',
|
||||
|
@ -40,31 +41,51 @@ export default class Editor {
|
|||
* @param {string} options.blobContent The content to initialize the monacoEditor.
|
||||
* @param {string} options.blobGlobalId This is used to help globally identify monaco instances that are created with the same blobPath.
|
||||
*/
|
||||
createInstance({ el = undefined, blobPath = '', blobContent = '', blobGlobalId = '' } = {}) {
|
||||
if (!el) return;
|
||||
createInstance({
|
||||
el = undefined,
|
||||
blobPath = '',
|
||||
blobContent = '',
|
||||
blobGlobalId = '',
|
||||
...instanceOptions
|
||||
} = {}) {
|
||||
if (!el) {
|
||||
throw new Error(EDITOR_LITE_INSTANCE_ERROR_NO_EL);
|
||||
}
|
||||
this.editorEl = el;
|
||||
this.blobContent = blobContent;
|
||||
this.blobPath = blobPath;
|
||||
|
||||
clearDomElement(this.editorEl);
|
||||
|
||||
const uriFilePath = joinPaths('gitlab', blobGlobalId, blobPath);
|
||||
const uriFilePath = joinPaths(URI_PREFIX, blobGlobalId, blobPath);
|
||||
|
||||
this.model = monacoEditor.createModel(this.blobContent, undefined, Uri.file(uriFilePath));
|
||||
const model = monacoEditor.createModel(this.blobContent, undefined, Uri.file(uriFilePath));
|
||||
|
||||
monacoEditor.onDidCreateEditor(this.renderEditor.bind(this));
|
||||
|
||||
this.instance = monacoEditor.create(this.editorEl, this.options);
|
||||
this.instance.setModel(this.model);
|
||||
const instance = monacoEditor.create(this.editorEl, {
|
||||
...this.options,
|
||||
...instanceOptions,
|
||||
});
|
||||
instance.setModel(model);
|
||||
instance.onDidDispose(() => {
|
||||
const index = this.instances.findIndex(inst => inst === instance);
|
||||
this.instances.splice(index, 1);
|
||||
model.dispose();
|
||||
});
|
||||
|
||||
// Reference to the model on the editor level will go away in
|
||||
// https://gitlab.com/gitlab-org/gitlab/-/issues/241023
|
||||
// After that, the references to the model will be routed through
|
||||
// instance exclusively
|
||||
this.model = model;
|
||||
|
||||
this.instances.push(instance);
|
||||
return instance;
|
||||
}
|
||||
|
||||
dispose() {
|
||||
if (this.model) {
|
||||
this.model.dispose();
|
||||
this.model = null;
|
||||
}
|
||||
|
||||
return this.instance && this.instance.dispose();
|
||||
this.instances.forEach(instance => instance.dispose());
|
||||
}
|
||||
|
||||
renderEditor() {
|
||||
|
@ -86,28 +107,52 @@ export default class Editor {
|
|||
monacoEditor.setModelLanguage(this.model, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated do not use .getValue() directly on the editor.
|
||||
* This proxy-method will be removed in https://gitlab.com/gitlab-org/gitlab/-/issues/241025
|
||||
* Rather use it on the exact instance
|
||||
*/
|
||||
getValue() {
|
||||
return this.instance.getValue();
|
||||
return this.instances[0].getValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated do not use .setValue() directly on the editor.
|
||||
* This proxy-method will be removed in https://gitlab.com/gitlab-org/gitlab/-/issues/241025
|
||||
* Rather use it on the exact instance
|
||||
*/
|
||||
setValue(val) {
|
||||
this.instance.setValue(val);
|
||||
this.instances[0].setValue(val);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated do not use .focus() directly on the editor.
|
||||
* This proxy-method will be removed in https://gitlab.com/gitlab-org/gitlab/-/issues/241025
|
||||
* Rather use it on the exact instance
|
||||
*/
|
||||
focus() {
|
||||
this.instance.focus();
|
||||
this.instances[0].focus();
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated do not use .updateOptions() directly on the editor.
|
||||
* This proxy-method will be removed in https://gitlab.com/gitlab-org/gitlab/-/issues/241025
|
||||
* Rather use it on the exact instance
|
||||
*/
|
||||
updateOptions(options = {}) {
|
||||
this.instances[0].updateOptions(options);
|
||||
}
|
||||
|
||||
navigateFileStart() {
|
||||
this.instance.setPosition(new Position(1, 1));
|
||||
this.instances[0].setPosition(new Position(1, 1));
|
||||
}
|
||||
|
||||
updateOptions(options = {}) {
|
||||
this.instance.updateOptions(options);
|
||||
}
|
||||
|
||||
use(exts = []) {
|
||||
use(exts = [], instance = null) {
|
||||
const extensions = Array.isArray(exts) ? exts : [exts];
|
||||
Object.assign(this, ...extensions);
|
||||
if (instance) {
|
||||
Object.assign(instance, ...extensions);
|
||||
} else {
|
||||
this.instances.forEach(inst => Object.assign(inst, ...extensions));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
export default {
|
||||
getSelectedText(selection = this.getSelection()) {
|
||||
const { startLineNumber, endLineNumber, startColumn, endColumn } = selection;
|
||||
const valArray = this.instance.getValue().split('\n');
|
||||
const valArray = this.getValue().split('\n');
|
||||
let text = '';
|
||||
if (startLineNumber === endLineNumber) {
|
||||
text = valArray[startLineNumber - 1].slice(startColumn - 1, endColumn - 1);
|
||||
|
@ -20,20 +20,16 @@ export default {
|
|||
return text;
|
||||
},
|
||||
|
||||
getSelection() {
|
||||
return this.instance.getSelection();
|
||||
},
|
||||
|
||||
replaceSelectedText(text, select = undefined) {
|
||||
const forceMoveMarkers = !select;
|
||||
this.instance.executeEdits('', [{ range: this.getSelection(), text, forceMoveMarkers }]);
|
||||
this.executeEdits('', [{ range: this.getSelection(), text, forceMoveMarkers }]);
|
||||
},
|
||||
|
||||
moveCursor(dx = 0, dy = 0) {
|
||||
const pos = this.instance.getPosition();
|
||||
const pos = this.getPosition();
|
||||
pos.column += dx;
|
||||
pos.lineNumber += dy;
|
||||
this.instance.setPosition(pos);
|
||||
this.setPosition(pos);
|
||||
},
|
||||
|
||||
/**
|
||||
|
@ -94,6 +90,6 @@ export default {
|
|||
.setStartPosition(newStartLineNumber, newStartColumn)
|
||||
.setEndPosition(newEndLineNumber, newEndColumn);
|
||||
|
||||
this.instance.setSelection(newSelection);
|
||||
this.setSelection(newSelection);
|
||||
},
|
||||
};
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
/**
|
||||
* Render modal to confirm rollback/redeploy.
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable @gitlab/vue-require-i18n-strings */
|
||||
/* eslint-disable @gitlab/vue-require-i18n-strings, vue/no-v-html */
|
||||
import { GlTooltipDirective } from '@gitlab/ui';
|
||||
import DeprecatedModal2 from '~/vue_shared/components/deprecated_modal_2.vue';
|
||||
import { s__, sprintf } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlTooltip, GlSprintf, GlIcon } from '@gitlab/ui';
|
||||
import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
|
||||
import FileIcon from '~/vue_shared/components/file_icon.vue';
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/require-default-prop */
|
||||
/* eslint-disable vue/require-default-prop, vue/no-v-html */
|
||||
import Identicon from '~/vue_shared/components/identicon.vue';
|
||||
import highlight from '~/lib/utils/highlight';
|
||||
import { truncateNamespace } from '~/lib/utils/text_utility';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlLoadingIcon, GlBadge } from '@gitlab/ui';
|
||||
import { visitUrl } from '../../lib/utils/url_utility';
|
||||
import tooltip from '../../vue_shared/directives/tooltip';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { escape } from 'lodash';
|
||||
import { mapState, mapGetters, createNamespacedHelpers } from 'vuex';
|
||||
import { sprintf, s__ } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapState } from 'vuex';
|
||||
|
||||
export default {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions } from 'vuex';
|
||||
import { GlAlert, GlLoadingIcon } from '@gitlab/ui';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions, mapState } from 'vuex';
|
||||
import { throttle } from 'lodash';
|
||||
import { GlIcon } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions, mapGetters, mapState } from 'vuex';
|
||||
import { escape } from 'lodash';
|
||||
import { GlLoadingIcon, GlIcon } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlLoadingIcon } from '@gitlab/ui';
|
||||
|
||||
export default {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapGetters } from 'vuex';
|
||||
import { capitalize, lowerCase, isEmpty } from 'lodash';
|
||||
import { GlFormGroup, GlFormCheckbox, GlFormInput, GlFormSelect, GlFormTextarea } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
/*
|
||||
* This is tightly coupled to projects/issues/_issue.html.haml,
|
||||
* any changes done to the haml need to be reflected here.
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import $ from 'jquery';
|
||||
import { s__, sprintf } from '~/locale';
|
||||
import { deprecatedCreateFlash as createFlash } from '~/flash';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { __, sprintf } from '~/locale';
|
||||
|
||||
export default {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import animateMixin from '../mixins/animate';
|
||||
import eventHub from '../event_hub';
|
||||
import tooltip from '../../vue_shared/directives/tooltip';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { throttle, isEmpty } from 'lodash';
|
||||
import { mapGetters, mapState, mapActions } from 'vuex';
|
||||
import { GlLoadingIcon, GlIcon } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlTooltipDirective, GlLink, GlDeprecatedButton, GlIcon } from '@gitlab/ui';
|
||||
import { polyfillSticky } from '~/lib/utils/sticky';
|
||||
import { numberToHumanSize } from '~/lib/utils/number_utils';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { uniqueId } from 'lodash';
|
||||
import { mapActions } from 'vuex';
|
||||
import { GlButton } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import chartEmptyStateIllustration from '@gitlab/svgs/dist/illustrations/chart-empty-state.svg';
|
||||
import { chartHeight } from '../../constants';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlEmptyState } from '@gitlab/ui';
|
||||
import { __, sprintf } from '~/locale';
|
||||
import { metricStates } from '../constants';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import marked from 'marked';
|
||||
import { sanitize } from 'dompurify';
|
||||
import katex from 'katex';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { sanitize } from 'dompurify';
|
||||
import Prompt from '../prompt.vue';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions } from 'vuex';
|
||||
import { escape } from 'lodash';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapState, mapActions } from 'vuex';
|
||||
import { GlSkeletonLoading } from '@gitlab/ui';
|
||||
import DiffFileHeader from '~/diffs/components/diff_file_header.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlButton, GlIcon } from '@gitlab/ui';
|
||||
import { __, sprintf } from '~/locale';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions, mapGetters, mapState } from 'vuex';
|
||||
import $ from 'jquery';
|
||||
import '~/behaviors/markdown/render_gfm';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapGetters, mapActions, mapState } from 'vuex';
|
||||
import { mergeUrlParams } from '~/lib/utils/url_utility';
|
||||
import eventHub from '../event_hub';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapActions } from 'vuex';
|
||||
import { GlIcon, GlTooltipDirective } from '@gitlab/ui';
|
||||
import timeAgoTooltip from '~/vue_shared/components/time_ago_tooltip.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapGetters } from 'vuex';
|
||||
import { __, sprintf } from '~/locale';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import $ from 'jquery';
|
||||
import { mapGetters, mapActions } from 'vuex';
|
||||
import { escape } from 'lodash';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { escape } from 'lodash';
|
||||
import DeprecatedModal from '~/vue_shared/components/deprecated_modal.vue';
|
||||
import { s__, sprintf } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { escape } from 'lodash';
|
||||
import { GlModal, GlButton, GlFormInput } from '@gitlab/ui';
|
||||
import { s__, sprintf } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlModal } from '@gitlab/ui';
|
||||
import { sprintf } from '~/locale';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import axios from '~/lib/utils/axios_utils';
|
||||
|
||||
import { deprecatedCreateFlash as Flash } from '~/flash';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import {
|
||||
GlLink,
|
||||
GlButton,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import Vue from 'vue';
|
||||
import Cookies from 'js-cookie';
|
||||
import Translate from '../../../../../vue_shared/translate';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { glEmojiTag } from '~/emoji';
|
||||
|
||||
import AddRequest from './add_request.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlPopover } from '@gitlab/ui';
|
||||
import { glEmojiTag } from '~/emoji';
|
||||
import { n__ } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlPopover } from '@gitlab/ui';
|
||||
import { glEmojiTag } from '~/emoji';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { isEmpty } from 'lodash';
|
||||
import { GlLink } from '@gitlab/ui';
|
||||
import DeprecatedModal2 from '~/vue_shared/components/deprecated_modal_2.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import iconTimerSvg from 'icons/_icon_timer.svg';
|
||||
import '~/lib/utils/datetime_utility';
|
||||
import tooltip from '~/vue_shared/directives/tooltip';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import DeprecatedModal from '~/vue_shared/components/deprecated_modal.vue';
|
||||
import { __, s__, sprintf } from '~/locale';
|
||||
import csrf from '~/lib/utils/csrf';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { escape } from 'lodash';
|
||||
import axios from '~/lib/utils/axios_utils';
|
||||
import DeprecatedModal2 from '~/vue_shared/components/deprecated_modal_2.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlBreadcrumb, GlIcon } from '@gitlab/ui';
|
||||
import WelcomePage from './welcome.vue';
|
||||
import LegacyContainer from './legacy_container.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlPopover } from '@gitlab/ui';
|
||||
import Tracking from '~/tracking';
|
||||
import LegacyContainer from './legacy_container.vue';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlButton, GlFormGroup, GlFormInput, GlModal, GlModalDirective } from '@gitlab/ui';
|
||||
import ClipboardButton from '~/vue_shared/components/clipboard_button.vue';
|
||||
import axios from '~/lib/utils/axios_utils';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { initial, first, last } from 'lodash';
|
||||
|
||||
export default {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapState, mapActions, mapGetters } from 'vuex';
|
||||
import { GlButton, GlFormInput, GlFormGroup } from '@gitlab/ui';
|
||||
import { __, sprintf } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { isEmpty } from 'lodash';
|
||||
import $ from 'jquery';
|
||||
import { slugify } from '~/lib/utils/text_utility';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlTooltipDirective, GlLink, GlDeprecatedButton, GlLoadingIcon, GlIcon } from '@gitlab/ui';
|
||||
import defaultAvatarUrl from 'images/no_avatar.png';
|
||||
import { sprintf, s__ } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import $ from 'jquery';
|
||||
import '~/behaviors/markdown/render_gfm';
|
||||
import { GlLink, GlLoadingIcon } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { escapeRegExp } from 'lodash';
|
||||
import {
|
||||
GlBadge,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import Vue from 'vue';
|
||||
import { GlFormGroup, GlDeprecatedButton, GlModal, GlToast, GlToggle } from '@gitlab/ui';
|
||||
import { mapState, mapActions } from 'vuex';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { mapState, mapActions, mapGetters } from 'vuex';
|
||||
import { GlLink, GlLoadingIcon } from '@gitlab/ui';
|
||||
import { sprintf, s__ } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import $ from 'jquery';
|
||||
import GfmAutoComplete from 'ee_else_ce/gfm_auto_complete';
|
||||
import { GlModal, GlTooltipDirective, GlIcon } from '@gitlab/ui';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { sprintf, s__ } from '../../../locale';
|
||||
import { joinPaths } from '~/lib/utils/url_utility';
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { sprintf, s__ } from '~/locale';
|
||||
|
||||
export default {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import MarkdownFieldView from '~/vue_shared/components/markdown/field_view.vue';
|
||||
|
||||
export default {
|
||||
|
|
|
@ -30,7 +30,7 @@ const parseSourceFile = raw => {
|
|||
editable = parse(editable.raw);
|
||||
};
|
||||
|
||||
const syncBodyToRaw = () => {
|
||||
const refreshEditableRaw = () => {
|
||||
editable.raw = `${editable.header}${editable.spacing}${editable.body}`;
|
||||
};
|
||||
|
||||
|
@ -39,12 +39,19 @@ const parseSourceFile = raw => {
|
|||
editable[editableKey] = newVal;
|
||||
|
||||
if (isBodyToRaw) {
|
||||
syncBodyToRaw();
|
||||
refreshEditableRaw();
|
||||
}
|
||||
|
||||
syncEditable();
|
||||
};
|
||||
|
||||
const frontMatter = () => editable.header;
|
||||
|
||||
const setFrontMatter = val => {
|
||||
editable.header = val;
|
||||
refreshEditableRaw();
|
||||
};
|
||||
|
||||
const content = (isBody = false) => {
|
||||
const editableKey = isBody ? 'body' : 'raw';
|
||||
return editable[editableKey];
|
||||
|
@ -56,6 +63,8 @@ const parseSourceFile = raw => {
|
|||
editable = parse(raw);
|
||||
|
||||
return {
|
||||
frontMatter,
|
||||
setFrontMatter,
|
||||
content,
|
||||
isModified,
|
||||
sync,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { sprintf, s__ } from '~/locale';
|
||||
import statusCodes from '~/lib/utils/http_status';
|
||||
import { bytesToMiB } from '~/lib/utils/number_utils';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import Mousetrap from 'mousetrap';
|
||||
import { escape } from 'lodash';
|
||||
import { GlIcon } from '@gitlab/ui';
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/require-default-prop */
|
||||
/* eslint-disable vue/require-default-prop, vue/no-v-html */
|
||||
import { GlIcon, GlLink, GlLoadingIcon, GlSprintf, GlTooltipDirective } from '@gitlab/ui';
|
||||
import mrWidgetPipelineMixin from 'ee_else_ce/vue_merge_request_widget/mixins/mr_widget_pipeline';
|
||||
import { s__ } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { s__ } from '~/locale';
|
||||
|
||||
export default {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlDeprecatedButton, GlIcon } from '@gitlab/ui';
|
||||
import { escape } from 'lodash';
|
||||
import { __, n__, sprintf, s__ } from '~/locale';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { GlLoadingIcon } from '@gitlab/ui';
|
||||
import { escape } from 'lodash';
|
||||
import simplePoll from '../../../lib/utils/simple_poll';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import emptyStateSVG from 'icons/_mr_widget_empty_state.svg';
|
||||
|
||||
export default {
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { isEmpty } from 'lodash';
|
||||
import { GlIcon, GlButton, GlSprintf, GlLink } from '@gitlab/ui';
|
||||
import successSvg from 'icons/_icon_status_success.svg';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import { groupBy } from 'lodash';
|
||||
import { GlIcon } from '@gitlab/ui';
|
||||
import tooltip from '~/vue_shared/directives/tooltip';
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<script>
|
||||
/* eslint-disable vue/no-v-html */
|
||||
import MarkdownFieldView from '~/vue_shared/components/markdown/field_view.vue';
|
||||
import ViewerMixin from './mixins';
|
||||
import { handleBlobRichViewer } from '~/blob/viewer';
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue