@tanstack/react-table 8.0.0-alpha.86 → 8.0.0-alpha.89
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/build/cjs/table-core/build/esm/index.js +102 -80
- package/build/cjs/table-core/build/esm/index.js.map +1 -1
- package/build/esm/index.js +102 -80
- package/build/esm/index.js.map +1 -1
- package/build/stats-html.html +1 -1
- package/build/stats-react.json +17 -17
- package/build/umd/index.development.js +102 -80
- package/build/umd/index.development.js.map +1 -1
- package/build/umd/index.production.js +1 -1
- package/build/umd/index.production.js.map +1 -1
- package/package.json +5 -5
|
@@ -124,7 +124,7 @@ function createColumn(instance, columnDef, depth, parent) {
|
|
|
124
124
|
throw new Error();
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
let column = {
|
|
127
|
+
let column = {
|
|
128
128
|
id: "" + id,
|
|
129
129
|
accessorFn,
|
|
130
130
|
parent: parent,
|
|
@@ -888,8 +888,12 @@ const Expanding = {
|
|
|
888
888
|
getIsAllRowsExpanded: () => {
|
|
889
889
|
const expanded = instance.getState().expanded; // If expanded is true, save some cycles and return true
|
|
890
890
|
|
|
891
|
-
if (expanded ===
|
|
892
|
-
return true;
|
|
891
|
+
if (typeof expanded === 'boolean') {
|
|
892
|
+
return expanded === true;
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
if (!Object.keys(expanded).length) {
|
|
896
|
+
return false;
|
|
893
897
|
} // If any row is not expanded, return false
|
|
894
898
|
|
|
895
899
|
|
|
@@ -2344,21 +2348,54 @@ function isRowSelected(row, selection, instance) {
|
|
|
2344
2348
|
}
|
|
2345
2349
|
|
|
2346
2350
|
const reSplitAlphaNumeric = /([0-9]+)/gm;
|
|
2347
|
-
const sortingFns = {
|
|
2348
|
-
alphanumeric,
|
|
2349
|
-
alphanumericCaseSensitive,
|
|
2350
|
-
text,
|
|
2351
|
-
textCaseSensitive,
|
|
2352
|
-
datetime,
|
|
2353
|
-
basic
|
|
2354
|
-
};
|
|
2355
2351
|
|
|
2356
|
-
|
|
2352
|
+
const alphanumeric = (rowA, rowB, columnId) => {
|
|
2357
2353
|
return compareAlphanumeric(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
|
|
2358
|
-
}
|
|
2354
|
+
};
|
|
2359
2355
|
|
|
2360
|
-
|
|
2356
|
+
const alphanumericCaseSensitive = (rowA, rowB, columnId) => {
|
|
2361
2357
|
return compareAlphanumeric(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
|
|
2358
|
+
}; // The text filter is more basic (less numeric support)
|
|
2359
|
+
// but is much faster
|
|
2360
|
+
|
|
2361
|
+
|
|
2362
|
+
const text = (rowA, rowB, columnId) => {
|
|
2363
|
+
return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
|
|
2364
|
+
}; // The text filter is more basic (less numeric support)
|
|
2365
|
+
// but is much faster
|
|
2366
|
+
|
|
2367
|
+
|
|
2368
|
+
const textCaseSensitive = (rowA, rowB, columnId) => {
|
|
2369
|
+
return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
|
|
2370
|
+
};
|
|
2371
|
+
|
|
2372
|
+
const datetime = (rowA, rowB, columnId) => {
|
|
2373
|
+
return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
|
|
2374
|
+
};
|
|
2375
|
+
|
|
2376
|
+
const basic = (rowA, rowB, columnId) => {
|
|
2377
|
+
return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));
|
|
2378
|
+
}; // Utils
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
function compareBasic(a, b) {
|
|
2382
|
+
return a === b ? 0 : a > b ? 1 : -1;
|
|
2383
|
+
}
|
|
2384
|
+
|
|
2385
|
+
function toString(a) {
|
|
2386
|
+
if (typeof a === 'number') {
|
|
2387
|
+
if (isNaN(a) || a === Infinity || a === -Infinity) {
|
|
2388
|
+
return '';
|
|
2389
|
+
}
|
|
2390
|
+
|
|
2391
|
+
return String(a);
|
|
2392
|
+
}
|
|
2393
|
+
|
|
2394
|
+
if (typeof a === 'string') {
|
|
2395
|
+
return a;
|
|
2396
|
+
}
|
|
2397
|
+
|
|
2398
|
+
return '';
|
|
2362
2399
|
} // Mixed sorting is slow, but very inclusive of many edge cases.
|
|
2363
2400
|
// It handles numbers, mixed alphanumeric combinations, and even
|
|
2364
2401
|
// null, undefined, and Infinity
|
|
@@ -2405,48 +2442,17 @@ function compareAlphanumeric(aStr, bStr) {
|
|
|
2405
2442
|
}
|
|
2406
2443
|
|
|
2407
2444
|
return a.length - b.length;
|
|
2408
|
-
} //
|
|
2409
|
-
// but is much faster
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
function text(rowA, rowB, columnId) {
|
|
2413
|
-
return compareBasic(toString(rowA.getValue(columnId)).toLowerCase(), toString(rowB.getValue(columnId)).toLowerCase());
|
|
2414
|
-
} // The text filter is more basic (less numeric support)
|
|
2415
|
-
// but is much faster
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
function textCaseSensitive(rowA, rowB, columnId) {
|
|
2419
|
-
return compareBasic(toString(rowA.getValue(columnId)), toString(rowB.getValue(columnId)));
|
|
2420
|
-
}
|
|
2421
|
-
|
|
2422
|
-
function datetime(rowA, rowB, columnId) {
|
|
2423
|
-
return compareBasic(rowA.getValue(columnId).getTime(), rowB.getValue(columnId).getTime());
|
|
2424
|
-
}
|
|
2425
|
-
|
|
2426
|
-
function basic(rowA, rowB, columnId) {
|
|
2427
|
-
return compareBasic(rowA.getValue(columnId), rowB.getValue(columnId));
|
|
2428
|
-
} // Utils
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
function compareBasic(a, b) {
|
|
2432
|
-
return a === b ? 0 : a > b ? 1 : -1;
|
|
2433
|
-
}
|
|
2445
|
+
} // Exports
|
|
2434
2446
|
|
|
2435
|
-
function toString(a) {
|
|
2436
|
-
if (typeof a === 'number') {
|
|
2437
|
-
if (isNaN(a) || a === Infinity || a === -Infinity) {
|
|
2438
|
-
return '';
|
|
2439
|
-
}
|
|
2440
|
-
|
|
2441
|
-
return String(a);
|
|
2442
|
-
}
|
|
2443
2447
|
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2448
|
+
const sortingFns = {
|
|
2449
|
+
alphanumeric,
|
|
2450
|
+
alphanumericCaseSensitive,
|
|
2451
|
+
text,
|
|
2452
|
+
textCaseSensitive,
|
|
2453
|
+
datetime,
|
|
2454
|
+
basic
|
|
2455
|
+
};
|
|
2450
2456
|
|
|
2451
2457
|
//
|
|
2452
2458
|
const Sorting = {
|
|
@@ -2527,8 +2533,10 @@ const Sorting = {
|
|
|
2527
2533
|
// })
|
|
2528
2534
|
// return
|
|
2529
2535
|
// }
|
|
2536
|
+
// this needs to be outside of instance.setSorting to be in sync with rerender
|
|
2537
|
+
const nextSortingOrder = column.getNextSortingOrder();
|
|
2530
2538
|
instance.setSorting(old => {
|
|
2531
|
-
var
|
|
2539
|
+
var _instance$options$ena, _instance$options$ena2;
|
|
2532
2540
|
|
|
2533
2541
|
// Find any existing sorting for this column
|
|
2534
2542
|
const existingSorting = old == null ? void 0 : old.find(d => d.id === column.id);
|
|
@@ -2553,30 +2561,29 @@ const Sorting = {
|
|
|
2553
2561
|
} else {
|
|
2554
2562
|
sortAction = 'replace';
|
|
2555
2563
|
}
|
|
2556
|
-
}
|
|
2564
|
+
} // Handle toggle states that will remove the sorting
|
|
2557
2565
|
|
|
2558
|
-
const sortDescFirst = (_ref2 = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : instance.options.sortDescFirst) != null ? _ref2 : column.getAutoSortDir() === 'desc'; // Handle toggle states that will remove the sorting
|
|
2559
2566
|
|
|
2560
2567
|
if (sortAction === 'toggle' && ( // Must be toggling
|
|
2561
2568
|
(_instance$options$ena = instance.options.enableSortingRemoval) != null ? _instance$options$ena : true) && // If enableSortRemove, enable in general
|
|
2562
2569
|
!hasDescDefined && ( // Must not be setting desc
|
|
2563
|
-
multi ? (_instance$options$ena2 = instance.options.enableMultiRemove) != null ? _instance$options$ena2 : true : true) &&
|
|
2564
|
-
|
|
2565
|
-
|
|
2570
|
+
multi ? (_instance$options$ena2 = instance.options.enableMultiRemove) != null ? _instance$options$ena2 : true : true) && // If multi, don't allow if enableMultiRemove
|
|
2571
|
+
!nextSortingOrder // Finally, detect if it should indeed be removed
|
|
2572
|
+
) {
|
|
2566
2573
|
sortAction = 'remove';
|
|
2567
2574
|
}
|
|
2568
2575
|
|
|
2569
2576
|
if (sortAction === 'replace') {
|
|
2570
2577
|
newSorting = [{
|
|
2571
2578
|
id: column.id,
|
|
2572
|
-
desc: hasDescDefined ? desc :
|
|
2579
|
+
desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
|
|
2573
2580
|
}];
|
|
2574
2581
|
} else if (sortAction === 'add' && old != null && old.length) {
|
|
2575
2582
|
var _instance$options$max;
|
|
2576
2583
|
|
|
2577
2584
|
newSorting = [...old, {
|
|
2578
2585
|
id: column.id,
|
|
2579
|
-
desc: hasDescDefined ? desc :
|
|
2586
|
+
desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
|
|
2580
2587
|
}]; // Take latest n columns
|
|
2581
2588
|
|
|
2582
2589
|
newSorting.splice(0, newSorting.length - ((_instance$options$max = instance.options.maxMultiSortColCount) != null ? _instance$options$max : Number.MAX_SAFE_INTEGER));
|
|
@@ -2585,7 +2592,7 @@ const Sorting = {
|
|
|
2585
2592
|
newSorting = old.map(d => {
|
|
2586
2593
|
if (d.id === column.id) {
|
|
2587
2594
|
return { ...d,
|
|
2588
|
-
desc: hasDescDefined ? desc :
|
|
2595
|
+
desc: hasDescDefined ? desc : nextSortingOrder === 'desc'
|
|
2589
2596
|
};
|
|
2590
2597
|
}
|
|
2591
2598
|
|
|
@@ -2598,6 +2605,23 @@ const Sorting = {
|
|
|
2598
2605
|
return newSorting;
|
|
2599
2606
|
});
|
|
2600
2607
|
},
|
|
2608
|
+
getNextSortingOrder: () => {
|
|
2609
|
+
var _ref2, _column$columnDef$sor;
|
|
2610
|
+
|
|
2611
|
+
const sortDescFirst = (_ref2 = (_column$columnDef$sor = column.columnDef.sortDescFirst) != null ? _column$columnDef$sor : instance.options.sortDescFirst) != null ? _ref2 : column.getAutoSortDir() === 'desc';
|
|
2612
|
+
const firstSortDirection = sortDescFirst ? 'desc' : 'asc';
|
|
2613
|
+
const isSorted = column.getIsSorted();
|
|
2614
|
+
|
|
2615
|
+
if (!isSorted) {
|
|
2616
|
+
return firstSortDirection;
|
|
2617
|
+
}
|
|
2618
|
+
|
|
2619
|
+
if (isSorted === firstSortDirection) {
|
|
2620
|
+
return isSorted === 'desc' ? 'asc' : 'desc';
|
|
2621
|
+
} else {
|
|
2622
|
+
return false;
|
|
2623
|
+
}
|
|
2624
|
+
},
|
|
2601
2625
|
getCanSort: () => {
|
|
2602
2626
|
var _column$columnDef$ena, _instance$options$ena3;
|
|
2603
2627
|
|
|
@@ -2698,8 +2722,8 @@ const Visibility = {
|
|
|
2698
2722
|
},
|
|
2699
2723
|
createRow: (row, instance) => {
|
|
2700
2724
|
return {
|
|
2701
|
-
_getAllVisibleCells: memo(() => [row.getAllCells()
|
|
2702
|
-
return
|
|
2725
|
+
_getAllVisibleCells: memo(() => [row.getAllCells(), instance.getState().columnVisibility], cells => {
|
|
2726
|
+
return cells.filter(cell => cell.column.getIsVisible());
|
|
2703
2727
|
}, {
|
|
2704
2728
|
key: process.env.NODE_ENV === 'production' && 'row._getAllVisibleCells',
|
|
2705
2729
|
debug: () => {
|
|
@@ -3052,13 +3076,15 @@ function createCell(instance, row, column, columnId) {
|
|
|
3052
3076
|
row,
|
|
3053
3077
|
column,
|
|
3054
3078
|
getValue: () => row.getValue(columnId),
|
|
3055
|
-
renderCell: () =>
|
|
3056
|
-
instance,
|
|
3057
|
-
|
|
3058
|
-
|
|
3059
|
-
|
|
3060
|
-
|
|
3061
|
-
|
|
3079
|
+
renderCell: () => {
|
|
3080
|
+
return column.columnDef.cell ? instance._render(column.columnDef.cell, {
|
|
3081
|
+
instance,
|
|
3082
|
+
column,
|
|
3083
|
+
row,
|
|
3084
|
+
cell: cell,
|
|
3085
|
+
getValue: cell.getValue
|
|
3086
|
+
}) : null;
|
|
3087
|
+
}
|
|
3062
3088
|
};
|
|
3063
3089
|
|
|
3064
3090
|
instance._features.forEach(feature => {
|
|
@@ -3133,27 +3159,23 @@ function getCoreRowModel() {
|
|
|
3133
3159
|
flatRows: [],
|
|
3134
3160
|
rowsById: {}
|
|
3135
3161
|
};
|
|
3136
|
-
let rows;
|
|
3137
|
-
let row;
|
|
3138
|
-
let originalRow;
|
|
3139
3162
|
|
|
3140
3163
|
const accessRows = function (originalRows, depth, parent) {
|
|
3141
3164
|
if (depth === void 0) {
|
|
3142
3165
|
depth = 0;
|
|
3143
3166
|
}
|
|
3144
3167
|
|
|
3145
|
-
rows = [];
|
|
3168
|
+
const rows = [];
|
|
3146
3169
|
|
|
3147
3170
|
for (let i = 0; i < originalRows.length; i++) {
|
|
3148
|
-
|
|
3171
|
+
// This could be an expensive check at scale, so we should move it somewhere else, but where?
|
|
3149
3172
|
// if (!id) {
|
|
3150
3173
|
// if (process.env.NODE_ENV !== 'production') {
|
|
3151
3174
|
// throw new Error(`getRowId expected an ID, but got ${id}`)
|
|
3152
3175
|
// }
|
|
3153
3176
|
// }
|
|
3154
3177
|
// Make the row
|
|
3155
|
-
|
|
3156
|
-
row = createRow(instance, instance._getRowId(originalRow, i, parent), originalRow, i, depth); // Keep track of every row in a flat array
|
|
3178
|
+
const row = createRow(instance, instance._getRowId(originalRows[i], i, parent), originalRows[i], i, depth); // Keep track of every row in a flat array
|
|
3157
3179
|
|
|
3158
3180
|
rowModel.flatRows.push(row); // Also keep track of every row by its ID
|
|
3159
3181
|
|
|
@@ -3164,7 +3186,7 @@ function getCoreRowModel() {
|
|
|
3164
3186
|
if (instance.options.getSubRows) {
|
|
3165
3187
|
var _row$originalSubRows;
|
|
3166
3188
|
|
|
3167
|
-
row.originalSubRows = instance.options.getSubRows(
|
|
3189
|
+
row.originalSubRows = instance.options.getSubRows(originalRows[i], i); // Then recursively access them
|
|
3168
3190
|
|
|
3169
3191
|
if ((_row$originalSubRows = row.originalSubRows) != null && _row$originalSubRows.length) {
|
|
3170
3192
|
row.subRows = accessRows(row.originalSubRows, depth + 1, row);
|