Fix search dropdown, async artist add, OOB swaps

- Fix search results dropdown: absolute position relative to search wrapper
- Make release group fetching async via Vert.x executeBlocking (avoid blocking add)
- Add OOB swap for artist list so +Add works from any page
- Simplify search-results template styling
- Add Response type for combined OOB responses
This commit is contained in:
2026-07-02 16:11:38 +02:00
parent b08eb2573c
commit 08aa5b8a2d
4 changed files with 38 additions and 16 deletions
@@ -1,3 +1,4 @@
<div id="artist-list" hx-swap-oob="true">
{#if artists.isEmpty()}
<div class="card bg-base-100 shadow-xl p-8 text-center">
<p class="text-lg text-base-content/60">No artists tracked yet</p>
@@ -30,35 +31,40 @@
<input type="checkbox" class="checkbox checkbox-xs checkbox-primary"
{#if artist.albumMonitored}checked{/if}
hx-patch="/api/artists/{artist.mbid}/monitor?type=album"
hx-target="#artist-list" hx-swap="innerHTML">
hx-target="#artist-list"
hx-swap="innerHTML">
<span class="label-text text-xs">Album</span>
</label>
<label class="label cursor-pointer gap-1">
<input type="checkbox" class="checkbox checkbox-xs"
{#if artist.singleMonitored}checked{/if}
hx-patch="/api/artists/{artist.mbid}/monitor?type=single"
hx-target="#artist-list" hx-swap="innerHTML">
hx-target="#artist-list"
hx-swap="innerHTML">
<span class="label-text text-xs">Single</span>
</label>
<label class="label cursor-pointer gap-1">
<input type="checkbox" class="checkbox checkbox-xs"
{#if artist.epMonitored}checked{/if}
hx-patch="/api/artists/{artist.mbid}/monitor?type=ep"
hx-target="#artist-list" hx-swap="innerHTML">
hx-target="#artist-list"
hx-swap="innerHTML">
<span class="label-text text-xs">EP</span>
</label>
<label class="label cursor-pointer gap-1">
<input type="checkbox" class="checkbox checkbox-xs"
{#if artist.broadcastMonitored}checked{/if}
hx-patch="/api/artists/{artist.mbid}/monitor?type=broadcast"
hx-target="#artist-list" hx-swap="innerHTML">
hx-target="#artist-list"
hx-swap="innerHTML">
<span class="label-text text-xs">Broadcast</span>
</label>
<label class="label cursor-pointer gap-1">
<input type="checkbox" class="checkbox checkbox-xs"
{#if artist.otherMonitored}checked{/if}
hx-patch="/api/artists/{artist.mbid}/monitor?type=other"
hx-target="#artist-list" hx-swap="innerHTML">
hx-target="#artist-list"
hx-swap="innerHTML">
<span class="label-text text-xs">Other</span>
</label>
</div>
@@ -78,3 +84,4 @@
</table>
</div>
{/if}
</div>