diff options
Diffstat (limited to 'app/assets/javascripts/members/components/table/member_actions.vue')
-rw-r--r-- | app/assets/javascripts/members/components/table/member_actions.vue | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/app/assets/javascripts/members/components/table/member_actions.vue b/app/assets/javascripts/members/components/table/member_actions.vue new file mode 100644 index 00000000000..61a6f37687a --- /dev/null +++ b/app/assets/javascripts/members/components/table/member_actions.vue @@ -0,0 +1,60 @@ +<script> +import { MEMBER_TYPES, EE_ACTION_BUTTONS } from 'ee_else_ce/members/constants'; +import AccessRequestActionButtons from '../action_buttons/access_request_action_buttons.vue'; +import GroupActionButtons from '../action_buttons/group_action_buttons.vue'; +import InviteActionButtons from '../action_buttons/invite_action_buttons.vue'; +import UserActionDropdown from '../action_dropdowns/user_action_dropdown.vue'; + +export default { + name: 'MemberActions', + components: { + UserActionDropdown, + GroupActionButtons, + InviteActionButtons, + AccessRequestActionButtons, + BannedActionButtons: () => + import('ee_component/members/components/action_buttons/banned_action_buttons.vue'), + }, + props: { + member: { + type: Object, + required: true, + }, + memberType: { + type: String, + required: true, + }, + permissions: { + type: Object, + required: true, + }, + isCurrentUser: { + type: Boolean, + required: true, + }, + }, + computed: { + actionButtonComponent() { + const dictionary = { + [MEMBER_TYPES.user]: 'user-action-dropdown', + [MEMBER_TYPES.group]: 'group-action-buttons', + [MEMBER_TYPES.invite]: 'invite-action-buttons', + [MEMBER_TYPES.accessRequest]: 'access-request-action-buttons', + ...EE_ACTION_BUTTONS, + }; + + return dictionary[this.memberType]; + }, + }, +}; +</script> + +<template> + <component + :is="actionButtonComponent" + v-if="actionButtonComponent" + :member="member" + :permissions="permissions" + :is-current-user="isCurrentUser" + /> +</template> |