Repository navigation
FOUR-26360 | Pagination Enabled and Shows Loading with a Single Page in Projects - #9118
mcraeteisha wants to merge 3 commits into
Conversation
This patch updates the pagination UI to visually mark disabled controls and prevents hover styling from overriding the disabled state. In the datatable mixin, navigation events now skip fetches when the page is already at the first/last value or has not changed, avoiding unnecessary requests and duplicate refreshes.
PR SummaryLow Risk Overview The shared datatable mixin’s Auth clients listing gets the same skip guard in its local Multi-page navigation when the page actually changes is unchanged. Reviewed by Cursor Bugbot for commit a4d673f. Bugbot is set up for automated code reviews on this repo. Configure here. |
|
QA server K8S was successfully deployed https://tenant-1.ci-f75f6147b9.engk8s.processmaker.net |
|
QA server K8S was successfully deployed https://tenant-1.ci-f75f6147b9.engk8s.processmaker.net |
Added a shared refreshListing helper to reset the datatable page and refetch data after mutation actions. Updated archive and delete flows in process navigation and template listings to use it instead of directly calling pagination.loadPage(1), which could skip the fetch when already on page 1.
|
|
QA server K8S was successfully deployed https://tenant-1.ci-f75f6147b9.engk8s.processmaker.net |





Issue
Ticket: FOUR-26360
On project-related screens, pagination controls still appear interactive when there is only one page (or when the user is already on the first or last page). Hovering shows a locked/disabled cursor, but clicking still triggers a fetch and shows the table loading state.
onPageChangealways calledfetch()after clamping the page number. When navigation was already at the first or last page, the clamped page matched the current page, but a redundant API request still ran and refreshed the listing.This PR updates core ProcessMaker pagination shared by listings that use
Pagination.vueand the common datatable mixin. Matching fixes inpackage-projects,package-comments, andpackage-smart-extractcover package-local datatable copies used by those packages’ listings. Multi-page pagination is unchanged when the page actually advances.Solution
processmaker
resources/js/components/common/mixins/datatable.js,onPageChangerecords the previous page and returns beforefetch()when the resolved page is unchanged (disabled first/prev/next/last or no page change).resources/js/components/common/Pagination.vue, disabled controls use stronger disabled styling (opacity) and keep the disabled background on hover so hover styles do not override the locked state.package-projects (
8552e86)resources/js/projects/components/common/mixins/datatable.js, apply the same skip-redundant-fetchguard inonPageChange.perPagefrom10to15.package-comments (
2efb2a2)resources/js/components/common/mixins/datatable.js, apply the same skip-redundant-fetchguard inonPageChange.package-smart-extract (
2a1f3de)resources/js/components/common/mixins/datatable.js, apply the same skip-redundant-fetchguard inonPageChange.perPagefrom10to15.How To Test
Manual Tests
ci:deploy
ci:package-projects:bugfix/FOUR-26360
ci:package-comments:bugfix/FOUR-26360
ci:package-smart-extract:bugfix/FOUR-26360
Code Review Checklist