Вступление #
Чтобы создать выпадающее меню, к триггеру необходимо добавить класс .js-dropdown-trigger и атрибут data-dropdown-menu с указанием id выпадающего меню.
Выпадающее меню реализовано на базе Headless Tippy.
Установка #
Пример разметки и инициализации выпадающего меню.
<button
class="my-dropdown-trigger js-dropdown-trigger"
type="button"
data-dropdown-menu="my-dropdown-menu"
>
Вызвать выпадающее меню
</button>
<div
id="my-dropdown-menu"
class="dropdown-menu"
>
<nav>
<a href="">Брутали́зм</a>
<a href="">Деконструктиви́зм</a>
<a href="">Архитектурный модернизм</a>
</nav>
</div>
// настройки Headless Tippy(https://atomiks.github.io/tippyjs/v6/all-props/)
const options = {
'trigger': 'mouseenter focus',
'placement': 'top',
};
BasicDropdown.init('.my-dropdown-trigger', options);
BasicDropdown.init(document.querySelector('.my-dropdown-trigger'), options);
BasicDropdown.init(document.querySelectorAll('.my-dropdown-trigger'), options);
// или
BasicDropdown.init(); // по умолчанию инициaлизирует элементы с классом .js-dropdown-trigger и с дата-атрибутом data-dropdown-options
Конфигурация #
Настройки, заданные с использованием data-атрибутов.
data-dropdown-options #
В значениях указываются параметры для гибкой настройки выпадающего меню, с ними можно ознакомиться на странице официальной документации Tippy.js.
<button
class="my-dropdown-trigger js-dropdown-trigger"
type="button"
data-dropdown-menu="my-dropdown-menu"
data-dropdown-options='{"trigger": "mouseenter focus", "placement": "top"}'
>
Вызвать выпадающий список
</button>
<div
id="my-dropdown-menu"
class="dropdown-menu"
>
<nav>
<a href="">Брутали́зм</a>
<a href="">Деконструктиви́зм</a>
<a href="">Архитектурный модернизм</a>
</nav>
</div>
Методы #
show() #
Показывает выпадающее меню.
// принимает значение типа Object или String
// в значениях указывается триггер выпадающего меню
BasicDropdown.show('.my-dropdown-trigger');
hide() #
Скрывает выпадающее меню.
// принимает значение типа Object или String
// в значениях указывается триггер выпадающего меню
BasicDropdown.hide('.my-dropdown-trigger');
Экземпляр #
У каждого инициализированного элемента есть свой экземпляр.
const myDropdownTrigger = document.querySelector(".my-dropdown-trigger")
console.log(myDropdownTrigger.BasicDropdown) // пример экземпляра
В настоящее время экземпляр поддерживает все методы.
Прослушивание событий #
Можно прослушать события элемента и получить необходимые параметры.
dropdown:change #
Срабатывает при переключении видимости выпадающего меню.
Параметры:
| Название | Тип | Описание |
|---|---|---|
event.detail.trigger |
object |
Триггер выпадающего меню. |
event.detail.menu |
object |
Выпадающее меню. |
event.detail.show |
boolean |
Статус видимости меню(виден: true, скрыт: false). |
const myDropdownTrigger = document.querySelector('.my-dropdown-trigger');
// Событие навешивается на триггер выпадающего меню.
myDropdownTrigger.addEventListener('dropdown:change', function(event) {
console.log(event.detail); // параметры
}, false);