feat: replace authorized representative input with contact selection dialog #219

Merged
jose merged 7 commits from project-representative-dialog into master 2025-11-12 06:42:49 +00:00
Owner
ClickUp: https://app.clickup.com/t/86b70ne2f
jose added 1 commit 2025-11-05 13:22:36 +00:00
Replace the plain text input for authorized representative with an
interactive contact selection interface that provides better UX and
maintains data consistency.

Changes:
- Add ProjectRepresentativeDialog component using EntityGrid for contact selection (excludes "You" and "Unnamed" special entities)
- Replace text input with clickable field showing contact icon, name, and DID
- Implement conditional UI states: initial "Assign..." placeholder vs assigned representative display with unset button
- Refactor selectedRepresentative to computed property derived from agentDid (single source of truth, prevents sync issues)
- Inline representativeDisplayName for simplicity
- Support changing representative by clicking on assigned field
- Support unsetting representative via trash button

The new implementation ensures agentDid remains the authoritative state while selectedRepresentative is automatically computed, preventing the previously possible desync when agentDid was set directly (e.g., via the
"make original owner an authorized representative" button).
jose changed title from feat: replace authorized representative input with contact selection dialog to WIP: feat: replace authorized representative input with contact selection dialog 2025-11-05 13:25:15 +00:00
jose added 1 commit 2025-11-07 12:17:43 +00:00
- Remove conflictChecker prop (always passed as no-op function)
- Remove unused emitCancel method and cancel event handling
- Simplify handleEntitySelected by removing unnecessary type check
- Update NewEditProjectView to remove conflict-checker binding and empty cancel handler

The conflictChecker prop was not needed since representative selection
doesn't require conflict detection. The cancel event was never emitted
and the parent handler was empty, so both were removed.
jose changed title from WIP: feat: replace authorized representative input with contact selection dialog to feat: replace authorized representative input with contact selection dialog 2025-11-07 12:20:46 +00:00
trentlarson added 1 commit 2025-11-08 01:13:05 +00:00
trentlarson added 1 commit 2025-11-08 01:27:48 +00:00
jose added 2 commits 2025-11-11 07:15:10 +00:00
EntityGrid's recentContacts assumes contacts are sorted by date added
(newest first), but ProjectRepresentativeDialog was receiving contacts
sorted alphabetically from NewEditProjectView, causing it to show
different "Recently Added" contacts than GiftedDialog.

- Changed NewEditProjectView to use $contactsByDateAdded() instead of
  $getAllContacts()
- Added documentation comments to EntityGrid.vue to prevent this issue
  in future reuses
jose added 1 commit 2025-11-11 07:31:59 +00:00
Change "Everyone Else" to "Everyone" for clearer, more concise labeling
jose merged commit 1739567b18 into master 2025-11-12 06:42:49 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: trent_larson/crowd-funder-for-time-pwa#219