27 lines
616 B
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>
|