Primevue v.4 + Menubar - свернутьразвернуть пункты меню при наведении курсора мыши


41

По умолчанию компонент 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),
          })
        }"
 / >
Добавить комментарий
Может быть интересно

Данный скрипт поможет пересохранить файлы Excel в csv. Может быть полезно перед отправкой прайсов на хостинг для дальнейшей обработки

6
Иногда при разработке сайта появляется необходимость создавать отдельный шаблон для определенной ноды. По умолчанию такой возможности нет, зато можно это прикрутить самостоятельно. Как это сделать? Это можно узнать в данной статье.
В данной статье попробуем научиться очищать графики Cacti от заведомо ложных значений, полученных в результате сбоев.
5
Данный модуль просто незаменим, если на Вашем сайте реализована мультиязычность или на Вашем сайте используются панели. Multilingual Panels позволяет создавать/менять настройки панели для различных языков.
1

По умолчанию при запуске команды  composer update происходит перезапись основных файлов в корне сайта (.htaccess, robots.txt). Но зачастую такое поведение мешает работе системы (если файлы отредактированы вручную, или для формирования robots.txt используется специальный модуль)

4