Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-09-20 14:18:08 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-09-20 14:18:08 +0300
commit5afcbe03ead9ada87621888a31a62652b10a7e4f (patch)
tree9918b67a0d0f0bafa6542e839a8be37adf73102d /app/assets/javascripts/invite_members
parentc97c0201564848c1f53226fe19d71fdcc472f7d0 (diff)
Add latest changes from gitlab-org/gitlab@16-4-stable-eev16.4.0-rc42
Diffstat (limited to 'app/assets/javascripts/invite_members')
-rw-r--r--app/assets/javascripts/invite_members/components/invite_members_modal.vue126
-rw-r--r--app/assets/javascripts/invite_members/components/invite_modal_base.vue2
-rw-r--r--app/assets/javascripts/invite_members/constants.js20
-rw-r--r--app/assets/javascripts/invite_members/init_invite_members_modal.js3
-rw-r--r--app/assets/javascripts/invite_members/utils/member_utils.js6
5 files changed, 10 insertions, 147 deletions
diff --git a/app/assets/javascripts/invite_members/components/invite_members_modal.vue b/app/assets/javascripts/invite_members/components/invite_members_modal.vue
index e99a61caf3f..e9d7acdc913 100644
--- a/app/assets/javascripts/invite_members/components/invite_members_modal.vue
+++ b/app/assets/javascripts/invite_members/components/invite_members_modal.vue
@@ -1,28 +1,14 @@
<script>
-import {
- GlAlert,
- GlCollapsibleListbox,
- GlLink,
- GlSprintf,
- GlFormCheckboxGroup,
- GlButton,
- GlCollapse,
- GlIcon,
-} from '@gitlab/ui';
+import { GlAlert, GlButton, GlCollapse, GlIcon } from '@gitlab/ui';
import { partition, isString, uniqueId, isEmpty } from 'lodash';
import InviteModalBase from 'ee_else_ce/invite_members/components/invite_modal_base.vue';
import Api from '~/api';
import Tracking from '~/tracking';
import { BV_SHOW_MODAL, BV_HIDE_MODAL } from '~/lib/utils/constants';
import { n__, sprintf } from '~/locale';
-import {
- memberName,
- triggerExternalAlert,
- qualifiesForTasksToBeDone,
-} from 'ee_else_ce/invite_members/utils/member_utils';
+import { memberName, triggerExternalAlert } from 'ee_else_ce/invite_members/utils/member_utils';
import {
USERS_FILTER_ALL,
- INVITE_MEMBERS_FOR_TASK,
MEMBER_MODAL_LABELS,
INVITE_MEMBER_MODAL_TRACKING_CATEGORY,
} from '../constants';
@@ -41,10 +27,6 @@ export default {
name: 'InviteMembersModal',
components: {
GlAlert,
- GlLink,
- GlCollapsibleListbox,
- GlSprintf,
- GlFormCheckboxGroup,
GlButton,
GlCollapse,
GlIcon,
@@ -56,7 +38,6 @@ export default {
import('ee_component/invite_members/components/active_trial_notification.vue'),
},
mixins: [Tracking.mixin({ category: INVITE_MEMBER_MODAL_TRACKING_CATEGORY })],
- inject: ['newProjectPath'],
props: {
id: {
type: String,
@@ -96,14 +77,6 @@ export default {
required: false,
default: null,
},
- tasksToBeDoneOptions: {
- type: Array,
- required: true,
- },
- projects: {
- type: Array,
- required: true,
- },
fullPath: {
type: String,
required: true,
@@ -131,9 +104,6 @@ export default {
modalId: uniqueId('invite-members-modal-'),
newUsersToInvite: [],
invalidMembers: {},
- selectedTasksToBeDone: [],
- selectedTaskProject: this.projects[0],
- selectedTaskProjectId: this.projects[0]?.id,
source: 'unknown',
mode: 'default',
// Kept in sync with "base"
@@ -141,7 +111,6 @@ export default {
errorsLimit: 2,
isErrorsSectionExpanded: false,
shouldShowEmptyInvitesAlert: false,
- projectsForDropdown: this.projects.map((p) => ({ value: p.id, text: p.title, ...p })),
};
},
computed: {
@@ -170,26 +139,6 @@ export default {
this.errorList.length,
);
},
- tasksToBeDoneEnabled() {
- return qualifiesForTasksToBeDone(this.source) && this.tasksToBeDoneOptions.length;
- },
- showTasksToBeDone() {
- return (
- this.tasksToBeDoneEnabled &&
- this.selectedAccessLevel >= INVITE_MEMBERS_FOR_TASK.minimum_access_level
- );
- },
- showTaskProjects() {
- return !this.isProject && this.selectedTasksToBeDone.length;
- },
- tasksToBeDoneForPost() {
- return this.showTasksToBeDone ? this.selectedTasksToBeDone : [];
- },
- tasksProjectForPost() {
- return this.showTasksToBeDone && this.selectedTasksToBeDone.length
- ? this.selectedTaskProject.id
- : '';
- },
showUserLimitNotification() {
return !isEmpty(this.usersLimitDataset.alertVariant);
},
@@ -243,10 +192,6 @@ export default {
eventHub.$on('openModal', (options) => {
this.openModal(options);
});
-
- if (this.tasksToBeDoneEnabled) {
- this.openModal({ source: 'in_product_marketing_email' });
- }
},
methods: {
showInvalidFeedbackMessage(response) {
@@ -289,8 +234,6 @@ export default {
expires_at: expiresAt,
access_level: accessLevel,
invite_source: this.source,
- tasks_to_be_done: this.tasksToBeDoneForPost,
- tasks_project_id: this.tasksProjectForPost,
...email,
...userId,
};
@@ -304,8 +247,6 @@ export default {
return;
}
- this.trackInviteMembersForTask();
-
const apiAddByInvite = this.isProject
? Api.inviteProjectMembers.bind(Api)
: Api.inviteGroupMembers.bind(Api);
@@ -317,7 +258,7 @@ export default {
const { error, message } = responseFromSuccess(response);
if (error) {
- this.showMemberErrors(message);
+ this.showErrors(message);
} else {
this.onInviteSuccess();
}
@@ -327,19 +268,18 @@ export default {
this.isLoading = false;
}
},
- showMemberErrors(message) {
- this.invalidMembers = message;
- this.$refs.alerts.focus();
+ showErrors(message) {
+ if (isString(message)) {
+ this.invalidFeedbackMessage = message;
+ } else {
+ this.invalidMembers = message;
+ this.$refs.alerts.focus();
+ }
},
tokenName(username) {
// initial token creation hits this and nothing is found... so safe navigation
return this.newUsersToInvite.find((member) => memberName(member) === username)?.name;
},
- trackInviteMembersForTask() {
- const label = 'selected_tasks_to_be_done';
- const property = this.selectedTasksToBeDone.join(',');
- this.track(INVITE_MEMBERS_FOR_TASK.submit, { label, property });
- },
onCancel() {
this.track('click_cancel', { label: this.source });
},
@@ -351,11 +291,6 @@ export default {
this.isLoading = false;
this.shouldShowEmptyInvitesAlert = false;
this.newUsersToInvite = [];
- this.selectedTasksToBeDone = [];
- [this.selectedTaskProject] = this.projects;
- },
- changeSelectedTaskProject(projectId) {
- this.selectedTaskProject = this.projects.find((project) => project.id === projectId);
},
onInviteSuccess() {
this.track('invite_successful', { label: this.source });
@@ -513,46 +448,5 @@ export default {
@token-remove="removeToken"
/>
</template>
- <template #form-after>
- <div v-if="showTasksToBeDone" data-testid="invite-members-modal-tasks-to-be-done">
- <label class="gl-mt-5">
- {{ $options.labels.tasksToBeDone.title }}
- </label>
- <template v-if="projects.length">
- <gl-form-checkbox-group
- v-model="selectedTasksToBeDone"
- :options="tasksToBeDoneOptions"
- data-testid="invite-members-modal-tasks"
- />
- <template v-if="showTaskProjects">
- <label class="gl-mt-5 gl-display-block">
- {{ $options.labels.tasksProject.title }}
- </label>
- <gl-collapsible-listbox
- v-model="selectedTaskProjectId"
- :items="projectsForDropdown"
- :block="true"
- class="gl-w-half gl-xs-w-full"
- data-testid="invite-members-modal-project-select"
- @select="changeSelectedTaskProject"
- />
- </template>
- </template>
- <gl-alert
- v-else-if="tasksToBeDoneEnabled"
- variant="tip"
- :dismissible="false"
- data-testid="invite-members-modal-no-projects-alert"
- >
- <gl-sprintf :message="$options.labels.tasksToBeDone.noProjects">
- <template #link="{ content }">
- <gl-link :href="newProjectPath" target="_blank" class="gl-label-link">
- {{ content }}
- </gl-link>
- </template>
- </gl-sprintf>
- </gl-alert>
- </div>
- </template>
</invite-modal-base>
</template>
diff --git a/app/assets/javascripts/invite_members/components/invite_modal_base.vue b/app/assets/javascripts/invite_members/components/invite_modal_base.vue
index 91b623821dd..5a891e23faf 100644
--- a/app/assets/javascripts/invite_members/components/invite_modal_base.vue
+++ b/app/assets/javascripts/invite_members/components/invite_modal_base.vue
@@ -330,8 +330,6 @@ export default {
:target="null"
/>
</gl-form-group>
-
- <slot name="form-after"></slot>
</template>
<template v-for="{ key } in extraSlots" #[key]>
diff --git a/app/assets/javascripts/invite_members/constants.js b/app/assets/javascripts/invite_members/constants.js
index 1cee0c32008..93386e5504b 100644
--- a/app/assets/javascripts/invite_members/constants.js
+++ b/app/assets/javascripts/invite_members/constants.js
@@ -5,10 +5,6 @@ export const PROJECT_SELECT_LABEL_ID = 'project-select';
export const SEARCH_DELAY = 200;
export const VALID_TOKEN_BACKGROUND = 'gl-bg-green-100';
export const INVALID_TOKEN_BACKGROUND = 'gl-bg-red-100';
-export const INVITE_MEMBERS_FOR_TASK = {
- minimum_access_level: 30,
- submit: 'submit',
-};
export const TOAST_MESSAGE_LOCALSTORAGE_KEY = 'members_invited_successfully';
export const GROUP_FILTERS = {
@@ -46,15 +42,6 @@ export const MEMBERS_TO_PROJECT_CELEBRATE_INTRO_TEXT = s__(
);
export const MEMBERS_SEARCH_FIELD = s__('InviteMembersModal|Username or email address');
export const MEMBERS_PLACEHOLDER = s__('InviteMembersModal|Select members or type email addresses');
-export const MEMBERS_TASKS_TO_BE_DONE_TITLE = s__(
- 'InviteMembersModal|Create issues for your new team member to work on (optional)',
-);
-export const MEMBERS_TASKS_TO_BE_DONE_NO_PROJECTS = s__(
- 'InviteMembersModal|To assign issues to a new team member, you need a project for the issues. %{linkStart}Create a project to get started.%{linkEnd}',
-);
-export const MEMBERS_TASKS_PROJECTS_TITLE = s__(
- 'InviteMembersModal|Choose a project for the issues',
-);
export const GROUP_MODAL_DEFAULT_TITLE = s__('InviteMembersModal|Invite a group');
export const GROUP_MODAL_TO_GROUP_DEFAULT_INTRO_TEXT = s__(
@@ -123,13 +110,6 @@ export const MEMBER_MODAL_LABELS = {
},
searchField: MEMBERS_SEARCH_FIELD,
placeHolder: MEMBERS_PLACEHOLDER,
- tasksToBeDone: {
- title: MEMBERS_TASKS_TO_BE_DONE_TITLE,
- noProjects: MEMBERS_TASKS_TO_BE_DONE_NO_PROJECTS,
- },
- tasksProject: {
- title: MEMBERS_TASKS_PROJECTS_TITLE,
- },
toastMessageSuccessful: TOAST_MESSAGE_SUCCESSFUL,
memberErrorListText: MEMBER_ERROR_LIST_TEXT,
collapsedErrors: COLLAPSED_ERRORS,
diff --git a/app/assets/javascripts/invite_members/init_invite_members_modal.js b/app/assets/javascripts/invite_members/init_invite_members_modal.js
index 4f539cd8756..41ed0179364 100644
--- a/app/assets/javascripts/invite_members/init_invite_members_modal.js
+++ b/app/assets/javascripts/invite_members/init_invite_members_modal.js
@@ -25,7 +25,6 @@ export default (function initInviteMembersModal() {
name: 'InviteMembersModalRoot',
provide: {
name: el.dataset.name,
- newProjectPath: el.dataset.newProjectPath,
},
render: (createElement) =>
createElement(InviteMembersModal, {
@@ -34,8 +33,6 @@ export default (function initInviteMembersModal() {
isProject: parseBoolean(el.dataset.isProject),
accessLevels: JSON.parse(el.dataset.accessLevels),
defaultAccessLevel: parseInt(el.dataset.defaultAccessLevel, 10),
- tasksToBeDoneOptions: JSON.parse(el.dataset.tasksToBeDoneOptions || '[]'),
- projects: JSON.parse(el.dataset.projects || '[]'),
usersFilter: el.dataset.usersFilter,
filterId: parseInt(el.dataset.filterId, 10),
usersLimitDataset: convertObjectPropsToCamelCase(
diff --git a/app/assets/javascripts/invite_members/utils/member_utils.js b/app/assets/javascripts/invite_members/utils/member_utils.js
index 240a3a89686..7998cb69445 100644
--- a/app/assets/javascripts/invite_members/utils/member_utils.js
+++ b/app/assets/javascripts/invite_members/utils/member_utils.js
@@ -1,5 +1,3 @@
-import { getParameterValues } from '~/lib/utils/url_utility';
-
export function memberName(member) {
// user defined tokens(invites by email) will have email in `name` and will not contain `username`
return member.username || member.name;
@@ -8,7 +6,3 @@ export function memberName(member) {
export function triggerExternalAlert() {
return false;
}
-
-export function qualifiesForTasksToBeDone() {
- return getParameterValues('open_modal')[0] === 'invite_members_for_task';
-}