@moontra/moonui-pro 2.3.7 → 2.3.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.mjs +11 -6
- package/package.json +1 -1
- package/src/components/data-table/index.tsx +18 -8
package/dist/index.mjs
CHANGED
|
@@ -52210,8 +52210,9 @@ function DataTable({
|
|
|
52210
52210
|
const [internalExpandedRows, setInternalExpandedRows] = t__default.useState(/* @__PURE__ */ new Set());
|
|
52211
52211
|
const expandedRows = controlledExpandedRows || internalExpandedRows;
|
|
52212
52212
|
const actualPageSize = defaultPageSize || pageSize;
|
|
52213
|
+
const stableData = t__default.useMemo(() => data, [data]);
|
|
52213
52214
|
const table = useReactTable({
|
|
52214
|
-
data,
|
|
52215
|
+
data: stableData,
|
|
52215
52216
|
columns,
|
|
52216
52217
|
onSortingChange: onSortingChange !== void 0 ? onSortingChange : setSorting,
|
|
52217
52218
|
onColumnFiltersChange: onColumnFiltersChange !== void 0 ? onColumnFiltersChange : setColumnFilters,
|
|
@@ -52244,6 +52245,12 @@ function DataTable({
|
|
|
52244
52245
|
onRowSelect(selectedRows);
|
|
52245
52246
|
}
|
|
52246
52247
|
}, [rowSelection, onRowSelect, selectable, table]);
|
|
52248
|
+
const tableState = table.getState();
|
|
52249
|
+
const rows = t__default.useMemo(
|
|
52250
|
+
() => table.getRowModel().rows,
|
|
52251
|
+
// Only recalculate when data or filtering/sorting changes, not on expand/collapse
|
|
52252
|
+
[stableData, tableState.sorting, tableState.columnFilters, tableState.globalFilter, tableState.pagination.pageIndex, tableState.pagination.pageSize]
|
|
52253
|
+
);
|
|
52247
52254
|
({
|
|
52248
52255
|
sorting: features.sorting !== false,
|
|
52249
52256
|
filtering: features.filtering !== false || filterable,
|
|
@@ -52326,15 +52333,13 @@ function DataTable({
|
|
|
52326
52333
|
] }) })
|
|
52327
52334
|
},
|
|
52328
52335
|
"loading"
|
|
52329
|
-
) :
|
|
52336
|
+
) : rows?.length ? /* @__PURE__ */ jsx(Fragment, { children: rows.map((row, index) => {
|
|
52330
52337
|
const rowId = row.original.id || row.id;
|
|
52331
52338
|
const isExpanded = enableExpandable && expandedRows.has(rowId);
|
|
52332
52339
|
return /* @__PURE__ */ jsxs(t__default.Fragment, { children: [
|
|
52333
52340
|
/* @__PURE__ */ jsx(
|
|
52334
|
-
|
|
52341
|
+
"tr",
|
|
52335
52342
|
{
|
|
52336
|
-
initial: false,
|
|
52337
|
-
animate: { opacity: 1 },
|
|
52338
52343
|
className: cn(
|
|
52339
52344
|
"border-b transition-colors hover:bg-muted/50",
|
|
52340
52345
|
row.getIsSelected() && "bg-muted",
|
|
@@ -52390,7 +52395,7 @@ function DataTable({
|
|
|
52390
52395
|
},
|
|
52391
52396
|
`${row.id}-expanded`
|
|
52392
52397
|
) })
|
|
52393
|
-
] },
|
|
52398
|
+
] }, rowId);
|
|
52394
52399
|
}) }) : /* @__PURE__ */ jsx(
|
|
52395
52400
|
motion.tr,
|
|
52396
52401
|
{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@moontra/moonui-pro",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.8",
|
|
4
4
|
"description": "Premium React components for MoonUI - Advanced UI library with 50+ pro components including performance, interactive, and gesture components",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.mjs",
|
|
@@ -13,6 +13,7 @@ import {
|
|
|
13
13
|
ColumnFiltersState,
|
|
14
14
|
VisibilityState,
|
|
15
15
|
OnChangeFn,
|
|
16
|
+
Row,
|
|
16
17
|
} from '@tanstack/react-table'
|
|
17
18
|
import { Button } from '../ui/button'
|
|
18
19
|
import { Input } from '../ui/input'
|
|
@@ -182,8 +183,11 @@ export function DataTable<TData, TValue>({
|
|
|
182
183
|
|
|
183
184
|
const actualPageSize = defaultPageSize || pageSize
|
|
184
185
|
|
|
186
|
+
// Memoize data to prevent unnecessary re-renders
|
|
187
|
+
const stableData = React.useMemo(() => data, [data])
|
|
188
|
+
|
|
185
189
|
const table = useReactTable({
|
|
186
|
-
data,
|
|
190
|
+
data: stableData,
|
|
187
191
|
columns,
|
|
188
192
|
onSortingChange: onSortingChange !== undefined ? onSortingChange : setSorting,
|
|
189
193
|
onColumnFiltersChange: onColumnFiltersChange !== undefined ? onColumnFiltersChange : setColumnFilters,
|
|
@@ -217,6 +221,14 @@ export function DataTable<TData, TValue>({
|
|
|
217
221
|
onRowSelect(selectedRows)
|
|
218
222
|
}
|
|
219
223
|
}, [rowSelection, onRowSelect, selectable, table])
|
|
224
|
+
|
|
225
|
+
// Memoize row model to prevent unnecessary re-renders when only expanded state changes
|
|
226
|
+
const tableState = table.getState()
|
|
227
|
+
const rows = React.useMemo(
|
|
228
|
+
() => table.getRowModel().rows,
|
|
229
|
+
// Only recalculate when data or filtering/sorting changes, not on expand/collapse
|
|
230
|
+
[stableData, tableState.sorting, tableState.columnFilters, tableState.globalFilter, tableState.pagination.pageIndex, tableState.pagination.pageSize]
|
|
231
|
+
)
|
|
220
232
|
|
|
221
233
|
// Merge features with defaults
|
|
222
234
|
const enabledFeatures = {
|
|
@@ -336,17 +348,15 @@ export function DataTable<TData, TValue>({
|
|
|
336
348
|
</div>
|
|
337
349
|
</td>
|
|
338
350
|
</motion.tr>
|
|
339
|
-
) :
|
|
351
|
+
) : rows?.length ? (
|
|
340
352
|
<>
|
|
341
|
-
{
|
|
353
|
+
{rows.map((row, index) => {
|
|
342
354
|
const rowId = (row.original as any).id || row.id
|
|
343
355
|
const isExpanded = enableExpandable && expandedRows.has(rowId)
|
|
344
356
|
|
|
345
357
|
return (
|
|
346
|
-
<React.Fragment key={
|
|
347
|
-
<
|
|
348
|
-
initial={false}
|
|
349
|
-
animate={{ opacity: 1 }}
|
|
358
|
+
<React.Fragment key={rowId}>
|
|
359
|
+
<tr
|
|
350
360
|
className={cn(
|
|
351
361
|
"border-b transition-colors hover:bg-muted/50",
|
|
352
362
|
row.getIsSelected() && "bg-muted",
|
|
@@ -358,7 +368,7 @@ export function DataTable<TData, TValue>({
|
|
|
358
368
|
{flexRender(cell.column.columnDef.cell, cell.getContext())}
|
|
359
369
|
</td>
|
|
360
370
|
))}
|
|
361
|
-
</
|
|
371
|
+
</tr>
|
|
362
372
|
|
|
363
373
|
<AnimatePresence initial={false}>
|
|
364
374
|
{isExpanded && renderSubComponent && (
|