From 38d9b73c665897553e489b88822f7f9a24bb10a7 Mon Sep 17 00:00:00 2001 From: Felix Hamann Date: Sat, 9 Feb 2019 14:23:53 +0100 Subject: [PATCH] scroll to top after changing page in paginated table --- templates/table/layout.julius | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/templates/table/layout.julius b/templates/table/layout.julius index 74770e57c..dea52d0c9 100644 --- a/templates/table/layout.julius +++ b/templates/table/layout.julius @@ -40,7 +40,7 @@ if (pagesizeForm) { var pagesizeSelect = pagesizeForm.querySelector('[name=' + tableIdent + '-pagesize]') - pagesizeSelect.addEventListener('change', changeHandler); + pagesizeSelect.addEventListener('change', changePagesizeHandler); } } @@ -58,14 +58,14 @@ if (pagesizeForm) { var pagesizeSelect = pagesizeForm.querySelector('[name=' + tableIdent + '-pagesize]') - pagesizeSelect.removeEventListener('change', changeHandler); + pagesizeSelect.removeEventListener('change', changePagesizeHandler); } } function clickHandler(event) { event.preventDefault(); var url = new URL(window.location.origin + window.location.pathname + getClickDestination(this)); - updateTableFrom(url); + updateTableFrom(url, { scrollToTop: true }); } function getClickDestination(el) { @@ -75,7 +75,7 @@ return el.querySelector('a').getAttribute('href'); } - function changeHandler(event) { + function changePagesizeHandler(event) { var currentTableUrl = wrapper.dataset.currentUrl || window.location.href; var url = getUrlWithUpdatedPagesize(currentTableUrl, event.target.value); url = getUrlWithResetPagenumber(url); @@ -113,7 +113,7 @@ } // fetches new sorted table from url with params and replaces contents of current table - function updateTableFrom(url) { + function updateTableFrom(url, options) { fetch(url, { credentials: 'same-origin', @@ -130,6 +130,9 @@ wrapper.dataset.currentUrl = url; removeListeners(); updateWrapperContents(data); + if (options && options.scrollToTop) { + window.scrollTo(0, 0); + } }).catch(function(err) { console.error(err); });