diff --git a/src/components/dialogs/PreviousInstancesDialog/PreviousInstancesListDialog.vue b/src/components/dialogs/PreviousInstancesDialog/PreviousInstancesListDialog.vue index 48c4c053..e1fe2921 100644 --- a/src/components/dialogs/PreviousInstancesDialog/PreviousInstancesListDialog.vue +++ b/src/components/dialogs/PreviousInstancesDialog/PreviousInstancesListDialog.vue @@ -251,6 +251,7 @@ const D = previousInstancesListDialog.value; if (currentId.value !== D.lastId) { table.setPageIndex(0); + pageIndex.value = 0; D.lastId = currentId.value; } if (props.variant === 'user') { diff --git a/src/components/ui/data-table/DataTableLayout.vue b/src/components/ui/data-table/DataTableLayout.vue index 9acf94bd..e44943c2 100644 --- a/src/components/ui/data-table/DataTableLayout.vue +++ b/src/components/ui/data-table/DataTableLayout.vue @@ -629,6 +629,19 @@ } }); + // When the total page count shrinks below the current page + // jump to the last available page + watch( + () => props.table.getPageCount?.(), + (pageCount) => { + if (pageCount == null || pageCount <= 0) return; + const pageIndex = props.table.getState?.().pagination?.pageIndex ?? 0; + if (pageIndex >= pageCount) { + props.table.setPageIndex(pageCount - 1); + } + } + ); + watch([currentPage, pageSizeProxy], async () => { await nextTick(); if (tableScrollRef.value) {