feat: pagination

Signed-off-by: Sebastian Krupinski <krupinski01@gmail.com>
This commit is contained in:
2026-09-05 20:14:40 -04:00
parent 47d97a8d1a
commit 6942469259
9 changed files with 200 additions and 326 deletions
+10
View File
@@ -5,6 +5,7 @@ import { formatSize } from '@/utils/fileHelpers'
import FileActionsMenu from '@/components/FileActionsMenu.vue'
import FilePreview from '@/components/FilePreview.vue'
import FilePreviewPopover from '@/components/viewer/FilePreviewPopover.vue'
import FilesLoadMoreSentinel from '@/components/FilesLoadMoreSentinel.vue'
type PreviewSource = (item: { id: string; meta?: Record<string, unknown> }) => string | Blob | Promise<string | Blob>
@@ -12,6 +13,8 @@ const props = defineProps<{
collections: CollectionObject[]
entities: EntityObject[]
selectedIds: Set<string>
hasMore?: boolean
isLoadingMore?: boolean
previewSource?: PreviewSource
thumbnailSource?: PreviewSource
}>()
@@ -24,6 +27,7 @@ const emit = defineEmits<{
'delete': [item: CollectionObject | EntityObject]
'download': [item: CollectionObject | EntityObject]
'show-details': [item: CollectionObject | EntityObject]
'load-more': []
}>()
</script>
@@ -90,6 +94,12 @@ const emit = defineEmits<{
/>
</div>
</div>
<FilesLoadMoreSentinel
:has-more="!!hasMore"
:loading="!!isLoadingMore"
@intersect="emit('load-more')"
/>
</template>
<style scoped>