From 9647fb358b56366b4e5c088b0792bd42e73463b0 Mon Sep 17 00:00:00 2001 From: Girish Ramakrishnan Date: Tue, 13 Jan 2026 22:49:00 +0100 Subject: [PATCH] show menu when avatar is clicked --- dashboard/src/components/Headerbar.vue | 25 +++++++++++++++++++++++-- dashboard/src/views/ProfileView.vue | 4 ---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/dashboard/src/components/Headerbar.vue b/dashboard/src/components/Headerbar.vue index 1cb589725..4928954b9 100644 --- a/dashboard/src/components/Headerbar.vue +++ b/dashboard/src/components/Headerbar.vue @@ -7,10 +7,11 @@ const t = i18n.t; import { onMounted, onUnmounted, ref, useTemplateRef, inject } from 'vue'; import { marked } from 'marked'; import { eachLimit } from 'async'; -import { Button, Popover, Icon, InputDialog, Spinner } from '@cloudron/pankow'; +import { Menu, Button, Popover, Icon, InputDialog, Spinner } from '@cloudron/pankow'; import { prettyDate, prettyLongDate } from '@cloudron/pankow/utils'; import NotificationsModel from '../models/NotificationsModel.js'; import ServicesModel from '../models/ServicesModel.js'; +import ProfileModel from '../models/ProfileModel.js'; defineProps(['config', 'subscription']); @@ -24,6 +25,7 @@ function onOpenHelp(popover, event, elem) { } const servicesModel = ServicesModel.create(); +const profileModel = ProfileModel.create(); const notificationModel = NotificationsModel.create(); const notificationButton = useTemplateRef('notificationButton'); @@ -114,6 +116,23 @@ const description = marked.parse(t('support.help.description', { apiLink: 'https://docs.cloudron.io/api.html' })); +const avatarActions = [{// + icon: 'fa-solid fa-circle-user', + label: t('profile.title'), + action: () => { window.location.href = '#/profile'; } + }, { + separator: true, + }, { + icon: 'fa-solid fa-right-from-bracket', + label: t('main.logout'), + action: () => { profileModel.logout(); } + }]; + +const avatarMenu = useTemplateRef('avatarMenu'); +function onAvatarClick(event) { + avatarMenu.value.open(event, event.currentTarget); +} + onMounted(async () => { if (profile.value.isAtLeastAdmin) await refresh(); @@ -129,6 +148,8 @@ onUnmounted(() => { diff --git a/dashboard/src/views/ProfileView.vue b/dashboard/src/views/ProfileView.vue index e77c856d5..be85eac43 100644 --- a/dashboard/src/views/ProfileView.vue +++ b/dashboard/src/views/ProfileView.vue @@ -209,10 +209,6 @@ onMounted(async () => {
- -