From 120fe0b06be13e7465db83de54525b299a32d915 Mon Sep 17 00:00:00 2001
From: Julian Leucker <leuckerj@gmail.com>
Date: Fri, 13 Jan 2023 22:27:06 +0100
Subject: [PATCH] Generalize avatar click box

---
 .../components/generic/AvatarClickbox.vue     | 32 +++++++++++++++
 .../components/person/AvatarClickBox.vue      | 39 -------------------
 .../person/PersonAvatarClickbox.vue           | 33 ++++++++++++++++
 .../components/person/PersonOverview.vue      |  6 +--
 4 files changed, 68 insertions(+), 42 deletions(-)
 create mode 100644 aleksis/core/assets/components/generic/AvatarClickbox.vue
 delete mode 100644 aleksis/core/assets/components/person/AvatarClickBox.vue
 create mode 100644 aleksis/core/assets/components/person/PersonAvatarClickbox.vue

diff --git a/aleksis/core/assets/components/generic/AvatarClickbox.vue b/aleksis/core/assets/components/generic/AvatarClickbox.vue
new file mode 100644
index 000000000..faa2ba173
--- /dev/null
+++ b/aleksis/core/assets/components/generic/AvatarClickbox.vue
@@ -0,0 +1,32 @@
+<template>
+    <v-dialog v-model="overlay" max-width="fit-content" max-height="fit-content">
+      <template #activator="{ on, attrs }">
+        <v-card class="rounded-circle">
+          <v-responsive :aspect-ratio="1" v-bind="attrs" v-on="on">
+            <slot name="activator" />
+          </v-responsive>
+        </v-card>
+      </template>
+      <div class="inDialog">
+        <slot class="inDialog" />
+      </div>
+    </v-dialog>
+  </template>
+  
+  <script>  
+  export default {
+    name: "AvatarClickBox",
+    data: () => ({
+      overlay: false,
+    }),
+  };
+  </script>
+  
+  <style scoped>
+  .inDialog {
+    /* FIXME: find a way to enlarge image */
+    max-height: 80vmin;
+    width: 80vmin;
+  }
+  </style>
+  
\ No newline at end of file
diff --git a/aleksis/core/assets/components/person/AvatarClickBox.vue b/aleksis/core/assets/components/person/AvatarClickBox.vue
deleted file mode 100644
index fc60bd301..000000000
--- a/aleksis/core/assets/components/person/AvatarClickBox.vue
+++ /dev/null
@@ -1,39 +0,0 @@
-<template>
-  <v-dialog v-model="overlay" max-width="fit-content" max-height="fit-content">
-    <template #activator="{ on, attrs }">
-      <v-card class="rounded-circle">
-        <v-responsive :aspect-ratio="1" v-bind="attrs" v-on="on">
-          <avatar-content :id="id" class="rounded-circle" />
-        </v-responsive>
-      </v-card>
-    </template>
-    <avatar-content :id="id" contain class="inDialog" />
-  </v-dialog>
-</template>
-
-<script>
-import AvatarContent from "./AvatarContent.vue";
-
-export default {
-  name: "AvatarClickBox",
-  components: { AvatarContent },
-  data: () => ({
-    overlay: false,
-  }),
-  props: {
-    id: {
-      type: String,
-      required: false,
-      default: "",
-    },
-  },
-};
-</script>
-
-<style scoped>
-.inDialog {
-  /* FIXME: find a way to enlarge image */
-  max-height: 80vmin;
-  width: 80vmin;
-}
-</style>
diff --git a/aleksis/core/assets/components/person/PersonAvatarClickbox.vue b/aleksis/core/assets/components/person/PersonAvatarClickbox.vue
new file mode 100644
index 000000000..1a5de2a12
--- /dev/null
+++ b/aleksis/core/assets/components/person/PersonAvatarClickbox.vue
@@ -0,0 +1,33 @@
+<template>
+  <avatar-clickbox>
+    <template #activator>
+      <avatar-content :id="id" class="rounded-circle" />
+    </template>
+    <avatar-content :id="id" contain />
+  </avatar-clickbox>
+</template>
+
+<script>
+import AvatarClickbox from "../generic/AvatarClickbox.vue";
+import AvatarContent from "./AvatarContent.vue";
+
+export default {
+  name: "PersonAvatarClickBox",
+  components: {
+    AvatarClickbox,
+    AvatarContent,
+  },
+  data: () => ({
+    overlay: false,
+  }),
+  props: {
+    id: {
+      type: String,
+      required: false,
+      default: "",
+    },
+  },
+};
+</script>
+
+<style scoped></style>
diff --git a/aleksis/core/assets/components/person/PersonOverview.vue b/aleksis/core/assets/components/person/PersonOverview.vue
index d7990c3ff..4aabae0fa 100644
--- a/aleksis/core/assets/components/person/PersonOverview.vue
+++ b/aleksis/core/assets/components/person/PersonOverview.vue
@@ -13,7 +13,7 @@
       <template v-else-if="data && data.person">
         <detail-view>
           <template #avatarContent>
-            <avatar-click-box :id="id" />
+            <person-avatar-clickbox :id="id" />
           </template>
 
           <template #title>
@@ -188,20 +188,20 @@
 
 <script>
 import AdditionalImage from "./AdditionalImage.vue";
-import AvatarClickBox from "./AvatarClickBox.vue";
 import DetailView from "../generic/DetailView.vue";
 import GroupCollection from "../group/GroupCollection.vue";
 import PersonActions from "./PersonActions.vue";
+import PersonAvatarClickbox from "./PersonAvatarClickbox.vue";
 import PersonCollection from "./PersonCollection.vue";
 
 export default {
   name: "PersonOverview",
   components: {
     AdditionalImage,
-    AvatarClickBox,
     DetailView,
     GroupCollection,
     PersonActions,
+    PersonAvatarClickbox,
     PersonCollection,
   },
   props: {
-- 
GitLab