diff --git a/web/src/lib/components/elements/search-bar.svelte b/web/src/lib/components/elements/search-bar.svelte
index 2440285704..dcf314f59d 100644
--- a/web/src/lib/components/elements/search-bar.svelte
+++ b/web/src/lib/components/elements/search-bar.svelte
@@ -1,9 +1,9 @@
-
+
{
+ value = value.toLowerCase();
+ return ([title, items]: [string, Permission[]]) => {
+ return title.toLowerCase().includes(value) || items.some((item) => item.toLowerCase().includes(value));
+ };
+ };
interface Props {
apiKey: { name: string; permissions: Permission[] };
@@ -20,137 +26,26 @@
}
let { apiKey = $bindable(), title, cancelText = $t('cancel'), submitText = $t('save'), onClose }: Props = $props();
+ let name = $derived(apiKey.name);
let selectedItems: Permission[] = $state(apiKey.permissions);
let selectAllItems = $derived(selectedItems.length === Object.keys(Permission).length - 1);
- const permissions: Map = new SvelteMap();
+ const permissions: Record = {};
+ for (const permission of Object.values(Permission)) {
+ if (permission === Permission.All) {
+ continue;
+ }
- permissions.set('activity', [
- Permission.ActivityCreate,
- Permission.ActivityRead,
- Permission.ActivityUpdate,
- Permission.ActivityDelete,
- Permission.ActivityStatistics,
- ]);
+ const [group] = permission.split('.');
+ if (!permissions[group]) {
+ permissions[group] = [];
+ }
+ permissions[group].push(permission);
+ }
- permissions.set('api_key', [
- Permission.ApiKeyCreate,
- Permission.ApiKeyRead,
- Permission.ApiKeyUpdate,
- Permission.ApiKeyDelete,
- ]);
-
- permissions.set('asset', [
- Permission.AssetRead,
- Permission.AssetUpdate,
- Permission.AssetDelete,
- Permission.AssetShare,
- Permission.AssetView,
- Permission.AssetDownload,
- Permission.AssetUpload,
- ]);
-
- permissions.set('album', [
- Permission.AlbumCreate,
- Permission.AlbumRead,
- Permission.AlbumUpdate,
- Permission.AlbumDelete,
- Permission.AlbumStatistics,
-
- Permission.AlbumAddAsset,
- Permission.AlbumRemoveAsset,
- Permission.AlbumShare,
- Permission.AlbumDownload,
- ]);
-
- permissions.set('auth_device', [Permission.AuthDeviceDelete]);
-
- permissions.set('archive', [Permission.ArchiveRead]);
-
- permissions.set('face', [Permission.FaceCreate, Permission.FaceRead, Permission.FaceUpdate, Permission.FaceDelete]);
-
- permissions.set('library', [
- Permission.LibraryCreate,
- Permission.LibraryRead,
- Permission.LibraryUpdate,
- Permission.LibraryDelete,
- Permission.LibraryStatistics,
- ]);
-
- permissions.set('timeline', [Permission.TimelineRead, Permission.TimelineDownload]);
-
- permissions.set('memory', [
- Permission.MemoryCreate,
- Permission.MemoryRead,
- Permission.MemoryUpdate,
- Permission.MemoryDelete,
- ]);
-
- permissions.set('notification', [
- Permission.NotificationCreate,
- Permission.NotificationRead,
- Permission.NotificationUpdate,
- Permission.NotificationDelete,
- ]);
-
- permissions.set('partner', [
- Permission.PartnerCreate,
- Permission.PartnerRead,
- Permission.PartnerUpdate,
- Permission.PartnerDelete,
- ]);
-
- permissions.set('person', [
- Permission.PersonCreate,
- Permission.PersonRead,
- Permission.PersonUpdate,
- Permission.PersonDelete,
- Permission.PersonStatistics,
- Permission.PersonMerge,
- Permission.PersonReassign,
- ]);
-
- permissions.set('session', [
- Permission.SessionCreate,
- Permission.SessionRead,
- Permission.SessionUpdate,
- Permission.SessionDelete,
- Permission.SessionLock,
- ]);
-
- permissions.set('sharedLink', [
- Permission.SharedLinkCreate,
- Permission.SharedLinkRead,
- Permission.SharedLinkUpdate,
- Permission.SharedLinkDelete,
- ]);
-
- permissions.set('stack', [
- Permission.StackCreate,
- Permission.StackRead,
- Permission.StackUpdate,
- Permission.StackDelete,
- ]);
-
- permissions.set('systemConfig', [Permission.SystemConfigRead, Permission.SystemConfigUpdate]);
-
- permissions.set('systemMetadata', [Permission.SystemMetadataRead, Permission.SystemMetadataUpdate]);
-
- permissions.set('tag', [
- Permission.TagCreate,
- Permission.TagRead,
- Permission.TagUpdate,
- Permission.TagDelete,
- Permission.TagAsset,
- ]);
-
- permissions.set('adminUser', [
- Permission.AdminUserCreate,
- Permission.AdminUserRead,
- Permission.AdminUserUpdate,
- Permission.AdminUserDelete,
- ]);
+ let searchValue = $state('');
+ let filteredResults = $derived(Object.entries(permissions).filter(matches(searchValue)));
const handleSelectItems = (permissions: Permission[]) => {
selectedItems = Array.from(new Set([...selectedItems, ...permissions]));
@@ -177,9 +72,9 @@
});
} else {
if (selectAllItems) {
- onClose({ name: apiKey.name, permissions: [Permission.All] });
+ onClose({ name, permissions: [Permission.All] });
} else {
- onClose({ name: apiKey.name, permissions: selectedItems });
+ onClose({ name, permissions: selectedItems });
}
}
};
@@ -200,22 +95,37 @@