Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/assets/vue/components/basecomponents/BaseContextMenu.vue

43 lines
733 B

<script setup>
import { watch } from "vue"
const props = defineProps({
visible: {
type: Boolean,
default: false,
},
position: {
type: Object,
default: () => ({ x: 0, y: 0 }),
},
})
const emit = defineEmits(["close"])
const handleClickOutside = (event) => {
emit("close")
}
watch(
() => props.visible,
(newVal) => {
if (newVal) {
setTimeout(() => {
document.addEventListener("click", handleClickOutside)
}, 0)
} else {
document.removeEventListener("click", handleClickOutside)
}
},
)
</script>
<template>
<div
v-if="visible"
:style="{ top: `${position.y}px`, left: `${position.x}px` }"
class="context-menu"
>
<slot />
</div>
</template>