diff --git a/app/assets/javascripts/contextual_sidebar.js b/app/assets/javascripts/contextual_sidebar.js index ea444b5c146c2b6e5878580d950a0a17aaea5808..ab5f01227fb263a06430373f5398a5f6a2e35e92 100644 --- a/app/assets/javascripts/contextual_sidebar.js +++ b/app/assets/javascripts/contextual_sidebar.js @@ -108,27 +108,5 @@ export default class ContextualSidebar { const collapse = parseBoolean(getCookie('sidebar_collapsed')); this.toggleCollapsedSidebar(collapse, true); } - - const modalEl = document.querySelector('.js-invite-members-modal'); - if (modalEl) { - import( - /* webpackChunkName: 'initInviteMembersModal' */ '~/invite_members/init_invite_members_modal' - ) - .then(({ default: initInviteMembersModal }) => { - initInviteMembersModal(); - }) - .catch(() => {}); - - const inviteTriggers = document.querySelectorAll('.js-invite-members-trigger'); - if (inviteTriggers) { - import( - /* webpackChunkName: 'initInviteMembersTrigger' */ '~/invite_members/init_invite_members_trigger' - ) - .then(({ default: initInviteMembersTrigger }) => { - initInviteMembersTrigger(); - }) - .catch(() => {}); - } - } } } diff --git a/app/assets/javascripts/layout_nav.js b/app/assets/javascripts/layout_nav.js index 63a1ba89fff20a12742ff66e21d8a605f0ee4b2c..42682d9b79f589cd999a706bf7e8627eaf03bc5d 100644 --- a/app/assets/javascripts/layout_nav.js +++ b/app/assets/javascripts/layout_nav.js @@ -64,9 +64,31 @@ export function initScrollingTabs() { }); } -function initDeferred() { - initScrollingTabs(); +function initInviteMembers() { + const modalEl = document.querySelector('.js-invite-members-modal'); + if (!modalEl) return; + + import( + /* webpackChunkName: 'initInviteMembersModal' */ '~/invite_members/init_invite_members_modal' + ) + .then(({ default: initInviteMembersModal }) => { + initInviteMembersModal(); + }) + .catch(() => {}); + const inviteTriggers = document.querySelectorAll('.js-invite-members-trigger'); + if (!inviteTriggers) return; + + import( + /* webpackChunkName: 'initInviteMembersTrigger' */ '~/invite_members/init_invite_members_trigger' + ) + .then(({ default: initInviteMembersTrigger }) => { + initInviteMembersTrigger(); + }) + .catch(() => {}); +} + +function initWhatsNewComponent() { const appEl = document.getElementById('whats-new-app'); if (!appEl) return; @@ -84,6 +106,12 @@ function initDeferred() { }); } +function initDeferred() { + initScrollingTabs(); + initWhatsNewComponent(); + initInviteMembers(); +} + export default function initLayoutNav() { if (!gon.use_new_navigation) { const contextualSidebar = new ContextualSidebar(); diff --git a/app/assets/javascripts/pages/groups/group_members/index.js b/app/assets/javascripts/pages/groups/group_members/index.js index 2e71eced66fef7b4c18f952f514dbcb4b7339b32..df6ca8eab96049bb3411a46955a871b0f3f465c3 100644 --- a/app/assets/javascripts/pages/groups/group_members/index.js +++ b/app/assets/javascripts/pages/groups/group_members/index.js @@ -1,8 +1,6 @@ import { groupMemberRequestFormatter } from '~/groups/members/utils'; import initInviteGroupTrigger from '~/invite_members/init_invite_group_trigger'; import initInviteGroupsModal from '~/invite_members/init_invite_groups_modal'; -import initInviteMembersModal from '~/invite_members/init_invite_members_modal'; -import initInviteMembersTrigger from '~/invite_members/init_invite_members_trigger'; import { s__ } from '~/locale'; import { initMembersApp } from '~/members'; import { MEMBER_TYPES, EE_APP_OPTIONS } from 'ee_else_ce/members/constants'; @@ -60,7 +58,5 @@ const APP_OPTIONS = { initMembersApp(document.querySelector('.js-group-members-list-app'), APP_OPTIONS); -initInviteMembersModal(); initInviteGroupsModal(); -initInviteMembersTrigger(); initInviteGroupTrigger(); diff --git a/app/assets/javascripts/pages/groups/shared/group_details.js b/app/assets/javascripts/pages/groups/shared/group_details.js index dba65c7e791777f3c23c0a34f835856c0ae3d599..5d9eafe5672aa7663671fc6564362db5d12975d5 100644 --- a/app/assets/javascripts/pages/groups/shared/group_details.js +++ b/app/assets/javascripts/pages/groups/shared/group_details.js @@ -1,6 +1,5 @@ import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation'; import initInviteMembersBanner from '~/groups/init_invite_members_banner'; -import initInviteMembersModal from '~/invite_members/init_invite_members_modal'; import initNotificationsDropdown from '~/notifications'; import ProjectsList from '~/projects_list'; @@ -12,5 +11,4 @@ export default function initGroupDetails() { new ProjectsList(); // eslint-disable-line no-new initInviteMembersBanner(); - initInviteMembersModal(); } diff --git a/app/assets/javascripts/pages/projects/project_members/index.js b/app/assets/javascripts/pages/projects/project_members/index.js index 79a4ed0f9c3b4c0dca94b769d7824c3cfcf3f987..1e9111a3cc6cb92110bb4bdb4a682e1ee0b340c8 100644 --- a/app/assets/javascripts/pages/projects/project_members/index.js +++ b/app/assets/javascripts/pages/projects/project_members/index.js @@ -1,9 +1,7 @@ import initImportProjectMembersTrigger from '~/invite_members/init_import_project_members_trigger'; import initImportProjectMembersModal from '~/invite_members/init_import_project_members_modal'; import initInviteGroupTrigger from '~/invite_members/init_invite_group_trigger'; -import initInviteMembersModal from '~/invite_members/init_invite_members_modal'; import initInviteGroupsModal from '~/invite_members/init_invite_groups_modal'; -import initInviteMembersTrigger from '~/invite_members/init_invite_members_trigger'; import { s__ } from '~/locale'; import { initMembersApp } from '~/members'; import { MEMBER_TYPES } from '~/members/constants'; @@ -11,9 +9,7 @@ import { groupLinkRequestFormatter } from '~/members/utils'; import { projectMemberRequestFormatter } from '~/projects/members/utils'; initImportProjectMembersModal(); -initInviteMembersModal(); initInviteGroupsModal(); -initInviteMembersTrigger(); initInviteGroupTrigger(); initImportProjectMembersTrigger(); diff --git a/app/assets/javascripts/pages/projects/show/index.js b/app/assets/javascripts/pages/projects/show/index.js index 33d4090011f6cd938c66a0d326a48b5ff46c8997..e17f5255c54a9504c4cd3d4070a91b683b604610 100644 --- a/app/assets/javascripts/pages/projects/show/index.js +++ b/app/assets/javascripts/pages/projects/show/index.js @@ -1,7 +1,5 @@ import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation'; -import initInviteMembersModal from '~/invite_members/init_invite_members_modal'; -import initInviteMembersTrigger from '~/invite_members/init_invite_members_trigger'; import initClustersDeprecationAlert from '~/projects/clusters_deprecation_alert'; import leaveByUrl from '~/namespaces/leave_by_url'; import initVueNotificationsDropdown from '~/notifications'; @@ -42,8 +40,6 @@ initVueNotificationsDropdown(); new ShortcutsNavigation(); // eslint-disable-line no-new initUploadFileTrigger(); -initInviteMembersModal(); -initInviteMembersTrigger(); initClustersDeprecationAlert(); initTerraformNotification(); diff --git a/app/assets/javascripts/pages/projects/work_items/index.js b/app/assets/javascripts/pages/projects/work_items/index.js index 6eef2352e2c4933351acda84e7bb1fc0064fe739..11c257611f04b16f5d85274923e84f009b8771a0 100644 --- a/app/assets/javascripts/pages/projects/work_items/index.js +++ b/app/assets/javascripts/pages/projects/work_items/index.js @@ -1,5 +1,3 @@ import { initWorkItemsRoot } from '~/work_items/index'; -import initInviteMembersModal from '~/invite_members/init_invite_members_modal'; initWorkItemsRoot(); -initInviteMembersModal(); diff --git a/app/assets/javascripts/sidebar/mount_sidebar.js b/app/assets/javascripts/sidebar/mount_sidebar.js index 74843bcc00621f4f352b063449903d2a7b91c5ad..67e76b575e07bc162a91d661a10b3559555ca837 100644 --- a/app/assets/javascripts/sidebar/mount_sidebar.js +++ b/app/assets/javascripts/sidebar/mount_sidebar.js @@ -2,8 +2,6 @@ import Vue from 'vue'; import VueApollo from 'vue-apollo'; import { TYPENAME_ISSUE, TYPENAME_MERGE_REQUEST } from '~/graphql_shared/constants'; import { convertToGraphQLId, getIdFromGraphQLId } from '~/graphql_shared/utils'; -import initInviteMembersModal from '~/invite_members/init_invite_members_modal'; -import initInviteMembersTrigger from '~/invite_members/init_invite_members_trigger'; import { TYPE_ISSUE, TYPE_MERGE_REQUEST, WORKSPACE_PROJECT } from '~/issues/constants'; import { gqlClient } from '~/issues/list/graphql'; import { @@ -805,8 +803,6 @@ const isAssigneesWidgetShown = (isInIssuePage() || isInDesignPage() || isInMRPage()) && gon.features.issueAssigneesWidget; export function mountSidebar(mediator, store) { - initInviteMembersModal(); - initInviteMembersTrigger(); mountSidebarTodoWidget(); if (isAssigneesWidgetShown) { mountSidebarAssigneesWidget(); diff --git a/ee/app/assets/javascripts/pages/projects/learn_gitlab/show/index.js b/ee/app/assets/javascripts/pages/projects/learn_gitlab/show/index.js index af4a6f8a0c99d445e85aad1717aaea23d0113d32..ab84087446e9133fd77cd6c54ad5aa73602123ca 100644 --- a/ee/app/assets/javascripts/pages/projects/learn_gitlab/show/index.js +++ b/ee/app/assets/javascripts/pages/projects/learn_gitlab/show/index.js @@ -1,6 +1,5 @@ import Vue from 'vue'; import initInviteMembersModal from '~/invite_members/init_invite_members_modal'; -import initInviteMembersTrigger from '~/invite_members/init_invite_members_trigger'; import { convertObjectPropsToCamelCase } from '~/lib/utils/common_utils'; import LearnGitlab from '../components/learn_gitlab.vue'; @@ -26,6 +25,4 @@ function initLearnGitlab() { } initInviteMembersModal(); -initInviteMembersTrigger(); - initLearnGitlab(); diff --git a/ee/spec/features/uncompleted_learn_gitlab_link_spec.rb b/ee/spec/features/uncompleted_learn_gitlab_link_spec.rb index 3da24368b08119af14b0b81097519c6e9291b732..06f6c939904dfc6dbc09eac1a35aaa9b448bd03d 100644 --- a/ee/spec/features/uncompleted_learn_gitlab_link_spec.rb +++ b/ee/spec/features/uncompleted_learn_gitlab_link_spec.rb @@ -78,10 +78,8 @@ expect(page).to have_current_path(project_issues_path(project)) end - context 'with invite_for_help_continuous_onboarding candidate experience' do + context 'with invite members link opening invite modal' do before do - stub_experiments(invite_for_help_continuous_onboarding: :candidate) - sign_in(user) visit namespace_project_learn_gitlab_path(namespace, project) end diff --git a/ee/spec/support/shared_examples/features/unlimited_members_during_trial_alert_shared_examples.rb b/ee/spec/support/shared_examples/features/unlimited_members_during_trial_alert_shared_examples.rb index 81128dc59a1df307d24ae12087ecaa122a3d0f8b..c2794b9abc0c1ec82fa82c79f06775a51a9f6ace 100644 --- a/ee/spec/support/shared_examples/features/unlimited_members_during_trial_alert_shared_examples.rb +++ b/ee/spec/support/shared_examples/features/unlimited_members_during_trial_alert_shared_examples.rb @@ -33,4 +33,20 @@ expect(page).to have_content('Subgroups and projects').or have_content('Project information') expect(page).not_to have_selector(alert_selector) end + + context 'when new nav is enabled' do + let_it_be(:user) { create(:user, use_new_navigation: true) } + + it 'displays alert with Explore paid plans link and Invite more members button on other pages' do + visit page_path + + expect(page).to have_selector(alert_selector) + expect(page).to have_link(text: 'Explore paid plans', href: group_billings_path(group)) + expect(page).to have_button('Invite more members') + + click_button 'Invite more members' + + expect(page).to have_selector(invite_modal_selector) + end + end end