diff --git a/src/assets/avatar-placeholder.svg b/src/assets/avatar-placeholder.svg
new file mode 100644
index 0000000000..3ac7176f87
--- /dev/null
+++ b/src/assets/avatar-placeholder.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/src/displays/index.ts b/src/displays/index.ts
index 4a16d39c0f..63a5f04ab0 100644
--- a/src/displays/index.ts
+++ b/src/displays/index.ts
@@ -5,6 +5,7 @@ import DisplayStatusBadge from './status-badge/';
import DisplayTags from './tags/';
import DisplayFormattedText from './formatted-text';
import DisplayImage from './image';
+import DisplayUser from './user';
export const displays = [
DisplayIcon,
@@ -14,5 +15,6 @@ export const displays = [
DisplayTags,
DisplayFormattedText,
DisplayImage,
+ DisplayUser,
];
export default displays;
diff --git a/src/displays/user/index.ts b/src/displays/user/index.ts
new file mode 100644
index 0000000000..b88f7a34ec
--- /dev/null
+++ b/src/displays/user/index.ts
@@ -0,0 +1,25 @@
+import { defineDisplay } from '@/displays/define';
+import DisplayUser from './user.vue';
+
+export default defineDisplay(({ i18n }) => ({
+ id: 'user',
+ name: i18n.t('user'),
+ types: ['user', 'owner', 'user_modified'],
+ icon: 'person',
+ handler: DisplayUser,
+ options: [
+ {
+ field: 'display',
+ name: i18n.t('display'),
+ default_value: 'avatar',
+ interface: 'dropdown',
+ options: {
+ choices: `
+ avatar :: Avatar
+ name :: Name
+ `,
+ },
+ },
+ ],
+ fields: ['id', 'avatar.data', 'first_name', 'last_name'],
+}));
diff --git a/src/displays/user/user.vue b/src/displays/user/user.vue
new file mode 100644
index 0000000000..d4880af41d
--- /dev/null
+++ b/src/displays/user/user.vue
@@ -0,0 +1,68 @@
+
+ {{ value.first_name }} {{ value.last_name }}
+
+
+
+
+
+
+