diff options
| author | Kit La Touche <kit@transneptune.net> | 2024-11-15 10:14:41 -0500 |
|---|---|---|
| committer | Kit La Touche <kit@transneptune.net> | 2024-11-15 10:14:41 -0500 |
| commit | 1635a4db77898e9394adaa104b4c53b94c59e2da (patch) | |
| tree | 041158bc15a1b83caaa245fbe60faf46e84a3070 /ui/lib/components/Message.svelte | |
| parent | fefe76b35b6329cbcc92755a65e47c7f62f64690 (diff) | |
| parent | 2fb328089f01776e5bb553a1d50a061396588c8c (diff) | |
Merge branch 'main' into prop/shorter-expiry
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 { |
