feat(per-page-persistence): remember selected rows per page in localStorage
table-list component now saves per_page selection to localStorage and restores it when navigating back to any list without explicit per_page in URL. URL parameter takes priority over stored value to ensure bookmarked links work predictably. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -337,6 +337,7 @@ $buildUrl = static function (array $params = []) use ($basePath, $query): string
|
||||
var colsKey = storagePrefix + '_hidden_cols';
|
||||
var queryKey = storagePrefix + '_query';
|
||||
var clearKey = storagePrefix + '_cleared';
|
||||
var perPageKey = storagePrefix + '_per_page';
|
||||
|
||||
function readJson(key, fallback) {
|
||||
try {
|
||||
@@ -427,9 +428,22 @@ $buildUrl = static function (array $params = []) use ($basePath, $query): string
|
||||
|
||||
root.querySelectorAll('.js-per-page-select').forEach(function(select) {
|
||||
select.addEventListener('change', function() {
|
||||
writeJson(perPageKey, parseInt(select.value, 10));
|
||||
var form = select.closest('form');
|
||||
if (form) form.submit();
|
||||
});
|
||||
|
||||
var urlParams = new URLSearchParams(window.location.search);
|
||||
if (urlParams.has('per_page')) {
|
||||
writeJson(perPageKey, parseInt(select.value, 10));
|
||||
} else {
|
||||
var savedPerPage = readJson(perPageKey, null);
|
||||
if (savedPerPage !== null && parseInt(select.value, 10) !== savedPerPage) {
|
||||
select.value = savedPerPage;
|
||||
var form = select.closest('form');
|
||||
if (form) form.submit();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
var selectAll = root.querySelector('.js-table-select-all');
|
||||
|
||||
Reference in New Issue
Block a user