fix: use sprite-folder icon (exists in bylampa); guard against duplicate menu item

This commit is contained in:
Hermes committed 2026-08-08 04:06:24 +02:00
1 parent 679d7116ab
commit 9cf5e8055a
1 file changed
+10 -7
+10 -7
View File
@@ -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();
}