|
|
|
|
@ -178,7 +178,16 @@ export default defineComponent({
|
|
|
|
|
return this.actionsMenuStore.opened === this.uniqueId.toString()
|
|
|
|
|
},
|
|
|
|
|
set(opened) {
|
|
|
|
|
this.actionsMenuStore.opened = opened ? this.uniqueId.toString() : null
|
|
|
|
|
// If the menu is opened on another file entry, we ignore closed events
|
|
|
|
|
if (opened === false && this.actionsMenuStore.opened !== this.uniqueId.toString()) {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// If opened, we specify the current file id
|
|
|
|
|
// else we set it to null to close the menu
|
|
|
|
|
this.actionsMenuStore.opened = opened
|
|
|
|
|
? this.uniqueId.toString()
|
|
|
|
|
: null
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
@ -245,21 +254,16 @@ export default defineComponent({
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
openedMenu() {
|
|
|
|
|
if (this.openedMenu === false) {
|
|
|
|
|
// TODO: This timeout can be removed once `close` event only triggers after the transition
|
|
|
|
|
// ref: https://github.com/nextcloud-libraries/nextcloud-vue/pull/6065
|
|
|
|
|
window.setTimeout(() => {
|
|
|
|
|
if (this.openedMenu) {
|
|
|
|
|
// was reopened while the animation run
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
// Reset any right menu position potentially set
|
|
|
|
|
const root = document.getElementById('app-content-vue')
|
|
|
|
|
if (root !== null) {
|
|
|
|
|
root.style.removeProperty('--mouse-pos-x')
|
|
|
|
|
root.style.removeProperty('--mouse-pos-y')
|
|
|
|
|
}
|
|
|
|
|
}, 300)
|
|
|
|
|
// Checking if the menu is really closed and not
|
|
|
|
|
// just a change in the open state to another file entry.
|
|
|
|
|
if (this.actionsMenuStore.opened === null) {
|
|
|
|
|
// Reset any right menu position potentially set
|
|
|
|
|
logger.debug('All actions menu closed, resetting right menu position...')
|
|
|
|
|
const root = this.$el?.closest('main.app-content') as HTMLElement
|
|
|
|
|
if (root !== null) {
|
|
|
|
|
root.style.removeProperty('--mouse-pos-x')
|
|
|
|
|
root.style.removeProperty('--mouse-pos-y')
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
@ -297,6 +301,7 @@ export default defineComponent({
|
|
|
|
|
const contentRect = root.getBoundingClientRect()
|
|
|
|
|
// Using Math.min/max to prevent the menu from going out of the AppContent
|
|
|
|
|
// 200 = max width of the menu
|
|
|
|
|
logger.debug('Setting actions menu position...')
|
|
|
|
|
root.style.setProperty('--mouse-pos-x', Math.max(0, event.clientX - contentRect.left - 200) + 'px')
|
|
|
|
|
root.style.setProperty('--mouse-pos-y', Math.max(0, event.clientY - contentRect.top) + 'px')
|
|
|
|
|
} else {
|
|
|
|
|
|