From f49994cea74a313a50325046b3dcf2bd6a9b32f8 Mon Sep 17 00:00:00 2001 From: yumoqing Date: Sun, 31 May 2026 12:32:17 +0800 Subject: [PATCH] fix: Menu widget now triggers Router._onReplace for SPA URL tracking Menu widget's menu_clicked() was bypassing the standard _buildWidget path in bricks.js, so Router._onReplace was never called when navigating via sidebar menu items. This caused: - Browser URL not updating on menu clicks - F5 refresh not restoring the current page Added Router hook after t.add_widget(w) in menu_clicked(), matching the same pattern used in bricks.js _buildWidget. --- bricks/menu.js | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/bricks/menu.js b/bricks/menu.js index 64cf6b8..781f80d 100644 --- a/bricks/menu.js +++ b/bricks/menu.js @@ -70,11 +70,16 @@ bricks.Menu = class extends bricks.VScrollPanel { "url":opts.url } } - var w = await bricks.widgetBuild(desc, this); - if (w && ! bricks.Factory.isWidgetType(w, 'Popup')){ - t.clear_widgets(); - t.add_widget(w); - } else { + var w = await bricks.widgetBuild(desc, this); + if (w && ! bricks.Factory.isWidgetType(w, 'Popup')){ + t.clear_widgets(); + t.add_widget(w); + // Router hook: notify SPA router of menu-driven navigation + if (bricks.Router && bricks.Router._enabled + && opts.url){ + bricks.Router._onReplace(t, opts.url); + } + } else { console.log('menu_clicked():widgetBuild() failed', desc); } } else if (opts.script){