summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/clusters/components/applications.vue7
-rw-r--r--app/assets/javascripts/main.js3
-rw-r--r--app/assets/javascripts/projects_dropdown/index.js100
-rw-r--r--app/assets/javascripts/projects_dropdown_loader.js14
-rw-r--r--app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue7
5 files changed, 77 insertions, 54 deletions
diff --git a/app/assets/javascripts/clusters/components/applications.vue b/app/assets/javascripts/clusters/components/applications.vue
index cd58b88db69..24b9a242b79 100644
--- a/app/assets/javascripts/clusters/components/applications.vue
+++ b/app/assets/javascripts/clusters/components/applications.vue
@@ -15,6 +15,11 @@ export default {
required: false,
},
},
+ data() {
+ return {
+ pgettext: s__,
+ };
+ },
components: {
applicationRow,
},
@@ -85,7 +90,7 @@ export default {
<section class="settings no-animate expanded">
<div class="settings-header">
<h4>
- {{ s__('ClusterIntegration|Applications') }}
+ {{ pgettext('ClusterIntegration|Applications') }}
</h4>
<p
class="append-bottom-0"
diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js
index 59bfa482bb0..9fcc0de4e93 100644
--- a/app/assets/javascripts/main.js
+++ b/app/assets/javascripts/main.js
@@ -40,6 +40,7 @@ import './confirm_danger_modal';
import Flash, { removeFlashClickListener } from './flash';
import './gl_dropdown';
import initTodoToggle from './header';
+import conditionallyLoadProjectDropdown from './projects_dropdown_loader';
import initImporterStatus from './importer_status';
import initLayoutNav from './layout_nav';
import LazyLoader from './lazy_loader';
@@ -47,7 +48,6 @@ import './line_highlighter';
import initLogoAnimation from './logo';
import './milestone_select';
import './preview_markdown';
-import './projects_dropdown';
import './render_gfm';
import initBreadcrumbs from './breadcrumb';
@@ -93,6 +93,7 @@ $(function () {
initImporterStatus();
initTodoToggle();
initLogoAnimation();
+ conditionallyLoadProjectDropdown();
// Set the default path for all cookies to GitLab's root directory
Cookies.defaults.path = gon.relative_url_root || '/';
diff --git a/app/assets/javascripts/projects_dropdown/index.js b/app/assets/javascripts/projects_dropdown/index.js
index 2660da3c558..c39d6000765 100644
--- a/app/assets/javascripts/projects_dropdown/index.js
+++ b/app/assets/javascripts/projects_dropdown/index.js
@@ -9,60 +9,58 @@ import projectsDropdownApp from './components/app.vue';
Vue.use(Translate);
-document.addEventListener('DOMContentLoaded', () => {
- const el = document.getElementById('js-projects-dropdown');
- const navEl = document.getElementById('nav-projects-dropdown');
+const el = document.getElementById('js-projects-dropdown');
+const navEl = document.getElementById('nav-projects-dropdown');
- // Don't do anything if element doesn't exist (No projects dropdown)
- // This is for when the user accesses GitLab without logging in
- if (!el || !navEl) {
- return;
- }
-
- $(navEl).on('show.bs.dropdown', (e) => {
- const dropdownEl = $(e.currentTarget).find('.projects-dropdown-menu');
- dropdownEl.one('transitionend', () => {
- eventHub.$emit('dropdownOpen');
- });
+function dropdownOpened(e) {
+ const dropdownEl = $(e.currentTarget).find('.projects-dropdown-menu');
+ dropdownEl.one('transitionend', () => {
+ eventHub.$emit('dropdownOpen');
});
+}
- // eslint-disable-next-line no-new
- new Vue({
- el,
- components: {
- projectsDropdownApp,
- },
- data() {
- const dataset = this.$options.el.dataset;
- const store = new ProjectsStore();
- const service = new ProjectsService(dataset.userName);
+$(navEl).on('show.bs.dropdown', (e) => {
+ dropdownOpened(e);
+});
- const project = {
- id: Number(dataset.projectId),
- name: dataset.projectName,
- namespace: dataset.projectNamespace,
- webUrl: dataset.projectWebUrl,
- avatarUrl: dataset.projectAvatarUrl || null,
- lastAccessedOn: Date.now(),
- };
+// eslint-disable-next-line no-new, no-unused-expressions
+(el && navEl) && new Vue({ // If elements are not in the DOM do nothing
+ el,
+ components: {
+ projectsDropdownApp,
+ },
+ data() {
+ const dataset = this.$options.el.dataset;
+ const store = new ProjectsStore();
+ const service = new ProjectsService(dataset.userName);
- return {
- store,
- service,
- state: store.state,
- currentUserName: dataset.userName,
- currentProject: project,
- };
- },
- render(createElement) {
- return createElement('projects-dropdown-app', {
- props: {
- currentUserName: this.currentUserName,
- currentProject: this.currentProject,
- store: this.store,
- service: this.service,
- },
- });
- },
- });
+ const project = {
+ id: Number(dataset.projectId),
+ name: dataset.projectName,
+ namespace: dataset.projectNamespace,
+ webUrl: dataset.projectWebUrl,
+ avatarUrl: dataset.projectAvatarUrl || null,
+ lastAccessedOn: Date.now(),
+ };
+
+ return {
+ store,
+ service,
+ state: store.state,
+ currentUserName: dataset.userName,
+ currentProject: project,
+ };
+ },
+ render(createElement) {
+ return createElement('projects-dropdown-app', {
+ props: {
+ currentUserName: this.currentUserName,
+ currentProject: this.currentProject,
+ store: this.store,
+ service: this.service,
+ },
+ });
+ },
});
+
+export default dropdownOpened;
diff --git a/app/assets/javascripts/projects_dropdown_loader.js b/app/assets/javascripts/projects_dropdown_loader.js
new file mode 100644
index 00000000000..0c2786f6531
--- /dev/null
+++ b/app/assets/javascripts/projects_dropdown_loader.js
@@ -0,0 +1,14 @@
+export default function conditionallyLoadProjectDropdown() {
+ const el = document.getElementById('js-projects-dropdown');
+ const navEl = document.getElementById('nav-projects-dropdown');
+ if (!el || !navEl) {
+ return;
+ }
+ $(navEl).one('show.bs.dropdown', (e) => {
+ import(/* webpackChunkName: 'projects_dropdown' */ './projects_dropdown')
+ .then((importedFunc) => {
+ importedFunc.default(e);
+ })
+ .catch(() => {});
+ });
+}
diff --git a/app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue b/app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue
index 940e1764f3d..e0011deef2e 100644
--- a/app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue
+++ b/app/assets/javascripts/sidebar/components/subscriptions/subscriptions.vue
@@ -19,6 +19,11 @@ export default {
required: false,
},
},
+ data() {
+ return {
+ gettext: __,
+ };
+ },
components: {
loadingButton,
},
@@ -51,7 +56,7 @@ export default {
</i>
</div>
<span class="issuable-header-text hide-collapsed pull-left">
- {{ __('Notifications') }}
+ {{ gettext('Notifications') }}
</span>
<loading-button
ref="loadingButton"