mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-22 15:37:02 +00:00
* feat:Add a keyboard shortcut to collapse/expand groups * fix(collapsible): scope group behavior to isGroup and address review feedback * fix(collapsible): scope group behavior, fix a11y focus, clean CSS, and update docs * feat(work-view): apply isGroup to Overdue/Later/Done/Recurring sections Aligns implementation with the wiki keyboard-shortcuts docs added in this PR — those sections are described as participating in the expand/collapse-all group shortcuts but were missing the [isGroup]="true" input. * feat(tasks): ArrowLeft on top-level task collapses parent group When a top-level task (no parent) is focused and the existing arrow handling would otherwise call focusPrevious, hand off to the closest ancestor collapsible group instead: collapse it and move focus to the group header. Makes the new group shortcuts reachable from the normal task-driven keyboard flow rather than requiring a Tab to the header. Sub-tasks and selected-task hide-detail behavior are unchanged. * feat(collapsible): ArrowUp/Down on group header focuses adjacent task When a group header is focused, ArrowDown moves focus into the next <task> element in document order (the first task of the group when expanded; the next group's first task when collapsed). ArrowUp moves focus to the previous task. Pairs with the ArrowLeft hand-off so the group shortcut and task navigation form a single continuous keyboard flow. * feat(tasks): ArrowUp/Down on group-edge task focuses the header ArrowUp on the first task of a group focuses the current group's header; ArrowDown on the last task focuses the next group's header. Routed through new handleArrowUp/handleArrowDown methods so other focusPrevious/focusNext callsites (move-to-backlog, etc.) keep their existing semantics. * refactor(util): extract findAdjacentFocusable for arrow nav Three places had near-identical DOM-walking logic for "find the next/prev focusable element across tasks and group headers". Consolidates them into a single utility with 9 unit tests, plus a shared GROUP_NAV_SELECTOR constant exported from collapsible.component. Behavior change: ArrowUp/Down on a group header now considers other collapsed group headers as next-focusable (previously walked only across <task> elements). For an all-collapsed list, ArrowDown on a header now moves to the next header instead of skipping to a far-away task. * refactor: trim findAdjacentFocusable + tighten collapsible API surface Multi-agent review consensus: - Drop the compareDocumentPosition fallback in findAdjacentFocusable. Both real callers pass an element matching the selector; the fallback branch only existed to satisfy a synthetic test. Util shrinks to ~10 lines of obvious code. - Re-privatize setAllGroupExpanded and expandIfCollapsed — neither is called from outside CollapsibleComponent. - Scope focusHeader's selector to ':scope > .collapsible-header' so a nested collapsible projected through ng-content can't steal focus. --------- Co-authored-by: Johannes Millan <johannes.millan@gmail.com> |
||
|---|---|---|
| .. | ||
| assets | ||
| 0.-Meta-Diataxis.md | ||
| 0.00-Wiki-Structure-and-Organization.md | ||
| 0.01-Style-Guide.md | ||
| 0.02-Wiki-QA-and-Maintenance.md | ||
| 1.00-Quickstarts.md | ||
| 1.01-First-Steps.md | ||
| 1.02-Configure-Data-Synchronization.md | ||
| 2.00-How_To.md | ||
| 2.01-Downloads and Install.md | ||
| 2.02-Restore-Data-From-Backup.md | ||
| 2.03-Add-Tasks.md | ||
| 2.04-Manage-Subtasks.md | ||
| 2.05-Manage-Scheduled-Tasks.md | ||
| 2.06-Manage-Repeating-Tasks.md | ||
| 2.07-Manage-Task-Integrations.md | ||
| 2.08-Choose-Sync-Backend.md | ||
| 2.09-Configure-Sync-Backend.md | ||
| 2.10-Configure-Obsidian-for-Wiki-Contributions.md | ||
| 2.11-Run-the-Development-Server.md | ||
| 2.12-Package-the-App.md | ||
| 2.13-Run-with-Docker.md | ||
| 2.14-Build-for-Android.md | ||
| 2.15-Develop-a-Plugin.md | ||
| 2.16-Set-Up-Development-Environment.md | ||
| 2.17-Add-a-New-Issue-Integration.md | ||
| 2.18-Contribute-Translations.md | ||
| 3.00-Reference.md | ||
| 3.01-API.md | ||
| 3.02-Settings-and-Preferences.md | ||
| 3.03-Keyboard-Shortcuts.md | ||
| 3.04-Short-Syntax.md | ||
| 3.05-Web-App-vs-Desktop.md | ||
| 3.06-User-Data.md | ||
| 3.07-Issue-Integration-Comparison.md | ||
| 3.08-Sync-Integration-Comparison.md | ||
| 3.09-Theming.md | ||
| 3.97-Obsidian-Linter-Config-MD.md | ||
| 3.98-Obsidian-Linter-Config-YAML.md | ||
| 3.99-Other.md | ||
| 4.00-Concepts.md | ||
| 4.01-The-Today-View.md | ||
| 4.02-Inbox-View.md | ||
| 4.03-Planner-View.md | ||
| 4.04-Schedule-View.md | ||
| 4.05-Board-View.md | ||
| 4.06-Project-View.md | ||
| 4.07-Tag-View.md | ||
| 4.07a-Tags_Eat-the-Frog.md | ||
| 4.07b-Tags_Ordinal-Priorities.md | ||
| 4.08-Time-Estimates.md | ||
| 4.09-Task-Attributes.md | ||
| 4.10-Task-Notes.md | ||
| 4.11-Subtasks.md | ||
| 4.12-Scheduled-Tasks.md | ||
| 4.13-Repeating-Tasks.md | ||
| 4.14-How-Time-Is-Logged.md | ||
| 4.15-Timers-and-Focus-Mode.md | ||
| 4.16-Break-Reminders.md | ||
| 4.17-Idle-Time.md | ||
| 4.18-Reflection.md | ||
| 4.19-Metrics.md | ||
| 4.20-Task-Archiving.md | ||
| 4.21-Worklog.md | ||
| 4.22-Quick-History.md | ||
| 4.23-Managing-Your-Data.md | ||
| 4.24-Integrations.md | ||
| _Footer.md | ||
| _Sidebar.md | ||
| Home.md | ||