keep scroll position on install/delete
This commit is contained in:
parent
78c14dd93c
commit
f048649e58
|
@ -534,7 +534,9 @@ window.addEventListener('showStyles:done', function _() {
|
||||||
function onUninstallClicked(event) {
|
function onUninstallClicked(event) {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
const entry = this.closest('.search-result');
|
const entry = this.closest('.search-result');
|
||||||
deleteStyleSafe({id: entry._result.installedStyleId});
|
saveScrollPosition(entry);
|
||||||
|
deleteStyleSafe({id: entry._result.installedStyleId})
|
||||||
|
.then(restoreScrollPosition);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Installs the current userstyleSearchResult into Stylus. */
|
/** Installs the current userstyleSearchResult into Stylus. */
|
||||||
|
@ -546,6 +548,7 @@ window.addEventListener('showStyles:done', function _() {
|
||||||
const installButton = $('.search-result-install', entry);
|
const installButton = $('.search-result-install', entry);
|
||||||
|
|
||||||
showSpinner(entry);
|
showSpinner(entry);
|
||||||
|
saveScrollPosition(entry);
|
||||||
installButton.disabled = true;
|
installButton.disabled = true;
|
||||||
entry.style.setProperty('pointer-events', 'none', 'important');
|
entry.style.setProperty('pointer-events', 'none', 'important');
|
||||||
|
|
||||||
|
@ -570,6 +573,7 @@ window.addEventListener('showStyles:done', function _() {
|
||||||
$.remove('.lds-spinner', entry);
|
$.remove('.lds-spinner', entry);
|
||||||
installButton.disabled = false;
|
installButton.disabled = false;
|
||||||
entry.style.pointerEvents = '';
|
entry.style.pointerEvents = '';
|
||||||
|
restoreScrollPosition();
|
||||||
});
|
});
|
||||||
|
|
||||||
function fetchStyleSettings(result) {
|
function fetchStyleSettings(result) {
|
||||||
|
@ -581,6 +585,21 @@ window.addEventListener('showStyles:done', function _() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function saveScrollPosition(entry) {
|
||||||
|
dom.scrollPosition = entry.getBoundingClientRect().top;
|
||||||
|
dom.scrollPositionElement = entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
function restoreScrollPosition() {
|
||||||
|
const t0 = performance.now();
|
||||||
|
new MutationObserver((mutations, observer) => {
|
||||||
|
if (performance.now() - t0 < 1000) {
|
||||||
|
window.scrollBy(0, dom.scrollPositionElement.getBoundingClientRect().top - dom.scrollPosition);
|
||||||
|
}
|
||||||
|
observer.disconnect();
|
||||||
|
}).observe(document.body, {childList: true, subtree: true, attributes: true});
|
||||||
|
}
|
||||||
|
|
||||||
//endregion
|
//endregion
|
||||||
//region USO API wrapper
|
//region USO API wrapper
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user