diff --git a/src/DataTable/DataTable.svelte b/src/DataTable/DataTable.svelte index 6272949d..b30610d6 100644 --- a/src/DataTable/DataTable.svelte +++ b/src/DataTable/DataTable.svelte @@ -195,14 +195,18 @@ $: if (radio || batchSelection) selectable = true; $: tableSortable.set(sortable); $: headerKeys = headers.map(({ key }) => key); - $: $tableRows = rows.map((row) => ({ - ...row, - cells: headerKeys.map((key, index) => ({ - key, - value: resolvePath(row, key), - display: headers[index].display, - })), - })); + $: tableCellsByRowId = rows.reduce( + (rows, row) => ({ + ...rows, + [row.id]: headerKeys.map((key, index) => ({ + key, + value: resolvePath(row, key), + display: headers[index].display, + })), + }), + {} + ); + $: $tableRows = rows; $: sortedRows = [...$tableRows]; $: ascending = $sortHeader.sortDirection === "ascending"; $: sortKey = $sortHeader.key; @@ -464,7 +468,7 @@ {/if} {/if} - {#each row.cells as cell, j (cell.key)} + {#each tableCellsByRowId[row.id] as cell, j (cell.key)} {#if headers[j].empty} { return Object.entries(row) - .filter(([key]) => !["cells", "id"].includes(key)) + .filter(([key]) => key !== "id") .some(([key, _value]) => { if (typeof _value === "string" || typeof _value === "number") { return (_value + "")