From 361623aaccf08063712500a213548a2756dd13c4 Mon Sep 17 00:00:00 2001 From: Owen Jacobson Date: Tue, 13 May 2025 18:01:19 -0400 Subject: Implement the disabled state: * Suppress input (including paste) while the input is disabled. * Style the input to make it visible that it's not accepting input. --- ui/lib/components/MessageInput.svelte | 20 ++++++++++++++++---- ui/styles/forms.css | 4 ++++ 2 files changed, 20 insertions(+), 4 deletions(-) (limited to 'ui') diff --git a/ui/lib/components/MessageInput.svelte b/ui/lib/components/MessageInput.svelte index 71b7b8f..848321d 100644 --- a/ui/lib/components/MessageInput.svelte +++ b/ui/lib/components/MessageInput.svelte @@ -3,8 +3,6 @@ let form = $state(null); let value = $state(''); - // This doesn't seem to work with a contenteditable two-way bound svelte - // thing: let disabled = $state(false); async function onsubmit(event) { @@ -19,21 +17,35 @@ } function onkeydown(event) { + if (disabled) { + event.preventDefault(); + return; + } + let modifier = event.shiftKey || event.altKey || event.ctrlKey || event.metaKey; if (!modifier && event.key === 'Enter') { event.preventDefault(); form?.requestSubmit?.(); } } + + function onpaste(event) { + if (disabled) { + event.preventDefault(); + } + }
diff --git a/ui/styles/forms.css b/ui/styles/forms.css index 59dda30..907f1bf 100644 --- a/ui/styles/forms.css +++ b/ui/styles/forms.css @@ -26,3 +26,7 @@ form.form > button { [contenteditable]:empty { color: var(--light-text); } + +.disabled { + color: var(--light-text); +} -- cgit v1.2.3