From 3ee3096fca810342d6eb86938b1f02302f0f2b80 Mon Sep 17 00:00:00 2001 From: MuchQuak Date: Wed, 4 Dec 2024 16:46:29 -0800 Subject: [PATCH] collection table editor stateful infinite scroll with current search / filter --- .../views/core/pages/collections/table.blade.php | 6 ++++-- routes/web.php | 16 +++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/resources/views/core/pages/collections/table.blade.php b/resources/views/core/pages/collections/table.blade.php index 573c18b..7ac533b 100644 --- a/resources/views/core/pages/collections/table.blade.php +++ b/resources/views/core/pages/collections/table.blade.php @@ -171,7 +171,7 @@ class="float-right mr-2 mt-2 hover:ring-4 focus:outline-none focus:ring-4 rounde Sort By  @@ -189,6 +189,7 @@ class="float-right mr-2 mt-2 hover:ring-4 focus:outline-none focus:ring-4 rounde Clear Filters + @fragment('table')
@@ -236,7 +237,7 @@ class="overflow-x-scroll overflow-y-scroll w-screen h-[calc(100vh-7rem)] relativ @endforeach @if(count($occurrences) === 100) - + @endif @endfragment @@ -245,6 +246,7 @@ class="overflow-x-scroll overflow-y-scroll w-screen h-[calc(100vh-7rem)] relativ Loading more records... + @endfragment diff --git a/routes/web.php b/routes/web.php index 28d278e..0709864 100644 --- a/routes/web.php +++ b/routes/web.php @@ -175,11 +175,21 @@ } } - if($request->header('HX-Request') && $request->query('partial')) { - return view('pages/collections/table', ['occurrences' => $query->paginate(100), 'collection' => $collection, 'page' => $request->query('page') ?? 0])->fragment('rows'); + $view = view('pages/collections/table', [ + 'occurrences' => $query->paginate(100), + 'collection' => $collection, + 'page' => $request->query('page') ?? 0 + ]); + + if($request->header('HX-Request')) { + if($request->query('fragment') === 'rows') { + return $view->fragment('rows'); + } else if ($request->query('fragment') === 'table') { + return $view->fragment('table'); + } } - return view('pages/collections/table', ['occurrences' => $query->paginate(100), 'collection' => $collection, 'page' => 0]); + return $view; }); // Checklist