Commit ff0f74ac authored by Phil Hughes's avatar Phil Hughes

Tidy up main JS file

parent be623ef3
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
"extends": "airbnb-base", "extends": "airbnb-base",
"globals": { "globals": {
"__webpack_public_path__": true, "__webpack_public_path__": true,
"_": false,
"gl": false, "gl": false,
"gon": false, "gon": false,
"localStorage": false "localStorage": false
......
...@@ -4,6 +4,8 @@ import { visitUrl } from '../lib/utils/url_utility'; ...@@ -4,6 +4,8 @@ import { visitUrl } from '../lib/utils/url_utility';
import { HIDDEN_CLASS } from '../lib/utils/constants'; import { HIDDEN_CLASS } from '../lib/utils/constants';
import csrf from '../lib/utils/csrf'; import csrf from '../lib/utils/csrf';
Dropzone.autoDiscover = false;
function toggleLoading($el, $icon, loading) { function toggleLoading($el, $icon, loading) {
if (loading) { if (loading) {
$el.disable(); $el.disable();
......
/* eslint-disable comma-dangle, space-before-function-paren, one-var */ /* eslint-disable comma-dangle, space-before-function-paren, one-var */
/* global Sortable */ import Sortable from 'vendor/Sortable';
import Vue from 'vue'; import Vue from 'vue';
import AccessorUtilities from '../../lib/utils/accessor'; import AccessorUtilities from '../../lib/utils/accessor';
import boardList from './board_list'; import boardList from './board_list';
......
/* global Sortable */ import Sortable from 'vendor/Sortable';
import boardNewIssue from './board_new_issue'; import boardNewIssue from './board_new_issue';
import boardCard from './board_card.vue'; import boardCard from './board_card.vue';
import eventHub from '../eventhub'; import eventHub from '../eventhub';
......
import _ from 'underscore';
export default function initBroadcastMessagesForm() { export default function initBroadcastMessagesForm() {
$('input#broadcast_message_color').on('input', function onMessageColorInput() { $('input#broadcast_message_color').on('input', function onMessageColorInput() {
const previewColor = $(this).val(); const previewColor = $(this).val();
......
/* eslint-disable no-new */ /* eslint-disable no-new */
import _ from 'underscore';
import Flash from './flash'; import Flash from './flash';
import DropLab from './droplab/drop_lab'; import DropLab from './droplab/drop_lab';
import ISetter from './droplab/plugins/input_setter'; import ISetter from './droplab/plugins/input_setter';
......
...@@ -3,6 +3,8 @@ import _ from 'underscore'; ...@@ -3,6 +3,8 @@ import _ from 'underscore';
import './preview_markdown'; import './preview_markdown';
import csrf from './lib/utils/csrf'; import csrf from './lib/utils/csrf';
Dropzone.autoDiscover = false;
export default function dropzoneInput(form) { export default function dropzoneInput(form) {
const divHover = '<div class="div-dropzone-hover"></div>'; const divHover = '<div class="div-dropzone-hover"></div>';
const iconPaperclip = '<i class="fa fa-paperclip div-dropzone-icon"></i>'; const iconPaperclip = '<i class="fa fa-paperclip div-dropzone-icon"></i>';
......
/** /**
* Common code between environmets app and folder view * Common code between environmets app and folder view
*/ */
import _ from 'underscore';
import Visibility from 'visibilityjs'; import Visibility from 'visibilityjs';
import Poll from '../../lib/utils/poll'; import Poll from '../../lib/utils/poll';
import { import {
......
import _ from 'underscore';
import DropLab from '~/droplab/drop_lab'; import DropLab from '~/droplab/drop_lab';
import FilteredSearchContainer from './container'; import FilteredSearchContainer from './container';
......
import _ from 'underscore';
import { visitUrl } from '../lib/utils/url_utility'; import { visitUrl } from '../lib/utils/url_utility';
import Flash from '../flash'; import Flash from '../flash';
import FilteredSearchContainer from './container'; import FilteredSearchContainer from './container';
......
import _ from 'underscore';
import AjaxCache from '../lib/utils/ajax_cache'; import AjaxCache from '../lib/utils/ajax_cache';
import Flash from '../flash'; import Flash from '../flash';
import FilteredSearchContainer from './container'; import FilteredSearchContainer from './container';
......
import _ from 'underscore';
import DecorationsController from './decorations/controller'; import DecorationsController from './decorations/controller';
import DirtyDiffController from './diff/controller'; import DirtyDiffController from './diff/controller';
import Disposable from './common/disposable'; import Disposable from './common/disposable';
......
import _ from 'underscore';
export const dataStructure = () => ({ export const dataStructure = () => ({
id: '', id: '',
key: '', key: '',
......
/* eslint-disable comma-dangle, class-methods-use-this, no-underscore-dangle, no-param-reassign, no-unused-vars, consistent-return, func-names, space-before-function-paren, max-len */ /* eslint-disable comma-dangle, class-methods-use-this, no-underscore-dangle, no-param-reassign, no-unused-vars, consistent-return, func-names, space-before-function-paren, max-len */
/* global Sortable */ import Sortable from 'vendor/Sortable';
import Flash from './flash'; import Flash from './flash';
......
/* eslint-disable func-names, space-before-function-paren, no-var, quotes, consistent-return, prefer-arrow-callback, comma-dangle, object-shorthand, no-new, max-len, no-multi-spaces, import/newline-after-import, import/first */ /* eslint-disable import/first */
/* global ConfirmDangerModal */ /* global ConfirmDangerModal */
import jQuery from 'jquery'; import jQuery from 'jquery';
import _ from 'underscore';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import Dropzone from 'dropzone';
import Sortable from 'vendor/Sortable';
import svg4everybody from 'svg4everybody'; import svg4everybody from 'svg4everybody';
// libraries with import side-effects
import 'mousetrap';
import 'mousetrap/plugins/pause/mousetrap-pause';
// expose common libraries as globals (TODO: remove these) // expose common libraries as globals (TODO: remove these)
window.jQuery = jQuery; window.jQuery = jQuery;
window.$ = jQuery; window.$ = jQuery;
window._ = _;
window.Dropzone = Dropzone;
window.Sortable = Sortable;
// templates
import './templates/issuable_template_selector';
import './templates/issuable_template_selectors';
import './commit/image_file';
// lib/utils // lib/utils
import { handleLocationHash } from './lib/utils/common_utils'; import { handleLocationHash } from './lib/utils/common_utils';
import { localTimeAgo, renderTimeago } from './lib/utils/datetime_utility'; import { localTimeAgo } from './lib/utils/datetime_utility';
import { getLocationHash, visitUrl } from './lib/utils/url_utility'; import { getLocationHash, visitUrl } from './lib/utils/url_utility';
// behaviors // behaviors
...@@ -43,7 +27,6 @@ import initTodoToggle from './header'; ...@@ -43,7 +27,6 @@ import initTodoToggle from './header';
import initImporterStatus from './importer_status'; import initImporterStatus from './importer_status';
import initLayoutNav from './layout_nav'; import initLayoutNav from './layout_nav';
import LazyLoader from './lazy_loader'; import LazyLoader from './lazy_loader';
import './line_highlighter';
import initLogoAnimation from './logo'; import initLogoAnimation from './logo';
import './milestone_select'; import './milestone_select';
import './projects_dropdown'; import './projects_dropdown';
...@@ -55,11 +38,9 @@ import './dispatcher'; ...@@ -55,11 +38,9 @@ import './dispatcher';
// eslint-disable-next-line global-require, import/no-commonjs // eslint-disable-next-line global-require, import/no-commonjs
if (process.env.NODE_ENV !== 'production') require('./test_utils/'); if (process.env.NODE_ENV !== 'production') require('./test_utils/');
Dropzone.autoDiscover = false;
svg4everybody(); svg4everybody();
document.addEventListener('beforeunload', function () { document.addEventListener('beforeunload', () => {
// Unbind scroll events // Unbind scroll events
$(document).off('scroll'); $(document).off('scroll');
// Close any open tooltips // Close any open tooltips
...@@ -76,16 +57,15 @@ window.addEventListener('load', function onLoad() { ...@@ -76,16 +57,15 @@ window.addEventListener('load', function onLoad() {
gl.lazyLoader = new LazyLoader({ gl.lazyLoader = new LazyLoader({
scrollContainer: window, scrollContainer: window,
observerNode: '#content-body' observerNode: '#content-body',
}); });
$(function () { $(() => {
var $body = $('body'); const $body = $('body');
var $document = $(document); const $document = $(document);
var $window = $(window); const $window = $(window);
var $sidebarGutterToggle = $('.js-sidebar-toggle'); const $sidebarGutterToggle = $('.js-sidebar-toggle');
var bootstrapBreakpoint = bp.getBreakpointSize(); let bootstrapBreakpoint = bp.getBreakpointSize();
var fitSidebarForSize;
initBreadcrumbs(); initBreadcrumbs();
initLayoutNav(); initLayoutNav();
...@@ -97,8 +77,8 @@ $(function () { ...@@ -97,8 +77,8 @@ $(function () {
Cookies.defaults.path = gon.relative_url_root || '/'; Cookies.defaults.path = gon.relative_url_root || '/';
// `hashchange` is not triggered when link target is already in window.location // `hashchange` is not triggered when link target is already in window.location
$body.on('click', 'a[href^="#"]', function() { $body.on('click', 'a[href^="#"]', function clickHashLinkCallback() {
var href = this.getAttribute('href'); const href = this.getAttribute('href');
if (href.substr(1) === getLocationHash()) { if (href.substr(1) === getLocationHash()) {
setTimeout(handleLocationHash, 1); setTimeout(handleLocationHash, 1);
} }
...@@ -113,155 +93,162 @@ $(function () { ...@@ -113,155 +93,162 @@ $(function () {
} }
// prevent default action for disabled buttons // prevent default action for disabled buttons
$('.btn').click(function(e) { $('.btn').click(function clickDisabledButtonCallback(e) {
if ($(this).hasClass('disabled')) { if ($(this).hasClass('disabled')) {
e.preventDefault(); e.preventDefault();
e.stopImmediatePropagation(); e.stopImmediatePropagation();
return false; return false;
} }
return true;
}); });
$('.js-select-on-focus').on('focusin', function () {
return $(this).select().one('mouseup', function (e) {
return e.preventDefault();
});
// Click a .js-select-on-focus field, select the contents // Click a .js-select-on-focus field, select the contents
// Prevent a mouseup event from deselecting the input // Prevent a mouseup event from deselecting the input
$('.js-select-on-focus').on('focusin', function selectOnFocusCallback() {
$(this).select().one('mouseup', (e) => {
e.preventDefault();
});
}); });
$('.remove-row').bind('ajax:success', function () {
$('.remove-row').on('ajax:success', function removeRowAjaxSuccessCallback() {
$(this).tooltip('destroy') $(this).tooltip('destroy')
.closest('li') .closest('li')
.fadeOut(); .fadeOut();
}); });
$('.js-remove-tr').bind('ajax:before', function () {
return $(this).hide(); $('.js-remove-tr').on('ajax:before', function removeTRAjaxBeforeCallback() {
$(this).hide();
}); });
$('.js-remove-tr').bind('ajax:success', function () {
return $(this).closest('tr').fadeOut(); $('.js-remove-tr').on('ajax:success', function removeTRAjaxSuccessCallback() {
$(this).closest('tr').fadeOut();
}); });
// Initialize select2 selects
$('select.select2').select2({ $('select.select2').select2({
width: 'resolve', width: 'resolve',
// Initialize select2 selects dropdownAutoWidth: true,
dropdownAutoWidth: true
}); });
$('.js-select2').bind('select2-close', function () {
return setTimeout((function () {
$('.select2-container-active').removeClass('select2-container-active');
return $(':focus').blur();
}), 1);
// Close select2 on escape // Close select2 on escape
$('.js-select2').on('select2-close', () => {
setTimeout(() => {
$('.select2-container-active').removeClass('select2-container-active');
$(':focus').blur();
}, 1);
}); });
// Initialize tooltips // Initialize tooltips
$.fn.tooltip.Constructor.DEFAULTS.trigger = 'hover'; $.fn.tooltip.Constructor.DEFAULTS.trigger = 'hover';
$body.tooltip({ $body.tooltip({
selector: '.has-tooltip, [data-toggle="tooltip"]', selector: '.has-tooltip, [data-toggle="tooltip"]',
placement: function (tip, el) { placement(tip, el) {
return $(el).data('placement') || 'bottom'; return $(el).data('placement') || 'bottom';
} },
}); });
// Initialize popovers // Initialize popovers
$body.popover({ $body.popover({
selector: '[data-toggle="popover"]', selector: '[data-toggle="popover"]',
trigger: 'focus', trigger: 'focus',
// set the viewport to the main content, excluding the navigation bar, so // set the viewport to the main content, excluding the navigation bar, so
// the navigation can't overlap the popover // the navigation can't overlap the popover
viewport: '.layout-page' viewport: '.layout-page',
}); });
$('.trigger-submit').on('change', function () {
return $(this).parents('form').submit();
// Form submitter // Form submitter
$('.trigger-submit').on('change', function triggerSubmitCallback() {
$(this).parents('form').submit();
}); });
localTimeAgo($('abbr.timeago, .js-timeago'), true); localTimeAgo($('abbr.timeago, .js-timeago'), true);
// Disable form buttons while a form is submitting // Disable form buttons while a form is submitting
$body.on('ajax:complete, ajax:beforeSend, submit', 'form', function (e) { $body.on('ajax:complete, ajax:beforeSend, submit', 'form', function ajaxCompleteCallback(e) {
var buttons; const $buttons = $('[type="submit"], .js-disable-on-submit', this);
buttons = $('[type="submit"], .js-disable-on-submit', this);
switch (e.type) { switch (e.type) {
case 'ajax:beforeSend': case 'ajax:beforeSend':
case 'submit': case 'submit':
return buttons.disable(); return $buttons.disable();
default: default:
return buttons.enable(); return $buttons.enable();
} }
}); });
$(document).ajaxError(function (e, xhrObj) {
var ref = xhrObj.status; $(document).ajaxError((e, xhrObj) => {
if (xhrObj.status === 401) { const ref = xhrObj.status;
return new Flash('You need to be logged in.', 'alert');
if (ref === 401) {
Flash('You need to be logged in.');
} else if (ref === 404 || ref === 500) { } else if (ref === 404 || ref === 500) {
return new Flash('Something went wrong on our end.', 'alert'); Flash('Something went wrong on our end.');
} }
}); });
$('.account-box').hover(function () {
// Show/Hide the profile menu when hovering the account box
return $(this).toggleClass('hover');
});
$document.on('click', '.diff-content .js-show-suppressed-diff', function () {
var $container;
$container = $(this).parent();
$container.next('table').show();
return $container.remove();
// Commit show suppressed diff // Commit show suppressed diff
$document.on('click', '.diff-content .js-show-suppressed-diff', function showDiffCallback() {
const $container = $(this).parent();
$container.next('table').show();
$container.remove();
}); });
$('.navbar-toggle').on('click', () => { $('.navbar-toggle').on('click', () => {
$('.header-content').toggleClass('menu-expanded'); $('.header-content').toggleClass('menu-expanded');
gl.lazyLoader.loadCheck(); gl.lazyLoader.loadCheck();
}); });
// Show/hide comments on diff // Show/hide comments on diff
$body.on('click', '.js-toggle-diff-comments', function (e) { $body.on('click', '.js-toggle-diff-comments', function toggleDiffCommentsCallback(e) {
var $this = $(this); const $this = $(this);
var notesHolders = $this.closest('.diff-file').find('.notes_holder'); const notesHolders = $this.closest('.diff-file').find('.notes_holder');
e.preventDefault();
$this.toggleClass('active'); $this.toggleClass('active');
if ($this.hasClass('active')) { if ($this.hasClass('active')) {
notesHolders.show().find('.hide, .content').show(); notesHolders.show().find('.hide, .content').show();
} else { } else {
notesHolders.hide().find('.content').hide(); notesHolders.hide().find('.content').hide();
} }
$(document).trigger('toggle.comments'); $(document).trigger('toggle.comments');
return e.preventDefault();
}); });
$document.off('click', '.js-confirm-danger');
$document.on('click', '.js-confirm-danger', function (e) { $document.on('click', '.js-confirm-danger', (e) => {
var btn = $(e.target); const btn = $(e.target);
var form = btn.closest('form'); const form = btn.closest('form');
var text = btn.data('confirm-danger-message'); const text = btn.data('confirm-danger-message');
e.preventDefault(); e.preventDefault();
return new ConfirmDangerModal(form, text);
}); // eslint-disable-next-line no-new
$('input[type="search"]').each(function () { new ConfirmDangerModal(form, text);
var $this = $(this);
$this.attr('value', $this.val());
});
$document.off('keyup', 'input[type="search"]').on('keyup', 'input[type="search"]', function () {
var $this;
$this = $(this);
return $this.attr('value', $this.val());
}); });
$document.off('breakpoint:change').on('breakpoint:change', function (e, breakpoint) {
var $gutterIcon; $document.on('breakpoint:change', (e, breakpoint) => {
if (breakpoint === 'sm' || breakpoint === 'xs') { if (breakpoint === 'sm' || breakpoint === 'xs') {
$gutterIcon = $sidebarGutterToggle.find('i'); const $gutterIcon = $sidebarGutterToggle.find('i');
if ($gutterIcon.hasClass('fa-angle-double-right')) { if ($gutterIcon.hasClass('fa-angle-double-right')) {
return $sidebarGutterToggle.trigger('click'); $sidebarGutterToggle.trigger('click');
} }
} }
}); });
fitSidebarForSize = function () {
var oldBootstrapBreakpoint; function fitSidebarForSize() {
oldBootstrapBreakpoint = bootstrapBreakpoint; const oldBootstrapBreakpoint = bootstrapBreakpoint;
bootstrapBreakpoint = bp.getBreakpointSize(); bootstrapBreakpoint = bp.getBreakpointSize();
if (bootstrapBreakpoint !== oldBootstrapBreakpoint) { if (bootstrapBreakpoint !== oldBootstrapBreakpoint) {
return $document.trigger('breakpoint:change', [bootstrapBreakpoint]); $document.trigger('breakpoint:change', [bootstrapBreakpoint]);
} }
}; }
$window.off('resize.app').on('resize.app', function () {
return fitSidebarForSize();
});
loadAwardsHandler();
renderTimeago(); $window.on('resize.app', fitSidebarForSize);
loadAwardsHandler();
$('form.filter-form').on('submit', function (event) { $('form.filter-form').on('submit', function filterFormSubmitCallback(event) {
const link = document.createElement('a'); const link = document.createElement('a');
link.href = this.action; link.href = this.action;
......
/* global Sortable */
import Flash from './flash'; import Flash from './flash';
export default class Milestone { export default class Milestone {
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import VueResource from 'vue-resource'; import VueResource from 'vue-resource';
......
/* global Mousetrap */ import Mousetrap from 'mousetrap';
import { getLocationHash, visitUrl } from './lib/utils/url_utility'; import { getLocationHash, visitUrl } from './lib/utils/url_utility';
import Shortcuts from './shortcuts'; import Shortcuts from './shortcuts';
......
/* global Mousetrap */ import Mousetrap from 'mousetrap';
import ShortcutsNavigation from './shortcuts_navigation'; import ShortcutsNavigation from './shortcuts_navigation';
export default class ShortcutsFindFile extends ShortcutsNavigation { export default class ShortcutsFindFile extends ShortcutsNavigation {
......
/* global Mousetrap */ import Mousetrap from 'mousetrap';
import _ from 'underscore'; import _ from 'underscore';
import 'mousetrap';
import Sidebar from './right_sidebar'; import Sidebar from './right_sidebar';
import ShortcutsNavigation from './shortcuts_navigation'; import ShortcutsNavigation from './shortcuts_navigation';
import { CopyAsGFM } from './behaviors/copy_as_gfm'; import { CopyAsGFM } from './behaviors/copy_as_gfm';
......
/* global Mousetrap */ import Mousetrap from 'mousetrap';
import findAndFollowLink from './shortcuts_dashboard_navigation'; import findAndFollowLink from './shortcuts_dashboard_navigation';
import Shortcuts from './shortcuts'; import Shortcuts from './shortcuts';
......
/* global Mousetrap */ import Mousetrap from 'mousetrap';
import ShortcutsNavigation from './shortcuts_navigation'; import ShortcutsNavigation from './shortcuts_navigation';
export default class ShortcutsNetwork extends ShortcutsNavigation { export default class ShortcutsNetwork extends ShortcutsNavigation {
......
/* eslint-disable class-methods-use-this */ import Mousetrap from 'mousetrap';
/* global Mousetrap */
import ShortcutsNavigation from './shortcuts_navigation'; import ShortcutsNavigation from './shortcuts_navigation';
import findAndFollowLink from './shortcuts_dashboard_navigation'; import findAndFollowLink from './shortcuts_dashboard_navigation';
export default class ShortcutsWiki extends ShortcutsNavigation { export default class ShortcutsWiki extends ShortcutsNavigation {
constructor() { constructor() {
super(); super();
Mousetrap.bind('e', this.editWiki); Mousetrap.bind('e', ShortcutsWiki.editWiki);
} }
editWiki() { static editWiki() {
findAndFollowLink('.js-wiki-edit'); findAndFollowLink('.js-wiki-edit');
} }
} }
/* eslint-disable func-names, space-before-function-paren, wrap-iife, prefer-arrow-callback, no-unused-vars, consistent-return, camelcase, comma-dangle, max-len, class-methods-use-this */ /* eslint-disable func-names, space-before-function-paren, wrap-iife, prefer-arrow-callback, no-unused-vars, consistent-return, camelcase, comma-dangle, max-len, class-methods-use-this */
/* global Mousetrap */
// Zen Mode (full screen) textarea // Zen Mode (full screen) textarea
// //
...@@ -8,9 +7,11 @@ ...@@ -8,9 +7,11 @@
import 'vendor/jquery.scrollTo'; import 'vendor/jquery.scrollTo';
import Dropzone from 'dropzone'; import Dropzone from 'dropzone';
import 'mousetrap'; import Mousetrap from 'mousetrap';
import 'mousetrap/plugins/pause/mousetrap-pause'; import 'mousetrap/plugins/pause/mousetrap-pause';
Dropzone.autoDiscover = false;
// //
// ### Events // ### Events
// //
......
...@@ -750,7 +750,7 @@ describe 'Copy as GFM', :js do ...@@ -750,7 +750,7 @@ describe 'Copy as GFM', :js do
js = <<-JS.strip_heredoc js = <<-JS.strip_heredoc
(function(selector) { (function(selector) {
var els = document.querySelectorAll(selector); var els = document.querySelectorAll(selector);
var htmls = _.map(els, function(el) { return el.outerHTML; }); var htmls = [].slice.call(els).map(function(el) { return el.outerHTML; });
return htmls.join("\\n"); return htmls.join("\\n");
})("#{escape_javascript(selector)}") })("#{escape_javascript(selector)}")
JS JS
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
import MockAdapter from 'axios-mock-adapter'; import MockAdapter from 'axios-mock-adapter';
import axios from '~/lib/utils/axios_utils'; import axios from '~/lib/utils/axios_utils';
import _ from 'underscore';
import '~/boards/models/issue'; import '~/boards/models/issue';
import '~/boards/models/label'; import '~/boards/models/label';
import '~/boards/models/list'; import '~/boards/models/list';
......
/* global BoardService */ /* global BoardService */
/* eslint-disable comma-dangle, no-unused-vars, quote-props */ /* eslint-disable comma-dangle, no-unused-vars, quote-props */
import _ from 'underscore';
export const listObj = { export const listObj = {
id: 300, id: 300,
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import pipelinesTable from '~/commit/pipelines/pipelines_table.vue'; import pipelinesTable from '~/commit/pipelines/pipelines_table.vue';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import eventHub from '~/deploy_keys/eventhub'; import eventHub from '~/deploy_keys/eventhub';
import deployKeysApp from '~/deploy_keys/components/app.vue'; import deployKeysApp from '~/deploy_keys/components/app.vue';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import environmentsComponent from '~/environments/components/environments_app.vue'; import environmentsComponent from '~/environments/components/environments_app.vue';
import { environment, folder } from './mock_data'; import { environment, folder } from './mock_data';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import environmentsFolderViewComponent from '~/environments/folder/environments_folder_view.vue'; import environmentsFolderViewComponent from '~/environments/folder/environments_folder_view.vue';
import { environmentsList } from '../mock_data'; import { environmentsList } from '../mock_data';
......
import _ from 'underscore';
import AjaxCache from '~/lib/utils/ajax_cache'; import AjaxCache from '~/lib/utils/ajax_cache';
import UsersCache from '~/lib/utils/users_cache'; import UsersCache from '~/lib/utils/users_cache';
......
import Vue from 'vue'; import Vue from 'vue';
import descriptionTemplate from '~/issue_show/components/fields/description_template.vue'; import descriptionTemplate from '~/issue_show/components/fields/description_template.vue';
import '~/templates/issuable_template_selector';
import '~/templates/issuable_template_selectors';
describe('Issue description template component', () => { describe('Issue description template component', () => {
let vm; let vm;
......
import Vue from 'vue'; import Vue from 'vue';
import formComponent from '~/issue_show/components/form.vue'; import formComponent from '~/issue_show/components/form.vue';
import '~/templates/issuable_template_selector';
import '~/templates/issuable_template_selectors';
describe('Inline edit form component', () => { describe('Inline edit form component', () => {
let vm; let vm;
......
import _ from 'underscore';
import 'autosize'; import 'autosize';
import '~/gl_form'; import '~/gl_form';
import '~/lib/utils/text_utility'; import '~/lib/utils/text_utility';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import notesApp from '~/notes/components/notes_app.vue'; import notesApp from '~/notes/components/notes_app.vue';
import service from '~/notes/services/notes_service'; import service from '~/notes/services/notes_service';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import store from '~/notes/stores'; import store from '~/notes/stores';
import issueNote from '~/notes/components/noteable_note.vue'; import issueNote from '~/notes/components/noteable_note.vue';
......
/* eslint-disable space-before-function-paren, no-unused-expressions, no-var, object-shorthand, comma-dangle, max-len */ /* eslint-disable space-before-function-paren, no-unused-expressions, no-var, object-shorthand, comma-dangle, max-len */
import _ from 'underscore';
import * as urlUtils from '~/lib/utils/url_utility'; import * as urlUtils from '~/lib/utils/url_utility';
import 'autosize'; import 'autosize';
import '~/gl_form'; import '~/gl_form';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import PipelineMediator from '~/pipelines/pipeline_details_mediatior'; import PipelineMediator from '~/pipelines/pipeline_details_mediatior';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import pipelinesComp from '~/pipelines/components/pipelines.vue'; import pipelinesComp from '~/pipelines/components/pipelines.vue';
import Store from '~/pipelines/stores/pipelines_store'; import Store from '~/pipelines/stores/pipelines_store';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import stage from '~/pipelines/components/stage.vue'; import stage from '~/pipelines/components/stage.vue';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import registry from '~/registry/components/app.vue'; import registry from '~/registry/components/app.vue';
import mountComponent from '../../helpers/vue_mount_component_helper'; import mountComponent from '../../helpers/vue_mount_component_helper';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import SidebarAssignees from '~/sidebar/components/assignees/sidebar_assignees'; import SidebarAssignees from '~/sidebar/components/assignees/sidebar_assignees';
import SidebarMediator from '~/sidebar/sidebar_mediator'; import SidebarMediator from '~/sidebar/sidebar_mediator';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import * as urlUtils from '~/lib/utils/url_utility'; import * as urlUtils from '~/lib/utils/url_utility';
import SidebarMediator from '~/sidebar/sidebar_mediator'; import SidebarMediator from '~/sidebar/sidebar_mediator';
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import SidebarMediator from '~/sidebar/sidebar_mediator'; import SidebarMediator from '~/sidebar/sidebar_mediator';
import SidebarStore from '~/sidebar/stores/sidebar_store'; import SidebarStore from '~/sidebar/stores/sidebar_store';
......
import _ from 'underscore';
import SmartInterval from '~/smart_interval'; import SmartInterval from '~/smart_interval';
describe('SmartInterval', function () { describe('SmartInterval', function () {
......
/* eslint-disable jasmine/no-global-setup */ /* eslint-disable jasmine/no-global-setup */
import $ from 'jquery'; import $ from 'jquery';
import _ from 'underscore';
import 'jasmine-jquery'; import 'jasmine-jquery';
import '~/commons'; import '~/commons';
...@@ -31,7 +30,6 @@ jasmine.getJSONFixtures().fixturesPath = '/base/spec/javascripts/fixtures'; ...@@ -31,7 +30,6 @@ jasmine.getJSONFixtures().fixturesPath = '/base/spec/javascripts/fixtures';
// globalize common libraries // globalize common libraries
window.$ = window.jQuery = $; window.$ = window.jQuery = $;
window._ = _;
// stub expected globals // stub expected globals
window.gl = window.gl || {}; window.gl = window.gl || {};
......
import _ from 'underscore';
import Vue from 'vue'; import Vue from 'vue';
import UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue'; import UserAvatarLink from '~/vue_shared/components/user_avatar/user_avatar_link.vue';
......
/* global Mousetrap */ import Mousetrap from 'mousetrap';
import Dropzone from 'dropzone'; import Dropzone from 'dropzone';
import ZenMode from '~/zen_mode'; import ZenMode from '~/zen_mode';
......
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