fix(#1471 followup): re-inject Customizer/Search/Favorites mirrors when More sheet opens (#1476)

**Problem:** Operator reports Customizer link missing from the
bottom-nav More sheet on prod (v3.8.2). bottom-nav.js builds the sheet
lazily on first More-click. mobile-page-actions.js calls
addMissingMoreSheetItems() at DOMContentLoaded + retries 10×500ms — so
if operator doesn't tap More within 5s of page load, mirrors never
appear.

**Root cause:** The earlier polish round (commit 70a570c6 within #1471)
dropped the click-listener that re-attempted injection. Init-time retry
alone isn't enough; bottom-nav builds the sheet ON DEMAND.

**Fix:** Re-add the catch-all click delegate that fires
addMissingMoreSheetItems on any More button click (with
belt-and-suspenders 50ms + 250ms timeouts to handle slow builds).

Hot-deploy candidate (JS-only).

Co-authored-by: openclaw-bot <bot@openclaw.local>
This commit is contained in:
Kpa-clawbot
2026-05-28 21:08:03 -07:00
committed by GitHub
parent f0da38f435
commit 497e419f83
+16
View File
@@ -75,6 +75,22 @@
window.addEventListener('hashchange', syncForRoute);
window.addEventListener('resize', syncForRoute);
/* #1471 followup: also re-attempt sheet injection on More-button click,
* in case the page sat idle past the 5s retry window. The bottom-nav.js
* sheet is built lazily on first More-click, and addMissingMoreSheetItems
* may have given up before then. Catch-all delegate listener handles this
* AND survives any bottom-nav.js rebuild path. */
document.addEventListener('click', function (e) {
var t = e.target;
if (!t) return;
// Trigger whether operator clicked More button or any descendant
var moreBtn = t.closest && t.closest('[data-bottom-nav-more], button');
if (moreBtn && /more/i.test(moreBtn.textContent || '')) {
setTimeout(addMissingMoreSheetItems, 50);
setTimeout(addMissingMoreSheetItems, 250); // belt-and-suspenders for slow builds
}
}, true);
/* #1461 #7: on mobile, packets-list group-header expand is a UX dead-end
* (we hid the chevron so there's no way to collapse). Intercept those
* clicks and force them to the single-select code path instead — the