[v9.5.x] Dashboards: Prevent template variables from resolving twice (#66452)

Dashboards: Prevent template variables from resolving twice (#66372)

(cherry picked from commit 38ee910e39)

Co-authored-by: kay delaney <45561153+kaydelaney@users.noreply.github.com>
This commit is contained in:
Grot (@grafanabot)
2023-04-13 14:08:40 +03:00
committed by GitHub
co-authored by kay delaney
parent 0f4a76c9de
commit d40a837d5c
2 changed files with 23 additions and 21 deletions
@@ -47,31 +47,32 @@ export function AppChrome({ children }: Props) {
});
// Chromeless routes are without topNav, mega menu, search & command palette
if (state.chromeless) {
return (
<main className="main-view">
<div className={contentClass}>{children}</div>
</main>
);
}
// We check chromeless twice here instead of having a separate path so {children}
// doesn't get re-mounted when chromeless goes from true to false.
return (
<main className="main-view">
<div className={cx(styles.topNav)}>
{!searchBarHidden && <TopSearchBar />}
<NavToolbar
searchBarHidden={searchBarHidden}
sectionNav={state.sectionNav}
pageNav={state.pageNav}
actions={state.actions}
onToggleSearchBar={chrome.onToggleSearchBar}
onToggleMegaMenu={chrome.onToggleMegaMenu}
onToggleKioskMode={chrome.onToggleKioskMode}
/>
</div>
{!state.chromeless && (
<div className={cx(styles.topNav)}>
{!searchBarHidden && <TopSearchBar />}
<NavToolbar
searchBarHidden={searchBarHidden}
sectionNav={state.sectionNav}
pageNav={state.pageNav}
actions={state.actions}
onToggleSearchBar={chrome.onToggleSearchBar}
onToggleMegaMenu={chrome.onToggleMegaMenu}
onToggleKioskMode={chrome.onToggleKioskMode}
/>
</div>
)}
<div className={contentClass}>{children}</div>
<MegaMenu searchBarHidden={searchBarHidden} onClose={() => chrome.setMegaMenu(false)} />
<CommandPalette />
{!state.chromeless && (
<>
<MegaMenu searchBarHidden={searchBarHidden} onClose={() => chrome.setMegaMenu(false)} />
<CommandPalette />
</>
)}
</main>
);
}
@@ -73,6 +73,7 @@ export class AppChromeService {
// Some updates can have new instance of sectionNav or pageNav but with same values
if (newState.sectionNav !== current.sectionNav || newState.pageNav !== current.pageNav) {
if (
newState.actions === current.actions &&
navItemsAreTheSame(newState.sectionNav, current.sectionNav) &&
navItemsAreTheSame(newState.pageNav, current.pageNav)
) {