fix: menu item via official Lampa pattern ($('.menu .menu__list').eq(0).append), single call
This commit is contained in:
1 parent
5a3b5c0787
commit
6dc212de25
1 file changed
+11
-20
@@ -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);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user