nextcloud/apps/user_status/src/menu.js
Grigorii K. Shartsev 8ca4a7a036 refactor(user_status): migrate to Vue 3
Signed-off-by: Grigorii K. Shartsev <me@shgk.me>
2025-11-26 14:09:33 +01:00

52 lines
1.3 KiB
JavaScript

/**
* SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
import { subscribe } from '@nextcloud/event-bus'
import { createApp } from 'vue'
import UserStatus from './UserStatus.vue'
import store from './store/index.js'
import './user-status-icons.css'
const mountPoint = document.getElementById('user_status-menu-entry')
/**
*
*/
function mountMenuEntry() {
const mountPoint = document.getElementById('user_status-menu-entry')
// TODO: fix me after Core migration to Vue 3
// In Vue 2 menu items were mounted in place to the menu items
// In Vue 3 they are mounted inside the menu item
// A workaround - replace the menu item with "display: contents" div
const transparentMountPoint = document.createElement('div')
transparentMountPoint.style.display = 'contents'
mountPoint.replaceWith(transparentMountPoint)
createApp(UserStatus)
.use(store)
.mount(transparentMountPoint)
}
if (mountPoint) {
mountMenuEntry()
} else {
subscribe('core:user-menu:mounted', mountMenuEntry)
}
// Register dashboard status
document.addEventListener('DOMContentLoaded', function() {
if (!OCA.Dashboard) {
return
}
OCA.Dashboard.registerStatus('status', (el) => {
createApp(UserStatus, {
inline: true,
})
.use(store)
.mount(el)
})
})