mirror of
https://github.com/johannesjo/super-productivity.git
synced 2026-07-18 00:46:45 +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> |
||
|---|---|---|
| .. | ||
| long-term-plans | ||
| plans | ||
| promotion | ||
| research | ||
| screens | ||
| sync-and-op-log | ||
| wiki | ||
| add-new-integration.md | ||
| build-and-publish-notes.md | ||
| ENV_SETUP.md | ||
| github-access-token-instructions.md | ||
| gitlab-access-token-instructions.md | ||
| how-to-rate.md | ||
| howto-refresh-snap-credentials.md | ||
| i18n-script-usage.md | ||
| legacy-webview-analysis.md | ||
| mac-app-store-code-signing-guide.md | ||
| performance-project-tag-report.md | ||
| plugin-development.md | ||
| styling-guide.md | ||
| TRANSLATING.md | ||
| unused-translations-analysis.md | ||
| update-android-app.md | ||
| update-mac-certificates.md | ||