material-react-table 2.11.0 → 2.11.1
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.esm.js +19 -9
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +19 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/components/inputs/MRT_SelectCheckbox.tsx +2 -2
- package/src/utils/row.utils.ts +23 -6
package/dist/index.esm.js
CHANGED
@@ -402,11 +402,12 @@ const getIsRowSelected = ({ row, table, }) => {
|
|
402
402
|
};
|
403
403
|
const getMRT_RowSelectionHandler = () => ({ event, row, staticRowIndex = 0, table, }) => {
|
404
404
|
var _a;
|
405
|
-
const { getState, options: { enableBatchRowSelection, enableRowPinning, rowPinningDisplayMode, }, refs: { lastSelectedRowId: lastSelectedRowId }, } = table;
|
405
|
+
const { getState, options: { enableBatchRowSelection, enableRowPinning, manualPagination, rowPinningDisplayMode, }, refs: { lastSelectedRowId: lastSelectedRowId }, } = table;
|
406
406
|
const { pagination: { pageIndex, pageSize }, } = getState();
|
407
|
-
const
|
407
|
+
const paginationOffset = manualPagination ? 0 : pageSize * pageIndex;
|
408
|
+
const isCurrentRowChecked = getIsRowSelected({ row, table });
|
408
409
|
const isStickySelection = enableRowPinning && (rowPinningDisplayMode === null || rowPinningDisplayMode === void 0 ? void 0 : rowPinningDisplayMode.includes('select'));
|
409
|
-
// toggle
|
410
|
+
// toggle selection of this row
|
410
411
|
row.getToggleSelectedHandler()(event);
|
411
412
|
// if shift key is pressed, select all rows between last selected and this one
|
412
413
|
if (enableBatchRowSelection &&
|
@@ -415,22 +416,31 @@ const getMRT_RowSelectionHandler = () => ({ event, row, staticRowIndex = 0, tabl
|
|
415
416
|
const rows = getMRT_Rows(table, undefined, true);
|
416
417
|
const lastIndex = rows.findIndex((r) => r.id === lastSelectedRowId.current);
|
417
418
|
if (lastIndex !== -1) {
|
418
|
-
const
|
419
|
+
const isLastIndexChecked = getIsRowSelected({
|
420
|
+
row: rows === null || rows === void 0 ? void 0 : rows[lastIndex],
|
421
|
+
table,
|
422
|
+
});
|
423
|
+
const currentIndex = staticRowIndex + paginationOffset;
|
419
424
|
const [start, end] = lastIndex < currentIndex
|
420
425
|
? [lastIndex, currentIndex]
|
421
426
|
: [currentIndex, lastIndex];
|
422
|
-
|
423
|
-
|
427
|
+
// toggle selection of all rows between last selected and this one
|
428
|
+
// but only if the last selected row is not the same as the current one
|
429
|
+
if (isCurrentRowChecked !== isLastIndexChecked) {
|
430
|
+
for (let i = start; i <= end; i++) {
|
431
|
+
rows[i].toggleSelected(!isCurrentRowChecked);
|
432
|
+
}
|
424
433
|
}
|
425
434
|
}
|
426
435
|
}
|
436
|
+
// record the last selected row id
|
427
437
|
lastSelectedRowId.current = row.id;
|
428
438
|
// if all sub rows were selected, unselect them
|
429
439
|
if (row.getCanSelectSubRows() && row.getIsAllSubRowsSelected()) {
|
430
440
|
(_a = row.subRows) === null || _a === void 0 ? void 0 : _a.forEach((r) => r.toggleSelected(false));
|
431
441
|
}
|
432
442
|
if (isStickySelection) {
|
433
|
-
row.pin(!row.getIsPinned() &&
|
443
|
+
row.pin(!row.getIsPinned() && isCurrentRowChecked
|
434
444
|
? (rowPinningDisplayMode === null || rowPinningDisplayMode === void 0 ? void 0 : rowPinningDisplayMode.includes('bottom'))
|
435
445
|
? 'bottom'
|
436
446
|
: 'top'
|
@@ -1027,8 +1037,8 @@ const MRT_SelectCheckbox = (_a) => {
|
|
1027
1037
|
}, sx: (theme) => (Object.assign({ height: density === 'compact' ? '1.75rem' : '2.5rem', m: density !== 'compact' ? '-0.4rem' : undefined, width: density === 'compact' ? '1.75rem' : '2.5rem', zIndex: 0 }, parseFromValuesOrFunc(checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.sx, theme))), title: undefined });
|
1028
1038
|
return (jsx(Tooltip, Object.assign({}, getCommonTooltipProps(), { title: (_b = checkboxProps === null || checkboxProps === void 0 ? void 0 : checkboxProps.title) !== null && _b !== void 0 ? _b : (selectAll
|
1029
1039
|
? localization.toggleSelectAll
|
1030
|
-
: localization.toggleSelectRow), children: enableMultiRowSelection === false ? (jsx(Radio, Object.assign({}, commonProps))) : (jsx(Checkbox, Object.assign({ indeterminate: selectAll
|
1031
|
-
? table.getIsSomeRowsSelected()
|
1040
|
+
: localization.toggleSelectRow), children: enableMultiRowSelection === false ? (jsx(Radio, Object.assign({}, commonProps))) : (jsx(Checkbox, Object.assign({ indeterminate: !isChecked && selectAll
|
1041
|
+
? table.getIsSomeRowsSelected()
|
1032
1042
|
: (row === null || row === void 0 ? void 0 : row.getIsSomeSelected()) && row.getCanSelectSubRows() }, commonProps))) })));
|
1033
1043
|
};
|
1034
1044
|
|