diff --git a/src/lib/components/admin/Users/Groups.svelte b/src/lib/components/admin/Users/Groups.svelte index e4fa98360d..e31a27f688 100644 --- a/src/lib/components/admin/Users/Groups.svelte +++ b/src/lib/components/admin/Users/Groups.svelte @@ -10,6 +10,9 @@ import EditGroupModal from './Groups/EditGroupModal.svelte'; import GroupItem from './Groups/GroupItem.svelte'; import XMark from '$lib/components/icons/XMark.svelte'; + import ChevronDown from '$lib/components/icons/ChevronDown.svelte'; + import Check from '$lib/components/icons/Check.svelte'; + import Select from '$lib/components/common/Select.svelte'; import { createNewGroup, getGroups } from '$lib/apis/groups'; import { getUserDefaultPermissions, updateUserDefaultPermissions } from '$lib/apis/users'; @@ -20,6 +23,12 @@ let groups = []; let query = ''; + let sortBy = 'members'; + + const sortItems = [ + { value: 'members', label: $i18n.t('Members') }, + { value: 'name', label: $i18n.t('Name') } + ]; $: filteredGroups = groups .filter((group) => { @@ -32,6 +41,10 @@ } }) .sort((a, b) => { + if (sortBy === 'name') { + return a.name.localeCompare(b.name); + } + return (b.member_count ?? 0) - (a.member_count ?? 0) || a.name.localeCompare(b.name); }); @@ -158,6 +171,31 @@ {/if} + + + + + {selectedLabel} + + + + + + {item.label} + + + + + {#if filteredGroups.length !== 0} diff --git a/src/lib/components/admin/Users/Groups/GroupItem.svelte b/src/lib/components/admin/Users/Groups/GroupItem.svelte index 2c977ca63b..5eaab31768 100644 --- a/src/lib/components/admin/Users/Groups/GroupItem.svelte +++ b/src/lib/components/admin/Users/Groups/GroupItem.svelte @@ -7,21 +7,22 @@ import { deleteGroupById, updateGroupById } from '$lib/apis/groups'; - import Pencil from '$lib/components/icons/Pencil.svelte'; import EditGroupModal from './EditGroupModal.svelte'; export let group = { + id: '', name: 'Admins', - user_ids: [1, 2, 3] + description: '', + permissions: {}, + user_ids: [1, 2, 3], + member_count: 0 }; export let defaultPermissions = {}; export let setGroups = () => {}; let showEdit = false; - $: hasCustomPermissions = - group?.permissions && - Object.keys(group.permissions).some((key) => group.permissions[key] !== undefined); + $: hasCustomPermissions = Object.keys(group?.permissions ?? {}).length > 0; const updateHandler = async (_group) => { const res = await updateGroupById(localStorage.token, group.id, _group).catch((error) => { @@ -66,7 +67,7 @@ /> { showEdit = true; }} @@ -86,7 +87,7 @@ - + {#if group?.description} {group.description} @@ -101,23 +102,16 @@ {#if hasCustomPermissions} {$i18n.t('Custom permissions')} {:else} - {$i18n.t('Default permissions')} + {$i18n.t('Uses defaults')} {/if} - - - {$i18n.t('Edit')} - - - - + + {$i18n.t('Edit')}