aboutsummaryrefslogtreecommitdiff
path: root/src/lib/AuctionPreviewTooltip.svelte
blob: cdedade4e7692fdb44a0816d648330b0b6412b79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
<script lang="ts">
	import type { PreviewedAuctionData } from './utils'
	import { fade } from 'svelte/transition'

	export let preview: PreviewedAuctionData | null
	let lastPreview: PreviewedAuctionData | null

	$: {
		lastPreview = preview ?? lastPreview
	}

	function onMouseMove(e: MouseEvent) {
		// commented out because it doesn't work: sometimes e.target is null when we click a point
		if (e.target && !(e.target as HTMLElement).closest('.item-auction-history')) {
			preview = null
			lastPreview = null
		}
	}
</script>

<svelte:body on:mousemove={onMouseMove} />

{#if lastPreview}
	<div
		id="auction-preview-tooltip-container"
		style={lastPreview ? `left: ${lastPreview.pageX}px; top: ${lastPreview.pageY}px` : undefined}
		out:fade={{ duration: 100 }}
		in:fade={{ duration: 100 }}
	>
		<div id="auction-preview-tooltip">
			<p><b>{lastPreview.auction.coins.toLocaleString()}</b> coins</p>
			<time>{new Date(lastPreview.auction.ts * 1000).toLocaleString()}</time>
		</div>
	</div>
{/if}

<style>
	#auction-preview-tooltip-container {
		position: absolute;
		pointer-events: none;
		transition: left 100ms linear, top 100ms linear;
	}
	#auction-preview-tooltip {
		border: 1px solid rgba(255, 255, 255, 0.1);
		background: rgba(0, 0, 0, 0.1);
		padding: 0.5em;
	}

	p {
		margin: 0;
	}

	time {
		color: var(--theme-darker-text);
	}
</style>