@@ -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);
@@ -56,9 +56,34 @@ function addOrRemoveCrudCheckedItem(element) {
5656
5757 if (typeof markCheckboxAsCheckedIfPreviouslySelected !== ' function' ) {
5858 function markCheckboxAsCheckedIfPreviouslySelected () {
59+ let checkedItems = crud .checkedItems ?? [];
60+ let pageChanged = localStorage .getItem (' page_changed' ) ?? false ;
61+ let tableUrl = crud .table .ajax .url ();
62+ let hasFilterApplied = false ;
63+
64+ if (tableUrl .indexOf (' ?' ) > - 1 ) {
65+ if (tableUrl .substring (tableUrl .indexOf (' ?' ) + 1 ).length > 0 ) {
66+ hasFilterApplied = true ;
67+ }
68+ }
69+
70+ // if it was not a page change, we check if datatables have any search, or the url have any parameters.
71+ // if you have filtered entries, and then remove the filters we are sure the entries are in the table.
72+ // we don't remove them in that case.
73+ if (! pageChanged && (crud .table .search ().length !== 0 || hasFilterApplied)) {
74+ crud .checkedItems = [];
75+ }
5976 document
6077 .querySelectorAll (' input.crud_bulk_actions_line_checkbox[data-primary-key-value]' )
61- .forEach (elem => elem .checked = crud .checkedItems ? .length && crud .checkedItems .indexOf (elem .dataset .primaryKeyValue ) > - 1 );
78+ .forEach (function (elem ) {
79+ let checked = checkedItems .length && checkedItems .indexOf (elem .dataset .primaryKeyValue ) > - 1 ;
80+ elem .checked = checked;
81+ if (checked && crud .checkedItems .indexOf (elem .dataset .primaryKeyValue ) === - 1 ) {
82+ crud .checkedItems .push (elem .dataset .primaryKeyValue );
83+ }
84+ });
85+
86+ localStorage .removeItem (' page_changed' );
6287 }
6388 }
6489
0 commit comments