diff options
Diffstat (limited to 'app')
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" |