@@ -53,21 +53,34 @@ function addOrRemoveCrudCheckedItem(element) {
5353
5454 if (typeof markCheckboxAsCheckedIfPreviouslySelected !== ' function' ) {
5555 function markCheckboxAsCheckedIfPreviouslySelected () {
56- let checkedItems = localStorage .getItem (' selected_rows' ) ?? [];
57- if (typeof checkedItems === ' string' ) {
58- checkedItems = JSON .parse (checkedItems);
56+ let checkedItems = crud .checkedItems ?? [];
57+ let pageChanged = localStorage .getItem (' page_changed' ) ?? false ;
58+ let tableUrl = crud .table .ajax .url ();
59+ let hasFilterApplied = false ;
60+
61+ if (tableUrl .indexOf (' ?' ) > - 1 ) {
62+ if (tableUrl .substring (tableUrl .indexOf (' ?' ) + 1 ).length > 0 ) {
63+ hasFilterApplied = true ;
64+ }
65+ }
66+
67+ // if it was not a page change, we check if datatables have any search, or the url have any parameters.
68+ // if you have filtered entries, and then remove the filters we are sure the entries are in the table.
69+ // we don't remove them in that case.
70+ if (! pageChanged && (crud .table .search ().length !== 0 || hasFilterApplied)) {
71+ crud .checkedItems = [];
5972 }
6073 document
6174 .querySelectorAll (' input.crud_bulk_actions_line_checkbox[data-primary-key-value]' )
6275 .forEach (function (elem ) {
63- let checked = crud . checkedItems ? .length && crud . checkedItems .indexOf (elem .dataset .primaryKeyValue ) > - 1 ;
76+ let checked = checkedItems .length && checkedItems .indexOf (elem .dataset .primaryKeyValue ) > - 1 ;
6477 elem .checked = checked;
65- if (checked) {
66- checkedItems .push (elem .dataset .primaryKeyValue );
78+ if (checked && crud . checkedItems . indexOf ( elem . dataset . primaryKeyValue ) === - 1 ) {
79+ crud . checkedItems .push (elem .dataset .primaryKeyValue );
6780 }
6881 });
69- crud . checkedItems = checkedItems;
70- localStorage .removeItem (' selected_rows ' );
82+
83+ localStorage .removeItem (' page_changed ' );
7184 }
7285 }
7386
0 commit comments