Files
warren/frontend/components/DirectoryListContextMenu.vue
2025-08-10 16:23:12 +02:00

57 lines
1.4 KiB
Vue

<script setup lang="ts">
import {
ContextMenu,
ContextMenuTrigger,
ContextMenuContent,
ContextMenuItem,
} from '@/components/ui/context-menu';
const warrenStore = useWarrenStore();
const copyStore = useCopyStore();
const createDirectoryDialog = useCreateDirectoryDialog();
const pasting = ref<boolean>(false);
const validPaste = computed(
() =>
!pasting.value && copyStore.file != null && warrenStore.current != null
);
const props = defineProps<{
class?: string;
}>();
async function onPaste() {
if (!validPaste.value) {
return;
}
pasting.value = true;
await pasteFile(copyStore.file!, {
warrenId: warrenStore.current!.warrenId,
name: copyStore.file!.name,
path: warrenStore.current!.path,
});
pasting.value = false;
}
</script>
<template>
<ContextMenu>
<ContextMenuTrigger :class="props.class">
<slot />
</ContextMenuTrigger>
<ContextMenuContent>
<ContextMenuItem :disabled="!validPaste" @select="onPaste">
<Icon name="lucide:clipboard-paste" />
Paste
</ContextMenuItem>
<ContextMenuItem @select="createDirectoryDialog.openDialog">
<Icon name="lucide:folder-plus" />
Create directory
</ContextMenuItem>
</ContextMenuContent>
</ContextMenu>
</template>