aboutsummaryrefslogtreecommitdiff
path: root/src/lib/Tools
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-02-01 22:57:46 -0800
committerFuwn <[email protected]>2024-02-01 22:57:46 -0800
commit2ce87ea66c6dac11f7396393bdab4965e3b4d80f (patch)
tree4e72cd250bc0a862358123ba330ffdffaf0ac804 /src/lib/Tools
parentfeat(list): remove title display tooltips (diff)
downloaddue.moe-2ce87ea66c6dac11f7396393bdab4965e3b4d80f.tar.xz
due.moe-2ce87ea66c6dac11f7396393bdab4965e3b4d80f.zip
feat(likes): show avatar on hover
Diffstat (limited to 'src/lib/Tools')
-rw-r--r--src/lib/Tools/Likes.svelte40
1 files changed, 39 insertions, 1 deletions
diff --git a/src/lib/Tools/Likes.svelte b/src/lib/Tools/Likes.svelte
index 52faa1c3..2c26b4bb 100644
--- a/src/lib/Tools/Likes.svelte
+++ b/src/lib/Tools/Likes.svelte
@@ -3,9 +3,17 @@
import { threadLikes } from '$lib/AniList/forum';
import RateLimited from '$lib/Error/RateLimited.svelte';
import Skeleton from '$lib/Loading/Skeleton.svelte';
+ import HoverCover from '$lib/Media/Cover/HoverCover.svelte';
+ import {
+ onMouseEnter,
+ type HoverCoverResponse,
+ onMouseLeave,
+ onMouseMove
+ } from '$lib/Media/Cover/hoverCover';
import InputTemplate from './InputTemplate.svelte';
let submission = '';
+ let hoverCoverState: HoverCoverResponse = {};
$: normalisedSubmission = submission.replace(/.*\/(activity|thread)\/(\d+).*/, '$2');
$: submissionType = submission.replace(/.*\/(activity|thread)\/(\d+).*/, '$1');
@@ -31,7 +39,35 @@
<ul>
{#each likes as like}
<li>
- <a href={`https://anilist.co/user/${like.name}`} target="_blank">
+ <a
+ href={`https://anilist.co/user/${like.name}`}
+ target="_blank"
+ on:mouseenter={() => {
+ const response = onMouseEnter({
+ coverImage: {
+ extraLarge:
+ like?.avatar?.large ??
+ 'https://s4.anilist.co/file/anilistcdn/user/avatar/large/default.png'
+ }
+ });
+
+ hoverCoverState.hovering = response.hovering;
+ hoverCoverState.item = response.item;
+ hoverCoverState.media = response.media;
+ }}
+ on:mouseleave={() => {
+ const response = onMouseLeave();
+
+ hoverCoverState.hovering = response.hovering;
+ hoverCoverState.item = response.item;
+ hoverCoverState.media = response.media;
+ }}
+ on:mousemove={(e) => {
+ const response = onMouseMove(e, 300);
+
+ hoverCoverState.style = response.style;
+ }}
+ >
{like.name}
</a>
</li>
@@ -47,3 +83,5 @@
Please enter a valid Activity or Thread URL.
{/if}
</InputTemplate>
+
+<HoverCover options={hoverCoverState} width={300} />