From 9f09d2adf8354363b0b1d3344a87ff53cc619ac9 Mon Sep 17 00:00:00 2001 From: silentoplayz Date: Tue, 3 Nov 2026 14:16:59 -0500 Subject: [PATCH] fix(a11y): note title generation, note panels and channel threads and edits keep keyboard focus --- src/lib/components/channel/Channel.svelte | 26 +++++++++---------- .../channel/Messages/Message.svelte | 8 ++++-- src/lib/components/notes/NoteEditor.svelte | 18 +++++++++++-- 3 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/lib/components/channel/Channel.svelte b/src/lib/components/channel/Channel.svelte index aa9a892c6e..a44090162d 100644 --- a/src/lib/components/channel/Channel.svelte +++ b/src/lib/components/channel/Channel.svelte @@ -141,6 +141,16 @@ ); }; + const closeThread = async () => { + const messageId = threadId; + threadId = null; + + await tick(); + if (document.activeElement === document.body) { + document.querySelector(`#message-${messageId} .reply-in-thread-button`)?.focus(); + } + }; + const pinHandler = ( messageId: string, pinned: boolean, @@ -532,22 +542,14 @@ {#if !largeScreen} {#if threadId !== null} - { - threadId = null; - }} - > +
{ - threadId = null; - }} + onClose={closeThread} />
@@ -567,9 +569,7 @@ {channel} bind:chatInputElement={threadChatInputElement} onPin={pinHandler} - onClose={() => { - threadId = null; - }} + onClose={closeThread} /> diff --git a/src/lib/components/channel/Messages/Message.svelte b/src/lib/components/channel/Messages/Message.svelte index f67f349553..2ee9395eeb 100644 --- a/src/lib/components/channel/Messages/Message.svelte +++ b/src/lib/components/channel/Messages/Message.svelte @@ -122,6 +122,7 @@ }; let edit = false; + let editButtonElement: HTMLButtonElement; let editedContent = null; let showDeleteConfirmDialog = false; $: renderedMessageId = message ? (id ? `${id}-${message.id}` : message.id) : null; @@ -334,7 +335,7 @@