From 0c872e02b2c822e3397515ec324051ff540f0cd5 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 20 Dec 2022 14:22:11 +0000 Subject: Add latest changes from gitlab-org/gitlab@15-7-stable-ee --- .../components/import_project_members_modal.vue | 23 ++- .../components/invite_group_notification.vue | 37 +++++ .../components/invite_groups_modal.vue | 37 ++++- .../components/invite_members_modal.vue | 161 ++++++++++++++------- .../components/invite_modal_base.vue | 107 ++++++-------- .../components/members_token_select.vue | 17 ++- app/assets/javascripts/invite_members/constants.js | 11 +- .../init_import_project_members_modal.js | 4 +- .../invite_members/init_invite_groups_modal.js | 5 + .../invite_members/init_invite_members_modal.js | 1 + .../utils/trigger_successful_invite_alert.js | 23 +++ 11 files changed, 295 insertions(+), 131 deletions(-) create mode 100644 app/assets/javascripts/invite_members/components/invite_group_notification.vue create mode 100644 app/assets/javascripts/invite_members/utils/trigger_successful_invite_alert.js (limited to 'app/assets/javascripts/invite_members') diff --git a/app/assets/javascripts/invite_members/components/import_project_members_modal.vue b/app/assets/javascripts/invite_members/components/import_project_members_modal.vue index 31b7fd4cc42..b4e9a3a1559 100644 --- a/app/assets/javascripts/invite_members/components/import_project_members_modal.vue +++ b/app/assets/javascripts/invite_members/components/import_project_members_modal.vue @@ -5,6 +5,10 @@ import { importProjectMembers } from '~/api/projects_api'; import { BV_SHOW_MODAL } from '~/lib/utils/constants'; import { s__, __, sprintf } from '~/locale'; import eventHub from '../event_hub'; +import { + displaySuccessfulInvitationAlert, + reloadOnInvitationSuccess, +} from '../utils/trigger_successful_invite_alert'; import ProjectSelect from './project_select.vue'; export default { @@ -24,6 +28,11 @@ export default { type: String, required: true, }, + reloadPageOnSubmit: { + type: Boolean, + required: false, + default: false, + }, }, data() { return { @@ -59,6 +68,10 @@ export default { }, }, mounted() { + if (this.reloadPageOnSubmit) { + displaySuccessfulInvitationAlert(); + } + eventHub.$on('openProjectMembersModal', () => { this.openModal(); }); @@ -74,16 +87,22 @@ export default { submitImport() { this.isLoading = true; return importProjectMembers(this.projectId, this.projectToBeImported.id) - .then(this.showToastMessage) + .then(this.onInviteSuccess) .catch(this.showErrorAlert) .finally(() => { this.isLoading = false; this.projectToBeImported = {}; }); }, + onInviteSuccess() { + if (this.reloadPageOnSubmit) { + reloadOnInvitationSuccess(); + } else { + this.showToastMessage(); + } + }, showToastMessage() { this.$toast.show(this.$options.i18n.successMessage, this.$options.toastOptions); - this.closeModal(); }, showErrorAlert() { diff --git a/app/assets/javascripts/invite_members/components/invite_group_notification.vue b/app/assets/javascripts/invite_members/components/invite_group_notification.vue new file mode 100644 index 00000000000..767675cc64c --- /dev/null +++ b/app/assets/javascripts/invite_members/components/invite_group_notification.vue @@ -0,0 +1,37 @@ + + + diff --git a/app/assets/javascripts/invite_members/components/invite_groups_modal.vue b/app/assets/javascripts/invite_members/components/invite_groups_modal.vue index 2ad4bb1a11a..3be3b9df747 100644 --- a/app/assets/javascripts/invite_members/components/invite_groups_modal.vue +++ b/app/assets/javascripts/invite_members/components/invite_groups_modal.vue @@ -6,13 +6,19 @@ import InviteModalBase from 'ee_else_ce/invite_members/components/invite_modal_b import { GROUP_FILTERS, GROUP_MODAL_LABELS } from '../constants'; import eventHub from '../event_hub'; import { getInvalidFeedbackMessage } from '../utils/get_invalid_feedback_message'; +import { + displaySuccessfulInvitationAlert, + reloadOnInvitationSuccess, +} from '../utils/trigger_successful_invite_alert'; import GroupSelect from './group_select.vue'; +import InviteGroupNotification from './invite_group_notification.vue'; export default { name: 'InviteMembersModal', components: { GroupSelect, InviteModalBase, + InviteGroupNotification, }, props: { id: { @@ -31,6 +37,10 @@ export default { type: String, required: true, }, + fullPath: { + type: String, + required: true, + }, accessLevels: { type: Object, required: true, @@ -57,6 +67,15 @@ export default { type: Array, required: true, }, + freeUserCapEnabled: { + type: Boolean, + required: true, + }, + reloadPageOnSubmit: { + type: Boolean, + required: false, + default: false, + }, }, data() { return { @@ -85,6 +104,10 @@ export default { }, }, mounted() { + if (this.reloadPageOnSubmit) { + displaySuccessfulInvitationAlert(); + } + eventHub.$on('openGroupModal', () => { this.openModal(); }); @@ -114,7 +137,7 @@ export default { expires_at: expiresAt, }) .then(() => { - this.showSuccessMessage(); + this.onInviteSuccess(); }) .catch((e) => { this.showInvalidFeedbackMessage(e); @@ -128,6 +151,13 @@ export default { this.isLoading = false; this.groupToBeSharedWith = {}; }, + onInviteSuccess() { + if (this.reloadPageOnSubmit) { + reloadOnInvitationSuccess(); + } else { + this.showSuccessMessage(); + } + }, showSuccessMessage() { this.$toast.show(this.$options.labels.toastMessageSuccessful, this.toastOptions); this.closeModal(); @@ -155,9 +185,14 @@ export default { :root-group-id="rootId" :invalid-feedback-message="invalidFeedbackMessage" :is-loading="isLoading" + :full-path="fullPath" @reset="resetFields" @submit="sendInvite" > + + -