Commit 40e5f21d authored by Phil Hughes's avatar Phil Hughes

EE port of ph-even-more-es-modules

parent c1cc5e51
/* eslint-disable comma-dangle, space-before-function-paren, no-new */ /* eslint-disable comma-dangle, space-before-function-paren, no-new */
/* global MilestoneSelect */ /* global MilestoneSelect */
/* global Sidebar */
import Vue from 'vue'; import Vue from 'vue';
import weight from 'ee/sidebar/components/weight/weight.vue'; import weight from 'ee/sidebar/components/weight/weight.vue';
import Flash from '../../flash'; import Flash from '../../flash';
import Sidebar from '../../right_sidebar';
import eventHub from '../../sidebar/event_hub'; import eventHub from '../../sidebar/event_hub';
import assigneeTitle from '../../sidebar/components/assignees/assignee_title'; import assigneeTitle from '../../sidebar/components/assignees/assignee_title';
import assignees from '../../sidebar/components/assignees/assignees'; import assignees from '../../sidebar/components/assignees/assignees';
......
...@@ -11,7 +11,7 @@ import NewBranchForm from './new_branch_form'; ...@@ -11,7 +11,7 @@ import NewBranchForm from './new_branch_form';
/* global NotificationsDropdown */ /* global NotificationsDropdown */
import groupAvatar from './group_avatar'; import groupAvatar from './group_avatar';
import GroupLabelSubscription from './group_label_subscription'; import GroupLabelSubscription from './group_label_subscription';
/* global LineHighlighter */ import LineHighlighter from './line_highlighter';
import BuildArtifacts from './build_artifacts'; import BuildArtifacts from './build_artifacts';
import CILintEditor from './ci_lint_editor'; import CILintEditor from './ci_lint_editor';
import groupsSelect from './groups_select'; import groupsSelect from './groups_select';
...@@ -21,7 +21,7 @@ import NamespaceSelect from './namespace_select'; ...@@ -21,7 +21,7 @@ import NamespaceSelect from './namespace_select';
import NewCommitForm from './new_commit_form'; import NewCommitForm from './new_commit_form';
import Project from './project'; import Project from './project';
import projectAvatar from './project_avatar'; import projectAvatar from './project_avatar';
/* global MergeRequest */ import MergeRequest from './merge_request';
import Compare from './compare'; import Compare from './compare';
import initCompareAutocomplete from './compare_autocomplete'; import initCompareAutocomplete from './compare_autocomplete';
/* global PathLocks */ /* global PathLocks */
...@@ -30,7 +30,7 @@ import ProjectNew from './project_new'; ...@@ -30,7 +30,7 @@ import ProjectNew from './project_new';
import projectImport from './project_import'; import projectImport from './project_import';
import Labels from './labels'; import Labels from './labels';
import LabelManager from './label_manager'; import LabelManager from './label_manager';
/* global Sidebar */ import Sidebar from './right_sidebar';
/* global WeightSelect */ /* global WeightSelect */
/* global AdminEmailSelect */ /* global AdminEmailSelect */
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
/* global WeightSelect */ /* global WeightSelect */
import LabelsSelect from './labels_select'; import LabelsSelect from './labels_select';
import IssuableContext from './issuable_context'; import IssuableContext from './issuable_context';
/* global Sidebar */ import Sidebar from './right_sidebar';
import DueDateSelectors from './due_date_select'; import DueDateSelectors from './due_date_select';
...@@ -17,5 +17,5 @@ export default () => { ...@@ -17,5 +17,5 @@ export default () => {
new WeightSelect(); new WeightSelect();
new IssuableContext(sidebarOptions.currentUser); new IssuableContext(sidebarOptions.currentUser);
new DueDateSelectors(); new DueDateSelectors();
window.sidebar = new Sidebar(); Sidebar.initialize();
}; };
...@@ -175,4 +175,4 @@ LineHighlighter.prototype.__setLocationHash__ = function(value) { ...@@ -175,4 +175,4 @@ LineHighlighter.prototype.__setLocationHash__ = function(value) {
}, document.title, value); }, document.title, value);
}; };
window.LineHighlighter = LineHighlighter; export default LineHighlighter;
...@@ -50,7 +50,6 @@ import './layout_nav'; ...@@ -50,7 +50,6 @@ import './layout_nav';
import LazyLoader from './lazy_loader'; import LazyLoader from './lazy_loader';
import './line_highlighter'; import './line_highlighter';
import initLogoAnimation from './logo'; import initLogoAnimation from './logo';
import './merge_request';
import './merge_request_tabs'; import './merge_request_tabs';
import './milestone_select'; import './milestone_select';
import './notes'; import './notes';
...@@ -61,7 +60,6 @@ import './preview_markdown'; ...@@ -61,7 +60,6 @@ import './preview_markdown';
import './project_import'; import './project_import';
import './projects_dropdown'; import './projects_dropdown';
import './render_gfm'; import './render_gfm';
import './right_sidebar';
import initBreadcrumbs from './breadcrumb'; import initBreadcrumbs from './breadcrumb';
// EE-only scripts // EE-only scripts
......
...@@ -7,9 +7,7 @@ import './merge_request_tabs'; ...@@ -7,9 +7,7 @@ import './merge_request_tabs';
import IssuablesHelper from './helpers/issuables_helper'; import IssuablesHelper from './helpers/issuables_helper';
import { addDelimiter } from './lib/utils/text_utility'; import { addDelimiter } from './lib/utils/text_utility';
(function() { function MergeRequest(opts) {
this.MergeRequest = (function() {
function MergeRequest(opts) {
// Initialize MergeRequest behavior // Initialize MergeRequest behavior
// //
// Options: // Options:
...@@ -40,26 +38,26 @@ import { addDelimiter } from './lib/utils/text_utility'; ...@@ -40,26 +38,26 @@ import { addDelimiter } from './lib/utils/text_utility';
} }
}); });
} }
} }
// Local jQuery finder // Local jQuery finder
MergeRequest.prototype.$ = function(selector) { MergeRequest.prototype.$ = function(selector) {
return this.$el.find(selector); return this.$el.find(selector);
}; };
MergeRequest.prototype.initTabs = function() { MergeRequest.prototype.initTabs = function() {
if (window.mrTabs) { if (window.mrTabs) {
window.mrTabs.unbindEvents(); window.mrTabs.unbindEvents();
} }
window.mrTabs = new gl.MergeRequestTabs(this.opts); window.mrTabs = new gl.MergeRequestTabs(this.opts);
}; };
MergeRequest.prototype.showAllCommits = function() { MergeRequest.prototype.showAllCommits = function() {
this.$('.first-commits').remove(); this.$('.first-commits').remove();
return this.$('.all-commits').removeClass('hide'); return this.$('.all-commits').removeClass('hide');
}; };
MergeRequest.prototype.initMRBtnListeners = function() { MergeRequest.prototype.initMRBtnListeners = function() {
var _this; var _this;
_this = this; _this = this;
return $('a.btn-close, a.btn-reopen').on('click', function(e) { return $('a.btn-close, a.btn-reopen').on('click', function(e) {
...@@ -81,9 +79,9 @@ import { addDelimiter } from './lib/utils/text_utility'; ...@@ -81,9 +79,9 @@ import { addDelimiter } from './lib/utils/text_utility';
} }
} }
}); });
}; };
MergeRequest.prototype.submitNoteForm = function(form, $button) { MergeRequest.prototype.submitNoteForm = function(form, $button) {
var noteText; var noteText;
noteText = form.find("textarea.js-note-text").val(); noteText = form.find("textarea.js-note-text").val();
if (noteText.trim().length > 0) { if (noteText.trim().length > 0) {
...@@ -91,9 +89,9 @@ import { addDelimiter } from './lib/utils/text_utility'; ...@@ -91,9 +89,9 @@ import { addDelimiter } from './lib/utils/text_utility';
$button.data('submitted', true); $button.data('submitted', true);
return $button.trigger('click'); return $button.trigger('click');
} }
}; };
MergeRequest.prototype.initCommitMessageListeners = function() { MergeRequest.prototype.initCommitMessageListeners = function() {
$(document).on('click', 'a.js-with-description-link', function(e) { $(document).on('click', 'a.js-with-description-link', function(e) {
var textarea = $('textarea.js-commit-message'); var textarea = $('textarea.js-commit-message');
e.preventDefault(); e.preventDefault();
...@@ -111,24 +109,24 @@ import { addDelimiter } from './lib/utils/text_utility'; ...@@ -111,24 +109,24 @@ import { addDelimiter } from './lib/utils/text_utility';
$('.js-with-description-hint').show(); $('.js-with-description-hint').show();
$('.js-without-description-hint').hide(); $('.js-without-description-hint').hide();
}); });
}; };
MergeRequest.prototype.updateStatusText = function(classToRemove, classToAdd, newStatusText) { MergeRequest.prototype.updateStatusText = function(classToRemove, classToAdd, newStatusText) {
$('.detail-page-header .status-box') $('.detail-page-header .status-box')
.removeClass(classToRemove) .removeClass(classToRemove)
.addClass(classToAdd) .addClass(classToAdd)
.find('span') .find('span')
.text(newStatusText); .text(newStatusText);
}; };
MergeRequest.prototype.decreaseCounter = function(by = 1) { MergeRequest.prototype.decreaseCounter = function(by = 1) {
const $el = $('.nav-links .js-merge-counter'); const $el = $('.nav-links .js-merge-counter');
const count = Math.max((parseInt($el.text().replace(/[^\d]/, ''), 10) - by), 0); const count = Math.max((parseInt($el.text().replace(/[^\d]/, ''), 10) - by), 0);
$el.text(addDelimiter(count)); $el.text(addDelimiter(count));
}; };
MergeRequest.prototype.hideCloseButton = function() { MergeRequest.prototype.hideCloseButton = function() {
const el = document.querySelector('.merge-request .js-issuable-actions'); const el = document.querySelector('.merge-request .js-issuable-actions');
const closeDropdownItem = el.querySelector('li.close-item'); const closeDropdownItem = el.querySelector('li.close-item');
if (closeDropdownItem) { if (closeDropdownItem) {
...@@ -141,8 +139,6 @@ import { addDelimiter } from './lib/utils/text_utility'; ...@@ -141,8 +139,6 @@ import { addDelimiter } from './lib/utils/text_utility';
} }
// Dropdown for mobile screen // Dropdown for mobile screen
el.querySelector('li.js-close-item').classList.add('hidden'); el.querySelector('li.js-close-item').classList.add('hidden');
}; };
return MergeRequest; export default MergeRequest;
})();
}).call(window);
<script> <script>
/* global LineHighlighter */
import { mapGetters } from 'vuex'; import { mapGetters } from 'vuex';
import LineHighlighter from '../../line_highlighter';
import syntaxHighlight from '../../syntax_highlight'; import syntaxHighlight from '../../syntax_highlight';
export default { export default {
......
...@@ -3,25 +3,29 @@ ...@@ -3,25 +3,29 @@
import _ from 'underscore'; import _ from 'underscore';
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
(function() { function Sidebar(currentUser) {
this.Sidebar = (function() {
function Sidebar(currentUser) {
this.toggleTodo = this.toggleTodo.bind(this); this.toggleTodo = this.toggleTodo.bind(this);
this.sidebar = $('aside'); this.sidebar = $('aside');
this.removeListeners(); this.removeListeners();
this.addEventListeners(); this.addEventListeners();
}
Sidebar.initialize = function(currentUser) {
if (!this.instance) {
this.instance = new Sidebar(currentUser);
} }
};
Sidebar.prototype.removeListeners = function () { Sidebar.prototype.removeListeners = function () {
this.sidebar.off('click', '.sidebar-collapsed-icon'); this.sidebar.off('click', '.sidebar-collapsed-icon');
this.sidebar.off('hidden.gl.dropdown'); this.sidebar.off('hidden.gl.dropdown');
$('.dropdown').off('loading.gl.dropdown'); $('.dropdown').off('loading.gl.dropdown');
$('.dropdown').off('loaded.gl.dropdown'); $('.dropdown').off('loaded.gl.dropdown');
$(document).off('click', '.js-sidebar-toggle'); $(document).off('click', '.js-sidebar-toggle');
}; };
Sidebar.prototype.addEventListeners = function() { Sidebar.prototype.addEventListeners = function() {
const $document = $(document); const $document = $(document);
this.sidebar.on('click', '.sidebar-collapsed-icon', this, this.sidebarCollapseClicked); this.sidebar.on('click', '.sidebar-collapsed-icon', this, this.sidebarCollapseClicked);
...@@ -31,9 +35,9 @@ import Cookies from 'js-cookie'; ...@@ -31,9 +35,9 @@ import Cookies from 'js-cookie';
$document.on('click', '.js-sidebar-toggle', this.sidebarToggleClicked); $document.on('click', '.js-sidebar-toggle', this.sidebarToggleClicked);
return $(document).off('click', '.js-issuable-todo').on('click', '.js-issuable-todo', this.toggleTodo); return $(document).off('click', '.js-issuable-todo').on('click', '.js-issuable-todo', this.toggleTodo);
}; };
Sidebar.prototype.sidebarToggleClicked = function (e, triggered) { Sidebar.prototype.sidebarToggleClicked = function (e, triggered) {
var $allGutterToggleIcons, $this, $thisIcon; var $allGutterToggleIcons, $this, $thisIcon;
e.preventDefault(); e.preventDefault();
$this = $(this); $this = $(this);
...@@ -53,9 +57,9 @@ import Cookies from 'js-cookie'; ...@@ -53,9 +57,9 @@ import Cookies from 'js-cookie';
if (!triggered) { if (!triggered) {
Cookies.set("collapsed_gutter", $('.right-sidebar').hasClass('right-sidebar-collapsed')); Cookies.set("collapsed_gutter", $('.right-sidebar').hasClass('right-sidebar-collapsed'));
} }
}; };
Sidebar.prototype.toggleTodo = function(e) { Sidebar.prototype.toggleTodo = function(e) {
var $btnText, $this, $todoLoading, ajaxType, url; var $btnText, $this, $todoLoading, ajaxType, url;
$this = $(e.currentTarget); $this = $(e.currentTarget);
ajaxType = $this.attr('data-delete-path') ? 'DELETE' : 'POST'; ajaxType = $this.attr('data-delete-path') ? 'DELETE' : 'POST';
...@@ -86,9 +90,9 @@ import Cookies from 'js-cookie'; ...@@ -86,9 +90,9 @@ import Cookies from 'js-cookie';
return _this.todoUpdateDone(data); return _this.todoUpdateDone(data);
}; };
})(this)); })(this));
}; };
Sidebar.prototype.todoUpdateDone = function(data) { Sidebar.prototype.todoUpdateDone = function(data) {
const deletePath = data.delete_path ? data.delete_path : null; const deletePath = data.delete_path ? data.delete_path : null;
const attrPrefix = deletePath ? 'mark' : 'todo'; const attrPrefix = deletePath ? 'mark' : 'todo';
const $todoBtns = $('.js-issuable-todo'); const $todoBtns = $('.js-issuable-todo');
...@@ -115,9 +119,9 @@ import Cookies from 'js-cookie'; ...@@ -115,9 +119,9 @@ import Cookies from 'js-cookie';
$elText.text($el.data(`${attrPrefix}-text`)); $elText.text($el.data(`${attrPrefix}-text`));
} }
}); });
}; };
Sidebar.prototype.sidebarDropdownLoading = function(e) { Sidebar.prototype.sidebarDropdownLoading = function(e) {
var $loading, $sidebarCollapsedIcon, i, img; var $loading, $sidebarCollapsedIcon, i, img;
$sidebarCollapsedIcon = $(this).closest('.block').find('.sidebar-collapsed-icon'); $sidebarCollapsedIcon = $(this).closest('.block').find('.sidebar-collapsed-icon');
img = $sidebarCollapsedIcon.find('img'); img = $sidebarCollapsedIcon.find('img');
...@@ -130,9 +134,9 @@ import Cookies from 'js-cookie'; ...@@ -130,9 +134,9 @@ import Cookies from 'js-cookie';
i.before($loading); i.before($loading);
return i.hide(); return i.hide();
} }
}; };
Sidebar.prototype.sidebarDropdownLoaded = function(e) { Sidebar.prototype.sidebarDropdownLoaded = function(e) {
var $sidebarCollapsedIcon, i, img; var $sidebarCollapsedIcon, i, img;
$sidebarCollapsedIcon = $(this).closest('.block').find('.sidebar-collapsed-icon'); $sidebarCollapsedIcon = $(this).closest('.block').find('.sidebar-collapsed-icon');
img = $sidebarCollapsedIcon.find('img'); img = $sidebarCollapsedIcon.find('img');
...@@ -143,9 +147,9 @@ import Cookies from 'js-cookie'; ...@@ -143,9 +147,9 @@ import Cookies from 'js-cookie';
} else { } else {
return i.show(); return i.show();
} }
}; };
Sidebar.prototype.sidebarCollapseClicked = function(e) { Sidebar.prototype.sidebarCollapseClicked = function(e) {
var $block, sidebar; var $block, sidebar;
if ($(e.currentTarget).hasClass('dont-change-state')) { if ($(e.currentTarget).hasClass('dont-change-state')) {
return; return;
...@@ -154,9 +158,9 @@ import Cookies from 'js-cookie'; ...@@ -154,9 +158,9 @@ import Cookies from 'js-cookie';
e.preventDefault(); e.preventDefault();
$block = $(this).closest('.block'); $block = $(this).closest('.block');
return sidebar.openDropdown($block); return sidebar.openDropdown($block);
}; };
Sidebar.prototype.openDropdown = function(blockOrName) { Sidebar.prototype.openDropdown = function(blockOrName) {
var $block; var $block;
$block = _.isString(blockOrName) ? this.getBlock(blockOrName) : blockOrName; $block = _.isString(blockOrName) ? this.getBlock(blockOrName) : blockOrName;
if (!this.isOpen()) { if (!this.isOpen()) {
...@@ -169,34 +173,34 @@ import Cookies from 'js-cookie'; ...@@ -169,34 +173,34 @@ import Cookies from 'js-cookie';
setTimeout(() => { setTimeout(() => {
$block.find('.js-sidebar-dropdown-toggle').trigger('click'); $block.find('.js-sidebar-dropdown-toggle').trigger('click');
}); });
}; };
Sidebar.prototype.setCollapseAfterUpdate = function($block) { Sidebar.prototype.setCollapseAfterUpdate = function($block) {
$block.addClass('collapse-after-update'); $block.addClass('collapse-after-update');
return $('.layout-page').addClass('with-overlay'); return $('.layout-page').addClass('with-overlay');
}; };
Sidebar.prototype.onSidebarDropdownHidden = function(e) { Sidebar.prototype.onSidebarDropdownHidden = function(e) {
var $block, sidebar; var $block, sidebar;
sidebar = e.data; sidebar = e.data;
e.preventDefault(); e.preventDefault();
$block = $(e.target).closest('.block'); $block = $(e.target).closest('.block');
return sidebar.sidebarDropdownHidden($block); return sidebar.sidebarDropdownHidden($block);
}; };
Sidebar.prototype.sidebarDropdownHidden = function($block) { Sidebar.prototype.sidebarDropdownHidden = function($block) {
if ($block.hasClass('collapse-after-update')) { if ($block.hasClass('collapse-after-update')) {
$block.removeClass('collapse-after-update'); $block.removeClass('collapse-after-update');
$('.layout-page').removeClass('with-overlay'); $('.layout-page').removeClass('with-overlay');
return this.toggleSidebar('hide'); return this.toggleSidebar('hide');
} }
}; };
Sidebar.prototype.triggerOpenSidebar = function() { Sidebar.prototype.triggerOpenSidebar = function() {
return this.sidebar.find('.js-sidebar-toggle').trigger('click'); return this.sidebar.find('.js-sidebar-toggle').trigger('click');
}; };
Sidebar.prototype.toggleSidebar = function(action) { Sidebar.prototype.toggleSidebar = function(action) {
if (action == null) { if (action == null) {
action = 'toggle'; action = 'toggle';
} }
...@@ -213,16 +217,14 @@ import Cookies from 'js-cookie'; ...@@ -213,16 +217,14 @@ import Cookies from 'js-cookie';
return this.triggerOpenSidebar(); return this.triggerOpenSidebar();
} }
} }
}; };
Sidebar.prototype.isOpen = function() { Sidebar.prototype.isOpen = function() {
return this.sidebar.is('.right-sidebar-expanded'); return this.sidebar.is('.right-sidebar-expanded');
}; };
Sidebar.prototype.getBlock = function(name) { Sidebar.prototype.getBlock = function(name) {
return this.sidebar.find(".block." + name); return this.sidebar.find(".block." + name);
}; };
return Sidebar; export default Sidebar;
})();
}).call(window);
/* global Mousetrap */ /* global Mousetrap */
/* global sidebar */
import _ from 'underscore'; import _ from 'underscore';
import 'mousetrap'; import 'mousetrap';
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';
...@@ -69,7 +69,7 @@ export default class ShortcutsIssuable extends ShortcutsNavigation { ...@@ -69,7 +69,7 @@ export default class ShortcutsIssuable extends ShortcutsNavigation {
} }
static openSidebarDropdown(name) { static openSidebarDropdown(name) {
sidebar.openDropdown(name); Sidebar.instance.openDropdown(name);
return false; return false;
} }
} }
/* global Sidebar */
/* eslint-disable no-new */ /* eslint-disable no-new */
import _ from 'underscore'; import _ from 'underscore';
import '~/right_sidebar'; import Sidebar from '~/right_sidebar';
describe('Issuable right sidebar collapsed todo toggle', () => { describe('Issuable right sidebar collapsed todo toggle', () => {
const fixtureName = 'issues/open-issue.html.raw'; const fixtureName = 'issues/open-issue.html.raw';
......
/* eslint-disable space-before-function-paren, no-var, no-param-reassign, quotes, prefer-template, no-else-return, new-cap, dot-notation, no-return-assign, comma-dangle, no-new, one-var, one-var-declaration-per-line, jasmine/no-spec-dupes, no-underscore-dangle, max-len */ /* eslint-disable space-before-function-paren, no-var, no-param-reassign, quotes, prefer-template, no-else-return, new-cap, dot-notation, no-return-assign, comma-dangle, no-new, one-var, one-var-declaration-per-line, jasmine/no-spec-dupes, no-underscore-dangle, max-len */
/* global LineHighlighter */
import '~/line_highlighter'; import LineHighlighter from '~/line_highlighter';
(function() { (function() {
describe('LineHighlighter', function() { describe('LineHighlighter', function() {
......
/* eslint-disable space-before-function-paren, no-return-assign */ /* eslint-disable space-before-function-paren, no-return-assign */
/* global MergeRequest */
import '~/merge_request'; import MergeRequest from '~/merge_request';
import CloseReopenReportToggle from '~/close_reopen_report_toggle'; import CloseReopenReportToggle from '~/close_reopen_report_toggle';
import IssuablesHelper from '~/helpers/issuables_helper'; import IssuablesHelper from '~/helpers/issuables_helper';
......
/* eslint-disable space-before-function-paren, no-var, one-var, one-var-declaration-per-line, new-parens, no-return-assign, new-cap, vars-on-top, max-len */ /* eslint-disable space-before-function-paren, no-var, one-var, one-var-declaration-per-line, new-parens, no-return-assign, new-cap, vars-on-top, max-len */
/* global Sidebar */
import '~/commons/bootstrap'; import '~/commons/bootstrap';
import '~/right_sidebar'; import Sidebar from '~/right_sidebar';
(function() { (function() {
var $aside, $icon, $labelsIcon, $page, $toggle, assertSidebarState; var $aside, $icon, $labelsIcon, $page, $toggle, assertSidebarState;
......
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