debian-mirror-gitlab/app/assets/javascripts/members/components/table/members_table_cell.vue

72 lines
1.5 KiB
Vue
Raw Normal View History

2021-01-03 14:25:43 +05:30
<script>
2021-02-22 17:27:13 +05:30
import { MEMBER_TYPES } from '../../constants';
import {
isGroup,
isDirectMember,
isCurrentUser,
canRemove,
canResend,
canUpdate,
} from '../../utils';
2021-01-03 14:25:43 +05:30
export default {
name: 'MembersTableCell',
2021-04-29 21:17:54 +05:30
inject: ['currentUserId'],
2021-01-03 14:25:43 +05:30
props: {
member: {
type: Object,
required: true,
},
},
computed: {
isGroup() {
2021-01-29 00:20:46 +05:30
return isGroup(this.member);
2021-01-03 14:25:43 +05:30
},
isInvite() {
return Boolean(this.member.invite);
},
isAccessRequest() {
return Boolean(this.member.requestedAt);
},
memberType() {
if (this.isGroup) {
return MEMBER_TYPES.group;
} else if (this.isInvite) {
return MEMBER_TYPES.invite;
} else if (this.isAccessRequest) {
return MEMBER_TYPES.accessRequest;
}
return MEMBER_TYPES.user;
},
isDirectMember() {
2021-03-11 19:13:27 +05:30
return isDirectMember(this.member);
2021-01-03 14:25:43 +05:30
},
isCurrentUser() {
2021-01-29 00:20:46 +05:30
return isCurrentUser(this.member, this.currentUserId);
2021-01-03 14:25:43 +05:30
},
canRemove() {
2021-03-11 19:13:27 +05:30
return canRemove(this.member);
2021-01-03 14:25:43 +05:30
},
canResend() {
2021-01-29 00:20:46 +05:30
return canResend(this.member);
2021-01-03 14:25:43 +05:30
},
canUpdate() {
2021-03-11 19:13:27 +05:30
return canUpdate(this.member, this.currentUserId);
2021-01-03 14:25:43 +05:30
},
},
render() {
return this.$scopedSlots.default({
memberType: this.memberType,
isDirectMember: this.isDirectMember,
isCurrentUser: this.isCurrentUser,
permissions: {
canRemove: this.canRemove,
canResend: this.canResend,
canUpdate: this.canUpdate,
},
});
},
};
</script>