From cb36ae7dd5fde175f8a24bfa97b20e9b2e2058bf Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 8 Dec 2020 21:10:06 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .eslintrc.yml | 1 + app/assets/javascripts/autosave.js | 1 + app/assets/javascripts/awards_handler.js | 1 + .../behaviors/shortcuts/shortcuts.js | 1 + .../boards/components/new_list_dropdown.js | 1 + .../javascripts/clusters/clusters_bundle.js | 8 +++ app/assets/javascripts/commit/image_file.js | 2 + .../javascripts/confirm_danger_modal.js | 2 + .../components/cluster_form_dropdown.vue | 1 + app/assets/javascripts/create_label.js | 6 ++ .../cycle_analytics/cycle_analytics_bundle.js | 1 + .../deprecated_jquery_dropdown/gl_dropdown.js | 1 + .../components/environments_app.vue | 2 + app/assets/javascripts/gfm_auto_complete.js | 1 + app/assets/javascripts/gl_field_error.js | 2 + app/assets/javascripts/gl_form.js | 4 ++ .../ide/components/nav_dropdown.vue | 1 + .../issuable_bulk_update_actions.js | 1 + .../javascripts/issue_show/components/app.vue | 3 +- .../issue_show/utils/parse_data.js | 6 +- .../components/issuables_list_app.vue | 1 + .../javascripts/lib/utils/text_markdown.js | 3 + app/assets/javascripts/main.js | 1 + app/assets/javascripts/members.js | 2 + .../javascripts/mirrors/mirror_repos.js | 1 + app/assets/javascripts/mirrors/ssh_mirror.js | 5 ++ .../components/charts/time_series.vue | 1 + app/assets/javascripts/notes.js | 1 + app/assets/javascripts/pager.js | 1 + .../javascripts/pages/projects/issues/show.js | 3 +- .../graphql/queries/ci_config.graphql | 11 +++ .../pipeline_editor/pipeline_editor_app.vue | 59 ++++++++++------ .../queries/pipeline_stages.fragment.graphql | 12 ++++ app/assets/javascripts/project_find_file.js | 1 + .../javascripts/projects/project_new.js | 3 + .../components/related_issuable_input.vue | 2 + app/assets/javascripts/right_sidebar.js | 3 + app/assets/javascripts/settings_panels.js | 1 + app/assets/javascripts/smart_interval.js | 1 + app/assets/javascripts/terminal/terminal.js | 2 + app/assets/javascripts/version_check_image.js | 1 + .../enums/data_visualization_palette.rb | 33 +++++++++ .../262857-creation-rotation-table-models.yml | 5 ++ .../group-member-webhook-column.yml | 5 ++ .../sh-handle-zero-maximum-upload-size.yml | 5 ++ ...e_incident_management_on_call_rotations.rb | 35 ++++++++++ ...ncident_management_on_call_participants.rb | 33 +++++++++ ...04205814_add_member_events_to_web_hooks.rb | 9 +++ db/schema_migrations/20201124030537 | 1 + db/schema_migrations/20201125233219 | 1 + db/schema_migrations/20201204205814 | 1 + db/structure.sql | 70 ++++++++++++++++++- doc/administration/pages/index.md | 11 +-- doc/development/agent/local.md | 58 +++++++-------- doc/development/secure_coding_guidelines.md | 62 ++++++++++++---- doc/user/clusters/agent/index.md | 6 ++ doc/user/project/clusters/index.md | 10 +-- lib/gitlab.rb | 6 ++ lib/object_storage/direct_upload.rb | 9 ++- spec/frontend/.eslintrc.yml | 3 + spec/frontend/issue_show/issue_spec.js | 3 +- spec/frontend/pipeline_editor/mock_data.js | 10 +++ .../pipeline_editor_app_spec.js | 26 ++++--- spec/lib/gitlab_spec.rb | 20 ++++++ spec/lib/object_storage/direct_upload_spec.rb | 28 ++++++++ 65 files changed, 516 insertions(+), 95 deletions(-) create mode 100644 app/assets/javascripts/pipeline_editor/graphql/queries/ci_config.graphql create mode 100644 app/assets/javascripts/pipelines/graphql/queries/pipeline_stages.fragment.graphql create mode 100644 app/models/concerns/enums/data_visualization_palette.rb create mode 100644 changelogs/unreleased/262857-creation-rotation-table-models.yml create mode 100644 changelogs/unreleased/group-member-webhook-column.yml create mode 100644 changelogs/unreleased/sh-handle-zero-maximum-upload-size.yml create mode 100644 db/migrate/20201124030537_create_incident_management_on_call_rotations.rb create mode 100644 db/migrate/20201125233219_add_incident_management_on_call_participants.rb create mode 100644 db/migrate/20201204205814_add_member_events_to_web_hooks.rb create mode 100644 db/schema_migrations/20201124030537 create mode 100644 db/schema_migrations/20201125233219 create mode 100644 db/schema_migrations/20201204205814 diff --git a/.eslintrc.yml b/.eslintrc.yml index 48294e00844..1e6df6f5a77 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -42,6 +42,7 @@ rules: no-jquery/no-serialize: error promise/always-return: off promise/no-callback-in-promise: off + "@gitlab/no-global-event-off": error overrides: - files: - '**/spec/**/*' diff --git a/app/assets/javascripts/autosave.js b/app/assets/javascripts/autosave.js index 5f50fcc112e..0a05e0d44ce 100644 --- a/app/assets/javascripts/autosave.js +++ b/app/assets/javascripts/autosave.js @@ -74,6 +74,7 @@ export default class Autosave { } dispose() { + // eslint-disable-next-line @gitlab/no-global-event-off this.field.off('input'); } } diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js index 17e6255700a..d937060536a 100644 --- a/app/assets/javascripts/awards_handler.js +++ b/app/assets/javascripts/awards_handler.js @@ -596,6 +596,7 @@ export class AwardsHandler { hideMenuElement($emojiMenu) { $emojiMenu.on(transitionEndEventString, e => { if (e.currentTarget === e.target) { + // eslint-disable-next-line @gitlab/no-global-event-off $emojiMenu.removeClass(IS_RENDERED).off(transitionEndEventString); } }); diff --git a/app/assets/javascripts/behaviors/shortcuts/shortcuts.js b/app/assets/javascripts/behaviors/shortcuts/shortcuts.js index a53150f8d61..c0f67923191 100644 --- a/app/assets/javascripts/behaviors/shortcuts/shortcuts.js +++ b/app/assets/javascripts/behaviors/shortcuts/shortcuts.js @@ -97,6 +97,7 @@ export default class Shortcuts { e.preventDefault(); }); + // eslint-disable-next-line @gitlab/no-global-event-off $('.js-shortcuts-modal-trigger') .off('click') .on('click', this.onToggleHelp); diff --git a/app/assets/javascripts/boards/components/new_list_dropdown.js b/app/assets/javascripts/boards/components/new_list_dropdown.js index 47eee5306da..d1011c24977 100644 --- a/app/assets/javascripts/boards/components/new_list_dropdown.js +++ b/app/assets/javascripts/boards/components/new_list_dropdown.js @@ -15,6 +15,7 @@ function shouldCreateListGraphQL(label) { return store.getters.shouldUseGraphQL && !store.getters.getListByLabelId(fullLabelId(label)); } +// eslint-disable-next-line @gitlab/no-global-event-off $(document) .off('created.label') .on('created.label', (e, label, addNewList) => { diff --git a/app/assets/javascripts/clusters/clusters_bundle.js b/app/assets/javascripts/clusters/clusters_bundle.js index ba005e98d53..a533a1a78e8 100644 --- a/app/assets/javascripts/clusters/clusters_bundle.js +++ b/app/assets/javascripts/clusters/clusters_bundle.js @@ -265,13 +265,21 @@ export default class Clusters { removeListeners() { eventHub.$off('installApplication', this.installApplication); eventHub.$off('updateApplication', this.updateApplication); + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('saveKnativeDomain'); + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('setKnativeDomain'); + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('setCrossplaneProviderStack'); + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('uninstallApplication'); + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('setIngressModSecurityEnabled'); + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('setIngressModSecurityMode'); + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('resetIngressModSecurityChanges'); + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('setFluentdSettings'); } diff --git a/app/assets/javascripts/commit/image_file.js b/app/assets/javascripts/commit/image_file.js index 28abe558f53..b70f8d6e736 100644 --- a/app/assets/javascripts/commit/image_file.js +++ b/app/assets/javascripts/commit/image_file.js @@ -72,12 +72,14 @@ export default class ImageFile { callback(e, left); }; + // eslint-disable-next-line @gitlab/no-global-event-off $el .off('mousedown') .off('touchstart') .on('mousedown', dragStart) .on('touchstart', dragStart); + // eslint-disable-next-line @gitlab/no-global-event-off $body .off('mouseup') .off('mousemove') diff --git a/app/assets/javascripts/confirm_danger_modal.js b/app/assets/javascripts/confirm_danger_modal.js index 7321e4d18cc..4f7bc829b0c 100644 --- a/app/assets/javascripts/confirm_danger_modal.js +++ b/app/assets/javascripts/confirm_danger_modal.js @@ -14,6 +14,7 @@ function openConfirmDangerModal($form, $modal, text) { $submit.disable(); $input.focus(); + // eslint-disable-next-line @gitlab/no-global-event-off $input.off('input').on('input', function handleInput() { const confirmText = rstrip($(this).val()); if (confirmText === confirmTextMatch) { @@ -23,6 +24,7 @@ function openConfirmDangerModal($form, $modal, text) { } }); + // eslint-disable-next-line @gitlab/no-global-event-off $('.js-confirm-danger-submit', $modal) .off('click') .on('click', () => { diff --git a/app/assets/javascripts/create_cluster/components/cluster_form_dropdown.vue b/app/assets/javascripts/create_cluster/components/cluster_form_dropdown.vue index e9d484bdd94..1e3a19b9da1 100644 --- a/app/assets/javascripts/create_cluster/components/cluster_form_dropdown.vue +++ b/app/assets/javascripts/create_cluster/components/cluster_form_dropdown.vue @@ -154,6 +154,7 @@ export default { }); }, beforeDestroy() { + // eslint-disable-next-line @gitlab/no-global-event-off $(this.$refs.dropdown).off(); }, methods: { diff --git a/app/assets/javascripts/create_label.js b/app/assets/javascripts/create_label.js index 9c0ed7f79d4..0d53efe8689 100644 --- a/app/assets/javascripts/create_label.js +++ b/app/assets/javascripts/create_label.js @@ -29,11 +29,17 @@ export default class CreateLabelDropdown { } cleanBinding() { + // eslint-disable-next-line @gitlab/no-global-event-off this.$colorSuggestions.off('click'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$newLabelField.off('keyup change'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$newColorField.off('keyup change'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$dropdownBack.off('click'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$cancelButton.off('click'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$newLabelCreateButton.off('click'); } diff --git a/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js b/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js index 4cccabca28b..70ebe91a3b2 100644 --- a/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js +++ b/app/assets/javascripts/cycle_analytics/cycle_analytics_bundle.js @@ -74,6 +74,7 @@ export default () => { const $dropdown = $('.js-ca-dropdown'); const $label = $dropdown.find('.dropdown-label'); + // eslint-disable-next-line @gitlab/no-global-event-off $dropdown .find('li a') .off('click') diff --git a/app/assets/javascripts/deprecated_jquery_dropdown/gl_dropdown.js b/app/assets/javascripts/deprecated_jquery_dropdown/gl_dropdown.js index c17f2d2efe4..fe57dd2dc8f 100644 --- a/app/assets/javascripts/deprecated_jquery_dropdown/gl_dropdown.js +++ b/app/assets/javascripts/deprecated_jquery_dropdown/gl_dropdown.js @@ -622,6 +622,7 @@ export class GitLabDropdown { // eslint-disable-next-line class-methods-use-this removeArrowKeyEvent() { + // eslint-disable-next-line @gitlab/no-global-event-off return $('body').off('keydown'); } diff --git a/app/assets/javascripts/environments/components/environments_app.vue b/app/assets/javascripts/environments/components/environments_app.vue index c1b9ba755a6..ce84caeb28f 100644 --- a/app/assets/javascripts/environments/components/environments_app.vue +++ b/app/assets/javascripts/environments/components/environments_app.vue @@ -93,7 +93,9 @@ export default { }, beforeDestroy() { + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('toggleFolder'); + // eslint-disable-next-line @gitlab/no-global-event-off eventHub.$off('toggleDeployBoard'); }, diff --git a/app/assets/javascripts/gfm_auto_complete.js b/app/assets/javascripts/gfm_auto_complete.js index 14538ad7237..dcb27434a07 100644 --- a/app/assets/javascripts/gfm_auto_complete.js +++ b/app/assets/javascripts/gfm_auto_complete.js @@ -78,6 +78,7 @@ class GfmAutoComplete { this.input.each((i, input) => { const $input = $(input); if (!$input.hasClass('js-gfm-input-initialized')) { + // eslint-disable-next-line @gitlab/no-global-event-off $input.off('focus.setupAtWho').on('focus.setupAtWho', this.setupAtWho.bind(this, $input)); $input.on('change.atwho', () => input.dispatchEvent(new Event('input'))); // This triggers at.js again diff --git a/app/assets/javascripts/gl_field_error.js b/app/assets/javascripts/gl_field_error.js index ac4c8d28ee4..60f1b7f5aa4 100644 --- a/app/assets/javascripts/gl_field_error.js +++ b/app/assets/javascripts/gl_field_error.js @@ -80,6 +80,7 @@ export default class GlFieldError { // hidden when injected into DOM errorAnchor.after(this.fieldErrorElement); + // eslint-disable-next-line @gitlab/no-global-event-off this.inputElement.off('invalid').on('invalid', this.handleInvalidSubmit.bind(this)); this.scopedSiblings = this.safelySelectSiblings(); } @@ -117,6 +118,7 @@ export default class GlFieldError { this.form.focusInvalid.apply(this.form); // For UX, wait til after first invalid submission to check each keyup + // eslint-disable-next-line @gitlab/no-global-event-off this.inputElement .off('keyup.fieldValidator') .on('keyup.fieldValidator', this.updateValidity.bind(this)); diff --git a/app/assets/javascripts/gl_form.js b/app/assets/javascripts/gl_form.js index 6958cf4c173..4a3755f39cc 100644 --- a/app/assets/javascripts/gl_form.js +++ b/app/assets/javascripts/gl_form.js @@ -70,8 +70,10 @@ export default class GLForm { } setupAutosize() { + // eslint-disable-next-line @gitlab/no-global-event-off this.textarea.off('autosize:resized').on('autosize:resized', this.setHeightData.bind(this)); + // eslint-disable-next-line @gitlab/no-global-event-off this.textarea.off('mouseup.autosize').on('mouseup.autosize', this.destroyAutosize.bind(this)); setTimeout(() => { @@ -97,7 +99,9 @@ export default class GLForm { } clearEventListeners() { + // eslint-disable-next-line @gitlab/no-global-event-off this.textarea.off('focus'); + // eslint-disable-next-line @gitlab/no-global-event-off this.textarea.off('blur'); removeMarkdownListeners(this.form); } diff --git a/app/assets/javascripts/ide/components/nav_dropdown.vue b/app/assets/javascripts/ide/components/nav_dropdown.vue index a2338c6dec5..8cea8655461 100644 --- a/app/assets/javascripts/ide/components/nav_dropdown.vue +++ b/app/assets/javascripts/ide/components/nav_dropdown.vue @@ -30,6 +30,7 @@ export default { .on('hide.bs.dropdown', () => this.hideDropdown()); }, removeDropdownListeners() { + // eslint-disable-next-line @gitlab/no-global-event-off $(this.$refs.dropdown) .off('show.bs.dropdown') .off('hide.bs.dropdown'); diff --git a/app/assets/javascripts/issuable_bulk_update_actions.js b/app/assets/javascripts/issuable_bulk_update_actions.js index c7806fc17fc..6ba21cd7869 100644 --- a/app/assets/javascripts/issuable_bulk_update_actions.js +++ b/app/assets/javascripts/issuable_bulk_update_actions.js @@ -15,6 +15,7 @@ export default { }, bindEvents() { + // eslint-disable-next-line @gitlab/no-global-event-off return this.form.off('submit').on('submit', this.onFormSubmit.bind(this)); }, diff --git a/app/assets/javascripts/issue_show/components/app.vue b/app/assets/javascripts/issue_show/components/app.vue index 8acda4ada16..61e5db0970a 100644 --- a/app/assets/javascripts/issue_show/components/app.vue +++ b/app/assets/javascripts/issue_show/components/app.vue @@ -3,7 +3,6 @@ import { GlIcon, GlIntersectionObserver } from '@gitlab/ui'; import Visibility from 'visibilityjs'; import { __, s__, sprintf } from '~/locale'; import { deprecatedCreateFlash as createFlash } from '~/flash'; -import { sanitize } from '~/lib/dompurify'; import { visitUrl } from '~/lib/utils/url_utility'; import Poll from '~/lib/utils/poll'; import eventHub from '../event_hub'; @@ -179,7 +178,7 @@ export default { const store = new Store({ titleHtml: this.initialTitleHtml, titleText: this.initialTitleText, - descriptionHtml: sanitize(this.initialDescriptionHtml), + descriptionHtml: this.initialDescriptionHtml, descriptionText: this.initialDescriptionText, updatedAt: this.updatedAt, updatedByName: this.updatedByName, diff --git a/app/assets/javascripts/issue_show/utils/parse_data.js b/app/assets/javascripts/issue_show/utils/parse_data.js index aacbb6a9c6f..12f38005366 100644 --- a/app/assets/javascripts/issue_show/utils/parse_data.js +++ b/app/assets/javascripts/issue_show/utils/parse_data.js @@ -4,13 +4,11 @@ import { sanitize } from '~/lib/dompurify'; // We currently load + parse the data from the issue app and related merge request let cachedParsedData; -export const parseIssuableData = () => { +export const parseIssuableData = el => { try { if (cachedParsedData) return cachedParsedData; - const initialDataEl = document.getElementById('js-issuable-app'); - - const parsedData = JSON.parse(initialDataEl.dataset.initial); + const parsedData = JSON.parse(el.dataset.initial); parsedData.initialTitleHtml = sanitize(parsedData.initialTitleHtml); parsedData.initialDescriptionHtml = sanitize(parsedData.initialDescriptionHtml); diff --git a/app/assets/javascripts/issues_list/components/issuables_list_app.vue b/app/assets/javascripts/issues_list/components/issuables_list_app.vue index 0d4f5bce965..0ce2bcc1cce 100644 --- a/app/assets/javascripts/issues_list/components/issuables_list_app.vue +++ b/app/assets/javascripts/issues_list/components/issuables_list_app.vue @@ -215,6 +215,7 @@ export default { this.fetchIssuables(); }, beforeDestroy() { + // eslint-disable-next-line @gitlab/no-global-event-off issueableEventHub.$off('issuables:toggleBulkEdit'); }, methods: { diff --git a/app/assets/javascripts/lib/utils/text_markdown.js b/app/assets/javascripts/lib/utils/text_markdown.js index dfb86787788..c711c0bd163 100644 --- a/app/assets/javascripts/lib/utils/text_markdown.js +++ b/app/assets/javascripts/lib/utils/text_markdown.js @@ -339,6 +339,7 @@ export function addMarkdownListeners(form) { Shortcuts.initMarkdownEditorShortcuts($(this), updateTextForToolbarBtn); }); + // eslint-disable-next-line @gitlab/no-global-event-off const $allToolbarBtns = $('.js-md', form) .off('click') .on('click', function() { @@ -351,6 +352,7 @@ export function addMarkdownListeners(form) { } export function addEditorMarkdownListeners(editor) { + // eslint-disable-next-line @gitlab/no-global-event-off $('.js-md') .off('click') .on('click', e => { @@ -376,5 +378,6 @@ export function removeMarkdownListeners(form) { Shortcuts.removeMarkdownEditorShortcuts($(this)); }); + // eslint-disable-next-line @gitlab/no-global-event-off return $('.js-md', form).off('click'); } diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js index f5ba933d012..de7648c31b1 100644 --- a/app/assets/javascripts/main.js +++ b/app/assets/javascripts/main.js @@ -77,6 +77,7 @@ if (process.env.NODE_ENV !== 'production' && gon?.test_env) { document.addEventListener('beforeunload', () => { // Unbind scroll events + // eslint-disable-next-line @gitlab/no-global-event-off $(document).off('scroll'); // Close any open tooltips tooltips.dispose(document.querySelectorAll('.has-tooltip, [data-toggle="tooltip"]')); diff --git a/app/assets/javascripts/members.js b/app/assets/javascripts/members.js index 6dd4018f87a..5bd228496da 100644 --- a/app/assets/javascripts/members.js +++ b/app/assets/javascripts/members.js @@ -11,9 +11,11 @@ export default class Members { } addListeners() { + // eslint-disable-next-line @gitlab/no-global-event-off $('.js-member-update-control') .off('change') .on('change', this.formSubmit.bind(this)); + // eslint-disable-next-line @gitlab/no-global-event-off $('.js-edit-member-form') .off('ajax:success') .on('ajax:success', this.formSuccess.bind(this)); diff --git a/app/assets/javascripts/mirrors/mirror_repos.js b/app/assets/javascripts/mirrors/mirror_repos.js index 818ca8aa847..18ea27e9a34 100644 --- a/app/assets/javascripts/mirrors/mirror_repos.js +++ b/app/assets/javascripts/mirrors/mirror_repos.js @@ -39,6 +39,7 @@ export default class MirrorRepos { initMirrorSSH() { if (this.$password) { + // eslint-disable-next-line @gitlab/no-global-event-off this.$password.off('input.updateUrl'); } this.$password = undefined; diff --git a/app/assets/javascripts/mirrors/ssh_mirror.js b/app/assets/javascripts/mirrors/ssh_mirror.js index eecfaa76168..c6486350f3b 100644 --- a/app/assets/javascripts/mirrors/ssh_mirror.js +++ b/app/assets/javascripts/mirrors/ssh_mirror.js @@ -185,10 +185,15 @@ export default class SSHMirror { } destroy() { + // eslint-disable-next-line @gitlab/no-global-event-off this.$repositoryUrl.off('keyup'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$form.find('.js-known-hosts').off('keyup'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$dropdownAuthType.off('change'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$btnDetectHostKeys.off('click'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$btnSSHHostsShowAdvanced.off('click'); } } diff --git a/app/assets/javascripts/monitoring/components/charts/time_series.vue b/app/assets/javascripts/monitoring/components/charts/time_series.vue index bda2adeb62a..170c5ff7695 100644 --- a/app/assets/javascripts/monitoring/components/charts/time_series.vue +++ b/app/assets/javascripts/monitoring/components/charts/time_series.vue @@ -367,6 +367,7 @@ export default { }, ); + // eslint-disable-next-line @gitlab/no-global-event-off eChart.off('datazoom'); eChart.on('datazoom', this.throttledDatazoom); }, diff --git a/app/assets/javascripts/notes.js b/app/assets/javascripts/notes.js index 37bb79defd1..9a887021e5d 100644 --- a/app/assets/javascripts/notes.js +++ b/app/assets/javascripts/notes.js @@ -187,6 +187,7 @@ export default class Notes { this.$wrapperEl.off('click', '.js-discussion-reply-button'); this.$wrapperEl.off('click', '.js-add-diff-note-button'); this.$wrapperEl.off('click', '.js-add-image-diff-note-button'); + // eslint-disable-next-line @gitlab/no-global-event-off this.$wrapperEl.off('visibilitychange'); this.$wrapperEl.off('keyup input', '.js-note-text'); this.$wrapperEl.off('click', '.js-note-target-reopen'); diff --git a/app/assets/javascripts/pager.js b/app/assets/javascripts/pager.js index 2aa37842707..f9a91ec322b 100644 --- a/app/assets/javascripts/pager.js +++ b/app/assets/javascripts/pager.js @@ -72,6 +72,7 @@ export default { }, initLoadMore() { + // eslint-disable-next-line @gitlab/no-global-event-off $(document).off('scroll'); $(document).endlessScroll({ bottomPixels: ENDLESS_SCROLL_BOTTOM_PX, diff --git a/app/assets/javascripts/pages/projects/issues/show.js b/app/assets/javascripts/pages/projects/issues/show.js index 4b15e435f60..614f8262e5b 100644 --- a/app/assets/javascripts/pages/projects/issues/show.js +++ b/app/assets/javascripts/pages/projects/issues/show.js @@ -17,7 +17,8 @@ import initInviteMemberModal from '~/invite_member/init_invite_member_modal'; import { IssuableType } from '~/issuable_show/constants'; export default function() { - const { issueType, ...issuableData } = parseIssuableData(); + const initialDataEl = document.getElementById('js-issuable-app'); + const { issueType, ...issuableData } = parseIssuableData(initialDataEl); switch (issueType) { case IssuableType.Incident: diff --git a/app/assets/javascripts/pipeline_editor/graphql/queries/ci_config.graphql b/app/assets/javascripts/pipeline_editor/graphql/queries/ci_config.graphql new file mode 100644 index 00000000000..149cb256ced --- /dev/null +++ b/app/assets/javascripts/pipeline_editor/graphql/queries/ci_config.graphql @@ -0,0 +1,11 @@ +#import "~/pipelines/graphql/queries/pipeline_stages.fragment.graphql" + +query getCiConfigData($content: String!) { + ciConfig(content: $content) { + errors + status + stages { + ...PipelineStagesData + } + } +} diff --git a/app/assets/javascripts/pipeline_editor/pipeline_editor_app.vue b/app/assets/javascripts/pipeline_editor/pipeline_editor_app.vue index a4bdc27d1a0..b1c52ffa920 100644 --- a/app/assets/javascripts/pipeline_editor/pipeline_editor_app.vue +++ b/app/assets/javascripts/pipeline_editor/pipeline_editor_app.vue @@ -1,7 +1,7 @@