Предотвращение закрытия меню MDC после нажатия первого пункта меню - PullRequest
0 голосов
/ 06 июля 2018

Мы используем компонент меню MDC. Я ищу способ не закрывать меню при нажатии на первый пункт меню.

Я попытался применить класс к mdc-list-item и указать курсор как auto, но он не работает.

.menu-do-not-close {
   cursor: auto !important;
}

ниже приведен пример скрипки

https://jsfiddle.net/phani25485/Lt6q2gxa/2/

Не могли бы вы дать некоторые указания о том, как этого добиться.

1 Ответ

0 голосов
/ 13 июля 2018

Вы можете остановить закрытие меню после выбора определенного элемента, вызвав event.stopPropagation() для события щелчка mdc-list-item, когда для цели события назначен определенный класс. Вам нужно будет добавить дополнительный код для обработки события щелчка по элементу списка, поскольку это препятствует обычной обработке щелчков меню MDC.

const menu = mdc.menu.MDCMenu.attachTo(document.querySelector('.mdc-menu'));
document.querySelector('#menu-button').addEventListener('click', () => {
  menu.open = !menu.open;
});

//Prevent menu close when option with 'prevent-menu-close' class clicked
const options = document.querySelectorAll('.mdc-list-item');
for (let option of options) {
  option.addEventListener('click', (event) => {
    let prevent = event.currentTarget.classList.contains('prevent-menu-close');
    if (prevent) {
      event.stopPropagation();
      // handle 'prevent-menu-close' list item click event
    }
  });
}
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Material Select Field</title>
  <link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons">
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700">
  <link href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css" rel="stylesheet">
  <script src="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.js"></script>
</head>

<body>

  <div id="demo-menu" class="mdc-menu-surface--anchor">
    <button class="mdc-button" id="menu-button">
      <span class="mdc-button__label">Open Menu</span>
    </button>
    <div class="mdc-menu mdc-menu-surface">
      <ul class="mdc-list" role="menu" aria-hidden="true" aria-orientation="vertical" tabindex="-1">
        <li class="mdc-list-item prevent-menu-close" role="menuitem">
          <span class="mdc-list-item__text">Prevent Close</span>
        </li>
        <li class="mdc-list-item" role="menuitem">
          <span class="mdc-list-item__text">Another Menu Item</span>
        </li>
      </ul>
    </div>
  </div>

</body>

</html>
...