2.0.2 • Published 4 years ago

cool-menu v2.0.2

Weekly downloads
3
License
MIT
Repository
github
Last release
4 years ago

Multi-level mobile menu

Простое многоуровневое мобильное меню.

Скриншот Скриншот2

Установка

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 на странице или как объект с дополнительными параметрами.

Поля объекта:

OptionTypeDefaultDescription
containerHTMLElement, nullnullИсточник данных для меню
selectorTitleString'a'Селектор для поиска заголовка пункта меню
selectorListString'ul'Селектор для поиска вложенного списка пункта меню
groupobject, nullnullПараметры группировки

Отдельные источники меню можно сгруппировать, оформив их как подменю. Параметры группировки:

OptionTypeDefaultDescription
group.titleString''Заголовок пункта меню
group.linkString'#'Ссылка пункта меню
group.customItemClassString''Класс, который буден дописан к этому пункту
group.customLinkClassString''Класс, который буден дописан к ссылке этого пункта

Стили следует подключить отдельно

@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-элементов.

OptionDefaultDescription
sourcenullИсточник данных для меню
buttonnullКнопка переключения меню
containerdocument.bodyКонтейнер, в котором будет рендерится меню
width320Максимальная ширина меню
delimiterfalseНе используется
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-класс
onShownullКоллбэк на открытие меню
onClosenullКоллбэк на закрытие меню

Публичные методы

MethodDescription
create()Создать меню.
toggleMenu(state)Переключение отображения меню. Boolean параметр: true — показать меню, false — скрыть меню.