From 6438df3a1e0fb944485cebf07976160184697d72 Mon Sep 17 00:00:00 2001 From: Robert Speicher Date: Wed, 20 Jan 2021 13:34:23 -0600 Subject: Add latest changes from gitlab-org/gitlab@13-8-stable-ee --- app/assets/javascripts/ide/commit_icon.js | 2 +- .../ide/components/commit_sidebar/list_item.vue | 2 +- .../ide/components/commit_sidebar/radio_group.vue | 1 + .../ide/components/file_templates/bar.vue | 2 +- .../ide/components/file_templates/dropdown.vue | 2 +- app/assets/javascripts/ide/components/ide.vue | 2 +- .../javascripts/ide/components/ide_sidebar_nav.vue | 2 +- .../javascripts/ide/components/nav_dropdown.vue | 4 +- .../ide/components/new_dropdown/upload.vue | 14 +++-- .../ide/components/panes/collapsible_sidebar.vue | 6 +- .../ide/components/preview/clientside.vue | 42 +++++++------- .../ide/components/preview/navigator.vue | 2 +- .../ide/components/repo_commit_section.vue | 4 +- .../javascripts/ide/components/repo_editor.vue | 19 +++++-- app/assets/javascripts/ide/constants.js | 3 + app/assets/javascripts/ide/ide_router.js | 10 ++-- app/assets/javascripts/ide/index.js | 4 ++ .../javascripts/ide/lib/common/disposable.js | 4 +- app/assets/javascripts/ide/lib/common/model.js | 4 +- app/assets/javascripts/ide/lib/create_diff.js | 16 +++--- app/assets/javascripts/ide/lib/create_file_diff.js | 10 ++-- .../javascripts/ide/lib/decorations/controller.js | 2 +- app/assets/javascripts/ide/lib/diff/controller.js | 6 +- app/assets/javascripts/ide/lib/diff/diff.js | 2 +- app/assets/javascripts/ide/lib/diff/diff_worker.js | 2 +- app/assets/javascripts/ide/lib/editor.js | 12 ++-- app/assets/javascripts/ide/lib/editor_options.js | 4 +- .../javascripts/ide/lib/editorconfig/parser.js | 13 +++-- .../ide/lib/editorconfig/rules_mapper.js | 12 ++-- app/assets/javascripts/ide/lib/errors.js | 14 ++--- app/assets/javascripts/ide/lib/files.js | 21 +++++-- app/assets/javascripts/ide/lib/languages/hcl.js | 14 ++++- app/assets/javascripts/ide/lib/languages/vue.js | 8 ++- app/assets/javascripts/ide/lib/mirror.js | 26 ++++----- app/assets/javascripts/ide/services/index.js | 11 ++-- app/assets/javascripts/ide/services/terminals.js | 2 +- app/assets/javascripts/ide/stores/actions.js | 17 +++--- app/assets/javascripts/ide/stores/actions/file.js | 47 +++++++-------- .../ide/stores/actions/merge_request.js | 18 +++--- .../javascripts/ide/stores/actions/project.js | 15 ++--- app/assets/javascripts/ide/stores/actions/tree.js | 4 +- app/assets/javascripts/ide/stores/extend.js | 2 +- app/assets/javascripts/ide/stores/getters.js | 66 +++++++++++----------- .../ide/stores/modules/branches/actions.js | 2 +- .../ide/stores/modules/branches/mutations.js | 2 +- .../ide/stores/modules/commit/actions.js | 41 +++++++------- .../ide/stores/modules/commit/getters.js | 10 ++-- .../javascripts/ide/stores/modules/editor/setup.js | 15 +++-- .../ide/stores/modules/file_templates/actions.js | 2 +- .../ide/stores/modules/file_templates/getters.js | 4 +- .../ide/stores/modules/merge_requests/actions.js | 2 +- .../ide/stores/modules/merge_requests/mutations.js | 2 +- .../javascripts/ide/stores/modules/pane/getters.js | 2 +- .../ide/stores/modules/pipelines/actions.js | 6 +- .../ide/stores/modules/pipelines/getters.js | 19 ++++--- .../ide/stores/modules/pipelines/mutations.js | 10 ++-- .../ide/stores/modules/pipelines/utils.js | 2 +- .../ide/stores/modules/terminal/actions/checks.js | 4 +- .../modules/terminal/actions/session_controls.js | 6 +- .../modules/terminal/actions/session_status.js | 2 +- .../ide/stores/modules/terminal/getters.js | 6 +- .../ide/stores/modules/terminal/messages.js | 2 +- .../ide/stores/modules/terminal/utils.js | 6 +- .../ide/stores/modules/terminal_sync/actions.js | 4 +- app/assets/javascripts/ide/stores/mutations.js | 12 ++-- .../javascripts/ide/stores/mutations/file.js | 46 +++++++-------- .../javascripts/ide/stores/mutations/tree.js | 2 +- .../javascripts/ide/stores/plugins/terminal.js | 2 +- .../ide/stores/plugins/terminal_sync.js | 20 +++++-- app/assets/javascripts/ide/stores/utils.js | 34 ++++++----- .../javascripts/ide/sync_router_and_store.js | 8 +-- app/assets/javascripts/ide/utils.js | 33 +++++------ 72 files changed, 421 insertions(+), 358 deletions(-) (limited to 'app/assets/javascripts/ide') diff --git a/app/assets/javascripts/ide/commit_icon.js b/app/assets/javascripts/ide/commit_icon.js index 4984b5bb91d..70ee9cff22b 100644 --- a/app/assets/javascripts/ide/commit_icon.js +++ b/app/assets/javascripts/ide/commit_icon.js @@ -1,6 +1,6 @@ import { commitItemIconMap } from './constants'; -export default file => { +export default (file) => { if (file.deleted) { return commitItemIconMap.deleted; } else if (file.tempFile && !file.prevPath) { diff --git a/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue b/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue index 123e0aba959..4192a002486 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/list_item.vue @@ -63,7 +63,7 @@ export default { return this.openPendingTab({ file: this.file, keyPrefix: this.keyPrefix, - }).then(changeViewer => { + }).then((changeViewer) => { if (changeViewer) { this.updateViewer(viewerTypes.diff); } diff --git a/app/assets/javascripts/ide/components/commit_sidebar/radio_group.vue b/app/assets/javascripts/ide/components/commit_sidebar/radio_group.vue index aed7b792902..91cce44382c 100644 --- a/app/assets/javascripts/ide/components/commit_sidebar/radio_group.vue +++ b/app/assets/javascripts/ide/components/commit_sidebar/radio_group.vue @@ -74,6 +74,7 @@ export default { t.name === this.activeFile.name); + const initialTemplateType = this.templateTypes.find((t) => t.name === this.activeFile.name); if (initialTemplateType) { this.setSelectedTemplateType(initialTemplateType); diff --git a/app/assets/javascripts/ide/components/file_templates/dropdown.vue b/app/assets/javascripts/ide/components/file_templates/dropdown.vue index 5d5b66a6444..772dab3fed3 100644 --- a/app/assets/javascripts/ide/components/file_templates/dropdown.vue +++ b/app/assets/javascripts/ide/components/file_templates/dropdown.vue @@ -44,7 +44,7 @@ export default { computed: { ...mapState('fileTemplates', ['templates', 'isLoading']), outputData() { - return (this.isAsyncData ? this.templates : this.data).filter(t => { + return (this.isAsyncData ? this.templates : this.data).filter((t) => { if (!this.searchable) return true; return t.name.toLowerCase().indexOf(this.search.toLowerCase()) >= 0; diff --git a/app/assets/javascripts/ide/components/ide.vue b/app/assets/javascripts/ide/components/ide.vue index f8568f46cd6..aac899fde0d 100644 --- a/app/assets/javascripts/ide/components/ide.vue +++ b/app/assets/javascripts/ide/components/ide.vue @@ -73,7 +73,7 @@ export default { }, }, mounted() { - window.onbeforeunload = e => this.onBeforeUnload(e); + window.onbeforeunload = (e) => this.onBeforeUnload(e); if (this.themeName) document.querySelector('.navbar-gitlab').classList.add(`theme-${this.themeName}`); diff --git a/app/assets/javascripts/ide/components/ide_sidebar_nav.vue b/app/assets/javascripts/ide/components/ide_sidebar_nav.vue index 966c36d6e71..9dbed0ace40 100644 --- a/app/assets/javascripts/ide/components/ide_sidebar_nav.vue +++ b/app/assets/javascripts/ide/components/ide_sidebar_nav.vue @@ -37,7 +37,7 @@ export default { }, methods: { isActiveTab(tab) { - return this.isOpen && tab.views.some(view => view.name === this.currentView); + return this.isOpen && tab.views.some((view) => view.name === this.currentView); }, buttonClasses(tab) { return [ diff --git a/app/assets/javascripts/ide/components/nav_dropdown.vue b/app/assets/javascripts/ide/components/nav_dropdown.vue index 8cea8655461..6ff77e556c0 100644 --- a/app/assets/javascripts/ide/components/nav_dropdown.vue +++ b/app/assets/javascripts/ide/components/nav_dropdown.vue @@ -31,9 +31,7 @@ export default { }, removeDropdownListeners() { // eslint-disable-next-line @gitlab/no-global-event-off - $(this.$refs.dropdown) - .off('show.bs.dropdown') - .off('hide.bs.dropdown'); + $(this.$refs.dropdown).off('show.bs.dropdown').off('hide.bs.dropdown'); }, showDropdown() { this.isVisibleDropdown = true; diff --git a/app/assets/javascripts/ide/components/new_dropdown/upload.vue b/app/assets/javascripts/ide/components/new_dropdown/upload.vue index 4a9a2a57acd..5704129c10f 100644 --- a/app/assets/javascripts/ide/components/new_dropdown/upload.vue +++ b/app/assets/javascripts/ide/components/new_dropdown/upload.vue @@ -25,23 +25,24 @@ export default { }, methods: { createFile(target, file) { - const { name } = file; + const { name, type: mimeType } = file; const encodedContent = target.result.split('base64,')[1]; const rawContent = encodedContent ? atob(encodedContent) : ''; - const isText = isTextFile({ content: rawContent, mimeType: file.type, name }); + const isText = isTextFile({ content: rawContent, mimeType, name }); - const emitCreateEvent = content => + const emitCreateEvent = (content) => this.$emit('create', { name: `${this.path ? `${this.path}/` : ''}${name}`, type: 'blob', content, rawPath: !isText ? URL.createObjectURL(file) : '', + mimeType, }); if (isText) { const reader = new FileReader(); - reader.addEventListener('load', e => emitCreateEvent(e.target.result), { once: true }); + reader.addEventListener('load', (e) => emitCreateEvent(e.target.result), { once: true }); reader.readAsText(file); } else { emitCreateEvent(rawContent); @@ -50,11 +51,11 @@ export default { readFile(file) { const reader = new FileReader(); - reader.addEventListener('load', e => this.createFile(e.target, file), { once: true }); + reader.addEventListener('load', (e) => this.createFile(e.target, file), { once: true }); reader.readAsDataURL(file); }, openFile() { - Array.from(this.$refs.fileUpload.files).forEach(file => this.readFile(file)); + Array.from(this.$refs.fileUpload.files).forEach((file) => this.readFile(file)); }, startFileUpload() { this.$refs.fileUpload.click(); @@ -80,6 +81,7 @@ export default { type="file" class="hidden" multiple + data-qa-selector="file_upload_field" @change="openFile" /> diff --git a/app/assets/javascripts/ide/components/panes/collapsible_sidebar.vue b/app/assets/javascripts/ide/components/panes/collapsible_sidebar.vue index 87019c3b2a5..6f42ae48cc9 100644 --- a/app/assets/javascripts/ide/components/panes/collapsible_sidebar.vue +++ b/app/assets/javascripts/ide/components/panes/collapsible_sidebar.vue @@ -35,13 +35,13 @@ export default { return `${this.side}Pane`; }, tabs() { - return this.extensionTabs.filter(tab => tab.show); + return this.extensionTabs.filter((tab) => tab.show); }, tabViews() { - return this.tabs.map(tab => tab.views).flat(); + return this.tabs.map((tab) => tab.views).flat(); }, aliveTabViews() { - return this.tabViews.filter(view => this.isAliveView(view.name)); + return this.tabViews.filter((view) => this.isAliveView(view.name)); }, }, methods: { diff --git a/app/assets/javascripts/ide/components/preview/clientside.vue b/app/assets/javascripts/ide/components/preview/clientside.vue index f65b1201d94..4c2a369226e 100644 --- a/app/assets/javascripts/ide/components/preview/clientside.vue +++ b/app/assets/javascripts/ide/components/preview/clientside.vue @@ -1,12 +1,13 @@