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


161

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

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

4

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

6
1
По умолчанию модуль Node clone добавляет свою ссылку в разделе действий (MENU_LOCAL_ACTION). Что бы перенести их в раздел вкладок (tabs) нужно добавить в свой модуль небольшой hook
1
В статье представлены несколько способов запуска переиндексации отдельных элементов индекса (можно применять в зависимости от поставленной задачи и исходных данных). В них рассматривается переиндексация элементов во всех индексах, которые включены на сайте. Если нужна переиндексация только в определенном, можно убрать ту часть, где идет загрузка индексов и использовать какой-то определенный объект индекса.
1
По умолчанию в drupal commerce через правила Вы можете работать с полем цена у сущности commerce_product. А вот если Вам необходимо достучаться до поля цена у заказа, то тут будут проблемы. Покажу, как научить правила работать с ценой у заказа.
2