Only show context menu for collections (#17725)

* Only show context menu for collections

* don't attach event listener on null
This commit is contained in:
Nitwel
2023-03-07 15:53:55 +01:00
committed by GitHub
parent fd5ac8a195
commit c29bf4d958
2 changed files with 6 additions and 2 deletions

View File

@@ -3,6 +3,8 @@ import { Directive, DirectiveBinding } from 'vue';
function mounted(element: HTMLElement, binding: DirectiveBinding): void {
const contextMenu = binding.instance?.$refs[binding.value];
if (!contextMenu) return;
element.addEventListener('contextmenu', activateContextMenu(contextMenu));
document.documentElement.addEventListener('pointerdown', deactivateContextMenu(contextMenu));
}
@@ -10,6 +12,8 @@ function mounted(element: HTMLElement, binding: DirectiveBinding): void {
function unmounted(element: HTMLElement, binding: DirectiveBinding): void {
const contextMenu = binding.instance?.$refs[binding.value];
if (!contextMenu) return;
element.removeEventListener('contextmenu', activateContextMenu(contextMenu));
document.documentElement.removeEventListener('pointerdown', deactivateContextMenu(contextMenu));
}

View File

@@ -1,7 +1,7 @@
<template>
<v-list-group
v-if="isGroup && matchesSearch"
v-context-menu="'contextMenu'"
v-context-menu="hasContextMenu ? 'contextMenu' : null"
:to="to"
scope="content-navigation"
:value="collection.collection"
@@ -128,7 +128,7 @@ export default defineComponent({
}
});
const hasContextMenu = computed(() => isAdmin);
const hasContextMenu = computed(() => isAdmin && props.collection.type === 'table');
return {
childCollections,