You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/07/30 17:29:17 UTC
(superset) branch master updated: fix(embedded): respect show_filters URL param in standalone report mode (#42307)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 0fa176c1b28 fix(embedded): respect show_filters URL param in standalone report mode (#42307)
0fa176c1b28 is described below
commit 0fa176c1b281b573a51b7924e7a3fb6137d4451f
Author: Evan Rusackas <ev...@preset.io>
AuthorDate: Thu Jul 30 10:29:11 2026 -0700
fix(embedded): respect show_filters URL param in standalone report mode (#42307)
---
.../DashboardBuilder/DashboardBuilder.test.tsx | 67 ++++++++++++++++++++++
.../DashboardBuilder/DashboardBuilder.tsx | 16 ++++--
2 files changed, 79 insertions(+), 4 deletions(-)
diff --git a/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.test.tsx b/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.test.tsx
index 68127e583ea..ef98369be1d 100644
--- a/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.test.tsx
+++ b/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.test.tsx
@@ -566,6 +566,73 @@ describe('DashboardBuilder', () => {
expect(queryByTestId('dashboard-filters-panel')).not.toBeInTheDocument();
});
+
+ test('should hide the vertical filter bar in report mode (?standalone=3)', () => {
+ const originalHref = window.location.href;
+ window.history.replaceState({}, '', '/?standalone=3');
+ jest.spyOn(useNativeFiltersModule, 'useNativeFilters').mockReturnValue({
+ showDashboard: true,
+ missingInitialFilters: [],
+ dashboardFiltersOpen: true,
+ toggleDashboardFiltersOpen: jest.fn(),
+ nativeFiltersEnabled: true,
+ });
+ try {
+ const { getByTestId } = setup();
+ expect(getByTestId('dashboard-filters-panel')).toHaveStyleRule(
+ 'display',
+ 'none',
+ );
+ } finally {
+ window.history.replaceState({}, '', originalHref);
+ }
+ });
+
+ test('should reveal the vertical filter bar in report mode when embedded ?show_filters=true is set (issue #30630)', () => {
+ // Regression test for #30630: embedded dashboards use ?standalone=3 to hide
+ // the title/tabs/nav, but that also forced isReport=true, which unconditionally
+ // hid the filter bar even when the Embedded SDK's dashboardUiConfig.filters.visible
+ // (mapped to the show_filters URL param) explicitly asked for filters to show.
+ const originalHref = window.location.href;
+ window.history.replaceState({}, '', '/?standalone=3&show_filters=true');
+ jest.spyOn(useNativeFiltersModule, 'useNativeFilters').mockReturnValue({
+ showDashboard: true,
+ missingInitialFilters: [],
+ dashboardFiltersOpen: true,
+ toggleDashboardFiltersOpen: jest.fn(),
+ nativeFiltersEnabled: true,
+ });
+ try {
+ const { getByTestId } = setup();
+ expect(getByTestId('dashboard-filters-panel')).not.toHaveStyleRule(
+ 'display',
+ 'none',
+ );
+ } finally {
+ window.history.replaceState({}, '', originalHref);
+ }
+ });
+
+ test('should keep the filter bar hidden in report mode when ?show_filters=false is set', () => {
+ const originalHref = window.location.href;
+ window.history.replaceState({}, '', '/?standalone=3&show_filters=false');
+ jest.spyOn(useNativeFiltersModule, 'useNativeFilters').mockReturnValue({
+ showDashboard: true,
+ missingInitialFilters: [],
+ dashboardFiltersOpen: true,
+ toggleDashboardFiltersOpen: jest.fn(),
+ nativeFiltersEnabled: true,
+ });
+ try {
+ const { getByTestId } = setup();
+ expect(getByTestId('dashboard-filters-panel')).toHaveStyleRule(
+ 'display',
+ 'none',
+ );
+ } finally {
+ window.history.replaceState({}, '', originalHref);
+ }
+ });
});
test('should render ParentSize wrapper with height 100% for tabs', async () => {
diff --git a/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx b/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx
index 8b4c9f9ad9f..a8a0e3c6438 100644
--- a/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx
+++ b/superset-frontend/src/dashboard/components/DashboardBuilder/DashboardBuilder.tsx
@@ -427,6 +427,14 @@ const DashboardBuilder = () => {
: undefined;
const standaloneMode = getUrlParam(URL_PARAMS.standalone);
const isReport = standaloneMode === DashboardStandaloneMode.Report;
+ // Report mode (standalone=3) hides the filter bar by default, since it's used
+ // for one-shot screenshot renders (email reports, thumbnails). Embedded SDK
+ // consumers also use standalone=3 to hide the title/tabs/nav, but may still
+ // want filters visible via dashboardUiConfig.filters.visible, which maps to
+ // the show_filters URL param. An explicit show_filters=true overrides the
+ // report-mode default so the filter bar stays visible.
+ const showFiltersUrlParam = getUrlParam(URL_PARAMS.showFilters);
+ const hideFilterBar = isReport && showFiltersUrlParam !== true;
const hideDashboardHeader =
uiConfig.hideTitle ||
standaloneMode === DashboardStandaloneMode.HideNavAndTitle ||
@@ -528,12 +536,12 @@ const DashboardBuilder = () => {
filterBarOrientation === FilterBarOrientation.Horizontal && (
<FilterBar
orientation={FilterBarOrientation.Horizontal}
- hidden={isReport}
+ hidden={hideFilterBar}
/>
)}
</>
),
- [hideDashboardHeader, showFilterBar, filterBarOrientation, isReport],
+ [hideDashboardHeader, showFilterBar, filterBarOrientation, hideFilterBar],
);
const renderDraggableContent = useCallback(
@@ -595,7 +603,7 @@ const DashboardBuilder = () => {
return (
<FiltersPanel
width={filterBarWidth}
- hidden={isReport}
+ hidden={hideFilterBar}
data-test="dashboard-filters-panel"
>
<StickyPanel ref={containerRef} width={filterBarWidth}>
@@ -620,7 +628,7 @@ const DashboardBuilder = () => {
toggleDashboardFiltersOpen,
filterBarHeight,
filterBarOffset,
- isReport,
+ hideFilterBar,
],
);