51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
import { GlToast } from '@gitlab/ui';
|
|
import Vue from 'vue';
|
|
import InviteMembersModal from '~/invite_members/components/invite_members_modal.vue';
|
|
import { parseBoolean } from '~/lib/utils/common_utils';
|
|
|
|
Vue.use(GlToast);
|
|
|
|
let initedInviteMembersModal;
|
|
|
|
export default function initInviteMembersModal() {
|
|
if (initedInviteMembersModal) {
|
|
// if we already loaded this in another part of the dom, we don't want to do it again
|
|
// else we will stack the modals
|
|
return false;
|
|
}
|
|
|
|
// https://gitlab.com/gitlab-org/gitlab/-/issues/344955
|
|
// bug lying in wait here for someone to put group and project invite in same screen
|
|
// once that happens we'll need to mount these differently, perhaps split
|
|
// group/project to each mount one, with many ways to open it.
|
|
const el = document.querySelector('.js-invite-members-modal');
|
|
|
|
if (!el) {
|
|
return false;
|
|
}
|
|
|
|
initedInviteMembersModal = true;
|
|
|
|
return new Vue({
|
|
el,
|
|
provide: {
|
|
newProjectPath: el.dataset.newProjectPath,
|
|
},
|
|
render: (createElement) =>
|
|
createElement(InviteMembersModal, {
|
|
props: {
|
|
...el.dataset,
|
|
isProject: parseBoolean(el.dataset.isProject),
|
|
accessLevels: JSON.parse(el.dataset.accessLevels),
|
|
defaultAccessLevel: parseInt(el.dataset.defaultAccessLevel, 10),
|
|
groupSelectFilter: el.dataset.groupsFilter,
|
|
groupSelectParentId: parseInt(el.dataset.parentId, 10),
|
|
tasksToBeDoneOptions: JSON.parse(el.dataset.tasksToBeDoneOptions || '[]'),
|
|
projects: JSON.parse(el.dataset.projects || '[]'),
|
|
usersFilter: el.dataset.usersFilter,
|
|
filterId: parseInt(el.dataset.filterId, 10),
|
|
},
|
|
}),
|
|
});
|
|
}
|