fix(tracking): whole connection source card is clickable - #18
Conversation
The TT.org / TT.io source cards rendered with cursor:pointer but only the nested radio input actually toggled the selection; clicking the card body did nothing (issue #13). The card wrappers now invoke the same source-change handler as the radio, in both the tracking settings page and the change-connection dialog. The radio remains the single keyboard-focusable control. Fixes #13
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 20 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Run ID: 📒 Files selected for processing (3)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
This comment was marked as resolved.
This comment was marked as resolved.
Dismissed because a newer commit was pushed; Greptile will re-review the current head.
Root cause
The TT.org / TT.io source cards render with
cursor: pointerand a hover style, implying the whole card is the hit target, but only the nestedMudRadiochanged selection. Clicking the card body hit the wrapper and did nothing (#13).Fix
Validation
dotnet csharpier check .: clean.Fixes #13
Summary by cubic
Make the entire TT.org and TT.io source cards clickable; also harden selection by blocking changes during connection tests, stopping radio click bubbling, and snapshotting the chosen provider during submission. Applies to Tracking settings and the Change connection dialog; the radio remains the only keyboard-focusable control.
Written for commit 0f5c4ac. Summary will update on new commits.
Greptile Summary
This PR fixes issue #13 where clicking the card body on TT.org / TT.io source cards had no effect — only clicking the nested
MudRadioinput toggled the selection. The fix adds@onclickhandlers to both card wrapperdivs inSettingsTracking.razorandChangeConnectionDialog.razor, invoking the same idempotent handlers already used by theMudRadioGroup'sValueChangedcallback.SettingsTracking.razor: Cards now callOnPvpDraftSourceChanged(PvpSource.Org/Io)on click; handler is synchronous, sets_pvpDraftSource, and clears both error fields.ChangeConnectionDialog.razor: Cards now callOnDraftSourceChanged(PvpSource.Org/Io)on click; handler is synchronous, sets_draftSource, and clears_error. The radio remains the sole keyboard-focusable control as documented in the PR.Confidence Score: 5/5
Safe to merge — the changes are two symmetric, four-line additions that wire pointer clicks on card wrappers to the same handlers already invoked by the radio group.
Both handlers are synchronous and idempotent: they assign a local draft field and clear an error string. Whether the handler fires once (card body click) or twice (radio button click bubbles through both paths), the result is identical state. No async work, no persistence, and no side effects are triggered by the new @OnClick bindings.
Files Needing Attention: No files require special attention.
Important Files Changed
Sequence Diagram
sequenceDiagram participant User participant CardDiv as Card div (@onclick) participant MudRadio as MudRadio (keyboard) participant MudRadioGroup as MudRadioGroup (ValueChanged) participant Handler as OnDraftSourceChanged / OnPvpDraftSourceChanged Note over User,Handler: Before fix — only radio click worked User->>MudRadio: click radio button only MudRadio->>MudRadioGroup: change event MudRadioGroup->>Handler: ValueChanged(source) Handler-->>CardDiv: re-render (selected class applied) Note over User,Handler: After fix — full card is the hit target User->>CardDiv: click anywhere on card body CardDiv->>Handler: "@onclick → handler(source)" Handler-->>CardDiv: re-render (selected class applied) User->>MudRadio: click radio (still works) MudRadio->>MudRadioGroup: change event MudRadioGroup->>Handler: ValueChanged(source) Note right of Handler: handler idempotent — safe if both paths fire CardDiv->>Handler: "@onclick bubbles (same source, same result)" Handler-->>CardDiv: re-render (no-op state change)Reviews (1): Last reviewed commit: "fix(tracking): make whole connection sou..." | Re-trigger Greptile
Context used: