diff --git a/extensions/Servers/Proxmox/views/firewall.blade.php b/extensions/Servers/Proxmox/views/firewall.blade.php index 81cccbab6..ac7d5c8f7 100644 --- a/extensions/Servers/Proxmox/views/firewall.blade.php +++ b/extensions/Servers/Proxmox/views/firewall.blade.php @@ -394,23 +394,39 @@ get paginationRange() { const total = this.totalPages; const current = this.currentPage; - const delta = 2; + const delta = 2; // Show 2 pages on each side of current + + if (total <= 0) return []; + if (total <= 7) { + // If 7 or fewer pages, show all pages + return Array.from({ length: total }, (_, i) => i + 1); + } + const range = []; + const left = Math.max(2, current - delta); + const right = Math.min(total - 1, current + delta); - for (let i = Math.max(2, current - delta); i <= Math.min(total - 1, current + delta); i++) { - range.push(i); - } + // Always include first page + range.push(1); - if (current - delta > 2) { - range.unshift('...'); - } - if (current + delta < total - 1) { + // Add left ellipsis if there's a gap + if (left > 2) { range.push('...'); } - if (total > 0) { - range.unshift(1); + // Add middle pages (avoiding duplicates with first/last) + for (let i = left; i <= right; i++) { + if (i !== 1 && i !== total) { + range.push(i); + } } + + // Add right ellipsis if there's a gap + if (right < total - 1) { + range.push('...'); + } + + // Always include last page (if different from first) if (total > 1) { range.push(total); } @@ -437,7 +453,7 @@ x-effect="if (currentPage > totalPages && totalPages > 0) currentPage = totalPages" class="space-y-4" > -
+
-
-
- +
+
+ Showing + + of +
-
- +
+ Page + + / +
@@ -534,34 +556,37 @@
-
+
-