summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorPytal <24800714+Pytal@users.noreply.github.com>2023-02-10 19:22:45 -0800
committerGitHub <noreply@github.com>2023-02-10 19:22:45 -0800
commitb59b8fd8088502c9a55a1efaa760ff34964cd439 (patch)
treeba86ebb6d1649735c7c4eaf746c4d06f9043eb44 /apps
parentfd2d91a77df965349cef1aa2dfc7234b3e3f816b (diff)
parentc77998209f779dfccd86afeeafd43a7bbd886ff2 (diff)
downloadnextcloud-server-b59b8fd8088502c9a55a1efaa760ff34964cd439.tar.gz
nextcloud-server-b59b8fd8088502c9a55a1efaa760ff34964cd439.zip
Merge pull request #36232 from nextcloud/enh/a11y-user-menu
Port user menu to Vue
Diffstat (limited to 'apps')
-rw-r--r--apps/user_status/appinfo/info.xml2
-rw-r--r--apps/user_status/src/UserStatus.vue7
-rw-r--r--apps/user_status/src/menu.js47
3 files changed, 22 insertions, 34 deletions
diff --git a/apps/user_status/appinfo/info.xml b/apps/user_status/appinfo/info.xml
index 90744d40747..3c2486fde76 100644
--- a/apps/user_status/appinfo/info.xml
+++ b/apps/user_status/appinfo/info.xml
@@ -13,7 +13,7 @@
<bugs>https://github.com/nextcloud/server</bugs>
<navigations>
<navigation>
- <id>user_status-menuitem</id>
+ <id>user_status-menu-entry</id>
<name>User status</name>
<order>1</order>
<type>settings</type>
diff --git a/apps/user_status/src/UserStatus.vue b/apps/user_status/src/UserStatus.vue
index a4b7b9552f3..28c0896fee5 100644
--- a/apps/user_status/src/UserStatus.vue
+++ b/apps/user_status/src/UserStatus.vue
@@ -26,7 +26,7 @@
<a v-if="!inline"
class="user-status-menu-item__header"
:href="profilePageLink"
- @click="loadProfilePage">
+ @click.exact="loadProfilePage">
<div class="user-status-menu-item__header-content">
<div class="user-status-menu-item__header-content-displayname">{{ displayName }}</div>
<div v-if="!loadingProfilePage" class="user-status-menu-item__header-content-placeholder" />
@@ -234,11 +234,6 @@ export default {
align-items: flex-start !important;
color: var(--color-main-text) !important;
- &:focus-visible {
- padding: 6px 8px 1px 8px !important;
- margin: 2px !important;
- }
-
&:not([href]) {
height: var(--header-menu-item-height) !important;
color: var(--color-text-maxcontrast) !important;
diff --git a/apps/user_status/src/menu.js b/apps/user_status/src/menu.js
index 66010102f10..abcfe7b7527 100644
--- a/apps/user_status/src/menu.js
+++ b/apps/user_status/src/menu.js
@@ -24,10 +24,11 @@
import Vue from 'vue'
import { getRequestToken } from '@nextcloud/auth'
-import UserStatus from './UserStatus'
-import store from './store'
-import NcAvatar from '@nextcloud/vue/dist/Components/NcAvatar'
-import { loadState } from '@nextcloud/initial-state'
+import { subscribe } from '@nextcloud/event-bus'
+
+import UserStatus from './UserStatus.vue'
+
+import store from './store/index.js'
// eslint-disable-next-line camelcase
__webpack_nonce__ = btoa(getRequestToken())
@@ -35,31 +36,23 @@ __webpack_nonce__ = btoa(getRequestToken())
Vue.prototype.t = t
Vue.prototype.$t = t
-const avatarDiv = document.getElementById('avatardiv-menu')
-const userStatusData = loadState('user_status', 'status')
-const propsData = {
- preloadedUserStatus: {
- message: userStatusData.message,
- icon: userStatusData.icon,
- status: userStatusData.status,
- },
- user: avatarDiv.dataset.user,
- displayName: avatarDiv.dataset.displayname,
- disableMenu: true,
- disableTooltip: true,
-}
+const mountPoint = document.getElementById('user_status-menu-entry')
-const NcAvatarInMenu = Vue.extend(NcAvatar)
-new NcAvatarInMenu({ propsData }).$mount('#avatardiv-menu')
+const mountMenuEntry = () => {
+ const mountPoint = document.getElementById('user_status-menu-entry')
+ // eslint-disable-next-line no-new
+ new Vue({
+ el: mountPoint,
+ render: h => h(UserStatus),
+ store,
+ })
+}
-// Register settings menu entry
-export default new Vue({
- el: 'li[data-id="user_status-menuitem"]',
- // eslint-disable-next-line vue/match-component-file-name
- name: 'UserStatusRoot',
- render: h => h(UserStatus),
- store,
-})
+if (mountPoint) {
+ mountMenuEntry()
+} else {
+ subscribe('core:user-menu:mounted', mountMenuEntry)
+}
// Register dashboard status
document.addEventListener('DOMContentLoaded', function() {