cool-menu
v2.0.2
Published
Multi level mobile menu
Downloads
9
Maintainers
Readme
Multi-level mobile menu
Простое многоуровневое мобильное меню.
Установка
npm install cool-menu
или подключение в html
<srcipt src="path-to/cool-menu.js"></script>
Использование
import CoolMenu from 'cool-menu'; // Если используется бандлер
const coolMenu = new CoolMenu({
source: [
{
container : document.querySelector('.catalog-navigation__dropdown > ul'),
selectorTitle: '.catalog-menu__link',
selectorList : '.catalog-menu',
group : {
title : 'Каталог',
link : '#',
customItemClass: 'cool-menu-group-item',
customLinkClass: 'cool-menu-group-link',
},
},
document.querySelector('#menu > ul.menu')
],
button: document.querySelector('.menu-button'),
});
coolMenu.create();
Источник данных может задаваться как ссылка на элемент UL на странице или как объект с дополнительными параметрами.
Поля объекта:
| Option | Type | Default | Description
|:---|:---|:---|:---|
| container
| HTMLElement, null | null
| Источник данных для меню
| selectorTitle
| String | 'a'
| Селектор для поиска заголовка пункта меню
| selectorList
| String | 'ul'
| Селектор для поиска вложенного списка пункта меню
| group
| object, null| null
| Параметры группировки
Отдельные источники меню можно сгруппировать, оформив их как подменю. Параметры группировки:
| Option | Type | Default | Description
|:---|:---|:---|:---|
| group.title
| String | ''
| Заголовок пункта меню
| group.link
| String | '#'
| Ссылка пункта меню
| group.customItemClass
| String | ''
| Класс, который буден дописан к этому пункту
| group.customLinkClass
| String | ''
| Класс, который буден дописан к ссылке этого пункта
Стили следует подключить отдельно
@import './node_modules/cool-menu/cool-menu.scss';
В стилях доступно переопределение следующих переменных:
$cool-menu-z-index: 9999 !default;
$cool-menu-width: 320px !default;
$cool-menu-color: #475577 !default;
$cool-menu-clip-body-when-opened: false !default;
Опции
В качестве источника данных используется готовая разметка на странице, построенная на списках UL/OL. В параметр source
передается массив DOM-элементов.
| Option | Default | Description
|:---|:---|:---|
| source
| null
| Источник данных для меню
| button
| null
| Кнопка переключения меню
| container
| document.body
| Контейнер, в котором будет рендерится меню
| width
| 320
| Максимальная ширина меню
| delimiter
| false
| Не используется
| headerText
| 'Menu'
| Заголовок меню
| rootClass
| 'cool-menu'
| CSS-класс
| stateOpenClass
| 'cool-menu_open'
| CSS-класс
| scrollPaneClass
| 'cool-menu__scroll-pane'
| CSS-класс
| closerClass
| 'cool-menu__closer'
| CSS-класс
| headerClass
| 'cool-menu__header'
| CSS-класс
| headerInnerClass
| 'cool-menu__header-in'
| CSS-класс
| headerActiveClass
| 'cool-menu__header_active'
| CSS-класс
| menuClass
| 'cool-menu__menu'
| CSS-класс
| menuItemClass
| 'cool-menu__item'
| CSS-класс
| menuLinkClass
| 'cool-menu__link'
| CSS-класс
| menuNestedClass
| 'cool-menu__nested'
| CSS-класс
| backdropClass
| 'cool-menu-backdrop'
| CSS-класс
| buttonOpenClass
| 'open'
| CSS-класс
| bodyOpenClass
| 'is-open-cool-menu'
| CSS-класс
| onShow
| null
| Коллбэк на открытие меню
| onClose
| null
| Коллбэк на закрытие меню
Публичные методы
| Method | Description
|:---|:---|
| create()
| Создать меню.
| toggleMenu(state)
| Переключение отображения меню. Boolean параметр: true — показать меню, false — скрыть меню.