fix(grid): keep pending new rows visible under column filters

This commit is contained in:
二丫讲梵 authored and GitHub committed 2026-09-15 23:52:37 +08:00
1 parent 8dab022452
commit 2d5fc80c91
2 files changed
+16 -2

No files matched your search

@@ -1315,7 +1315,6 @@ const {
applyLocalFilter,
applyTypedLocalFilterValue,
clearLocalFilter,
rowMatchesLocalColumnFilters,
} = localColumnFilterRuntime;
function guardHeaderPanelDismiss() {
@@ -4405,7 +4404,9 @@ const displayRowRefs = computed<DisplayRowRef[]>(() => {
} else {
const newIndex = entry.newIndex;
const row = newRows.value[newIndex];
if (!row || !rowMatchesLocalColumnFilters(row)) continue;
// Pending rows must remain visible while a column filter is active so
// users can fill in and review newly inserted records before saving.
if (!row) continue;
const status: RowStatus = "new";
if (!matchesRowStatusFilter(status, rowStatusFilter.value)) continue;
refs.push({
@@ -0,0 +1,13 @@
import { readFileSync } from "node:fs";
import { describe, expect, it } from "vitest";
const dataGridSource = readFileSync(new URL("../DataGrid.vue", import.meta.url), "utf8");
describe("DataGrid pending row visibility under local column filters", () => {
it("keeps pending new rows visible while a local column filter is active", () => {
// The pending-row branch of displayRowRefs must not consult the local
// column filter matchers; only the row status filter applies (#9201).
expect(dataGridSource).toMatch(/const row = newRows\.value\[newIndex\];[\s\S]{0,200}?if \(!row\) continue;/);
expect(dataGridSource).not.toContain("!rowMatchesLocalColumnFilters(row)");
});
});