По умолчанию компонент Menubar раскрывает вложенные пункты только при клике. Небольшой шаблон, что бы активировать работу меню при событии hover:
const isMobile = computed(() => windowWidth.value < 601)
let intv = 0;
/**
* Наведение курсора на менюшку
* @param event
* @param instance
* @param context
*/
function enterRoot(event, instance, context) {
if (isMobile.value) {
return;
}
//Делаем менюшку активной,
//Иначе нужно перемещать курсор на другие пункты меню
instance.dirty = true;
}
/**
* Закрываем открытую менюшку
* @param event
* @param instance
* @param context
*/
function leaveRoot(event, instance, context) {
if (isMobile.value) {
return;
}
clearTimeout(intv);
intv = setTimeout(() => {
instance.hide(event, false);
}, 300);
}
/**
* Наведение курсора на один пункт меню
* @param event
* @param instance
* @param context
*/
function enter(event, instance, context) {
if (isMobile.value) {
return;
}
clearTimeout(intv);
if (context && context?.item?.items && context.item.items.length > 0) {
intv = setTimeout(() => {
if (!context.active) {
instance.onItemClick(event, context.item);
}
}, 50);
}
}
< Menubar
:pt="{
itemContent: ({ instance, context }) => ({
onmouseenter: (event) => enter(event, instance, context),
}),
root: ({ instance, context }) => ({
onmouseenter: (event) => enterRoot(event, instance, context),
onmouseleave: (event) => leaveRoot(event, instance, context),
})
}"
/ >
- 23.11.2024
- 41 просмотр
Добавить комментарий
Может быть интересно