fix: menu item via official Lampa pattern ($('.menu .menu__list').eq(0).append), single call

This commit is contained in:
Hermes committed 2026-08-08 04:15:34 +02:00
1 parent 5a3b5c0787
commit 6dc212de25
1 file changed
+11 -20
+11 -20
View File
@@ -116,14 +116,12 @@
}
// ---------- Пункт меню ----------
// bylampa шлёт 'menu:start' при сборке меню (body = jQuery меню).
// Добавляем <li> в .menu__list. Защита от дублей — проверка по DOM.
// Точный паттерн из официального плагина Lampa (iptv):
// создаём <li class="menu__item selector"> и append'им в $('.menu .menu__list').eq(0)
function addMenuItem() {
var list = $('.menu__list');
if (!list.length) return;
if ($('[data-action="' + PLUGIN.name + '"]').length) return; // уже в DOM
if ($('[data-action="' + PLUGIN.name + '"]').length) return; // уже есть
var item = $(
var button = $(
'<li class="menu__item selector" data-action="' + PLUGIN.name + '">' +
'<div class="menu__ico">' +
'<svg class="sprite-folder"><use xlink:href="#sprite-folder"></use></svg>' +
@@ -131,7 +129,7 @@
'<div class="menu__text">' + PLUGIN.title + '</div>' +
'</li>'
);
item.on('hover:enter', function () {
button.on('hover:enter', function () {
Lampa.Activity.push({
url: '',
component: PLUGIN.name,
@@ -139,27 +137,20 @@
page: PLUGIN.title
});
});
list.append(item);
$('.menu .menu__list').eq(0).append(button);
Lampa.Selector.update();
}
function start() {
// единственный вход: подписка на сборку меню
Lampa.Listener.follow('menu', function (e) {
if (e.type === 'start') {
setTimeout(addMenuItem, 50);
}
});
// если меню уже собрано до загрузки плагина — ловим ready
Lampa.Listener.follow('app', function (e) {
if (e.type === 'ready') {
setTimeout(addMenuItem, 200);
}
});
addMenuItem();
}
if (window.Lampa && Lampa.Listener && Lampa.Activity) {
start();
Lampa.Listener.follow('app', function (e) {
if (e.type === 'ready') start();
});
} else {
document.addEventListener('lampa', start);
}