From 15f52f55955d56989b7b6039c04c0df427ff1bde Mon Sep 17 00:00:00 2001 From: Fuwn Date: Thu, 18 Apr 2024 18:38:14 -0700 Subject: feat(badges): badge preview pane --- src/lib/BadgeWall/BadgePreview.svelte | 129 ++++++++++++++++++++++++++++++++++ src/lib/FallbackBadge.svelte | 12 +++- 2 files changed, 140 insertions(+), 1 deletion(-) create mode 100644 src/lib/BadgeWall/BadgePreview.svelte (limited to 'src/lib') diff --git a/src/lib/BadgeWall/BadgePreview.svelte b/src/lib/BadgeWall/BadgePreview.svelte new file mode 100644 index 00000000..0cf7bb9c --- /dev/null +++ b/src/lib/BadgeWall/BadgePreview.svelte @@ -0,0 +1,129 @@ + + +{#if badge} +
+ {#if badge.image} + + +

+ {/if} + + {#if badge.time} + {$locale().dateFormatter(databaseTimeToDate(badge.time))} + + {#if (badge.designer || badge.source || badge.post) && !badge.description} +

+ {:else if badge.description} +
+ {/if} + {/if} + + {#if badge.description} + {badge.description} + + {#if badge.designer || badge.source || badge.post} +

+ {/if} + {/if} + + {#if badge.designer} + Designer: + + {#if badge.designer.startsWith('http')} + + {badge.designer} + + {:else if badge.designer.startsWith('@')} + + {badge.designer} + + {:else} + {badge.designer} + {/if} + +
+ {/if} + + {#if badge.post} + {badge.post.includes('forum') ? 'Forum' : 'Activity'}: + + + {badge.post} + + +
+ {/if} + + {#if badge.source} + Source: + + {#if badge.source.startsWith('http')} + + {badge.source} + + {:else} + {badge.source} + {/if} + {/if} +

+{/if} + + diff --git a/src/lib/FallbackBadge.svelte b/src/lib/FallbackBadge.svelte index 323ea791..c4604263 100644 --- a/src/lib/FallbackBadge.svelte +++ b/src/lib/FallbackBadge.svelte @@ -13,6 +13,7 @@ export let hideOnError = false; export let badge: Badge; export let style = ''; + export let selectedBadge: Badge | null = null; let replaceCount = 0; let badgeReference: HTMLImageElement; @@ -56,7 +57,16 @@ pin={`badge-${badge.id}`} pinPosition="top" > - + { + e.preventDefault(); + + selectedBadge = badge; + }} + >