PR-4: dashboards editor single-tap action menu (dashboard editor gesture alignment)#200
Merged
Merged
Conversation
The Settings → Dashboards editor still used the retired gesture vocabulary — double-tap a tile to edit, long-press for a Duplicate/Delete bottom sheet. Bring it in line with the rest of the redesign: a single tap on a page tile opens one responsive ActionMenuComponent (Edit / Duplicate / Delete) at the tap point, reusing the same menu the widget grid uses. Delete now routes through a confirmation dialog before removing the page and its widgets. The bespoke DashboardsBottomSheetComponent and the press/drag-arbitration state it needed are removed, along with two dead fields (pageTitle, DomSanitizer). Closes #188. Refs #183. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VDu7zsKECA9SvBR5DLdUex
Contributor
Author
Review synthesisFive independent persona reviewers (correctness, adversarial, maintainability, testing, project-standards), each in a fresh context. Confirmed and fixed
Verified sound (adversarial traced 6 break scenarios)Real reorder never pops the menu (moves past tapSlop → no tap); deleting the last page recreates a blank "Page 1" with Residual risks (safe today, documented — not acted on)
Verdict: ready. lint clean, build green, spec 10/10 locally; CI runs the full matrix. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR-4 of the navigation UX redesign (#183) — the last sub-issue. The Settings → Dashboards editor was the one surface still using the retired gesture vocabulary: double-tap a page tile to edit, long-press for a Duplicate/Delete bottom sheet. This brings it in line with the rest of the redesign.
What changes
ActionMenuComponentthe widget grid uses (mat-menu on desktop, bottom drawer under 600px).DashboardsBottomSheetComponent, the press/drag-arbitration state it needed (_sheetOpen,suppressDrag,cancelPointerSequence, …), and two dead fields (pageTitle,DomSanitizer) are removed.Tap vs. drag
The tiles are
cdkDragreorderable and now also carrykipGestures (tap). Tap-vs-drag is left entirely to the gesture directive's movement threshold: a real reorder moves past the tap slop (20px touch / 8px mouse) and emits no tap, so it never opens the menu. There is deliberately noisDraggingguard on the tap handler — gating on the shared drag signal would swallow a legitimate tap whose minor travel already tripped cdkDrag's lower 5px start threshold (common on a rocking marine display), which review flagged as a real defect.Review
Five independent persona reviewers (correctness, adversarial, maintainability, testing, project-standards). One genuine defect (the tap-swallow above) fixed; the
private-visibility and test-coverage findings applied; no standards violations. The positional_menuIndexcapture and the app-globalisDraggingsignal were noted as residual risks — both safe today (the menu is modal;dashboards()has no live async mutation) and out of scope to re-architect here.Verification:
lintclean,build:prodgreen, editor spec 10/10 locally (menu contents, single-tap + keyboard open, edit/duplicate apply-on-save, delete-confirms-and-only-on-confirm, stale-index guard). CI runs the full matrix.Closes #188. Refs #183.