diff --git a/frontend/src/components/base/BasePagination.vue b/frontend/src/components/base/BasePagination.vue
new file mode 100644
index 000000000..617d66d8e
--- /dev/null
+++ b/frontend/src/components/base/BasePagination.vue
@@ -0,0 +1,97 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/misc/Pagination.vue b/frontend/src/components/misc/Pagination.vue
index bae43fc00..341bd2853 100644
--- a/frontend/src/components/misc/Pagination.vue
+++ b/frontend/src/components/misc/Pagination.vue
@@ -1,89 +1,49 @@
-
+ {{ $t('misc.previous') }}
+
+
+
+
+
+
+
+
+
-
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/frontend/src/components/misc/PaginationEmit.vue b/frontend/src/components/misc/PaginationEmit.vue
new file mode 100644
index 000000000..f6b3176e0
--- /dev/null
+++ b/frontend/src/components/misc/PaginationEmit.vue
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/frontend/src/components/tasks/partials/Comments.vue b/frontend/src/components/tasks/partials/Comments.vue
index a27d521b0..763fe0915 100644
--- a/frontend/src/components/tasks/partials/Comments.vue
+++ b/frontend/src/components/tasks/partials/Comments.vue
@@ -1,7 +1,8 @@
+
+
+
+
{
])))
})
+const frontendUrl = computed(() => configStore.frontendUrl)
+
+const currentPage = ref(1)
+
+const commentsRef = ref(null)
+
async function attachmentUpload(files: File[] | FileList): (Promise) {
const uploadPromises: Promise[] = []
@@ -267,12 +284,21 @@ async function loadComments(taskId: ITask['id']) {
newComment.taskId = taskId
commentEdit.taskId = taskId
commentToDelete.taskId = taskId
- comments.value = await taskCommentService.getAll({taskId})
+ comments.value = await taskCommentService.getAll({taskId}, {}, currentPage.value)
+}
+
+async function changePage(page: number) {
+ commentsRef.value?.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'nearest' })
+ currentPage.value = page
+ await loadComments(props.taskId)
}
watch(
() => props.taskId,
- loadComments,
+ () => {
+ currentPage.value = 1 // Reset to first page when task changes
+ loadComments(props.taskId)
+ },
{immediate: true},
)
@@ -404,4 +430,8 @@ async function deleteComment(commentToDelete: ITaskComment) {
.media-content {
width: calc(100% - 48px - 2rem);
}
+
+.comments-container {
+ scroll-margin-top: 4rem;
+}
\ No newline at end of file