Files
veridian/app/components/Tooltip.vue

27 lines
616 B
Vue

<script setup lang="ts">
const props = defineProps<{
hotkey?: string[];
}>();
const { show, hide } = useTooltip();
const triggerRef = ref<HTMLElement | null>(null);
const hasCursor = ref(false);
onMounted(() => {
hasCursor.value = window.matchMedia('(hover: hover) and (pointer: fine)').matches;
});
const onMouseEnter = () => {
if (triggerRef.value && hasCursor.value) {
show(triggerRef.value, props.hotkey);
}
};
</script>
<template>
<div ref="triggerRef" @mouseenter="onMouseEnter" @mouseleave="hide" :class="$attrs.class" v-bind="$attrs">
<slot />
</div>
</template>