From d3a0c9bfdf3710161fe66e8de28a8d23104d54f5 Mon Sep 17 00:00:00 2001 From: Philip Okugbe <16838612+Philipinho@users.noreply.github.com> Date: Mon, 5 Oct 2026 02:18:58 +0100 Subject: [PATCH] fix(base): export CSV with the active view's filter (#2541) The export button only sent the page id, so filtered views still downloaded every row. Send the view's current (including unsaved draft) filter, and bump the ee submodule for server-side support. --- apps/client/src/ee/base/components/base-toolbar.tsx | 7 +++++-- apps/client/src/ee/base/services/base-service.ts | 7 +++++-- apps/server/src/ee | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/apps/client/src/ee/base/components/base-toolbar.tsx b/apps/client/src/ee/base/components/base-toolbar.tsx index 213ce587..c10fe108 100644 --- a/apps/client/src/ee/base/components/base-toolbar.tsx +++ b/apps/client/src/ee/base/components/base-toolbar.tsx @@ -20,6 +20,7 @@ import { FilterGroup, } from "@/ee/base/types/base.types"; import { exportBaseToCsv } from "@/ee/base/services/base-service"; +import { normalizeFilter } from "@/ee/base/queries/base-row-query"; import { getApiErrorMessage } from "@/lib/api-error"; import { ViewTabs } from "@/ee/base/components/views/view-tabs"; import { ViewSortConfigPopover } from "@/ee/base/components/views/view-sort-config"; @@ -69,11 +70,13 @@ export function BaseToolbar({ const isKanban = activeView?.type === "kanban"; + const viewFilter = activeView?.config?.filter; + const handleExport = useCallback(async () => { if (exporting) return; setExporting(true); try { - await exportBaseToCsv(base.id); + await exportBaseToCsv(base.id, normalizeFilter(viewFilter)); } catch (err) { notifications.show({ color: "red", @@ -82,7 +85,7 @@ export function BaseToolbar({ } finally { setExporting(false); } - }, [base.id, exporting, t]); + }, [base.id, exporting, t, viewFilter]); const openToolbar = useCallback((panel: "sort" | "filter" | "properties") => { setSortOpened(panel === "sort" ? (v) => !v : false); diff --git a/apps/client/src/ee/base/services/base-service.ts b/apps/client/src/ee/base/services/base-service.ts index dfe99833..6dc7e1ac 100644 --- a/apps/client/src/ee/base/services/base-service.ts +++ b/apps/client/src/ee/base/services/base-service.ts @@ -57,10 +57,13 @@ export async function convertPageToBase( return req.data; } -export async function exportBaseToCsv(pageId: string): Promise { +export async function exportBaseToCsv( + pageId: string, + filter?: FilterNode, +): Promise { const req = await api.post( "/bases/export-csv", - { pageId }, + { pageId, filter }, { responseType: "blob" }, ); diff --git a/apps/server/src/ee b/apps/server/src/ee index 8190e218..d6260785 160000 --- a/apps/server/src/ee +++ b/apps/server/src/ee @@ -1 +1 @@ -Subproject commit 8190e2182cbbcc5e291217a13147fcd246ede3fe +Subproject commit d6260785de583ddb85109802c92499eb9c21b8f0