{{ groupMemberModeration.groupRef.name }}
-
-
+
+
-
+
-
+
-
+
-
+
-
-
-
- {{
- t('dialog.group_member_moderation.sent_invites')
- }}
- {{
- groupInvitesModerationTable.data.length
- }}
-
+
+
+ {{
+ t('dialog.group_member_moderation.sent_invites')
+ }}
+ {{
+ groupInvitesModerationTable.data.length
+ }}
+
+
+ {{
+ t('dialog.group_member_moderation.join_requests')
+ }}
+ {{
+ groupJoinRequestsModerationTable.data.length
+ }}
+
+
+ {{
+ t('dialog.group_member_moderation.blocked_requests')
+ }}
+ {{
+ groupBlockedModerationTable.data.length
+ }}
+
+
@@ -206,17 +222,9 @@
@click="groupMembersDeleteSentInvite"
>{{ t('dialog.group_member_moderation.delete_sent_invite') }}
-
+
-
-
- {{
- t('dialog.group_member_moderation.join_requests')
- }}
- {{
- groupJoinRequestsModerationTable.data.length
- }}
-
+
@@ -262,17 +270,9 @@
@click="groupMembersBlockJoinRequest"
>{{ t('dialog.group_member_moderation.block_join_requests') }}
-
+
-
-
- {{
- t('dialog.group_member_moderation.blocked_requests')
- }}
- {{
- groupBlockedModerationTable.data.length
- }}
-
+
@@ -294,14 +294,12 @@
@click="groupMembersDeleteBlockedRequest"
>{{ t('dialog.group_member_moderation.delete_blocked_requests') }}
-
-
+
+
-
+
-
+
-
-
+
+
@@ -533,6 +531,7 @@
import { InputGroupField, InputGroupTextareaField } from '@/components/ui/input-group';
import { Button } from '@/components/ui/button';
import { Spinner } from '@/components/ui/spinner';
+ import { TabsUnderline } from '@/components/ui/tabs';
import { Trash2 } from 'lucide-vue-next';
import { storeToRefs } from 'pinia';
import { toast } from 'vue-sonner';
@@ -566,6 +565,29 @@
const { applyGroupMember, handleGroupMember, handleGroupMemberProps } = useGroupStore();
const { showFullscreenImageDialog } = useGalleryStore();
const { t } = useI18n();
+ const groupModerationTabs = computed(() => [
+ { value: 'members', label: t('dialog.group_member_moderation.members') },
+ {
+ value: 'bans',
+ label: t('dialog.group_member_moderation.bans'),
+ disabled: !hasGroupPermission(groupMemberModeration.value?.groupRef, 'group-bans-manage')
+ },
+ {
+ value: 'invites',
+ label: t('dialog.group_member_moderation.invites'),
+ disabled: !hasGroupPermission(groupMemberModeration.value?.groupRef, 'group-invites-manage')
+ },
+ {
+ value: 'logs',
+ label: t('dialog.group_member_moderation.logs'),
+ disabled: !hasGroupPermission(groupMemberModeration.value?.groupRef, 'group-audit-view')
+ }
+ ]);
+ const groupInvitesTabs = computed(() => [
+ { value: 'sent', label: t('dialog.group_member_moderation.sent_invites') },
+ { value: 'join', label: t('dialog.group_member_moderation.join_requests') },
+ { value: 'blocked', label: t('dialog.group_member_moderation.blocked_requests') }
+ ]);
const selectedUsers = reactive({});
const selectedUsersArray = ref([]);
const isGroupMembersLoading = ref(false);
diff --git a/src/components/dialogs/NewInstanceDialog.vue b/src/components/dialogs/NewInstanceDialog.vue
index 7bc236d1..7adb0c4a 100644
--- a/src/components/dialogs/NewInstanceDialog.vue
+++ b/src/components/dialogs/NewInstanceDialog.vue
@@ -5,8 +5,12 @@
:title="t('dialog.new_instance.header')"
width="650px"
append-to-body>
-
-
+
+
{{ t('dialog.new_instance.access_type') }}
@@ -221,8 +225,8 @@
-
-
+
+
{{ t('dialog.new_instance.access_type') }}
@@ -429,8 +433,8 @@
-
-
+
+
-
+
-