Skip to content

Commit 6aef068

Browse files
committed
keep selected entries in other pages
1 parent 6aa00af commit 6aef068

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

src/resources/views/crud/columns/inc/bulk_actions_checkbox.blade.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ function addOrRemoveCrudCheckedItem(element) {
2020
let primaryKeyValue = checkbox.dataset.primaryKeyValue;
2121
2222
crud.checkedItems ??= [];
23-
23+
2424
if (checked) {
2525
// add item to crud.checkedItems variable
2626
crud.checkedItems.push(primaryKeyValue);
@@ -53,7 +53,10 @@ function addOrRemoveCrudCheckedItem(element) {
5353
5454
if (typeof markCheckboxAsCheckedIfPreviouslySelected !== 'function') {
5555
function markCheckboxAsCheckedIfPreviouslySelected() {
56-
let checkedItems = [];
56+
let checkedItems = localStorage.getItem('selected_rows') ?? [];
57+
if(typeof checkedItems === 'string') {
58+
checkedItems = JSON.parse(checkedItems);
59+
}
5760
document
5861
.querySelectorAll('input.crud_bulk_actions_line_checkbox[data-primary-key-value]')
5962
.forEach(function(elem) {
@@ -64,6 +67,7 @@ function markCheckboxAsCheckedIfPreviouslySelected() {
6467
}
6568
});
6669
crud.checkedItems = checkedItems;
70+
localStorage.removeItem('selected_rows');
6771
}
6872
}
6973

src/resources/views/crud/inc/datatables_logic.blade.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,6 +326,24 @@ functionsToRunOnDataTablesDrawEvent: [],
326326
}
327327
});
328328
329+
330+
$('#crudTable').on( 'page.dt', function ( e, settings, len ) {
331+
let checkedElements = localStorage.getItem('selected_rows') ?? [];
332+
333+
if(typeof checkedItems === 'string') {
334+
checkedItems = JSON.parse(checkedItems);
335+
}
336+
337+
document
338+
.querySelectorAll('input.crud_bulk_actions_line_checkbox[data-primary-key-value]')
339+
.forEach(function(elem) {
340+
if(elem.checked) {
341+
checkedElements.push(elem.dataset.primaryKeyValue);
342+
}
343+
});
344+
localStorage.setItem('selected_rows', JSON.stringify(checkedElements));
345+
});
346+
329347
// on DataTable draw event run all functions in the queue
330348
// (eg. delete and details_row buttons add functions to this queue)
331349
$('#crudTable').on( 'draw.dt', function () {

0 commit comments

Comments
 (0)