From 892d14c13ad9de1f85e7c9ca61596a375c41d759 Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Fri, 4 Sep 2026 14:18:09 +0700 Subject: [PATCH] feat: enhance AssignmentIndex; implement infinite scroll and simplify pagination handling --- .../Assignment/AssignmentController.php | 4 ++-- .../admin/academic-classes/assignments/index.tsx | 15 ++++----------- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/Admin/AcademicClasses/Assignment/AssignmentController.php b/app/Http/Controllers/Admin/AcademicClasses/Assignment/AssignmentController.php index 7ef236b..25538b3 100644 --- a/app/Http/Controllers/Admin/AcademicClasses/Assignment/AssignmentController.php +++ b/app/Http/Controllers/Admin/AcademicClasses/Assignment/AssignmentController.php @@ -24,12 +24,12 @@ public function __construct( public function index(PaginatedRequest $request): Response { return Inertia::render('admin/academic-classes/assignments/index', [ - 'assignments' => $this->service->paginated( + 'assignments' => Inertia::scroll(fn () => $this->service->paginated( $request->user(), ...$request->validatedWithDefaults(), courseClassId: $request->validated('course_class_id'), academicTermId: $this->academicTermService->getActive()?->id, - ), + )), 'courseClasses' => $this->courseClassService->getAllForSelect($request->user()), 'filters' => $request->only(['course_class_id']), ]); diff --git a/resources/js/pages/admin/academic-classes/assignments/index.tsx b/resources/js/pages/admin/academic-classes/assignments/index.tsx index 5225c6f..82eaf5d 100644 --- a/resources/js/pages/admin/academic-classes/assignments/index.tsx +++ b/resources/js/pages/admin/academic-classes/assignments/index.tsx @@ -192,16 +192,11 @@ export default function AssignmentIndex({ total: assignments.total, }; - const { - search, - handlePageChange, - handlePerPageChange, - handleSearchChange, - applyFilters, - } = useServerTable({ + const { search, handleSearchChange, applyFilters } = useServerTable({ route: () => assignmentIndex.url(), pagination, filters, + resetKeys: ['assignments'], }); function handleDelete() { @@ -324,10 +319,9 @@ export default function AssignmentIndex({ data={assignments.data} searchKey="title" pagination={pagination} - onPageChange={handlePageChange} - onPerPageChange={handlePerPageChange} onSearchChange={handleSearchChange} searchValue={search} + infiniteScroll={{ propName: 'assignments' }} toolbar={toolbar} /> ) : ( @@ -337,10 +331,9 @@ export default function AssignmentIndex({ getRowId={(assignment) => assignment.id} searchKey="title" pagination={pagination} - onPageChange={handlePageChange} - onPerPageChange={handlePerPageChange} onSearchChange={handleSearchChange} searchValue={search} + infiniteScroll={{ propName: 'assignments' }} toolbar={toolbar} /> )}