From 3088b7c105eea1aa93f765c903a3152a6720bbd3 Mon Sep 17 00:00:00 2001 From: Eduard Lupacescu Date: Fri, 29 Aug 2025 22:29:43 +0300 Subject: [PATCH 1/2] fix: sortables --- src/Filters/SortCollection.php | 2 +- src/Traits/InteractWithSearch.php | 16 +++++++--------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/src/Filters/SortCollection.php b/src/Filters/SortCollection.php index 6cca17efd..3b3e903b9 100644 --- a/src/Filters/SortCollection.php +++ b/src/Filters/SortCollection.php @@ -52,7 +52,7 @@ public function inRepository(RestifyRequest $request, Repository $repository): s { $collection = static::make($repository::sorts())->merge( $repository::collectRelated()->mapIntoSortable($request) - ); + )->merge($repository::collectFieldSorts($request, $repository)); return $this->filter(fn (SortableFilter $filter) => $collection->contains('column', '=', $filter->column)); } diff --git a/src/Traits/InteractWithSearch.php b/src/Traits/InteractWithSearch.php index 5b3048407..d65b2186c 100644 --- a/src/Traits/InteractWithSearch.php +++ b/src/Traits/InteractWithSearch.php @@ -49,8 +49,8 @@ public static function collectWiths(RestifyRequest $request, Repository $reposit public static function lazyLoadedFieldsRelationship(RestifyRequest $request, Repository $repository): array { return $repository->collectFields($request) - ->filter(fn (Field $field) => $field->isLazy($request)) - ->map(fn (Field $field) => $field->getLazyRelationshipName()) + ->filter(fn(Field $field) => $field->isLazy($request)) + ->map(fn(Field $field) => $field->getLazyRelationshipName()) ->all(); } @@ -93,8 +93,6 @@ public static function collectSortables(RestifyRequest $request, Repository $rep */ public static function collectSorts(RestifyRequest $request, Repository $repository): SortCollection { - $fieldSorts = static::collectFieldSorts($request, $repository); - $requestSorts = (new SortCollection(explode(',', $request->input('sort', '')))) ->normalize() ->hydrateDefinition($repository, $request) @@ -103,13 +101,13 @@ public static function collectSorts(RestifyRequest $request, Repository $reposit ->hydrateRepository($repository); // Merge field sorts with request sorts and ensure it stays a SortCollection - return new SortCollection($requestSorts->merge($fieldSorts)); + return new SortCollection($requestSorts); } public static function collectFieldSorts(RestifyRequest $request, Repository $repository): Collection { return $repository->collectFields($request) - ->filter(fn (Field $field) => $field->isSortable($request)) + ->filter(fn(Field $field) => $field->isSortable($request)) ->map(function (Field $field) { $sortableFilter = new SortableFilter; $sortableFilter->setColumn($field->getAttribute()); @@ -148,7 +146,7 @@ public static function collectSearchables(RestifyRequest $request, Repository $r public static function collectFieldSearchables(RestifyRequest $request, Repository $repository): Collection { return $repository->collectFields($request) - ->filter(fn (Field $field) => $field->isSearchable($request)) + ->filter(fn(Field $field) => $field->isSearchable($request)) ->map(function (Field $field) use ($request, $repository) { $searchColumn = $field->getSearchColumn($request); if ($searchColumn instanceof SearchableFilter) { @@ -197,7 +195,7 @@ public static function collectMatches(RestifyRequest $request, Repository $repos public static function collectFieldMatches(RestifyRequest $request, Repository $repository): Collection { return $repository->collectFields($request) - ->filter(fn (Field $field) => $field->isMatchable($request)) + ->filter(fn(Field $field) => $field->isMatchable($request)) ->map(callback: function (Field $field) use ($request) { $matchColumn = $field->getMatchColumn($request); if ($matchColumn instanceof MatchFilter) { @@ -249,7 +247,7 @@ public static function collectFilters($type): Collection } return $type instanceof Filter - ? tap($type, fn ($filter) => $filter->column = $filter->column ?? $column) + ? tap($type, fn($filter) => $filter->column = $filter->column ?? $column) : tap(new $base, function (Filter $filter) use ($column, $type) { $filter->type = $type ? $type : 'value'; $filter->column = $column; From 77aa4345343a1d2dea23946553471de2fa715a82 Mon Sep 17 00:00:00 2001 From: binaryk Date: Fri, 29 Aug 2025 19:30:11 +0000 Subject: [PATCH 2/2] Fix styling --- src/Traits/InteractWithSearch.php | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Traits/InteractWithSearch.php b/src/Traits/InteractWithSearch.php index d65b2186c..2eb9b94dc 100644 --- a/src/Traits/InteractWithSearch.php +++ b/src/Traits/InteractWithSearch.php @@ -49,8 +49,8 @@ public static function collectWiths(RestifyRequest $request, Repository $reposit public static function lazyLoadedFieldsRelationship(RestifyRequest $request, Repository $repository): array { return $repository->collectFields($request) - ->filter(fn(Field $field) => $field->isLazy($request)) - ->map(fn(Field $field) => $field->getLazyRelationshipName()) + ->filter(fn (Field $field) => $field->isLazy($request)) + ->map(fn (Field $field) => $field->getLazyRelationshipName()) ->all(); } @@ -107,7 +107,7 @@ public static function collectSorts(RestifyRequest $request, Repository $reposit public static function collectFieldSorts(RestifyRequest $request, Repository $repository): Collection { return $repository->collectFields($request) - ->filter(fn(Field $field) => $field->isSortable($request)) + ->filter(fn (Field $field) => $field->isSortable($request)) ->map(function (Field $field) { $sortableFilter = new SortableFilter; $sortableFilter->setColumn($field->getAttribute()); @@ -146,7 +146,7 @@ public static function collectSearchables(RestifyRequest $request, Repository $r public static function collectFieldSearchables(RestifyRequest $request, Repository $repository): Collection { return $repository->collectFields($request) - ->filter(fn(Field $field) => $field->isSearchable($request)) + ->filter(fn (Field $field) => $field->isSearchable($request)) ->map(function (Field $field) use ($request, $repository) { $searchColumn = $field->getSearchColumn($request); if ($searchColumn instanceof SearchableFilter) { @@ -195,7 +195,7 @@ public static function collectMatches(RestifyRequest $request, Repository $repos public static function collectFieldMatches(RestifyRequest $request, Repository $repository): Collection { return $repository->collectFields($request) - ->filter(fn(Field $field) => $field->isMatchable($request)) + ->filter(fn (Field $field) => $field->isMatchable($request)) ->map(callback: function (Field $field) use ($request) { $matchColumn = $field->getMatchColumn($request); if ($matchColumn instanceof MatchFilter) { @@ -247,7 +247,7 @@ public static function collectFilters($type): Collection } return $type instanceof Filter - ? tap($type, fn($filter) => $filter->column = $filter->column ?? $column) + ? tap($type, fn ($filter) => $filter->column = $filter->column ?? $column) : tap(new $base, function (Filter $filter) use ($column, $type) { $filter->type = $type ? $type : 'value'; $filter->column = $column;