From 0df43b6f51b20ddc8f1248d0067f9bed5908498b Mon Sep 17 00:00:00 2001 From: mkelvers Date: Fri, 15 May 2026 03:25:14 +0200 Subject: [PATCH] feat: add HTMX-driven filter bar and browse fragments --- internal/anime/handler/handler.go | 23 +++++++++- templates/browse.gohtml | 6 ++- templates/components/filter_bar.gohtml | 61 +++++++++++++------------- 3 files changed, 58 insertions(+), 32 deletions(-) diff --git a/internal/anime/handler/handler.go b/internal/anime/handler/handler.go index ab494ec..d97e7a5 100644 --- a/internal/anime/handler/handler.go +++ b/internal/anime/handler/handler.go @@ -171,7 +171,7 @@ func (h *AnimeHandler) HandleBrowse(c *gin.Context) { } } - if c.GetHeader("HX-Request") == "true" { + if c.GetHeader("HX-Request") == "true" && page > 1 { c.HTML(http.StatusOK, "browse.gohtml", gin.H{ "_fragment": "anime_card_scroll", "Animes": res.Animes, @@ -191,6 +191,27 @@ func (h *AnimeHandler) HandleBrowse(c *gin.Context) { genresList, _ := h.svc.GetGenres(c.Request.Context()) + if c.GetHeader("HX-Request") == "true" { + c.HTML(http.StatusOK, "browse.gohtml", gin.H{ + "_fragment": "browse_content", + "CurrentPath": "/browse", + "Query": q, + "Type": animeType, + "Status": status, + "OrderBy": orderBy, + "Sort": sort, + "Genres": genres, + "SFW": sfw, + "GenresList": genresList, + "Animes": res.Animes, + "HasNextPage": res.HasNextPage, + "NextPage": page + 1, + "User": user, + "WatchlistMap": watchlistMap, + }) + return + } + c.HTML(http.StatusOK, "browse.gohtml", gin.H{ "CurrentPath": "/browse", "Query": q, diff --git a/templates/browse.gohtml b/templates/browse.gohtml index bb38b52..29892b7 100644 --- a/templates/browse.gohtml +++ b/templates/browse.gohtml @@ -1,7 +1,11 @@ {{define "title"}}Browse{{end}} {{define "content"}} {{if .WatchlistIDs}}{{end}} -
+{{template "browse_content" .}} +{{end}} + +{{define "browse_content"}} +

Browse

diff --git a/templates/components/filter_bar.gohtml b/templates/components/filter_bar.gohtml index a01072c..39baab5 100644 --- a/templates/components/filter_bar.gohtml +++ b/templates/components/filter_bar.gohtml @@ -1,17 +1,16 @@ {{define "filter_bar"}} {{$selectedGenreIDs := .Genres}} {{$selectedCount := len $selectedGenreIDs}} -
+
-
+ {{if .Type}}{{end}} {{if .Status}}{{end}} @@ -22,28 +21,32 @@
-
+
+ + {{if .Type}}{{end}} + {{if .Status}}{{end}} + {{if .OrderBy}}{{end}} + {{if .Sort}}{{end}} + + {{range $g := .Genres}}{{end}} -
+
-
-