fix(lampa): add DOM fallback for left menu item

This commit is contained in:
OpenClaw Assistant
2026-03-03 11:39:50 +03:00
parent 693224d8eb
commit 3708bd7381

View File

@@ -213,11 +213,46 @@
log('UI mounted');
}
function injectLeftMenuDomFallback() {
try {
if (qs('#p365x-left-menu-item')) return true;
var host = qs('.menu .menu__list') || qs('.menu__list') || qs('.menu .menu__body') || qs('.menu');
if (!host) return false;
var item = ce('div', 'menu__item selector');
item.id = 'p365x-left-menu-item';
item.setAttribute('data-action', 'p365x');
item.innerHTML = '' +
'<div class="menu__ico">' +
'<svg width="24" height="24" viewBox="0 0 64 64" xmlns="http://www.w3.org/2000/svg">' +
'<circle cx="32" cy="32" r="30" fill="currentColor" opacity="0.18"></circle>' +
'<text x="32" y="39" text-anchor="middle" font-size="20" fill="currentColor" font-family="sans-serif">P</text>' +
'</svg>' +
'</div>' +
'<div class="menu__text">P365X</div>';
item.addEventListener('click', function (e) {
e.preventDefault();
e.stopPropagation();
openPanel();
});
host.appendChild(item);
log('Left menu entry injected via DOM fallback');
return true;
} catch (e) {
log('DOM fallback menu error: ' + (e && e.message ? e.message : e));
return false;
}
}
function registerLeftMenuEntry() {
try {
if (!window.Lampa) return;
// Основной путь: пункт в левом меню
var added = false;
if (Lampa.Menu && typeof Lampa.Menu.add === 'function') {
Lampa.Menu.add({
title: 'P365X',
@@ -228,9 +263,17 @@
action: function () { openPanel(); }
});
log('Left menu entry registered via Lampa.Menu.add');
added = true;
}
// Доп. фолбэк: принудительная вставка в DOM левого меню
if (!added) {
injectLeftMenuDomFallback();
// повторная попытка, т.к. меню иногда рисуется позже
setTimeout(injectLeftMenuDomFallback, 1200);
setTimeout(injectLeftMenuDomFallback, 3000);
}
// Фолбэк: оставим кнопку в настройках, если API меню недоступно
if (Lampa.SettingsApi && typeof Lampa.SettingsApi.addParam === 'function') {
Lampa.SettingsApi.addParam({
component: 'interface',