diff --git a/resources/views/components/search-form.blade.php b/resources/views/components/search-form.blade.php index eaf9916..32e9f8c 100644 --- a/resources/views/components/search-form.blade.php +++ b/resources/views/components/search-form.blade.php @@ -6,7 +6,7 @@
diff --git a/resources/views/livewire/search-suggestions.blade.php b/resources/views/livewire/search-suggestions.blade.php new file mode 100644 index 0000000..dbe747c --- /dev/null +++ b/resources/views/livewire/search-suggestions.blade.php @@ -0,0 +1,53 @@ +
+ + + @if (strlen($query) > 0) + @if (count($results)) + + @else +
+ No results found. +
+ @endif + @endif + + +
diff --git a/src/Components/Livewire/SearchSuggestions.php b/src/Components/Livewire/SearchSuggestions.php new file mode 100644 index 0000000..c600952 --- /dev/null +++ b/src/Components/Livewire/SearchSuggestions.php @@ -0,0 +1,44 @@ +query) >= $minLength) { + + // Split the input into keywords + $keywords = preg_split('/\s+/', trim($this->query)); + + $this->results = ProductFlat::with(['product.images']) + ->where('status', true) + ->where(function ($q) use ($keywords) { + foreach ($keywords as $word) { + $q->where('name', 'like', "%{$word}%"); + } + }) + ->take(30) + ->get(); + + } else { + $this->results = []; + } + } + + + public function render() + { + return view('livewire.search-suggestions'); + } +}