feat: person @mentions edit-mode infrastructure (PR-B1, #362) #369

Merged
marcel merged 26 commits from feat/person-mentions-issue-362-frontend-b1 into main 2026-04-29 08:05:49 +02:00
2 changed files with 14 additions and 13 deletions
Showing only changes of commit 49db82e1bd - Show all commits

View File

@@ -43,6 +43,7 @@ let debounceTimer: ReturnType<typeof setTimeout> | undefined;
function attachTextarea(node: HTMLTextAreaElement) {
textarea = node;
resizeTextarea();
const parentCleanup = captureTextarea?.(node);
return () => {
parentCleanup?.();
@@ -50,6 +51,19 @@ function attachTextarea(node: HTMLTextAreaElement) {
};
}
function resizeTextarea() {
if (!textarea) return;
textarea.style.height = 'auto';
textarea.style.height = `${textarea.scrollHeight}px`;
}
// Autoresize on every value change — read `value` so this $effect
// re-runs whenever the bound prop is reassigned.
$effect(() => {
void value;
resizeTextarea();
});
function handleInput() {
if (!textarea) return;
const cursorPos = textarea.selectionStart;

View File

@@ -85,24 +85,11 @@ let textareaEl: HTMLTextAreaElement | null = null;
function captureTextarea(node: HTMLTextAreaElement) {
textareaEl = node;
resizeTextarea();
return () => {
textareaEl = null;
};
}
function resizeTextarea() {
if (!textareaEl) return;
textareaEl.style.height = 'auto';
textareaEl.style.height = `${textareaEl.scrollHeight}px`;
}
$effect(() => {
// Re-run autoresize whenever the bound text changes.
void localText;
resizeTextarea();
});
function emitChange() {
onTextChange(localText, localMentions);
}