diff --git a/app/Http/Controllers/Hosting/SearchController.php b/app/Http/Controllers/Hosting/SearchController.php index 44eab55..5877cbf 100644 --- a/app/Http/Controllers/Hosting/SearchController.php +++ b/app/Http/Controllers/Hosting/SearchController.php @@ -9,19 +9,22 @@ use App\Models\HostingAccountMember; use App\Models\HostingProduct; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; +use Illuminate\View\View; class SearchController extends Controller { - public function __invoke(Request $request): JsonResponse + public function __invoke(Request $request): JsonResponse|View { $q = trim((string) $request->query('q', '')); + $results = mb_strlen($q) >= 2 ? $this->resultsForUser($request->user(), $q) : []; - if (mb_strlen($q) < 2) { - return response()->json(['results' => []]); + if ($request->expectsJson() || $request->ajax() || $request->wantsJson()) { + return response()->json(['results' => $results]); } - return response()->json([ - 'results' => $this->resultsForUser($request->user(), $q), + return view('search', [ + 'query' => $q, + 'results' => $results, ]); } diff --git a/resources/js/app.js b/resources/js/app.js index c63c6c1..b920e01 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -136,14 +136,20 @@ Alpine.data('afia', (config = {}) => ({ })); Alpine.data('topbarSearch', (config = {}) => ({ - query: '', - results: [], - open: false, + query: config.initialQuery || '', + results: Array.isArray(config.initialResults) ? config.initialResults : [], + open: !!config.openOnInit, loading: false, active: 0, _abort: null, searchUrl: config.searchUrl || '/search', + init() { + if (config.autoFocus) { + this.$nextTick(() => this.$refs.input?.focus()); + } + }, + onFocus() { if (this.results.length > 0 || this.query.trim().length >= 2) this.open = true; }, diff --git a/resources/views/components/mobile-page-header.blade.php b/resources/views/components/mobile-page-header.blade.php new file mode 100644 index 0000000..acd3927 --- /dev/null +++ b/resources/views/components/mobile-page-header.blade.php @@ -0,0 +1,28 @@ +@props([ + 'title', + 'subtitle' => null, + 'backUrl' => null, + 'badge' => null, +]) + +
{{ $subtitle }}
+ @endif +Start typing to search
+{{ $emptyHint }}
+No results for ""
+{{ $emptyHint }}
+