Skip to content

Commit 4e1e6a0

Browse files
refactor: treat empty expandable arrays as non expandable (fixes SFKUI-7728) (#1094)
1 parent aa5937d commit 4e1e6a0

File tree

2 files changed

+36
-1
lines changed

2 files changed

+36
-1
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { setItemIdentifiers } from "@fkui/vue";
2+
import { getMetaRows } from "./get-meta-rows";
3+
4+
const rows = [
5+
{
6+
name: "A",
7+
},
8+
{
9+
name: "B",
10+
expandable: [],
11+
},
12+
{
13+
name: "C",
14+
expandable: [
15+
{
16+
name: "C1",
17+
},
18+
],
19+
},
20+
];
21+
22+
it("should only mark rows with non-empty children as expandable", () => {
23+
const keyedRows = setItemIdentifiers(rows, "name", "expandable");
24+
const result = getMetaRows(keyedRows, new Set(), "expandable");
25+
26+
expect(result).toHaveLength(3);
27+
28+
expect(result[0].isExpandable).toBe(false);
29+
30+
expect(result[1].isExpandable).toBe(false);
31+
32+
expect(result[2].isExpandable).toBe(true);
33+
});

packages/vue-labs/src/components/FTable/get-meta-rows.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ export function getMetaRows<T>(
3030
walk(keyedRows, expandableAttribute, (row, level) => {
3131
const key = getItemIdentifier(row);
3232
const isExpandable = Boolean(
33-
expandableAttribute && row[expandableAttribute],
33+
expandableAttribute &&
34+
Array.isArray(row[expandableAttribute]) &&
35+
row[expandableAttribute].length > 0,
3436
);
3537
const isExpanded = isExpandable && expandedKeys.has(key);
3638

0 commit comments

Comments
 (0)