From fa94bb537be650f34569f819c6167fb9a9c52e8e Mon Sep 17 00:00:00 2001 From: Ovidiu U Date: Sun, 5 Apr 2026 20:48:00 +0100 Subject: [PATCH] feat: add sort option to station search form --- app/Livewire/Public/StationSearch.php | 5 ++++- resources/views/livewire/public/station-search.blade.php | 9 +++++++++ tests/Feature/Livewire/StationSearchTest.php | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/app/Livewire/Public/StationSearch.php b/app/Livewire/Public/StationSearch.php index d69b47c..899f46b 100644 --- a/app/Livewire/Public/StationSearch.php +++ b/app/Livewire/Public/StationSearch.php @@ -19,6 +19,9 @@ class StationSearch extends Component #[Validate('required|integer|min:1|max:20')] public int $radius = 5; + #[Validate('required|string|in:price,distance,updated,brand')] + public string $sort = 'price'; + public array $results = []; public array $meta = []; @@ -42,7 +45,7 @@ class StationSearch extends Component 'postcode' => $this->search, 'fuel_type' => $this->fuelType, 'radius' => $radiusKm, - 'sort' => 'price', + 'sort' => $this->sort, ]); } catch (ConnectionException) { $this->apiError = 'Unable to fetch stations. Please try again.'; diff --git a/resources/views/livewire/public/station-search.blade.php b/resources/views/livewire/public/station-search.blade.php index fd91ffa..6f02520 100644 --- a/resources/views/livewire/public/station-search.blade.php +++ b/resources/views/livewire/public/station-search.blade.php @@ -41,6 +41,15 @@ +
+ + Cheapest first + Nearest first + Recently updated + Brand A–Z + +
+
Search diff --git a/tests/Feature/Livewire/StationSearchTest.php b/tests/Feature/Livewire/StationSearchTest.php index 112e7a4..ff0aecb 100644 --- a/tests/Feature/Livewire/StationSearchTest.php +++ b/tests/Feature/Livewire/StationSearchTest.php @@ -24,6 +24,7 @@ it('validates search is required', function () { it('validates fuelType is required', function () { Livewire::test(StationSearch::class) ->set('search', 'SW1A 1AA') + ->set('fuelType', '') ->call('findStations') ->assertHasErrors(['fuelType' => 'required']); });