diff --git a/src/components/EntityGrid.vue b/src/components/EntityGrid.vue
index ff995652..847f36e7 100644
--- a/src/components/EntityGrid.vue
+++ b/src/components/EntityGrid.vue
@@ -159,6 +159,10 @@ export default class EntityGrid extends Vue {
@Prop({ default: "other party" })
conflictContext!: string;
+ /** Whether to hide the "Show All" navigation */
+ @Prop({ default: false })
+ hideShowAll!: boolean;
+
/**
* Function to determine which entities to display (allows parent control)
*
@@ -245,7 +249,9 @@ export default class EntityGrid extends Vue {
* Whether to show the "Show All" navigation
*/
get shouldShowAll(): boolean {
- return this.entities.length > 0 && this.showAllRoute !== "";
+ return (
+ !this.hideShowAll && this.entities.length > 0 && this.showAllRoute !== ""
+ );
}
/**
diff --git a/src/components/EntitySelectionStep.vue b/src/components/EntitySelectionStep.vue
index 2c8008d3..b476ea00 100644
--- a/src/components/EntitySelectionStep.vue
+++ b/src/components/EntitySelectionStep.vue
@@ -27,6 +27,7 @@ Matthew Raymer */
:show-all-query-params="showAllQueryParams"
:notify="notify"
:conflict-context="conflictContext"
+ :hide-show-all="hideShowAll"
@entity-selected="handleEntitySelected"
/>
@@ -140,6 +141,10 @@ export default class EntitySelectionStep extends Vue {
@Prop()
notify?: (notification: NotificationIface, timeout?: number) => void;
+ /** Whether to hide the "Show All" navigation */
+ @Prop({ default: false })
+ hideShowAll!: boolean;
+
/**
* CSS classes for the cancel button
*/
diff --git a/src/components/GiftedDialog.vue b/src/components/GiftedDialog.vue
index 127c2e2e..b88184a0 100644
--- a/src/components/GiftedDialog.vue
+++ b/src/components/GiftedDialog.vue
@@ -19,6 +19,7 @@
:giver="giver"
:receiver="receiver"
:notify="$notify"
+ :hide-show-all="hideShowAll"
@entity-selected="handleEntitySelected"
@cancel="cancel"
/>
@@ -99,6 +100,7 @@ export default class GiftedDialog extends Vue {
@Prop() toProjectId = "";
@Prop({ default: false }) showProjects = false;
@Prop() isFromProjectView = false;
+ @Prop({ default: false }) hideShowAll = false;
@Watch("showProjects")
onShowProjectsChange() {
diff --git a/src/views/ContactGiftingView.vue b/src/views/ContactGiftingView.vue
index d2577b28..66a29b52 100644
--- a/src/views/ContactGiftingView.vue
+++ b/src/views/ContactGiftingView.vue
@@ -17,6 +17,24 @@
+
+ -
+
+
+
+ You
+
+
+
+
+
+
-
@@ -71,6 +89,7 @@
:to-project-id="toProjectId"
:show-projects="showProjects"
:is-from-project-view="isFromProjectView"
+ :hide-show-all="true"
/>
@@ -180,7 +199,7 @@ export default class ContactGiftingView extends Vue {
}
}
- openDialog(contact?: GiverReceiverInputInfo | "Unnamed") {
+ openDialog(contact?: GiverReceiverInputInfo | "Unnamed" | "You") {
if (contact === "Unnamed") {
// Special case: Pass undefined to trigger Step 1, but with "Unnamed" pre-selected
let recipient: GiverReceiverInputInfo;
@@ -230,6 +249,55 @@ export default class ContactGiftingView extends Vue {
);
// Immediately select "Unnamed" and move to Step 2
(this.$refs.customDialog as GiftedDialog).selectGiver();
+ } else if (contact === "You") {
+ // Special case: Handle "You" entity selection
+ let giver: GiverReceiverInputInfo;
+ let recipient: GiverReceiverInputInfo;
+
+ if (this.stepType === "giver") {
+ // We're selecting a giver, so "You" becomes the giver
+ giver = { did: this.activeDid, name: "You" };
+
+ // Recipient is either a project or the current user
+ if (this.recipientEntityType === "project") {
+ recipient = {
+ did: this.recipientProjectHandleId,
+ name: this.recipientProjectName,
+ image: this.recipientProjectImage,
+ handleId: this.recipientProjectHandleId,
+ };
+ } else {
+ recipient = { did: this.activeDid, name: "You" };
+ }
+ } else {
+ // We're selecting a recipient, so "You" becomes the recipient
+ recipient = { did: this.activeDid, name: "You" };
+
+ // Preserve the existing giver from the context
+ if (this.giverEntityType === "project") {
+ giver = {
+ did: this.giverProjectHandleId,
+ name: this.giverProjectName,
+ image: this.giverProjectImage,
+ handleId: this.giverProjectHandleId,
+ };
+ } else if (this.giverDid) {
+ giver = {
+ did: this.giverDid,
+ name: this.giverProjectName || "Someone",
+ };
+ } else {
+ giver = { did: this.activeDid, name: "You" };
+ }
+ }
+
+ (this.$refs.customDialog as GiftedDialog).open(
+ giver,
+ recipient,
+ undefined,
+ this.stepType === "giver" ? "Given by You" : "Given to You",
+ this.prompt,
+ );
} else {
// Regular case: contact is a GiverReceiverInputInfo
let giver: GiverReceiverInputInfo;
@@ -283,5 +351,12 @@ export default class ContactGiftingView extends Vue {
);
}
}
+
+ get shouldShowYouEntity(): boolean {
+ return (
+ this.stepType === "recipient" ||
+ (this.stepType === "giver" && this.isFromProjectView)
+ );
+ }
}