fix: use sprite-folder icon (exists in bylampa); guard against duplicate menu item
This commit is contained in:
1 parent
679d7116ab
commit
9cf5e8055a
1 file changed
+10
-7
@@ -107,18 +107,21 @@
|
||||
}
|
||||
|
||||
// ---- Пункт меню ----
|
||||
// bylampa строит главное меню из массива menu_items и ПЕРЕД отрисовкой
|
||||
// шлёт событие 'menu:start' с body = jQuery-объект меню (.menu__list внутри).
|
||||
// Правильный способ добавить пункт — append'ить <li> в .menu__list при каждой сборке.
|
||||
// bylampa строит главное меню из menu_items и ПЕРЕД отрисовкой шлёт
|
||||
// событие 'menu:start' с body = jQuery-объект меню (.menu__list внутри).
|
||||
// Добавляем <li class="menu__item"> в .menu__list. Защита от дублей по data-action.
|
||||
var added = false;
|
||||
function addMenuItem() {
|
||||
var list = $('.menu__list');
|
||||
if (!list.length) return;
|
||||
if (list.find('[data-action="' + PLUGIN.name + '"]').length) return; // уже добавлен
|
||||
if (list.find('[data-action="' + PLUGIN.name + '"]').length) return; // уже есть в этом меню
|
||||
if (added) return; // уже добавляли когда-либо
|
||||
added = true;
|
||||
|
||||
var item = $(
|
||||
'<li class="menu__item selector" data-action="' + PLUGIN.name + '">' +
|
||||
'<div class="menu__ico">' +
|
||||
'<svg class="sprite-archive"><use xlink:href="#sprite-archive"></use></svg>' +
|
||||
'<svg class="sprite-folder"><use xlink:href="#sprite-folder"></use></svg>' +
|
||||
'</div>' +
|
||||
'<div class="menu__text">' + PLUGIN.title + '</div>' +
|
||||
'</li>'
|
||||
@@ -136,13 +139,13 @@
|
||||
}
|
||||
|
||||
function start() {
|
||||
// 1) подписываемся на сборку меню (срабатывает при каждом открытии)
|
||||
// подписываемся на сборку меню (при каждом открытии меню)
|
||||
Lampa.Listener.follow('menu', function (e) {
|
||||
if (e.type === 'start') {
|
||||
setTimeout(addMenuItem, 50);
|
||||
}
|
||||
});
|
||||
// 2) если меню уже отрисовано в DOM — добавляем сразу
|
||||
// если меню уже отрисовано — добавляем сразу (один раз)
|
||||
addMenuItem();
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user