diff options
author | mat <github@matdoes.dev> | 2022-02-17 19:12:57 +0000 |
---|---|---|
committer | mat <github@matdoes.dev> | 2022-02-17 19:12:57 +0000 |
commit | bad8a1f2c7519ef63350c26b539dfc6aeb9ab94c (patch) | |
tree | a129569b5feb80fcc23578de4143865f1d0937f1 /src/lib/GlobalTooltip.svelte | |
parent | 07666cc5be0309fad63435b9604e786cd57c9ad8 (diff) | |
download | skyblock-stats-bad8a1f2c7519ef63350c26b539dfc6aeb9ab94c.tar.gz skyblock-stats-bad8a1f2c7519ef63350c26b539dfc6aeb9ab94c.tar.bz2 skyblock-stats-bad8a1f2c7519ef63350c26b539dfc6aeb9ab94c.zip |
add items
Diffstat (limited to 'src/lib/GlobalTooltip.svelte')
-rw-r--r-- | src/lib/GlobalTooltip.svelte | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/src/lib/GlobalTooltip.svelte b/src/lib/GlobalTooltip.svelte index 61e5514..2f7b738 100644 --- a/src/lib/GlobalTooltip.svelte +++ b/src/lib/GlobalTooltip.svelte @@ -5,7 +5,8 @@ // this script handles the item hover lore tooltip onMount(() => { - const itemEls = document.getElementsByClassName('item') + // TODO: have something that automatically registers the event listener when we create a new MinecraftTooltip + const itemEls = document.getElementsByClassName('minecraft-tooltip') let tooltipLocked = false function moveTooltipToMouse(e) { const mouseX = e.pageX @@ -38,23 +39,19 @@ } }) - for (const itemEl of itemEls) { - if (!(itemEl instanceof HTMLElement)) continue + for (const itemEl of itemEls as unknown as HTMLElement[]) { + // if (!(itemEl instanceof HTMLElement)) continue // if the item doesn't have lore or a name, that must mean it's air - if (!itemEl.dataset.loreHtml && !itemEl.dataset.nameHtml) continue + // if (!itemEl.dataset.loreHtml && !itemEl.dataset.nameHtml) continue itemEl.addEventListener('mouseover', e => { if (!tooltipLocked) { moveTooltipToMouse(e) - const loreHtml = itemEl.dataset.loreHtml - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/"/g, '"') - const nameHtml = itemEl.dataset.nameHtml - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/"/g, '"') + // copy the lore and name from the tooltip-lore and + // tooltip-name elements inside the item el + const loreHtml = itemEl.getElementsByClassName('tooltip-lore')[0].innerHTML + const nameHtml = itemEl.getElementsByClassName('tooltip-name')[0].innerHTML tooltipEl.innerHTML = `<p class="item-lore-name">${nameHtml}</p><p class="item-lore-text">${loreHtml}</p>` } tooltipEl.style.display = 'block' @@ -76,14 +73,8 @@ tooltipEl.style.userSelect = null tooltipEl.style.pointerEvents = null } - const loreHtml = itemEl.dataset.loreHtml - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/"/g, '"') - const nameHtml = itemEl.dataset.nameHtml - .replace(/</g, '<') - .replace(/>/g, '>') - .replace(/"/g, '"') + const loreHtml = itemEl.getElementsByClassName('tooltip-lore')[0].innerHTML + const nameHtml = itemEl.getElementsByClassName('tooltip-name')[0].innerHTML tooltipEl.innerHTML = `<p class="item-lore-name">${nameHtml}</p><p class="item-lore-text">${loreHtml}</p>` }) document.addEventListener('mousedown', e => { @@ -99,3 +90,25 @@ </script> <div id="global-tooltip" style="display: none" bind:this={tooltipEl} /> + +<style> + #global-tooltip { + position: absolute; + user-select: none; + pointer-events: none; + overflow: hidden; + z-index: 100; + background-color: #0a0a0aee; + padding: 0 0.25rem; + border-radius: 3px; + box-shadow: 0 0 0 3px #206, 0 0 0 6px #000; + font-family: Minecraft; + white-space: nowrap; + } + #global-tooltip :global(p) { + margin: 0; + } + #global-tooltip :global(.item-lore-name) { + margin-bottom: 0.5em; + } +</style> |