diff options
| author | Kit La Touche <kit@transneptune.net> | 2024-11-11 23:01:31 -0500 |
|---|---|---|
| committer | Kit La Touche <kit@transneptune.net> | 2024-11-11 23:01:31 -0500 |
| commit | d5199183bc8114dc78adb19f66b09f1e61c67f1b (patch) | |
| tree | 997a94e320aa3ade7caafa23cd01c2d653dcd331 /ui/lib/components/Message.svelte | |
| parent | dfca11aceffaafc105509a2800d70eb9c9bed2e7 (diff) | |
| parent | a0fc6434cb1f65b558a0a94c5cdddf5d79d15206 (diff) | |
Merge branch 'main' into prop/pwa
Diffstat (limited to 'ui/lib/components/Message.svelte')
| -rw-r--r-- | ui/lib/components/Message.svelte | 32 |
1 files changed, 27 insertions, 5 deletions
diff --git a/ui/lib/components/Message.svelte b/ui/lib/components/Message.svelte index 68c5c91..0c8eeec 100644 --- a/ui/lib/components/Message.svelte +++ b/ui/lib/components/Message.svelte @@ -2,16 +2,38 @@ import { marked } from 'marked'; import DOMPurify from 'dompurify'; + import { deleteMessage } from '$lib/apiServer'; + function scroll(message) { message.scrollIntoView(); } - let { at, body } = $props(); + let { id, at, body, editable = false } = $props(); let renderedBody = $derived(DOMPurify.sanitize(marked.parse(body, { breaks: true }))); + let deleteArmed = $state(false); + + function onDelete(event) { + event.preventDefault(); + if (deleteArmed) { + deleteArmed = false; + deleteMessage(id); + } else { + deleteArmed = true; + } + } + + function onmouseleave() { + deleteArmed = false; + } </script> -<div class="message relative"> - <span class="timestamp chip variant-soft absolute top-0 right-0">{at}</span> +<div class="message relative" class:bg-warning-800={deleteArmed} {onmouseleave}> + <div class="handle chip bg-surface-700 absolute -top-6 right-0"> + {at} + {#if editable} + <button onclick={onDelete}>🗑️</button> + {/if} + </div> <section use:scroll class="py-1 message-body"> <!-- eslint-disable-next-line svelte/no-at-html-tags --> {@html renderedBody} @@ -19,10 +41,10 @@ </div> <style> - .message .timestamp { + .message .handle { display: none; } - .message:hover .timestamp { + .message:hover .handle { display: flex; } .message-body { |
