diff --git a/frontend/src/components/NoteCard.vue b/frontend/src/components/NoteCard.vue
index aee9ec9..49ff9a2 100644
--- a/frontend/src/components/NoteCard.vue
+++ b/frontend/src/components/NoteCard.vue
@@ -1,7 +1,14 @@
@@ -143,6 +172,18 @@ function labelChip(color: string): string {
+
+
+
+
+
diff --git a/frontend/src/components/QuickAdd.vue b/frontend/src/components/QuickAdd.vue
index 7792f77..982fda1 100644
--- a/frontend/src/components/QuickAdd.vue
+++ b/frontend/src/components/QuickAdd.vue
@@ -20,6 +20,7 @@ async function open() {
expanded.value = true;
await nextTick();
bodyInput.value?.focus();
+ autoGrow();
}
function hasContent(): boolean {
@@ -32,6 +33,14 @@ function clearFields() {
color.value = "default";
}
+// Grow the composer textarea to fit its content (up to a capped max height).
+function autoGrow() {
+ const el = bodyInput.value;
+ if (!el) return;
+ el.style.height = "auto";
+ el.style.height = `${el.scrollHeight}px`;
+}
+
async function persist(): Promise {
if (!hasContent()) return;
saving.value = true;
@@ -57,6 +66,7 @@ async function commitAndContinue() {
clearFields();
await nextTick();
bodyInput.value?.focus();
+ autoGrow();
}
function onDocumentMousedown(e: MouseEvent) {
@@ -100,9 +110,9 @@ defineExpose({ open });