Merge branch 'es-class-syntax' into 'master'
Refactor several javascript files to ES module syntax See merge request !12683
This commit is contained in:
commit
c88739ffa6
31 changed files with 119 additions and 169 deletions
|
@ -2,6 +2,7 @@
|
|||
|
||||
import './lib/utils/url_utility';
|
||||
import FilesCommentButton from './files_comment_button';
|
||||
import SingleFileDiff from './single_file_diff';
|
||||
|
||||
const UNFOLD_COUNT = 20;
|
||||
let isBound = false;
|
||||
|
@ -10,7 +11,11 @@ class Diff {
|
|||
constructor() {
|
||||
const $diffFile = $('.files .diff-file');
|
||||
|
||||
$diffFile.singleFileDiff();
|
||||
$diffFile.each((index, file) => {
|
||||
if (!$.data(file, 'singleFileDiff')) {
|
||||
$.data(file, 'singleFileDiff', new SingleFileDiff(file));
|
||||
}
|
||||
});
|
||||
|
||||
FilesCommentButton.init($diffFile);
|
||||
|
||||
|
|
|
@ -1,17 +1,13 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-arrow-callback, wrap-iife, no-shadow, consistent-return, one-var, one-var-declaration-per-line, camelcase, default-case, no-new, quotes, no-duplicate-case, no-case-declarations, no-fallthrough, max-len */
|
||||
/* global UsernameValidator */
|
||||
/* global ActiveTabMemoizer */
|
||||
/* global ShortcutsNavigation */
|
||||
/* global IssuableIndex */
|
||||
/* global ShortcutsIssuable */
|
||||
/* global ZenMode */
|
||||
/* global Milestone */
|
||||
/* global IssuableForm */
|
||||
/* global LabelsSelect */
|
||||
/* global MilestoneSelect */
|
||||
/* global Commit */
|
||||
/* global NotificationsForm */
|
||||
/* global TreeView */
|
||||
/* global NotificationsDropdown */
|
||||
/* global GroupAvatar */
|
||||
/* global LineHighlighter */
|
||||
|
@ -25,7 +21,6 @@
|
|||
/* global ProjectAvatar */
|
||||
/* global CompareAutocomplete */
|
||||
/* global ProjectNew */
|
||||
/* global Star */
|
||||
/* global ProjectShow */
|
||||
/* global Labels */
|
||||
/* global Shortcuts */
|
||||
|
@ -54,6 +49,15 @@ import UsersSelect from './users_select';
|
|||
import RefSelectDropdown from './ref_select_dropdown';
|
||||
import GfmAutoComplete from './gfm_auto_complete';
|
||||
import ShortcutsBlob from './shortcuts_blob';
|
||||
import SigninTabsMemoizer from './signin_tabs_memoizer';
|
||||
import Star from './star';
|
||||
import Todos from './todos';
|
||||
import TreeView from './tree';
|
||||
import UsagePing from './usage_ping';
|
||||
import UsernameValidator from './username_validator';
|
||||
import VersionCheckImage from './version_check_image';
|
||||
import Wikis from './wikis';
|
||||
import ZenMode from './zen_mode';
|
||||
import initSettingsPanels from './settings_panels';
|
||||
import initExperimentalFlags from './experimental_flags';
|
||||
import OAuthRememberMe from './oauth_remember_me';
|
||||
|
@ -128,7 +132,7 @@ import PerformanceBar from './performance_bar';
|
|||
break;
|
||||
case 'sessions:new':
|
||||
new UsernameValidator();
|
||||
new ActiveTabMemoizer();
|
||||
new SigninTabsMemoizer();
|
||||
new OAuthRememberMe({ container: $(".omniauth-container") }).bindEvents();
|
||||
break;
|
||||
case 'projects:boards:show':
|
||||
|
@ -164,7 +168,7 @@ import PerformanceBar from './performance_bar';
|
|||
new UsersSelect();
|
||||
break;
|
||||
case 'dashboard:todos:index':
|
||||
new gl.Todos();
|
||||
new Todos();
|
||||
break;
|
||||
case 'dashboard:projects:index':
|
||||
case 'dashboard:projects:starred':
|
||||
|
@ -380,7 +384,7 @@ import PerformanceBar from './performance_bar';
|
|||
new BlobViewer();
|
||||
break;
|
||||
case 'help:index':
|
||||
gl.VersionCheckImage.bindErrorEvent($('img.js-version-status-badge'));
|
||||
VersionCheckImage.bindErrorEvent($('img.js-version-status-badge'));
|
||||
break;
|
||||
case 'search:show':
|
||||
new Search();
|
||||
|
@ -433,7 +437,7 @@ import PerformanceBar from './performance_bar';
|
|||
new Admin();
|
||||
switch (path[1]) {
|
||||
case 'cohorts':
|
||||
new gl.UsagePing();
|
||||
new UsagePing();
|
||||
break;
|
||||
case 'groups':
|
||||
new UsersSelect();
|
||||
|
@ -485,7 +489,7 @@ import PerformanceBar from './performance_bar';
|
|||
new NotificationsDropdown();
|
||||
break;
|
||||
case 'wikis':
|
||||
new gl.Wikis();
|
||||
new Wikis();
|
||||
shortcut_handler = new ShortcutsWiki();
|
||||
new ZenMode();
|
||||
new gl.GLForm($('.wiki-form'), true);
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, no-use-before-define, no-useless-escape, no-new, quotes, object-shorthand, no-unused-vars, comma-dangle, no-alert, consistent-return, no-else-return, prefer-template, one-var, one-var-declaration-per-line, curly, max-len */
|
||||
/* global GitLab */
|
||||
/* global ZenMode */
|
||||
/* global Autosave */
|
||||
/* global dateFormat */
|
||||
/* global Pikaday */
|
||||
|
||||
import UsersSelect from './users_select';
|
||||
import GfmAutoComplete from './gfm_auto_complete';
|
||||
import ZenMode from './zen_mode';
|
||||
|
||||
(function() {
|
||||
this.IssuableForm = (function() {
|
||||
|
|
|
@ -4,13 +4,13 @@
|
|||
import 'vendor/jquery.waitforimages';
|
||||
import '~/lib/utils/text_utility';
|
||||
import './flash';
|
||||
import './task_list';
|
||||
import TaskList from './task_list';
|
||||
import CreateMergeRequestDropdown from './create_merge_request_dropdown';
|
||||
|
||||
class Issue {
|
||||
constructor() {
|
||||
if ($('a.btn-close').length) {
|
||||
this.taskList = new gl.TaskList({
|
||||
this.taskList = new TaskList({
|
||||
dataType: 'issue',
|
||||
fieldName: 'description',
|
||||
selector: '.detail-page-description',
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<script>
|
||||
import animateMixin from '../mixins/animate';
|
||||
import TaskList from '../../task_list';
|
||||
|
||||
export default {
|
||||
mixins: [animateMixin],
|
||||
|
@ -46,7 +47,7 @@
|
|||
|
||||
if (this.canUpdate) {
|
||||
// eslint-disable-next-line no-new
|
||||
new gl.TaskList({
|
||||
new TaskList({
|
||||
dataType: 'issue',
|
||||
fieldName: 'description',
|
||||
selector: '.detail-page-description',
|
||||
|
|
|
@ -143,26 +143,13 @@ import './render_math';
|
|||
import './right_sidebar';
|
||||
import './search';
|
||||
import './search_autocomplete';
|
||||
import './signin_tabs_memoizer';
|
||||
import './single_file_diff';
|
||||
import './smart_interval';
|
||||
import './snippets_list';
|
||||
import './star';
|
||||
import './subscription';
|
||||
import './subscription_select';
|
||||
import './syntax_highlight';
|
||||
import './task_list';
|
||||
import './todos';
|
||||
import './tree';
|
||||
import './usage_ping';
|
||||
import './user';
|
||||
import './user_tabs';
|
||||
import './username_validator';
|
||||
import './users_select';
|
||||
import './version_check_image';
|
||||
import './visibility_select';
|
||||
import './wikis';
|
||||
import './zen_mode';
|
||||
|
||||
// eslint-disable-next-line global-require, import/no-commonjs
|
||||
if (process.env.NODE_ENV !== 'production') require('./test_utils/');
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
/* global MergeRequestTabs */
|
||||
|
||||
import 'vendor/jquery.waitforimages';
|
||||
import './task_list';
|
||||
import TaskList from './task_list';
|
||||
import './merge_request_tabs';
|
||||
|
||||
(function() {
|
||||
|
@ -25,7 +25,7 @@ import './merge_request_tabs';
|
|||
this.initMRBtnListeners();
|
||||
this.initCommitMessageListeners();
|
||||
if ($("a.btn-close").length) {
|
||||
this.taskList = new gl.TaskList({
|
||||
this.taskList = new TaskList({
|
||||
dataType: 'merge_request',
|
||||
fieldName: 'description',
|
||||
selector: '.detail-page-description',
|
||||
|
|
|
@ -21,7 +21,7 @@ import CommentTypeToggle from './comment_type_toggle';
|
|||
import loadAwardsHandler from './awards_handler';
|
||||
import './autosave';
|
||||
import './dropzone_input';
|
||||
import './task_list';
|
||||
import TaskList from './task_list';
|
||||
|
||||
window.autosize = autosize;
|
||||
window.Dropzone = Dropzone;
|
||||
|
@ -71,7 +71,7 @@ export default class Notes {
|
|||
this.addBinding();
|
||||
this.setPollingInterval();
|
||||
this.setupMainTargetNoteForm();
|
||||
this.taskList = new gl.TaskList({
|
||||
this.taskList = new TaskList({
|
||||
dataType: 'note',
|
||||
fieldName: 'note',
|
||||
selector: '.notes'
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, no-var, prefer-rest-params, wrap-iife, no-unused-vars, one-var, no-underscore-dangle, prefer-template, no-else-return, prefer-arrow-callback, max-len */
|
||||
|
||||
import VisibilitySelect from './visibility_select';
|
||||
|
||||
function highlightChanges($elm) {
|
||||
$elm.addClass('highlight-changes');
|
||||
setTimeout(() => $elm.removeClass('highlight-changes'), 10);
|
||||
|
@ -30,7 +32,7 @@ function highlightChanges($elm) {
|
|||
ProjectNew.prototype.initVisibilitySelect = function() {
|
||||
const visibilityContainer = document.querySelector('.js-visibility-select');
|
||||
if (!visibilityContainer) return;
|
||||
const visibilitySelect = new gl.VisibilitySelect(visibilityContainer);
|
||||
const visibilitySelect = new VisibilitySelect(visibilityContainer);
|
||||
visibilitySelect.init();
|
||||
|
||||
const $visibilitySelect = $(visibilityContainer).find('select');
|
||||
|
|
|
@ -6,7 +6,7 @@ import AccessorUtilities from './lib/utils/accessor';
|
|||
* Memorize the last selected tab after reloading a page.
|
||||
* Does that setting the current selected tab in the localStorage
|
||||
*/
|
||||
class ActiveTabMemoizer {
|
||||
export default class SigninTabsMemoizer {
|
||||
constructor({ currentTabKey = 'current_signin_tab', tabSelector = 'ul.nav-tabs' } = {}) {
|
||||
this.currentTabKey = currentTabKey;
|
||||
this.tabSelector = tabSelector;
|
||||
|
@ -51,5 +51,3 @@ class ActiveTabMemoizer {
|
|||
return window.localStorage.getItem(this.currentTabKey);
|
||||
}
|
||||
}
|
||||
|
||||
window.ActiveTabMemoizer = ActiveTabMemoizer;
|
||||
|
|
|
@ -2,18 +2,13 @@
|
|||
|
||||
import FilesCommentButton from './files_comment_button';
|
||||
|
||||
window.SingleFileDiff = (function() {
|
||||
var COLLAPSED_HTML, ERROR_HTML, LOADING_HTML, WRAPPER;
|
||||
const WRAPPER = '<div class="diff-content"></div>';
|
||||
const LOADING_HTML = '<i class="fa fa-spinner fa-spin"></i>';
|
||||
const ERROR_HTML = '<div class="nothing-here-block"><i class="fa fa-warning"></i> Could not load diff</div>';
|
||||
const COLLAPSED_HTML = '<div class="nothing-here-block diff-collapsed">This diff is collapsed. <a class="click-to-expand">Click to expand it.</a></div>';
|
||||
|
||||
WRAPPER = '<div class="diff-content"></div>';
|
||||
|
||||
LOADING_HTML = '<i class="fa fa-spinner fa-spin"></i>';
|
||||
|
||||
ERROR_HTML = '<div class="nothing-here-block"><i class="fa fa-warning"></i> Could not load diff</div>';
|
||||
|
||||
COLLAPSED_HTML = '<div class="nothing-here-block diff-collapsed">This diff is collapsed. <a class="click-to-expand">Click to expand it.</a></div>';
|
||||
|
||||
function SingleFileDiff(file) {
|
||||
export default class SingleFileDiff {
|
||||
constructor(file) {
|
||||
this.file = file;
|
||||
this.toggleDiff = this.toggleDiff.bind(this);
|
||||
this.content = $('.diff-content', this.file);
|
||||
|
@ -37,7 +32,7 @@ window.SingleFileDiff = (function() {
|
|||
}).bind(this));
|
||||
}
|
||||
|
||||
SingleFileDiff.prototype.toggleDiff = function($target, cb) {
|
||||
toggleDiff($target, cb) {
|
||||
if (!$target.hasClass('js-file-title') && !$target.hasClass('click-to-expand') && !$target.hasClass('diff-toggle-caret')) return;
|
||||
this.isOpen = !this.isOpen;
|
||||
if (!this.isOpen && !this.hasError) {
|
||||
|
@ -58,9 +53,9 @@ window.SingleFileDiff = (function() {
|
|||
this.$toggleIcon.addClass('fa-caret-down').removeClass('fa-caret-right');
|
||||
return this.getContentHTML(cb);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
SingleFileDiff.prototype.getContentHTML = function(cb) {
|
||||
getContentHTML(cb) {
|
||||
this.collapsedContent.hide();
|
||||
this.loadingContent.show();
|
||||
$.get(this.diffForPath, (function(_this) {
|
||||
|
@ -84,15 +79,5 @@ window.SingleFileDiff = (function() {
|
|||
if (cb) cb();
|
||||
};
|
||||
})(this));
|
||||
};
|
||||
|
||||
return SingleFileDiff;
|
||||
})();
|
||||
|
||||
$.fn.singleFileDiff = function() {
|
||||
return this.each(function() {
|
||||
if (!$.data(this, 'singleFileDiff')) {
|
||||
return $.data(this, 'singleFileDiff', new window.SingleFileDiff(this));
|
||||
}
|
||||
});
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
/* eslint-disable arrow-parens, no-param-reassign, space-before-function-paren, func-names, no-var, max-len */
|
||||
|
||||
window.gl.SnippetsList = function() {
|
||||
var $holder = $('.snippets-list-holder');
|
||||
function SnippetsList() {
|
||||
const $holder = $('.snippets-list-holder');
|
||||
|
||||
$holder.find('.pagination').on('ajax:success', (e, data) => {
|
||||
$holder.replaceWith(data.html);
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
window.gl.SnippetsList = SnippetsList;
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-unused-vars, one-var, no-var, one-var-declaration-per-line, prefer-arrow-callback, no-new, max-len */
|
||||
/* global Flash */
|
||||
|
||||
window.Star = (function() {
|
||||
function Star() {
|
||||
export default class Star {
|
||||
constructor() {
|
||||
$('.project-home-panel .toggle-star').on('ajax:success', function(e, data, status, xhr) {
|
||||
var $starIcon, $starSpan, $this, toggleStar;
|
||||
$this = $(this);
|
||||
|
@ -23,6 +23,4 @@ window.Star = (function() {
|
|||
new Flash('Star toggle failed. Try again later.', 'alert');
|
||||
});
|
||||
}
|
||||
|
||||
return Star;
|
||||
})();
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, no-var, quotes, object-shorthand, no-unused-vars, no-shadow, one-var, one-var-declaration-per-line, comma-dangle, max-len */
|
||||
|
||||
window.SubscriptionSelect = (function() {
|
||||
function SubscriptionSelect() {
|
||||
class SubscriptionSelect {
|
||||
constructor() {
|
||||
$('.js-subscription-event').each(function(i, el) {
|
||||
var fieldName;
|
||||
fieldName = $(el).data("field-name");
|
||||
|
@ -28,6 +28,6 @@ window.SubscriptionSelect = (function() {
|
|||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return SubscriptionSelect;
|
||||
})();
|
||||
window.SubscriptionSelect = SubscriptionSelect;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import 'deckar01-task_list';
|
||||
|
||||
class TaskList {
|
||||
export default class TaskList {
|
||||
constructor(options = {}) {
|
||||
this.selector = options.selector;
|
||||
this.dataType = options.dataType;
|
||||
|
@ -48,6 +48,3 @@ class TaskList {
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
window.gl = window.gl || {};
|
||||
window.gl.TaskList = TaskList;
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
import UsersSelect from './users_select';
|
||||
|
||||
class Todos {
|
||||
export default class Todos {
|
||||
constructor() {
|
||||
this.initFilters();
|
||||
this.bindEvents();
|
||||
|
@ -159,6 +159,3 @@ class Todos {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.gl = window.gl || {};
|
||||
gl.Todos = Todos;
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, max-len, quotes, consistent-return, no-var, one-var, one-var-declaration-per-line, no-else-return, prefer-arrow-callback, max-len */
|
||||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, max-len, quotes, consistent-return, no-var, one-var, one-var-declaration-per-line, no-else-return, prefer-arrow-callback, class-methods-use-this */
|
||||
|
||||
window.TreeView = (function() {
|
||||
function TreeView() {
|
||||
export default class TreeView {
|
||||
constructor() {
|
||||
this.initKeyNav();
|
||||
// Code browser tree slider
|
||||
// Make the entire tree-item row clickable, but not if clicking another link (like a commit message)
|
||||
|
@ -22,7 +22,7 @@ window.TreeView = (function() {
|
|||
$('span.log_loading:first').removeClass('hide');
|
||||
}
|
||||
|
||||
TreeView.prototype.initKeyNav = function() {
|
||||
initKeyNav() {
|
||||
var li, liSelected;
|
||||
li = $("tr.tree-item");
|
||||
liSelected = null;
|
||||
|
@ -60,7 +60,5 @@ window.TreeView = (function() {
|
|||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
return TreeView;
|
||||
})();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
function UsagePing() {
|
||||
export default function UsagePing() {
|
||||
const usageDataUrl = $('.usage-data').data('endpoint');
|
||||
|
||||
$.ajax({
|
||||
|
@ -10,6 +10,3 @@ function UsagePing() {
|
|||
},
|
||||
});
|
||||
}
|
||||
|
||||
window.gl = window.gl || {};
|
||||
window.gl.UsagePing = UsagePing;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
/* eslint-disable class-methods-use-this, comma-dangle, arrow-parens, no-param-reassign */
|
||||
|
||||
import Cookies from 'js-cookie';
|
||||
import UserTabs from './user_tabs';
|
||||
|
||||
class User {
|
||||
constructor({ action }) {
|
||||
|
@ -17,7 +18,7 @@ class User {
|
|||
}
|
||||
|
||||
initTabs() {
|
||||
return new window.gl.UserTabs({
|
||||
return new UserTabs({
|
||||
parentEl: '.user-profile',
|
||||
action: this.action
|
||||
});
|
||||
|
|
|
@ -60,7 +60,7 @@ content on the Users#show page.
|
|||
</div>
|
||||
*/
|
||||
|
||||
class UserTabs {
|
||||
export default class UserTabs {
|
||||
constructor ({ defaultAction, action, parentEl }) {
|
||||
this.loaded = {};
|
||||
this.defaultAction = defaultAction || 'activity';
|
||||
|
@ -171,6 +171,3 @@ class UserTabs {
|
|||
return this.$parentEl.find('.nav-links .active a').data('action');
|
||||
}
|
||||
}
|
||||
|
||||
window.gl = window.gl || {};
|
||||
window.gl.UserTabs = UserTabs;
|
||||
|
|
|
@ -8,7 +8,7 @@ const successMessageSelector = '.username .validation-success';
|
|||
const pendingMessageSelector = '.username .validation-pending';
|
||||
const invalidMessageSelector = '.username .gl-field-error';
|
||||
|
||||
class UsernameValidator {
|
||||
export default class UsernameValidator {
|
||||
constructor() {
|
||||
this.inputElement = $('#new_user_username');
|
||||
this.inputDomElement = this.inputElement.get(0);
|
||||
|
@ -129,5 +129,3 @@ class UsernameValidator {
|
|||
$inputErrorMessage.show();
|
||||
}
|
||||
}
|
||||
|
||||
window.UsernameValidator = UsernameValidator;
|
||||
|
|
|
@ -3,6 +3,3 @@ export default class VersionCheckImage {
|
|||
imageElement.off('error').on('error', () => imageElement.hide());
|
||||
}
|
||||
}
|
||||
|
||||
window.gl = window.gl || {};
|
||||
gl.VersionCheckImage = VersionCheckImage;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
class VisibilitySelect {
|
||||
export default class VisibilitySelect {
|
||||
constructor(container) {
|
||||
if (!container) throw new Error('VisibilitySelect requires a container element as argument 1');
|
||||
this.container = container;
|
||||
|
@ -19,6 +19,3 @@ class VisibilitySelect {
|
|||
this.helpBlock.textContent = this.select.querySelector('option:checked').dataset.description;
|
||||
}
|
||||
}
|
||||
|
||||
window.gl = window.gl || {};
|
||||
window.gl.VisibilitySelect = VisibilitySelect;
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
/* eslint-disable no-param-reassign */
|
||||
/* global Breakpoints */
|
||||
|
||||
import 'vendor/jquery.nicescroll';
|
||||
import './breakpoints';
|
||||
|
||||
class Wikis {
|
||||
export default class Wikis {
|
||||
constructor() {
|
||||
this.bp = Breakpoints.get();
|
||||
this.sidebarEl = document.querySelector('.js-wiki-sidebar');
|
||||
|
@ -63,6 +62,3 @@ class Wikis {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
window.gl = window.gl || {};
|
||||
window.gl.Wikis = Wikis;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* eslint-disable func-names, space-before-function-paren, wrap-iife, prefer-arrow-callback, no-unused-vars, consistent-return, camelcase, comma-dangle, max-len */
|
||||
/* 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
|
||||
|
@ -35,8 +35,8 @@ window.Dropzone = Dropzone;
|
|||
// **Target** a.js-zen-leave
|
||||
//
|
||||
|
||||
window.ZenMode = (function() {
|
||||
function ZenMode() {
|
||||
export default class ZenMode {
|
||||
constructor() {
|
||||
this.active_backdrop = null;
|
||||
this.active_textarea = null;
|
||||
$(document).on('click', '.js-zen-enter', function(e) {
|
||||
|
@ -66,7 +66,7 @@ window.ZenMode = (function() {
|
|||
});
|
||||
}
|
||||
|
||||
ZenMode.prototype.enter = function(backdrop) {
|
||||
enter(backdrop) {
|
||||
Mousetrap.pause();
|
||||
this.active_backdrop = $(backdrop);
|
||||
this.active_backdrop.addClass('fullscreen');
|
||||
|
@ -74,9 +74,9 @@ window.ZenMode = (function() {
|
|||
// Prevent a user-resized textarea from persisting to fullscreen
|
||||
this.active_textarea.removeAttr('style');
|
||||
return this.active_textarea.focus();
|
||||
};
|
||||
}
|
||||
|
||||
ZenMode.prototype.exit = function() {
|
||||
exit() {
|
||||
if (this.active_textarea) {
|
||||
Mousetrap.unpause();
|
||||
this.active_textarea.closest('.zen-backdrop').removeClass('fullscreen');
|
||||
|
@ -85,13 +85,11 @@ window.ZenMode = (function() {
|
|||
this.active_backdrop = null;
|
||||
return Dropzone.forElement('.div-dropzone').enable();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
ZenMode.prototype.scrollTo = function(zen_area) {
|
||||
scrollTo(zen_area) {
|
||||
return $.scrollTo(zen_area, 0, {
|
||||
offset: -150
|
||||
});
|
||||
};
|
||||
|
||||
return ZenMode;
|
||||
})();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -44,32 +44,34 @@ describe('Description component', () => {
|
|||
});
|
||||
});
|
||||
|
||||
it('re-inits the TaskList when description changed', (done) => {
|
||||
spyOn(gl, 'TaskList');
|
||||
vm.descriptionHtml = 'changed';
|
||||
// TODO: gl.TaskList no longer exists. rewrite these tests once we have a way to rewire ES modules
|
||||
|
||||
setTimeout(() => {
|
||||
expect(
|
||||
gl.TaskList,
|
||||
).toHaveBeenCalled();
|
||||
// it('re-inits the TaskList when description changed', (done) => {
|
||||
// spyOn(gl, 'TaskList');
|
||||
// vm.descriptionHtml = 'changed';
|
||||
//
|
||||
// setTimeout(() => {
|
||||
// expect(
|
||||
// gl.TaskList,
|
||||
// ).toHaveBeenCalled();
|
||||
//
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
it('does not re-init the TaskList when canUpdate is false', (done) => {
|
||||
spyOn(gl, 'TaskList');
|
||||
vm.canUpdate = false;
|
||||
vm.descriptionHtml = 'changed';
|
||||
|
||||
setTimeout(() => {
|
||||
expect(
|
||||
gl.TaskList,
|
||||
).not.toHaveBeenCalled();
|
||||
|
||||
done();
|
||||
});
|
||||
});
|
||||
// it('does not re-init the TaskList when canUpdate is false', (done) => {
|
||||
// spyOn(gl, 'TaskList');
|
||||
// vm.canUpdate = false;
|
||||
// vm.descriptionHtml = 'changed';
|
||||
//
|
||||
// setTimeout(() => {
|
||||
// expect(
|
||||
// gl.TaskList,
|
||||
// ).not.toHaveBeenCalled();
|
||||
//
|
||||
// done();
|
||||
// });
|
||||
// });
|
||||
|
||||
describe('taskStatus', () => {
|
||||
it('adds full taskStatus', (done) => {
|
||||
|
|
|
@ -6,7 +6,6 @@ import '~/commit/pipelines/pipelines_bundle';
|
|||
import '~/breakpoints';
|
||||
import '~/lib/utils/common_utils';
|
||||
import '~/diff';
|
||||
import '~/single_file_diff';
|
||||
import '~/files_comment_button';
|
||||
import '~/notes';
|
||||
import 'vendor/jquery.scrollTo';
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
import AccessorUtilities from '~/lib/utils/accessor';
|
||||
import SigninTabsMemoizer from '~/signin_tabs_memoizer';
|
||||
|
||||
import '~/signin_tabs_memoizer';
|
||||
|
||||
((global) => {
|
||||
(() => {
|
||||
describe('SigninTabsMemoizer', () => {
|
||||
const fixtureTemplate = 'static/signin_tabs.html.raw';
|
||||
const tabSelector = 'ul.nav-tabs';
|
||||
|
@ -10,7 +9,7 @@ import '~/signin_tabs_memoizer';
|
|||
let memo;
|
||||
|
||||
function createMemoizer() {
|
||||
memo = new global.ActiveTabMemoizer({
|
||||
memo = new SigninTabsMemoizer({
|
||||
currentTabKey,
|
||||
tabSelector,
|
||||
});
|
||||
|
@ -78,7 +77,7 @@ import '~/signin_tabs_memoizer';
|
|||
beforeEach(function () {
|
||||
memo.isLocalStorageAvailable = false;
|
||||
|
||||
global.ActiveTabMemoizer.prototype.saveData.call(memo);
|
||||
SigninTabsMemoizer.prototype.saveData.call(memo);
|
||||
});
|
||||
|
||||
it('should not call .setItem', () => {
|
||||
|
@ -92,7 +91,7 @@ import '~/signin_tabs_memoizer';
|
|||
beforeEach(function () {
|
||||
memo.isLocalStorageAvailable = true;
|
||||
|
||||
global.ActiveTabMemoizer.prototype.saveData.call(memo, value);
|
||||
SigninTabsMemoizer.prototype.saveData.call(memo, value);
|
||||
});
|
||||
|
||||
it('should call .setItem', () => {
|
||||
|
@ -117,7 +116,7 @@ import '~/signin_tabs_memoizer';
|
|||
beforeEach(function () {
|
||||
memo.isLocalStorageAvailable = false;
|
||||
|
||||
readData = global.ActiveTabMemoizer.prototype.readData.call(memo);
|
||||
readData = SigninTabsMemoizer.prototype.readData.call(memo);
|
||||
});
|
||||
|
||||
it('should not call .getItem and should return `null`', () => {
|
||||
|
@ -130,7 +129,7 @@ import '~/signin_tabs_memoizer';
|
|||
beforeEach(function () {
|
||||
memo.isLocalStorageAvailable = true;
|
||||
|
||||
readData = global.ActiveTabMemoizer.prototype.readData.call(memo);
|
||||
readData = SigninTabsMemoizer.prototype.readData.call(memo);
|
||||
});
|
||||
|
||||
it('should call .getItem and return the localStorage value', () => {
|
||||
|
@ -140,4 +139,4 @@ import '~/signin_tabs_memoizer';
|
|||
});
|
||||
});
|
||||
});
|
||||
})(window);
|
||||
})();
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import '~/todos';
|
||||
import Todos from '~/todos';
|
||||
import '~/lib/utils/common_utils';
|
||||
|
||||
describe('Todos', () => {
|
||||
|
@ -9,7 +9,7 @@ describe('Todos', () => {
|
|||
loadFixtures('todos/todos.html.raw');
|
||||
todoItem = document.querySelector('.todos-list .todo');
|
||||
|
||||
return new gl.Todos();
|
||||
return new Todos();
|
||||
});
|
||||
|
||||
describe('goToTodoUrl', () => {
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
import '~/visibility_select';
|
||||
import VisibilitySelect from '~/visibility_select';
|
||||
|
||||
(() => {
|
||||
const VisibilitySelect = gl.VisibilitySelect;
|
||||
|
||||
describe('VisibilitySelect', function () {
|
||||
const lockedElement = document.createElement('div');
|
||||
lockedElement.dataset.helpBlock = 'lockedHelpBlock';
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
/* eslint-disable space-before-function-paren, no-var, one-var, one-var-declaration-per-line, object-shorthand, comma-dangle, no-return-assign, new-cap, max-len */
|
||||
/* global Dropzone */
|
||||
/* global Mousetrap */
|
||||
/* global ZenMode */
|
||||
|
||||
import '~/zen_mode';
|
||||
import ZenMode from '~/zen_mode';
|
||||
|
||||
(function() {
|
||||
var enterZen, escapeKeydown, exitZen;
|
||||
|
|
Loading…
Reference in a new issue