fix(grid): keep pending new rows visible under column filters
This commit is contained in:
2 files changed
+16
-2
No files matched your search
@@ -1315,7 +1315,6 @@ const {
|
|||||||
applyLocalFilter,
|
applyLocalFilter,
|
||||||
applyTypedLocalFilterValue,
|
applyTypedLocalFilterValue,
|
||||||
clearLocalFilter,
|
clearLocalFilter,
|
||||||
rowMatchesLocalColumnFilters,
|
|
||||||
} = localColumnFilterRuntime;
|
} = localColumnFilterRuntime;
|
||||||
|
|
||||||
function guardHeaderPanelDismiss() {
|
function guardHeaderPanelDismiss() {
|
||||||
@@ -4405,7 +4404,9 @@ const displayRowRefs = computed<DisplayRowRef[]>(() => {
|
|||||||
} else {
|
} else {
|
||||||
const newIndex = entry.newIndex;
|
const newIndex = entry.newIndex;
|
||||||
const row = newRows.value[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";
|
const status: RowStatus = "new";
|
||||||
if (!matchesRowStatusFilter(status, rowStatusFilter.value)) continue;
|
if (!matchesRowStatusFilter(status, rowStatusFilter.value)) continue;
|
||||||
refs.push({
|
refs.push({
|
||||||
|
|||||||
+13
@@ -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)");
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in new issue
Block a user