Checklist field should auto-grow with a trailing blank row instead of a separate Add-item input #58

Open
opened 2026-07-24 19:47:07 +02:00 by cloudbot · 0 comments
Collaborator

Goal

Replace the checklist field's current fixed-list-plus-separate-"Add an item"-row UI with continuous inline rows (like Apple Reminders/Notes): a new blank row automatically appears under the last row whenever that row becomes non-blank, and the field always starts with exactly one blank row when the checklist is empty.

Motivation

The current UX requires switching focus to a distinct "Add an item" input and tapping a + button to add each entry, which is more friction than just typing continuously down a list. Matching the familiar checklist-app pattern (type, hit next, keep going) makes entry faster.

Acceptance criteria

  • A brand-new/empty checklist field renders with exactly one blank, editable row (no items yet)
  • As soon as a row's text becomes non-blank, a new blank row appears beneath it (if one doesn't already exist below it)
  • Only one trailing blank row exists at a time — typing in it doesn't spawn additional blanks until it too becomes non-blank
  • A blank row that loses focus while still empty is discarded (not persisted as an empty checklist item), except for the single trailing blank row which always remains
  • The separate "Add an item" input row and its + button are removed
  • Checking/unchecking and deleting existing (non-blank) rows continues to work as today

Non-goals / constraints

  • Reordering/drag-to-reorder items is out of scope
  • Must continue round-tripping through ChecklistValue.parse/serialize (markdown task-list lines) without format changes

app/src/main/java/family/marquezkeenan/logbook/ui/fields/ChecklistField.kt

## Goal Replace the checklist field's current fixed-list-plus-separate-"Add an item"-row UI with continuous inline rows (like Apple Reminders/Notes): a new blank row automatically appears under the last row whenever that row becomes non-blank, and the field always starts with exactly one blank row when the checklist is empty. ## Motivation The current UX requires switching focus to a distinct "Add an item" input and tapping a `+` button to add each entry, which is more friction than just typing continuously down a list. Matching the familiar checklist-app pattern (type, hit next, keep going) makes entry faster. ## Acceptance criteria - [ ] A brand-new/empty checklist field renders with exactly one blank, editable row (no items yet) - [ ] As soon as a row's text becomes non-blank, a new blank row appears beneath it (if one doesn't already exist below it) - [ ] Only one trailing blank row exists at a time — typing in it doesn't spawn additional blanks until it too becomes non-blank - [ ] A blank row that loses focus while still empty is discarded (not persisted as an empty checklist item), except for the single trailing blank row which always remains - [ ] The separate "Add an item" input row and its `+` button are removed - [ ] Checking/unchecking and deleting existing (non-blank) rows continues to work as today ## Non-goals / constraints - Reordering/drag-to-reorder items is out of scope - Must continue round-tripping through `ChecklistValue.parse`/`serialize` (markdown task-list lines) without format changes ## Related `app/src/main/java/family/marquezkeenan/logbook/ui/fields/ChecklistField.kt`
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
utilities/Logbook#58
No description provided.