From 1d1f60ab440b167b9c6ab8f4011b884caa99f27d Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Wed, 15 Jul 2026 01:35:59 -0400 Subject: [PATCH] refac --- src/lib/components/admin/Users/Groups.svelte | 38 +++++++++++++++++++ .../admin/Users/Groups/GroupItem.svelte | 32 +++++++--------- 2 files changed, 51 insertions(+), 19 deletions(-) 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} + + {#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 @@ />